From 6f4ac190c1913cfd488636dff79cd5067c5af6b1 Mon Sep 17 00:00:00 2001 From: bishwajeet Date: Tue, 16 Jun 2026 15:37:55 +0530 Subject: [PATCH] updated --- .venv/bin/Activate.ps1 | 241 + .venv/bin/activate | 66 + .venv/bin/activate.csh | 25 + .venv/bin/activate.fish | 64 + .venv/bin/inv | 8 + .venv/bin/invoke | 8 + .venv/bin/pip | 8 + .venv/bin/pip3 | 8 + .venv/bin/pip3.9 | 8 + .venv/bin/python | 1 + .venv/bin/python3 | 1 + .venv/bin/python3.9 | 1 + .../typing_extensions.cpython-39.pyc | Bin 0 -> 117009 bytes ...ffi_backend.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 339784 bytes .../site-packages/_distutils_hack/__init__.py | 132 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 5104 bytes .../__pycache__/override.cpython-39.pyc | Bin 0 -> 254 bytes .../site-packages/_distutils_hack/override.py | 1 + .../bcrypt-5.0.0.dist-info/INSTALLER | 1 + .../bcrypt-5.0.0.dist-info/METADATA | 343 + .../bcrypt-5.0.0.dist-info/RECORD | 11 + .../bcrypt-5.0.0.dist-info/WHEEL | 5 + .../bcrypt-5.0.0.dist-info/licenses/LICENSE | 201 + .../bcrypt-5.0.0.dist-info/top_level.txt | 1 + .../site-packages/bcrypt/__init__.py | 43 + .../site-packages/bcrypt/__init__.pyi | 10 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 562 bytes .../site-packages/bcrypt/_bcrypt.abi3.so | Bin 0 -> 631768 bytes .../python3.9/site-packages/bcrypt/py.typed | 0 .../cffi-2.0.0.dist-info/INSTALLER | 1 + .../cffi-2.0.0.dist-info/METADATA | 68 + .../site-packages/cffi-2.0.0.dist-info/RECORD | 49 + .../site-packages/cffi-2.0.0.dist-info/WHEEL | 6 + .../cffi-2.0.0.dist-info/entry_points.txt | 2 + .../cffi-2.0.0.dist-info/licenses/AUTHORS | 8 + .../cffi-2.0.0.dist-info/licenses/LICENSE | 23 + .../cffi-2.0.0.dist-info/top_level.txt | 2 + .../python3.9/site-packages/cffi/__init__.py | 14 + .../cffi/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 534 bytes .../__pycache__/_imp_emulation.cpython-39.pyc | Bin 0 -> 2557 bytes .../_shimmed_dist_utils.cpython-39.pyc | Bin 0 -> 1747 bytes .../cffi/__pycache__/api.cpython-39.pyc | Bin 0 -> 34404 bytes .../__pycache__/backend_ctypes.cpython-39.pyc | Bin 0 -> 39975 bytes .../__pycache__/cffi_opcode.cpython-39.pyc | Bin 0 -> 4785 bytes .../__pycache__/commontypes.cpython-39.pyc | Bin 0 -> 2016 bytes .../cffi/__pycache__/cparser.cpython-39.pyc | Bin 0 -> 24067 bytes .../cffi/__pycache__/error.cpython-39.pyc | Bin 0 -> 1536 bytes .../__pycache__/ffiplatform.cpython-39.pyc | Bin 0 -> 3324 bytes .../cffi/__pycache__/lock.cpython-39.pyc | Bin 0 -> 433 bytes .../cffi/__pycache__/model.cpython-39.pyc | Bin 0 -> 19795 bytes .../cffi/__pycache__/pkgconfig.cpython-39.pyc | Bin 0 -> 5171 bytes .../__pycache__/recompiler.cpython-39.pyc | Bin 0 -> 47354 bytes .../__pycache__/setuptools_ext.cpython-39.pyc | Bin 0 -> 7539 bytes .../__pycache__/vengine_cpy.cpython-39.pyc | Bin 0 -> 35978 bytes .../__pycache__/vengine_gen.cpython-39.pyc | Bin 0 -> 21288 bytes .../cffi/__pycache__/verifier.cpython-39.pyc | Bin 0 -> 9309 bytes .../site-packages/cffi/_cffi_errors.h | 149 + .../site-packages/cffi/_cffi_include.h | 389 + .../python3.9/site-packages/cffi/_embedding.h | 550 ++ .../site-packages/cffi/_imp_emulation.py | 83 + .../site-packages/cffi/_shimmed_dist_utils.py | 45 + .venv/lib/python3.9/site-packages/cffi/api.py | 967 ++ .../site-packages/cffi/backend_ctypes.py | 1121 +++ .../site-packages/cffi/cffi_opcode.py | 187 + .../site-packages/cffi/commontypes.py | 82 + .../python3.9/site-packages/cffi/cparser.py | 1015 ++ .../lib/python3.9/site-packages/cffi/error.py | 31 + .../site-packages/cffi/ffiplatform.py | 113 + .../lib/python3.9/site-packages/cffi/lock.py | 30 + .../lib/python3.9/site-packages/cffi/model.py | 618 ++ .../site-packages/cffi/parse_c_type.h | 181 + .../python3.9/site-packages/cffi/pkgconfig.py | 121 + .../site-packages/cffi/recompiler.py | 1598 ++++ .../site-packages/cffi/setuptools_ext.py | 229 + .../site-packages/cffi/vengine_cpy.py | 1087 +++ .../site-packages/cffi/vengine_gen.py | 679 ++ .../python3.9/site-packages/cffi/verifier.py | 306 + .../cryptography-49.0.0.dist-info/INSTALLER | 1 + .../cryptography-49.0.0.dist-info/METADATA | 110 + .../cryptography-49.0.0.dist-info/RECORD | 195 + .../cryptography-49.0.0.dist-info/WHEEL | 5 + .../licenses/LICENSE | 3 + .../licenses/LICENSE.APACHE | 202 + .../licenses/LICENSE.BSD | 27 + .../sboms/cryptography-rust.cyclonedx.json | 1365 +++ .../sboms/sbom.json | 43 + .../site-packages/cryptography/__about__.py | 17 + .../site-packages/cryptography/__init__.py | 13 + .../__pycache__/__about__.cpython-39.pyc | Bin 0 -> 443 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 370 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 2054 bytes .../__pycache__/fernet.cpython-39.pyc | Bin 0 -> 6841 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 4718 bytes .../site-packages/cryptography/exceptions.py | 52 + .../site-packages/cryptography/fernet.py | 224 + .../cryptography/hazmat/__init__.py | 13 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 257 bytes .../hazmat/__pycache__/_oid.cpython-39.pyc | Bin 0 -> 12659 bytes .../site-packages/cryptography/hazmat/_oid.py | 368 + .../cryptography/hazmat/asn1/__init__.py | 45 + .../asn1/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 615 bytes .../asn1/__pycache__/asn1.cpython-39.pyc | Bin 0 -> 10740 bytes .../cryptography/hazmat/asn1/asn1.py | 533 ++ .../cryptography/hazmat/backends/__init__.py | 13 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 507 bytes .../hazmat/backends/openssl/__init__.py | 9 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 370 bytes .../__pycache__/backend.cpython-39.pyc | Bin 0 -> 9400 bytes .../hazmat/backends/openssl/backend.py | 314 + .../cryptography/hazmat/bindings/__init__.py | 3 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 218 bytes .../hazmat/bindings/_rust.abi3.so | Bin 0 -> 13817304 bytes .../hazmat/bindings/_rust/__init__.pyi | 67 + .../hazmat/bindings/_rust/_openssl.pyi | 8 + .../hazmat/bindings/_rust/asn1.pyi | 7 + .../bindings/_rust/declarative_asn1.pyi | 133 + .../hazmat/bindings/_rust/exceptions.pyi | 17 + .../hazmat/bindings/_rust/ocsp.pyi | 117 + .../bindings/_rust/openssl/__init__.pyi | 80 + .../hazmat/bindings/_rust/openssl/aead.pyi | 189 + .../hazmat/bindings/_rust/openssl/ciphers.pyi | 38 + .../hazmat/bindings/_rust/openssl/cmac.pyi | 18 + .../hazmat/bindings/_rust/openssl/dh.pyi | 51 + .../hazmat/bindings/_rust/openssl/dsa.pyi | 41 + .../hazmat/bindings/_rust/openssl/ec.pyi | 52 + .../hazmat/bindings/_rust/openssl/ed25519.pyi | 13 + .../hazmat/bindings/_rust/openssl/ed448.pyi | 13 + .../hazmat/bindings/_rust/openssl/hashes.pyi | 30 + .../hazmat/bindings/_rust/openssl/hmac.pyi | 22 + .../hazmat/bindings/_rust/openssl/hpke.pyi | 109 + .../hazmat/bindings/_rust/openssl/kdf.pyi | 205 + .../hazmat/bindings/_rust/openssl/keys.pyi | 34 + .../hazmat/bindings/_rust/openssl/mldsa.pyi | 23 + .../hazmat/bindings/_rust/openssl/mlkem.pyi | 18 + .../bindings/_rust/openssl/poly1305.pyi | 15 + .../hazmat/bindings/_rust/openssl/rsa.pyi | 55 + .../hazmat/bindings/_rust/openssl/x25519.pyi | 13 + .../hazmat/bindings/_rust/openssl/x448.pyi | 13 + .../hazmat/bindings/_rust/pkcs12.pyi | 52 + .../hazmat/bindings/_rust/pkcs7.pyi | 50 + .../hazmat/bindings/_rust/test_support.pyi | 23 + .../hazmat/bindings/_rust/x509.pyi | 313 + .../hazmat/bindings/openssl/__init__.py | 3 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 226 bytes .../__pycache__/_conditional.cpython-39.pyc | Bin 0 -> 5287 bytes .../__pycache__/binding.cpython-39.pyc | Bin 0 -> 3371 bytes .../hazmat/bindings/openssl/_conditional.py | 199 + .../hazmat/bindings/openssl/binding.py | 107 + .../cryptography/hazmat/decrepit/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 264 bytes .../hazmat/decrepit/ciphers/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 272 bytes .../__pycache__/algorithms.cpython-39.pyc | Bin 0 -> 4860 bytes .../ciphers/__pycache__/modes.cpython-39.pyc | Bin 0 -> 1838 bytes .../hazmat/decrepit/ciphers/algorithms.py | 142 + .../hazmat/decrepit/ciphers/modes.py | 53 + .../hazmat/primitives/__init__.py | 3 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 220 bytes .../__pycache__/_asymmetric.cpython-39.pyc | Bin 0 -> 732 bytes .../_cipheralgorithm.cpython-39.pyc | Bin 0 -> 2002 bytes .../__pycache__/_modes.cpython-39.pyc | Bin 0 -> 4024 bytes .../__pycache__/_serialization.cpython-39.pyc | Bin 0 -> 4092 bytes .../__pycache__/cmac.cpython-39.pyc | Bin 0 -> 386 bytes .../__pycache__/constant_time.cpython-39.pyc | Bin 0 -> 546 bytes .../__pycache__/hashes.cpython-39.pyc | Bin 0 -> 7036 bytes .../__pycache__/hmac.cpython-39.pyc | Bin 0 -> 484 bytes .../__pycache__/hpke.cpython-39.pyc | Bin 0 -> 612 bytes .../__pycache__/keywrap.cpython-39.pyc | Bin 0 -> 4766 bytes .../__pycache__/padding.cpython-39.pyc | Bin 0 -> 2632 bytes .../__pycache__/poly1305.cpython-39.pyc | Bin 0 -> 398 bytes .../hazmat/primitives/_asymmetric.py | 19 + .../hazmat/primitives/_cipheralgorithm.py | 60 + .../cryptography/hazmat/primitives/_modes.py | 105 + .../hazmat/primitives/_serialization.py | 136 + .../hazmat/primitives/asymmetric/__init__.py | 3 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 231 bytes .../asymmetric/__pycache__/dh.cpython-39.pyc | Bin 0 -> 5083 bytes .../asymmetric/__pycache__/dsa.cpython-39.pyc | Bin 0 -> 5657 bytes .../asymmetric/__pycache__/ec.cpython-39.pyc | Bin 0 -> 11264 bytes .../__pycache__/ed25519.cpython-39.pyc | Bin 0 -> 4199 bytes .../__pycache__/ed448.cpython-39.pyc | Bin 0 -> 4672 bytes .../__pycache__/mldsa.cpython-39.pyc | Bin 0 -> 12505 bytes .../__pycache__/mlkem.cpython-39.pyc | Bin 0 -> 8051 bytes .../__pycache__/padding.cpython-39.pyc | Bin 0 -> 3745 bytes .../asymmetric/__pycache__/rsa.cpython-39.pyc | Bin 0 -> 8344 bytes .../__pycache__/types.cpython-39.pyc | Bin 0 -> 1486 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 1232 bytes .../__pycache__/x25519.cpython-39.pyc | Bin 0 -> 4517 bytes .../__pycache__/x448.cpython-39.pyc | Bin 0 -> 4515 bytes .../hazmat/primitives/asymmetric/dh.py | 159 + .../hazmat/primitives/asymmetric/dsa.py | 179 + .../hazmat/primitives/asymmetric/ec.py | 369 + .../hazmat/primitives/asymmetric/ed25519.py | 116 + .../hazmat/primitives/asymmetric/ed448.py | 143 + .../hazmat/primitives/asymmetric/mldsa.py | 504 + .../hazmat/primitives/asymmetric/mlkem.py | 278 + .../hazmat/primitives/asymmetric/padding.py | 111 + .../hazmat/primitives/asymmetric/rsa.py | 295 + .../hazmat/primitives/asymmetric/types.py | 91 + .../hazmat/primitives/asymmetric/utils.py | 28 + .../hazmat/primitives/asymmetric/x25519.py | 134 + .../hazmat/primitives/asymmetric/x448.py | 137 + .../hazmat/primitives/ciphers/__init__.py | 27 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 638 bytes .../ciphers/__pycache__/aead.cpython-39.pyc | Bin 0 -> 529 bytes .../__pycache__/algorithms.cpython-39.pyc | Bin 0 -> 3831 bytes .../ciphers/__pycache__/base.cpython-39.pyc | Bin 0 -> 5161 bytes .../ciphers/__pycache__/modes.cpython-39.pyc | Bin 0 -> 5581 bytes .../hazmat/primitives/ciphers/aead.py | 23 + .../hazmat/primitives/ciphers/algorithms.py | 138 + .../hazmat/primitives/ciphers/base.py | 146 + .../hazmat/primitives/ciphers/modes.py | 192 + .../cryptography/hazmat/primitives/cmac.py | 10 + .../hazmat/primitives/constant_time.py | 14 + .../cryptography/hazmat/primitives/hashes.py | 246 + .../cryptography/hazmat/primitives/hmac.py | 13 + .../cryptography/hazmat/primitives/hpke.py | 27 + .../hazmat/primitives/kdf/__init__.py | 32 + .../kdf/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1516 bytes .../kdf/__pycache__/argon2.cpython-39.pyc | Bin 0 -> 573 bytes .../kdf/__pycache__/concatkdf.cpython-39.pyc | Bin 0 -> 549 bytes .../kdf/__pycache__/hkdf.cpython-39.pyc | Bin 0 -> 532 bytes .../kdf/__pycache__/kbkdf.cpython-39.pyc | Bin 0 -> 973 bytes .../kdf/__pycache__/pbkdf2.cpython-39.pyc | Bin 0 -> 499 bytes .../kdf/__pycache__/scrypt.cpython-39.pyc | Bin 0 -> 548 bytes .../kdf/__pycache__/x963kdf.cpython-39.pyc | Bin 0 -> 497 bytes .../hazmat/primitives/kdf/argon2.py | 17 + .../hazmat/primitives/kdf/concatkdf.py | 16 + .../hazmat/primitives/kdf/hkdf.py | 16 + .../hazmat/primitives/kdf/kbkdf.py | 26 + .../hazmat/primitives/kdf/pbkdf2.py | 13 + .../hazmat/primitives/kdf/scrypt.py | 19 + .../hazmat/primitives/kdf/x963kdf.py | 13 + .../cryptography/hazmat/primitives/keywrap.py | 180 + .../cryptography/hazmat/primitives/padding.py | 69 + .../hazmat/primitives/poly1305.py | 11 + .../primitives/serialization/__init__.py | 65 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1350 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 550 bytes .../__pycache__/pkcs12.cpython-39.pyc | Bin 0 -> 4517 bytes .../__pycache__/pkcs7.cpython-39.pyc | Bin 0 -> 10682 bytes .../__pycache__/ssh.cpython-39.pyc | Bin 0 -> 38985 bytes .../hazmat/primitives/serialization/base.py | 14 + .../hazmat/primitives/serialization/pkcs12.py | 176 + .../hazmat/primitives/serialization/pkcs7.py | 412 + .../hazmat/primitives/serialization/ssh.py | 1621 ++++ .../hazmat/primitives/twofactor/__init__.py | 9 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 448 bytes .../twofactor/__pycache__/hotp.cpython-39.pyc | Bin 0 -> 3400 bytes .../twofactor/__pycache__/totp.cpython-39.pyc | Bin 0 -> 1929 bytes .../hazmat/primitives/twofactor/hotp.py | 101 + .../hazmat/primitives/twofactor/totp.py | 56 + .../site-packages/cryptography/py.typed | 0 .../site-packages/cryptography/utils.py | 135 + .../cryptography/x509/__init__.py | 271 + .../x509/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 6496 bytes .../x509/__pycache__/base.cpython-39.pyc | Bin 0 -> 19831 bytes .../certificate_transparency.cpython-39.pyc | Bin 0 -> 1243 bytes .../__pycache__/extensions.cpython-39.pyc | Bin 0 -> 81061 bytes .../__pycache__/general_name.cpython-39.pyc | Bin 0 -> 9830 bytes .../x509/__pycache__/name.cpython-39.pyc | Bin 0 -> 16206 bytes .../x509/__pycache__/ocsp.cpython-39.pyc | Bin 0 -> 9570 bytes .../x509/__pycache__/oid.cpython-39.pyc | Bin 0 -> 753 bytes .../__pycache__/verification.cpython-39.pyc | Bin 0 -> 733 bytes .../site-packages/cryptography/x509/base.py | 798 ++ .../x509/certificate_transparency.py | 35 + .../cryptography/x509/extensions.py | 2533 +++++ .../cryptography/x509/general_name.py | 281 + .../site-packages/cryptography/x509/name.py | 489 + .../site-packages/cryptography/x509/ocsp.py | 379 + .../site-packages/cryptography/x509/oid.py | 37 + .../cryptography/x509/verification.py | 34 + .../site-packages/distutils-precedence.pth | 1 + .../invoke-3.0.3.dist-info/INSTALLER | 1 + .../invoke-3.0.3.dist-info/METADATA | 74 + .../invoke-3.0.3.dist-info/RECORD | 107 + .../invoke-3.0.3.dist-info/WHEEL | 5 + .../invoke-3.0.3.dist-info/entry_points.txt | 3 + .../invoke-3.0.3.dist-info/licenses/LICENSE | 22 + .../invoke-3.0.3.dist-info/top_level.txt | 1 + .../site-packages/invoke/__init__.py | 72 + .../site-packages/invoke/__main__.py | 3 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2732 bytes .../__pycache__/__main__.cpython-39.pyc | Bin 0 -> 252 bytes .../__pycache__/collection.cpython-39.pyc | Bin 0 -> 20306 bytes .../invoke/__pycache__/config.cpython-39.pyc | Bin 0 -> 35169 bytes .../invoke/__pycache__/context.cpython-39.pyc | Bin 0 -> 19384 bytes .../invoke/__pycache__/env.cpython-39.pyc | Bin 0 -> 3972 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 14092 bytes .../__pycache__/executor.cpython-39.pyc | Bin 0 -> 6804 bytes .../invoke/__pycache__/loader.cpython-39.pyc | Bin 0 -> 4966 bytes .../invoke/__pycache__/main.cpython-39.pyc | Bin 0 -> 439 bytes .../invoke/__pycache__/program.cpython-39.pyc | Bin 0 -> 26111 bytes .../invoke/__pycache__/runners.cpython-39.pyc | Bin 0 -> 50672 bytes .../invoke/__pycache__/tasks.cpython-39.pyc | Bin 0 -> 15852 bytes .../__pycache__/terminals.cpython-39.pyc | Bin 0 -> 5760 bytes .../invoke/__pycache__/util.cpython-39.pyc | Bin 0 -> 6710 bytes .../__pycache__/watchers.cpython-39.pyc | Bin 0 -> 5131 bytes .../site-packages/invoke/collection.py | 608 ++ .../invoke/completion/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 205 bytes .../__pycache__/complete.cpython-39.pyc | Bin 0 -> 3343 bytes .../invoke/completion/bash.completion | 32 + .../invoke/completion/complete.py | 129 + .../invoke/completion/fish.completion | 10 + .../invoke/completion/zsh.completion | 33 + .../python3.9/site-packages/invoke/config.py | 1283 +++ .../python3.9/site-packages/invoke/context.py | 616 ++ .../lib/python3.9/site-packages/invoke/env.py | 123 + .../site-packages/invoke/exceptions.py | 425 + .../site-packages/invoke/executor.py | 232 + .../python3.9/site-packages/invoke/loader.py | 154 + .../python3.9/site-packages/invoke/main.py | 14 + .../site-packages/invoke/parser/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 390 bytes .../__pycache__/argument.cpython-39.pyc | Bin 0 -> 5646 bytes .../parser/__pycache__/context.cpython-39.pyc | Bin 0 -> 8622 bytes .../parser/__pycache__/parser.cpython-39.pyc | Bin 0 -> 11984 bytes .../site-packages/invoke/parser/argument.py | 178 + .../site-packages/invoke/parser/context.py | 266 + .../site-packages/invoke/parser/parser.py | 455 + .../python3.9/site-packages/invoke/program.py | 987 ++ .../python3.9/site-packages/invoke/py.typed | 0 .../python3.9/site-packages/invoke/runners.py | 1726 ++++ .../python3.9/site-packages/invoke/tasks.py | 525 + .../site-packages/invoke/terminals.py | 248 + .../python3.9/site-packages/invoke/util.py | 268 + .../site-packages/invoke/vendor/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 201 bytes .../invoke/vendor/fluidity/__init__.py | 4 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 405 bytes .../backwardscompat.cpython-39.pyc | Bin 0 -> 400 bytes .../__pycache__/machine.cpython-39.pyc | Bin 0 -> 11541 bytes .../invoke/vendor/fluidity/backwardscompat.py | 8 + .../invoke/vendor/fluidity/machine.py | 270 + .../invoke/vendor/lexicon/__init__.py | 24 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 964 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 295 bytes .../__pycache__/alias_dict.cpython-39.pyc | Bin 0 -> 4349 bytes .../__pycache__/attribute_dict.cpython-39.pyc | Bin 0 -> 1031 bytes .../invoke/vendor/lexicon/_version.py | 2 + .../invoke/vendor/lexicon/alias_dict.py | 95 + .../invoke/vendor/lexicon/attribute_dict.py | 16 + .../invoke/vendor/yaml/__init__.py | 427 + .../yaml/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 11929 bytes .../yaml/__pycache__/composer.cpython-39.pyc | Bin 0 -> 3623 bytes .../__pycache__/constructor.cpython-39.pyc | Bin 0 -> 20870 bytes .../yaml/__pycache__/cyaml.cpython-39.pyc | Bin 0 -> 3413 bytes .../yaml/__pycache__/dumper.cpython-39.pyc | Bin 0 -> 1832 bytes .../yaml/__pycache__/emitter.cpython-39.pyc | Bin 0 -> 25403 bytes .../yaml/__pycache__/error.cpython-39.pyc | Bin 0 -> 2383 bytes .../yaml/__pycache__/events.cpython-39.pyc | Bin 0 -> 4036 bytes .../yaml/__pycache__/loader.cpython-39.pyc | Bin 0 -> 2257 bytes .../yaml/__pycache__/nodes.cpython-39.pyc | Bin 0 -> 1789 bytes .../yaml/__pycache__/parser.cpython-39.pyc | Bin 0 -> 11928 bytes .../yaml/__pycache__/reader.cpython-39.pyc | Bin 0 -> 4595 bytes .../__pycache__/representer.cpython-39.pyc | Bin 0 -> 10145 bytes .../yaml/__pycache__/resolver.cpython-39.pyc | Bin 0 -> 5566 bytes .../yaml/__pycache__/scanner.cpython-39.pyc | Bin 0 -> 25313 bytes .../__pycache__/serializer.cpython-39.pyc | Bin 0 -> 3384 bytes .../yaml/__pycache__/tokens.cpython-39.pyc | Bin 0 -> 5005 bytes .../invoke/vendor/yaml/composer.py | 139 + .../invoke/vendor/yaml/constructor.py | 748 ++ .../site-packages/invoke/vendor/yaml/cyaml.py | 101 + .../invoke/vendor/yaml/dumper.py | 62 + .../invoke/vendor/yaml/emitter.py | 1137 +++ .../site-packages/invoke/vendor/yaml/error.py | 75 + .../invoke/vendor/yaml/events.py | 86 + .../invoke/vendor/yaml/loader.py | 63 + .../site-packages/invoke/vendor/yaml/nodes.py | 49 + .../invoke/vendor/yaml/parser.py | 589 ++ .../invoke/vendor/yaml/reader.py | 185 + .../invoke/vendor/yaml/representer.py | 389 + .../invoke/vendor/yaml/resolver.py | 227 + .../invoke/vendor/yaml/scanner.py | 1435 +++ .../invoke/vendor/yaml/serializer.py | 111 + .../invoke/vendor/yaml/tokens.py | 104 + .../site-packages/invoke/watchers.py | 145 + .../python3.9/site-packages/nacl/__init__.py | 25 + .../nacl/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 305 bytes .../nacl/__pycache__/encoding.cpython-39.pyc | Bin 0 -> 3888 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 2592 bytes .../nacl/__pycache__/hash.cpython-39.pyc | Bin 0 -> 5054 bytes .../nacl/__pycache__/hashlib.cpython-39.pyc | Bin 0 -> 4609 bytes .../nacl/__pycache__/public.cpython-39.pyc | Bin 0 -> 13389 bytes .../nacl/__pycache__/secret.cpython-39.pyc | Bin 0 -> 9952 bytes .../nacl/__pycache__/signing.cpython-39.pyc | Bin 0 -> 7934 bytes .../nacl/__pycache__/utils.cpython-39.pyc | Bin 0 -> 2646 bytes .../site-packages/nacl/_sodium.abi3.so | Bin 0 -> 3714848 bytes .../site-packages/nacl/bindings/__init__.py | 508 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 11866 bytes .../__pycache__/crypto_aead.cpython-39.pyc | Bin 0 -> 16695 bytes .../__pycache__/crypto_box.cpython-39.pyc | Bin 0 -> 9952 bytes .../__pycache__/crypto_core.cpython-39.pyc | Bin 0 -> 11808 bytes .../crypto_generichash.cpython-39.pyc | Bin 0 -> 7465 bytes .../__pycache__/crypto_hash.cpython-39.pyc | Bin 0 -> 1494 bytes .../__pycache__/crypto_kx.cpython-39.pyc | Bin 0 -> 4334 bytes .../__pycache__/crypto_pwhash.cpython-39.pyc | Bin 0 -> 13971 bytes .../crypto_scalarmult.cpython-39.pyc | Bin 0 -> 6298 bytes .../crypto_secretbox.cpython-39.pyc | Bin 0 -> 3269 bytes .../crypto_secretstream.cpython-39.pyc | Bin 0 -> 8409 bytes .../crypto_shorthash.cpython-39.pyc | Bin 0 -> 2115 bytes .../__pycache__/crypto_sign.cpython-39.pyc | Bin 0 -> 8587 bytes .../__pycache__/randombytes.cpython-39.pyc | Bin 0 -> 1286 bytes .../__pycache__/sodium_core.cpython-39.pyc | Bin 0 -> 830 bytes .../bindings/__pycache__/utils.cpython-39.pyc | Bin 0 -> 3809 bytes .../nacl/bindings/crypto_aead.py | 1069 +++ .../site-packages/nacl/bindings/crypto_box.py | 475 + .../nacl/bindings/crypto_core.py | 449 + .../nacl/bindings/crypto_generichash.py | 281 + .../nacl/bindings/crypto_hash.py | 63 + .../site-packages/nacl/bindings/crypto_kx.py | 200 + .../nacl/bindings/crypto_pwhash.py | 599 ++ .../nacl/bindings/crypto_scalarmult.py | 240 + .../nacl/bindings/crypto_secretbox.py | 159 + .../nacl/bindings/crypto_secretstream.py | 358 + .../nacl/bindings/crypto_shorthash.py | 81 + .../nacl/bindings/crypto_sign.py | 327 + .../nacl/bindings/randombytes.py | 51 + .../nacl/bindings/sodium_core.py | 33 + .../site-packages/nacl/bindings/utils.py | 141 + .../python3.9/site-packages/nacl/encoding.py | 105 + .../site-packages/nacl/exceptions.py | 88 + .../lib/python3.9/site-packages/nacl/hash.py | 181 + .../python3.9/site-packages/nacl/hashlib.py | 143 + .../python3.9/site-packages/nacl/public.py | 421 + .../site-packages/nacl/pwhash/__init__.py | 75 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1721 bytes .../pwhash/__pycache__/_argon2.cpython-39.pyc | Bin 0 -> 1371 bytes .../pwhash/__pycache__/argon2i.cpython-39.pyc | Bin 0 -> 3883 bytes .../__pycache__/argon2id.cpython-39.pyc | Bin 0 -> 3901 bytes .../pwhash/__pycache__/scrypt.cpython-39.pyc | Bin 0 -> 5886 bytes .../site-packages/nacl/pwhash/_argon2.py | 49 + .../site-packages/nacl/pwhash/argon2i.py | 132 + .../site-packages/nacl/pwhash/argon2id.py | 135 + .../site-packages/nacl/pwhash/scrypt.py | 211 + .../lib/python3.9/site-packages/nacl/py.typed | 0 .../python3.9/site-packages/nacl/secret.py | 305 + .../python3.9/site-packages/nacl/signing.py | 250 + .../lib/python3.9/site-packages/nacl/utils.py | 88 + .../oracledb-4.0.1.dist-info/INSTALLER | 1 + .../oracledb-4.0.1.dist-info/METADATA | 194 + .../oracledb-4.0.1.dist-info/RECORD | 88 + .../oracledb-4.0.1.dist-info/REQUESTED | 0 .../oracledb-4.0.1.dist-info/WHEEL | 7 + .../licenses/LICENSE.txt | 229 + .../licenses/NOTICE.txt | 1 + .../licenses/THIRD_PARTY_LICENSES.txt | 1459 +++ .../oracledb-4.0.1.dist-info/top_level.txt | 1 + .../site-packages/oracledb/__init__.py | 1288 +++ .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 10106 bytes .../oracledb/__pycache__/aq.cpython-39.pyc | Bin 0 -> 25189 bytes .../__pycache__/arrow_array.cpython-39.pyc | Bin 0 -> 2983 bytes .../oracledb/__pycache__/base.cpython-39.pyc | Bin 0 -> 872 bytes .../__pycache__/builtin_hooks.cpython-39.pyc | Bin 0 -> 2341 bytes .../__pycache__/connect_params.cpython-39.pyc | Bin 0 -> 53516 bytes .../__pycache__/connection.cpython-39.pyc | Bin 0 -> 123682 bytes .../__pycache__/constants.cpython-39.pyc | Bin 0 -> 1226 bytes .../__pycache__/constructors.cpython-39.pyc | Bin 0 -> 2605 bytes .../__pycache__/cursor.cpython-39.pyc | Bin 0 -> 53805 bytes .../__pycache__/dataframe.cpython-39.pyc | Bin 0 -> 3994 bytes .../__pycache__/dbobject.cpython-39.pyc | Bin 0 -> 13618 bytes .../__pycache__/defaults.cpython-39.pyc | Bin 0 -> 12116 bytes .../__pycache__/driver_mode.cpython-39.pyc | Bin 0 -> 3490 bytes .../oracledb/__pycache__/dsn.cpython-39.pyc | Bin 0 -> 1637 bytes .../end_user_security_context.cpython-39.pyc | Bin 0 -> 2353 bytes .../oracledb/__pycache__/enums.cpython-39.pyc | Bin 0 -> 2076 bytes .../__pycache__/errors.cpython-39.pyc | Bin 0 -> 26765 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 3775 bytes .../__pycache__/fetch_info.cpython-39.pyc | Bin 0 -> 10418 bytes .../__pycache__/future.cpython-39.pyc | Bin 0 -> 753 bytes .../oracledb/__pycache__/lob.cpython-39.pyc | Bin 0 -> 9393 bytes .../__pycache__/pipeline.cpython-39.pyc | Bin 0 -> 16950 bytes .../oracledb/__pycache__/pool.cpython-39.pyc | Bin 0 -> 64603 bytes .../__pycache__/pool_params.cpython-39.pyc | Bin 0 -> 41049 bytes .../__pycache__/secret_values.cpython-39.pyc | Bin 0 -> 4628 bytes .../oracledb/__pycache__/soda.cpython-39.pyc | Bin 0 -> 31457 bytes .../__pycache__/sparse_vector.cpython-39.pyc | Bin 0 -> 3022 bytes .../__pycache__/subscr.cpython-39.pyc | Bin 0 -> 13729 bytes .../oracledb/__pycache__/utils.cpython-39.pyc | Bin 0 -> 18763 bytes .../oracledb/__pycache__/var.cpython-39.pyc | Bin 0 -> 6482 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 218 bytes .../python3.9/site-packages/oracledb/aq.py | 668 ++ .../site-packages/oracledb/arrow_array.py | 112 + .../arrow_impl.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 272536 bytes .../python3.9/site-packages/oracledb/base.py | 48 + .../base_impl.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 2266936 bytes .../site-packages/oracledb/builtin_hooks.py | 102 + .../site-packages/oracledb/connect_params.py | 1293 +++ .../site-packages/oracledb/connection.py | 3406 +++++++ .../site-packages/oracledb/constants.py | 96 + .../site-packages/oracledb/constructors.py | 100 + .../site-packages/oracledb/cursor.py | 1388 +++ .../site-packages/oracledb/dataframe.py | 122 + .../site-packages/oracledb/dbobject.py | 392 + .../site-packages/oracledb/defaults.py | 329 + .../site-packages/oracledb/driver_mode.py | 140 + .../python3.9/site-packages/oracledb/dsn.py | 81 + .../oracledb/end_user_security_context.py | 92 + .../python3.9/site-packages/oracledb/enums.py | 76 + .../site-packages/oracledb/errors.py | 1058 +++ .../site-packages/oracledb/exceptions.py | 125 + .../site-packages/oracledb/fetch_info.py | 310 + .../site-packages/oracledb/future.py | 46 + .../python3.9/site-packages/oracledb/lob.py | 318 + .../site-packages/oracledb/pipeline.py | 491 + .../azure_config_provider.cpython-39.pyc | Bin 0 -> 5601 bytes .../__pycache__/azure_tokens.cpython-39.pyc | Bin 0 -> 3506 bytes .../end_user_sec_provider.cpython-39.pyc | Bin 0 -> 3542 bytes .../oci_config_provider.cpython-39.pyc | Bin 0 -> 5328 bytes .../__pycache__/oci_tokens.cpython-39.pyc | Bin 0 -> 7605 bytes .../oracledb/plugins/azure_config_provider.py | 274 + .../oracledb/plugins/azure_tokens.py | 162 + .../oracledb/plugins/end_user_sec_provider.py | 136 + .../oracledb/plugins/oci_config_provider.py | 253 + .../oracledb/plugins/oci_tokens.py | 292 + .../python3.9/site-packages/oracledb/pool.py | 1723 ++++ .../site-packages/oracledb/pool_params.py | 1033 ++ .../python3.9/site-packages/oracledb/py.typed | 0 .../site-packages/oracledb/secret_values.py | 170 + .../python3.9/site-packages/oracledb/soda.py | 746 ++ .../site-packages/oracledb/sparse_vector.py | 123 + .../site-packages/oracledb/subscr.py | 382 + .../thick_impl.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 1319616 bytes .../thin_impl.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 3230920 bytes .../python3.9/site-packages/oracledb/utils.py | 448 + .../python3.9/site-packages/oracledb/var.py | 186 + .../site-packages/oracledb/version.py | 33 + .../paramiko-5.0.0.dist-info/INSTALLER | 1 + .../paramiko-5.0.0.dist-info/METADATA | 84 + .../paramiko-5.0.0.dist-info/RECORD | 89 + .../paramiko-5.0.0.dist-info/REQUESTED | 0 .../paramiko-5.0.0.dist-info/WHEEL | 5 + .../paramiko-5.0.0.dist-info/licenses/LICENSE | 504 + .../paramiko-5.0.0.dist-info/top_level.txt | 1 + .../site-packages/paramiko/__init__.py | 119 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3227 bytes .../__pycache__/_winapi.cpython-39.pyc | Bin 0 -> 9652 bytes .../paramiko/__pycache__/agent.cpython-39.pyc | Bin 0 -> 15842 bytes .../__pycache__/auth_handler.cpython-39.pyc | Bin 0 -> 17886 bytes .../__pycache__/auth_strategy.cpython-39.pyc | Bin 0 -> 10377 bytes .../paramiko/__pycache__/ber.cpython-39.pyc | Bin 0 -> 3360 bytes .../__pycache__/buffered_pipe.cpython-39.pyc | Bin 0 -> 5886 bytes .../__pycache__/channel.cpython-39.pyc | Bin 0 -> 44351 bytes .../__pycache__/client.cpython-39.pyc | Bin 0 -> 24931 bytes .../__pycache__/common.cpython-39.pyc | Bin 0 -> 5222 bytes .../__pycache__/compress.cpython-39.pyc | Bin 0 -> 1197 bytes .../__pycache__/config.cpython-39.pyc | Bin 0 -> 17814 bytes .../__pycache__/ecdsakey.cpython-39.pyc | Bin 0 -> 9459 bytes .../__pycache__/ed25519key.cpython-39.pyc | Bin 0 -> 5090 bytes .../paramiko/__pycache__/file.cpython-39.pyc | Bin 0 -> 13990 bytes .../__pycache__/hostkeys.cpython-39.pyc | Bin 0 -> 12116 bytes .../__pycache__/kex_curve25519.cpython-39.pyc | Bin 0 -> 4027 bytes .../__pycache__/kex_ecdh_nist.cpython-39.pyc | Bin 0 -> 4431 bytes .../__pycache__/kex_gex.cpython-39.pyc | Bin 0 -> 6401 bytes .../__pycache__/kex_group14.cpython-39.pyc | Bin 0 -> 4124 bytes .../__pycache__/kex_group16.cpython-39.pyc | Bin 0 -> 1268 bytes .../__pycache__/message.cpython-39.pyc | Bin 0 -> 9470 bytes .../__pycache__/packet.cpython-39.pyc | Bin 0 -> 15578 bytes .../paramiko/__pycache__/pipe.cpython-39.pyc | Bin 0 -> 4299 bytes .../paramiko/__pycache__/pkey.cpython-39.pyc | Bin 0 -> 28385 bytes .../__pycache__/primes.cpython-39.pyc | Bin 0 -> 2766 bytes .../paramiko/__pycache__/proxy.cpython-39.pyc | Bin 0 -> 3569 bytes .../__pycache__/rsakey.cpython-39.pyc | Bin 0 -> 5956 bytes .../__pycache__/server.cpython-39.pyc | Bin 0 -> 28331 bytes .../paramiko/__pycache__/sftp.cpython-39.pyc | Bin 0 -> 4693 bytes .../__pycache__/sftp_attr.cpython-39.pyc | Bin 0 -> 5749 bytes .../__pycache__/sftp_client.cpython-39.pyc | Bin 0 -> 31048 bytes .../__pycache__/sftp_file.cpython-39.pyc | Bin 0 -> 18428 bytes .../__pycache__/sftp_handle.cpython-39.pyc | Bin 0 -> 6822 bytes .../__pycache__/sftp_server.cpython-39.pyc | Bin 0 -> 12152 bytes .../__pycache__/sftp_si.cpython-39.pyc | Bin 0 -> 12911 bytes .../__pycache__/ssh_exception.cpython-39.pyc | Bin 0 -> 8172 bytes .../__pycache__/transport.cpython-39.pyc | Bin 0 -> 87645 bytes .../paramiko/__pycache__/util.cpython-39.pyc | Bin 0 -> 8875 bytes .../__pycache__/win_openssh.cpython-39.pyc | Bin 0 -> 1589 bytes .../__pycache__/win_pageant.cpython-39.pyc | Bin 0 -> 3518 bytes .../site-packages/paramiko/_winapi.py | 413 + .../python3.9/site-packages/paramiko/agent.py | 498 + .../site-packages/paramiko/auth_handler.py | 763 ++ .../site-packages/paramiko/auth_strategy.py | 308 + .../python3.9/site-packages/paramiko/ber.py | 139 + .../site-packages/paramiko/buffered_pipe.py | 212 + .../site-packages/paramiko/channel.py | 1390 +++ .../site-packages/paramiko/client.py | 854 ++ .../site-packages/paramiko/common.py | 245 + .../site-packages/paramiko/compress.py | 40 + .../site-packages/paramiko/config.py | 696 ++ .../site-packages/paramiko/ecdsakey.py | 330 + .../site-packages/paramiko/ed25519key.py | 215 + .../python3.9/site-packages/paramiko/file.py | 528 ++ .../site-packages/paramiko/hostkeys.py | 383 + .../site-packages/paramiko/kex_curve25519.py | 131 + .../site-packages/paramiko/kex_ecdh_nist.py | 151 + .../site-packages/paramiko/kex_gex.py | 280 + .../site-packages/paramiko/kex_group14.py | 154 + .../site-packages/paramiko/kex_group16.py | 36 + .../site-packages/paramiko/message.py | 318 + .../site-packages/paramiko/packet.py | 696 ++ .../python3.9/site-packages/paramiko/pipe.py | 148 + .../python3.9/site-packages/paramiko/pkey.py | 1014 ++ .../site-packages/paramiko/primes.py | 148 + .../python3.9/site-packages/paramiko/proxy.py | 134 + .../site-packages/paramiko/rsakey.py | 223 + .../site-packages/paramiko/server.py | 658 ++ .../python3.9/site-packages/paramiko/sftp.py | 224 + .../site-packages/paramiko/sftp_attr.py | 239 + .../site-packages/paramiko/sftp_client.py | 965 ++ .../site-packages/paramiko/sftp_file.py | 594 ++ .../site-packages/paramiko/sftp_handle.py | 196 + .../site-packages/paramiko/sftp_server.py | 538 ++ .../site-packages/paramiko/sftp_si.py | 316 + .../site-packages/paramiko/ssh_exception.py | 254 + .../site-packages/paramiko/transport.py | 3306 +++++++ .../python3.9/site-packages/paramiko/util.py | 336 + .../site-packages/paramiko/win_openssh.py | 56 + .../site-packages/paramiko/win_pageant.py | 138 + .../pip-21.3.1.dist-info/INSTALLER | 1 + .../pip-21.3.1.dist-info/LICENSE.txt | 20 + .../pip-21.3.1.dist-info/METADATA | 93 + .../site-packages/pip-21.3.1.dist-info/RECORD | 812 ++ .../pip-21.3.1.dist-info/REQUESTED | 0 .../site-packages/pip-21.3.1.dist-info/WHEEL | 5 + .../pip-21.3.1.dist-info/entry_points.txt | 5 + .../pip-21.3.1.dist-info/top_level.txt | 1 + .../python3.9/site-packages/pip/__init__.py | 13 + .../python3.9/site-packages/pip/__main__.py | 31 + .../pip/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 647 bytes .../pip/__pycache__/__main__.cpython-39.pyc | Bin 0 -> 603 bytes .../site-packages/pip/_internal/__init__.py | 19 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 784 bytes .../__pycache__/build_env.cpython-39.pyc | Bin 0 -> 9484 bytes .../__pycache__/cache.cpython-39.pyc | Bin 0 -> 8325 bytes .../__pycache__/configuration.cpython-39.pyc | Bin 0 -> 11141 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 16387 bytes .../_internal/__pycache__/main.cpython-39.pyc | Bin 0 -> 633 bytes .../__pycache__/pyproject.cpython-39.pyc | Bin 0 -> 3707 bytes .../self_outdated_check.cpython-39.pyc | Bin 0 -> 5346 bytes .../__pycache__/wheel_builder.cpython-39.pyc | Bin 0 -> 9134 bytes .../site-packages/pip/_internal/build_env.py | 293 + .../site-packages/pip/_internal/cache.py | 264 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 288 bytes .../__pycache__/autocompletion.cpython-39.pyc | Bin 0 -> 5145 bytes .../__pycache__/base_command.cpython-39.pyc | Bin 0 -> 6265 bytes .../cli/__pycache__/cmdoptions.cpython-39.pyc | Bin 0 -> 22581 bytes .../command_context.cpython-39.pyc | Bin 0 -> 1303 bytes .../cli/__pycache__/main.cpython-39.pyc | Bin 0 -> 1378 bytes .../__pycache__/main_parser.cpython-39.pyc | Bin 0 -> 2175 bytes .../cli/__pycache__/parser.cpython-39.pyc | Bin 0 -> 9959 bytes .../__pycache__/progress_bars.cpython-39.pyc | Bin 0 -> 7635 bytes .../__pycache__/req_command.cpython-39.pyc | Bin 0 -> 12897 bytes .../cli/__pycache__/spinners.cpython-39.pyc | Bin 0 -> 4958 bytes .../__pycache__/status_codes.cpython-39.pyc | Bin 0 -> 367 bytes .../pip/_internal/cli/autocompletion.py | 163 + .../pip/_internal/cli/base_command.py | 216 + .../pip/_internal/cli/cmdoptions.py | 1010 ++ .../pip/_internal/cli/command_context.py | 27 + .../site-packages/pip/_internal/cli/main.py | 70 + .../pip/_internal/cli/main_parser.py | 87 + .../site-packages/pip/_internal/cli/parser.py | 292 + .../pip/_internal/cli/progress_bars.py | 250 + .../pip/_internal/cli/req_command.py | 495 + .../pip/_internal/cli/spinners.py | 157 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 127 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3065 bytes .../commands/__pycache__/cache.cpython-39.pyc | Bin 0 -> 6192 bytes .../commands/__pycache__/check.cpython-39.pyc | Bin 0 -> 1581 bytes .../__pycache__/completion.cpython-39.pyc | Bin 0 -> 3154 bytes .../__pycache__/configuration.cpython-39.pyc | Bin 0 -> 8335 bytes .../commands/__pycache__/debug.cpython-39.pyc | Bin 0 -> 6670 bytes .../__pycache__/download.cpython-39.pyc | Bin 0 -> 3976 bytes .../__pycache__/freeze.cpython-39.pyc | Bin 0 -> 2651 bytes .../commands/__pycache__/hash.cpython-39.pyc | Bin 0 -> 2147 bytes .../commands/__pycache__/help.cpython-39.pyc | Bin 0 -> 1319 bytes .../commands/__pycache__/index.cpython-39.pyc | Bin 0 -> 4535 bytes .../__pycache__/install.cpython-39.pyc | Bin 0 -> 17699 bytes .../commands/__pycache__/list.cpython-39.pyc | Bin 0 -> 10163 bytes .../__pycache__/search.cpython-39.pyc | Bin 0 -> 5337 bytes .../commands/__pycache__/show.cpython-39.pyc | Bin 0 -> 8482 bytes .../__pycache__/uninstall.cpython-39.pyc | Bin 0 -> 3115 bytes .../commands/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 4843 bytes .../pip/_internal/commands/cache.py | 223 + .../pip/_internal/commands/check.py | 53 + .../pip/_internal/commands/completion.py | 96 + .../pip/_internal/commands/configuration.py | 266 + .../pip/_internal/commands/debug.py | 202 + .../pip/_internal/commands/download.py | 139 + .../pip/_internal/commands/freeze.py | 97 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 138 + .../pip/_internal/commands/install.py | 770 ++ .../pip/_internal/commands/list.py | 361 + .../pip/_internal/commands/search.py | 174 + .../pip/_internal/commands/show.py | 235 + .../pip/_internal/commands/uninstall.py | 105 + .../pip/_internal/commands/wheel.py | 177 + .../pip/_internal/configuration.py | 367 + .../pip/_internal/distributions/__init__.py | 21 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 811 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 1886 bytes .../__pycache__/installed.cpython-39.pyc | Bin 0 -> 1333 bytes .../__pycache__/sdist.cpython-39.pyc | Bin 0 -> 4659 bytes .../__pycache__/wheel.cpython-39.pyc | Bin 0 -> 1611 bytes .../pip/_internal/distributions/base.py | 36 + .../pip/_internal/distributions/installed.py | 22 + .../pip/_internal/distributions/sdist.py | 129 + .../pip/_internal/distributions/wheel.py | 31 + .../site-packages/pip/_internal/exceptions.py | 402 + .../pip/_internal/index/__init__.py | 2 + .../index/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 242 bytes .../__pycache__/collector.cpython-39.pyc | Bin 0 -> 15896 bytes .../__pycache__/package_finder.cpython-39.pyc | Bin 0 -> 28111 bytes .../index/__pycache__/sources.cpython-39.pyc | Bin 0 -> 7207 bytes .../pip/_internal/index/collector.py | 536 ++ .../pip/_internal/index/package_finder.py | 993 ++ .../pip/_internal/index/sources.py | 224 + .../pip/_internal/locations/__init__.py | 446 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 10622 bytes .../__pycache__/_distutils.cpython-39.pyc | Bin 0 -> 4681 bytes .../__pycache__/_sysconfig.cpython-39.pyc | Bin 0 -> 6272 bytes .../locations/__pycache__/base.cpython-39.pyc | Bin 0 -> 1550 bytes .../pip/_internal/locations/_distutils.py | 169 + .../pip/_internal/locations/_sysconfig.py | 219 + .../pip/_internal/locations/base.py | 52 + .../site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 51 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1937 bytes .../metadata/__pycache__/base.cpython-39.pyc | Bin 0 -> 13016 bytes .../__pycache__/pkg_resources.cpython-39.pyc | Bin 0 -> 6124 bytes .../pip/_internal/metadata/base.py | 330 + .../pip/_internal/metadata/pkg_resources.py | 146 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 276 bytes .../__pycache__/candidate.cpython-39.pyc | Bin 0 -> 1459 bytes .../__pycache__/direct_url.cpython-39.pyc | Bin 0 -> 7249 bytes .../__pycache__/format_control.cpython-39.pyc | Bin 0 -> 2730 bytes .../models/__pycache__/index.cpython-39.pyc | Bin 0 -> 1246 bytes .../models/__pycache__/link.cpython-39.pyc | Bin 0 -> 10270 bytes .../models/__pycache__/scheme.cpython-39.pyc | Bin 0 -> 1022 bytes .../__pycache__/search_scope.cpython-39.pyc | Bin 0 -> 3491 bytes .../selection_prefs.cpython-39.pyc | Bin 0 -> 1678 bytes .../__pycache__/target_python.cpython-39.pyc | Bin 0 -> 3424 bytes .../models/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 4348 bytes .../pip/_internal/models/candidate.py | 34 + .../pip/_internal/models/direct_url.py | 220 + .../pip/_internal/models/format_control.py | 80 + .../pip/_internal/models/index.py | 28 + .../pip/_internal/models/link.py | 288 + .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 129 + .../pip/_internal/models/selection_prefs.py | 51 + .../pip/_internal/models/target_python.py | 110 + .../pip/_internal/models/wheel.py | 89 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 264 bytes .../network/__pycache__/auth.cpython-39.pyc | Bin 0 -> 7496 bytes .../network/__pycache__/cache.cpython-39.pyc | Bin 0 -> 2906 bytes .../__pycache__/download.cpython-39.pyc | Bin 0 -> 5495 bytes .../__pycache__/lazy_wheel.cpython-39.pyc | Bin 0 -> 8396 bytes .../__pycache__/session.cpython-39.pyc | Bin 0 -> 10766 bytes .../network/__pycache__/utils.cpython-39.pyc | Bin 0 -> 1442 bytes .../network/__pycache__/xmlrpc.cpython-39.pyc | Bin 0 -> 2063 bytes .../pip/_internal/network/auth.py | 323 + .../pip/_internal/network/cache.py | 69 + .../pip/_internal/network/download.py | 184 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 454 + .../pip/_internal/network/utils.py | 96 + .../pip/_internal/network/xmlrpc.py | 60 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 212 bytes .../__pycache__/check.cpython-39.pyc | Bin 0 -> 4016 bytes .../__pycache__/freeze.cpython-39.pyc | Bin 0 -> 6158 bytes .../__pycache__/prepare.cpython-39.pyc | Bin 0 -> 14668 bytes .../_internal/operations/build/__init__.py | 0 .../build/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 218 bytes .../build/__pycache__/metadata.cpython-39.pyc | Bin 0 -> 1202 bytes .../metadata_editable.cpython-39.pyc | Bin 0 -> 1240 bytes .../metadata_legacy.cpython-39.pyc | Bin 0 -> 2170 bytes .../build/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 1213 bytes .../__pycache__/wheel_editable.cpython-39.pyc | Bin 0 -> 1429 bytes .../__pycache__/wheel_legacy.cpython-39.pyc | Bin 0 -> 2729 bytes .../_internal/operations/build/metadata.py | 30 + .../operations/build/metadata_editable.py | 34 + .../operations/build/metadata_legacy.py | 67 + .../pip/_internal/operations/build/wheel.py | 37 + .../operations/build/wheel_editable.py | 46 + .../operations/build/wheel_legacy.py | 105 + .../pip/_internal/operations/check.py | 149 + .../pip/_internal/operations/freeze.py | 254 + .../_internal/operations/install/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 276 bytes .../editable_legacy.cpython-39.pyc | Bin 0 -> 1454 bytes .../install/__pycache__/legacy.cpython-39.pyc | Bin 0 -> 3514 bytes .../install/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 20978 bytes .../operations/install/editable_legacy.py | 46 + .../_internal/operations/install/legacy.py | 125 + .../pip/_internal/operations/install/wheel.py | 738 ++ .../pip/_internal/operations/prepare.py | 632 ++ .../site-packages/pip/_internal/pyproject.py | 183 + .../pip/_internal/req/__init__.py | 94 + .../req/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2571 bytes .../__pycache__/constructors.cpython-39.pyc | Bin 0 -> 11329 bytes .../req/__pycache__/req_file.cpython-39.pyc | Bin 0 -> 13389 bytes .../__pycache__/req_install.cpython-39.pyc | Bin 0 -> 22768 bytes .../req/__pycache__/req_set.cpython-39.pyc | Bin 0 -> 5909 bytes .../__pycache__/req_tracker.cpython-39.pyc | Bin 0 -> 4269 bytes .../__pycache__/req_uninstall.cpython-39.pyc | Bin 0 -> 18801 bytes .../pip/_internal/req/constructors.py | 466 + .../pip/_internal/req/req_file.py | 536 ++ .../pip/_internal/req/req_install.py | 891 ++ .../pip/_internal/req/req_set.py | 189 + .../pip/_internal/req/req_tracker.py | 124 + .../pip/_internal/req/req_uninstall.py | 633 ++ .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 212 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 1069 bytes .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 219 bytes .../__pycache__/resolver.cpython-39.pyc | Bin 0 -> 12228 bytes .../_internal/resolution/legacy/resolver.py | 467 + .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 223 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 6620 bytes .../__pycache__/candidates.cpython-39.pyc | Bin 0 -> 18520 bytes .../__pycache__/factory.cpython-39.pyc | Bin 0 -> 18382 bytes .../found_candidates.cpython-39.pyc | Bin 0 -> 4854 bytes .../__pycache__/provider.cpython-39.pyc | Bin 0 -> 7125 bytes .../__pycache__/reporter.cpython-39.pyc | Bin 0 -> 3284 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 0 -> 7593 bytes .../__pycache__/resolver.cpython-39.pyc | Bin 0 -> 7309 bytes .../_internal/resolution/resolvelib/base.py | 141 + .../resolution/resolvelib/candidates.py | 540 ++ .../resolution/resolvelib/factory.py | 701 ++ .../resolution/resolvelib/found_candidates.py | 155 + .../resolution/resolvelib/provider.py | 215 + .../resolution/resolvelib/reporter.py | 68 + .../resolution/resolvelib/requirements.py | 166 + .../resolution/resolvelib/resolver.py | 251 + .../pip/_internal/self_outdated_check.py | 212 + .../pip/_internal/utils/__init__.py | 0 .../utils/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 207 bytes .../utils/__pycache__/_log.cpython-39.pyc | Bin 0 -> 1532 bytes .../utils/__pycache__/appdirs.cpython-39.pyc | Bin 0 -> 1638 bytes .../utils/__pycache__/compat.cpython-39.pyc | Bin 0 -> 1526 bytes .../compatibility_tags.cpython-39.pyc | Bin 0 -> 4078 bytes .../utils/__pycache__/datetime.cpython-39.pyc | Bin 0 -> 526 bytes .../__pycache__/deprecation.cpython-39.pyc | Bin 0 -> 3264 bytes .../direct_url_helpers.cpython-39.pyc | Bin 0 -> 2097 bytes .../__pycache__/distutils_args.cpython-39.pyc | Bin 0 -> 1112 bytes .../utils/__pycache__/egg_link.cpython-39.pyc | Bin 0 -> 2153 bytes .../utils/__pycache__/encoding.cpython-39.pyc | Bin 0 -> 1316 bytes .../__pycache__/entrypoints.cpython-39.pyc | Bin 0 -> 1347 bytes .../__pycache__/filesystem.cpython-39.pyc | Bin 0 -> 5153 bytes .../__pycache__/filetypes.cpython-39.pyc | Bin 0 -> 957 bytes .../utils/__pycache__/glibc.cpython-39.pyc | Bin 0 -> 1688 bytes .../utils/__pycache__/hashes.cpython-39.pyc | Bin 0 -> 5202 bytes .../inject_securetransport.cpython-39.pyc | Bin 0 -> 996 bytes .../utils/__pycache__/logging.cpython-39.pyc | Bin 0 -> 9302 bytes .../utils/__pycache__/misc.cpython-39.pyc | Bin 0 -> 20949 bytes .../utils/__pycache__/models.cpython-39.pyc | Bin 0 -> 2075 bytes .../__pycache__/packaging.cpython-39.pyc | Bin 0 -> 2651 bytes .../utils/__pycache__/parallel.cpython-39.pyc | Bin 0 -> 3222 bytes .../__pycache__/pkg_resources.cpython-39.pyc | Bin 0 -> 1884 bytes .../setuptools_build.cpython-39.pyc | Bin 0 -> 3446 bytes .../__pycache__/subprocess.cpython-39.pyc | Bin 0 -> 6259 bytes .../utils/__pycache__/temp_dir.cpython-39.pyc | Bin 0 -> 7274 bytes .../__pycache__/unpacking.cpython-39.pyc | Bin 0 -> 8486 bytes .../utils/__pycache__/urls.cpython-39.pyc | Bin 0 -> 1611 bytes .../__pycache__/virtualenv.cpython-39.pyc | Bin 0 -> 3301 bytes .../utils/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 6290 bytes .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 63 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 120 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/distutils_args.py | 42 + .../pip/_internal/utils/egg_link.py | 75 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 28 + .../pip/_internal/utils/filesystem.py | 182 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 88 + .../pip/_internal/utils/hashes.py | 144 + .../_internal/utils/inject_securetransport.py | 35 + .../pip/_internal/utils/logging.py | 358 + .../site-packages/pip/_internal/utils/misc.py | 689 ++ .../pip/_internal/utils/models.py | 39 + .../pip/_internal/utils/packaging.py | 84 + .../pip/_internal/utils/parallel.py | 103 + .../pip/_internal/utils/pkg_resources.py | 33 + .../pip/_internal/utils/setuptools_build.py | 167 + .../pip/_internal/utils/subprocess.py | 289 + .../pip/_internal/utils/temp_dir.py | 246 + .../pip/_internal/utils/unpacking.py | 351 + .../site-packages/pip/_internal/utils/urls.py | 62 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 182 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 530 bytes .../vcs/__pycache__/bazaar.cpython-39.pyc | Bin 0 -> 3240 bytes .../vcs/__pycache__/git.cpython-39.pyc | Bin 0 -> 12364 bytes .../vcs/__pycache__/mercurial.cpython-39.pyc | Bin 0 -> 4883 bytes .../vcs/__pycache__/subversion.cpython-39.pyc | Bin 0 -> 8402 bytes .../__pycache__/versioncontrol.cpython-39.pyc | Bin 0 -> 20902 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 93 + .../site-packages/pip/_internal/vcs/git.py | 513 + .../pip/_internal/vcs/mercurial.py | 153 + .../pip/_internal/vcs/subversion.py | 318 + .../pip/_internal/vcs/versioncontrol.py | 693 ++ .../pip/_internal/wheel_builder.py | 375 + .../site-packages/pip/_vendor/__init__.py | 111 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2920 bytes .../_vendor/__pycache__/distro.cpython-39.pyc | Bin 0 -> 38382 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 0 -> 240451 bytes .../_vendor/__pycache__/six.cpython-39.pyc | Bin 0 -> 27524 bytes .../pip/_vendor/cachecontrol/__init__.py | 11 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 565 bytes .../__pycache__/_cmd.cpython-39.pyc | Bin 0 -> 1586 bytes .../__pycache__/adapter.cpython-39.pyc | Bin 0 -> 3091 bytes .../__pycache__/cache.cpython-39.pyc | Bin 0 -> 1838 bytes .../__pycache__/compat.cpython-39.pyc | Bin 0 -> 762 bytes .../__pycache__/controller.cpython-39.pyc | Bin 0 -> 7779 bytes .../__pycache__/filewrapper.cpython-39.pyc | Bin 0 -> 2187 bytes .../__pycache__/heuristics.cpython-39.pyc | Bin 0 -> 4719 bytes .../__pycache__/serialize.cpython-39.pyc | Bin 0 -> 4238 bytes .../__pycache__/wrapper.cpython-39.pyc | Bin 0 -> 689 bytes .../pip/_vendor/cachecontrol/_cmd.py | 57 + .../pip/_vendor/cachecontrol/adapter.py | 133 + .../pip/_vendor/cachecontrol/cache.py | 39 + .../_vendor/cachecontrol/caches/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 309 bytes .../__pycache__/file_cache.cpython-39.pyc | Bin 0 -> 3325 bytes .../__pycache__/redis_cache.cpython-39.pyc | Bin 0 -> 1581 bytes .../_vendor/cachecontrol/caches/file_cache.py | 146 + .../cachecontrol/caches/redis_cache.py | 33 + .../pip/_vendor/cachecontrol/compat.py | 29 + .../pip/_vendor/cachecontrol/controller.py | 376 + .../pip/_vendor/cachecontrol/filewrapper.py | 80 + .../pip/_vendor/cachecontrol/heuristics.py | 135 + .../pip/_vendor/cachecontrol/serialize.py | 188 + .../pip/_vendor/cachecontrol/wrapper.py | 29 + .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 291 bytes .../__pycache__/__main__.cpython-39.pyc | Bin 0 -> 468 bytes .../certifi/__pycache__/core.cpython-39.pyc | Bin 0 -> 1538 bytes .../site-packages/pip/_vendor/certifi/core.py | 75 + .../pip/_vendor/chardet/__init__.py | 83 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1915 bytes .../__pycache__/big5freq.cpython-39.pyc | Bin 0 -> 27194 bytes .../__pycache__/big5prober.cpython-39.pyc | Bin 0 -> 1149 bytes .../chardistribution.cpython-39.pyc | Bin 0 -> 6235 bytes .../charsetgroupprober.cpython-39.pyc | Bin 0 -> 2276 bytes .../__pycache__/charsetprober.cpython-39.pyc | Bin 0 -> 3498 bytes .../codingstatemachine.cpython-39.pyc | Bin 0 -> 2925 bytes .../chardet/__pycache__/compat.cpython-39.pyc | Bin 0 -> 414 bytes .../__pycache__/cp949prober.cpython-39.pyc | Bin 0 -> 1156 bytes .../chardet/__pycache__/enums.cpython-39.pyc | Bin 0 -> 2663 bytes .../__pycache__/escprober.cpython-39.pyc | Bin 0 -> 2648 bytes .../chardet/__pycache__/escsm.cpython-39.pyc | Bin 0 -> 7097 bytes .../__pycache__/eucjpprober.cpython-39.pyc | Bin 0 -> 2462 bytes .../__pycache__/euckrfreq.cpython-39.pyc | Bin 0 -> 12078 bytes .../__pycache__/euckrprober.cpython-39.pyc | Bin 0 -> 1157 bytes .../__pycache__/euctwfreq.cpython-39.pyc | Bin 0 -> 27198 bytes .../__pycache__/euctwprober.cpython-39.pyc | Bin 0 -> 1157 bytes .../__pycache__/gb2312freq.cpython-39.pyc | Bin 0 -> 19122 bytes .../__pycache__/gb2312prober.cpython-39.pyc | Bin 0 -> 1165 bytes .../__pycache__/hebrewprober.cpython-39.pyc | Bin 0 -> 3034 bytes .../__pycache__/jisfreq.cpython-39.pyc | Bin 0 -> 22150 bytes .../chardet/__pycache__/jpcntx.cpython-39.pyc | Bin 0 -> 37623 bytes .../langbulgarianmodel.cpython-39.pyc | Bin 0 -> 21825 bytes .../__pycache__/langgreekmodel.cpython-39.pyc | Bin 0 -> 20501 bytes .../langhebrewmodel.cpython-39.pyc | Bin 0 -> 20569 bytes .../langhungarianmodel.cpython-39.pyc | Bin 0 -> 21770 bytes .../langrussianmodel.cpython-39.pyc | Bin 0 -> 26373 bytes .../__pycache__/langthaimodel.cpython-39.pyc | Bin 0 -> 20745 bytes .../langturkishmodel.cpython-39.pyc | Bin 0 -> 20585 bytes .../__pycache__/latin1prober.cpython-39.pyc | Bin 0 -> 2970 bytes .../mbcharsetprober.cpython-39.pyc | Bin 0 -> 2277 bytes .../mbcsgroupprober.cpython-39.pyc | Bin 0 -> 1146 bytes .../chardet/__pycache__/mbcssm.cpython-39.pyc | Bin 0 -> 15733 bytes .../sbcharsetprober.cpython-39.pyc | Bin 0 -> 3130 bytes .../sbcsgroupprober.cpython-39.pyc | Bin 0 -> 1715 bytes .../__pycache__/sjisprober.cpython-39.pyc | Bin 0 -> 2498 bytes .../universaldetector.cpython-39.pyc | Bin 0 -> 5846 bytes .../__pycache__/utf8prober.cpython-39.pyc | Bin 0 -> 2007 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 454 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 233 + .../pip/_vendor/chardet/charsetgroupprober.py | 107 + .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/cli/__init__.py | 1 + .../cli/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 211 bytes .../cli/__pycache__/chardetect.cpython-39.pyc | Bin 0 -> 2705 bytes .../pip/_vendor/chardet/cli/chardetect.py | 84 + .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../pip/_vendor/chardet/compat.py | 36 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/euckrfreq.py | 195 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 387 + .../pip/_vendor/chardet/euctwprober.py | 46 + .../pip/_vendor/chardet/gb2312freq.py | 283 + .../pip/_vendor/chardet/gb2312prober.py | 46 + .../pip/_vendor/chardet/hebrewprober.py | 292 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/jpcntx.py | 233 + .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langgreekmodel.py | 4397 +++++++++ .../pip/_vendor/chardet/langhebrewmodel.py | 4382 +++++++++ .../pip/_vendor/chardet/langhungarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langrussianmodel.py | 5717 +++++++++++ .../pip/_vendor/chardet/langthaimodel.py | 4382 +++++++++ .../pip/_vendor/chardet/langturkishmodel.py | 4382 +++++++++ .../pip/_vendor/chardet/latin1prober.py | 145 + .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../pip/_vendor/chardet/mbcsgroupprober.py | 54 + .../pip/_vendor/chardet/mbcssm.py | 572 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 216 bytes .../__pycache__/languages.cpython-39.pyc | Bin 0 -> 7947 bytes .../pip/_vendor/chardet/metadata/languages.py | 309 + .../pip/_vendor/chardet/sbcharsetprober.py | 145 + .../pip/_vendor/chardet/sbcsgroupprober.py | 83 + .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/universaldetector.py | 286 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 6 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 459 bytes .../colorama/__pycache__/ansi.cpython-39.pyc | Bin 0 -> 3244 bytes .../__pycache__/ansitowin32.cpython-39.pyc | Bin 0 -> 7710 bytes .../__pycache__/initialise.cpython-39.pyc | Bin 0 -> 1726 bytes .../colorama/__pycache__/win32.cpython-39.pyc | Bin 0 -> 3958 bytes .../__pycache__/winterm.cpython-39.pyc | Bin 0 -> 4680 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 258 + .../pip/_vendor/colorama/initialise.py | 80 + .../pip/_vendor/colorama/win32.py | 152 + .../pip/_vendor/colorama/winterm.py | 169 + .../pip/_vendor/distlib/__init__.py | 23 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1072 bytes .../distlib/__pycache__/compat.cpython-39.pyc | Bin 0 -> 31837 bytes .../__pycache__/database.cpython-39.pyc | Bin 0 -> 42496 bytes .../distlib/__pycache__/index.cpython-39.pyc | Bin 0 -> 17305 bytes .../__pycache__/locators.cpython-39.pyc | Bin 0 -> 38269 bytes .../__pycache__/manifest.cpython-39.pyc | Bin 0 -> 10208 bytes .../__pycache__/markers.cpython-39.pyc | Bin 0 -> 4990 bytes .../__pycache__/metadata.cpython-39.pyc | Bin 0 -> 26603 bytes .../__pycache__/resources.cpython-39.pyc | Bin 0 -> 11026 bytes .../__pycache__/scripts.cpython-39.pyc | Bin 0 -> 11258 bytes .../distlib/__pycache__/util.cpython-39.pyc | Bin 0 -> 52621 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 20371 bytes .../distlib/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 27184 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 499 bytes .../_backport/__pycache__/misc.cpython-39.pyc | Bin 0 -> 1119 bytes .../__pycache__/shutil.cpython-39.pyc | Bin 0 -> 21693 bytes .../__pycache__/sysconfig.cpython-39.pyc | Bin 0 -> 15983 bytes .../__pycache__/tarfile.cpython-39.pyc | Bin 0 -> 62747 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/shutil.py | 764 ++ .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 786 ++ .../pip/_vendor/distlib/_backport/tarfile.py | 2607 +++++ .../pip/_vendor/distlib/compat.py | 1122 +++ .../pip/_vendor/distlib/database.py | 1339 +++ .../pip/_vendor/distlib/index.py | 509 + .../pip/_vendor/distlib/locators.py | 1300 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 147 + .../pip/_vendor/distlib/metadata.py | 1058 +++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 429 + .../site-packages/pip/_vendor/distlib/util.py | 1969 ++++ .../pip/_vendor/distlib/version.py | 739 ++ .../pip/_vendor/distlib/wheel.py | 1053 ++ .../site-packages/pip/_vendor/distro.py | 1386 +++ .../pip/_vendor/html5lib/__init__.py | 35 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1318 bytes .../__pycache__/_ihatexml.cpython-39.pyc | Bin 0 -> 13787 bytes .../__pycache__/_inputstream.cpython-39.pyc | Bin 0 -> 21646 bytes .../__pycache__/_tokenizer.cpython-39.pyc | Bin 0 -> 39741 bytes .../__pycache__/_utils.cpython-39.pyc | Bin 0 -> 4818 bytes .../__pycache__/constants.cpython-39.pyc | Bin 0 -> 66356 bytes .../__pycache__/html5parser.cpython-39.pyc | Bin 0 -> 91027 bytes .../__pycache__/serializer.cpython-39.pyc | Bin 0 -> 10829 bytes .../pip/_vendor/html5lib/_ihatexml.py | 289 + .../pip/_vendor/html5lib/_inputstream.py | 918 ++ .../pip/_vendor/html5lib/_tokenizer.py | 1735 ++++ .../pip/_vendor/html5lib/_trie/__init__.py | 5 + .../_trie/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 368 bytes .../_trie/__pycache__/_base.cpython-39.pyc | Bin 0 -> 1612 bytes .../_trie/__pycache__/py.cpython-39.pyc | Bin 0 -> 2273 bytes .../pip/_vendor/html5lib/_trie/_base.py | 40 + .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_utils.py | 159 + .../pip/_vendor/html5lib/constants.py | 2946 ++++++ .../pip/_vendor/html5lib/filters/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 216 bytes .../alphabeticalattributes.cpython-39.pyc | Bin 0 -> 1338 bytes .../filters/__pycache__/base.cpython-39.pyc | Bin 0 -> 886 bytes .../inject_meta_charset.cpython-39.pyc | Bin 0 -> 1892 bytes .../filters/__pycache__/lint.cpython-39.pyc | Bin 0 -> 2634 bytes .../__pycache__/optionaltags.cpython-39.pyc | Bin 0 -> 2779 bytes .../__pycache__/sanitizer.cpython-39.pyc | Bin 0 -> 16902 bytes .../__pycache__/whitespace.cpython-39.pyc | Bin 0 -> 1384 bytes .../filters/alphabeticalattributes.py | 29 + .../pip/_vendor/html5lib/filters/base.py | 12 + .../html5lib/filters/inject_meta_charset.py | 73 + .../pip/_vendor/html5lib/filters/lint.py | 93 + .../_vendor/html5lib/filters/optionaltags.py | 207 + .../pip/_vendor/html5lib/filters/sanitizer.py | 916 ++ .../_vendor/html5lib/filters/whitespace.py | 38 + .../pip/_vendor/html5lib/html5parser.py | 2795 ++++++ .../pip/_vendor/html5lib/serializer.py | 409 + .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 953 bytes .../__pycache__/genshi.cpython-39.pyc | Bin 0 -> 1561 bytes .../__pycache__/sax.cpython-39.pyc | Bin 0 -> 1480 bytes .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3348 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 11332 bytes .../__pycache__/dom.cpython-39.pyc | Bin 0 -> 9469 bytes .../__pycache__/etree.cpython-39.pyc | Bin 0 -> 11837 bytes .../__pycache__/etree_lxml.cpython-39.pyc | Bin 0 -> 13020 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../pip/_vendor/html5lib/treebuilders/dom.py | 239 + .../_vendor/html5lib/treebuilders/etree.py | 343 + .../html5lib/treebuilders/etree_lxml.py | 392 + .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 4014 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 7013 bytes .../__pycache__/dom.cpython-39.pyc | Bin 0 -> 1748 bytes .../__pycache__/etree.cpython-39.pyc | Bin 0 -> 3510 bytes .../__pycache__/etree_lxml.cpython-39.pyc | Bin 0 -> 6647 bytes .../__pycache__/genshi.cpython-39.pyc | Bin 0 -> 1904 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/etree.py | 131 + .../html5lib/treewalkers/etree_lxml.py | 215 + .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../pip/_vendor/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 863 bytes .../idna/__pycache__/codec.cpython-39.pyc | Bin 0 -> 2894 bytes .../idna/__pycache__/compat.cpython-39.pyc | Bin 0 -> 700 bytes .../idna/__pycache__/core.cpython-39.pyc | Bin 0 -> 9061 bytes .../idna/__pycache__/idnadata.cpython-39.pyc | Bin 0 -> 39719 bytes .../idna/__pycache__/intranges.cpython-39.pyc | Bin 0 -> 1876 bytes .../__pycache__/package_data.cpython-39.pyc | Bin 0 -> 227 bytes .../idna/__pycache__/uts46data.cpython-39.pyc | Bin 0 -> 146187 bytes .../site-packages/pip/_vendor/idna/codec.py | 117 + .../site-packages/pip/_vendor/idna/compat.py | 16 + .../site-packages/pip/_vendor/idna/core.py | 409 + .../pip/_vendor/idna/idnadata.py | 3996 ++++++++ .../pip/_vendor/idna/intranges.py | 58 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8438 +++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 54 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1430 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 234 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 1868 bytes .../msgpack/__pycache__/ext.cpython-39.pyc | Bin 0 -> 6296 bytes .../__pycache__/fallback.cpython-39.pyc | Bin 0 -> 26742 bytes .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1087 +++ .../pip/_vendor/packaging/__about__.py | 26 + .../pip/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-39.pyc | Bin 0 -> 606 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 462 bytes .../__pycache__/_manylinux.cpython-39.pyc | Bin 0 -> 7310 bytes .../__pycache__/_musllinux.cpython-39.pyc | Bin 0 -> 4625 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 0 -> 3098 bytes .../__pycache__/markers.cpython-39.pyc | Bin 0 -> 9469 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 0 -> 3990 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 0 -> 22226 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 0 -> 12305 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 3627 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 13027 bytes .../pip/_vendor/packaging/_manylinux.py | 301 + .../pip/_vendor/packaging/_musllinux.py | 136 + .../pip/_vendor/packaging/_structures.py | 67 + .../pip/_vendor/packaging/markers.py | 304 + .../pip/_vendor/packaging/requirements.py | 146 + .../pip/_vendor/packaging/specifiers.py | 828 ++ .../pip/_vendor/packaging/tags.py | 484 + .../pip/_vendor/packaging/utils.py | 136 + .../pip/_vendor/packaging/version.py | 499 + .../pip/_vendor/pep517/__init__.py | 6 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 329 bytes .../pep517/__pycache__/build.cpython-39.pyc | Bin 0 -> 3577 bytes .../pep517/__pycache__/check.cpython-39.pyc | Bin 0 -> 5124 bytes .../__pycache__/colorlog.cpython-39.pyc | Bin 0 -> 2954 bytes .../pep517/__pycache__/compat.cpython-39.pyc | Bin 0 -> 1545 bytes .../__pycache__/dirtools.cpython-39.pyc | Bin 0 -> 1363 bytes .../__pycache__/envbuild.cpython-39.pyc | Bin 0 -> 4523 bytes .../pep517/__pycache__/meta.cpython-39.pyc | Bin 0 -> 2936 bytes .../__pycache__/wrappers.cpython-39.pyc | Bin 0 -> 12509 bytes .../site-packages/pip/_vendor/pep517/build.py | 127 + .../site-packages/pip/_vendor/pep517/check.py | 207 + .../pip/_vendor/pep517/colorlog.py | 115 + .../pip/_vendor/pep517/compat.py | 51 + .../pip/_vendor/pep517/dirtools.py | 44 + .../pip/_vendor/pep517/envbuild.py | 171 + .../pip/_vendor/pep517/in_process/__init__.py | 17 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 931 bytes .../__pycache__/_in_process.cpython-39.pyc | Bin 0 -> 10285 bytes .../_vendor/pep517/in_process/_in_process.py | 363 + .../site-packages/pip/_vendor/pep517/meta.py | 92 + .../pip/_vendor/pep517/wrappers.py | 375 + .../pip/_vendor/pkg_resources/__init__.py | 3296 +++++++ .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 100352 bytes .../__pycache__/py31compat.cpython-39.pyc | Bin 0 -> 666 bytes .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/platformdirs/__init__.py | 329 + .../pip/_vendor/platformdirs/__main__.py | 44 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 11090 bytes .../__pycache__/__main__.cpython-39.pyc | Bin 0 -> 1186 bytes .../__pycache__/android.cpython-39.pyc | Bin 0 -> 4341 bytes .../__pycache__/api.cpython-39.pyc | Bin 0 -> 5318 bytes .../__pycache__/macos.cpython-39.pyc | Bin 0 -> 3276 bytes .../__pycache__/unix.cpython-39.pyc | Bin 0 -> 7055 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 311 bytes .../__pycache__/windows.cpython-39.pyc | Bin 0 -> 6424 bytes .../pip/_vendor/platformdirs/android.py | 117 + .../pip/_vendor/platformdirs/api.py | 155 + .../pip/_vendor/platformdirs/macos.py | 62 + .../pip/_vendor/platformdirs/unix.py | 180 + .../pip/_vendor/platformdirs/version.py | 4 + .../pip/_vendor/platformdirs/windows.py | 180 + .../pip/_vendor/progress/__init__.py | 189 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 5698 bytes .../progress/__pycache__/bar.cpython-39.pyc | Bin 0 -> 2743 bytes .../__pycache__/colors.cpython-39.pyc | Bin 0 -> 1516 bytes .../__pycache__/counter.cpython-39.pyc | Bin 0 -> 1641 bytes .../__pycache__/spinner.cpython-39.pyc | Bin 0 -> 1467 bytes .../site-packages/pip/_vendor/progress/bar.py | 93 + .../pip/_vendor/progress/colors.py | 79 + .../pip/_vendor/progress/counter.py | 47 + .../pip/_vendor/progress/spinner.py | 45 + .../site-packages/pip/_vendor/pyparsing.py | 7107 ++++++++++++++ .../pip/_vendor/requests/__init__.py | 154 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 4018 bytes .../__pycache__/__version__.cpython-39.pyc | Bin 0 -> 571 bytes .../_internal_utils.cpython-39.pyc | Bin 0 -> 1318 bytes .../__pycache__/adapters.cpython-39.pyc | Bin 0 -> 17925 bytes .../requests/__pycache__/api.cpython-39.pyc | Bin 0 -> 6735 bytes .../requests/__pycache__/auth.cpython-39.pyc | Bin 0 -> 8347 bytes .../requests/__pycache__/certs.cpython-39.pyc | Bin 0 -> 649 bytes .../__pycache__/compat.cpython-39.pyc | Bin 0 -> 1628 bytes .../__pycache__/cookies.cpython-39.pyc | Bin 0 -> 18838 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 5421 bytes .../requests/__pycache__/help.cpython-39.pyc | Bin 0 -> 2909 bytes .../requests/__pycache__/hooks.cpython-39.pyc | Bin 0 -> 1006 bytes .../__pycache__/models.cpython-39.pyc | Bin 0 -> 24486 bytes .../__pycache__/packages.cpython-39.pyc | Bin 0 -> 518 bytes .../__pycache__/sessions.cpython-39.pyc | Bin 0 -> 19873 bytes .../__pycache__/status_codes.cpython-39.pyc | Bin 0 -> 4255 bytes .../__pycache__/structures.cpython-39.pyc | Bin 0 -> 4476 bytes .../requests/__pycache__/utils.cpython-39.pyc | Bin 0 -> 23340 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/adapters.py | 588 ++ .../site-packages/pip/_vendor/requests/api.py | 159 + .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/compat.py | 76 + .../pip/_vendor/requests/cookies.py | 549 ++ .../pip/_vendor/requests/exceptions.py | 127 + .../pip/_vendor/requests/help.py | 132 + .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/models.py | 966 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 781 ++ .../pip/_vendor/requests/status_codes.py | 123 + .../pip/_vendor/requests/structures.py | 105 + .../pip/_vendor/requests/utils.py | 1013 ++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 622 bytes .../__pycache__/providers.cpython-39.pyc | Bin 0 -> 6721 bytes .../__pycache__/reporters.cpython-39.pyc | Bin 0 -> 2318 bytes .../__pycache__/resolvers.cpython-39.pyc | Bin 0 -> 15275 bytes .../__pycache__/structs.cpython-39.pyc | Bin 0 -> 7295 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 217 bytes .../collections_abc.cpython-39.pyc | Bin 0 -> 391 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/reporters.py | 37 + .../pip/_vendor/resolvelib/resolvers.py | 483 + .../pip/_vendor/resolvelib/structs.py | 165 + .../site-packages/pip/_vendor/six.py | 998 ++ .../pip/_vendor/tenacity/__init__.py | 517 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 16295 bytes .../__pycache__/_asyncio.cpython-39.pyc | Bin 0 -> 2610 bytes .../__pycache__/_utils.cpython-39.pyc | Bin 0 -> 1247 bytes .../tenacity/__pycache__/after.cpython-39.pyc | Bin 0 -> 1226 bytes .../__pycache__/before.cpython-39.pyc | Bin 0 -> 1114 bytes .../__pycache__/before_sleep.cpython-39.pyc | Bin 0 -> 1406 bytes .../tenacity/__pycache__/nap.cpython-39.pyc | Bin 0 -> 1208 bytes .../tenacity/__pycache__/retry.cpython-39.pyc | Bin 0 -> 8796 bytes .../tenacity/__pycache__/stop.cpython-39.pyc | Bin 0 -> 4260 bytes .../__pycache__/tornadoweb.cpython-39.pyc | Bin 0 -> 1760 bytes .../tenacity/__pycache__/wait.cpython-39.pyc | Bin 0 -> 7972 bytes .../pip/_vendor/tenacity/_asyncio.py | 92 + .../pip/_vendor/tenacity/_utils.py | 68 + .../pip/_vendor/tenacity/after.py | 46 + .../pip/_vendor/tenacity/before.py | 41 + .../pip/_vendor/tenacity/before_sleep.py | 58 + .../site-packages/pip/_vendor/tenacity/nap.py | 43 + .../pip/_vendor/tenacity/retry.py | 213 + .../pip/_vendor/tenacity/stop.py | 96 + .../pip/_vendor/tenacity/tornadoweb.py | 59 + .../pip/_vendor/tenacity/wait.py | 191 + .../pip/_vendor/tomli/__init__.py | 6 + .../tomli/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 395 bytes .../tomli/__pycache__/_parser.cpython-39.pyc | Bin 0 -> 16370 bytes .../tomli/__pycache__/_re.cpython-39.pyc | Bin 0 -> 2445 bytes .../pip/_vendor/tomli/_parser.py | 703 ++ .../site-packages/pip/_vendor/tomli/_re.py | 83 + .../pip/_vendor/urllib3/__init__.py | 85 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2205 bytes .../__pycache__/_collections.cpython-39.pyc | Bin 0 -> 10800 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 229 bytes .../__pycache__/connection.cpython-39.pyc | Bin 0 -> 13698 bytes .../__pycache__/connectionpool.cpython-39.pyc | Bin 0 -> 24725 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 11662 bytes .../urllib3/__pycache__/fields.cpython-39.pyc | Bin 0 -> 8177 bytes .../__pycache__/filepost.cpython-39.pyc | Bin 0 -> 2778 bytes .../__pycache__/poolmanager.cpython-39.pyc | Bin 0 -> 15320 bytes .../__pycache__/request.cpython-39.pyc | Bin 0 -> 5641 bytes .../__pycache__/response.cpython-39.pyc | Bin 0 -> 26282 bytes .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 569 ++ .../pip/_vendor/urllib3/connectionpool.py | 1078 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 215 bytes .../_appengine_environ.cpython-39.pyc | Bin 0 -> 1435 bytes .../__pycache__/appengine.cpython-39.pyc | Bin 0 -> 8288 bytes .../__pycache__/ntlmpool.cpython-39.pyc | Bin 0 -> 3642 bytes .../__pycache__/pyopenssl.cpython-39.pyc | Bin 0 -> 15619 bytes .../securetransport.cpython-39.pyc | Bin 0 -> 21941 bytes .../contrib/__pycache__/socks.cpython-39.pyc | Bin 0 -> 5651 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 232 bytes .../__pycache__/bindings.cpython-39.pyc | Bin 0 -> 10739 bytes .../__pycache__/low_level.cpython-39.pyc | Bin 0 -> 9192 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 | 511 + .../urllib3/contrib/securetransport.py | 922 ++ .../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 | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 329 bytes .../packages/__pycache__/six.cpython-39.pyc | Bin 0 -> 27599 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 226 bytes .../__pycache__/makefile.cpython-39.pyc | Bin 0 -> 1324 bytes .../urllib3/packages/backports/makefile.py | 51 + .../pip/_vendor/urllib3/packages/six.py | 1077 +++ .../packages/ssl_match_hostname/__init__.py | 24 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 588 bytes .../_implementation.cpython-39.pyc | Bin 0 -> 3319 bytes .../ssl_match_hostname/_implementation.py | 160 + .../pip/_vendor/urllib3/poolmanager.py | 552 ++ .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 1094 +++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../util/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1125 bytes .../__pycache__/connection.cpython-39.pyc | Bin 0 -> 3477 bytes .../util/__pycache__/proxy.cpython-39.pyc | Bin 0 -> 1361 bytes .../util/__pycache__/queue.cpython-39.pyc | Bin 0 -> 1080 bytes .../util/__pycache__/request.cpython-39.pyc | Bin 0 -> 3468 bytes .../util/__pycache__/response.cpython-39.pyc | Bin 0 -> 2365 bytes .../util/__pycache__/retry.cpython-39.pyc | Bin 0 -> 15889 bytes .../util/__pycache__/ssl_.cpython-39.pyc | Bin 0 -> 11349 bytes .../__pycache__/ssltransport.cpython-39.pyc | Bin 0 -> 7530 bytes .../util/__pycache__/timeout.cpython-39.pyc | Bin 0 -> 8963 bytes .../util/__pycache__/url.cpython-39.pyc | Bin 0 -> 10688 bytes .../util/__pycache__/wait.cpython-39.pyc | Bin 0 -> 3148 bytes .../pip/_vendor/urllib3/util/connection.py | 150 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 143 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 604 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 268 + .../pip/_vendor/urllib3/util/url.py | 432 + .../pip/_vendor/urllib3/util/wait.py | 153 + .../site-packages/pip/_vendor/vendor.txt | 22 + .../pip/_vendor/webencodings/__init__.py | 342 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 9739 bytes .../__pycache__/labels.cpython-39.pyc | Bin 0 -> 3853 bytes .../__pycache__/mklabels.cpython-39.pyc | Bin 0 -> 1923 bytes .../__pycache__/tests.cpython-39.pyc | Bin 0 -> 5087 bytes .../__pycache__/x_user_defined.cpython-39.pyc | Bin 0 -> 2683 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + .../lib/python3.9/site-packages/pip/py.typed | 4 + .../site-packages/pkg_resources/__init__.py | 3303 +++++++ .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 101049 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 209 bytes .../__pycache__/appdirs.cpython-39.pyc | Bin 0 -> 20526 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 0 -> 201362 bytes .../pkg_resources/_vendor/appdirs.py | 607 ++ .../_vendor/packaging/__about__.py | 26 + .../_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-39.pyc | Bin 0 -> 616 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 472 bytes .../__pycache__/_manylinux.cpython-39.pyc | Bin 0 -> 7320 bytes .../__pycache__/_musllinux.cpython-39.pyc | Bin 0 -> 4635 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 0 -> 3108 bytes .../__pycache__/markers.cpython-39.pyc | Bin 0 -> 9488 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 0 -> 4009 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 0 -> 22236 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 0 -> 12304 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 3637 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 13178 bytes .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 67 + .../_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 828 ++ .../pkg_resources/_vendor/packaging/tags.py | 484 + .../pkg_resources/_vendor/packaging/utils.py | 136 + .../_vendor/packaging/version.py | 504 + .../pkg_resources/_vendor/pyparsing.py | 5742 +++++++++++ .../pkg_resources/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2898 bytes .../__pycache__/setup.cpython-39.pyc | Bin 0 -> 337 bytes .../data/my-test-package-source/setup.py | 6 + .../pycparser-2.23.dist-info/INSTALLER | 1 + .../pycparser-2.23.dist-info/LICENSE | 27 + .../pycparser-2.23.dist-info/METADATA | 28 + .../pycparser-2.23.dist-info/RECORD | 41 + .../pycparser-2.23.dist-info/WHEEL | 5 + .../pycparser-2.23.dist-info/top_level.txt | 1 + .../site-packages/pycparser/__init__.py | 93 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2631 bytes .../__pycache__/_ast_gen.cpython-39.pyc | Bin 0 -> 10184 bytes .../__pycache__/_build_tables.cpython-39.pyc | Bin 0 -> 603 bytes .../__pycache__/ast_transforms.cpython-39.pyc | Bin 0 -> 3762 bytes .../__pycache__/c_ast.cpython-39.pyc | Bin 0 -> 36593 bytes .../__pycache__/c_generator.cpython-39.pyc | Bin 0 -> 17794 bytes .../__pycache__/c_lexer.cpython-39.pyc | Bin 0 -> 13674 bytes .../__pycache__/c_parser.cpython-39.pyc | Bin 0 -> 66637 bytes .../__pycache__/lextab.cpython-39.pyc | Bin 0 -> 6814 bytes .../__pycache__/plyparser.cpython-39.pyc | Bin 0 -> 4701 bytes .../__pycache__/yacctab.cpython-39.pyc | Bin 0 -> 181437 bytes .../site-packages/pycparser/_ast_gen.py | 336 + .../site-packages/pycparser/_build_tables.py | 40 + .../site-packages/pycparser/_c_ast.cfg | 195 + .../site-packages/pycparser/ast_transforms.py | 164 + .../site-packages/pycparser/c_ast.py | 1125 +++ .../site-packages/pycparser/c_generator.py | 502 + .../site-packages/pycparser/c_lexer.py | 569 ++ .../site-packages/pycparser/c_parser.py | 1973 ++++ .../site-packages/pycparser/lextab.py | 10 + .../site-packages/pycparser/ply/__init__.py | 5 + .../ply/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 250 bytes .../ply/__pycache__/cpp.cpython-39.pyc | Bin 0 -> 16067 bytes .../ply/__pycache__/ctokens.cpython-39.pyc | Bin 0 -> 2103 bytes .../ply/__pycache__/lex.cpython-39.pyc | Bin 0 -> 21456 bytes .../ply/__pycache__/yacc.cpython-39.pyc | Bin 0 -> 52999 bytes .../ply/__pycache__/ygen.cpython-39.pyc | Bin 0 -> 1813 bytes .../site-packages/pycparser/ply/cpp.py | 905 ++ .../site-packages/pycparser/ply/ctokens.py | 133 + .../site-packages/pycparser/ply/lex.py | 1099 +++ .../site-packages/pycparser/ply/yacc.py | 3494 +++++++ .../site-packages/pycparser/ply/ygen.py | 74 + .../site-packages/pycparser/plyparser.py | 133 + .../site-packages/pycparser/yacctab.py | 374 + .../pynacl-1.6.2.dist-info/INSTALLER | 1 + .../pynacl-1.6.2.dist-info/METADATA | 275 + .../pynacl-1.6.2.dist-info/RECORD | 69 + .../pynacl-1.6.2.dist-info/WHEEL | 5 + .../pynacl-1.6.2.dist-info/licenses/LICENSE | 174 + .../licenses/licenses/LICENSE.libsodium.txt | 18 + .../pynacl-1.6.2.dist-info/top_level.txt | 2 + .../setuptools-59.6.0.dist-info/INSTALLER | 1 + .../setuptools-59.6.0.dist-info/LICENSE | 19 + .../setuptools-59.6.0.dist-info/METADATA | 117 + .../setuptools-59.6.0.dist-info/RECORD | 290 + .../setuptools-59.6.0.dist-info/REQUESTED | 0 .../setuptools-59.6.0.dist-info/WHEEL | 5 + .../entry_points.txt | 56 + .../setuptools-59.6.0.dist-info/top_level.txt | 4 + .../site-packages/setuptools/__init__.py | 242 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 8558 bytes .../_deprecation_warning.cpython-39.pyc | Bin 0 -> 568 bytes .../__pycache__/_imp.cpython-39.pyc | Bin 0 -> 2103 bytes .../__pycache__/archive_util.cpython-39.pyc | Bin 0 -> 5832 bytes .../__pycache__/build_meta.cpython-39.pyc | Bin 0 -> 9427 bytes .../__pycache__/config.cpython-39.pyc | Bin 0 -> 20871 bytes .../__pycache__/dep_util.cpython-39.pyc | Bin 0 -> 875 bytes .../__pycache__/depends.cpython-39.pyc | Bin 0 -> 5293 bytes .../__pycache__/dist.cpython-39.pyc | Bin 0 -> 36566 bytes .../__pycache__/errors.cpython-39.pyc | Bin 0 -> 1520 bytes .../__pycache__/extension.cpython-39.pyc | Bin 0 -> 1962 bytes .../__pycache__/glob.cpython-39.pyc | Bin 0 -> 3712 bytes .../__pycache__/installer.cpython-39.pyc | Bin 0 -> 3017 bytes .../__pycache__/launch.cpython-39.pyc | Bin 0 -> 919 bytes .../__pycache__/monkey.cpython-39.pyc | Bin 0 -> 4631 bytes .../__pycache__/msvc.cpython-39.pyc | Bin 0 -> 42857 bytes .../__pycache__/namespaces.cpython-39.pyc | Bin 0 -> 3618 bytes .../__pycache__/package_index.cpython-39.pyc | Bin 0 -> 34015 bytes .../__pycache__/py34compat.cpython-39.pyc | Bin 0 -> 498 bytes .../__pycache__/sandbox.cpython-39.pyc | Bin 0 -> 15774 bytes .../__pycache__/unicode_utils.cpython-39.pyc | Bin 0 -> 1132 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 342 bytes .../__pycache__/wheel.cpython-39.pyc | Bin 0 -> 7298 bytes .../windows_support.cpython-39.pyc | Bin 0 -> 1041 bytes .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_distutils/__init__.py | 24 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 576 bytes .../__pycache__/_msvccompiler.cpython-39.pyc | Bin 0 -> 13831 bytes .../__pycache__/archive_util.cpython-39.pyc | Bin 0 -> 6663 bytes .../__pycache__/bcppcompiler.cpython-39.pyc | Bin 0 -> 6574 bytes .../__pycache__/ccompiler.cpython-39.pyc | Bin 0 -> 33480 bytes .../_distutils/__pycache__/cmd.cpython-39.pyc | Bin 0 -> 14002 bytes .../__pycache__/config.cpython-39.pyc | Bin 0 -> 3605 bytes .../__pycache__/core.cpython-39.pyc | Bin 0 -> 7158 bytes .../cygwinccompiler.cpython-39.pyc | Bin 0 -> 9069 bytes .../__pycache__/debug.cpython-39.pyc | Bin 0 -> 272 bytes .../__pycache__/dep_util.cpython-39.pyc | Bin 0 -> 2792 bytes .../__pycache__/dir_util.cpython-39.pyc | Bin 0 -> 5893 bytes .../__pycache__/dist.cpython-39.pyc | Bin 0 -> 34463 bytes .../__pycache__/errors.cpython-39.pyc | Bin 0 -> 5328 bytes .../__pycache__/extension.cpython-39.pyc | Bin 0 -> 6993 bytes .../__pycache__/fancy_getopt.cpython-39.pyc | Bin 0 -> 10701 bytes .../__pycache__/file_util.cpython-39.pyc | Bin 0 -> 6059 bytes .../__pycache__/filelist.cpython-39.pyc | Bin 0 -> 10851 bytes .../_distutils/__pycache__/log.cpython-39.pyc | Bin 0 -> 2391 bytes .../__pycache__/msvc9compiler.cpython-39.pyc | Bin 0 -> 17588 bytes .../__pycache__/msvccompiler.cpython-39.pyc | Bin 0 -> 14783 bytes .../__pycache__/py35compat.cpython-39.pyc | Bin 0 -> 648 bytes .../__pycache__/py38compat.cpython-39.pyc | Bin 0 -> 443 bytes .../__pycache__/spawn.cpython-39.pyc | Bin 0 -> 2919 bytes .../__pycache__/sysconfig.cpython-39.pyc | Bin 0 -> 12923 bytes .../__pycache__/text_file.cpython-39.pyc | Bin 0 -> 8517 bytes .../__pycache__/unixccompiler.cpython-39.pyc | Bin 0 -> 6865 bytes .../__pycache__/util.cpython-39.pyc | Bin 0 -> 14777 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 7869 bytes .../versionpredicate.cpython-39.pyc | Bin 0 -> 5336 bytes .../setuptools/_distutils/_msvccompiler.py | 561 ++ .../setuptools/_distutils/archive_util.py | 256 + .../setuptools/_distutils/bcppcompiler.py | 393 + .../setuptools/_distutils/ccompiler.py | 1123 +++ .../setuptools/_distutils/cmd.py | 403 + .../setuptools/_distutils/command/__init__.py | 31 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 551 bytes .../command/__pycache__/bdist.cpython-39.pyc | Bin 0 -> 3681 bytes .../__pycache__/bdist_dumb.cpython-39.pyc | Bin 0 -> 3664 bytes .../__pycache__/bdist_msi.cpython-39.pyc | Bin 0 -> 19846 bytes .../__pycache__/bdist_rpm.cpython-39.pyc | Bin 0 -> 12301 bytes .../__pycache__/bdist_wininst.cpython-39.pyc | Bin 0 -> 8621 bytes .../command/__pycache__/build.cpython-39.pyc | Bin 0 -> 3953 bytes .../__pycache__/build_clib.cpython-39.pyc | Bin 0 -> 4876 bytes .../__pycache__/build_ext.cpython-39.pyc | Bin 0 -> 16241 bytes .../__pycache__/build_py.cpython-39.pyc | Bin 0 -> 9871 bytes .../__pycache__/build_scripts.cpython-39.pyc | Bin 0 -> 4036 bytes .../command/__pycache__/check.cpython-39.pyc | Bin 0 -> 4985 bytes .../command/__pycache__/clean.cpython-39.pyc | Bin 0 -> 2158 bytes .../command/__pycache__/config.cpython-39.pyc | Bin 0 -> 10288 bytes .../__pycache__/install.cpython-39.pyc | Bin 0 -> 15306 bytes .../__pycache__/install_data.cpython-39.pyc | Bin 0 -> 2361 bytes .../install_egg_info.cpython-39.pyc | Bin 0 -> 3320 bytes .../install_headers.cpython-39.pyc | Bin 0 -> 1786 bytes .../__pycache__/install_lib.cpython-39.pyc | Bin 0 -> 5158 bytes .../install_scripts.cpython-39.pyc | Bin 0 -> 2209 bytes .../__pycache__/py37compat.cpython-39.pyc | Bin 0 -> 1052 bytes .../__pycache__/register.cpython-39.pyc | Bin 0 -> 8529 bytes .../command/__pycache__/sdist.cpython-39.pyc | Bin 0 -> 14556 bytes .../command/__pycache__/upload.cpython-39.pyc | Bin 0 -> 5279 bytes .../setuptools/_distutils/command/bdist.py | 143 + .../_distutils/command/bdist_dumb.py | 123 + .../_distutils/command/bdist_msi.py | 749 ++ .../_distutils/command/bdist_rpm.py | 579 ++ .../_distutils/command/bdist_wininst.py | 377 + .../setuptools/_distutils/command/build.py | 157 + .../_distutils/command/build_clib.py | 209 + .../_distutils/command/build_ext.py | 755 ++ .../setuptools/_distutils/command/build_py.py | 392 + .../_distutils/command/build_scripts.py | 152 + .../setuptools/_distutils/command/check.py | 148 + .../setuptools/_distutils/command/clean.py | 76 + .../setuptools/_distutils/command/config.py | 344 + .../setuptools/_distutils/command/install.py | 721 ++ .../_distutils/command/install_data.py | 79 + .../_distutils/command/install_egg_info.py | 84 + .../_distutils/command/install_headers.py | 47 + .../_distutils/command/install_lib.py | 217 + .../_distutils/command/install_scripts.py | 60 + .../_distutils/command/py37compat.py | 30 + .../setuptools/_distutils/command/register.py | 304 + .../setuptools/_distutils/command/sdist.py | 494 + .../setuptools/_distutils/command/upload.py | 214 + .../setuptools/_distutils/config.py | 130 + .../setuptools/_distutils/core.py | 249 + .../setuptools/_distutils/cygwinccompiler.py | 425 + .../setuptools/_distutils/debug.py | 5 + .../setuptools/_distutils/dep_util.py | 92 + .../setuptools/_distutils/dir_util.py | 210 + .../setuptools/_distutils/dist.py | 1257 +++ .../setuptools/_distutils/errors.py | 97 + .../setuptools/_distutils/extension.py | 240 + .../setuptools/_distutils/fancy_getopt.py | 457 + .../setuptools/_distutils/file_util.py | 238 + .../setuptools/_distutils/filelist.py | 355 + .../setuptools/_distutils/log.py | 77 + .../setuptools/_distutils/msvc9compiler.py | 788 ++ .../setuptools/_distutils/msvccompiler.py | 643 ++ .../setuptools/_distutils/py35compat.py | 19 + .../setuptools/_distutils/py38compat.py | 7 + .../setuptools/_distutils/spawn.py | 106 + .../setuptools/_distutils/sysconfig.py | 601 ++ .../setuptools/_distutils/text_file.py | 286 + .../setuptools/_distutils/unixccompiler.py | 325 + .../setuptools/_distutils/util.py | 548 ++ .../setuptools/_distutils/version.py | 363 + .../setuptools/_distutils/versionpredicate.py | 169 + .../site-packages/setuptools/_imp.py | 82 + .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 206 bytes .../__pycache__/ordered_set.cpython-39.pyc | Bin 0 -> 16400 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 0 -> 201359 bytes .../_vendor/more_itertools/__init__.py | 4 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 287 bytes .../__pycache__/more.cpython-39.pyc | Bin 0 -> 110032 bytes .../__pycache__/recipes.cpython-39.pyc | Bin 0 -> 17952 bytes .../setuptools/_vendor/more_itertools/more.py | 3825 ++++++++ .../_vendor/more_itertools/recipes.py | 620 ++ .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 26 + .../setuptools/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-39.pyc | Bin 0 -> 613 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 469 bytes .../__pycache__/_manylinux.cpython-39.pyc | Bin 0 -> 7317 bytes .../__pycache__/_musllinux.cpython-39.pyc | Bin 0 -> 4632 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 0 -> 3105 bytes .../__pycache__/markers.cpython-39.pyc | Bin 0 -> 9482 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 0 -> 4003 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 0 -> 22233 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 0 -> 12301 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 3634 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 13175 bytes .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 67 + .../setuptools/_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 828 ++ .../setuptools/_vendor/packaging/tags.py | 484 + .../setuptools/_vendor/packaging/utils.py | 136 + .../setuptools/_vendor/packaging/version.py | 504 + .../setuptools/_vendor/pyparsing.py | 5742 +++++++++++ .../site-packages/setuptools/archive_util.py | 205 + .../site-packages/setuptools/build_meta.py | 290 + .../setuptools/command/__init__.py | 8 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 395 bytes .../command/__pycache__/alias.cpython-39.pyc | Bin 0 -> 2389 bytes .../__pycache__/bdist_egg.cpython-39.pyc | Bin 0 -> 13055 bytes .../__pycache__/bdist_rpm.cpython-39.pyc | Bin 0 -> 1602 bytes .../__pycache__/build_clib.cpython-39.pyc | Bin 0 -> 2486 bytes .../__pycache__/build_ext.cpython-39.pyc | Bin 0 -> 9845 bytes .../__pycache__/build_py.cpython-39.pyc | Bin 0 -> 8232 bytes .../__pycache__/develop.cpython-39.pyc | Bin 0 -> 6155 bytes .../__pycache__/dist_info.cpython-39.pyc | Bin 0 -> 1413 bytes .../__pycache__/easy_install.cpython-39.pyc | Bin 0 -> 63761 bytes .../__pycache__/egg_info.cpython-39.pyc | Bin 0 -> 22717 bytes .../__pycache__/install.cpython-39.pyc | Bin 0 -> 4203 bytes .../install_egg_info.cpython-39.pyc | Bin 0 -> 2445 bytes .../__pycache__/install_lib.cpython-39.pyc | Bin 0 -> 4152 bytes .../install_scripts.cpython-39.pyc | Bin 0 -> 2440 bytes .../__pycache__/py36compat.cpython-39.pyc | Bin 0 -> 4607 bytes .../__pycache__/register.cpython-39.pyc | Bin 0 -> 863 bytes .../command/__pycache__/rotate.cpython-39.pyc | Bin 0 -> 2522 bytes .../__pycache__/saveopts.cpython-39.pyc | Bin 0 -> 941 bytes .../command/__pycache__/sdist.cpython-39.pyc | Bin 0 -> 6910 bytes .../command/__pycache__/setopt.cpython-39.pyc | Bin 0 -> 4692 bytes .../command/__pycache__/test.cpython-39.pyc | Bin 0 -> 8047 bytes .../command/__pycache__/upload.cpython-39.pyc | Bin 0 -> 836 bytes .../__pycache__/upload_docs.cpython-39.pyc | Bin 0 -> 6179 bytes .../site-packages/setuptools/command/alias.py | 78 + .../setuptools/command/bdist_egg.py | 456 + .../setuptools/command/bdist_rpm.py | 40 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 328 + .../setuptools/command/build_py.py | 242 + .../setuptools/command/develop.py | 193 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2299 +++++ .../setuptools/command/egg_info.py | 755 ++ .../setuptools/command/install.py | 132 + .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_lib.py | 122 + .../setuptools/command/install_scripts.py | 69 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 134 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 64 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 196 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 252 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 202 + .../site-packages/setuptools/config.py | 751 ++ .../site-packages/setuptools/dep_util.py | 25 + .../site-packages/setuptools/depends.py | 176 + .../site-packages/setuptools/dist.py | 1156 +++ .../site-packages/setuptools/errors.py | 40 + .../site-packages/setuptools/extension.py | 55 + .../setuptools/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2937 bytes .../site-packages/setuptools/glob.py | 167 + .../site-packages/setuptools/installer.py | 104 + .../site-packages/setuptools/launch.py | 36 + .../site-packages/setuptools/monkey.py | 177 + .../site-packages/setuptools/msvc.py | 1805 ++++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1155 +++ .../site-packages/setuptools/py34compat.py | 13 + .../site-packages/setuptools/sandbox.py | 530 ++ .../setuptools/script (dev).tmpl | 6 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/unicode_utils.py | 42 + .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/wheel.py | 213 + .../setuptools/windows_support.py | 29 + .../INSTALLER | 1 + .../METADATA | 72 + .../typing_extensions-4.15.0.dist-info/RECORD | 7 + .../typing_extensions-4.15.0.dist-info/WHEEL | 4 + .../licenses/LICENSE | 279 + .../site-packages/typing_extensions.py | 4317 +++++++++ .venv/lib64 | 1 + .venv/pyvenv.cfg | 3 + __pycache__/config.cpython-39.pyc | Bin 4137 -> 4146 bytes __pycache__/logging_config.cpython-39.pyc | Bin 1283 -> 1294 bytes __pycache__/neft_inward_parser.cpython-39.pyc | Bin 10203 -> 0 bytes __pycache__/scheduler.cpython-39.pyc | Bin 4980 -> 4706 bytes __pycache__/upi_parser.cpython-39.pyc | Bin 0 -> 6115 bytes config.py | 8 +- db/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 343 bytes db/__pycache__/models.cpython-39.pyc | Bin 0 -> 1580 bytes .../oracle_connector.cpython-39.pyc | Bin 0 -> 3608 bytes db/__pycache__/repository.cpython-39.pyc | Bin 0 -> 7642 bytes db/repository.py | 119 +- logs/app.log | 1136 +++ .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 353 bytes .../__pycache__/data_mapper.cpython-39.pyc | Bin 0 -> 3534 bytes .../__pycache__/file_processor.cpython-39.pyc | Bin 0 -> 4966 bytes scheduler.py | 54 +- sftp/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 334 bytes sftp/__pycache__/file_monitor.cpython-39.pyc | Bin 0 -> 2935 bytes sftp/__pycache__/sftp_client.cpython-39.pyc | Bin 0 -> 4496 bytes 1786 files changed, 316067 insertions(+), 100 deletions(-) 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/inv create mode 100755 .venv/bin/invoke create mode 100755 .venv/bin/pip create mode 100755 .venv/bin/pip3 create mode 100755 .venv/bin/pip3.9 create mode 120000 .venv/bin/python create mode 120000 .venv/bin/python3 create mode 120000 .venv/bin/python3.9 create mode 100644 .venv/lib/python3.9/site-packages/__pycache__/typing_extensions.cpython-39.pyc create mode 100755 .venv/lib/python3.9/site-packages/_cffi_backend.cpython-39-x86_64-linux-gnu.so create mode 100644 .venv/lib/python3.9/site-packages/_distutils_hack/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/_distutils_hack/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/_distutils_hack/__pycache__/override.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/_distutils_hack/override.py create mode 100644 .venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/bcrypt/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/bcrypt/__init__.pyi create mode 100644 .venv/lib/python3.9/site-packages/bcrypt/__pycache__/__init__.cpython-39.pyc create mode 100755 .venv/lib/python3.9/site-packages/bcrypt/_bcrypt.abi3.so create mode 100644 .venv/lib/python3.9/site-packages/bcrypt/py.typed create mode 100644 .venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/entry_points.txt create mode 100644 .venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS create mode 100644 .venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/cffi/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/_imp_emulation.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/api.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/backend_ctypes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/cffi_opcode.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/commontypes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/cparser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/error.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/ffiplatform.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/lock.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/model.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/pkgconfig.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/recompiler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/setuptools_ext.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/vengine_cpy.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/vengine_gen.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/__pycache__/verifier.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cffi/_cffi_errors.h create mode 100644 .venv/lib/python3.9/site-packages/cffi/_cffi_include.h create mode 100644 .venv/lib/python3.9/site-packages/cffi/_embedding.h create mode 100644 .venv/lib/python3.9/site-packages/cffi/_imp_emulation.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/_shimmed_dist_utils.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/api.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/backend_ctypes.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/cffi_opcode.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/commontypes.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/cparser.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/error.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/ffiplatform.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/lock.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/model.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/parse_c_type.h create mode 100644 .venv/lib/python3.9/site-packages/cffi/pkgconfig.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/recompiler.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/setuptools_ext.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/vengine_cpy.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/vengine_gen.py create mode 100644 .venv/lib/python3.9/site-packages/cffi/verifier.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE.APACHE create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE.BSD create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json create mode 100644 .venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/sboms/sbom.json create mode 100644 .venv/lib/python3.9/site-packages/cryptography/__about__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/__pycache__/__about__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/__pycache__/exceptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/__pycache__/fernet.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/exceptions.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/fernet.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/_oid.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/__pycache__/asn1.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/asn1.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/backends/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/backend.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-39.pyc create mode 100755 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust.abi3.so create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/binding.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/modes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/modes.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/_modes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/cmac.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/hashes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/hmac.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/hpke.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_asymmetric.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_modes.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_serialization.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/mldsa.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/mlkem.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/mldsa.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/mlkem.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/types.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/aead.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/base.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/modes.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/cmac.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/constant_time.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hashes.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hmac.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hpke.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/argon2.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/keywrap.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/padding.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/poly1305.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/base.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/ssh.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/totp.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/py.typed create mode 100644 .venv/lib/python3.9/site-packages/cryptography/utils.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/extensions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/general_name.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/name.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/ocsp.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/oid.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/verification.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/base.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/certificate_transparency.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/extensions.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/general_name.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/name.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/ocsp.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/oid.py create mode 100644 .venv/lib/python3.9/site-packages/cryptography/x509/verification.py create mode 100644 .venv/lib/python3.9/site-packages/distutils-precedence.pth create mode 100644 .venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/entry_points.txt create mode 100644 .venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/invoke/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/__main__.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/__main__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/collection.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/config.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/context.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/env.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/exceptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/executor.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/loader.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/main.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/program.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/runners.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/tasks.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/terminals.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/__pycache__/watchers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/collection.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/completion/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/completion/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/completion/__pycache__/complete.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/completion/bash.completion create mode 100644 .venv/lib/python3.9/site-packages/invoke/completion/complete.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/completion/fish.completion create mode 100644 .venv/lib/python3.9/site-packages/invoke/completion/zsh.completion create mode 100644 .venv/lib/python3.9/site-packages/invoke/config.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/context.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/env.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/exceptions.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/executor.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/loader.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/main.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/parser/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/parser/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/parser/__pycache__/argument.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/parser/__pycache__/context.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/parser/__pycache__/parser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/parser/argument.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/parser/context.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/parser/parser.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/program.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/py.typed create mode 100644 .venv/lib/python3.9/site-packages/invoke/runners.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/tasks.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/terminals.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/util.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__pycache__/backwardscompat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__pycache__/machine.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/fluidity/backwardscompat.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/fluidity/machine.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/_version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/alias_dict.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/attribute_dict.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/lexicon/_version.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/lexicon/alias_dict.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/lexicon/attribute_dict.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/composer.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/constructor.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/cyaml.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/dumper.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/emitter.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/error.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/events.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/loader.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/nodes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/parser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/reader.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/representer.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/resolver.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/scanner.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/serializer.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/tokens.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/composer.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/constructor.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/cyaml.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/dumper.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/emitter.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/error.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/events.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/loader.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/nodes.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/parser.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/reader.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/representer.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/resolver.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/scanner.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/serializer.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/vendor/yaml/tokens.py create mode 100644 .venv/lib/python3.9/site-packages/invoke/watchers.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/encoding.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/exceptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/hash.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/hashlib.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/public.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/secret.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/signing.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/__pycache__/utils.cpython-39.pyc create mode 100755 .venv/lib/python3.9/site-packages/nacl/_sodium.abi3.so create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_aead.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_box.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_core.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_generichash.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_hash.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_kx.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_pwhash.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_scalarmult.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_secretbox.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_secretstream.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_shorthash.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_sign.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/randombytes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/sodium_core.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_aead.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_box.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_core.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_generichash.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_hash.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_kx.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_pwhash.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_scalarmult.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_secretbox.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_secretstream.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_shorthash.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/crypto_sign.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/randombytes.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/sodium_core.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/bindings/utils.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/encoding.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/exceptions.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/hash.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/hashlib.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/public.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/_argon2.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/argon2i.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/argon2id.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/scrypt.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/_argon2.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/argon2i.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/argon2id.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/pwhash/scrypt.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/py.typed create mode 100644 .venv/lib/python3.9/site-packages/nacl/secret.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/signing.py create mode 100644 .venv/lib/python3.9/site-packages/nacl/utils.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/REQUESTED create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/LICENSE.txt create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/NOTICE.txt create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/THIRD_PARTY_LICENSES.txt create mode 100644 .venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/aq.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/arrow_array.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/builtin_hooks.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/connect_params.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/connection.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/constants.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/constructors.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/cursor.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/dataframe.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/dbobject.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/defaults.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/driver_mode.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/dsn.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/end_user_security_context.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/enums.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/errors.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/exceptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/fetch_info.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/future.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/lob.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/pipeline.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/pool.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/pool_params.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/secret_values.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/soda.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/sparse_vector.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/subscr.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/var.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/aq.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/arrow_array.py create mode 100755 .venv/lib/python3.9/site-packages/oracledb/arrow_impl.cpython-39-x86_64-linux-gnu.so create mode 100644 .venv/lib/python3.9/site-packages/oracledb/base.py create mode 100755 .venv/lib/python3.9/site-packages/oracledb/base_impl.cpython-39-x86_64-linux-gnu.so create mode 100644 .venv/lib/python3.9/site-packages/oracledb/builtin_hooks.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/connect_params.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/connection.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/constants.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/constructors.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/cursor.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/dataframe.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/dbobject.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/defaults.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/driver_mode.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/dsn.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/end_user_security_context.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/enums.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/errors.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/exceptions.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/fetch_info.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/future.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/lob.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/pipeline.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/azure_config_provider.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/azure_tokens.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/end_user_sec_provider.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/oci_config_provider.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/oci_tokens.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/azure_config_provider.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/azure_tokens.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/end_user_sec_provider.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/oci_config_provider.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/plugins/oci_tokens.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/pool.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/pool_params.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/py.typed create mode 100644 .venv/lib/python3.9/site-packages/oracledb/secret_values.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/soda.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/sparse_vector.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/subscr.py create mode 100755 .venv/lib/python3.9/site-packages/oracledb/thick_impl.cpython-39-x86_64-linux-gnu.so create mode 100755 .venv/lib/python3.9/site-packages/oracledb/thin_impl.cpython-39-x86_64-linux-gnu.so create mode 100644 .venv/lib/python3.9/site-packages/oracledb/utils.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/var.py create mode 100644 .venv/lib/python3.9/site-packages/oracledb/version.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/REQUESTED create mode 100644 .venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/_winapi.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/agent.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/auth_handler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/auth_strategy.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/ber.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/buffered_pipe.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/channel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/client.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/common.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/compress.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/config.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/ecdsakey.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/ed25519key.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/file.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/hostkeys.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_curve25519.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_ecdh_nist.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_gex.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_group14.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_group16.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/message.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/packet.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/pipe.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/pkey.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/primes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/proxy.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/rsakey.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/server.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_attr.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_client.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_file.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_handle.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_server.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_si.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/ssh_exception.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/transport.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/win_openssh.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/__pycache__/win_pageant.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/paramiko/_winapi.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/agent.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/auth_handler.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/auth_strategy.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/ber.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/buffered_pipe.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/channel.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/client.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/common.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/compress.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/config.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/ecdsakey.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/ed25519key.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/file.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/hostkeys.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/kex_curve25519.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/kex_ecdh_nist.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/kex_gex.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/kex_group14.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/kex_group16.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/message.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/packet.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/pipe.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/pkey.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/primes.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/proxy.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/rsakey.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/server.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/sftp.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/sftp_attr.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/sftp_client.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/sftp_file.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/sftp_handle.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/sftp_server.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/sftp_si.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/ssh_exception.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/transport.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/util.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/win_openssh.py create mode 100644 .venv/lib/python3.9/site-packages/paramiko/win_pageant.py create mode 100644 .venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/LICENSE.txt create mode 100644 .venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/REQUESTED create mode 100644 .venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/entry_points.txt create mode 100644 .venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/pip/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/__main__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/__pycache__/__main__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/build_env.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/cache.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/configuration.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/exceptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/main.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/pyproject.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/build_env.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cache.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/main.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/parser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/base_command.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/command_context.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/main.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/main_parser.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/parser.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/req_command.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/spinners.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/cli/status_codes.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/cache.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/check.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/completion.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/debug.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/download.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/hash.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/help.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/index.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/install.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/list.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/search.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/show.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/cache.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/check.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/completion.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/configuration.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/debug.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/download.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/freeze.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/hash.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/help.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/index.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/install.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/list.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/search.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/show.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/uninstall.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/commands/wheel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/configuration.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/installed.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/distributions/wheel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/exceptions.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/index/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/collector.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/sources.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/index/collector.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/index/package_finder.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/index/sources.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/locations/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/locations/_distutils.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/locations/base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/main.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/metadata/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/metadata/base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/candidate.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/format_control.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/index.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/link.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/scheme.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/target_python.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/candidate.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/direct_url.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/format_control.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/index.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/link.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/scheme.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/search_scope.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/target_python.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/models/wheel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/auth.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/cache.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/download.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/session.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/auth.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/cache.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/download.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/session.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/utils.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/check.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/check.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/freeze.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/install/legacy.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/operations/prepare.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/pyproject.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/constructors.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_file.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_install.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_set.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/constructors.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/req_file.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/req_install.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/req_set.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/req_tracker.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/self_outdated_check.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/_log.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/logging.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/misc.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/models.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/parallel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/pkg_resources.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/urls.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/_log.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/appdirs.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/compat.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/datetime.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/deprecation.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/distutils_args.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/egg_link.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/encoding.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/filesystem.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/filetypes.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/glibc.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/hashes.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/logging.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/misc.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/models.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/packaging.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/parallel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/pkg_resources.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/unpacking.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/urls.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/utils/wheel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/git.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/git.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/subversion.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_internal/wheel_builder.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/distro.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/six.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/certifi/core.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/compat.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/enums.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/chardet/version.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/win32.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/compat.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/database.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/index.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/locators.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/markers.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/resources.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/util.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/version.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/distro.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__pycache__/core.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/codec.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/compat.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/core.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/intranges.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/package_data.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/__pycache__/_version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/markers.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/tags.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/utils.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/packaging/version.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/build.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/check.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/colorlog.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/dirtools.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/envbuild.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/meta.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/__pycache__/wrappers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/build.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/check.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/compat.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/dirtools.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/__pycache__/_in_process.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/meta.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/__pycache__/colors.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/__pycache__/spinner.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/bar.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/colors.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/counter.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/progress/spinner.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/pyparsing.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/api.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/help.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/models.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/__version__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/adapters.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/api.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/auth.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/certs.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/compat.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/cookies.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/help.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/hooks.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/models.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/packages.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/structures.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/requests/utils.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/six.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/after.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/before.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/tomli/_re.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/request.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/vendor.txt create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 .venv/lib/python3.9/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 .venv/lib/python3.9/site-packages/pip/py.typed create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/_manylinux.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/_musllinux.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/tags.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_manylinux.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_musllinux.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/tags.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/extern/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser-2.23.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/pycparser-2.23.dist-info/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/pycparser-2.23.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/pycparser-2.23.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/pycparser-2.23.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/pycparser-2.23.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/_ast_gen.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/_build_tables.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/ast_transforms.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/c_ast.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/c_generator.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/c_lexer.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/c_parser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/lextab.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/plyparser.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/__pycache__/yacctab.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/_ast_gen.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/_build_tables.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/_c_ast.cfg create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ast_transforms.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/c_ast.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/c_generator.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/c_lexer.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/c_parser.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/lextab.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/__pycache__/cpp.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/__pycache__/ctokens.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/__pycache__/lex.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/__pycache__/yacc.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/__pycache__/ygen.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/cpp.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/ctokens.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/lex.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/yacc.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/ply/ygen.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/plyparser.py create mode 100644 .venv/lib/python3.9/site-packages/pycparser/yacctab.py create mode 100644 .venv/lib/python3.9/site-packages/pynacl-1.6.2.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/pynacl-1.6.2.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/pynacl-1.6.2.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/pynacl-1.6.2.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/pynacl-1.6.2.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/pynacl-1.6.2.dist-info/licenses/licenses/LICENSE.libsodium.txt create mode 100644 .venv/lib/python3.9/site-packages/pynacl-1.6.2.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/setuptools-59.6.0.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/setuptools-59.6.0.dist-info/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/setuptools-59.6.0.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/setuptools-59.6.0.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/setuptools-59.6.0.dist-info/REQUESTED create mode 100644 .venv/lib/python3.9/site-packages/setuptools-59.6.0.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/setuptools-59.6.0.dist-info/entry_points.txt create mode 100644 .venv/lib/python3.9/site-packages/setuptools-59.6.0.dist-info/top_level.txt create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/_imp.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/archive_util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/build_meta.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/config.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/dep_util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/depends.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/dist.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/errors.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/extension.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/glob.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/installer.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/launch.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/monkey.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/msvc.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/namespaces.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/package_index.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/py34compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/sandbox.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/unicode_utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/wheel.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/__pycache__/windows_support.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_deprecation_warning.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/archive_util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/bcppcompiler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/ccompiler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/config.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/core.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/debug.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/dir_util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/dist.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/errors.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/extension.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/filelist.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/log.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/py35compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/unixccompiler.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/util.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/_msvccompiler.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/archive_util.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/bcppcompiler.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/ccompiler.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/cmd.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/bdist.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/bdist_msi.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/bdist_wininst.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/build.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/py37compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/__pycache__/upload.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_dumb.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_msi.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_rpm.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_wininst.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/build.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_clib.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_py.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_scripts.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/check.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/clean.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/config.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/install.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_data.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_egg_info.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_headers.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_lib.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_scripts.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/py37compat.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/register.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/command/upload.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/config.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/core.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/cygwinccompiler.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/debug.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/dep_util.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/dir_util.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/dist.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/errors.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/extension.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/fancy_getopt.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/file_util.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/filelist.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/log.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/msvc9compiler.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/msvccompiler.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/py35compat.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/py38compat.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/spawn.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/sysconfig.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/text_file.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/unixccompiler.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/util.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/version.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_distutils/versionpredicate.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_imp.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/more.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/recipes.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/_manylinux.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/_musllinux.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_manylinux.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_musllinux.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/archive_util.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/build_meta.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/alias.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/build_clib.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/build_ext.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/build_py.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/develop.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/dist_info.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/easy_install.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/egg_info.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/install.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/install_lib.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/install_scripts.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/py36compat.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/register.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/rotate.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/saveopts.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/sdist.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/setopt.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/test.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/upload.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/__pycache__/upload_docs.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/alias.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/bdist_egg.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/bdist_rpm.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/build_clib.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/build_ext.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/build_py.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/develop.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/dist_info.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/easy_install.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/egg_info.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/install.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/install_egg_info.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/install_lib.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/install_scripts.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/launcher manifest.xml create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/py36compat.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/register.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/rotate.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/saveopts.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/sdist.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/setopt.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/test.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/upload.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/command/upload_docs.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/config.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/dep_util.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/depends.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/dist.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/errors.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/extension.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/extern/__init__.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/extern/__pycache__/__init__.cpython-39.pyc create mode 100644 .venv/lib/python3.9/site-packages/setuptools/glob.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/installer.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/launch.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/monkey.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/msvc.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/namespaces.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/package_index.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/py34compat.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/sandbox.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/script (dev).tmpl create mode 100644 .venv/lib/python3.9/site-packages/setuptools/script.tmpl create mode 100644 .venv/lib/python3.9/site-packages/setuptools/unicode_utils.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/version.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/wheel.py create mode 100644 .venv/lib/python3.9/site-packages/setuptools/windows_support.py create mode 100644 .venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/INSTALLER create mode 100644 .venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/METADATA create mode 100644 .venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/RECORD create mode 100644 .venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/WHEEL create mode 100644 .venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.9/site-packages/typing_extensions.py create mode 120000 .venv/lib64 create mode 100644 .venv/pyvenv.cfg delete mode 100644 __pycache__/neft_inward_parser.cpython-39.pyc create mode 100644 __pycache__/upi_parser.cpython-39.pyc create mode 100644 db/__pycache__/__init__.cpython-39.pyc create mode 100644 db/__pycache__/models.cpython-39.pyc create mode 100644 db/__pycache__/oracle_connector.cpython-39.pyc create mode 100644 db/__pycache__/repository.cpython-39.pyc create mode 100644 logs/app.log create mode 100644 processors/__pycache__/__init__.cpython-39.pyc create mode 100644 processors/__pycache__/data_mapper.cpython-39.pyc create mode 100644 processors/__pycache__/file_processor.cpython-39.pyc create mode 100644 sftp/__pycache__/__init__.cpython-39.pyc create mode 100644 sftp/__pycache__/file_monitor.cpython-39.pyc create mode 100644 sftp/__pycache__/sftp_client.cpython-39.pyc diff --git a/.venv/bin/Activate.ps1 b/.venv/bin/Activate.ps1 new file mode 100644 index 0000000..9d3646a --- /dev/null +++ b/.venv/bin/Activate.ps1 @@ -0,0 +1,241 @@ +<# +.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 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 + } +} + +# 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..ab8d3f1 --- /dev/null +++ b/.venv/bin/activate @@ -0,0 +1,66 @@ +# 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 + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV=/home/ipkssupport/bishwajeet/upi_inward_file_based/.venv +export VIRTUAL_ENV + +_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 +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null +fi diff --git a/.venv/bin/activate.csh b/.venv/bin/activate.csh new file mode 100644 index 0000000..90e746f --- /dev/null +++ b/.venv/bin/activate.csh @@ -0,0 +1,25 @@ +# 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; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV /home/ipkssupport/bishwajeet/upi_inward_file_based/.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" +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..ba3f29d --- /dev/null +++ b/.venv/bin/activate.fish @@ -0,0 +1,64 @@ +# 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" + functions -e fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + + set -e VIRTUAL_ENV + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV /home/ipkssupport/bishwajeet/upi_inward_file_based/.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" +end diff --git a/.venv/bin/inv b/.venv/bin/inv new file mode 100755 index 0000000..3823d18 --- /dev/null +++ b/.venv/bin/inv @@ -0,0 +1,8 @@ +#!/home/ipkssupport/bishwajeet/upi_inward_file_based/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from invoke.main import program +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(program.run()) diff --git a/.venv/bin/invoke b/.venv/bin/invoke new file mode 100755 index 0000000..3823d18 --- /dev/null +++ b/.venv/bin/invoke @@ -0,0 +1,8 @@ +#!/home/ipkssupport/bishwajeet/upi_inward_file_based/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from invoke.main import program +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(program.run()) diff --git a/.venv/bin/pip b/.venv/bin/pip new file mode 100755 index 0000000..b3fae26 --- /dev/null +++ b/.venv/bin/pip @@ -0,0 +1,8 @@ +#!/home/ipkssupport/bishwajeet/upi_inward_file_based/.venv/bin/python3 +# -*- 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..b3fae26 --- /dev/null +++ b/.venv/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/ipkssupport/bishwajeet/upi_inward_file_based/.venv/bin/python3 +# -*- 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.9 b/.venv/bin/pip3.9 new file mode 100755 index 0000000..b3fae26 --- /dev/null +++ b/.venv/bin/pip3.9 @@ -0,0 +1,8 @@ +#!/home/ipkssupport/bishwajeet/upi_inward_file_based/.venv/bin/python3 +# -*- 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..b8a0adb --- /dev/null +++ b/.venv/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/.venv/bin/python3 b/.venv/bin/python3 new file mode 120000 index 0000000..ae65fda --- /dev/null +++ b/.venv/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/.venv/bin/python3.9 b/.venv/bin/python3.9 new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/.venv/bin/python3.9 @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/.venv/lib/python3.9/site-packages/__pycache__/typing_extensions.cpython-39.pyc b/.venv/lib/python3.9/site-packages/__pycache__/typing_extensions.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..86a38d0e3411dbb8b30bd6fc140ae15ecb76c932 GIT binary patch literal 117009 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


W+H6-pXGh1mbfiPp0m6Q) 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ⅆBJa>ey=VKJXpv{KOEy1H2#nt#&@* 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/_distutils_hack/__init__.py b/.venv/lib/python3.9/site-packages/_distutils_hack/__init__.py new file mode 100644 index 0000000..f707416 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/_distutils_hack/__init__.py @@ -0,0 +1,132 @@ +import sys +import os +import re +import importlib +import warnings + + +is_pypy = '__pypy__' in sys.builtin_module_names + + +warnings.filterwarnings('ignore', + r'.+ distutils\b.+ deprecated', + DeprecationWarning) + + +def warn_distutils_present(): + if 'distutils' not in sys.modules: + return + if is_pypy and sys.version_info < (3, 7): + # PyPy for 3.6 unconditionally imports distutils, so bypass the warning + # https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250 + return + warnings.warn( + "Distutils was imported before Setuptools, but importing Setuptools " + "also replaces the `distutils` module in `sys.modules`. This may lead " + "to undesirable behaviors or errors. To avoid these issues, avoid " + "using distutils directly, ensure that setuptools is installed in the " + "traditional way (e.g. not an editable install), and/or make sure " + "that setuptools is always imported before distutils.") + + +def clear_distutils(): + if 'distutils' not in sys.modules: + return + warnings.warn("Setuptools is replacing distutils.") + mods = [name for name in sys.modules if re.match(r'distutils\b', name)] + for name in mods: + del sys.modules[name] + + +def enabled(): + """ + Allow selection of distutils by environment variable. + """ + which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib') + return which == 'local' + + +def ensure_local_distutils(): + clear_distutils() + + # With the DistutilsMetaFinder in place, + # perform an import to cause distutils to be + # loaded from setuptools._distutils. Ref #2906. + add_shim() + importlib.import_module('distutils') + remove_shim() + + # check that submodules load as expected + core = importlib.import_module('distutils.core') + assert '_distutils' in core.__file__, core.__file__ + + +def do_override(): + """ + Ensure that the local copy of distutils is preferred over stdlib. + + See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401 + for more motivation. + """ + if enabled(): + warn_distutils_present() + ensure_local_distutils() + + +class DistutilsMetaFinder: + def find_spec(self, fullname, path, target=None): + if path is not None: + return + + method_name = 'spec_for_{fullname}'.format(**locals()) + method = getattr(self, method_name, lambda: None) + return method() + + def spec_for_distutils(self): + import importlib.abc + import importlib.util + + class DistutilsLoader(importlib.abc.Loader): + + def create_module(self, spec): + return importlib.import_module('setuptools._distutils') + + def exec_module(self, module): + pass + + return importlib.util.spec_from_loader('distutils', DistutilsLoader()) + + def spec_for_pip(self): + """ + Ensure stdlib distutils when running under pip. + See pypa/pip#8761 for rationale. + """ + if self.pip_imported_during_build(): + return + clear_distutils() + self.spec_for_distutils = lambda: None + + @staticmethod + def pip_imported_during_build(): + """ + Detect if pip is being imported in a build script. Ref #2355. + """ + import traceback + return any( + frame.f_globals['__file__'].endswith('setup.py') + for frame, line in traceback.walk_stack(None) + ) + + +DISTUTILS_FINDER = DistutilsMetaFinder() + + +def add_shim(): + sys.meta_path.insert(0, DISTUTILS_FINDER) + + +def remove_shim(): + try: + sys.meta_path.remove(DISTUTILS_FINDER) + except ValueError: + pass diff --git a/.venv/lib/python3.9/site-packages/_distutils_hack/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/_distutils_hack/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a9bbaeb27efeff9f72854ce2ffc6e656af878c9 GIT binary patch literal 5104 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 a)pohXt*@Pmx8^N+o_EGuUcKnrp7URX*9h_e literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/_distutils_hack/__pycache__/override.cpython-39.pyc b/.venv/lib/python3.9/site-packages/_distutils_hack/__pycache__/override.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8eba3a0e83357f39ad8789890ffe7d23f003f9e3 GIT binary patch literal 254 zcmZ8bF>1p=5WG_rY)tYEL!vEQ8BE9v(xh{z!a`;AEFhifQU%B`u0B6OaS+pP%} zS6mYoM#w_mQ` +License: Apache-2.0 +Project-URL: homepage, https://github.com/pyca/bcrypt/ +Classifier: Development Status :: 5 - Production/Stable +Classifier: License :: OSI Approved :: Apache Software 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.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 :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable +Requires-Python: >=3.8 +Description-Content-Type: text/x-rst +License-File: LICENSE +Provides-Extra: tests +Requires-Dist: pytest!=3.3.0,>=3.2.1; extra == "tests" +Provides-Extra: typecheck +Requires-Dist: mypy; extra == "typecheck" +Dynamic: license-file + +bcrypt +====== + +.. image:: https://img.shields.io/pypi/v/bcrypt.svg + :target: https://pypi.org/project/bcrypt/ + :alt: Latest Version + +.. image:: https://github.com/pyca/bcrypt/workflows/CI/badge.svg?branch=main + :target: https://github.com/pyca/bcrypt/actions?query=workflow%3ACI+branch%3Amain + +Acceptable password hashing for your software and your servers (but you should +really use argon2id or scrypt) + + +Installation +============ + +To install bcrypt, simply: + +.. code:: console + + $ pip install bcrypt + +Note that bcrypt should build very easily on Linux provided you have a C +compiler and a Rust compiler (the minimum supported Rust version is 1.56.0). + +For Debian and Ubuntu, the following command will ensure that the required dependencies are installed: + +.. code:: console + + $ sudo apt-get install build-essential cargo + +For Fedora and RHEL-derivatives, the following command will ensure that the required dependencies are installed: + +.. code:: console + + $ sudo yum install gcc cargo + +For Alpine, the following command will ensure that the required dependencies are installed: + +.. code:: console + + $ apk add --update musl-dev gcc cargo + + +Alternatives +============ + +While bcrypt remains an acceptable choice for password storage, depending on your specific use case you may also want to consider using scrypt (either via `standard library`_ or `cryptography`_) or argon2id via `argon2_cffi`_. + +Changelog +========= + +5.0.0 +----- + +* Bumped MSRV to 1.74. +* Added support for Python 3.14 and free-threaded Python 3.14. +* Added support for Windows on ARM. +* Passing ``hashpw`` a password longer than 72 bytes now raises a + ``ValueError``. Previously the password was silently truncated, following the + behavior of the original OpenBSD ``bcrypt`` implementation. + +4.3.0 +----- + +* Dropped support for Python 3.7. +* We now support free-threaded Python 3.13. +* We now support PyPy 3.11. +* We now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on + ``manylinux``, and for ARMv7l on ``manylinux``. + +4.2.1 +----- + +* Bump Rust dependency versions - this should resolve crashes on Python 3.13 + free-threaded builds. +* We no longer build ``manylinux`` wheels for PyPy 3.9. + +4.2.0 +----- + +* Bump Rust dependency versions +* Removed the ``BCRYPT_ALLOW_RUST_163`` environment variable. + +4.1.3 +----- + +* Bump Rust dependency versions + +4.1.2 +----- + +* Publish both ``py37`` and ``py39`` wheels. This should resolve some errors + relating to initializing a module multiple times per process. + +4.1.1 +----- + +* Fixed the type signature on the ``kdf`` method. +* Fixed packaging bug on Windows. +* Fixed incompatibility with passlib package detection assumptions. + +4.1.0 +----- + +* Dropped support for Python 3.6. +* Bumped MSRV to 1.64. (Note: Rust 1.63 can be used by setting the ``BCRYPT_ALLOW_RUST_163`` environment variable) + +4.0.1 +----- + +* We now build PyPy ``manylinux`` wheels. +* Fixed a bug where passing an invalid ``salt`` to ``checkpw`` could result in + a ``pyo3_runtime.PanicException``. It now correctly raises a ``ValueError``. + +4.0.0 +----- + +* ``bcrypt`` is now implemented in Rust. Users building from source will need + to have a Rust compiler available. Nothing will change for users downloading + wheels. +* We no longer ship ``manylinux2010`` wheels. Users should upgrade to the latest + ``pip`` to ensure this doesn’t cause issues downloading wheels on their + platform. We now ship ``manylinux_2_28`` wheels for users on new enough platforms. +* ``NUL`` bytes are now allowed in inputs. + + +3.2.2 +----- + +* Fixed packaging of ``py.typed`` files in wheels so that ``mypy`` works. + +3.2.1 +----- + +* Added support for compilation on z/OS +* The next release of ``bcrypt`` with be 4.0 and it will require Rust at + compile time, for users building from source. There will be no additional + requirement for users who are installing from wheels. Users on most + platforms will be able to obtain a wheel by making sure they have an up to + date ``pip``. The minimum supported Rust version will be 1.56.0. +* This will be the final release for which we ship ``manylinux2010`` wheels. + Going forward the minimum supported manylinux ABI for our wheels will be + ``manylinux2014``. The vast majority of users will continue to receive + ``manylinux`` wheels provided they have an up to date ``pip``. + + +3.2.0 +----- + +* Added typehints for library functions. +* Dropped support for Python versions less than 3.6 (2.7, 3.4, 3.5). +* Shipped ``abi3`` Windows wheels (requires pip >= 20). + +3.1.7 +----- + +* Set a ``setuptools`` lower bound for PEP517 wheel building. +* We no longer distribute 32-bit ``manylinux1`` wheels. Continuing to produce + them was a maintenance burden. + +3.1.6 +----- + +* Added support for compilation on Haiku. + +3.1.5 +----- + +* Added support for compilation on AIX. +* Dropped Python 2.6 and 3.3 support. +* Switched to using ``abi3`` wheels for Python 3. If you are not getting a + wheel on a compatible platform please upgrade your ``pip`` version. + +3.1.4 +----- + +* Fixed compilation with mingw and on illumos. + +3.1.3 +----- +* Fixed a compilation issue on Solaris. +* Added a warning when using too few rounds with ``kdf``. + +3.1.2 +----- +* Fixed a compile issue affecting big endian platforms. +* Fixed invalid escape sequence warnings on Python 3.6. +* Fixed building in non-UTF8 environments on Python 2. + +3.1.1 +----- +* Resolved a ``UserWarning`` when used with ``cffi`` 1.8.3. + +3.1.0 +----- +* Added support for ``checkpw``, a convenience method for verifying a password. +* Ensure that you get a ``$2y$`` hash when you input a ``$2y$`` salt. +* Fixed a regression where ``$2a`` hashes were vulnerable to a wraparound bug. +* Fixed compilation under Alpine Linux. + +3.0.0 +----- +* Switched the C backend to code obtained from the OpenBSD project rather than + openwall. +* Added support for ``bcrypt_pbkdf`` via the ``kdf`` function. + +2.0.0 +----- +* Added support for an adjustible prefix when calling ``gensalt``. +* Switched to CFFI 1.0+ + +Usage +----- + +Password Hashing +~~~~~~~~~~~~~~~~ + +Hashing and then later checking that a password matches the previous hashed +password is very simple: + +.. code:: pycon + + >>> import bcrypt + >>> password = b"super secret password" + >>> # Hash a password for the first time, with a randomly-generated salt + >>> hashed = bcrypt.hashpw(password, bcrypt.gensalt()) + >>> # Check that an unhashed password matches one that has previously been + >>> # hashed + >>> if bcrypt.checkpw(password, hashed): + ... print("It Matches!") + ... else: + ... print("It Does not Match :(") + +KDF +~~~ + +As of 3.0.0 ``bcrypt`` now offers a ``kdf`` function which does ``bcrypt_pbkdf``. +This KDF is used in OpenSSH's newer encrypted private key format. + +.. code:: pycon + + >>> import bcrypt + >>> key = bcrypt.kdf( + ... password=b'password', + ... salt=b'salt', + ... desired_key_bytes=32, + ... rounds=100) + + +Adjustable Work Factor +~~~~~~~~~~~~~~~~~~~~~~ +One of bcrypt's features is an adjustable logarithmic work factor. To adjust +the work factor merely pass the desired number of rounds to +``bcrypt.gensalt(rounds=12)`` which defaults to 12): + +.. code:: pycon + + >>> import bcrypt + >>> password = b"super secret password" + >>> # Hash a password for the first time, with a certain number of rounds + >>> hashed = bcrypt.hashpw(password, bcrypt.gensalt(14)) + >>> # Check that a unhashed password matches one that has previously been + >>> # hashed + >>> if bcrypt.checkpw(password, hashed): + ... print("It Matches!") + ... else: + ... print("It Does not Match :(") + + +Adjustable Prefix +~~~~~~~~~~~~~~~~~ + +Another one of bcrypt's features is an adjustable prefix to let you define what +libraries you'll remain compatible with. To adjust this, pass either ``2a`` or +``2b`` (the default) to ``bcrypt.gensalt(prefix=b"2b")`` as a bytes object. + +As of 3.0.0 the ``$2y$`` prefix is still supported in ``hashpw`` but deprecated. + +Maximum Password Length +~~~~~~~~~~~~~~~~~~~~~~~ + +The bcrypt algorithm only handles passwords up to 72 characters, any characters +beyond that are ignored. To work around this, a common approach is to hash a +password with a cryptographic hash (such as ``sha256``) and then base64 +encode it to prevent NULL byte problems before hashing the result with +``bcrypt``: + +.. code:: pycon + + >>> password = b"an incredibly long password" * 10 + >>> hashed = bcrypt.hashpw( + ... base64.b64encode(hashlib.sha256(password).digest()), + ... bcrypt.gensalt() + ... ) + +Compatibility +------------- + +This library should be compatible with py-bcrypt and it will run on Python +3.8+ (including free-threaded builds), and PyPy 3. + +Security +-------- + +``bcrypt`` follows the `same security policy as cryptography`_, if you +identify a vulnerability, we ask you to contact us privately. + +.. _`same security policy as cryptography`: https://cryptography.io/en/latest/security.html +.. _`standard library`: https://docs.python.org/3/library/hashlib.html#hashlib.scrypt +.. _`argon2_cffi`: https://argon2-cffi.readthedocs.io +.. _`cryptography`: https://cryptography.io/en/latest/hazmat/primitives/key-derivation-functions/#cryptography.hazmat.primitives.kdf.scrypt.Scrypt diff --git a/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/RECORD b/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/RECORD new file mode 100644 index 0000000..b86e0d2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/RECORD @@ -0,0 +1,11 @@ +bcrypt-5.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +bcrypt-5.0.0.dist-info/METADATA,sha256=yV1BfLlI6udlVy23eNbzDa62DSEbUrlWvlLBCI6UAdI,10524 +bcrypt-5.0.0.dist-info/RECORD,, +bcrypt-5.0.0.dist-info/WHEEL,sha256=WieEZvWpc0Erab6-NfTu9412g-GcE58js6gvBn3Q7B4,111 +bcrypt-5.0.0.dist-info/licenses/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850 +bcrypt-5.0.0.dist-info/top_level.txt,sha256=BkR_qBzDbSuycMzHWE1vzXrfYecAzUVmQs6G2CukqNI,7 +bcrypt/__init__.py,sha256=cv-NupIX6P7o6A4PK_F0ur6IZoDr3GnvyzFO9k16wKQ,1000 +bcrypt/__init__.pyi,sha256=ITUCB9mPVU8sKUbJQMDUH5YfQXZb1O55F9qvKZR_o8I,333 +bcrypt/__pycache__/__init__.cpython-39.pyc,, +bcrypt/_bcrypt.abi3.so,sha256=oFwJu4Gq44FqJDttx_oWpypfuUQ30BkCWzD2FhojdYw,631768 +bcrypt/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/WHEEL b/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/WHEEL new file mode 100644 index 0000000..eb203c1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.9.0) +Root-Is-Purelib: false +Tag: cp39-abi3-manylinux_2_34_x86_64 + diff --git a/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/licenses/LICENSE b/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..11069ed --- /dev/null +++ b/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/licenses/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/top_level.txt b/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/top_level.txt new file mode 100644 index 0000000..7f0b6e7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/bcrypt-5.0.0.dist-info/top_level.txt @@ -0,0 +1 @@ +bcrypt diff --git a/.venv/lib/python3.9/site-packages/bcrypt/__init__.py b/.venv/lib/python3.9/site-packages/bcrypt/__init__.py new file mode 100644 index 0000000..81a92fd --- /dev/null +++ b/.venv/lib/python3.9/site-packages/bcrypt/__init__.py @@ -0,0 +1,43 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ._bcrypt import ( + __author__, + __copyright__, + __email__, + __license__, + __summary__, + __title__, + __uri__, + checkpw, + gensalt, + hashpw, + kdf, +) +from ._bcrypt import ( + __version_ex__ as __version__, +) + +__all__ = [ + "__author__", + "__copyright__", + "__email__", + "__license__", + "__summary__", + "__title__", + "__uri__", + "__version__", + "checkpw", + "gensalt", + "hashpw", + "kdf", +] diff --git a/.venv/lib/python3.9/site-packages/bcrypt/__init__.pyi b/.venv/lib/python3.9/site-packages/bcrypt/__init__.pyi new file mode 100644 index 0000000..12e4a2e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/bcrypt/__init__.pyi @@ -0,0 +1,10 @@ +def gensalt(rounds: int = 12, prefix: bytes = b"2b") -> bytes: ... +def hashpw(password: bytes, salt: bytes) -> bytes: ... +def checkpw(password: bytes, hashed_password: bytes) -> bool: ... +def kdf( + password: bytes, + salt: bytes, + desired_key_bytes: int, + rounds: int, + ignore_few_rounds: bool = False, +) -> bytes: ... diff --git a/.venv/lib/python3.9/site-packages/bcrypt/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/bcrypt/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..86bb01e3af196527e6dfdbfa62b7498d9f41682c GIT binary patch literal 562 zcma)&zi!(w5XPxLwrtCC@){ay4h;$f2!cL9(WM)g11-@OZBZgf%8uTnPmryzq_s=) z3Yl^TBS3}>J%B&l9rzvYK3NnihVlG+d;FI$_Lqu}5o7TkpZ|fVSsk^^L?SY=h)p6A zlZw>L#LUda++-p%3$ZXuu{0~OGP%ej(!{7)iy~qNRwvJq*wpDSR?c1`99ibm3P28_ z=^emS093slojx=H%O!v^Qn#4q0IjZ6=he0FgE7*L*H1x*miigM;4~#wqpFj=OxXb? zvJKO`k-ou3a;o=bG;ILR%6Z*)pq>EAwWCWNTEJXNm=WfLjIcn^4(}pxOKOvOE+?!J zKg%1D!LD+n4gWFkvk|VKVH*S;BU?QE4|BKFB)n?g^hR-QPu>sK_Ac<9_RU2el?r^Y z8gzG&u7I9^lfVD~ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/bcrypt/_bcrypt.abi3.so b/.venv/lib/python3.9/site-packages/bcrypt/_bcrypt.abi3.so new file mode 100755 index 0000000000000000000000000000000000000000..4806fec6e5b4f0348f075a3294093d75464adc8e GIT binary patch literal 631768 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
yjbbR*Q7 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 R>gRv&r_Coee|q-p{|C~O$fy7S literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/bcrypt/py.typed b/.venv/lib/python3.9/site-packages/bcrypt/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/INSTALLER b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/METADATA b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/METADATA new file mode 100644 index 0000000..67508e5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/METADATA @@ -0,0 +1,68 @@ +Metadata-Version: 2.4 +Name: cffi +Version: 2.0.0 +Summary: Foreign Function Interface for Python calling C code. +Author: Armin Rigo, Maciej Fijalkowski +Maintainer: Matt Davis, Matt Clay, Matti Picus +License-Expression: MIT +Project-URL: Documentation, https://cffi.readthedocs.io/ +Project-URL: Changelog, https://cffi.readthedocs.io/en/latest/whatsnew.html +Project-URL: Downloads, https://github.com/python-cffi/cffi/releases +Project-URL: Contact, https://groups.google.com/forum/#!forum/python-cffi +Project-URL: Source Code, https://github.com/python-cffi/cffi +Project-URL: Issue Tracker, https://github.com/python-cffi/cffi/issues +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +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 :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta +Classifier: Programming Language :: Python :: Implementation :: CPython +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-File: LICENSE +License-File: AUTHORS +Requires-Dist: pycparser; implementation_name != "PyPy" +Dynamic: license-file + +[![GitHub Actions Status](https://github.com/python-cffi/cffi/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/python-cffi/cffi/actions/workflows/ci.yaml?query=branch%3Amain++) +[![PyPI version](https://img.shields.io/pypi/v/cffi.svg)](https://pypi.org/project/cffi) +[![Read the Docs](https://img.shields.io/badge/docs-latest-blue.svg)][Documentation] + + +CFFI +==== + +Foreign Function Interface for Python calling C code. + +Please see the [Documentation] or uncompiled in the `doc/` subdirectory. + +Download +-------- + +[Download page](https://github.com/python-cffi/cffi/releases) + +Source Code +----------- + +Source code is publicly available on +[GitHub](https://github.com/python-cffi/cffi). + +Contact +------- + +[Mailing list](https://groups.google.com/forum/#!forum/python-cffi) + +Testing/development tips +------------------------ + +After `git clone` or `wget && tar`, we will get a directory called `cffi` or `cffi-x.x.x`. we call it `repo-directory`. To run tests under CPython, run the following in the `repo-directory`: + + pip install pytest + pip install -e . # editable install of CFFI for local development + pytest src/c/ testing/ + +[Documentation]: http://cffi.readthedocs.org/ diff --git a/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/RECORD b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/RECORD new file mode 100644 index 0000000..25e5445 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/RECORD @@ -0,0 +1,49 @@ +_cffi_backend.cpython-39-x86_64-linux-gnu.so,sha256=9J_Iuv_0UXORJQsmFFKfZwHTQDTC313tRixPBAunqCU,339784 +cffi-2.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cffi-2.0.0.dist-info/METADATA,sha256=uYzn40F68Im8EtXHNBLZs7FoPM-OxzyYbDWsjJvhujk,2559 +cffi-2.0.0.dist-info/RECORD,, +cffi-2.0.0.dist-info/WHEEL,sha256=A4SdjgbIBZ_kjTsEuOcR8fCpVKV5dez8wjeT_kpjoQs,147 +cffi-2.0.0.dist-info/entry_points.txt,sha256=y6jTxnyeuLnL-XJcDv8uML3n6wyYiGRg8MTp_QGJ9Ho,75 +cffi-2.0.0.dist-info/licenses/AUTHORS,sha256=KmemC7-zN1nWfWRf8TG45ta8TK_CMtdR_Kw-2k0xTMg,208 +cffi-2.0.0.dist-info/licenses/LICENSE,sha256=W6JN3FcGf5JJrdZEw6_EGl1tw34jQz73Wdld83Cwr2M,1123 +cffi-2.0.0.dist-info/top_level.txt,sha256=rE7WR3rZfNKxWI9-jn6hsHCAl7MDkB-FmuQbxWjFehQ,19 +cffi/__init__.py,sha256=-ksBQ7MfDzVvbBlV_ftYBWAmEqfA86ljIzMxzaZeAlI,511 +cffi/__pycache__/__init__.cpython-39.pyc,, +cffi/__pycache__/_imp_emulation.cpython-39.pyc,, +cffi/__pycache__/_shimmed_dist_utils.cpython-39.pyc,, +cffi/__pycache__/api.cpython-39.pyc,, +cffi/__pycache__/backend_ctypes.cpython-39.pyc,, +cffi/__pycache__/cffi_opcode.cpython-39.pyc,, +cffi/__pycache__/commontypes.cpython-39.pyc,, +cffi/__pycache__/cparser.cpython-39.pyc,, +cffi/__pycache__/error.cpython-39.pyc,, +cffi/__pycache__/ffiplatform.cpython-39.pyc,, +cffi/__pycache__/lock.cpython-39.pyc,, +cffi/__pycache__/model.cpython-39.pyc,, +cffi/__pycache__/pkgconfig.cpython-39.pyc,, +cffi/__pycache__/recompiler.cpython-39.pyc,, +cffi/__pycache__/setuptools_ext.cpython-39.pyc,, +cffi/__pycache__/vengine_cpy.cpython-39.pyc,, +cffi/__pycache__/vengine_gen.cpython-39.pyc,, +cffi/__pycache__/verifier.cpython-39.pyc,, +cffi/_cffi_errors.h,sha256=zQXt7uR_m8gUW-fI2hJg0KoSkJFwXv8RGUkEDZ177dQ,3908 +cffi/_cffi_include.h,sha256=Exhmgm9qzHWzWivjfTe0D7Xp4rPUkVxdNuwGhMTMzbw,15055 +cffi/_embedding.h,sha256=Ai33FHblE7XSpHOCp8kPcWwN5_9BV14OvN0JVa6ITpw,18786 +cffi/_imp_emulation.py,sha256=RxREG8zAbI2RPGBww90u_5fi8sWdahpdipOoPzkp7C0,2960 +cffi/_shimmed_dist_utils.py,sha256=Bjj2wm8yZbvFvWEx5AEfmqaqZyZFhYfoyLLQHkXZuao,2230 +cffi/api.py,sha256=alBv6hZQkjpmZplBphdaRn2lPO9-CORs_M7ixabvZWI,42169 +cffi/backend_ctypes.py,sha256=h5ZIzLc6BFVXnGyc9xPqZWUS7qGy7yFSDqXe68Sa8z4,42454 +cffi/cffi_opcode.py,sha256=JDV5l0R0_OadBX_uE7xPPTYtMdmpp8I9UYd6av7aiDU,5731 +cffi/commontypes.py,sha256=7N6zPtCFlvxXMWhHV08psUjdYIK2XgsN3yo5dgua_v4,2805 +cffi/cparser.py,sha256=QUTfmlL-aO-MYR8bFGlvAUHc36OQr7XYLe0WLkGFjRo,44790 +cffi/error.py,sha256=v6xTiS4U0kvDcy4h_BDRo5v39ZQuj-IMRYLv5ETddZs,877 +cffi/ffiplatform.py,sha256=avxFjdikYGJoEtmJO7ewVmwG_VEVl6EZ_WaNhZYCqv4,3584 +cffi/lock.py,sha256=l9TTdwMIMpi6jDkJGnQgE9cvTIR7CAntIJr8EGHt3pY,747 +cffi/model.py,sha256=W30UFQZE73jL5Mx5N81YT77us2W2iJjTm0XYfnwz1cg,21797 +cffi/parse_c_type.h,sha256=OdwQfwM9ktq6vlCB43exFQmxDBtj2MBNdK8LYl15tjw,5976 +cffi/pkgconfig.py,sha256=LP1w7vmWvmKwyqLaU1Z243FOWGNQMrgMUZrvgFuOlco,4374 +cffi/recompiler.py,sha256=78J6lMEEOygXNmjN9-fOFFO3j7eW-iFxSrxfvQb54bY,65509 +cffi/setuptools_ext.py,sha256=0rCwBJ1W7FHWtiMKfNXsSST88V8UXrui5oeXFlDNLG8,9411 +cffi/vengine_cpy.py,sha256=oyQKD23kpE0aChUKA8Jg0e723foPiYzLYEdb-J0MiNs,43881 +cffi/vengine_gen.py,sha256=DUlEIrDiVin1Pnhn1sfoamnS5NLqfJcOdhRoeSNeJRg,26939 +cffi/verifier.py,sha256=oX8jpaohg2Qm3aHcznidAdvrVm5N4sQYG0a3Eo5mIl4,11182 diff --git a/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/WHEEL b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/WHEEL new file mode 100644 index 0000000..fb8eff6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.9.0) +Root-Is-Purelib: false +Tag: cp39-cp39-manylinux_2_17_x86_64 +Tag: cp39-cp39-manylinux2014_x86_64 + diff --git a/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/entry_points.txt b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/entry_points.txt new file mode 100644 index 0000000..4b0274f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[distutils.setup_keywords] +cffi_modules = cffi.setuptools_ext:cffi_modules diff --git a/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS new file mode 100644 index 0000000..370a25d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS @@ -0,0 +1,8 @@ +This package has been mostly done by Armin Rigo with help from +Maciej Fijałkowski. The idea is heavily based (although not directly +copied) from LuaJIT ffi by Mike Pall. + + +Other contributors: + + Google Inc. diff --git a/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..0a1dbfb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE @@ -0,0 +1,23 @@ + +Except when otherwise stated (look for LICENSE files in directories or +information at the beginning of each file) all software and +documentation is licensed as follows: + + MIT No Attribution + + 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. + + 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.9/site-packages/cffi-2.0.0.dist-info/top_level.txt b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/top_level.txt new file mode 100644 index 0000000..f645779 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi-2.0.0.dist-info/top_level.txt @@ -0,0 +1,2 @@ +_cffi_backend +cffi diff --git a/.venv/lib/python3.9/site-packages/cffi/__init__.py b/.venv/lib/python3.9/site-packages/cffi/__init__.py new file mode 100644 index 0000000..c99ec3d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/__init__.py @@ -0,0 +1,14 @@ +__all__ = ['FFI', 'VerificationError', 'VerificationMissing', 'CDefError', + 'FFIError'] + +from .api import FFI +from .error import CDefError, FFIError, VerificationError, VerificationMissing +from .error import PkgConfigError + +__version__ = "2.0.0" +__version_info__ = (2, 0, 0) + +# The verifier module file names are based on the CRC32 of a string that +# contains the following version number. It may be older than __version__ +# if nothing is clearly incompatible. +__version_verifier_modules__ = "0.8.6" diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d978cfd458a4c4d1171d609da3e3cd13dc706884 GIT binary patch literal 534 zcmZutJ8s-C5G5sXrM1`jAWaHiK!wGHZ5Rm<1Oc2FaSn7dL}ZAnV71H*i)(4SJ^j`Pjlwui;GMD^1HUC zG)p;{uKi?fXZ@?Er7y-g(^h_Z{!y0?{S0|yv_rilr*=FNn_y;HfS}pNW79wTx~|T< zwlvkqxnsx0yqM?lE)4C^iJcPIJ?ScJ_V3<4d7$hoAGkbbWrxc7i@}TzYnn0 z*5L|Bd-0fC~py4&XPj&x48pe=EM~8qH0=c5c)6ogMhXxYdok z)_UNZ-hgRuq*YLwTEjv*t$4B3?UvVOadyi4+hNtUC&gRt%%G2Yxm?RiJH9MS!vV== c04VxfpS^n!@IHK=n;~TJjJ~F`D4_|v2L}a^L;wH) literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/_imp_emulation.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/_imp_emulation.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c8e874b182ad16a4804e4a31234e6a0f1026488 GIT binary patch literal 2557 zcmbUjU2hx5ad+={Jd&qx*|ME9V2}h3gI07CH$V!*Xf08(5StW88IBGy4oB`%I{7}R zy`>YX$D)Yz8pHwe7z9?47x$^ZXJ7l|y!I_G&diaN4F`Ggo_4e|J2Sg8J0JAt=E?-d z+4t**k1K@y50RIL4anbMrvC+S>~O+qNOsA668~rtK}Y|g1V5m&kVS@TM5b#-1-B4c zu9ee`uo&5{ov+QX6qVg_zAl6nw*qp7&~Z_3A)IsPIC1B>p?0JQg`ZBba*%r6VGyby)+Jc?WpXTHkSqYV&tXxD{N6zj3pr{& zqoDN}Ltr2<5fl(u2#N^ManDKsdN9uivZLGv%=88TPB}XziX75Saze+18&jO+IOXOP zH*%b1B%^C2V`~J=D>Qp}li5JUc#96q^df+Ll931VW13M8NA!*F*pb;GPpM|I3l>#2 zyvFCdjb>-N)qKh{Tfe4h`jp5^Ao@#GKS&}`4+am@bT}9!Qq{Xbdhn%xD1@pH2Z0yF zU;2`J{U8)x7aYm!>yJeIs2&F0kFVDUBXy9(AFY2!AO^Hgh8r$Ni?|mHeMfHYEkz5xVkTtmkvSdE0M0>fT#1r^d>B3?62bj zFrG?$)15u9)4JE*Xvhn2U~c&YTt@T?fOla2A0~O7bL27zqNm}Ujn>_r?K_Rl-#zJF z;FW(s0aIf1=;ia*@jCamwzfZSbo9dHx-SSzxAt}$8?DX8IjLsoviM4gI0fIP+Den5 z>m96H`T)7A}?GfeaNQ=H^(No zGINcL3sXKLD*&IBV@sKJM&(bOWN<2+yNvo76gQk5a`cm0IU%6s!!L}nIWCTE$VJpu zIzO}Yimsn2c}$P0M?W8(=Bw*Rr)m|X2rquaz6N{8Wo~E1NAxk3|5O(;i?#a!gpd&5-UU(_lga0U-6|*uge`Aa*Sp_f?@Tuo& zmFDrAS7SdCSF6!5Rn@Mj`qfm)KUU*JRsS(Qe(&nQR|hY4n@KFHi3Bc8vl*Kv#|Gr8 z#G0dR4+=n_JP*R#MBSQpB*K^E;an zywt?s~iW6a=h4$nONd3T9iA0Q(pvuOq-d?mC^u-`g9vy+*s; zYRfl~{uY8&+{F6dZcIDPCrJJf!AH2akoSho#%$lUx9{$Fw_B~x@;J?3CO70I%X1%K ki_-RuNi5vN>YQTSFnCy}aLE7&4-X$a^KU+87t6I@0VM-y!2kdN literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f69a47cf4334464adbb024bb9c95399feec63564 GIT binary patch literal 1747 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 U!lSZX$W4B8Ci(9U1Pyxs4`($6k^lez literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/backend_ctypes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/backend_ctypes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eaa157cddfe9151038d7eb3c8a3eaaa8def49e2e GIT binary patch literal 39975 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/cffi_opcode.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/cffi_opcode.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..adb1ae44a6b9f0482d539b689d2731d139b16b02 GIT binary patch literal 4785 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 lOEs{$)KmR6gq(Pl0^mOa)jDOk`s6j}ax+iLGbf zQ_ulmoTewG00KCfQfs>E!(Z}<6R0(<0l0MwYK%z3`8aj0g@XFKs1|C=1}*|4)E61! zD8NmGKB%h6ghd3gc9V1~Of=_f5LzQksFqOERBj@@m}Nv{y!vQ|E6>EbV!!2R?K7IL$&uNO9xg!=TZ}8mC$yc|`Vs^dy#*fer+EkObUfJD|9uF^YQM zLsRI`LN+bKK96-A4?DE)mI`=R0|3S}hpKpzIO!OrC;0g5Hww zlB^9whYk}t^y>*&6r!Hrr{5SWK=VK8DuLG5b9k>@Ja))m4o0Bo#@JEo?dIIRMGH{Y zQv2agnui|TR9`?kMv^<-&EFuT{X#pxu>*II^5w)#zHNafqtxR@10I?yU%>Ac92NTA ze%MK-*9YMB$tMQ*gg8J9tq->QH^$mH9!p_m2=(%2OS2G|}7Y7{v@Zj>j~-)G!Z{|y(o zK*(9g(3UffHaH|tK+?&fv8et#OJw3>kWeuGB_IC=ga5(ceDCeI<2JO3s)Pr(cAhxw zo^a;Nu4da*5>3LXbW(kp&;2HY-$HN+$9hw6hlM9bYr69Y7(W`;2YTU4P7Kh_{uE3|Px|l(R!xLA!zUkis&hr1D4HL+Acf_;fH=)d8E-=93ud!7h+Q$ zHLz{z6Lk0TCN5wa(7yk3WZPeN8@s^Lif8l(pm72l=>woRR-vo)lT@ogx34e z`WM_tZ!5<{@^1epq3=D1*6DQSf32Mk25UpCL46H0IgPV6RJXucO!F&RTk%Fnabc|n z?{FB0s%KEUye-1I`dQL>@5dfD z*C7^#RzHk;6s2&^5BdjzWwMR#nrAe%6bX-lLhEt(3^}xHM(Rk>Hj9FLY8u39~zB#4_AXPT_psY+tHGPX;P6*7_>4L4N1=HX87A)5w@_))kB={4=iZBR9zVn4Kp@3l;a8Q&jBnFDI ziu!#9e0NQEKg*a|g>;g@Xvsn#b23-y9Bc(}!j=_@)K3xNl#v$Cra`^pddJmBy zap?$pHOB>n?LI5?0MOd@sO) zM>7a1?wBL+eG)amD<8lJ;0mcYKvbjWExr%4NjR7W&`z^vkR@nj-4w{%&jhIrdI(~y zTw~LQ5b!K==)3<#)GV$cG)Fnn3)9^PN{d<_3^3`&032NUwv-+q z%Xka4$>UG`bd}kp7J5?GCh2%GE(2Y2zMayHpq-{au79qbh99o>`;`<`bNi8J32d*i zR%oD+19uv!8$ORR(tz*MW3=&dJB>AA)rO<@|6#dLgJkQz{Vd*PupKcVko+8>IDUEj z`uQAKSqR7vxL+F$#%kj=t(Cv)4sA>@t+opqIE)I~x{Ds|Mjyod3K8Hf{fJ2}dl(#OVIVtI)j zL=5_Wq#bIb|BGgDm^q_{h*aN1kKn)sVT(QbCgy=X`X=UatS$c8dWF>92QxIj?}J*V zP-YrH{tyI)bcvw9fWC;&HfNpt(T}mM|E_8f%nWO)~C7wbLmcb1qYpJxzgOYu!G|XxD4< z+Y6UONNF8p7gu>K+!0U5`Dy?!mpVLw#Mu#Vb#h9)424w}W|WVI!wilZXg@{4!^=q1 z$o`9rkpLERTBSnJUd)PGg;8NkIGQlOTE(X__=eidkP=g_ug>xLpJOn~;0|jV5T#2A zLn0n9VUh#yg9X)H!OxoNZewu5+e8=;2G?I&Dqr`=4(RC>rtzA7wdJY5LIYaz=<)y) zwjZXW!dkB2cUq)LVje%tq4B5=N!2i4#GHT~7r#sxaP*N1SKUBjVOR?jHdl#e$TE6w z^CffoCHX>OKhP2;5(g`U!+wbsiox3~sR8su?O=cd1cn-8@E8jWAy!N-up`^K3&owc z$z3=oM%Dsvfx$HgG|qEn@F1tpIi&?~TgVOci`G9%4#f754)Co7@?1-Ju9gx|7Tg#9 zJMj8pjqo3pzZ|(Z3?WQGJIJG4L1PLvTjOj6HB#b;<%v0G^)OP9h zyWKYRE=EpfE{yOrB3q0c(g3`YyI6&2$Nfj}p`Ay7)VFEQOJGJI4{%@~1wGi>?a^vz zJ%Chf%IH?y*kJDBM?TJq%i*PN7*Oo*Q7mc$S`Ov$i4mDwS>+>`y2xQj3zS?D+b3}l zg|6WZdmsYTf}`<3buaLqp-G{(4o0w0MLaZA34)V=<3hQ`Ap+0e1>P?{{M$k+)U?zJThy)u8~Io>pBFj^mSXkg{N^k z2D;sh94sb>e?y*ysxW1I95rn#fuqOjEhzzew=SWPOn}p7z#y^X_;=~vyZyo)r*Ss` z_tWSu>Vdep`g^0hp-#y(N)GG00Cl<}Ja~_H>S>`fYOw8N)Tpl>5cL@222_z|4VN$X+bwBCN_&`2O}sq6N76rqv`!A6>eRJY^55Vyr{lWzN!sU`b|y~S zFKJ(9+7ofw1Ckap?Ws7;k+g3x?Mb9zJfIHT8V}jtlXL2ya+7gigyv&Kd-a9-)2hv+ zzr_HX%~1b=!7n1XGlT%nYxAug)dn~f99Uy56?pw!b4nX2sjav}Y2vPV<<2{h-|m_Z zYA1n_E)Qg_3M^gH`oT-0W9wF~O}z-Fdvz-M1Wd<+K+)nxSO6mpXguV2XwMw2bfQ0S z>}ea&Btr$`UGvyo^Ki>Lb*g2ZK7H4G-(9nP*LcGW*;K)Z=nNq(9!;f%k;7^xAgdr-=KmAC(f0lBdH zw+#Lx1L2C|N;!;q(5|h2%?t`?#mrOH$a%o7dkgs5m!g++m;y<4t2gj1A~C%DG0Tgd z?gC>xpr~dTY?Hj$bdzNDHAD<(u2SY+@FjkX3)(I4D(b%IC_q;M>W39=V-+>dwH|V8Kb*x-M1(jjP?+BE;n>v^S$GUP-DHD z$FOM8fiS}GN!pH)j*|sEopXew5(groJriS@*22h==jcSXtI#Zm=DbSZXV4x*+Ang@ zxPAC}pS}2P9Yd3e=;+CuueWsep9?+PQY7)CbX0QgOgpr)DrpsX2W*TptXVRaD4_eMGSQ=s;8X z@+}%cw4K8S+U-S_^ILdxz0M~X`vL=EN)47X=TVQ~W5EJhy@n^4-_L-lY8F8;#}+hL zF81R~F!-iXbT8_AjUTqH@jg8GtDLSGw5q?x6eBfaG+FCdiyDy;^N9x8Z0(Gp#Wu9w zV=CtoNaH6{s}KRLg?4R|)A$th0n`b==T2OUY1^G#;mLd~Krw;QQv^mKmj?74IG(u1 z(f|l=I1CTU(kiTL8%0eis7~?0Ip_gI24BIE6iiNLt~I*9@^URKZqL+IR3=f z8@h4olO6Fl2CO3>!Ctc@^=S++l|6=fLOc|po#q)Ulocy*RMwWVw>o9(bXcryl}+sc(Fy*?^dSL@gE%@>>}HJ7!Qs|er=X-n zMeokMi*JelNym^SOi;G~Ri%i76#euD%Xgp8&@*)tnZ=P8^tp|T+K-uAus9T@UEs$= zWmA%LsSXE=pW&+Rc zP^_!)h*sW+a;1-7h;cJaLNNqmh)f%CmLg%+=bifSiG&C*}>Bm=2@Zq(ML+!Wx{-8AwLi-E(%~Bws{Zc zHQ|IiUttUK#p^kMUG4$)EOr4??gREM_5jy-9dO-Z3b?_WfSVTky!DQ(UWy^}ndJal zhi%$m1nD`P^jz-1-Gz9sYHV-sY-ye8ipEJIyXay}MPtEO)naU%@iN8p5@VmsD4jn! zBDx0otog~qVKx?_%y*3`^E}f<*q3IwAB}`4!ZMdks{KfFmPp9dkBs19XHTfTFqQo$ zkHh@17-s5G=UHfEA=dIJ-i-#rgji1~u(nQqsF8?^M9?%Gi_fveXX_Yr3(Q%z*xR1R zDX{jd=H@GrSlSw2i81-f^5K9wZo)P_Fq8XJG6J1$lbJJhM$X8cx%TeOJnl~2sh7An z$c%m@>K-KpE&QUEc!%2#!Hat{`iUs_A?P`!Hj{sw;2Tg$t$U0=J*lsl=PUeqP>~5; zF)QX6oMg3L(MS(W&yTZA^NM2sDw;|qsw*2sp=G};#9X}Q`@{VAv9+VPIIwPDN{vX9 z-cnp@EmXm{h|{WpiBQO@j>%Lxu4=g!i9GnDs;)x?Rh=p3Uu=@4IsumxG6{V>QL zG?G@!AB2{PjH5zk%CeuV1sf_5I6#4pB#d3KKNKq1TL=u2NT#M0z_OFjJ^H(N>;cbW z#x5jq6AD^hAmD2B{1<_1iv-?CW272P(u*lb6=&l-6@>^upE52=Eldz;5#*6UqEZ!^ zWfgOgJP2S=0+pR*K8#Gz7tjx$DY4K2jsKks$=-nnDCLP-o<`4qk-hSEcd(hML=NUs zJw3-W0oBIyE(G(BkO5XfzB^cp?Ti0Z@?9wK-a^T)Mo)LORyDT{Vv*yp*iVTaJS(0h bWy3CNLe+RNujVCwI1CPO+iNei{dVmawNOy9 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/ffiplatform.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/ffiplatform.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a310a93f7f05c6834d8815e274abe7883450f49f GIT binary patch literal 3324 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 Ln3wQfHn0CLYARot literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/vengine_cpy.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/vengine_cpy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..270e9b04396788a8bd7d4ab175e5b25055a46bab GIT binary patch literal 35978 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 Vl)Y>q)SGWdQxo5k=>I$Le*r>G7h?bb literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/vengine_gen.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/vengine_gen.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef686a9a486b6fd3fad1eea37506c71e99e16551 GIT binary patch literal 21288 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

dD_{4AM3= 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�XrFB1X=}wi2Gb!$2fb8*+(e8Sv7Q`80f({R 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%0D85S=FGV&voV9sIRzuAT(rvIf&&EE_bCk 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

Akm*;1TrGmP$bGAkaYthoL_5CMa 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

2AxWl}q*K1>Vl@Gy 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%0AZx^Ft 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

0$S@q`;HyecB@;!9SZ1Y{(E0(t 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

B5# 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%0AB+DegXhA2LNmb02BiN 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 z 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

~v3GSfHde=r=S-Jp7t{s*1^CeF|^ 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

}uTWJk5A#gLnhO*L4fKKkG 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%0A)NHaQ@$^ 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 |8=pvG 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®@F+RC#!IUch)bp_Ayu2Pa*CqDagLF%YQA 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

y+2$Ck0u?tc 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�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

iX5OTfu84UR`6^#dohjE!(wLn|gR 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�C?nMH$t-fF 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�iuc-=*HE;lf9B+}K2APvwRtbs`ba6(wq<)2*{|BTSd}L* ze0TJwZoYiXm#jV{%U&QE`v8B14zMA~_?hclrO&&@PncEHou zp_*o=DVb~-z#3owyYw3GeO-Euzp~KQcm>PBTjN!bGa9N73SPneNmzu>7`-UXp{P!C z1XDuwZP%u&oaL&lN>};GeD!}!?69U}SE+Qagq_l0j$&LQ#$O$&!Ekc=*=Yq3OtUq< zM2C~Xl1I{O#`7oO#H-3~=arpDSqmZ{N7UP>I94#W&E~97dmT!mrTp*sJ)A-2;?w$5 zwAD{T_!F3#f~|Q+Go3>MB8oC zK8oGiDXBtg-)nb_U9O34D`a_aHQVvAettA3WW9^53)$E> z5qRUgG%%>s>F=;2o?PUd2fXm_yVNYw_T{3!pHsvyu37G0rf}0g0dyeL@9%VvTXxP5 zro+acTdBbA9k)`{=y=V14GLF_D2iV@Cwt=`{(ls2{+|y*Sbt8u`J1oTlKiMHHnS)( zPg9y3Z~oJVv!=(L2T7mLK2atP&tUln8uxWVEi$))s=4R0pSoNN;9$_)cNmC2$GlQ3 z{_rSKg=JLYp_ct*+ec?o&~I*Ua&}@L-O6jZbNgtJLSV_J=f_H|V}E32ZpJ?P_5&)} z9^c8j`*FORbyxLeb{F_<$Z|pG#6EciHTlaS+n%~TwTW~*UI*!rX;F(0^T7y8`1aIp z*)2Nzs_t8J5I+o-4hYYGuP zEKaXC@xCF`Vt1i{6xW3f+rx@o$;_Fg`saJS15=5os3q!Cdtu!LT_rHou)k&9RO#++naXG%Kg%Oa<4fM#&hBcMmg~k!S|`ZfL4d{I>cUor`P?}PEX`~awoP= z1_$ubHt;rm_$z#iK9C15s>k>whwR{Ab0F^F4-k*jHO`}lB+syrX=Sd|D3HMJ&Jd72AU62t6UY{Q~fPmupPM*`z3>W=j7kr&#&X`Sk9`95Wb}WNGlZAKFhCwfOsA>AXE5Zpt zoLsXA-X1yRJ|RXvF)>O)1lCWkoL0puuI1do>}8r?e<8UCgS)C%_5yj> zn-`(tWmLJD^?vh~ovrsjQ$VN}9-czAFa_t*c2*82bu><8BSSNOSa zX1#Z(q`%(Jy;$IX@opfd^&YX;KkC(A@2fQztoIr|+InB553KhJeQ@jj89oWfWlTaA zh0R^>Sl?Lh-+|rbJvv+O2U3B6{%UO+=tpP)X}zDQ2am{3e8dC#U%tp*?>l-cnSJG( znk2yY{U{RCu;bj7y{Lc7yDe%FN*3uug|?{WnW=U9<7>1OcxmZvvPK8IGGLvzPJia= z)TU4!;LzIjhUn;T<)EHkhkdmU-F@a+YjHO~m$eqFJ70@`$0NQYM%|gq@uE8^tVrM! z8;$GUH6cl1u4^k0n(Pd05i? zSr(SeJYsaL^icVH_o>Sx2y@voF_X)}Q44>-;d8i%jyveDqiW{@$w+h!I+5`yl6EC{ z*KwKJYOVT{de|B~7+@{hjZewor?47{sU-EDC3v1iU0As!?p`UB0}Pm>*m^JW-;%*o zc(fRxBBaw>Df{$HmEA^V2_d)m_7waMC2Inm!u{SSv;af-Bq-iN?u->U25EYZEL^QY zh!Yh1fM+Ca<3CPO@@4pcuqCs})JC7L zmR1lggD|xGKN^KdD32JnwvCMe2KF$%kOyxSP0;jBvk&k!#C3K%lRoHK8^aS)y4X;Cspi+3UZV&8(Tjw8>N1JvFYH-YLR3&N&+!lJD50f7jONmEDaYaE#;?d5 zL{{^K);fSn@%^S!T)f$;A1$@JIa;4AZDWB*-&DQO_1|4JL4CJrnGgbA>71Wi$#1yn z`@Dt;DqX~+Le{Bj{Y0pVP|Dj%Yk+;|B?dXu#k8q68hoVJF0ZH=)JUv6!NTKn7xaxJ+I zU0U?O)hlXOdu`UPrp?uUo2#wOP!iVItDklzP)}gqy`|$-A0yfz!p_z%2;=}~pIgl) zUSHUFd8w}A$Pd|>YuubTt}B4azmaF%-jV1rS0fTPW!fBl*NcW`d13Sj?x<^OE4K7a z5ulTwM|DJE=N8MOq4_8ZBGnd!i8lz1NDK_@TC1v>ON-R33xZf1?GHnFngu}AO%lZ< zaR|Dou5x{#StqK7#rEfPNnuUvuos&)^f@24u2)?i#A0IpY~r6K*KiHRJ(S7Q2}~6Z z4ZgRukl#S_^-NV_ZcWpFx&@l$=gCt+!!+{W)oK2gQ(4`KNu>Wt=^nJIH>tPf5am0R ze0O$U&yGsph4ec*Pyfa=%}-h{vFBqw=)f4K`!w$Eyuh=hCSLUKLyaAv8PiGgy1ak+ zvxP9DWn2!x8jk3wRtvycv5Yx@O8nab!r;Noj)Dl}7ZRMA^K%y!7JEolK{kS|H3K67 ze>o@6KO)LBR!(`!GTWi1RnWg){kmkpT^FeiFLa^wYGP+spy4VJny50ZfD(QKE$0CX z;iuk`!E$V}9TWK!#tS7J8)dF&AfGYQ3a*N97E<NyRFw1r+tPHEquwOK>cFEguls!xy`?0 zgm%zg9DxD>US7IN_)WvySUU@X$Q!}Kmqzk7gm%-Nz>zcKgG}ZdSvju%s)il8)|dc2 zE5#MDY23|bA(7@y)_d#Fvl;!;fIdJJ=}`Z7@>%&l}Edl9I~VJ ztGU5sWTFKHd|=LL!!WEi1V&TR9m@SD2(S7*0K>=N4T z-*z{1e?|1ym}gOjmDm=_i?b5B&$nkjcDm>mR>v6bBmQdGoc{U4=1l2R#4>Gs7h~SD zp?;TJTe`@*uC+f~T|_syMeZ-bdEpJ>;Df18t-^Vp1tWAeMZESK|V;OKRTmd8_+kI(U+`_|Jp$B@drBp z|6rhNJN|{k>;hqCDDTBA+!R$7p`M^)G4K6gmOZs`|8N#Lb|&8Q0+w@<-X{HO+W?IN z}n31+I)@U#wUxTg{7Rq?1_h&=Dj!S9ZVA^5sHn6b-1at(N@k>Fb~mY zn$QU8VY1e?9!yfw!wmbP?O*Q75($(yQu#HpGsSH10-eK5no44^&ro&v1}|O%?*yqb z(om$I{CtnZsrhi_KhHY>4z~dNyfb|u`l2C)?cyG>KS(H+M>OnIFZKHbbP0%A$WrhT`1-%W$%y&`jUH*#v!fK5Tt`37Z zq5=&?sB*4-6Aju5fVEOENeG*8)FD z`^fctMVflrqXxCl+ph3D^YDC$+OZ%{u0xT^4d+dkSt!DV19A}=-CFvz3*T!d@ksPt z&L>`%;`k8GNOR|X_fX~Yf$NB5U*Cr)04QxRe{=2ytnS!T z-Nvn@AMwwx`7`8vyjgrAb_$Ced^V(t`r1ivB^Ci=BVS>4{KWV{iv?d<(=4?K{ z`lr!L$_ZiNxK+QcY^43?nVXC;rvpiDw7t{_;!gmNkd7AUf^m{AD&D@(jJruv1*_8WcDqOBPst3gBL z3LdhMR3B1Esu%nrF|w;SdQ-0l@%s~yw3=)}((@gXmU>9qKLbfol6EA6mom-%Lf;#~ zIE`ubM##Gy}rQVZazhXk3d%KDR+IXd@Ao1;$aJc2quw>qmksq@#H*14Cfb82p# zi2_$12nnf$eQWu(85TO)46orqo0hmXov|5XBvf}0p^p0wbA8SLDwIz;1x&no<|s{f zO)u3Tv0YDjcIk^(#R9*I@Zt~h4_}dAQe(aCbqX_iL^M*Oiz&JqN!8@37s+7V?}fEX zXTRU2TACQA>k75zKQo8qmbVv(@P-1lD>>TLvzkUfs%d2GT&~kJFC$w)WZqheI1DQD?hK+?!Ar{S=T%>({0JV3fRpW{!2F%Z6LWm9CAx zE()`_dfoDhK+6g_(KdZk5olV+lg_g-&eKxkJjQPslJ1RDb+h8_mJ2ootlE?j1)QM` zpL@5szjGL|3j)Iy>#Ji6T&zaBZbdY&QCW4L6&W0#009LgLL<=!5jzo}ly0!Kpl+J5 z+M|W7u0CnGL=*MhXkzQYk@w2M4ZWpmX+>-&nK*fxbjXLknqJa=?=+%Bpuj-j(rw9S z@cJ_kx`i$|v~kFxh(1@-Rkl82`!#&VmVOT!G&%Ej{7&scdyUY-JAqccZ^cB z4!rO22dz6s&FPME5m)zjt~*AbVJ1Z1iGLZ(cI|(gcjG|*A!q?9H&n@N$UiD8G0dbD zWF+m@M5N#%RhnReYD)M4GBxE)$b*w*tEs72QBw^%keX+ifJmGNL1Znza!1Fzg21n_ zvMnxW?+s@9drGmPU|1MKXW?G4HXJ)F)4Sr;1VJ9TCz^WXVzF(ei$yZ{xW@d)&;yK@UgNDN)%~w@w4L#STi;Fu-0xeAx zh2}$6(A1KUp*jPOfH$FVg(Og zD_2dNi(5{m6%g}Jd}th$*RW&F@-4LfQpX`UK>1NJ*cf%2>nEy#6(B5?P7ki=2&v`h zI$ywi-9B|($(+N>Lo29QnH;VKTIM3wblk!pbxc4=26tz|k%aXE=(_M@pwcSj0gZxt zxZ3zB#m3#h2c319Kw|*&YKxo3gNq?+;1!%x?1IQ%Mo-PFWjr4O+Z=B0E+O|^V$F(D zXatOjQLNCt0$n_41e%X!lI^4yY@9*l>^bnIL-{&i`84&@HNY+iY0=lYpd-1w>7#C; z_5Wl#6FX-4YunXM$>o9OUZ^~pD)SpYUy-*jbtFEDcFK@b_B)?&QsEUd-T~LwV@N#0$tooI&;ms8_MJ`84e*J38_oo##71quliKhie zkJ^R*M;F#CA6Ast(e^?1k(|#jVSI`=h2ibBj>nj_UQH9thr9GN)&~1mckhgI1jehQ z+2uU^6XgtckaN)E#hpLR|WJYBPu8pvE=PJJ{ z=&c9Q#Ec3ODBN88P9{#2S*euN8)$yVYj%c}N|EYSEh6*Ix);Cj4d>MU^&Z18d8-Ci z;5`&boY`@)Hw=a4r!$?u3{`bec@B8vS!@8W|pNL1-gEZuPxgsBfiIBu% z0R}2r!mn?)KZ3|+x^NHvE4V9UJkS%L9j#k z{zRIc%~V{X23f9_5cc#A{$kgFw&`PD!|9RMJ3W@;k|uVj9%M0nQ8GA_cbotH)$W2J z4QHQu_SEyw#;t34b>X4DRayl!8rv}G$gRBV8)y-~=~b3f743+_7e0y+oCas;#gX7a zKoGB3TEee^L)gvBgb)*NqU{DHv=$tEvNk@q9LxpbY!v9)?7I(m);u;st>)?XD?o@O zTMpgp59H)90!59;ad4bYs3RtcP_Lm@9ZFnfzn7P`*)MW9zgl(rm8;=={bG{m5GS0a z_Y%^}o8HTKZ98#ZWNDi0*;Z*(uW(knK@#G^lM8g33?7ZzLkC4FweusNm1tPEsy6ys zq`;?hd9g8GcCka#>=_)#$Wt?Ta(V`r&CZ^|CwaFSyjU%5I)muZ-1MPG^Yumk+^uDNzGtm zdIkZkP2cm4nm#w5GKGrKe&c1a|H6+}yE&d?$$G8EUErR>6*|-Dp|p?Tx4IYv&O@cl`RMSjdz>q)g&8fg8R3}5k*2(l_r*Gckw*a#P|}O;-b!5starS~P>=*o9$hUphJGOmkQSh~bdW8tfi#gaq(Qb59dYr*&vH18-O$T1l- zr1#edEzNf*(70G-qTO)So4rgVGR0XhjgNXB4BP=6aGP<{dzBK8}BxCh>wK?l99&QhhHDcEMc>N4q2@3cag|qee3XDX8vJe}PC5g#X9FyLJ-BH}~kj zcRb7ha*sxt5!}@|_k*)fA0ZqItKV|CyI#|B2iw1uI>$=2#~1FH$#S^!VIQ_X=ARF{ zkkUSIe1A5swEMqyKI}pqLKLqBr;rhloY95efwUFTuNvPwtns9yu`?w#x;lWg-l=8Ebizz8u1$JT1+MDi?4SF&^q=W$-`{GwD8;hK|AyRVo6dDGj$VaI%$n>6<(~@~|K{rbjQ@Wp6ArP`C-f_5gk0mlsG+Df`nv)fHV0Tpo zml23>Al80jo}K+UK*V5o&gT?*v|t?df~Ex-75J|%-qWXQl5zrS2M zaWJ4kqhGK9vzOoJqt$2sMA@4cSlt}r;2hd@WMV~)pb?{l+)pF|!Ka}jK+zSlq7agK zqQ2@x**A>FyTy*tj8h{vn!Poen^+BtkJf4!O#VbKUT+_v*Z#bkSY>PCBzlnOX7#tn z2e61WzCUcQas8Df#?{GrvKmrS$9VknM=$VET=*0UXT~@DZic$6LuCuCLW7SNgU8(s z#$na=TCrDP8KibY;(;j|;F|Y^( zWUI{xQN_I3W~*({9x6&arrDgXO4xc&2WB4Efx}WV_*;+!{qYGh@PKQlfm84UXr3T1 z+rZIiekL(xIvCV(PUZd;xYNwO*YVyvd{*B81ev_@UbANoV1iR}%Cb(X{5(uzDZZau%#-kis0VfWoZ zAAVW>yOJxU%(8&+K#3g zk+ELiT%2mC;cQjQSr$4qF;#7!y4Yh~fDj7ahFv=z=P9r&Blu!bg{#ld0>{srNwL)y zZxFPp<6|D`I1wD{bxpdFKyx))ct=0!99yd{Qi2WZlP|tcc3fm%`<~5LQxK)@W1-@V z{!^)j(6WXeQ2W6dwYTULl7_Lbb>Swu;GoktV;JQfVvI8N)18c`kt{ZzVt+i_^FVVe zXQv?+qNza3Np#z??&~)fXii8}=wN{;# zN_d-u#O-y_&qIU-JY4277H@mBD zKoeZ(F)dK;C6#+w%Wo>ZRav)@bj@uCV|3d=wGkha4~R?!aj`wD;wb*6i=VY)usgA*PGFE_hF_=@S*V_{_=!wOH#74&L z5(J$(mGcUOvw9VMbABlvp9L3R^&odtztL7DmZhPNRMQi7yM`XbN(qQLMQ7BeXhH*Y zA@kC@?&^{_)st+gl|-VGL5j)1uGh|EM(7-hRhHS>vS?;&CB#x8&g2Jy=${!pkdHd< zeLn_d+L&bU#_677b>C`UuKUUVRj@r$#f5|7*QmI zeNNbLP$qZsiWDsORaXiH5oi?h=Q)@Q zRPfhiO6=}LO+h9ZyhLA$GKJ52z8JsZZ{F3Z&3hwB+PwP(JWZygr|oRRVlkTZ^t$Tv z_!DeK@kQ&MqH*2UVo?e;1#oq-!$L&ps4u|}vk*7M(S;2`j!YBv=c5e-Q!7-@$}XoS zF)eBS0Fx0L^N7OGrFqfCP45CnS&*8D+CPi)GWDkr?&Z2GX`ofaAy(Dx3cAu`E~j?X z&7qOl1h8?C7dk|7S%>Io3wpkyJX`pejwt6|frjp(rWNIOYz$7sZo7L5a>Z_wcnltZ z@T)1|<;pta&*&#Q_kH)YxbfHWP4ut`i`28k3!bV0!@T-+ng0`h*OTTdp*{Z3UV_V7 zviU4&_WIM=%M$r|DJM`bLVcf-eG)!oV>l771A?+R9A=8wJohzOpx*u;7`h_@Issw2o>#I6FZ} zZpM@>W4K~!H2$XqidShbgO)`foRJ4cI^9En<>}jEmi4!KP6x(F4FZ{ z49;~KKrDJC3y8XgClznjKTnYOJ{0Ro8_(7Usi{W;Hy%LeI6rlVtk>{0(G~IHo|?tI z&(vNVL_d=07a?XQRfyd63@xA|`q!A)MH?@;e3XbeMp8O2UJ<(_10)tK=g*~V z5bLL?u;QH6U+@i;wFoZPO(cT{QZt3~Tb^|;oPl9$X(%*tHJ%g8i3*cm{|Zhl5h1!> z0Sxmg*U~m~bd3(tJ#gkIpNz6E4w!144K#~$G+7CBS94HCK>i#cr)1aLmqa!h1y8t*ty)sAq^fDgJlv$nmqVo<)hJS*S z36z$2B1i?gWfhoi1={1c^*{)4__WrJ>4jQH6FV_@N?0;cABEhxWDk+0g8lgtfjAU- z*0dGG^_74jM9aaa*zh84sa+d-=_kLTXR>Su5GGl60CID(Y+$zZ+^M{|`iu;D6Jnn% zOQH$%+R37C#dXmaB03%OqRd9oHwL^y9N<&+>tXtGCtn0!SLE98$_PO)ymyyyJU(j-p>^)lM)Uj%2XNih2cZ zOcnU8D^OJ?|IROJqo1Icy-baGIj5&`j&(VoPgqVV%$~{27)oW_+hv^dy=9~e9N)bm zGi%>eR+wjXcSWh6wFG`VGwWAV{E@xtvL5x0fkY$2dNMRK@A6dMd&n!shnN=wkM8He z@I3*79ih7`qrHst$X=O-8S;Em{`whS{;!ljlnlOsZ69#B{HOZ)LlhTTod!R{0@rLt zU{?!qIc>Notm8F?bnb1YBde&~lay4dv1h*NDmh@l;y z?~L6N_3!n*)$&aXQ@YGCk!V{ux-t}9Z9Dh3k`E^Y$}w%RfEodG%-z#i8}md(ZjZd4 z&yo_WYhmFAv0^J&x&+2$kdhW*l;A2_2ma$)O?!Jdx;WkycNVt~a1VEiCj1Y#KleOM zwY7h-OhL9=|6gqX{igKzH`{)RZTrA0c4#QNCZy1HXonZqMOP++<1V#50B1UAiTI7w zUXa+!+n68vwU9GwGbg*-%zIko`ffg#qWDa@zeBof%>VhN%p#=dJ?_POcG!TnWbi}0 zN!W6JsJX*`PIKw@gbx|xgHQYMrrwzRGe+i6O8Q@G2OvHN{lb%g@obw08+r<$VbR2r z!SmFB-ctCOwLh^2)0O!%@*6bP?BClq>6rDiz;F4`!n}@$43LnUJ*d)=32A3VqRy*p zJ$q0_2U;g{U3^vSR7k^?bMfg7g_AGTAIYiJHH7_-FYgX}u&&H4 zn%J;1RQdTu3smG$vaT{tO5)tzhB0*1zxcP!m?NVQ0otb5T{1cq?Uq1@VCSCrD+5XP z&Yyee*X^1O3#{KSZ+nck}7AKi{s8Rnh=Vz)ZqP#kPB3gquwWo zA}Y*kL9jYM!Wl5^7z7dWD0I zC&OrsF7~c32Ev&FSv_0mijz5h@+4(4xc#BjBYyEu;b)3mu z&k!dJEmv6HWBS)<-PXv8Bb93!xTNLFNWYH2#n+LhVtJqVl_Y}`DCmt6@~!Osxd}aR z@s;F_RDKx_41K9CdOrQ1>i1tQBy8s^NtjT_0O4^*6xLauWBf5{$8}~1<8hD%u4ahf zS@z(QW&aT;+S+Sf6^y*NA!l1kp28a08By_mzN25Etl1qNx7Up)d8!<>Qf7$nx3ZsW zg}B_*t1a;8|J1^`VzvUqukgOr@GUbw2w_9(qA%A;et*73*UtVMuD!11*#=^Mvva=1 z?hFRD>~7o}oFZ}=>RJ4}wQa-9!~2=95O}l8X(@;bZ?f6H%a~vV^Y4Kz?kMp7C71glDtCCT9gMy}>2d z%G^K9Iz7um9nr5#giOL`a1s_9!A}~Pavn(U4|lR*N+{ajtx;CNfLFA{s_W2%MK_`#A7o%^=n;;d1U~MUuv-K` zP>DDUT{4b!FA9&!)yZyoB0rr3hL6H|TgI?ZnlD?5&{Y#1W#T^sV|Y*CS5Xrk-Y2mD z%=~__DKQ3uk&A`{v1ITSHh{zkl0Iy+q(cUiG}MwFKLu=TEf_=QM0d%pJdkk*tD{%V z5WUI!Wgp9ZDDJ%93SeyQ5`*{ZcX3QJGY&{mtR)x5){1o?5lCj%4 z{;y>7Vrhy^h2Ki_H$kk2^&8lW z0C}^-8I&`uBlP!G(AzHVl}0VCiB`mpvSFKKYLCxe@6&HB0yM~PU^-Lp-jvRo-tA47 z=wRx$p_P1x8D#&??I2gxfkuCzpP^`7oWc(7Jb}aw9!DSm$ zaEY=Rg3^D`Q$g&Vx6c$yX^+3KE`=JlezN!x^hGa4xcx~i2}eMzOy@#?7DR?fyTDTc_AExx%J5A5RpK_Q(?!a@LVH*0x89GCZ;2i0k9V6%)4}#he z9HwHiHu!JQyaI;Fg7E}&Bz+z<9Rc^9QJx7Q>VeVuzaI zugP}sFxfKpPc_)Q1J#i?2a7|k16QqEDcEfR0fr2e{z?ExvuX*pElj1a06i65b6}Or7s|-&zlu$ zGfSN4kAFOP(bq3xmn_1cC5Yl_;8{qrftEVWhEWs!r4i*m;pi`WdQ2NTTrxNp_5gCk zeT`5VW2WwwdeRuZOc6{Qqw-H6zw=!ZUsK=s0qO>XBaC7-w(o8v zVZSadwd2Jce8WWYR`RuQ@x!O0%XE|GYwmtJC{E0R<%8QTwDWml5nQ8uh ze44)>vd8)P7gi_i?8Q_hc@G!_8qVMV41jqmRz=AXP#7C(K zko{Ur7V<9C2vrXRvT(q>56!3r?TEZ=~Y;)6|a0K<@o>&FQio+;X0x)hgbLqRQhiKpubl(HZR-Ai$|!ZdJ$}Wf zAb{OZfx_T?w!#(3va{G@vsQ%jAD{Oy{^RO%vg~0YGw%Q0FIv6CSN7SW$;_vjBH9|nb=QqTC;2oY$mgVtup_eUT4 za{bsa(~Uy3zSP%T)8m8kq7LvDA#CyOupRKg#s;q?@XW4(meHs> z*e_~j2G=~Km^1A%-$15>?WQbts>Q(UX27ByxLEMf4h&+WY`otS6%Ue)2ho5Co*&eY zPAxIrF+h#?U~`mP6*ul4E5`;-t^Nnx5zdi%8SQ0AH*#GVD#rl&*u~=frZqXlE!Ugf)ag(Z79bhiZe+?a0S#FZZ)VyT>1mWXH09uh&GB$j69wkqWxef6 zZ*_NLBzh(-oXJ4XEb;slY|QW39xGWebB{)FU;UuzRlezuUPVkadNA#o9{2ZGw>8Hn zcGS9W4E;LWrP;SXhaI!ZTfAIVKrG<`fH#jx{=RBXTXMB?7rHY5q>I~aCM zp@IzTFcpeH>Ucz>lt}B5PKO*RRz1uj={Kb!R;4S{# zE|HhRI{sK}c1;_$YuF+b8;YW8KwFlwikZq@fB09_3C$$2=x%C4ujA@ojG_U*9jX$I z3~FEX*mBd)!ZXhlNfoDTj-(mfv&{3y+N$keDz@bm{Au8nBGEPJ6&;EVDK+Kl1|~@? zG|c!Ak6|hED|Wv5X|-16N^aH#ZsLCHqLW~OMiq73%amd=sO9@)rWV%^ZFwcAfx^)@ zITytW5nFz%W*$m50d;H$RY3g-^4{d5kqWoDimfs(;tqIy5dj;WR%zYf{R5XiOy&Wf zX+*)WPJ!g%IAH8O3-iw-7+~IKQtzwwET%?pc4UIJ!0)F@i9yaBjZTu?EJsoup zxY=wyH8spjJmtf{SGRJDa%)xcUc;U8ekt5(h35=xWe0Jc$pi36JMc+-A2yG0Y-&-5 zZep`F@L4_guh2uYgNkFn2MZ;*8=vr@aqI?`tG#a#zGW_W@rRI~jFTA{DcQ8)JCea; zpb{`8yL!OPw7#-(+^Q(@Oo{tw(=Zl;FX>`TL1Hq&ra%3 z@t>@sgF~(P2N8Iqz}*WL2@G8uiXB61AJ@{w|U~BFh2|R$V3+*9)ozCaoFe79w^-t_9)$i`;Q)_J^jX`{bXQghfJ!8JGKM|0U ziapBS%=C63G-(fi>lT;i-3NzaZE+oi3w4gL1AGtVeRU3g-z$BfRW1nyMl3;zIeTLs z%7DO?i^F){!ls7vp3nlrTkr3o$~VdMrm-~!Re}h{6(BMLl9GzU(Oo)&#O^ zCxhqsIchA&`uIcd(!~t<`L!C)UvurRsSB3E)92Pkzjt<{HGHSP`)vw2r_a3}+|Aw7 zJbmtON%{#uy<6E*K+V+WUT!Jv@$c4T)00l&D_XLL>uiYuWo!3x#HNs*;z9Z!LQ<{G zABFVZ@Ed5@-2~nBQ;Jy^o+oGSyja4+masm)J0tVwYPrcz%;q&-Vu3$wqX${`4ID36 zS!`xPD|5mqpX}q+$yq9+?un4s?azmAGTLK&UCuG+a=O<Hk*p_c^T1z1z`YpL)4a3UFhBXalK?n8N zV4(x2ignOYJt1uoVxcAXoE z3LNa(K%qBzINdpS!EjwobA?41`hvS3EkjS+UZWAn3M)}Rq z^eDL!n&KrCIQM1vp%s1Q?y$q5!W<1Z+D*63J3=%l6DL}GJxW%l(JU7ngnzMmROUsW zAQtCV#5O5jvQ9B)0wK_}p53csOTn?V>JV%6&Z_MFUe}w(0*#e<4gJP&|8*#eX0mnQ z=j$Jq-}PvUgre^*WXI%p1$Gpc;<5Pl58PqH!^za=vd4k3#}XyWjzcU+^G9RS_osHd z{V`R#qgQF_{?se1Qm=?lUs0cF2j!j@DR5Y!m59c=_)pz<1M_W^d+Bh|YB+?*%fk^a z2iF9Oh8GHsa}awyM$OX%Ro&f{P=>9+_MKrsOBhTt*fUJEt-(qgXs>^gAZfg(JNI%6 zB7xVRto1OXaaM7+P;A#gvkqawC?LuAtmaWMHu}k_l0Regr&@n1R3(4Rj>wWLr`zDp zmNml8TwWfX`MVMl+vqkRH*+D*7#PFe$>D0 z^&j#tBXKkSWv?gh7R@MDSm2SZ2PU24JzZo8JTw^4iG;+D;vw60)$B3YOQd~f(t26G zK{D7}4lK>rs>R{TWq~W(nimIJq;%0t@dLz}4f2}5!2@nF2SXD{&6b>2defCv;j1)`B;DG;-~FHMW#G>=s)Z?Rz}cT5fQChdT&RZT8oo)Y@g9sI~hNDnt# z{*}Gh=r2}VnZ9+5rvzUx@FLKB4aJSX4?r9aT_1uBUVI1N#9QxbITV1+awKKXB!`gm zVtJ6c^KJuP!R%8PU5nm?3}9x@v}~Aw`muQoJWQicZ%CPT@l4m#%$Ey z4rNYV7n@FW)TrW*2BF{X03i0HN7!L(N2BPky`tEtdF$;JRo|OxUEv*E;qfY5YK5z` zakf^CaS4|y!J$_v2^rx1-+}My6aCI_4!*abAN@i2E+Rvx@O=$({J#a?S~Z!1??1H? z3y;uC8TVIHf^*cwRFWT~07jNsPZBGw;4BLoa6Yv3G;m%#G!r<0$=`oVvPtc0 zGR6X(i5>*bKNlKmE`GJquQZ#>$gr8&{PK{WI8aZ3q|-yMeUM5{r?FW-g<}f##A5Vcdo)i4>Okq5x$Nw5#^JWH8{__X&wDmWr{(1wsO8ZG` zRe>AGzHT792^ zpIDFH5_0`Pu`-+ZqAYP@4RWgF+pM*~5|2ce*F@Vm=Z!V=#}>kBq47^&?ayClUHy7n z>uMjbtNv>L4y;eFcGJhef+Db@H!hNC79`%om`K^d%DQ(6bgAk}R1JdXH!bDx^!vz} zOYw0rk*!@CZVC{I0|9P21qM8;V*$ffh9)i!-;g+;3_iN~b=>b~G@hD*&5c(m?2R`HhrgNe&O7L5jrYN8Y`kw4*?4Qf zkj(ME%aZW;(=9xq!ttjMvWz_bG++=54hLf148EVneGSUPe*}{&VchUHK#?sJ>C95J zVW4`C>}dR>RR0JjIlgS!-nyJGw(}PUS&!WLi(l}Z0w?_O-dXQ1|1PQgX0KfjW9}76 zmTj4pKUvl_=lvU2MP~h9Wxc2Lb>;ply1`g2)P=Cn7IbTY6n$7580HBwD(c#{X?@P! z+U&U|0Lb5z4P+*&}oYou3VZEV+j9StSE*o?Lz4{J<15g1D2BN zNSBy!I~a$Rjfb6?O7M0`X#HE$IWPZ(=}OR|?B(j|V}f|btY9rQ?G2R<$*k0>avs5b z5!dfTWAUDI9g#I8jk)K3%(PRcMw z37%$u2>IHR&tRMI!x#4sk?J3c;*Ws34uIl`0uG_hFb{7*w}$tw6DJJI%nvv){geokoMKi!L3eM4|m!RMaU{4oaEJByg_o}!=4qo9kWj^x_R)K z;ou|9QETXXLVKNa7~mNzE~Xlc-;6pZEc2eH(INE1u}9hzjyEhKO^7NuE_UAuh7Xpe zr&bn4QJL} z_ZvvlbB7O;-FUU82s%Q&Xc5-MiC@OW13JA?5}186h9*lCsl*#UWNn;6UmS~J z0u(;P#xGJ-B2rW#QdAu%KLN_LDIJn9l%hk!y%Da`r1=ZjM!0FTio~`CDW7PSWDsw+ z@+J#ca_9+UL{p4DsGf-F>zX!nYdDzra-3zWbJGRWuNe!tkxaK4Ly3(SZGuB#>{A2j zTF0G$h5}^vSMMl{wG7<|NM6?z6z&6fFd-hCj+F*~dRm%)lvot$&WdvDv@NjVmIV&~&rt>UOY4U>zbMT>~ z2`w4WjgyR+Q%z5c|_gOB#+ACsB^pO7n95CDp4Sy0S5BWhu;uq-WrDZ8uYJ{!F^nvTdGd1$@?S*S|yQ; zO01}N0K~{WQ)Y8lot`^eM8whPN81MW32Dmj?S3Wrp;&TzeBLsVqm_G(>XOz!U}Ddl z4e9srkAd3^yOVV1Ulg9rR7=~SyGl~32RW6vNg;BXQrq~TxCHc$=ntQRytPgZftMy+ z(GeJWKnpHS%yd|VUU&zBkAg_LAt1)2&NLvjoO+pY)0Y((H@#K&Y;O80Em|&SaG6eb znZDm5JJZ=NQ?bib?J|9tlPT;neI2#tc5<0M$jMYnCQ-FC{N$h483?~YtPx)`Lx<$- zNZ{naHZtb0{R=ow=P7_qV147&u{pq0f~yWNFrO*Fq)Dqi8Na=KT89n5J0K3xB?H=8 zUJ2aNmO9Anl}nbrMRK|l^N&iKQlD{zWpn4*?{?^x;ee7XyCJJSmL5J6$Z{OknnQ}j z)vGglF&0k=Tl$zlpYwtOO#b0U2V^$t`m4hJdHG-baOtnh4T^r3H!c6o5jF*z8}cK$ z<-Pa@vf-)^?6+3IjH1BRo$A@nQ3ct%OPUa8>aa}|%fc_&i*=02Qx6j1$Aej&XxWjp zE3OJt)$$8=vrC4!kFku8T)u?;Z!exa@j?~|*8grPZ%Wh&N02k+O}UiK1@w%50)SP~Z zSuoMf>}*A69=xfq$8a0wy`9vy2QH;-dS@0TcDFop$m4^;-y^Ke^-3@*ojG(ONqXLk zZ&-SJJn(duEnKTKYy6m?Fot`^815qrQ7sO9%}+4BJ{WMy4e`CDO?K~+S(V-v|0%Pb z4k>AZuyySOnhxU^m=X^rDE@3>tP4# z6cO^NH~vhek~Hrx4WySom&o_uwppVjCA7;2g2EbM&9ATO%|)a zRL4mgLclxi2?t4EAIF}Dzhy0nn^DG{Y5n<8Wt?9h=kCw|;Ag{>n7a6DJ#41#z)!1N zb2297I71XsMR53=G{n&*F78LmEA{yTTAFJxeOJmB1D&K-a_i#!LBjywW)WcAo8w~6 zb!6XH;#8eGTWnVF(fApWjEDm1ORcHz{m0u(A(wI@l~(PIwI6TOYsvHWUnacLqoBHxVM{*Lz^>s9}O}+ zzptQ~B3|*~o1fM}B^v0DqD%^Qda(IoNkhw0=eH))l0Rohx;c|{Gy4acehSF_c+0XP@zsDO?mA0mF8Wj%%}KyTdW!~_lYcKaKwc(z1n z**7xw)NXG|W1o1mTS|L;ug6nJBYqu=T#8N3rkA0KZ?(LALBNIm0jr7ky%V_0Nrdm^ zt@`g|@L$_!h4isi5a*kQ{Jc){L_a60kK^-X7Q?lbxZ1SHfP!)lmH!#PMAX@W#nC0< z*qx{PI@kb}J_IL0#TqFEf}{Ef9p!|~$0CX#iYxqh>NK47v8dSLTT_;UA@JWM=STEZ zt7yA|z&?K@-XhUrQ5WZ{4(+9O`+}4B0pwto@vFZkaJ( z$ErVwHP=Y2$&#OZkz_PEfbZr+iU~U#f|y7`d@C}$y7kvzFE;WwM4LCWSawn+nhlXc zQ#*HR+|kM~7dSaVy7;EIZ5R%I+WFnPUot@ z@ky2)&ENE3cz1eXO9lGSVJD7=5-|z?2G>tEL3oA~`z*c2 zkshZy1B^5V)pje>Di1A69N?uMN2(GEnM5x}ZdxwP;86aed_HTZ?aCX;mG-?o{?^0( z+7aM$_*ujS^!=Ehzr%hk6%(V{&-`?qhcUq@ICwAnIv_u&PX4m#v4q(Z6X$x}{p${y zgTc`l|I;X#m+&Qw%gB&5o*L9&ZbV_8pdOq>W^-l5!D7BjZXBpzWG`oBW;$Hk^BQn3 zgOlYHl$H7;rQ}(>jG|X=rs&74HHvfBQN#Sq?;ZJ@C@?~7Fzrh z1J9hn(A=c}Xq;2xX!E>?Z+saY-V|gV@{IGK*1+0Gqd*#JHkwuJ?_3Y>^tB_&nb^vE zIh2>51WP)Eo`u|2;Vdd_d3zRaoPFzg6v_LW=-c09#w*dY;F>8MS%e0v80J?o#HyIN zb%NP-FyEUmRJcdy6@DB)?!h#)bL7=Q_%fNx`^y#v%pA4DQQY2NM+nCc8@LN0M~lI8 zM>#8`KrJ_@Z+i&zn?0i~@W+Fa~n?j5c);2#~1o|uKM!MKrBiIH$t=p zdx#^pfs|`JV>xD58U}Iz?Lm!lyL^A* zrM`EkRj!Y}cz@<(Ko62-&tWkYWpMvCeP5E3zA)$g;hgus+o%6nX&ijrz@7w0QZ<+Jn zHRt^sIAnjeG=E>^ynmAO{$9@eTRHEqcdM9%x+Iq!#Ly=Uzo8!tF{s` z)_3@X6#`pgH+yiQFZ96$)$?z^Je2|(Jz#MGGu%d_06i3UrLs#@Py+fJpYUg_YGvCZ zU1zS3Epy(x=DdFcs$}N>vGlKU@_&-^F1b3hzPGa8kynnCb||`He6s8qp3+(EDOo1_ ze)?mw>@PX*x97aykn?_J&iiFK?-%F1|0d`CoUC{HyIOpz1^=a6V?vcLVFX6w@S&MEXIwgX*&BQ$oW8CsHJ$yKV>^ zbT_p`S_f9}2}Mt{)!FM3eirs%G1koAioZax=BS#nXY?3b^UGxLtlsp|_U|13mrjD8 z^aEXzWmh3lC(EwkZ$|Grm8W{J=8|Q1fb+?+yZD=xzY}?GL4s~OdG7T#ljnZLmmGQS zK)^zWe~LW!>n+uC6HHCAtcAbX?dv{@>(VG~@^4Hm=eZ?btdy;6J>t((NRzP(D->Ot z^JnJ{%1Q6&uJi*!^HbqkDwkgr^nzY`7YK5X;u5m?*1JyS$=k?~5>wOk8WqA%h!1lb zh5uiR53_0un=4a8N_U4zPu+5i4V`N zPp9OGGeUjV<*TKjN_81y^S9LKb$Ok2dB=2@kIHT0-)CBv+v8bXmI5pp+|hLzj2>HJ z6%sEs-CN!2k~R8|pSIp!O;to)e+LSy5M&+@bnJxg5-&YAv>Ity^KphNaEG;>o)2XT znHHWhIB0gO?;j`{ifzl4I?a{ZH@nBGpSYqT@Pa)4EqZKPR_)a7uA}{sejt_4ongE4 zUq80p`Bke3H%0H1N^LKXYcNkMvft>kU*xj4=421%W}o7+*SYM&bFzN~NpoZ*y*{C2 zxP=jk^jDzjX>x0=gXw`KJywdh^GnAHjw+%>uk>ZI zJFpy5eJ-QV>To+48IGNA>!LawJH|h>`y%t_^=_kww7I=|?$LDb*8P>G{W4$z8$m#s`}K{ulW@;aug61>^uD*2k& z2ramAFy$8IMT;t28L(%L*pDvc5BE)rA0Qj}MVZw6KazrQq!gWx%tNtWr*_l4;#bCr zWc|YX*Opd;nA11p^tYP+MxQYOe{v4jT;c_XuKJZN#$7(J#kl{6(4pvi-cnr9!!1QW z?=~*)SMOWiowD+_=H&fwlGVH1<$ap!)AgQ0-fVvY(DG|9d|G{VBsLXt-ybn$Fq<{3 z(uXFfz!w#Aw%Z(b8SEQdIBdefylH>%gc`S-`V)x~`u^L@OAX{89g*#D57qz*K0vZZ z$9*=W6IjOnQo~cVP&?9qw?*wsP)El0()gBjb+IQ~*fA2-+>a~i5A5pswiH_vP=l?k zc1TKazluPSTvdzARrQ3GL{%TRlGPqr$9(R}g&=l%Ww{D{`X{v=W>;K_&Q$AGsNSd|9e zZftFdh;DzJl)m5j|6TaK^0kBCasSe9dwlmBQt%t$eG2et^YEMf={>;6sbDyILqImC zh)D)7WqT5KL(j3;;$(X_+@Vv)6a{9#qrEmm9fPZmpj2XnAB}=>A5I?w8aRE-=~N(n z47XwYUE8E$B1$P!B7MvUqD|(@nGD_}{(`;pBu^KkyF^2*dIU@9TL@C3plH5*lsFpb zTh@M4*Tv~D-cFr4LV1C8_jOXFZkfGIL(SMb6v+f-(P^dCk?519w;HZYVJm_T>Exb^ z=_rDv-XYbFfg)`LwZcuyyM|h)$U~`0>ojpxC-_o4vbE<2p_sdTD@CHlDE{aKk*H~b zBL85|CREB|>q43Ui3~S@Y)pM0bES?9KCQH<;TAO4x-RHC<3$bbk(e6+8hKMq`5+^* ztMn~{>U-x1iftR~fGEQ?pb500mbU{f3b@_z5`U~}^_Cq|UG683@z$!ppKN>KTmP_q zbL>0pg{Y&(c)RS_u0X@oQ8*IEgMQd%pOb6P9E$Zsejt<_(y&0J(-<@G&cYZ#VxWbK)lFtQimCiF{0 zD=BUbq#tTrHp16T*{c|HiJi$~_q-Xgnvs^kWxoejYKAxtmgyghh10I4H=38R18;tZ z?Fas*sox&RtcgSC{*TkU^vNOZv7Qlk(`~|yupg2@Yt@7k4e@H;GQ`{R?Mx=@A4#U! z-;1CA+>yi)UpSH&xF$ss5A;5LcXj4$<=EFIyQ?fW3$n6x04W^~*Rdv_;5d*N=HIXT zUxMGOx)WzJ{E2O|66>NNmYPmZNJQ34W$2 zJ@-IL7YvCk0R__$Solz`4@#-bGAZ{TzOyByaM@DY`!}e=Q~;{00Y{>nR#-}{7)Gr~K;w1wy;DS& zei1TnvOotXa{U!)l#>5V1p#Brxj#qP17r^btW?PT?^60Qr*MhRzwmK30_Lgarr8k#oyL-!QOWn>en=aTYnT)@+ci(*^YNdDauz6OxiBv;T$3FFo4AF8p241Lj2cK9-fSL0HC`=&I~2TaqPNR^X?b ze%lCId6!th>)%TVYbcNq$I#cLWOb%Mqr?C}4q~s=Igsw>4X8*F5#L?M^r~QH4+%CF zisgk?umoA~%q|y;3?g^g`?!{fYuJY>fajMUBsQD>5ikF@fD*l%pMTMI)Z6j;);&CV z7H^vB>8D%{FqWEpi!waWtRvbryAK0AGRb8@rgAjkb|*2U9>f~g^YV{3r1d# z`lUU-VON~&+Unnmw3Y?p4<;9mrufruiiku%ipQSX5xh`P?)v)p**i0+XiG6^@l*92 zdrHrID$x&l_Lnw(?@&xJ%Ko|*{UHq`$5bGJT+IY=Go+bGb8E)oyL9x}#E`(QjWkU0GYezG%KsN-UjiRhk^Db_ z0O5S$lAsZSL=7t_SwV>eoskL7=m1d;Q9MvIqIe+8NECsDnK3+{BT-aXT~9pNWnEB| zBWMU`051d&6ctc}9!ChPatK2H-*5GsBjEmizkmG5yw}}TU0q#WU0q$>4=q7(MG^dG zHU739Yid7l!F#z*FwWn&z8Jz$rxs`EI{TweuZ8bBv#r)LX~((AN*4;_Q`S%HAAXS} z-Z=rkC%BTp4*!L!3);vAm+;pLrZ%L#v@M<_)i{_GSt0%T)W)X5g2%d$j1`2edYSEs z^zFZAQN8+XIapaM;7G-Whuz*(Zm?fOelA95AaEZ$062qYAt(}-9^!f^MRB;e96h`N z_1cu8lSBME&#%UPWn?~nXL8m;i#*o+&3K}BO1@#H`oOMcOCRR14Ie4ReFdZrl$No$ zJO=k3@$@(nnYj%K`8BJejeqql5R94^rXW_iccfuN+(%F8Y8zkKp3DHw=n5&U>SYmg zBLr=SDsep9fdhtV4u9dH;9J;-EAwAfJJ91mEw#bVxG#q%wt5)}q1cGLp$^y^Mq6oE z?Bz;;96y1u*3WHz#^oBvfMcsL-Z%_3BcV7KN{0sDuOUh!ycz#OT-j2{nGxECcc_ZZ zW_SaWG*_(o@^a@s1vRN6tIxpHK2PwZDPzVafOt)O9-IJZXXC6et7M< zwK<5xZ_GlgeoFV4eZbsZ)x8AKaNIDxMZK`HC3%!-YZo^T&c2yKZq&yyD}1Y!HaRah z9PhJ|=wI0h)yV(C_s3wi&%=0AnQd4Th5{>JJHNQqgicD#>zZNBxFdq*d&^_cPyTcNIgqyyAP z$Gfh6x4zm>`NI8ZyP!(0t3bNBBflnpV^u$-SA$XYYT*4Dj%9p8jY;w=clN`7? zyvk8AyK%v0+=CsfLZd@yB-CvFb||qNQESiPo!ZO@KY^#p8TH8LL<_IjC@%i#@JZ{e%&ULqvAxuM!SE@kA4C?)2iaqXKwYFmAwHUdqd1K zuwLVh$NQom%YUAW!kpjFcJpx0v7&H2j#LGwPXPG`jZkM%H9ORuAJd!&ob6f(EcNg; z5zK8Kp^|XPe)F27fT#sSMVi#WedGeZbiPi_#UtVqu_iD=g+xl_cp)CFfu6G+XvP2s zRIU-8fc>?q^`t4%cjS&m^($LDp(0x>J{{2fs(}%D5Cl|h)Ft{PN~pJKR$!`NkwU0? zby0;IHU}K-+5p6o20Jot>}3<9`0VQR#H7A?uO;?g0QmSU5ab(sAb6ye@%Ru@X$6l! zmlYXHI^^P?8*;?dmnZ%CC3N91g=028?T2Yjg;Xo0Y6upHaWq zferR5_P4PVQ-EvqC^vC*#lI-;Dm!|b5$=mxTxG{j7-1Km4BRWy(hIkLV{dSO>ylM9 z7#+j$MW3ZdyagwW8JB=N=BF9|32ijO58}Bbc%-HANC-86I)CnIxL4Ml+X+!Czu|i_ z8QxWUGQG{$OJWutc>8^rTjwqWgtq3F!m;5lRkmeKK$d1ylt~)UvU`7XM%IcOVlV7v418P&YnfF2$5p_Sr>lOFc#Z)-s(z6z zw5y&EJo)u%)e|itE_$P+}PqCgQn%=*# z&}>~#SxP-l(mTk88>ZoIAe;gEqN6dEmUHykoD4642J%J*oxm3xa*T=}$fPbB=v)Hb zNT727q%w4BTc&o_O?_iKNXXPA{FXw(`yr5!NuaIMg+Je1384L&?ui824rJiZUsCuy zlR(=+O*P#t@FJ*@Z?xnQnxfA2(KSd{k7#7Ghzus5BTB`fCg{`$nVO;LGFU~auEL)} z*V(M16sSay`(wa$$Fkp;!MmruJ=Pl`PFCK?@bp4(q~2J9v+MuyP^P1RfveOAoy9g- z@K9Q1wDUyww85D7L?)&|@0pwGH&Y!QW1hDBTxQH;t>B`=jZH7{+vb(jmSqA_8mtFi zQ<8@NP`WqD)K@M7Xtg5;@R%^4x&b-({d;K!*yS;!)#oFdy!q+fmJT-^!Bk?+NP)G& zBb9s&O(#{UC9m6M+y&c=(BGlf)WB)dA3iUb)mwyZ!1rH)SyzFH=#R!}trGHj1Vh0U z{G>j51*XmTeAQUPw<7$N6pfb1EdQMXWmHUp&_x#^!RC-y#$?A*sp+xYO0or>1Y8}o zgHtkgVm{Ukdm1ImAI>cV9w4ejRnLdWu|E7pn^_kr zZmmA}?sUvnM(A#o6#tE^u(`r>eXet;7;tr_y=z>jdf4eyu(T08`toQ%Ec`}8|tj?VxW25&V$hH&xg*jpU7Z@8CJS=152~uh6@^3I)q8AY8mxl!C zSP_6e)Id)V=qQk#G@#y~q5|==zJ+3c1!KikT@MQ=dJaa6`lrUTn0PMKc)Y~(w#M^h zO651R^0#p}rwVAGX$0y8py)V~bhAz!$JCfcb>efNxY?dU*McK}t@2dDtk z(dQ_L*-4H62WU*gPQPlav7JtAk7;a+h^@26R+&QBdMJnJMl5{PHxCL|eslwfLlUf< zLZID12CmFb0eXT!PXXvI_yBoqE`Q@)EW?qH@qU*>A4|Q&8LA*HT@c<58T2$@oFyIWWg%S8mB{9C)f2C)@3i+FmKd& zYG)85|2#eLEwO(Rry8yiPFhIp%|?Xkyn_~mslz3+^OJF@Uw*+AJDD%@>blj zB8XaQL`LvdKGO^`GG&$6(~}8N&d$9lc&Ci zfy8~+(BA-Mwa4v3VXn($qI`r8u>PR-_i)Dq%QD2y+Y5eaFeir$)deA3&^gyL7zQr$ z^xQ+iTfmL9z$i}|%z01b^49n!$D~Us0U|e(pvudnzPtji*O!87*aB zWWbL#bjbIuxah6=*qP+}U~6)wH&}~v8?a5tXY2*3uE2q>Lq(4aHxiwgyBIv~ocaOa)#jf&0s)^tgs*GfBp@F0KsweVWN zZNEWpAg{gshOcceJ_6GLx|d9hE)bi`F$5OOnp&B-j>C|0bP{QQ zi6^qigLP^2HbLV=iz(6VtWM!A*h91`m`Uhnalevv1)?Qt{0Csyl8lDcIZ?LW-(JQ; zYd{wR8k*5fPU->Si8SefeJUiz>u=H-J0z*^&9MWL`u_XYhVRiW4d1`|wBh^4%?;m| zf70;%A0Ib-|Jz3m-^~vjzCZXu!}mKkHGIErW5ajvhKBD2wGH2UtZ(?ig?6pa%lyd&~cDIB9!NM*&=Dd=U40!K;CjWSAb}<2riV%BBv=J0~A? zmq5yK)L|3g;=3$RrGB_y#(Uuaj3w-AaJ&!8e7j!7CdzpK5lQjUHy6VzE-%{UXnU5{ zsOL47LxsT7O=D?IEU#%SLsG`@HNX<9fyX&jWa+P@2N+U&J9hHSWBL0qH?*LZG8JZl zO3pJ)Wz&9nBjB&CSPPW=GnQ7+lUdyn&n4JAY^q%EHx*aW^z&+iEX9HeL~;6Y_%4oH z#s!?9qmm}*rSm!0Cv0hGOYw+Qv66&a#3eh?VmNyu7Ky0eJPK1_a12~q9GmAEOJ_3~ zysyr1g1l9$GmNEM>Nh8FX==|0 zh)||s^!ST#N1(>`9t%Epa}@S-oS7(xXYL@KwEISRsOrYtNZ)xt5xoH54b&C#&(Zlo zBy5!OjR|#D;M{)ZA(>-w?jP zL!CL%4WXXiLk^QNk!JT~#=fugnmu!4 z+mrOM)q3~U#l181CNyUEwgz|{+8I0WCc;H;hZD-*sc^BSyu|W;`>&}f+55%)P5?dB)FQs z%)qZipCSuo-!a6Y2I-8^I)?)vAa8w# zyK{RYCxw8@Wduv{Z|B#P*T0UW$=PQ8GCp8OB?~CArHQYdmcbXA?n&F6Y>!OG=Fc#ZuTQn|zNrsD^ev`WMe zus`B^(f%&;%L1+KO(Tt8wd|1SoIR?|b&WxQ|696PKoB?fazidxwkLEC%t+Or;R)cf}Wb^bn;-xu7nR_shi>zd@?s%b0O4^71`Hk0_r!idv< zFP6!4wB&40{}mZ{HbReqf$Ed4DNrFPC1AmIXgv%4)`}Xtj%?;XXXD#C0%w>bE5@N5 z#$au53?76zwLul{4s6x;I2N(E`)TjfYn@NMmt<%3HY^?E^WVwxiC)z5l45)KyFyyp zjLxs2IUDyUPHLNw7aSznf!LL`g^TJTHb?PIbu>b{;+x%mkg|3ts|r@&S<54mt%%SVtJ#O*_GGIS+V)*ZbV zjVSS#i1cwq9ynfpg1ftuap7pk{eMNc+Sv5Bp@QxC3KLSc>SRE+l2G!6^mTeZl=(;E z9k`XbrV{jct@m<^Tc8Ed9X+ZFVJTqJy7&@kikqLoR%C5Ra@j^ck3va#2GkfrMf!T^ zk!$>gtoU2)Kqv!N{C$4tf};rk(nSzqA?%7<(`#gFbOFpeE_;6;ijiqM2e#AXlZ#%| zlQY>50j%Qd)cVu298njhJpmlRLNJ89k;ifufdp^lsoZ7w1qUPVe6e5Kg!CWt`{ zyoBSh`fV#cJ{lU0FhW5r$n!yyGzGVm-VHC&&EKFZv=CoKwS@`mvai3G79Kn+L zSY)WF6xB1YRxzP(w&YZ=}I|fT;JE9D}m+QcIfk~0ZSL36jP$pcOIYdmU@<}3Iy@R4Wiy678l zK&Mpo3}3;1P8l*IhLNCZ+GL4lEtTAmOY#ntB98&W+|t_B)bI;-v_frXq(WKLhzL_)AN}2qyR)u5p+3RIU@69bVc{ z6z}9mD;d8?l$tSGi}4)&NJ`_ndeT*m7q9hqsRuK5yS@;skajfGA(Se*psn!CBo<7BMgR zMrxHxRa#7Ky9^K1w$!oItsCSwBwARdZEoba>1OoCv)oqUB7;rZtA5|q2>0z9OKUvP z0Y>Oyo%GK*p-DG}JDbwCFCUUTpX4R`Hh&{K_ML;0c>yvT zB6_8+*a&@Om$HQ=@LhC;q-b^RHK#h%L(tb?<7)&D9&c<&bafFnAxeulx-2RGRIWqn zLBc~w5RcEH%X8dD_#Vj*Q6JDCaa1F8LOu)CoTaME4m< z*D^$Lf7>I>Xw77(kvy`@VZ+879ZrY#jw;MxaeE&6FTDf{ct={Qk~6})F)*U-phj%_ zT}BY}DyB4!)FRA_#?oaJnrH!@)n`Rg`z&rG;%ltrP>>U)Jz}}e+NBA+n?+u`Q4Eoi z^I?c=(T2#oy;frxC|9y5f&6K*j4cP!mUThjt=?1_LO?Jpum+ zhhzo%XBa$pwu$UNgMniiFntSDb~;R7*#QgJz$EdX8$8y}|Ci~W;IXFu3xmfD-jy`x z2!@=a4^!>Wv18~o=Gs-(qzpx*KMwV4zbj_8&@Z%lf`1en;e#*(Jdvw$0>srjc%nao z8fpZC#0kqZHqGT>q1cYK`y_cJjC0E!H5rjSry|@fyYdXt;O>g`+1pXYz4y}qZh$)^_UjR z#O8T|vp6DikU+0P>`9Nclo;bPy;@%<`jEa{IM@^%8z@#%0b-{CXlwEAiut%vvNr6?5^U&fM6@aXn{^ z2LS0BjzYTZEan2m9HQ_=EMmkF1C1d_3~I)DdwT58N_pySQ$AENz7)OzZB~m10%C5o z%gLF~G4p}TB{Pkg)=Dy7&3;9k5`5-gbTsp9KEgDa+!LnB>l7(#Whqe5i%>a})=7}B z{1ba5SL&-%yKjKqJ3yNy9uz2>$_eUHJXQT0SOCs-*roGmod^c1z3?6yztK@5#Lq&? zs~1Yyz3Sj~rx?GlV2DQt0Ko1+x4Fx94DMI2-ze?t#@tAgxj(_;jhy|?d04}k6%#-M zK*Xto6>96MC7K?!s^WA<)zTz!FTWzh>4G56OX7T*xZ`;sZW+o(Z-NYA+_=p*$o6P% z1A-WfvtMOtYG%V;MnAdD@3GkVZIn+kgAD{Rfgxw*Q39?*mTy z`W+hK<$q{K(|WhtMXb*UT`;@yy*Q zb^b%*y9f_qdGy!gEwOH9TnfhfGH3t{??u!RW^}N*(^~35GpvF<>b5w$MZPWh~gj?~91k+hai84ti~St5B+_APe2*n5^h4 z$tubIk5zMBUk9d}R&P`houY?jFQC9$|yEeNK=A+8U`Pm1?w3Z^iVhcECiDgLfxqjNZ}jfk6E@ zT&Q{GY}9&-uJz!#sC6HxK}%B&if5r3qJ0UpNCVwMAP<0GP&}`bhA?Tc#`7leyr%J_ z+6UJV&psHc%Zecl(I4@|`T0asBeW0+!To)MCr+OX=Sl0FT=9~<FIgFKlk=uI zhqmo9u!Wn-VD+3l2t?{T=dRTE;s)=w%9R2D9s{K!cuq z)kB%&?~Cu(+4#8_UI=9f{2e{q@Q^xw41C9U`9KFAi^1-iuFXD`;WLl9-UGSuAesf} zPh;t2C97(&U0h%O333`oS75?RZI5{bW*MS|wptUi%mZhmOg%=lqcLiwVzs+Iao!N8 z8-#P}2gC`2wmtZS7>mWWY5L>wP_X>sJ4XFr|7aT$_oW zrOkuK9ETB}gvS)>VDG|>n?o{W%PMt^`7A^>vBr$x1!QxLIRlTL;EGb<$6E+*K5Ic1 ze)9Lp!mk;`J?VdfLusZ$rS5`#Mq~#btYM{Gw*7`jxV^`8;?Lr7@?%LW#^Qr99m+hG zE5{e>$5e7XIE^0^y z;t1l0?qk!?Z!YWFK1J4j{dDZJy8U#<{g&Q>SGUQ)3^hzrrVl-ZFR!583BEjy7n?7S z3KMbf2;#uh!8HiAl5;R-JFq6n4@eq)7O#EO#ZjP)$8SZZ_F~LKirhJZokJZ0f5^$D z{xGOr5Ze>P_Kpsr4%YTKNPMXSCuy8dZjE?%v=;dbMaFeshnw;&jhUN_BHy3bJ%XN4?qaQf3s>^@mm^4C%Fa+WSvf*i9hkcKSz%YkD z#50Xq7%<$WiPNC!Kj2&m4AH*Q62Qsl$GAMqjJ^e<2=NN60AGJIij>qHZ9xp?VSG?U zEd)Fo@^}SG%Iy;BO{A2U<~m?I;Jg-+DI7DAsDhneO(+w<;1%v(06Mj09cn4qH@#z&k{j3Ox+4EW zx{@}@N?-v7u-ivQ&IM%b3oVDAs|O0UI(7Q15|q#;xiiN3SeJnS zp~gCONKbU%lvF}|TFu9itj~}$zY+8#e#@tLSgDu*#^YX$Lr7~Y=!Q%2s1Z4BL~jZr z`!0d5iEKu>ioLG0LlY7?aVq_G4o7}N+OD^A3KKc|ZEQ|E=d46dot<-zos)qaFfYn6 zt@~f&rcjWc6EXoCp`FNQ%cIQ!AabP3apq&WFLb%^FO-j(=wkfD?HBrM=Ac-7Pt$F6 zf?qH&*=@}#Lvj(q)6S?3vU9;g%|q#QJ3dpj>?6T;-&j&+ewu%TwPG#k1K!7{10o*E zQCW$X;E{U&b-E-!Cf&}O&7$(D*QaWDkW>VUexCSviu+Fx+e3#75h5sE>QWAbh`B9^ zeJjG5j5n5{@%6HROv>~8MuDegF@%T`#JwG2d|jpv=Le!|a4kq>8IWq4uDb~$6J{WK zY;nR4=!exu@i;@7}>&-(%30&rQ@`; zzVt=j;JpgwK`N|s|HjKQ0z3FTML%yv06)gh4z)dB_zTAu;&U#{a0G+gc}kO-gTc*w zt__kN{>5H6+25tR~MINu&z!Sam)JL9sYs+<`p!Z1Ea%ocbFV$sq3}8}Kdb*u%Z@MS*gTFU6 z9$6v`mbDEHf48{~a`yqbW>qW$eE3jc$ow4t5Lf`)y)cm@!~XDMCpB=%-P|7d-Y$WN2}lnPUpBect}#hug=TWtrcU@pf|ecZEx z>71OloZ0`NxoU*2=D$m4(aq+wmhz`$)vAmVo_?H<$&m-U;OzUj(<1CRK73kwRdoj> z(2rG!dpcn5DTkkX?fOW_mndy+L&4leXfS*~JR)5}-l^yyaMY~jaq>)0+K$0iMGdRO zO$Nc*MkVGIIO2gX8zNJ!WJ%c^fUSacz@gjxlokc!W+N5Rsm8Kbg=Lrv`hcBq&_tGM-+K`ur~x z;h)aS_ma7hj$=-vPZhUw)u|bQ(;cxg`=w~c8ICBe4)jPN%3KwB_#)jS=&tMry>i#Y z(;e7K&xXm0&hdNE39WLaW59A+&A+OOBI%Lnohf!ef-RqFwx~v^KYBf?L?fct;1`g5 zyaJEO`PH@*aYzGpVutV?HX`i2%9$LJkou!9BV0@eUY-dtP=9%vTeZ{L+My;p)ZgYx zLPt&Ma81GpPSl^p5>zpY(C?28mT!8IH!elM?Bf{epty&3ZYuEl>H z-qLt^vEBbgiLhpCqWaS{YfZ>h-#s6v4g1I}0s0<&O2`@Hu>ykY%F$d28IS)YG9}?L zJJgSJWWV|GeFC&Y-TqQ4-6`>9YP?H4Z|UveG3(lqojhPl2Q08AT@KIN#;T@Rxj+c3 z=_AXpQ8)I?aK!$N_Nfas+=p!e*B)?is6+<12w9*Z8Mu-H*&UG4``I_5$JMV+srNC$ zpAm;oBmD2cd}_@UcL#iQAoD8Kb2_~b)6doIS=lvpW1(kenUr2eH9&vb?CTL`|hm2$NSEICHw8|C#2t;@qT;qI`-SN zAqhF#C4x7-tEQ)YDm}3liTN2GvK{J~7f$U?J%6j`E)%|X$VB@G+3jz~_Jc2{ay9Z7 z^yix?Dh1xVxJHIPy8{0w!V&`g;TECo;{U5eCQLies>r~khvpY(ovKb`GCo=_PqY~m zpKti43*~Rb4K@eizt!tW_#ZRW>tiVWc#>1BG?dn39>2t~PJMKBCmB5NLcB2x(rI{f zm`IRXW7Z_pPCY=<;lez(Ew*|p&>!?3 z-Ej|hn)Go-Kg!9bBIcMn6|t*0h{}0rJp-S)Gr}}~J>~)`cz&!(0(9j9o7iP)!2s+J zLo)IVfn8lD71gVMU)sSTLl;7W&eySI`Ph5~Kbq)U5`hs$?y;zCcyyp{m%TgnbEDA4+lW zMPltpgSjReNRI36g@WHr{7=};*o!(r{@q}MeRtCioOa%>J~`KJMzjwQXnBhCy}32# zs5*83H`0-z2Qik#T4dwC3Bv1t2U65TUD5VdsK~S{nx-oZqr72V zhlcayDCLbZrq={Tus)Jv_VROC2*ZS+VRlikPSR5K6d@x(k$-5gEMVlEDHwvuLtO?x zDOAEF^ylF=Xar;@tBNP8C^UZ^PXho}!ktp*@LYUam@6QeTx|p=?&t(#13o`a2s}d} z7dD9uS*X}&MkqtDkUi$Rv=QD%5l3tw_4(NTB1h9vZ#Bu+Tz^MAzM;E1He4o%N z)SK&K3+;01gG)pnazRV=+d|iX?dV{&74!mwO;23j_Nf(TL*C4UyeUh=?`{G3bwXgh zngiHWK;o%E==^lRCaH+#L8x@c4AMwmB$65%$u$}YWhJ&eQC~t{?1dvdQTPM~WF`lk zmN`F99wa57N~J_R(fvf;Ud=#P{|FMH-^RCuyp07D|4hGK z)g5+8dP09`{g#mHH?gZIG})ulTw}~CMd9c_#lUcaldW>q-ixKq-mLSeuw}3M6?FWW z&f9*L-7P+}B03gm1jVZw#lB`hanMGwNTWzN{; zvSkvp=wAs)Mk~hF>hzQS4IDOy*P|!X{MoRaS%Jy|exUO=MubotpLtk)%4(M$h;2_j zk|)E?S~>>AEyqFu6s{acLL(iIG)FIfMDeQ)GKqh9WJ&(fr3ZUY!>^nVsZ*6Vv;_Q$ zMHI!_Ad~o~ddx;|)drc&KTwnupXB|lYPABiS*tD~7Es@piwumDXGN=Us1bq3e4dEq zB%T_24~hm8fl{Ezp+4vuhjcFkPcv=%M0L6 z#1titgTOxG-VCjdGz(dV%tPrY_aQTtQ-- zASTvUou`xfFlmsc@9_-KcOmE#;%Icl^@}OICXyLN)E#rQK$GIP%4$mO(MFK=eY5Q!4+A)G1ie)qO)~{@f79Ly_+VM%@c6MBx zX!lT=4uCm=(qUc{s&-x|tk{?iR*ciE7}yM~P+-xitlZMYW@Y^L(K3MGyqZQ5B9f6B z$%&>wGB1wAM{(nF4%$pb1WC&LrABLbH{lUTLwTzv{Ma}=SA+@p!2%zB0OafOtj^Hz z>4d*k!%ri8_c(ly)cRX%ct-Q-QH)h`7F-%~cpVy~Ni~8vAki|29sX{5Ng_9h)fZ=i zb5GZxo3n7UvaM%4+WEo(=k^3~`4{ii6c--u6@kN=zM;w^*mp?9gmrmgF1n-@YJ6VA zGYi65hMFDfs=rF7gc_qgr<0b*fYSMI)vIA>Cpu+Ibr^{&scMu1IvB!Pld2C8tRVMW zn8$Dl=1FUY%=nt2nXDP6x5Fhez=P8x*nBW5o*>R|PHW6V^!rL5@Hams+X`uc@vh(> zjr>LKne#S)mmYlsa&6*_y>sRQUiqj#Ef=pn+K;7*zKQ@Ya&B|LF&?+)u{lqD&W*E$ z5KbpTmsM6_BS+j%JX$s_IDmBj23Kr`7X=$w+=ZyW#%Zq8w|d0!=}QyDpU0WzIBMf9 z+{Y>8oAKh|$+Q)`u+3qFo@4GnPZehv=rVlGrQ?8fJi~zss~}xIsCLz`D7+Vlf2@?82u2+E#m|JfTg9;Hk3=7z+*n8FWk0fZzFwRO)2@Ji#4~=SwV(=p^BXZ zv4S-$%1eO(Edv=@o0$c3i0r&y@vReEQT*T4_r&a_Jv}+UKgKY3^Huz=@ z&L4vB#4rCKIBWrE$O00!D+j+;(2Z2QFt8B~_ux%ToPH$UnqACyWXmg9*V}HB({2-3 zCrK#M8yJiwK?bZ5K;xq^F8G8TYxV>i-zee%zG55Sm?S<)0tP2BMBbB;2@`+E#zbSUpoenwk{Vt)HV|Mc`t1Bedj~HFR@

sPh<@~VgLoCPmsIjEdNrnkxV}Ob~s+&6wTr} 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

Mfcg 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%0D_yE^(rCOe% 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%0DXt`H+B4*I{t57?^sh57VW#c&5p3* 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%0Do%`QSOkCJ385{8+@M@$|frX|d*;sQbgy@0X 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

0@~8csh> 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%0Ae0P&6N9S18J6G=FXzjgT6lkW~3 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 z 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%0DHHv^#%OR$T+ z-ZaF?=SxBr!DHrz5sF94H^ogKpP8*UX$9)%?O(Tle9_7=LTS z>-4v7r@s}01MlP{f3%m-UnyMp`ox{xA5MRg;brTcHnPro2GF~9IJi?B)91Z+UlKL(M8L=sE1MszyoY@T#vzK#

9LTxXK=P4=C)e&NBv&n-_O&W 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

o#a#Y`|{FGy1k{q_+Vpm{PFG3{Ckj z(tx`c4MF$4WaEz2I(pi3GD0`F@5#8UZg2gJets%c8ZF_&YcF zn_6Zb=;V#~qi#3kAsXMzHxuEGli)=+Y&ezW^#Q)F5B8vGyJewRD!a zHyPnS@)LEomfZ>fIa}|2L90BV2td9Ea2>-4cVh1#F3I;$@S%PNo8&(1q-WZ<67r|q zY_$J~kFyW(@ZP+{!&^pIAe5=FZxOul8Sq@KZ$DM-|LogO3ffQc?K1;|iq-x^+KUfM zWT_kh$+Y)g@V1|XRba2l$#WCY1oENC{|~Fcf6Rc*31mH@cbiDf9IHDPs>?E*H||hc zQom*{d66PDk5a0D2TkJL?_)J#17R0nOUO^s21_>J%9z%H#ZczGy``BpxO!Men)80G zOviodRle=xV7K}1%^sE`X!179>Ww7|jZ(vK4lE__?$Eka+ zyL5D01QFShv(2&^7r9s7%0?Y}1N|s~o8xAFaD!^o7@w*8{{)QWt&Aee&5N})@?Ca? z6;9Uv-lm_#vGV+JT%rdRn5f`Uy=JKcgME=%jZc0dWO-9)uw?hX8*Pf_kAPm^`^D*> z9TD(HA*bDpmH_&Q%D+e==VBZ0ly}Yz_E2sXlx-f$AVC=xLTS%_*F(uMD5)8;Z(V2K zu1xJ3e7iigJ2-47E5Wxj`JJ1ZVC}vgV_0`kyG_2`%Drfp0-j+#D&6j0$?aTA4K#&( zZ`SUk3u*VcZ}*hiy%M&QJ?i@#?%R>Gj$>EO}S#9Mp;{8_N2Y7!3y# z|25y;T|~-}HpCDe#de>~6votNbvmJ%{Ura9q}~NtFd)t!W}%2a?6OQn4enk5r`C9X zhwFTU&BsNeXBV|i6pzd!56i*O+2&F58qB{07+(eWB->a>8?9dBf?=!Xb=mZ(rb+1zE?-Tj#n+j#kG9c0#@blPqTl5 zSYHKx`lLHK?mhvMdR->;Yf-5ST>pY~+`(Vt9()Tu4WZVJD|4+*6==FqU5oo_;O0l@ zt!pD`9`TDzkr^HQiDHfkxH6j# N45B1Fbd+7RBTuL*-5+T_^J|6F&B0hR)rP1@} z;n4FePtUx4py!9zL%eh@{{ty;6A&?-GlS>FU?NhkJA++>1Uv-j#(H><3tnFj@6Ek| zS0#8H4VXUl^HXFZo0@0x+0VDTLhZ_ZyD4fn(BqM*g|{Gj$aT@ST8g?6dM ze&4z=X5;Fj@4*`dC4#q=`Yp8jQ-b#=4^I}U9o>gsHTUaU*aFVnU84+KVg!aaqP87JsZ)#c>rQX&3xF7ZCW#F>oHfguIeW;T5Kh@H> zX|9HQ(l+rg2eIrw{vypj&qwC-koPWrthwhiRw-X(;`C08HKMVK=1sbEmWfH~sSrPj z-cy&FJWMtHL6Y{5!`lSd=DMD@oC_7Az(CR;U~a;4V%eAD;=0(8l4Pwnwnq?e;0jVf zC!wAZSM2u#CeMNw5YygqZMsgn^LwF9G1DlMGD4*Tbuqe zZlT&8L8U-0Y(mU+mE=VL^0zJZ^&U{Yd=LMHAAtWM{Q^I8&pko#=V7~LxHKg%X>MkQ z+}Mx&{_B#eE&Em;=r`S%G(8B>_GZpVvV^7?V}Tp!`_ESYGSe8}QR;uN`WNrY@!|DF z7X62O6Z)rv4hr3ei_#qwrXEb|d+^)NO@jEwsuT0(uebH8LHGV@=)*ZKTsa6ByiP&*yX-;4V?P7ZNZqs)#!mxAEpND7EW6!C2g}z>m z?DbGNhWNVL5)&qYZgClS0s|#~ya*NaOBRM+vjM{WfOcNRf60$b^3ngBP4)lb`+v$R z$Ew9>rhhmB$aQ@e+R~zH2^!yrOVaH)4uTcZeO(sxRcarbKoq*h1qLE{6D95+R~v&J z4gF@nBD504*RN;d{&mex6E{FoI5+tdtdogTj(a`;*cE`D?(Ew0-94Ji`u_Pqg@E>A zPN=WEYJ%t7`~@0-E!TUPQgXS#$FGZYHn@e9rn84IURw#*xKr4LpqsvIvNAGwS^5ut z`B?mnLqgoLyCHaaKI?E^Cfzgns|EkF(?Ti4PEzDqsk`DTqteG`LnWn?f=YwdL8Tbf zGxpYtLY}=3lnx8jBJ5JF(W6$z=If)j`Qn6O=VFoNCVQfCZ60@$zpcxB|7~>&)ZN4* zF;q@3Z6hPquL>p)W5uqQ=0EZ!dlss1noFm+nO7RZ9fWX!NBH5jAiRKqAdNyd)Hl~4 zqN#=9y!8P^_r`Y_mPX|>>f^XSx64XB6pqIY^YEWN3-}6MgCHjg{s<30g7p@{&jo(+ z0$4-q{KhqA4}XFGO*T)DFZda6lPnVFG?~CtqE+MbvtqqXB}pBvW%IA;*vB?9U)is` z*seOJGWv-?B$q464eoKY%rC>%I59xp`)H(WKKDno-z$%kkHoHU4Y381tLb^X@8CPy zRU4(6MUaUHRPu3{pyd?;X3nSD{M4U3y?l7y`eZ9PZ}kGyg5^Bk!~`v%WpF8BE~Om3 zf8;JbMb?)0?XIBQt>%ho+B96k7p=Rkz(5fG%Wo)j+FXRSb}*dNroJ`DGUlI)AP1V1 zPOIe9sXR-f(pAtimg68fxaU7N?Q-LX9z&TgMF2BjcYM!$y>i7){4gBJPyNS_Pi_Pd zz@5M`Ek^4}CGOF0&5`8QXNx@b>HUz|2NmS`I@rDE!8-%>yqJI1MelzVshb$$J z^L!#gM6nQ(t^Dt3{D#8J1IZThBFA2A-?|@-5qrLtq=Vi5#aVHEzaqvOWM9D4JFxB- zU*#^Uh=3oxs!)!(N(z7)XE6{3hn>qD5ihJHh{1lTB|in_19E%tzabnAZ>TJoueX zeU=ynf28iDnC{@UOqWCQ6}TuhO>%huWroMpA>iTT&Wgu7@OTXTTG;o4ghzL6RGaKq zjlUmKgOs9W$qS}Y4tU$k&K@SDz3o>XdOVQL{EYirUT{m$5ng^X{4Zuw=Q$lc$WbCI zm0`M3#)aHQSmflmvzS@GjE+?p-v{Dpj>dE*GH0pqz|UcK7Wv3|v3tfo5>EWSY9cSa z;Vk~`zCs}pJfo-HQU?X|tqs>^y^y-sYKgYLx{rVSYHi~;yLISCMEWz19S^j5QGJEl zxNj*5>dP+dVGVeX&No<2g9Efa`3>D`eAWEzDt{jm9xVx?brJ!5xG~e^(xf0oQ&dt> z^3Q>M_}@86UDRWKWiO#TH){2Z*4|L40ndP(cmUPPO~Qi-WPuU zO|;qp>}uQjhpX+Suh#M@??S9fKKGk4PdfH!Mf`G(wb!`6jJ3;H``{f0Fo~PfdC?yysfLuRww<_Tj@_tCWgFa;?aZlN z^PqSm(evLA`Ojwrpa14RFSx=UiEt+dpWoy&tApWjM6`Coi>d}5`Eta5W<&sZ<1#wD zLpctsw(N-1e9a$jze`N|&NvO}o8(u|R^K6ghg@n}Kmjx1>iGcznZ)K}R%QQi9Eb-O z53rrcMr$wctNj4;S24gc29BD$D`S8^qKT5<(h=D|>GHx1xVGE@cRg;3Ja5Mwhwm~r;Iz*Xwa@s8nxc-LBv$Bi?4E}7unFy9>mb^ z@k2l4TZUc^Nf^2|so~si8o4>Jm$j2c6}fC--U5qEc?7+72u_om(c~N5yL7R1-aaw* zYkBGY8lt}5{kS4yz4qIkOQyK{M;Ml|Q^Ar)ptTN-=Ls_R7}&QkXa|9%R72o2nZN*$ zSBwA1u`L>W>DRmNn*yQdeBwms{%bD-f3T)!`^zM^Yus(YXYKRN zFHgH*JxB{L_fRPH0t{JXku@$uaASX>u0JZF-)`UQ{4`RnT{@{p^Sx{+yohQxR(`Fw*pMKBk8m@B>lW+QzW%qh&5-*i4} zVw-v<+@CeKkH_V?Y4c4#M5^c0X8a(F$y&po=J4f(UPAKL>b zGd9HsL9fOy8QZ}cTXTQaGD%Kon1}r0yF$-cSCN`?#NL~ZOm~N(q`M9wJ%Z6iYUC~B z(BP#EU#0#eU!U^1l*hG{q&)%d7v6CagO%9=VouWrg5|u|J-KFFX1>4QYX6_#Y(H;U zMWSt9$El6B&Lk&{|BIBJCE0R{5vDlWAqt3MG%wrbH9LbpaA>=9QJQ_Co=MjbpOEKrA^Obv_(FhmcKQ> zW}p7teG@qN)E#d1Y`PPNC*W}NiZ4drgOclV(~pwDJnk@o)?XfluV8~PQObfT77x{4 zazXK&yKJq3rat4!dml;PRW5SJoMQq!y&NVVs>+Gt@0Y;jC!A|cekY&8wIBuGr|wMK zH*V`NYkISq{zdhOnJ<1$ja#X)JgSOd^V0vklutAKWFJ{Rbf2Im8vkSnBP)w9(p{9Cd)61Px@0}#y0=u+ovBlyJrEY2O#W%m=W}j`u+a(I|f+4Goi_xX^`7p@`ATdAL6#L_`F6h0M5~?T5e!aH2904 z=xh~zs-mKxs8?8YzKZl>uIm&O?H3k3ry_;xxnH06ef>G?>m?OE$$wl!P_$22^u3B6 zQ_;epXxrxj8XR$E&Cx-JdpaokIxOOxJ8RA%Dw-S=Ee?xx6~q^f4vMCQMZc=(0JRz# z6io?>cBESs2St@(k$BdOnFjauO3%z+h}4Om^LrbQxH={vc{tyUe{BmiTSS+k`R>=g z$eqfB}iM%#oFsrHuW7Vs~N)Yj)!xVxt3h`24om9qwy_iF%c zH5JO@>#DwM9qU)RX;Dd}<`%w`qHPDEZOgPWWau(`k0`!gLq6t1X}Jb%-M3n2v166t znvxEb^mgNylh-NG&-7}#{blYzvA8|c+&%{iT61sG6{n_1zu^>MLbGP;Kf-kzoRl1e z220z2LyVE0?F%FAPbD_MiQ;$WOaGl=tdtp_{q9+?QcqgDRi|6CN;T^$*ooqM)o3l? z(CmuU43+JDYIKoxS%UexHW%}U+fApz#xim;y;osAH+BW`BH+*=Ocbv@s1xip9;f0j ztePXI+m<6zBYmj7%$YoZ!@n}M)_$))naf4){r7FZZE;$}SDKpUutdeK|AHnpE!tFl z%PoY(HvH5+qMK-6^0on}PVqfBLbwH(y%*dv-0!Ex^NS_adwW?D2j#eP9%nC&x0IQg z<>m}FA}ue0NdFS9iQ>`oAW}WVn{%Lg`+(eg6Zpf$kXxH?UhdTz2&=Sw!$I}fE+1Q7 zdnRR@-H(rjUB&KJ(>s?6T~aUm6igp1lWTO`e>|!m@e5RCoCYA=OHJ*cR{OtN`^vfc zyN03ro$A)pYz!SWhMWBuUYN@m+AsztI`jPMMRZc~M4RX=x4^gi;zZj0&9}Qj?Uq6l z+D&FGA%l!jJ5ncV{dcv#-Q#Mf_d223iE4M3ZK)aX3l zC{r7@SEGN?$jejO-WR_Ot%&>UqEV6Bm{0G;E4aj%Zxg;%99;e5Z@X2m`fcy2?(@GI zf!eF@;9zC)9QytSoLUg*4kSu;dDX(9&0p$k+7DZ@5&ERl26yULa4YKQ?)kdqI(2UT z{7I)5>=UUOkS(pUP}$~V2Q<48u%B;HxvLt~jA!`}oKH`yrX?6W=PmdytH0+0RJjA?ow(M}cza?E{(Ko9ABKqmwKJaj+G)n!LrtMW$%`R+_~ zn(c0s{7UzeOmWt`I|jBzUw&QnHAx$|N=0O?-{fiN~_l7M{4Rs3{n_HEh@%3 zwUdZmF84tMAhCNs_$n&5P>OrG%~wNzBJ@hR%2Zmlnv5ok4c=uThP zwEG$7aB;09)UT$}pFj+C77)c(iL5E)?i+%H)WZW1U*dORUmpf~q$Yz~Xd3l-G~*W9 z_}6s}qfmOpZ&h8}m$g;&sWG~OBB1l5y%$C9E-Tna;jPc{&6TwFS!iaEVpasfe@uU$ z0^jENR^y6#X}M4Sw!X3MM5b#_R<5Yiw#yr$0f#h7zcOQ-?w;A9xbM{9INbxweCFUrH%>ms2qa+ z;ZIZQi`+i^vLvcH++pMD+P!DX^yKFavQNkI4eE>RQRCmJ;NrdAp!WSWUmw}Ni5dJ2~V{2N=(p;u$9 zZAI_xl`91!&z(^(cDb3XGZp-m?2Jf+>+8%@jGk+cgPz+wJ+Gb#Js14N=y^S#LOpm5 zGMD@Uvqsn#dVXYXOQ>!WE1zU9>g(DiYJ{8Y$!;c&Wg1Hl2CWBXf4u=OhJUiP0j?6^ z*;k|R${1w6uXD+0{P^4XHpO-J_*DqM4IaPu>cH<{kDqO&=GtQAmZ2+>$Acg94PH-C zErSU|?mO=0ChmI*1S-I+f(!w@k}+5%JvmCj@NfmR0qMfoXF_`7%@+42BgWHUgyOs` zgED8RXZb)4eNzOol_K}~?en*kpfAKncu}~wSQfvipjYX{HCg%U{~{QRMSTJQkw@b5 zPLSk|8}0Y2Yur;y#5q4iCVvAK{?QHhINw4AKpQE5uVEAkq&&y$KQ_j7FMoqOIruz4 zNYpe|J{Wi{6@Bj3mBCz8>Sa`IPV`Q{%AYw^{E(Ao(gk&Jp^P^ za)s`G(P+e0xADvDEPJHX<^o!6%uz1=dEMu_UWjIrr%ycJxN;A1S3%t0L%b>zVmT0@ zuVNTO&fA30Cm#fY2!~dLr$x4+)JaAT-cM&+8DYTY+e3Y~eVGoJ*I<(GWw{_K zk4Sz)#isS%TW80hHH@r_-Qmul#{LwTaqTJMg!@zNB2eS8GlpRorq9KuxMAhupH8PA zgZ$1j3KU1CBfle{3q%`}L4jO}bfepKvfnuW_@D;8D)qedK2A3aEm`BvCO#L_;NH|n zwjOMa8vLJo0{;~c|Ap6p-^Rnw+#S4#;HIAQddn^F?PjT+wjkJXH>llG@CC0MGw>Qi zyW|MdWH5sAf+TAYCfn~cv(Nl~KM$VF*`jRYVNPoyl1^e^Pz{m_OjJ&jmx>; zs|l?`_KEvwTCE?kMcJ>D6#%XJj(3n`>{ld;m;MLkrhG!S!eXzu3vZBK(-Bu?XFbxR zRgAzOmQXx)o88gZtZ(eSyzs|p~sfU+o(X5B5lM2H~w-?kX z`F{PJ)$9STW{ioZDyz5!venF;!OyJ7UtDsXF>VR_pZ-RNXa7vUKZN~Os^2AG1RZY3 zpu_d*H;1O)pB)0?tX%Mt%sXQpZ$R=EcgC9 zba{&QZ);aQr!s3ouKT6~2%^AudY`B~b$FKR(f+sJCu&^XTt5=u+r&)R1^=&dJC|0L z+Hbo_iW`R26+s7<(*r-7${FnF?Je}L-T~st+mEA%`uI%!m@#P^%E8N@LM%EDru}2g z3|he*KABwVz)imV_igZFrgy>Yad{OIJ)cnRMDg?d<93a2V8(QXFL8$&ZFBYcHU|U9q~|DgjBv8`h=y9kM*NpIUa`on|$qaV?E4nKoJxaxQp?! z1*M}Xl^3a#9g%X<6C7Oz}apRU+*)PdC{km&yx<#vKQ&JyGxAWyo?8X4V z)}5J5yFHQWkEB|jKmEV>^Z!-u;c<-9xYFiF{C9A`)VYm=^C4TE1G`}`*{Kh}((S?T+Vui$bf0B@g1#e>$H# z@megpATz9PJj)BU=id+TaR6^FuNXA!Za;o~G_??;PWMx7b{+^xQMl)8Eh;nCRUu&V zkG{bw=7R|=To!TRL_hEKRtRUBe-*Zw)}MC1|8a=5djr0+NHAO}Ttz2s{Y?A969nA* zN%Y*Vp1F5|VsqC9LxU+KBFQ_cY4W!Xqyfne_Ee|=UZTccXis<53!sLM?;d=g$E<3jDP)y-UHdlM;_?77JQ}7-wiA82Gj;v_!x2|g&?fw3~;n8`< z3{2UHKU?Ti`Lj3sBWaz9d#@;ib{iR+Hu8y)7;)<=5h7llX6-qt_qH6rz}>?Vv@=7mPw5JFJp2W2jyoO`-v+hHD$M_UijYGiSFt{nGMNA+)w@UYC4LhO-oqw<|SEmG7lJ66;3 zd}ejxlhXCS;juE+&Ylp>;eA+pUa-VFEfv}pgfZxdy`uI~R<-@+-owkYn8l}6#J@cy z@oK>YYVnBXGqxq-wgJb_>!Vc*^4*&kbAnhqcBPAqus@vJyK+ZkMemK3p91Daz|^&e zv2DZhl{@STDfnA*-H$P9+kR$PT|df$O-gcCDx~#6=4iAYm!8S;@h5>Sq6u%4Dw;4@ zuN^phusBboo3J)-4_+{i-~WxqW%h;iCrkVwtPfW0AY#!u4S{RmtMSQs=R7Z zzMFi}4t-kbKEA;IaPAABoznZ4%1;84?U22^nKx{?k7My=w%(zfy01(9gWwvXX;W)6 z7)1O_{QLOakw$ic^*vgwIj@>P#xxG#?vrO3>ozS@w4a>F=vEdc9 z%BM&V74Z_5dy;@eQHx~-*eCt+OB>(UWENWEqx%!Zz!SUW^H#U5Xj7RJ+r3=+ZNzmJ z8GDrUb(4}Z=j;rQV=WG;d4S9WaLD4lTI?Bfg_7EO9P^=h>?yqw*dx*=cqVhoyPhP4 z)rVuWXzfk8?x(7tzV7K{;G99FcddcdpY4iNaj(W-b18AZE!JEW8( z(X`KT1E)*T-jY+=d*LnnM0-bbDwkQ^11O?i>?WhY#A~^B zAt#;Wr0xz+X{}TgVpDAK`%zyE38%RH}KpPKL(DYj*hH^kfxP)AC$5C*T0ds@uaj!0)Jg zsZ|1(0T<}6HwwZ8tKHHkwJ7;mZ5c_^ME^u_M-JxP_*={ppQPG}-LLhHFbB@G4?Rox z$MvBO?M*y82NO{izY>_=yGBG@V?_}mhA`0yAgvLp!`Bd6_(am3Y zBzFVJe3c!3wi4^srFq)v|q>4t&S*^2jPSK3F$DYmQC@GSZB&uw3cF5+XPrLwtuwt+?%rM3&W-y=ttwYPGykBKgOTv>2c$ghV{pqANK_~c5lRYJ=&Y9&-&0n z**WtbHwOKliPfI{-}Jwfb+Di~^mH=6$Rmq1>H*?j(RfG5 zwItT2qP8ouW0J|asU&j%Z-I~NE5+!_@3PHg%>~RV$FNl^+e9%zqixVhVs_;>6kY1w z+{;Z|3oix z>3{g7`D4%fjgI4S_ zxfa@1^eL=-FIsyYn;v>mIBc%#z`D~L_?8UmmY2Y)OR1IwTJk1L>XFbcp325Rs=1cw zO%lI>c9}pe#tMgPEE;`HaZ81P`!I#=ToU56yWzwLgw-D`_viwkRP-*4=tZaWa6V?- zsI(uWea**2g^;&@sI^V3Qi1kxETKJ_!yyRh<|069&O(t?lL*K$S152a=5#kBT? z2wwZ9^Ke+|2&5^{yKD{a*nrage59$b&rrH-5KPfdCkH$xgtkLWAPV;r>Vyh+zf6Vu zpf#>skos3R-&N^c1=e4+WWv+J>~KLGd0yjx)ZgcFbG-y z3el*T(WE=f&`OH@TaiEcx7<;rf9?!j*JYMiwq>n<%d)!`o673nRD=9U{zV8&o$Kn4 zq9U2!^YuQT&%Jlb?tZ`D$Is)Txu5grectDN-sgSZ=Y8JieMW6`wP%Ad!^ogX5yU8W zkw1QROKy-pA-lJRRl7^#ebsW&SX6e~E}*Y^7M2u)(? z+w^Ba`=!2jQny<(Nle|A83L!VYDTg+{w3Y~l5SpI9I5-vs4I1BBQgGJa5^~+Y{Xbi zQ*K8<`ObYRM(?{)@#_mqvh8mMw4?A z3jRC7Yp&tNLI3Px_Gp}va1OThT-z=dyN5^r)SPLhU?2-egQ=FrWRNBIJ&?M zLKFwxrGvdFP0@RG;6j(ZZ?jw;Qgh&CKvLKwIQE|L6jIDVTty_gY`r z=BW>R7o?l`_T#B$3X^T_Ayo}z{uuHrTLo0EiKvi2MdJ$!-I!hnX;GxNoL|R6-XX58 zVdJe6h>v2k0!mxoi4OY!A#H5t!+)4#5ufMuD6LL#`0a|X55Xu(v4QZlQ++y2^~R}1 z=Rmdil_iCl=L7yrwON0w^60NlE<^p@w863PG)%ld7G_-)!8JvHw@ixMavdl@I!3Y} zeF?wOH%-cwrez?*WGef@+=~h(cXJC+xil+wI3IZOUCswOZ`_o-tJ;`#|Np=KvAz9k z2m5N0NCRz?1!b+wdzH{?+?gL7v>wjo$Z`Z{`KS|JIlroFDt-JIy zSNEqS*0--}u-ux~T+wuryvDE>oCk-suo8Mc)w#KB4`w!<^7R%8o8;b+8Ler01XhNs z#P^B!dcTtC9?mz8y{8uORObzazR*$8#P{WW7sn<>r+mMf+O;2NI_D{5<$c#j>YBkI zGGicCu*Sl=d9@jL(l3qlf9^_m-Xasyuc(Gtr_#;pqe_%2V?HGNOea3wTDx0 z%0gio?ni>S0;rpdi#kYR$8K_~4>s^ofq&nFze(WNsacJz2FTz~SP+iI-GD|kGY>nX{*}c2(-k`AxTBA1QgrZHpsNVaLnq z5%6{%bz1n-PWjrTFb8T#onnT+Z5<235}NCOsE?CD2zlKePrRu&GBUep{0%HxyqMtl zIl5}%zJKM%W_=+Wj`1wDI-644qkMAnp|L%pQ?{;xh-2ruZgg>KWp}uvu`n~E!LAhe zTK}LHQfipTBvu0>R=L}I8fpLf3rM>`lt>NO_Y_Dw4U%&`X3oW=8D;mMA5ymLFuS~4 zM-F)_GN%gf#WY!f?fQJ%wb}t#W#R|cpBHg*RzS}|C6Rj?Gez01+1%LMqXd5+-J_yu zP&gK%TZ<(sXU}yj4l;y)>;l4D3;|HS>SR#pjnOorpzn`%i zLQE6?gtc9Y!dkX>WDfh>b9xk~27l7ONYHoQy3Ob&ioAe z8**+$`|94qA8*9ByQnr9pd26Jh0HZ~YU4*hd3PX)JWn7jD&ysh!cw)Na1oBiFu8nimI9F(Lbs zvMsbWR4g~kr|zUw-HQOzQw4NBjd_X%K!;?3j`lz~ ze$SWYnjgXbLdJZoOm;h!NyZ_r`}`q7Me*Kw(!^R=?A^{rvc+KP6t}?5h3Jim4>Cs0~UUf$b&Mrn1b%ekEr> zRHv>LWov66t&qXO=KH6)$sVk?A@V&yey-vCIq@O_|Er5-Xy@7cN^L4u&#w0U{Js*R z{((|%@P0N9LrS1{jb#q_NSUW;BxG8WC3HVF5XP&ox+=(ndt z`c%eJ>nWy$zz9s-NmR!vU*87>tCI(6S!HjD#FXu$YoPx`=JfC3h3@vR5!o|}r+{~At*rIXgA#`^keef=|h z{ZDHWKUO6^_C|_|$;Tfasn^Yms`$1G$6j>e;>try53fp{%aAN=61xdE7SL-N4xRWC9Dxbgzf96DvGCmZ?en zl*P;NFw4s>>AS#A?YCT)Z?Q&dF*~x|(FpoIloo+ruBG=0fyk6waUu+G>b_zCU<3+zmyc%#!XcU@tcF|br{t7{8qz$Tbl>e`07nbp2oLZ! z0oj{&28gPN&|LL?QlCI zj3!%gDJ&XqMcE^C$lkIC@HhP{h|~|FzCBXez>c|gCj*@Rk%d#3*WR9)n$rgYnx&s5 z7n-JV<;<7ydGg)Zg0}$84BS~>JlN*AxV|2+iH+{W`^>7ogirIOX>yZq_g=)QK97^= ze$8hfFn3A60|$BiDsNpqVvey)W^zAZa|woXmgi6S9arui72UXV1973&?8~T(y~EDq z-PzTW!~QDERb))Qpu@F^zAzN zxB)y~LTPe~RExhQWYU@)l+T%_7x@^_mKQQjpU&;iI=*BCB1$i9r@z&Zr7kbb zbj;0Xj{UVYno!^su8)c51qY;!Ah<;d#UDUX2UT5NgmW9ZQ@=Ot;vVj1BIS^s5GmuV zFPq)px|2r4sxefwUCw~#L*->Cl7{^PkKc9m%vwho?RV10I1NPbg?C=0= z)JFYJ3eKDWmx`|u#_*c1(K_lVG_THE`wNd1`L4HBZP z+iSL`=j2gLYHj}LFsUMWN1|3Dn;Xj`15yTE$NH z>(8bWJFs5riV=3(%CdPAMn^|2mC9X}>ikyn>xo zTUmDGq@!YcByTK=H@B+&Q~dkF+UG0SA!cTJxRuFkiz>^;7R62_D>hus#Ezl~lmS|~ z>Gze`Hwd)Wpo&dGC{icqTY*T+|06svuXvGsS$;hslga5I#j{+ud_IvTEbqZZB^oA_BWkcRYqo<*&#CHFAHG^lLJgxac6FV~D(aqt$^uV58S#a=BwCDj4iR>l8ekZv8a6$vM0W}u>F>Sss62|p2$GHdDG&`L@Q=A z6Le`{BlP;qsBfaFqpzN!8_%X^YDvGd2~jkIzSA zx~61f1^YTCNL746*FljPmv*4fC!)$-3mVtb=kMaHej?&QMf}sk%Jz%Pr(Ro>e%{!f z^W%AiRf+YPSz&)F5?g}sXMTM$(=P_C)LuuPunUgVYgbhfpH$3z>V!eGLd7MY zA8jvj?zO0KWSE{?t%D&gIX$Zp9PClw;3&BwIheDF>K=U|R0Xu~%C*$k(kjLeg)>s8 z^Cc-%J*96(>VC)P;#T|WyvpmdI*Q-T^M~qLom(lyTXh3O18Q0I$e=e=!QfJP>d8zk z%7X%;79jE&1dmAF`BXMs{w1p5p6Kn*QIs9dZ>Ro36Eyxq`-#U!=Y+>BdE=7zQ|Bv* zx3u;|H?Oi|miYIhCZ%-(Us_X0v`8AX7r{r;B9?pPQB{0h*RsaQ?NT_ZQWb@1GnR$^ z=SG)Qm8T0aV{x)Dn{!?t2}MpH6R(IqFf)CmYc^zJjlR}p4PMQuoX_>3rh=# z>?Ia43>HT7cDLFWR2%mszSkq>#2@W))Y`jP?$}gUC*H3H*%G(wuetYJwpImsAeo#< zTq+jr))a0CFj2`|w}i?^n6T1k8UZG&tI^FLR=fmv6r>f#$M5d~KIR(y9F<@Rn#tuL z7&;~bFOA025{-pZ&t#-Xg2F~9o5$(D(*Wy`ja0Qg(KY>?uUaX|@QQ-6 zYl0hc=`OUv0b{b=A#L+TQn2C2aj-ddiru|J$&CVD z{kgngR#%Wk>~K-(Nfuyt(YT*@8=3{6M1j}Kq1r;Z&^5wI`OUE(-4xp`c~TKda);#g zCFzf_6{vg|?-{iOOxngL6&1!>6OUcbU*`je%otpR*ryH8zdD}*&kbh8ahi zQnw3InIF6ds2@!OHR=VUBkSg|8H#iw8YWbleXj4)luPez=Jw5B`qQbb{@r5i80U)N zvoECh++My;4Rx|Etc;^O=Xlg7N%V{gBpUI?Ps7ygqBiiyom(ltLiXaDd00*=E*?)f z2Hj#s4!~2i*}eKJoOZ*ojIig8R;tO}W$9KGZQVVxU9q9Q7+~8A%0*=3zg*%*s^k9d z=|k+7%Tsgbu_G^bcWS*co3^z!e-*jh5$0Ij;w6Q`wUS zIVb!`^B}Od=!}}fH#5|FKY4fam0%>wBt@BI-)fwxbe9hzxyM-V-*GdKQS45NDQ+qowLHXa-FDXr6bG6s zl^Y&T2iI|sKW^yGwr}bF!voE89#k`_0T+zEm;3Qt^W?T^q_6{Xer|*uS6qToGT0Zm zZob|Z-&5}~U$3X??eFWA1Ett8q<~Kxt}}XM4anXFu%Z!6j0`V z%KST-v!@2QGjY!iGTSKgE;4x!-k8EJUb(Br7*E75lPMHFc(B5J<9?~Ro2uphnN42~ zZ5O#lvOE*I{QGe3srEKbXKaDqUwC@Yya*~jx6=;ebU{aw*5rWvcYa-V`40Sw{^0p_ zQ~3`3`Zhvt2Y&4+q@m5KpnM*`KBDs5@#{*8{U?5HB=5iR>m$WRhbuPc`1P4l&_VRs zj$cRYlE<%Oe7&PpFW}d4s&}2Qm(Q=Is@H;FPgTkE&O7pJ{jvX*U$5UOk6*hRzjhD# zwP(PuyH0MwuklkQ7B{=h(3bodIV%kgXRg;23IMk{gDXB?31O}GL0^&k^*Ofb9V{o7Y0a7GH-b4 zB0MJ`xfg3W*_vH__$hDP%+es=4fS}QBRuhn_HhU9`<|C2&uRx+iqqOdaawzj=h{l> z1r6kFMx?(DuSqlo!2`ocwcf>CtL0iwQ-nCtRt@p<2px#D|D_05lh}fT3UM@aca#y% zIVNmDj)eNm%((!G1B8pM4+~5~_@u^45j%Y7RRrF*%b zb)MBVI0w#)_pg)Q6^x6!uE_ZCoQ;g{8T5n@dIwNXjxOIgkOL=={xs zLvn>6uV1=CpbI@+-OdO4j*Vt{I}7NuuQuw#b(Pw7{p8L*Dijs58%2uVuV96&Nqkl@ zOb3%ZaWYS8@wcqBXP-sKPpV4rq~G!#2iNPjO0P+zYZ9N@1GL=1+|<&mWxO#@!R+fm zLkld6)XXDw|1I;h>HUe#vnCjZ;*Tdb!5{bc$>R@{=~?k?{#51PKz`u*$ow2G?UFmj zXt5JthcU2Oas$&yQ<2akBJU36i2DhF!1BSl>lrammA&EpsoKm50cqRusLaD%sYcS%Ff6+1&6D)wIUTheFOq zQJn7mIT0&LB|tjV9u$nHx8UB8oex!oE29U09CKDpV^Nl&2{lKcxoBkY#~LyS4k??T z@8Q%y;=|@4Lo`;k3*0WPjLYu*1}-a;5hFEV@D$8UU0R#8dyn#HQEmC-79endKV_k4 zlc%ovdFvVr4N|or9qA!$n+&8Sw16y<2{ME<4oF$QUUp++hRtN3&>Ug?|8I?%yX=dX(- zrg;kcQXi%N)lGVav{EDx3S%_?r@_Us^SxS6-4R|prYx`Kq|qyRKn=KQxV_Nn#ZN$-}5hb zf+F>QXU83HE{xpyxPGkK7O8)LAG+be88`8Ppr5c%#6SGqHC3w<>+^=1_N(G^=F#nf z+I#f?jasTo+@h4A3-u!z$xMBYKjU*|l3Ng|*CP>mb(9*`(N&GW-vs#2`0_`#EU(nC z{AOfCdT;X8|2g7E;J0d7Ua4VuxxIU{hsrted#xQ;v2Qu&Sk?lPG5s8z=g@t*(jMy*yWBdevT|@cDb|`;MSe~=K z=Jap#%3n(P+Whhu+7l;T8kT3L#H)OH#qxFUIQOf^w$MVsz{0%Dq zP_BGApe3i;ylPlks@@$5)<&F7H>Khi{Q^hN+cqK2$!PU)3L@dE35zn7^ zt{d?qHx*J{_Wc@B+W`$z+ro>sZIYOs4~arC+X;!Rs}e^8D>oklBKSsog^fPO-Tw4z zcENw5cfujKJ`gQubKy_TCQiwbj(-s8=~@tTuW#L?UFjTche7F%%mdBt1JDDN zwm#mTtsS=%=){l;+jnPNo9JR{ueITIRRyf%KVpl&cI7*%f+# zNE;zC#3Rz$Z|Mz@ZOxkqz|Bm_+}@(iVL_X_Y}e)h(lZa|sfawyha=#nQi?k$7E1G{ ze*M!j>*oGo1M|dJ42-N$tft@Jz#7;Da;A~LOQK&*V<3WvXK~B7U}2BcCF@k1FSlqD z{}wjKA=Rl}hVy9UoHo?O+%%Hk?!C`V-Rs(jy|d-|rSJcT_4IVm%&w==gZ+A1Q1El> z=`YF6$+vv$HGep~$xqtBzKXrIMFec&dx(ffMJ$ba-Fg}7eDp}kurk^T52%&6Abv*j_#aoF6RAnyL6(ZE?mEAuO1Pi`GZU<(}OULrx${{W_i z3T)%MD#;yNIVchQx~DFTRomNpB)Ct0)W|AJUOG(`&F^7X#Hu?lc90b9zau#LO+OB) zPK@FTgB&PY*c2Pwip|F3b*tg=>kQ9zZuOQOX8bhCD3NX$hNG3UulGH2YYtS*KjLje zLQIkm=zcLG>P*lN^vLlZehc;VX(c_(SN7|J>*wo# zv5NYa1o#d1HS-0*w@gVP=3Twkx-&ow-=g+{mE&%m547Yje`kScJ?-Slm>hDAPBS7V z36{wlImVS__+~s5UgZ^g_W4RFA15-mHJU8V?)7=UOm`su3p}3Kq;`YU8S_|GdmY0D zX!1V-_w)qvA16~+N?tej21^0s?%w-BJjIrN`A8i-u+Hc##r9Y6xu$=_4wO3X9tbKt zMg^RsP;HZOpoQ{e&}wH6&W| z=F?;$lEcH}pR4cDILLj-s;2s%f4_ZwmDs+1Ab&5myZfR1eV?yT{;uG+d;IIH{Dl#i z=Ki62<~K`%m)qL9Hl?rJz+Ihue%is_QendnFUhxEi;HKeJ#?yuL}Z2Wd_`awuK8Qq z_?+#9&<4#z%72avGVv!CszGkDU>n(#4Tbg4%Mlfw8QitK$ zboN>Q0fX)Ol_M{5JD*OD8T~z;~iPa(YboANV|9eMWg7EHi z;Qy|Jy_dmsMV#FSUAzD$jMPm8jVe85g2Sp8(Mut=;*H+(bAvi%p*kH1>tKCavEJ6d zGd^W~Y4CQAF4wR+{rekR16$=On+@Ml)Whh#CV(P_PrQW*6sPjbG3w0=82%z0Kog5b zoNa1#p2QgH8DlGi`nU%^LQ}rBaR|t0gKNX8e_C3nT<-}j=!PL#ykS)W^Hd_JGsGQ$ zR+(5Zll~OI^+j+}{{ZtA;oC+x{4e=&h;dZIGXN50mnp~qTEKsrG+vnG^;dHwK2yel z0{<>{zIM0W{Lb2|bMl7E(jAD3yAqkw^xeHRv!x1oB+ZfnDsn(%8#DpRD@l;D2FMD&4q-WIu9J= zT!HWvC+eZ+=C|^uqpk7M8nr-|o58ISE2j8o?&yMoUEQuT;4a|pa9{oV-*I34qUV49 zzIsb?mdmD9>@GO~ML*G|?@PTwX-QKUMO$XA@qP+f`XtV8K6w#(7lyA{w zn?hA%f&C09Y-yU>d`%(!muT}wSe(h@^)r9|tl+NN&xGD`Q@&nKBY2=x%de%}ZQ?Kq z5pj-MwuyVO>{Q8XdP)&awb^gHdCT!SeK`^-8mV0G7H(h{Y0;`9b;T+SLZ8|q-sFlm zn9_+xt+ym@#3>yWRHrI$QVGR9Qg^1+P-NGOOEIv&fV;EVo(XTh$R%z-agg+|>7E>l zMYqjs({UF{U4&^H2b#7PRY^;KA_N__{?x|A-7KlC{P{6G7?gSd~@O44WL*&&PW<76R<89{B$=x<_^PZcV!lqp#P^{0S^bu18z_?uHt;+ zRuQXQoZCn1=Q*U*q^>sH4x^#}PN5pz`W54)`rLWB5M1rLW-BSD+!O53Zqv90{_|9J zZBt=06xImz%nb&2i2PtgUGqa>F$6!une0GxBn3rUr#eG&by&E4oon0@T;J*0)re!w zk>C_B6g>^bP{xU3CGM%DpJfx5lSuB6uWY^g!-uR_7x?w+Ppet4j>_12rPYMpR1f~R zPuG&PCUcMEjoX;EdKal)y{~tf>TLxc)}1Tz>ODa{`oKlXzoE9JPj9gwd&f*wfY2q)7MkY{cW`|(GklTe0#D{Ns`&i%4 z9TCy>8>nrrwoia+Cho^e_&W&i8lif+qcBLXvQAw7J{TP3F*sisd;@0N&4dS;R2Gce zJ?|^^QKch%rC+MjzkH>9roT*;3Ju-zf?>uh;U>+k8SEVzMj+Glx^scc;6A439Q>zN zv8tW4darXRI{f{_qLI0U6bnC8e39Ev#aOy2iWglGh5dftj@Pp5GoI^x9Lpb?OKQOG z|Ljft6b>2?KszPd6!6Jjw*x9+*8fhC=g0LV&PTAmtNs(zm+F%m@ZR$P_2cpjoh6F;AfE>aDgBV1QNQ*5Ps`F_uPr77;O#)!VbMxUE0n^}UtR+d?Y&}WgN z8>A@Jk6qO*2@|{>0y~fE_Jwitx9`B13avoLeyeBV_x}=ZmeOP|#TRR<;3b9E5Sd8B#S3_1n z@scfeE-IU!N)NTwsDRCrfSmOxC=pUm-bz$ycBixOswl}Man-XD1M0_AkwkdS0IaVw`QM&=L3h)AWng$TI#v;NgJ;FTPA>x$o z?n0`aeHIZ0b@rpjKtax}>1a3Y>W`;pCaz+K@a|6fdOlt6&uyf?TE<9UDSD>{{8=x< zm;Kx1)@5KHuKcTzRyN9M0dku^vzpJSrj}W1Ua6YRKnyq}tobxGGYfO_pnlW1&e2gs zI3k#N@8O0qd4=l zgdzX@ULP&^r}w5D^BlTGfz``B6RdL+Oq6LwR2Xs34DQmRfNvDtVh6t2lQlPFu`J&_ zMwKkzOrVGq>h^KNyB#hv1WVzU1{DNDt{ zyHkQky^KF+e-r>?|5(oCn*B-mjXxgW99qoEo9;S)^L{%*Jo?eJtQU*i=HFD?_Wr_` z3>f=-m-0VKL3j2VAiIxt(LQlJ8{4(B*C}C%Pw1tD^-7rS6F5d$JNp|YJn0k4m9Rkx z_xXgV5;iK~R-b?gckS$Nm2kZhtn=m>vxzixfD1_7e!UCz4-x#D6TI?)O^4PS-9ue$ zaU=F=KUCpjx0G)WRTg2tKBGumJKjdjdU2-T=VA|o z(2WK9ByCsUf}PXrzoMi~6ypzf3NkRO&!5UnHObx8FwfKHrI)&WD4Wyg_XP{-oi`wV zO`m_7N?xB|#nYYW_0s42QOflBvkd>1`urRwt*|a8&;6Du#mAj#HPr*4Avv=8{GBWr zfeftwmetwx`Jecalh@McA0#E54{j^*j{<%EQ&5pSTF&3}4OWQv+mQ-hpZ>DK>(f=A z`F{P0-kLt$6WIXeRrLX?N|o2j=IJ+mg~^PgUqfaD`h2GkkQtABWHKXPpC2N@1dtJG zKhWn*KJxAMr}uufs`3zDT>`{FKcBlCh`;g>^LMI0A+YReX4lzQx<{1){romn>h3G$ z>*uei(xH-fD?c>cFHogmJ2Om`Rs#%qm%o>urb_Zt$`ck^S8NhkB%@;Y5E_Pr6#AN} zuqL1UgA%A~!F(c~Qm`%-)vw^m5oTAu{L**zs3jP+d%rT$8xxw&O>g4OSzkYQ*6ez# zIi_(HJK<>A@`}i`Mcj;Kvfyj@Pfdfe<;17v$E<>0s6wUuGRNUguNje`Q^L~k+a$y^{p9MHbgpA zqEFROj`GqN_v2?`?S@DR=>Ttj+nePp+pkeO0@_dlP%Zj_^%af6zI(43nQ*p*H#XSS zc~*i$Uwxq2PI26A48nG`&_h_6x#nfY^|!u?wqGFp7Ho)&n3o>TNayB9#hIh4A`=$} z!{*k=q)2Z|QL*Xmyx8t!U$rVXcRTGohvUUFbh0XxDDY|91zPqte(b#f2)4w7M{Zm0&A zf zV0eDB`fJ@FlROq>xP}uBuj=-quKI9Fpk_<=H}%P_LTOboX*!IIn~hi;BI0w z;Rz87`kVFHHhC8GcbM(H!~U-IDqFcutXuYXo$v1^9=$|LhkFYeaB&Lz{;qbHe4N+c zFLvzj`)2-G>(;gUnf{tbfvr%(2-p>z_PR%p^=tWoq2<6m{JpH=oI7|+f@t1MlAIVO zb<)sgM^1% z5n_F#hdOZ?V!h-&6YH0NZMfZe=>wAHi8{GWE7KbKqz0T!9k~JR!|&tun_F5_0VnPqDK!Ug+tt|`&ru^_ygR5-o~`j0YG80ImzL6Whs~wW!F(s^?o!b@n?uQ1uclETU<6%`eZsgk#i(rCGWj zwo1RVeO~KQdu8c5hyF$b%-6a)rUrD4Zb#R(ZX`7Vy53HWAySq!818gxK-VEc#G9P_ zl9DGqb^hoTS$}-xS*i-zq0YzPCXN41(Xvasa+Jf2IqwOu;I5oC*eoyW#cuX~nzUSb zCY|1Orbn}{fyF??y-~=H<2U|8E8gF_s~3JN(}nKXHP3wH8d{J|>tS+S>FnK%+D17xK?5_@?j(MqNn@zv~NPS7PlboF1TxtqFae|l1+ae{S7}? z3j05t&QGlh#~`aYqLU`dfG_I3g1$6zDh9!8ho^^;Yx1#%SP7i{91bda)nR{r@5gTp zECB~@a<6pLi1^SDdr?o1VT2Q8lY6mX8y9j&;mW;8njt0tipm{ZY1ls|oF)b0(Q|^d zHo3F+HTvE{lm@+gIjx8Ty^}1h_VfUohu+9xGmYQ**!0W8=1$rWHsLhd6O0H z79p~&l|dKY)$BekHF11K(8_UntsK5xEAQ@^>+``uE8(=;b zWrp9#eBoQOsjFKkgB?io*n+ng@OprI^I<%idjQtezrn7Gz+j*?=Y1ndmj!bk0L9Jj zHmJp2k>VO66|nl9+=n9Lpnws`KZt%1qBbN<`W?0l>O!fyEvs}FEkKoqYou;Qm`iK- zFUg9YO>XEmEGb^}aCF4^U{_H@9z|eWKZ$DgP_Tb+;Jw#v1or{OIgNe`(NzKMasJpbd!0d|A5fa4$=vEF`72kl+q7u4@5q5;?JKdOxC| z;1MrfC6^w3>p&eXd>|po^Ay?hiBLXLXR`Q40?!sMcUREVUOW%gHP+5c)kb2Zbyc~{ zx?ul>{+zu$#t*D&GL0NyhK43o0SMgDor$KBRle0E&D9Bv?e}^&4-IyFYo!*$8vF9f z$6hM8Yw+&@p+2+{{Aub!&yC6#={JZfv9?lMKe)QnCqGjJ)>-|$g`iH?7lBcm4 zZdLpsv&SZ{E|pUjXYo{eYaR6>H&20l4bieKk(+fdE;+O_ZfEtc@spKi=IFbcXX{QG zRkU!{|7iOat@abDlN__?F}T%oHF)av0}GM^J4ch(_0-gRnmV&S5)j?k-0W`ORjdB~ zHu}=TLU|J6>oTtzt6%XiSY3^ya`vNfw{b~6tM?$sJ;Y4)ahr5J4+P{-y-( z6|eCB+sqA2szlR4B^ZB^JPteHc%wK!CkqjYzTNPY&)C?KimZwfLhA?;0%|UVLql(!=u{ zQgLuO4cab^9{e(|{<62HsmMURSOWi7oFNBXbKl@*i+df$AH*abSDE-XFGp~IJFGMs z`TKIcJQ8ng7oDHcyCadCb+kraS4o5baw9++X&@RoaXFh-cNZ%vbnOT!5hZp@0r?g_ zGs?MX)1XqrrA5B$)@1Yf`I*e;Z^*a%1(!*E+xKOg(fQ{cZ!pO-b0l~D@!uzlt@2n^ z{$41i1{|)cs{qFDcE1UYtz*PsR|stG+O4a#h2e)3d4CTgS8z(;!dXrO#2P*d0mHSA!Qf) z_boh!xl1iFZEdxfF1y7F+H*VmF2!D;ONYVhbZO+T>C$d=iKYBw~wbaDx>1Fa1ocUI>_-IjDM1q&!Wj|ayK3IDiNJL)u2W?w>Y=v3t+7k=k z_V$d%ODf{mACu;r+#yZ>b^YnU!5r6ZFz?BWsOQLNp|@n_)(@OFLOgH23a-JXksg!3 zems4Cuzm#ie6W*1F0w)m?vRB>_ox2}{etytJQdtg&~-byf2s*EFK-28{^qYgz36Cm zT;6UpxZMSJv>(s?1$PDQnIA!p<)<3l%;TCzq1#s%o+=OdK;WyF3;mDZN!h05Z`W@QXU=QmW!Me@k^1JiE<+L4f`B7|b1{^P+JpV9i zRfriyy_?Q&Q>2({nrQxeQgK17Ix^!IiiuayiyPL&XgngH5kq}1ns^y^o6Td3BQuH+ zO~fl~y?d`#Rb?;Ne(7}#W{2dbyL*Ar?+?#`^WQwq|2`L-r_&ds-yO8%MMl(c&MXxD z3`m}R#GT^doFO<*dN|VsXJ`mV%D9J9U~tkmz&u%%Hi!phUdxg>J)!rQ#K!nfg|TxK zp0RuHS7sN9B#CX(rUrZ}p*yh*q1L@3v2yc@s>t7QlI4Aw`Bn2>>7c}-vc_xsAp&~x z5<RqKCFd+J^o4e9l ze-Q_a?(*d>viHtF;e9OQ)p!h9ySa(r+XiP+k;cUYze2Dt~A zSefkQUj5Avq01HY3HT%N9X=aklG&5#)i9}($XLY>$!uDqt{jU>iG4+P5)%w5CeR;O z>3DFZHlOd~$_Ur&W|d9ranD<|+Do-rVU*u=|9)tV9nI(Ok+m7hlv$EnaLHlkUj9YnSS?=QZ-1Ug@fQrTVHQS4uR+w`khv z4bqkF+%aE+Y2=QJ;TYg3X-_L2xkGNPc^%mJo%$51>qjz3jZ7F)?(6lId`AzGs~AA< z?(}S~g{}B!sD;+PUPF-#nk(J&K|Q%$YWH63c6}6rs0AL$4$w0tME#xt5R0HHNOP#- zah3CYvAYaVd5E42qG4H!+R8|=YwM-kB=V!~@|O>wOR7)d10)cBl4l`q-DPdI${oFE zUe`%cvUK}Q>#b&lkpBA~!i-d*AxmIB8lSIgfkxxEd1z<@Mw5pRu+Dq5pQU^j*ozcU zqnxqP-rFipdne?#cOQv)?N!)WrMn`8VvmfXA8?b3z}3_i-A*N!$FL%QT%2w&&l6$s zw~l`3dRu1XPF!_3Bqp1@lgInv>EiS5s3E!cE9n$P$nEl>ueo_`4)r?~{fM^G2YCqp zywY>s+msQRcJ>fX@esaxERO=u(S4`0%*0AwO?H>>jl3q(<@CI*Zce0f&7~wgJYOE^Ho~~lbmOYEW=Bx|*z&AA z%6nf%7hx5B#|st(TH$d=6oBSfv8$&x57Sm9Us5mJs=kE0if?>&#`s_t^?P-cAn-Kx4z6+4*TuTy3|v=owG9_Al&k#GNt!NNRJSMBqoVgCMKc=lZw#zb?p^e6z=Bx%jR1GaS**$MWz{SyLqSu??UNGw*QYp5oe* zh2KnWyxmwYEbC;ou1F1UT@nAWFgA#PTgA?Y;Hf_2{_U}zQ>^ig+#zT5s^l+1q-MV3 zv)7&EJ3U-*c+xvFy}_!t>+Cx1byf1r;>;YMKeeyVKR?Ld-RGBt@J9sj?+oB? zX3pzHaq}myPF~c*tFcvbB%N}c*fNaBGHe_Repgw-R+>D^Ersc8w_r1B7%FG(t(@E- z%_biyvAE+3UVM3W1-JWXx?fHmW}Z8DKtaJ1g|SZN8sRlGuSaOjDRIY>javlo!F+;3 zz{I_#RFlbOu=~v?B4+I?%E8Tx+gM>NIC69w~I;71l6MIA@I!nJgq;gAEC|KF*p+1cJ3ppISp_n*xXscV^wwv(CFr|nb!CIGCVd0 zAHV3m%r+I6G?e`G{_0n4Pav|0DCM~8wVhk(jubTB4sNMfQ=;OfIDM#?OMmfK@L(f# z8*Ls<9EbeG>d!}(?74u|x)914B)WX|m2@}#Fd@L(9gsnGd-6E|bFo*s@y=&Y3ENBf z;Ecc&)$v#^RsIyp^LUz$4z>hIeMw@xIw-A(P+}@3y+~uIw2~mLgfzbGR>L5uJ)(y% ztCdteU*1awQ5{jErzRF47SN%adAD;>dId$~67n{Gy}jwBn~fOSR@jR~Ertty9sdA- zhW(>v#YX9{QI;CdM{G{0houa~&3=H*R~Uo_h>P&vk53p^z&${++}pnpOH3FiMn-d9 z>^AI)5}+C}Lumarcj_|HwvbBjp8?`YnfT?o$O*3YD<>6+KS_O;&??*P|jo)f&i*1dXH z^PEQwUYGlTt#MgTQ?^wVG=uFP$b#G-kWo4q9rYcXo>`Am)vY586M_7Gmp3NiczE5$ zk4JTK^nVx+k>hNX3qKzHs)+Nh0cjHO6T4{TCm}l`7wi#?$i3tTBeF|qXKOJozu>ll zf7d3lkRiO|7IoA{=;$5{&S0#f+zuX;_>3X3Q@!sc6&jvxQ;?M)?D<*_OK2zS-(&V* zflKvy>J`Qz^BLA6BYNSIpCP&*N86|xKWm;We^muD@7jLT{B3?@0f1uPY17%)^{vXIp2Q`l24&S^)QXfmF6KX98^+TKc6a*2A4QC3n~ z#xukNGJ2ic-GowXpnkvjmL_NHSbLQsxV(NVb3t;AfhO#e)be#MK1y5M+CB2dTKKD- zac9w@Y%qO27sJ5?F8&YW+bbS{Z_h)N!MEdIhF-~M112jHlW8)!zTA9<9%h%VI1@3c z30)CfyO!R_dXrNfPyR@%*6)knf zkIqGn@jBz>1*S6|Ee%fB$_}~9D+8zd^zLX!D1?I&pOW|7LZ5fb@unB<+QPavnZCfW z((iofD~|WN(g-UZTZRGLD+*pmsBNS$hI4fCmdZhTIR0-TUz>dU`Sob>?k(4&UKc@T zjhmL4qk@m^)}!uwX=wA;qrY73*Q198?SHOEUyrgj{@>Rlf*0GuvE6#~MPuH2^gbU< z6kCrnZ}{?g>(Qle`lS5zC>EsUuSb)EwC&fUmyHJ434-+~s$gONf2~LUJ)n?#wFEe4 zDvQ~SEqu&Oc1qTXJ@ePgJed=93;X9}PS+7x znbS*kkU8D;S2BnF8!~4TU->fUmJ9JM_L|vBcRwGY*eMOfPIrl#huCS-!K3xN@^$+i z%@;c*yINXji5+Qs5<4BZ!wSFdWb$lSAZMa2R?Er4O)!@NlfUdMT^qQ@elB)<^0P8v zrUwbCC~focBYt23;FN5UO9n}IlZ5^*`KZ*0Ujn}hS$LlbIW%zVo6_H?6!6iXF`KUH>4x!@r9+~X`IP>zWp6WGjqy+hZ7I( zmu9qKEKbkXlx1{HkuS?B>#p^S&F86YeFF=|=txC-= zdNPAGQ5&oJWfMD~V^p@a$SBxrrz})Wu~WEDiH|Qu135s(uhgSG9x}4`IpxQ@n`ced zZ#f}+?pBSoi~nH=o5X5O4S(OC!L+D8#D#DxFKAh8rEnS|Px)~^h(R<_*F&Qn=~UNa zDu3OTojnWOqqc|~e2sbY->NV0CZa@lfr#28PG)<)s7KUoxy|&V*eI33?vX3gD_iEB zpv(y~nOFsBSu2g6b2ZW2F+U;uVT``qz?_Zjpr4D~{G=pJ?Hl5_0~UPk%d^hs)2u<6 zJ&l=6zI_^?@PuYr36%mSd(pS^#x~y$c%`%LoMr7q>h)fmz|ESkYU|uT_={R_XP(Ak z=i5sVs`wznc%d@nW|WHmYgv!sS6-CK?e}E8Z<}mgKX2S1ncsEJ^O0Nqgw5ggzh@4g z!_ETTWaV7u@VY01Ijko$yaN0Oo7R~p!uji-@^znA-7|dMM^yK@u&$I-U-ts5n--7f z@hd00fpYvd9qAQK9_Qa&rZem&K!zWs`r*oV4sC)}?r55wa}e#>zJLwEP!Is`gVgr1 zVcR;~@@;=1F@P_kW~#{a57sL; z^3OIFb@xNh!#zER&Y@4E=rHG*nh2a%7l|Gv^vQRhPCVBh>~b9p$H$r%x;vxDOvU1X>G$ejb5kFM+`4AO->t<{@zBQygU5I*^r5 z3M?NQa?7HLB`(QDeKX|N;&sB|&}U|ObuvP;w*WrYiHT(%)IP)=61h!IY9g0Qkj%tBF$stCSxnNfgP#0Fz+Uzo;%J%T`y`>sqK{Z}F5 zewwuz-F;DNGJ+8YyH?i^sfceYj~z#l3w~T1yNrK}W}+b$R1yS;YtyqOo_Ot?MaAF# zdHV380(-JE)Q{(sQ=0mjw@jX?y%KjX?T}Vk=4xm2w~R%E>rwLt70%221yn21gXZv0 zLFNw_4LBr?|I|8C|0fdcI4}XrjFX`yc2<@gHcd+01nlOCMo2N-J^ZNg&6s-`xWBVp zFd2XUA_MoA$Bb_RpGjlf;ml76)-$}SO4Ch+4>8y;QctAxIW`W$|3$Hhdut{{9F(6; zJ%zAt&OE!rd9U@upRViy(BxG`#KFgp#6V5?vVgQmJ^FAML%J@`Z=K5MXz$Zb)0!uh zrKbaYKK5aD{+a&B&g^)?`M9g8oLD49_dC6$QRsZWs*I-Z`CLs zG&q@{N|n37%ri#Zj@n{>Is+lI67*1P3opD1r>|i6~wm{M()rvqbz!z zYZ7Y_>O1R=;a-tC#m6DF*TGnJWgDhIq`m`1-`YlU*UHpQdzt0_PM-8FkVld(t}1>J zzNl-eQiom@Eo{sjAIe)Ew4VQIQTwG+Tk`c~EVqY{!&B|XBfiAIW}a=2 z)a?W~${z2g1VwLn5qs35cjFzM>hteC@$-)UiRr=~U>w~RPmFljW>kt#L?Oy*fop@* zbfrPLL{P4mFQ)}KEcY>!Q6iyu_H9-O|8F9Lo0^cniOA^-0U^^bFwev<5UsFRq<#sX zHL2QG@inc|bNQX+-^Fw$zLvKZ< zB)%LB5UH2vE5mrSQ0*xPtasm8BO?dP*M*gdt!V}F_53g>)%^&)iK;$v_VwHzJkdPr z?TVRL%aP&pD^a3Rt{6x6@UkD9D^VeP*^W(CB4x6FU?kH$z$<4JCHB@`M*fQcmwuEy zxA2dWZhH+SVGhbO(ydD&WhDMzdB}$2x1@$-zFxA>$jl-S9-p{(-oUqL8jy56f=3~Z z4odVVpcOyN@@W^4Wi7QGN%3qH1_pbRo34r@sp$Kg?uNw8o3OI+I)doPJv-Kl_X39& zP5E5XE&gh&#L%M9ts^TRq0w1G4v}w19Su;dxm9duL%`cvneF%|5yp31SJ!Lu8t*BA zyb0g;`_JV|UBS%YN>LXJHUe!;OhT z!1{U7MC*}0V4~$P0grbjCy~`8!B$|31bQy#;cd!J%j+NC=~G*N-=F_2A!oO}Ky<77 z1o@~Py7_RxK2l54-}hUS<8N=3v?E;Jr}nZKvw}QbG2P?my5vks=jM;->2A%IYf5ju zqD8(ndx`Q1V#6*YJ$=-U`GYP06Y`tV-Acc10YB9yQIprd|AYP<{D0M-tz7;5Z~Zys zfAnX`g)Qp0#7}QR>_G3tanuO;vjx5J3DDZtg5D!r;@1*B+qfO!AN(KTze(}!;cq>o z1^zZ(e^$AKACKhTEylz0$L8gaAwN6&h;O;wdzk*4*Pw#*mXrLUvF9qRNx0i|!C#4US!oAQPORVcLT>m3MHq4W^tB__5Ldq36~V6|?!w?#FE{mNpWD|>)dnr3$b8ap*$H~K5?IQ(LFv> z8t+x6Zud30C1Gl_o19DiC#gDJa{v0xTE9GB+QP!qZh@hY#kvbhrxF>f5&(s0e8WT5xv0L3v9t!^E zZ5M$_wK?M?MgL+g-4x?q1}|xHiaLUG4)IXm0~k3*v$t9qA>ii6)Z|tk=Q-vrkQII- zWYPQ!HxPuMy~mwA1|3OGShX|UzQRL?7)@@pA>c3ZPE+Mno9hN;5xAr}HIBufwrnxa zlUA$;;PV7m(1Z_H0NA!`G(x;wO@PsjIgB>Dt^r0PNvzU4!%c?K^X|@FvlzY8RwVJ4 zI+u%5sWww8vlv~;sy=tvjBGSjwC+;ug zj-X4#8tIcr&RZ`z=X1wWN8vtAQ@ar52C=Zzo{w1RR&c$T&%JN9vm^D?kkf@PwG(xiEnrhCZwxD!OwkU$emLk0QP_rp1WHj zz^%V`dr`r(7|CS=cQ3*v{TZ5AgXl5B-Li0PAVJbgNM#;m<;fwG2Uz;K{Pgr=TFI>H zDZXm@Zt~rEpadT6z+;XBGmv@qS%lVTFd=>Tt@kv~d5ZMF0s=a(eNVM^Lg#b=*vkW0 zd@BG}dH}x>fCB)aqt=vh@Mdg2ar?CnWAF|9sz{_O63gvkV`4rn4ZG^z;52=nd-8su ze@i!b(JmM5XaAFpDeAQrrr#sicju*{toz`xWNu`PWIoUg9(IB(SOZ@AlNI{g+%)#OQa(mx>857TVa^X(OXz7Gm) z5T#%8l}4+Qy(63&&`FgR`AYe#%C)NWk}6I0m3phv99qguGv6l>U>CY1HyAr#D6sx< z&&y6+j;s)}c&StD7?wZ%J)FN}yS8056BS)o^jPdh`;)zTy(QuH@Xal#r#aay(+Ydw zTKm+el`12m9U-_icNr1xRjMp|=}j~63PRS)TSkfZbHZtMFDi(=>6O?+lwQz9 z*RQSgcwhQfQcF)@flx?C%UEC;tjkjFQ(Yc8UYUBwP-674AhX729!Mq~^_db)^_E{j zSpW246v@d?^h1lf61@9pQOVv#Dcy*=*wcOTjPcZ-bd?JXTUw|TUcaPqofqB%(`l~j~1ti8IT z?7K+)nM`x&#VM#ZPRL3KaQ#q5YCuFIMZcQTBh;^k#QTOrn`fzDi}(Bx(zynyyVj&s zm&f)+U)9B?k72vaqd9t1CRTGRve+#YI{ZMBwR+MgdES+(d%U5b4x1wN4^uUJZ;g6# z+b*%nw+59p#=Hk82(=ycU}^m;wWXPvS|=+tY2}?hlCmmCON1ACCAKF`v=esLRrjM0 zXj!LM)fKB`FOS5u*Rv%)3`&f!5?l+A@0Ykd)n&K+v!$N*rRrypnLdnv0{b9%xaEv8 zt!L)LzgfH*Ni@8GGq&_DR!pH+ds}9@=_RW7kgsO}#C~?a!EuV@M2uGrIK*%=@xX~rn3n;F_DSW6I>*C`dcjtp3EhtAF8Y*R_o)vYPAYp%v(UH z^Yd~wthdB=k;KteBk8npGGg5eR_2%v*H^lCS4)3c?Ox|^=5O$I?-f8MJM)>>tKo>6 z7VspFf>G~{8=`6}-Ni*k+b$Q$`v z))-i!u$E1RR9XL#yk~fdiEpCgp-BA;nj~B#g^cd)J_6(SP=6%7V$(v-Sn2_RyD_KV z120GnDoMuwKtiO`pbHZ9`js4bO=8eBfEcIKmjfKvA7GS0<1~4bIAahJMj0LCC|Fz& zsXJ8-rtY3f)oALU`ZJef!2)+?KW{7FTlsMrP+SYyUoJFpWoeG>>SoW8@;%5qwyZIJ zC48r4{n2Of1xGC-t0Mjdrrv&9qzK033*G1oc{A%@ef_>Z>wKTZ7xnM*S>-;f(r58S z)>xkv^;rk|EWXInlNq#yULagM`YgW4s_>Lb}sJRZ&lP^_>lZ~SlW=sjRQWnkqsu{Lv4?#5FGo{pQ?oIiDGA4loluu zaUCpKyFn)EiKLgP`w{o;zf{~?Ph!8Uh%YJ}q=na%4Wwh6VO|p^WJ&&P)qa`xsCywR z@i`{1!Hv0UjR7jffe`2Yais;3`uoX|yC(A#8GL@Rd;BZ$rP(t^PQzOPTn;zplu#4) z2LL4u^wdHAGvWNvI|AI1;*6B-$$BboUPuDuM$=vrOkriLCumno`cI zk(-{uyca4-CpwS(`ZxnLrjK^U#RB4^KcrATqkTRJRyi}#QFS4ZAZ=|B>`(6M2Yrb)>XFuq_ ze?`;^ES?BR5vQCv%=mcEaX)yCuG=lPqj_{3JDU4#`VF}H5q4<%-)h^seE*51w~;hY z5Q56m_o42kL@(q3eU*N=Ak$$xXkeha-utt9z#l- z7^Vj@@wko58MyQa8t{I}7ak|-p|&u~-NkMjCpc|m<=!Jy0i~jD;>TwE-|SVA#V@ractHu|xjHfnCAPNU+S_ zA+vQ0dvo7td{W;6!xHLF@Cm5BY|7WVlIFEK zW{cFX1}OE*gY+#w1?hK^&WQF@8{?^~gYQz*52it;eIO4Ki>i`yJ?F1=9c>3J;9`Pj zJe=53?##Fi))Ch;SZ6RxFikUB3-@M+G_uY{>o25+qg6b06W7EB;d-#J_K!MWEUiio z2f1|b6-4dA@U_}?;eH_+^Ump`>ALtjfwQ%tfnjHIa!bz z2;7fr-vm;rAf3WEz{f|qXKywfleOSzr<|z)`wPL@;0`-IormBh%ssl`B7fEx8b%zJ zx%J2UW*$OZxs8uAq8!h1DRL~hb1QSDdow7YxYpIlLvbMD;ut*+$?d(#-o#_$Z5N|vjq+KFOQ+H5y+Y$v#@N|-$%@{!68-#8yUCUr zZu6%)d9<3hs7hwSZ~VgO@aw$9)oyQVHCAmc+J;@vQMtj^Vyq8t3T5Z?=ozV7Uo>*7-Z=)@@moV|4|uveWFN?IK=!-y z$iAK_FU~Q$M*gjHpW@j1aKnAM?yVy*2;M+l&;L=+b@+d=8rW3P71K%hqdm2@88O+vhC#vP zlKNF)*@DRJdfe1SJ*xW()t(;JS=~T&h({HLAUhSdF+0-5v=-|7Zf9Tli)*P|O-VnM zZczOaUw=wo{g+gqc)_{)OC}ke9##F5vh~YUe<`3L)#SYT6I5S@;cWX!U;iT2FVEKh zeoyK*`1%*;)gPexiTwJf`1(Cmzkjy=EY%;fWBqMRzI0#eO9E)B8GADSKleP}how85 z$x~oAasI_J8h$a+y7|&?Xy!7S(c+*szNUHlI4KXu`_;x_R5H%2WPv-B*0?M=mM7Vq zi4Yk=Hq7_n7qIYY65PxHt2qgks`w;cp|5j5S^15sBKGh*%<^S=q=&f<^&Br526FYZY}PD9WXqDBHMzw^m#0U2CnjUJ+0+;SP#I z5b+*Fg;^qoix4itzMt>Rvzra*uYLbW_Ic)+b7tnunKNh3oH=72a0rV%gdq*mCPi)|z-#+asjULJJY9T&NH%Maq(V|UG9IJQJMJ!6+c~XP1x7Vo0iyRRy zu$c)cL*Ha2sATFccV7!#Y3v_K=bYfmtCGjL`RY!~1#jL27p$fNZm^VP!wBEpWf|e0 zq$cK_8H}G;zTlp7aFYZlozuZ}72LlZoSKt>8!5OP!QJTK1_|!(Nw_bL0Pa=?Hz5Ts zM{srYhdIN+`2@Eh3HOZP`Z>6XDR72y61x-5H~S{o_N}=QxH(C<8wA(Z!QGVt_p;!) z9U*QOIk?9Kr-{wA?{vYvM^zXgcc#FN7hDbXM9#*#Kg;2f7JFo@JK`$kodrP#Gb7tJ zR<+>rS(fL%neu*_49c_^C8w^?2)uxX+2T>aspp*7Am+}*y2SeLAWwUf7A-#{T-(tX zoF}ApJKM@XrpBKgADw|Pt`d4QP`zt&GW9)YzxS-Ru*#y-{#`gI^59`?Zx($MLbKq0l#BFI*(<~nrP*9bUg+AZ ztd$*I*Pxnl7xGC=Mm zaTKKA9+b|nwSt;MTV66ud;8)o@B5jVeZu$FOk`m+hVTOv^-;902=y2*pV509c1LGY1C)#EZZ4+6#13V$BvtgCr*8ADC0S$?FwEO*@{%I zaQr2ESdO{v-|AH7Aa)1OE%IMIXGYl119L8$Py8Fae5Ve3fT*TyufAJOMP&B+k@1Q= zTsmKdeqrdD!BCy6Ofr-l<85EPI#DXKo==BlmYTm<)!5 z%=9g}TH0%BLbeO?uAvL^!7tJImr6@~pIc*C;s+SE;F@!i&9cKh^R$hH%C_pHVC+O% zo9q|ff0O#YUwqKWxK{B({Ue4%7JHkaLn6yXTOCi?Zby(}BWU1^&?pM`L-(w-PZMNI z_w3WyQ#XaWnh>g-Nb@L5*yKS~KqJ&wf#11LX#xV>U98miom@2os~9(QOXKUO$k|_; zQ`pGtUL*_BrCtxZ#~WpPpBeYAonBBTKsFQ|-KJh)Q!B&viuZ&*Q7Gd% zC#fNtn-Ap!O-FMmcO_mT_A*`BBg{8{N${($>U1$(SiMlKebSWSHp9GS^H~=5RgdCp ztOL1|`h;n`(@OK|0I9LY*3jr9PIO913ZG3UOX<{?CS71lBV|fi-5w1;- z4D1!&nN#^&DwLHL%G@!p4gQSuMR;Ah)nzJAgp!a5s<9i$Lf!-;yG5l7-&Rd3D+#MK zp;u02Pev2p)i)W0f${j6L~sdNXqH8n{OtP648Ga2z=Eq_fzbkw4!EQo78rWV0Rk)y zY1eq4n;&i03}*WvQJeX1S-Lz_i*lI~UsGJrlIg71ZKkSHb$~iI^<%F4=rBm_SHHO% zd4rKH?z*1_Q=`=dijT|IMt##F4e;-mJzT!4bikQ(fb`~I_zqpFu_|;+_>NvM2V2TN zmPVFW4qSYWrI;083g0Uc_AkVaq!ri9Lv_|t?6Kb=qA{B69y_-(M zvUEJOUEHzQkFQE4FQ!@E{Gb!2=m~21yH};9wK1pt25dCsfcxzqIf47_tNQ%>{q{fa zAN@U6)i#xx^qqVM{;4;X>UCTFX#kKNetHst}E-h6F4f+t2t@pgdyRP$IWct}xjQNSp z(T%{_8AiQ*F#0PqhMRHHcuCGt+gLo8qUH0oEOL6Dd4QEL_-xS^fWiizaS?`|Z&Vwa zt<#li@UVMVjdIKcUSQX0FR3v%-ml^?AX*Dt`AO&&oZaDY5=(?+$+z2*ha)G5{(=&T zWq8rOErn}e)av3U2h_3`PrK082LmG7WscS$&I@?*3OCwz0+DD&e=X>}h0I!;PJEP& zqN^@#MT4L41%@+QsmtuTStM63L3WFBUX*x6)B$b0-?Z@1E3 z8yg9OKeBF9dh#G$k%-DZC6(HKaeGchA5 zo{;2g?dQenfNJB2u62&-tIt{pEjE8pIx0$uW%CB}hX5G0Wo1_V)jjnxOL>yURL5@( z8?4FwAbYgVlhd{VEe%pjaK1~l!d}$p)>FwgyA~(2xTd2(9>&;GEFSo0R9=opn%0bU+;JZKqqo_Xp-bz=AWdCTE$xCz;5&4EmP&b&X5Bq z$-$ttXTt-{X4i7p`#Nu47NKJAz^-XS0k-R{{sN7YDN2;^!lf*d8NTMjqD+ULw2acgh9ES)8;9UT>!&u<2C&8N- zJ(l8)SBf*UqLus1j`gDJBJ;sC(G^E6WYAvnsiv~$QBQ7AUSxha&(U&$1}WW2HMyS! zU`KAsDWe=gKSd6x<^<5~%% z<04akPfMT6AQP;4J5L&v$yZMA1$zXQSj>4oC$s)SM%UPzXs7zT6S=j~_f52=spS?O z<_t!5<9D`P5J5xn&!v=W36hyw=wU4wmeEUS{}B?WbK%aO+jI4 z8DB2#52Q)5$u!=2tR@F)LY}n@)H5-=w~}+QUi+so{0V45gjFw}{ONL>WQgrS9WF$x zx1WLYHO*b`(x8luifC}~sx zE=er^VTMR-k}zzF-Dc|>>&8z)p3DDtS<4cNQ$p^>gQ3AG-#-s!b!$S+qj_uX<2hsL z7{YB#S)flu6mzPWEBK@C#nf{BJ=OlGJakcT!^AZH=E-Js0BQE z8M1vzZ$h)CLZZ>vx1jY6ve(OsThIC+DH7&du1T{m}dHm zR!2ULj!*ad&fgw+J8yCt!-r_;1w2>T=Qg1pJWsXHZ9|9gEaPB!U%OC8o+Sc6G4XJ2 zNsm-LIGNYz#cUz3_D#QA*u!@(At}8yJTWKDS2e)3vB0js-sHQTIb3tPJb*+9PwZuB znB%Luxr3z#OD)#jYg_024#f>x6?@Gi!xODDEFgn;#%AzUja5|^pUWW?R?uvoOBM}7 z9eznFY_!jF_TC{;*6d+Bij*pw(qO*eRX7Sr8>=+eT~tq|nbI1&8%Pa9$2x>BI`B7s zt*%;ZzHCToNTegnPWb_*L;wRx}#X&FC zf&~y5Xn3!($j7e08f=!Xf^c*7KIR_j2&M|P(Fy-Myr(QPmM7DArCt9#crojrE6HvB zLLS_AANqfVU16r0Z6CWDH%w}jEy=y5KPB;dWIuLzxggQ4cih_YsBS6aiQm?kk8H^NzEHEu9!K~1lv`=(zDesi{~s~JvRWxiys zws9{t9pq~IEV&al>L15Y`OjmIA<9gK1A9eax;5K2@f86c;sD2|0KNra>}r9nyuwoE z4uQ#m(1P6|ur(lLW%&CPuquHS2<)#8Y@onSPJj&**b@%y)fBKH0^23=tWIk9j8f3| z-OoyXG`nPzKP@&C^~GkIqh$IZ!@TVB{ga=@kL|a|lHVTmp0doJ^!ZH!D@_JX;SLud zqM|-IHrr@yPP+>F5;{Mb+SaC??^45y+Ib)3J3o#4Wy!lEQuVq}#`1X;@8y^a?rsq< zrIB;7qAd1RpTy_bc$5oF1zL0F=wEqk5Gm%^)&Rv8;9LRdvqQSOx)oA(v_YD#JjW;V zJl8r;j<5P3bVaNU83K%zQH8a_HD1~+mAWDCnzG3D0M0ofJae=gV^wh_jI_&>Z#^m0 zWTH}#Di#qlrKYM%tqmZXN9$i-{;uM$ERepIpRrolqZyI2aA}-Lw+z*`xUe3DYLprD z{txlXf2Y}HEcGS^cj!DesQTLM-!AX*P#`ihBNpAR zsU-4~S!T0Wu565gqqs3=DS;GXAokTB zj^+fwK!7*{IXc~TSFBoE{Xc%aBmPf1XR@!_2M}6fux{fKlXv4_9cOHv5RXq{A%26e zdJAvnQ%JIZv3I1KL%m{`lP3V9jEv>uPR4aYOa^`|m@ z)1k~&5TS4S60t<=G8QDz7;;p?TXGq+M4ryJg{1Ow5XXKGhA`{6{b74pSSW&oVU|iW zx6gC*I2{0Zz#NG#lUNkwC=Jme`o6+Iw|c+K1jF8U+Hai7dbWX@KNJU8%8ZQ>XxWMq zrm*EWl$#9l@?2LVwPCR-VxeW8L3<|cCF^j$*nIaMub!?`y-b7eIU$x}&|OZ9<&HlH z8qtZRpk<_LG7z;j$FhX^Q425e*Nrxr<`G@gweJy+k%sX_?JKg2Nw?@JR+`tomDDTQ zz7Q1>x*lYZp(9YlK%02HYUHcx0tx-m+t^fUF#iHd3KjEZFB>qql$8YCKVDPkHKjGT z6*GPI6=6aFQaElWJ>d6$biH0c8B?!<ThdUH#e*`5G?|0IEy{hzDLy|z;Y*6XoAi>mU~du~ z&?O`h?vL2E;@2|~naQ9Bh57P!SFv8UFP{PhJ%5Ab$V$|G>&)9c+-eBcZa|P{7OQ4l zqwZ+LVDww{$gWi)C;9`ws!)vISO`?x{Jxvcg|~d#bO{XgUIT2Wgj=D#s6y_&LVjidIq$=2S0bjdok)FX)o9Nw!an z@1QwInV>M&%@!_<71doxt3M|sBiUKk z`inOCrt3Nv)#feH$UH2a6GRzin)j4ta4`9E zM>MbP=}uBGyxUEami-jFIKa@7Hgp!XL!Rx~?5n%yVG=la3}DBJ?Y(>d23kai&^TLw zhtWGc!=>?=B4zX-MYDdZR?lBgXU|n<46d>L$|aG%a}NdPZuA&F^)+|7hhh_Q4?%Oi zdmvtfdl+dhaS!87+8p)TTa!VKsGXe7pqCKG7mCtj|BkOSFCHpDwuHbp7DW2->BEKsv@X`g-w2K_B)vH9pn><*0 z-V+wZ%ye69cvj;3Bt1l~&oGDULu*p8DJqYk$=~jY*h5UFzJtyjg^*TIx~7K<>>b!zW`jPtp9nwUHT|4R3LqzH zQ@M4_j9866wb+j=`I0PGn=bqR{>sR>*7sRXS*(?HY*-szmsyM*#Jz{w zy7wvZv}_hoRdPX`bmpwd!=tCz2XRYe=__YV0G<+206GeC9^m&J-sX}!dv!ds;3$NWdrf9Qo(4zS> zX1z?sQ{u7Cg%)YCx0C$UvOg`S=o`_>*>+BkEDRmaOsNoQl6k&2xy6v4gdaWmVP0p5 zD-h$vLn2MG75vx(L+AWExpmZScqaPYyKSkp7X*@a5_To_yV>OKmB#9Xup(FB%}}Yx zr=g<|Z3X73DVnk>3cQ8H26HnB;js89Jw*^}p`X$|xeg2kT_~@y$o4;v16?V3riWH8 zT)Zp4i9ZKxu1BRpKas-CO~s8>E_|cTE<`NGh;QAWGxDv zNrA;_#P6qBXVRj|ad@h-t^h z@h_wvNtxwo#6efll?MyFB+-6zvV~76em7$x#*!`pUms!vUUja%kVNjU@$fFyeI}0i z9g`%|Lq>e?96jNyy430jiyIG1lxGR20|eM%UZ$j0jhm#RkLP1ce>BqIyV$u~D&3WN+HwaQ{Tyqf+e+ion4oPAzR*{`V1 z1sQ{DI-gP+UP!ou3$o1R9-Pf($~|EBb`EbYfQ5MzEvF2>_KZ-udGAOy%Q_TP|4zLT z?K5k;)=|x7EZog&DLF)sCzomZrB8dc><7%(LSiHt8W$)0UZ6@@IoC-q1Ng z9V@N3&#*xoxuwWUnx#{Es>YDWk0zVUUrhdle72r3-Wi#-YH&S@S zy50wqlX;Iy*uh_6-l9@z6MvOD!_6pVPi!*D9FY+Hf;A93@Fk;setM8&U2ARQG)^2% zaRhPg38vJqJf%I1=~nG=_xITveT0PCJJg)%Dum(p>$1#P=zQj+^Aw7eQGEy2HHpiV z`{RP{05qNnCf(MrJY#TV*mf#foHaPo?nlCbG4*~`xyIw)q{OzD{%L*kj+)2H)6{7M z)f59C_>N;G3(|4iu54&r?#+{4z8}mZE}zhU59gAtv2tzWa|!+#l+&uexT|-+_g4Oe zbaCJPz8CNJ9^CJ}e82aR`@N4(eQ&)Unl#?L_mX(``td1KZfgEubkOM3_vVjt-+UAT zCHTwv1<8!)WH>6ev|LuM+?7+EqDC~gq+G<0N zV8l7`LRp!Bf{|;mU60K&kBxJ3-%0El?k&r`{gF4>7?9!kUo*QDeeb(>2#pNZbmf{a z+96XrmwwUQ(#V6Bh*A;$+Es1wwqEI{K0_jo!fssJ&@qdenBbDy~Z#a@pSIbYc$*gkEXecs7E#!@@jmp}@e3P9rL{la# zdmk)!(67esY-3k3p&VJKGORn-7>Wp9Heyl#d&axp^QW7p;O zFWr1pxJhGZk%&nSg^v?)XYzZQy@=Ag`!>x~Pz(A=b*~;HseBv%#>}8D$BN&maikvP0t1wr6u+cx2A0^j)_zC}0Lru(K#9$1`B z<~WD*Sm!C0=iyvz+t#AL+xTg*Y}M7ugUA*P33Jl37#H8@(0&#a(jA*BKo{V6>N}{5Dqj+HT@$lE>n-1`g@F)?fU;^w*&D4!){bqJrwMz}LwR zoBe|8Fk&sFB|5BfmFuuCw{z}q!D%7*%;Z;4*i5d^j+2=hw zEPWqIrSG>5N%~&$Pe)(LSGxYF`umu2zP3RbH<&xOB%0|M(B2Gnz+f;7ceKvdpg3K` zdHET(H!b_2_)z-%j4gd_vhcjb5rn4Ci}(zs%CjW>lk(^!tDiagyLdl)#x!@_yx3PI zZzTx)P|1TRb03+n*@KoKS_vT%e7yzYi!0l2PNnDnEr`m**Mky#T@Y}5J-;ax!~f0K zz7~5(lE1el1=)Y$?~TaQ1LYCz3^v+WfM(Zoww=|QB%HWe(Ndl{`7GP-!+N)jgKjhE z_ugk8(C=#*8cuFaPxg0`{z?946`JIKrdgg7^nY1z(LUV*qW@}hg{@cUE|Tt8DV|5N z5nyD4naV{TEwcbA68H!5{7S;mre^!Uc>ec}NUeB&GSyLiayB|Tt$fzeNmrmdIxXjZ zzD@%yeY&33GA_1HgFc5rxBbRNEkni8=fNa>O6`O^TMV2spWgjaaz52*o+;m3(r7k) zQFZd9#}oG1&883X?Cv~!;q#>A=;3N?_nm0S=_~HTHP$2Iz)h{G^9w}0x3&0XivDH6 zF`0<~PE%baIIKOzH1>1!DQw}N)lulPt^Wb^c>)pR=rcP>A4g~f`*Qk`8}AvA%Z>N9 zxw`ac$9t0BKJ%z#Wh{HoD7ZgDjQ{u_jKgF$>rBAzGL!W0IeTLUSpIf2Ze)P#<$U6GSSmpT5>C0^_ zzp*Hal@X3GmERmcc1(UhWxwxs^gaxYuu}B5ME$Er)Q+fB)ASteGxs|xbjy>Dpe$dN zws;RS4bkHIi|3wO_%l3L+@i3Kw)a7rhW+Sn30iEG*+gD<@1v5&n-vIH#;aJ5aB`_XGNL-@aq*WoxaN`R>lIm>Im$h%J-#u5!)aP94J z7EE;`p7a=7@1Xrh+=$er{TOm-|EK?3`}dP+|E>Lq$Nk$+$pzm!dH?m}wnM75m*Uu} z9(mtg#|op}PCps?>~-{MAAvr{L%03tvw|V$=+kolm`ux?kwAq@ht6pyt^tL{7_6La zn(*Vn9&nsp)yVPdtr>h}Nz>U3yIR)$r}fSVAf7u{xFcd`q}VUnrkRwJ7V3lY&njTH zu)8TmiwZ`UDL|pIs4Lr1$_W-nqTjI%nw;yj3YTAWwEEvT^lwpn4aET`+#~)!^iCbH}{Zb?)MPH{t5pj<#uUk{0S`4zn*VG{H%xy?fKiiO|ue`4VMJIP9=OwB93j{tni(l|f_m zRbKVpcMn-+zI(_vb9k6zBb+%a%Xt;n<71YSC;Oj|#Z~3q$<)tOu$&QR!-=<=9i6a? zvMWbz#tf&>e;-t&EcxRBkIAvITLm)4wGG(R+|)a_BQ z1#>J&b+wkY#l|b=nPX^KX#_VXYn-io1*8W#J2vr+?K!NsC|V<-)d887`NVpBH4?AG zn-8p^c}hIa3TWcN_HJ8VeE5oVfLsBl!dl*YU{QFyHeB0o{`=wS+8yX%XK`{cUf9FI zxrVK!Ml9;o*6y1`zLHbH?_Rdm&oLdef9<}QGfBkL00;DUo)Fp+eZanA zzPB&3b!cgHECYmH(C}SZc!l21ON|Yy{CqoKb#DaQ^Bf`SN2(b!BGJFtefS_>%nU1> z#9TXnM*%fMii0($=Xs~^wwhZHb8eKclHK&Q@XlrRNef?D4y46kW?S$QIBQ6;j_%b& zMGqm9=|@)nc)1)It8%D{)T)dtZFzlLmDiT?FnlYYrakk`6`ZX6_r)#sKFyWO#+_HL zzolG`mVBa;vMF30!;woNr(6%^Lqa(Nly+m90LW?PB5=!GMNqc|roHsyAhc5FSj zP#r4B!anJ8npabay955hj+i&tq#>4kUSF&;8@jl@cunhm0zH-13_*+j1Z(?{njtwl zbzR^!SLBP@T$te8-r^#6pE*U!|F_KiX|$+Mfo3vKo-Zqhxa{6F_LcALwU<@%+lY*D z^VV3jr;CT94>X%GjV{w;WFl>(`>23Jobrfp6iM}%!bkHxft(V%`eSWw#hLVa za1yxT8W;iGNzU7qmE?r4gyK`%&vdRi_2=sH*+y5FLtR~pTh(PRzT~RQc9|BS6Lvx! zQx~$QJh;#JB(A8QZhMS_1M+G3#Ii8Nl~V)0*g(VK(LP^r_#jv`mU}hNBzy9#P&X@$ z?HI_hyf~ag%+V(-E7}tXIo=q!!B&JVB-I8v-)xq7^|;7>!Tr_*5t`@#BZZxOLvlRQ z?AF%Q=RVgW#nD&)bRVVnknJBb56=cQVG6Z{7tbLv?gV37axos;dqY=y;x|B(m!P61@UatP$17M%8J)D&R>RfFe1H!I z)u^1UlAnZI*dNdc?b(s^@PhICg@q4@gw19=8FyI0$&Tm>P8_7D2$rH=i=%b|phPpq zl@oe0#-hR7Z?i+)bf&I^!;cmd?yk+aDY5JMPB0og?MxSnu>&s!{S32*{)=7gR1B{^ zh9t?!wffYLPpaf9UK|e|Jn~2$i-KHJdM+P1gHUWvKtS`*S35XI@*J7xW`giqjz4`I zI#^w^gRO+vDM0X2JxuJQSwKvN*`A^Mkh;aj!ibyI;~cxZqn#u7#ZuZHX&yP=eSCtC z%5R6%Lz25T5AlyY=t&Mb`NdB7M|sd!>Lb&zn|X$pbJfvMCxhZ|SQ%bZtqR2}`^GDS z{)^2y{b^!&ft^WuTEs*8mPHs77VEdyyE=9Lxg!7J)u)La$)KAdtoRh9#Fx3d(m{Vf z2HPSh>x#YhZ1|J=Oeizphvc*r`{gz6%R_vLy=%7_8G#4z%NY}>yT~4)da-L%ijxjj zSb38d_x&7Uu~mN#qS!g)GA~`=0IN>tP5aMTiW8ienxrcv$H@-!#6NI!syUq|;l#t9 zi3Z9I>zyPJDNCIIv`0G_H9we!dtL3d^`V;dlKi$K&3rpTQ&VTqcTMO7KbYS!(IIQD z)_%;>WZ?O*QtghrJ+SicR8}aca?o#7gmT_)OX0RWNqKgYC7@1lS&z{arK2qzSnh3k znfW7z_>0}jxUsXz=XyIsN4=grUy{iwAt#W)ksS7cys6}Ls$+)--Q&?y%D@w}%xWQU zy440YXe8Vtbbl0L9hgcPj*6$#9Ls)1W4a1Z#xm>0A2A}ZLaceWmIQMtcbU`5vw}7M znx*&au8@;C9&N;HxJVxKZz-F68OD-R(Y22EuA`9tscf@eX8(K>v2={AbWTr4N=eCH zF7KBX42QU~mX*~!ZOhsxjH2Ko$%k5sqb6NF0F%bo#s?Dknz+s6d`fCuo67vq(bL}4#w>ueO3m~T-I*vV(G@X?k8~Z z75a8ms~4NUrqL6$@|-sI*Xpxp@SO0^_*(gN%;4sWSh(aeYX_pE6~{B+D_u)?l}$^u zJcOR8yZ*YL+Ll(}IHM`-zKiALp+$R(~6_Hcy=QlbzH~BEgCkfSP-I^-MDzd$MMh9H0BF zl%Qz0Mcw}%H(gF-#auu479bL*4CbD+BOYm}i}zrbHBWNFCMGWo*%{=8%|#3vgW(B% zX$wEN6zA|0Ohdb{9;}D*BS+NDNHNdv$aEU)5%?oZ`CB>a&c@n3dhy1lda|#10KGyq zgc!t>;`nII6SgV#TsYihwRJV3uc&$u@MbMkjA@c#+?eC3t!v|>u8r%CqK&_z<+Sm( zls0~rza#z@?XXPvE6bowX82y+L1Fbjon4JI&wdds=GYM|*_{RM7uKH|EwDsc4kc(b zjP>PL+TIv{#zV(EDxZ8E#tsZlotZ6+lG`$f!*;oBLO#{yCF;o+Vh+;eB zBinp;e2q~1F>}?cZv3rd9(C}s;{awqUdNiZD$HAC?R9o&73*5{_2#Ku3?%bMUK;y5 z`I7br^S9#?eE1%XW~`l;4Ie%WF?60aS4S>!Hw&pYIhI_P12R8$Y^Q z0~N@dd(Cf;b=|Yt(!riPB?uR0*s=r@dZIDIT;ye4r)r3>TS!oW5sFB#9P#eaI{lGa zaou`R%W7PTbhxD?@-+v!SrHLRiTvit{Is-7E|1KQy@>jenE$M-fi#L!vQ=d1-cw|W zO|^N7(@afnf*uPUJ z`Dj01=WZltOs9>R_IA|WFaIVdx#;X1m2M}&SZ}Ihj(2chbOY`u!QBs>IXGGBsZJ`s z&v$c#EA=KYBqaX=Mr7M}jcr4&)JmdtT zf!vS+a=AbhY{!HI5^bMDtL7d95KTi2+4i_5M!V$-$qf!kY7mYiL87sq1LCyU8N&84 zYH;jCJsq8_$|zTr&%1)9r-vnF_^o0@#(reUV-=9^j!iWBCI|M6z?wkjacQE_k4ma( zG*zg`*MT?xOu}C8V6PGEYYsNG;-gjMl-3Sgvj5r3MN`zR@b`Tqc4dD%`qnTkd?)T` zQKN2>SD&$~yR1^PRWDeA5K<#igVUu4mmeF`wKJ1ycNr60}Cnuu3IzS`B*+Yf6OhIZft$ z+jULm#~;-Q4G}(p%=A z?nfs$`FA2iwA%|^;Kmb`;phL+~Wz@6XS(f4;%?Ug$&DORjgS?F!w^ zuG=|0ozT5cpJbxr7H} z(6xTcmD8nD#B%wEoErbOr0=&$>6;CDPx>BC4)g3$394V`sD64DRR2%+1BB)%#DWXj zahxhQLBQ7}fp2rb%|3u{alollS`PsSRU-zjDNKS*bzrpu>*v5UvnFJgu>uO2^&eEy zScZz+eq^G)RSvdFuyHUV?^0#fi@?TKx9B5@{UXlf4QHnWbph+_?T8#{3J9y50K(^J z^G4u@_<*!xbmHl|5m*?piKB2=jyafKqbI#=vZ7znG| z*lJiKyetibEbKL;#h7Dp_Oiy_(5*<@qY)vRXPp|&npCU&t5N%P^XT{sS;HQ!Bh*zN zQAT)YTVK@!WHx7H(|yry|2de+z9aON0q`8Ul+H^X;!Vhc6zM0q@{U{iG??BVK`-09 zDLy;P;&5RoH<(`Mc|u8X<-NF7*d`{^coDdlS#ypq{3`ZM8zNr%=MlCt$Eh+}Xs{z& zIve`GLM5rt?}18i;^kDx)}Zlm51)<0=hEo6F2Kbur;07|Y%thq-dvgbY4Y2h;nNWg zbE;<14$QG0R*>0xn!`M}^$xB|a6KGcsuJ@)!zH$XW+c|DpC7&>K6fQRu4Yu~&RNWx?-VrF!3)ygp4ClKUOnub;PIQsl-%0IvrKhgk+o|-tmUbvA35J>`({IEUSFjZ__DBUud~Hf1+WMKG)bQ zXi81pUKFmq5<0PgtrRWmU!y7ONgx>SS$3E!zCm~=MxI;k1De)pJg9OC;n>w~xx0`w zN5L;_(sLgu($^hexO#|Xv(QBeS(RfR9Oz`#qhM)~Rf{anUy@Z$%(;!JYQ>$RKi{Ft zC4kK~j}F}-)od+CQU9!YeuFV3|3!ZMcMaD8(G%FsF*j1q`WF`Jr{NsLjGZvhg|^xBj}c z>o~U*$U9wR?`zs>JcbwK#3s{*7JY_qup{Hh^~B%1z`U2+VJWEth+E2|yhJvdNm#5I zMlYp&HTCDbqTOEXNPVxS4UCmkxz$zmy~zSj7T%wiH(y~jwDRT%a>k1JXZCcl z)E)-jxwoo9(E)#Z4QjV_Wu%VBml>k5sDKtZpdJDm4^V8REt&Bcj0|}4-2xr2Oti24 zeXZW3?PKqs)bf4*_#xaE^0-Xb*249;alCcJnKENHTo$|hH{2c4LR|PSb}~sxZ=M4m zoP0nz!3kG>ZBx}mWP~+ZqoEMQ$wq%Sul)`>cuGc-GD)E{(Vop#I((@VWbib(0+dy3 zmYJ=;)O-TR+C$}-+rDl5HRp@C*urX!$6oS)e6VN4*1;d9%FO>;td>O~C)vY3Zg6dckt>?p( zcBF^j&a34+18b)=abHQ5eGf+5uW5HevsHn7)BZ~KK=f#KO+PEi|E#2Fop0I&B>9Uz z_eKA$LHMwLQ3*flKSryyaB`ASw$PnJqM`O&0`z*GwzmRI4qBuJY*=rpjpi{fKL`*A zD<=T?ZPz^mMs0R-jBtxeye7qUs0^; zki%M|Tbl>sb0$*Zgek8i+WDl?icb~I*K)`616s7!<)Q#=hmOojn>%;PYCH32R#;oNv7No@sAasRbaY~TD@Iwn4*K7f zOOcx95udDG2VHigD~;BHC%kTRWQD(IrHiH%h{+{M;J(29@KBAba5lRhuJzGG-ouma38JGb)}bnZYb8h=sU#OvwkmL#^V z>n4tDl|;zSx``#NlG-Whv{p&&mDD5naClyaBs!`)u`_*2Lc6a1f_8^%yTOvp?otvl zKEa(VqW-!EAyv~~+%okHbdzX_qvM%8i!LSU5kr%39I7+zAWum;3VdjQ{nW*NC{}70 z_WwgC+SFW|TCUVwCjU?un_6g7M=P~3V!~@TN9GZU*&Z;6#PU~0Z;preb-3;L(rBn# zI%F*CS`b;rZ-?-@o#`vWUv~stWbMEKjfxe%nS6(sM?}lh2~K<+jZH~vL(+)WNo`3A zv`%VAQeo?)_9PukQnn?y`%1PJ zZD5-V88(ftB=r1MzuSeyVsY#ix>I`UHwW2z9j$s*xO&}70j81qGWXt?Qm==7%!?IP z_r?C};J!@*?zawZnBZP>a2&-=wr8~9PIhoa8&~)Yc_hbhuBC{=TC2a)7>(DMw!5hp z!Zb^ohyOw%5%_KJIhon^VTzuDy%XZJ3eTYZiY$d+)!)y+3`xKw`a|-&B(lgJ1Bxuy zjA_&e#B(o%gq7drtnJw=enkwDNtI0k=WXaGt3hN;$;daKCSd_JlBZ|sNLf^8yx8SKiyC8+I?m` z`4m%2Q*#~PCEbG++k@$wk+49Qrn9c$rZ)M9Mq-TTAYrzeSLQCM+u0+sn7JgFzbJoU zAhM)+P5z4F8te64cdch-9pb9Z^5*rfJu_(r78QAez-~ zB=*+!qR>Wi_}JRxMe>4puuklZM(o&qd5N7;ee!b?9rB2+N&ZRf^tP#7a@kasHyK(b z_ADiQj+4WL%&mYLGuKdW)4p7)?*l+jfp`V&}|Y`UjDfRt|l= zGkr;TT~ZGDs{Ra`=-71aA69&Tti3ZcUR-cz*U zCcL-9ZN~+pryr(XXm^^O3Jy77D!3EcYt}owpz~qO1pcBm6R$;lwY?Z{cx`v>rsenwYYbG8;5>r6}oxf=D#DgrEyLKq(+E!;MpMV9V1qJPHwKTIF zD69EZ;s#~abRr@+9(v=n%5|4+H?N=XySby_Me{LOG5unX0 z0=Y{9naliQxm$xcIOXmPMAl?32FkCJ$We=E$Xtuw%J_{6nS`zspf2%)#LE+ZSWr4!a>UQ^ttZc3iEYjwHJRqk(jf`L*pS6%yRM8uHw+TeHFkb~CD`3<>?%F_pJ+hPLtjS%BLy14K z)8D+JhLuHY7b(0=Kxz9t_8lC1q_e$ zK<>QUeVJRQmd8tr>MFl0Nv|&{TIHL5JNW2lt<{76$OqN+6LA(*)fY>{?&_z74V?Ck zw&ObLP+oaTDbznQ&mWoZFWghO3>TO{=4aGuR7QH?GAI+sMQ5sytZuIN=QjFgo^nX; zMlww8dPp!_M~tSW+*kNm8>>Y8W#^+@wl3z34j8lp&U~(|RU&SOlnLc#Xh))O!#?Ir zU~EY0!lkh{n4TRUn%*OHOw^5w*h4#|b4tr!R+^uB!Y8Hj4i2(t_;o2bC>Wl{0ADz1 zQ;dCoHvD%L*3v#cy1}Svt!PPQlfC2Re;b-(uhh`=Rb8PSX-JvlxmNV`@73V4GLe1R z0_bmThAeeUBI`-%O1sl+418M+RGy2dk{O$Bsda5L)cQ(X79DWpcBnNTilB0(QtN~c z9OV&S8PBZNlqkp_{s1~L!D@*xz^56ZPv=ZVpkDb+Rq)vke$5NOKahZzX6fLIEqvqLlun%?7d-060fvtvTO->FcjPa_kihcu zn>MT`t-V$HP{n-BJ?V?hqa=HwWvxDAI=S*gJ1GAoSN;fL3J<~3;CuQ70=+y8|6gO$F;#*dJX0F|5 zTefvOEtC0;mhIX=%WkH{41=3VN(hZ(Y1vyE28xwAnGaN+{O3^lFL{ z)JH(-0gCA_pw}JH)hR$%2Ykmc6qG!%G`3 zZ&Mm+F3DdsCelIXny-db5TFR-{YGo2$}2Y0LB8o>vg`Zht{hXpsKH1d@_Ezo*=v|6IZCaMow>`9Ctk?cGz zZ>-%=cWJ$kk8$|>Ub0J_#0UIf0!4Mc=|9jBZtQ-`(~yc4Xfjy8_Hs`uUM-(|i;b*~ zI@w!uSm>JvPD1(9?DQSk6&pXJwBko+|4RSr{OHk~U-~qqD!=eJgE`BOI~}t`3{5O| zh1O{EH0bjep(X_)pETF!FFEe;sa-U+*0XetqZ9b;sYBxB=g*Ifw@m8a)};Ek#h<&x1d<`KK(E9ykMfoZb~B`ZTF8f!vQvaz6-U?kJvm3nyAu zReoI}BS9c9W71#L#aX(pAv>~1-F!68hk?k4g-e^i!p0dY^~N6*#XHeoxEY0xqXe1r zC@;|IAgj>jex|;Y!drq)jsff7v_S4M@=P6eFr%^#1!-61TyB<{tz7_3v(aw9TgRB_ zc=Ati^Xg7JU_NhRz#O9Q(E;b^{Km111R@Jd7<$!)=hBLubDp=Y>T`qYaQca|wIt4!;?|fJ z?YfCNrg^b;WsH&&$2efe)YWE;A@8MT-*!%Tdz&mbvl7gBY!#sWwx|P-4 zG;kGa-FhR}SyyCsGlDg*=gE!CJlAB8`cGQ`4qb1l-4~pY8c&&FeT;1MxGT50Jg;Fg z@v||f_cqfW?TZPH23k@i*xKC1p0=+%Ugrg5u7 z`$sa)p>gy|pQkY_3CV}vw_-I7_4CpM2G4SzWnS`f6q3VFjvlD3qjJDfv`_$})cOqH z^fO?61=ko&bJT8nC)?ZytR{TH~w2jnl3qBir1!%SPHCr3j)u!}9)I=B{%@OFRA6xp^9W71t@vLF=@moZN zR4bj|_4^3tU+Cj`n;fA_U;|4FPBXFU=SUNsEsFFijcjKZzTYtqr0lo0>eNXdia&zF z>k6^PB6=n*F!idu%giwx=n*-GCQlOpEw~0+ffW$BX>On(je=~`2EqiQLv~nwpe*_*S2~Fm zmz4P4tQ)h^1TvRI=8dV_*d}vcWW^Y4dYLN<5mxiY`0F-i_%r8u^36B%EZ@v?rIWU) z+mMmDIFP%>_vVLz!Ve=$d~aentql~`X6`I>rc5TZUAZfSxU^_nC3{w*@;DK=(Vsuh zH}f#x%z^0$!>KT2cyk*jB-t-yxmd{r$U2@?ugn+{1(pF$T={JtQ|>f9BPt(jC|PvuIKv&b5%AtIE8Hy;#kJ}7!#dgjjj z4+`f+KFQzAjD+a^s<}RMGorch6Q*O$%HaB#mAWh*fy{c{-}bDX^|2!RW^R@pH3y|w z%l#m0r82dXBM}c5eqNftqIpfql$H8u>(Bf%tZkhCW$AHLIp~EUgngICvBiAmpE@ip z?t7eQ)V1kVD=Swu-ez9hYG;9H44K{E%F6-$zd&BTzRk+)RPVhjn#syYx)#xc`M%Bh zIA_f;*MnfLuF$o5Ju}RuphEKR_#7-Z9*Cv8u)sh$b20%!7%f-E%3Q?rlm!y_tz1b> zXIH;XhWaVqI+!07K-U8?*X^LnakK0PTfK@Q=+KwL!)ECg+r$@yLMJ;?X+}K10cFCs zfO43lQrmko_|)FpL1-;<#wVNy31_9ld9iT%!P)qxxzZ&KRFa~{H$G!7a7hJ98lj~7 zOn;YjjFK)ODK-Igl4*WqSuNqj8S&0ZkClHjwQH^aMbbOJny5@)Za9f*@aTkbXhV zc93Z)&h}$~Y+NAyFroKbrQcpVHnudp^Gx5}I%CB4#;Lx$|DdPHHXJ7A6d<9s09!vK zvZzD>F}^dGb#e=^iR5CKmdM;S90UBs59cx-(hyzI^Wx1|>S~jMD;L|X)zA?}sm$B5 zFll)L+pzX&krh(No%#K#?Y!lSf#m7)A^-2}vx5JjJ}dXjk2V?Eg`&y4 zyxd>dT(~Qt`=gof@`sybOp^GIpHe`I>pzfn6)G{tm2IV6z-psx0_D zV2z70CV8hF>^;f~;$OIFsG0gOrcT^lj<%CAn|t%k_CM~j?jMy$NP^t+_TmIs{kiA+~DjGi?K$!PT@FBVCEj9&*@k=@VD1ifSaJQ@=`f_pJ zCLM|L?3p7OVid~>-9rR{Au!w8P9DmD6O5r+NR0d0n&>C{0EtN3?BJ$8!! zjgmmA@b8QNOC$TdYiPKiYN2<+b}G0^YKo*KuvBFNGhO=WsGmE}{H4fS{W-_CN_~MZ z&HD6a@6gsX#o^$-OoDb5X+jRifAZaX4^LcMmlKfQW%4;Sjt3lbczA6`>6>QFSgDNc zSo&sGatRkD%UGVhYF+Nf6pwCs2nd)&Gpd(Xb_^2F7+631MMd*`(d+HBKffe@K4tAC z_Jzui4khyQZr`+Nd<;H3`Ofz7w|&(&^QD9@bL6M1suZBT)t>tR`=#uM;axL|;Azpo z0KVBUV$u;=o%AwGj`EiBKS&a=^?({^)xS@)21D4BPX=G8RA4%N<~B}yq1H`Z0)S?H z1PjPZ6sV)C^k*)k@x-Gc%iCs`Uxx+v?kBn| zi8rCB&?kvB{9EcLUe-E|ow)jmgIcGt6<0s8ck49v;_7j6Nw{S=l>VZ5o?k|LitU;X zl`;?(>D<|I1jNdiEsfstLjI?#cIU3}Pff34hR8=LYXB+Ykbw(m63-daT+$5l_hwlTB*RQQ<~8nv5bsy4Wh#av-yma3{rA5R_)kD zq5+@!`B*;N&<7RU>@EiPicx-9`UmEP)NIZ4KrlK=-i@HJc@X+$=5JC;TBSURk`N6I zjuY!+Ctxc8DZ9yk5MRNotl=TDnyc#C!x#}Fq zf7gl!;#Q;=)|y8eJ>HF70v1X9*p5B%xQ#?+4{4ddIGj%ir+g=b^J#FxB-iko=T;uzSGR5ZkJ$4^&S~+8zAP?bv`+QZW+Xd`Crjb|eh~M{< zuX=`_@C|yGW?J`l^OX&~)Rde`PBHghXVvdhB#^7?D{*0EUy$!sK(hwpK!}8O4js`8 zKOgpAqF<}nCHaQr0yl>YA_bU0(N5pA?o>pc7Sqc})G<#n8RjVK^Ai*<92(o-UaVlI zn%x?E+XL~1wf1U*$C-1)DoCRylQYomS6&FF1h1a*rFgZ;1WtF~`tYr+;yX<+P=}jn z*O`3p(@}h)CLykW(>jtIScSNs&HH>hMal38gVR10+T=%d8&a|Kyy)rV#I`2F7nn>U z7Rpew3;^k2rU3uKZ382=YQi3r=5&Z-=kyLwY6Jcz$`y+JSc#5VG3*%|p5qf`2p@P>||i8h;^AiEw`;AY1) z6R)u|90?buN6VQT*G!a?3bu1n+Ced^pv}EZf_9hs&m$~w63}bMX^ZK6MLsO}`%>1*f^;PM` zxF4A^!#VljyI1}!C6Q+58)J9x?YzwVbqVuVAUYnuB#q-Yc`GT}hm*7(BF#f8xJs>k zF_oKR{oNHKrdgNsAe=++w;fGGx;Qg$hSoaJ;c%US&|JLL9EW`#-kkm?p)1_Pvh_5? zf~$rT5wTAYgPtB`9{5^vwf&0z%zNKJJL@+u3;Ly>V&AZZ%~ z+}rU^QHz-_EPeUtdEjT60$0QzR74{vK)&}AA-A$3+Y}s#|I6=GWD>o1f+C>(ueG+m zIYRbHYJFd@C?#svQl3@tH7U6IM!_fl!~N^4^A=?lJ7O;(I?E~;n1wrH^$8N-?`=6(4?Syzh@-B7nAA0@12w1<-2m=_pIc1bx4al36~tkLxb({6As5lkNLx2 zPvWRW#aITft1st|8Cy*zv`v#jWfoh*S-PifgXgeN(^f;i#Xn$w`i0}gq25#CPcuP; zelsQhgns=~;!o=LoGJ0A^gD1${M>f@V)~sDAEc+l=Q9+)e&i%1OmT*uzvH=)=zQ%@ zp@NMu9==h^S{^p)VGR#k^zZ=>JN2;8$)7245mYg-8E)+h#xf22O6Ii?AZg!WVXvTA ztiK6+9Hihu<-V##0@Gah4?Tn@>4^TLJSyZnI?|+>o2(*v;w<~Cm~ zq0(d|rSCia5cgi1O+(8|ld0zgYBQ@ho7>P^B+j}hV1QM}u9~j%aFyk{Unp)4Z)=yx z<`DbaWIEX24d#$HTd)7UZT5g|Mdf!$c(tL}_u#_DPaJ(Hu~=F{JFmpYy%L+u)@dp+ zG|gnDt6~$7xQoo*HtsZHCF5ObEP71LrA4kF&3ut&GnXs#3NLfeWiCfAH*b5HPgmyu zxXdG!`Drh6cboZEd?F`|G}FA?9co}5jO+kS+-+1tcnlP+)fK1<*p%LRzdOYY%bow3nS6)7R<20VtY!eEf)`SOnCwd4X{li318bxztaq)m zfq%2izlmriw{7BSEkIRBv?f*lP(?XQ!Qaq~ypE+j+f zI&Xw*Fz-O~ z7n!wSxQrrF?++iYLkdo=n3u8Z0oK{tBgFtj$#=WE>)Wek4d&Q(9I!;!Wo6P}Tc*To zYgAeYvvPwuSQ%m~cZFkDu{3$SR#<3{y?kjhqJs4mS2Fr9#{Mjm9hOCW*{o%;%ywCZ z>1XS!ZASKP%`vV@M>;paM05SWW4dtkF`aCru{#wZm~NbB8XvSI{XnWqH~Q-oY0)>t^eN*B?_7<*ELb>6nvb4~?u^xmP*} zHz*evA7W1ADcU&c2wI-~GxZgbF!Wk#&Un@98iG$$xn~&6+@5$`Xl_hAE-)2|%mGx| zi|vbIp@qg-M{XviG*bWvC7JQ~mX{`Tc+1NMlgW$KjBQ@Co4&PA8U&koDXke%Tv{^@ zL9cjK8N>-yd=PGS9B$5Hj9hw&M$`rL2p;5cW`^lS7l@QO_P5Do+h4}Jx(1{f_P4=g zy<$0+32Z;oApf}?xPTrs{mENhd;61AqJT=UN9~q%9O>9{r0u}FRj#Rm)QR4S>1s?* zKk@G0u^f$nwbzjQst#wGBCbs@rpHb^nlZ?o$U^TpyZjdw=Evl~yx^>|=W=Q$^fLcJ z!&Jfsmm|ac@RF5x=I%Xq>eNL?qtywQnXYgbaydu0)ND%faq#T8$R=TOIb)^T;`1r!RUX1S5kg&7ADupAo#gJg8lc;CnlG-HMW^ z-P%tv_RV#2+id&Dw(17K^>J`!0&si4hn*(1RnH6V?!^2)AxF;RI2)JO9gUoNXNJw)37$K0F8M_DBC z|3N^apc54o71y{1g%veXqC{a$B*;X9qR63m;6@R}17#v0S2T$-J3AN@uU&85^;&n` z^}?tSn#7S*^59EO!(piFZy@!-1NQZhz z|IC84;=L?>_-vJ7&`srT_2u55Ot~cRz#yBC?o_!9KjgZb9=GAe$O_eslWK)d@$?g3 zX3IuNyUnmO?h96;i(0O)WMdajl3Xzf1{tkZ;BC*Jy=!6FTm#R&@8R$fn~e28g8K0o155|J%R&-&1Lf znK6xj-0LfiF6{*IP9P>O6uV~PH$CCMfBq`p6$~sP1<&2)Q{PmodK^6dI0-!N0Y9jj z-3zCJhxrmqVH9Q9_!M4yZ#5R0)dPa!m}FYd8rKVhs7SfDrJCbc^gEvx|*-#q50y}Rg1 zo8D!$`BUbl(9KA_FdH zOc@f^Q)M*F(=a=DoH5Hd&HcHW67$i{(BRxD3PwWKGt5e<3CBKs<&F$KppEy&$wtLg zVvB2ctbxi`0S|@U)GcnqF*c>tYutJ{!un{F+x&wk#deVdvs7w7G;2K+@Apj%-TWma z0p`taB}->4qSHTC+M`NCC<4O`rOK1ba^jlmR+N&_10?VDEjJNw9#+{UKvQ2heZX^INppyyV<|FoQAOCReG&shF}Y1=DNS<7zz88!>0eDN~yo7R6wbdxAJH%CFM^ z;n<%HF3p0^*iu^Oe)i#ZZaxV7LUpH+De;(WVzhu}&@OR({p|)9)3}0I5Es0~wIiIp zz)rO5%nh%o|XAo!e#4AaGKL65kz>gTzyaT_bRKuf(Fpd|0ID0vSHI-^$QWZ|5G^Zr4$aL3kP`T&xVq3hpVO$$z9R^ zC@z82dg)Jks>N}dBu<9;8q(*aXVTO3O@DtV_@0~ik}lo(doABt{Ul`m zu=?b=@Fv03EGkx3ekdd-)m7%~RmliZN6>G5+;~>|3>5-ev-?~<&d5*-NgxA$FK}zF zn+CuvbAsYm0?&<6J!`4i-dSJiT{iLt&75JqJ>~I2eiinj!g;o85Lwx=kA~eCN~e})GJMpVl5jcFD)x5^rXt2+Qu({JM%x>u?CumM4-D0ROShRT zmH_U-MHqtjF^RgmLm{L$acsdoe3V2ED$rMo(6Gh5O%yJoST%|MPk}FaJP=%G!}0>A zGAePGtDHz9oDm8w?$195IRD$maSCm+2=QfvN!9)a9wFL!18bT9&uhT55%+M=7(h!K zP}d|6mRt?h|1r~!O>V$c-;V06cC1r7J~~qE_!MbZE`NnhuA^_rd>teP=U-`!1O=Oh zYR$b?dW*Y}8PGZ$MsSmPDQnZr=$i{VP_KSJYHi#EXS}eHrN-Qi44%|DVx-N;OT944 zqANnD2k* z0kA>*bQpQ(NtaDL0m)%?TZg2&DDk^&d8Pb4m0zl7VoFwi#>>v*!ktT~MK$?SawgVh z_LGd98OkLV+o#f;#`PjgQe;U&mc-{UuK1~(X({nEnCx(Xv6cKpbmAYt(FIAPS<(aS zfYEZi$M8O6AKjg|!Rwai*|#^B@m^PB9SWeT}ckF|XZ5WZ}WN|Qib zhU%JCTEk#Z23u-axgwM*7}#4i3Z!9iL5s=p4jPlS)8N9oizw=I?Ba8j`ZvXsrMrfx z49+s5Bxf5~K@3sM?xE6iFUxUndiMbZm8d%zNR${!iPG#6+gp{mJFA2?o1{ycLN1pr zH+{X4W9DW$GxBe)Mq$)cOJO$~$LQee`}#Vk*3MJ5p)>qk_V1)M*FDa!Wq*K&M1s5; zZ?0;w&6yv~W6r#UMCQ!GEnG=BZplvTudc6=q_{9$ch*DQfga8r!MV`Gahrj2sE0F& zq|{1s#jC92p7Z?cZsnRK>wxHhQf=bws}8G2)oU$(#aoW7l00jz2%6-3L0LCl`HmQyKM3XEFYT7&$BL?w|-tpTFDUr^72t z*-*IMsa>1gEPnmOUuP*>+*GCTC1Ss8+*Fabc2SSk3Qwm0y+#(Q(>l_csC#O zL>+d|eCxkrWO)Q`3IK8MWkl=34}|4Nw_;7u`X+Lg)z%d(rRp|`-vKwR|9OtGHIL1c z?uek8aH^VG&2;;~cJ^J6nHO6U6G?_1Zrc|gts$xWLzQ2s_ha?_PNOFB z!y7ypt6MZyztc9F>v|V>Gen#IY`+?o&*~8a!WG=sV{HbSYuLyDV=6-QY;v`*5gEEw zFo5zkxMb?K-J?xz;%oX=J;>cV--OE@a}h4@($xr;ao-?Z{?=qdoZCOs!guH*6XKxp zn9!-saGs)^jit1wzX%c=E`HoYXD^>Vyy1m^^TkXE)|GYpA1 zPotU*8tr=^q*$AFDsZdJL|MJB=8=>|Ib+X|-;2ACz`&x)NA~u>?IM@SCl*vDzqFHB z-9K>$?F!bRL|lcpr}c4%8g`TO1?JdGB3yxfrSxuc|1=aP9a>#cHUcFw z`XR!qY`BRiQrrVh7u}mPNb5iN0F%yflaJkfw0fowrL1@q&@wgd_(*b z`%L^}Tb_roo+rKnJ^LIZ3aC-mxq@{E9SyAH!?=K~Z>=zu4eMz;l|PutEVqnMLzBj# zC246HpFw;B;(0|*T{0kN9O08_w$p5nqCN`%aR{t=V2+$tFYAkCuehC%DiB{ z$~X_@yh2vNQ+Io!EF7wk5A}=HLC@_H58qz%W1G-T&l#L+@M#~pz3(_Is#ObX`tG_c zRKJ`L(GT4SkmDGY_7}+VOa1EUhe4S<@ny|VFIFGRc?#~ey_^6Liuq9UQ)9L3$=yuV z&%1kGGHg$I4s3O}AlWtG3s>vE^wO6N^KPULmA?Y1>Ud>cVlF6+#jU@U=FB~gl#H85YbMKj zn_H@Unf{Lr?A1#Dz`TL^AwGO717gc743CzGe0_4r$0nABN$xL?p5|eJEermU#(wN_JV|FbE#<#B&`ff!JztZ?*%X6d|lNw z9J_#pUZ_q1A_8aGsU7EtvsMme|cn=*~T7Yv@(H9j97UfqKB`ex& zAbqcjHXo7Rr4rAbqR%Q8EY2@kQT=K~(f1q=tNnCqMZ9+iH`0odEgUGPDHXAh$Ln<+ z1`&^D;Xwbk!j$*_xAoUH=T;OgquNM6stgysp8RW8MVSWrj}<<9Wy$vHjak{KzrLmV z(6Z?C9)qJ}(2uXo8yvl|Yen?@{2kd5ijY8yFbXzcV}3@mhddcFQ9dc88%p<=<> zK5P0QD_D=Il#xZsui0VN+^(>%CnX?bi!?~3Tk znr~amYQEW6yDhJRv8$yrq#6C|)n=!9{jCi_%&dN2cT>fJru;I+lE|umX}bOezW$Zf z&4`wYBK}`lA$Qw7YiIPzjZ7?$o!-0m$BJihK~eT9FT2_dZ<*eduAkX93x)qteR;|9 z>ZO%*d(nz;(b91Alwd+OX)T3u{zW-82e=!iF}0x#?O`HR^Q_6oc)y<4u*dWE6wU=o zXxfL2K*ve&v47s(l9v3kzf`cBj5Ey-WoHd0WVD%F-U}9zecTk56evh+6Pha@NRyu%5Wi$kjFlZ;_#LH90Ui*lSO@%C;Im!h zZ=GBug`4$4u5&rtWC|8>uD4T!ON7^hrejSSu9Xt5XNJj4TU;);A4t^(3Yvi&P~B~qv(P;ghce+ApAkQHKc2b2IB__?nf1p1 zjlKu6Xz}#@<;*mF_a!o|(f1%v-^!97()2wC1u~#-?er}Ao=ll+`hNSLU#IU6Y5L|F zr2j$RLxKM*^qtxA)34C?WEN%Mb$%9onG&FIPx}y>IRd);4=O)MzD7iowF0opY^+dGY9=|njgjG2GIO~ESkS4s~4QTm(g7G?yv*BThYI@{noBx ze~fNosb`D-dw51g#LW$t;)>{-p*c;up?!{pAFkme2X4{eB9q*qY$R4h`D*8ZHH~4KA_=^5_GN&Osru1?a>$<&rAK=L-I7LPQ=3BzOX06N8 z{6fi3C8uo}h)osm%NEy+LC9(bnTO2*!M*)X1{sbkN8(lhUsK}7H@jW4khuXFS+v@{ zCAlf=6IlOR%Y(qj44yRDGJ1P!jFvkx3dlw+Tc8$oQj?yy=Qr$bd)e&~(Q4xTH;H84 zI5LN1cQi=a-kQmdyOh)|NMaiiajm14ZZ{=i?&``5RhXPS$}Cbu=(o*zxtF?Q8pZ$B zSEjQf3K8Y*Clgr2TcUQA>fyS6;-B)|p21UB_cpnb?Z@D6yIDfMGWvBE^`*zB5Kso5 zrN8GSA88QD@=cMo4Qsl3jT%qYZ<2@mrI)`)`uJfM)B07D6dwPybkxmG8tEl0r0% z-7wAq6tAyjkGkV-I#1{Qm1G~(jyxxY*5OZYCl*dA;uJdjD`bOp8|SK8?xv+C_w`4* zYIB{NsgUS4)9x??ut&lFpL_n_cYC<*072d3x0xZt6b-xuI+SOqo!n!xcix~d8$d9#3Ge>Q|}j4ztR$I2A4*# z0+SG9Iq{NpzF#lHjx6ovGwg*g^Pi8y{*Y_EWY^~E4jt+20ihOL8@r=6C(%&(OA_ENK*d&Vl3kOG=5yPRn zCzT%#9A6oI!<+*z{Zf5{hH@B54r zG5HkBoM08yu5QB(zUCh8(A5DBt|GuD*PRqR<-1~`1k3#LA!2P-AiuKUC!Y%BiSV8z z`2_{(;1A(qFmShhulpFyR(Ydu8d_+c30sbUGUDA(KV#R){-e!R3;^CcOa?kp0M2n& zGC4!P%LYfk*B&z2kd+d4;`1$Teka-PBZD+#1QgWNxx(t!kHZ20l2 z#G=*d4}s~>MtHGH+57C-2c;e{wb$-UIy zICgP1jB_o&bcmb~j-99}ayg9v*U#|&gw`9~eE&{B%(JdQ3b#L)^5Iy!6{ehcd}TM* z!3aeb)p~8m^JJ7t45O50miu7^)?sKE+rqJat4MZ7{=K^enbRRH(%w~8&L->|B+J}L z@_RvY%M;4Yg(IB}H#iBCG4q-2ovG)eyGMx+y4kSY2v zoV%;)jCU>t^P|Z-DjaXOVjR7@T`w>1x#3zv%Lv#?Z7Q|zV}tKI?2^=g zs~9ITYFIdan?(E`3`M1l`$a+JbxaZ5A*%i7P>Kft#xY zxYVYoHH}hmMxB>IBRdUez@5P+!w`B1Utld{?`+lKowP-ld0Do5uzHQug}ZrcUcDh>Brv>TfT zH|bVe_j_GEZBisurz>hJpl_&7lbbjp59+7)%N`=DIe*BqpXqJwT!rI%JT^x95;wrp z=`-ueVf{^{QWK8|S2}i+TW%R9jZJl_Pgci<@2t?(R_=;ktvj69^(9ND9UrcGYfwB= zjIOk)vgfz%y}xNc12#zhwvs55owDk|;JnFQV)aZe@CT{v^hU0`=1>E@6OYO{e(PH03!Pl3P$kKyc?W-^cg3q2Az0BYq73(a|x`B?J)46g3v zJQbvtT;uaaY0W=(FS(&jKa}g2#SNL+q#VwU4aiQ@IFBFs*dYWN(AgF`(0#bVhI_6n zTE)s_xKGs(T%ZqtONkYP_(JwCTg&I2-f5Txe&&)vjjQ5*)a7m$C~yvm*+P54U8Q;a zlhvFc{uv7?{*%!W`Qhk91yrd4fbaMp^VRXJejDE=8L5&~z9HRU`m7~51uIS;ufcpSIQy3b0lCvL5)0LcUgSJH#mC>ra&~2RR1EFwqTrQADoku*Ub4|a8 zzvJC^qrHuCDja6h&oA@UfT3>4aziInC)Hc*ecu5_;<3gQ&2H_UN;bA0#6UR}-GV39mj2K{Y(7kwnz{ZOeKuXQ| z+a6l}EOzrwkqqE{(RzMaaahor3*aO3x*ka#@B?-eJw!if6obuE_%sTsL;ms3dd(QK z#_)ZfDME~+v&Rd#U$Gx9P>5*uO-gBse0?-5in#AV&YUp-k;W8hVYUdYo7~&4Gy4t? z)v5Y21+k4y&vjK0rmSR9D1IuNnMy&7x${LW=D!%b={bEXs$Xri2w?Hz=LyO?9}4EU zj@-QAB}l05J&NK6*R@f;&yZs_xm@EqWe^vI>SmF_P66OX$W9{M+zY?XfHOjMS6TV$ zJo~b@|01a$svE`^$tQE87>jbI#8MI~YG>r-gzAd5ppOmcYRxqZx!dI)+nQhfF#F*5 z8b1Bn2%p{WwGH@Pe7MSvYQysn{6Hty@F>-P{B*r7 z8uIrw4@>!E^l7C=!Pk}C4qUXF`!A~tlfwhKyvgmUK|}}bAC6(NLh&wVW%k1Tm_@W0 z<3okX=uPe&_^D*!RCb11Tm@@8zg-=w8_dv57632E_oU^U_I}`BA})+-S3I)D9ADha zc$}oHKV>3<>H%mtb}}q;4b1+E`+z*Sc4E=0#!S#+?;@}H8&o@gQS?cpywo*wS*UdnHF{9C<`{1yPSyWG?_{t=Pl; z>pq*Nx(7{L1$#jP4ob@gSk9rZR70dc$;}3hLadMA@2YMiRmTGoigBj*cJ|IPz9rE+ zNCI=qqKmTwdkgcgJlNsZ&kle)y1m96{GCr&MS>=-T+#$Zr(sfn6Q2ez*4DSxRxi(( zuOw#{?QJAUpD<6$55EznXek%r{@`mzls9x;ySQ%IwV=QQzJ3 zd@Wf#^(_%s0xPpWTGu-3F6@6}%tE}S5rbJ#N-`p2OS4&Bqe^_R3?Qz`*m#o_FB5|-z=xE-3 z{%)BOnTZ$`uecH-f{{t#s` z2nBm}(pbO50vEh$*@fhO+iY@}XESkP}=?(3XV>}B* zaL#s_z1kK+KUxZ(9<_%SSvBP=AK19>Ak}8US^6B?(`<`x@N8Iav^(Oc2%2zQ!B@H5 z{P*2lu8o${oTdhv78&Voe@PZSp8}D%6hy#d!AZOy4PvuvdLYOp26S!SJ;qGx5? zCTCAH?sbtVxl#spN&flIh~1~7I!E8Rzs5?GPo-{u*b?B^tJp8#Zj*J6NhTyWz{?6_p5|Y{pyTdZzQAgzyAH z(JJ>>%dd3^L)TK<6|gb7=nF1hh*eWvT|o}aAdqO67@n6231rGgn^KkEpcDwnwB&{d z)#n>PMM;+t24@zDBN=@+aw4WHeZgo=Ju#K^aKCVZL=KptI_ZSEvZ2uC9|o~C$Gy~K zmcN;ugW7tqj(of`6UWo@S?$~l>Hsf~kKU6TC(A<>YvnsIpv~ultI*Texla~ml%@Zq zAh<~s)fC8hUX#5K;Z6@uqdc#ywbM|p>!g-y)wZxU&c6Fx1d`4XGW*bGW%( zFfr-^4PBp0RMR83?&Bkh&RV3JnNjL_VAB9`_ri0&Q{3K5z!iGtyE|V|F3rNT^mP3q z@f8<&XX!j?{zJt?zQvEcof@bsc~>C6!m%(4$4EHQ<5Q`nDOU+54uZweXCznh=#XHD zNN7IrFB=_*GV4_D7%_Dj$0-i6GBvc8)mXZHzHy=>_3umliTxQFLH+YJ@Lu?v_0Lyk zv~h>5(M1;88N+@|vAkfP2NrYhBqdd;mybt;qtkK{HwAd6@uwadNPDU6(Y>kd334<( z<~hKF*PymFauNx8~QL@R{l=pT|zMC$*X0 zfq-#Vi59$GA4%Dq8SRhpsebdMVX^(@%JhZJqvr~)wH+4kwy#-DiAIuJvM^NnzG)4T zk0+kjIdWLI>btVJi+KyY1ot@U6>M2&iFgoaAjed4qvv&&A`;kSY~ATi5Hx#*cSb6^z|tGv_rV;ke3iwj9^zc9NJIETB(nzU%MHpR4lH5h%Z80p$m&d=tV_ z3cN4B^)@9b&}}Kk)NL;a^?A8grpqlV^T@~QX$%({B&XAOayJC}8uka4jP0-y^Z;>W zO8Pxt?^*KH>uRC8OX=eB*h$cjKy0F9s7}7`1L70gr0FOFa|stByvPFFJtp>5<)tX2T`P zYK;*n`^vC#603BHXZX_9my8)RCcI$VAw7xC{K@oiQPa4$azhPGSASBwt;3ATLjPPCs&PF0NsfiV%&30e({qR3FKdFJ!;PSRQ+am*i%!E|c3KXM zkT{sa84C=q*3l0!jtf0Aj&D7r=ZffuFRFXuooaf%w%|W)6PHjVEhh$dwOvCUgtxe` zmkGYCPO-sVPmOmj49BOw&&vQW+xM~BSxGH#SwUQ$4$T8>1jGj9B$hGk8Y-$j8qgD8 zE>GBss`my&*AcJvcrN8_i=+DSx$g1VT7C^+p6~U(ip`){27mYBEYHWc!-wXL7Vr1_ z`H*1Y%{%e&_**l4obINeUEE9EiZ6ef2aM3_fG@oiT38;f?kqAUR;Sk!?nGaIZ`H3G z>=+00RJOnBZ#@pawxMCSPGEd(S(!-E6!%ly8gPUF%!BHQ6VySe{g8lOL4f2^qlBmo zZ3?#rRE`{On?y!oWK5dE@gY76d==Ox&ZaJ_HThxI6x5IIIy;@i1&q7N0+==-96SnFWS-9!(oF|Js7*J9%r$|a(aFXra8F^ z${S#Mj4*8*4-=wDcu4hUQdjn@=G%Rs%n8_bwCkf?yAPmTxC*>}k?YRuo{kun&{^)& zCuv7=>W)p!tKVFG5}9WGjaSXe7Xd;eDc+eSL@B!{2ZBbPUr-u7!m)|u zM-|k>R2dtbf7vb;A=f?h{m*DhngRxej{xR^t=v1|Bfg2Q+Jh-MFK7Bul~`qx(KNqt zJ1+rkPR9rw$lnutFNiF$UM_j1`Wu1J>}1C|3{Lc26sNM56^RSPw*Nn*M;lL%Tfh7N zh91MyJK~;4Fi^CkOW^}}MWJ})MWi7vw+|}sQ^z0UTHmQC#km4~h9RA=bK9l9G&$kLvym;g}hRC-xuB>^0 z+DIc=UYfI%wkoRjfwNbHOWv7qT19kyvX{pXM_l{^O?XuwW4H+w@Jkh_D0zDVp*}z> zHi)^Wsrq#r4_jJR!rYjjfZTI&c)>5m-Rfxvcm0u=!H^_$BW|dWBEy z&8nC&`>GG1KrQFyn}zKxqCFMQHAmd@=nU zx@X^yt^KjciLnkvuR@E%h%s*=k*k(+GUBz^h`eYAc>1WATzk+wf(9{5`&NbHr>0N3O6Ar#N72xEzhKOgGExe5%gpc+kc64BM z24=jD1^n@6S!bE-ml>*2YjXA-=8&rLJHoS#%a@-6mO{43JoB^dj1laSg{K)5UHEw* zYCd>~ES1sGtSc8bm+EwXPW^`I6)}^rGf@5)&lu9?oj_-ulFO}Ul}_!Qa^kqo#FMW2 z!R!6FB$(>&M!%KT`TOTa$C=KbF+O^E?qc<(ZoCvn-FVpQ-{kJNaVK4={EuYAc<>Qw z1MAplQu;`^>KD_KSd5wq?~*H}BiTk%bu77zHEim_j2fU5(kPLT!j>wZj(-`rc)aZy z(k)`tqzr~KY-5>^93vxg2euE*n4A}`>Z5%`d&v(smr6zDRF@Wx+F;DbPOCVr8GCDR zdbCCvjEXOWc`~$16#0DLXR%&{Dz`?bban-qW`yb*$cD7C%^=OcMH>(!51TxxU~a?> zLH;K2Sl@*DqjR_|0*i>GE$>uB<&Q$R`hDauL>$lMiA!l&X8dwNEt_x0R93lg)dt+1 zdoHe6@I~8jyw?V-F3g{j7pKPh_7L2*Wi4-4)NaVFEZIRCyo7$oJFU}V*O zA<0`)@}Mp8%uUH59=hmvAe!cWCC5((k`!WYh-~+D3ZEV2?NAlChD+7!S5G=3)}iG6 z>D`fL(x@=6qThz2oj)LwyFrSzvoozmH}~E3HZDJkGA@5$0I-g@_TQ`{w%wq01PA=% zT|S;cEc{*DaG8}Y%OB9FO~svbPy6zBtGpJHls``8U$pYA*5hNXU~+M)y+;hy!7db# zCfyfuy4H7*P`K*&+U;#-?1#IC1XD_`rrIs}>ZQ&JP&LSu{Gh>X492{`#5N)^I)7YF z&c1F{m;0!bzN0Dj4|d=amw#AD5GpWmwtK|G>v@&bEVdA9d}b8tkMI+9c() z<+eL%05$ip0sUuQxU{Exv27kP9lNf3NPl@HKz&t&vAez|WjqV`B)IB@pj&$jq#Be<^vOesSxL=gvWHPu ze~iwfp-`xh0}ltDx2gDEc}L_X2%c3y8f9eS(R}^dpVvc(@G#w-x~!OTPO{ z?GN%Zi*Wu;F$+1C>oq>@DCD_=Dtv@l!VX|djGT_38D-d$R#CU~Q~yq(+(1~wDO5Npi8ML72Nx@sH3POGqIWBj_N zWd%8yu-NIr{%PiFtp_Sf7L~n3shrR)O?4}(XK~-s;OG{t0rlFS$2`rX%>I$Ejvsk) zEzE^TKa}U=^c>yP_%dbDa@-}&utVUMH;U|yvTN{R{v>`~1)Pzhct5^|qhkxXQ3GmK zM#sx;UKyQ)fUGMhgdW6bATW!49-?R<2&lS(KB*5Q?Zaq&$hVwhT@2!20vFprI^f@R59?udLbkKZJ@iE^4~n+yE! zrXdm>%@wg5m+Fi9(7cIQkC)<9m~%Rx>46?Jos%d=^-!HWuC&8%?EIZuT`rF3Tab8E z6F2ieTOeq|aE;W>mZ2CGGF@fi3~l_{sf>got@w7i+B%pbe&iF^-{M;}h-&QYr8woV zZghgIv<7vPd-rj6(d7-mJKML-yuxXTMMi`g(mk{90<$MNGmmHV3EHaf)>e@N04*y5 zSApxSv35#}4K&U(U?NBCo-O-CX=Su8ZTik7`v>ivE4U4A+jWNbcQv=9!Xb3&aihNz zDrc&xr6I0w#1!3&+T4>ferR!b(nX1UqzYs#Yq|X?q2a5r14<k!!;`WR!1`sb49-aYx}mc*g-R)dQ%zbC37h9cOFucTNF zInwf0SPTs(YD{HhU4*=71WRu#UgTwrV7o7r7bHN zuL6jU0snJLPN|mpie^0{FZHQqZ7_a)R;x?-W4qLDJ$mBVTyfo$8*Y1QUUZjm3~|g{ zdzNmqEIz#d?3P##@}aMr-9CFhHvBU4@MtOChHlWB#JQTbz~@x-{W8ST$+^jgd1u!a zROP*60>6*sI?P>J5Uy*A93M2evS4(m=UHm--32vd5A}T5!e)kg{@r>t)bkl*g;39z z3Yz#Hj@K2ewcoP}awVbi^a5lkglHqBQ(=(O)lH_~A&byhNPqawfED}NOsLJ3+U@8G zkMj^4!7iQ*OZAdVT5Ge767&<+rWPgE+Lewuk*m#1FhjY4``^-HL<-tet~Or>E9Q?t}l*g&*2h)W2guWjo(J*K*y@#Vg|*2ZP08yJ_0QN_4i!*N)*ZKAYX zMy4sgCIlYUP;JU8Exvx*mtS^0<>lH!`TJD<#Z>ufYV<;6td$S;qgbiM&dj%Mb$_yO zN*;<#-0dvrX?T+h|BYSY+C_QgSr)F0KBn=eRbHsB zE0Ar>kvBDQrpBEcT5bJvZVmJeZXGyDm5hS!^p2>TlAE~_vB2Pf)+p+(&<0nuG79&yQbu60%m+NC3_}fb}7Ss^XA@& z!Jjn;rtM?yiHPC(%na}xWyI)r$93TOH28z(wOM$Mo{Z=mYLXFs)t8&9a)W)j3si23 zFBiBY8vpfBxdVN_ zdFJL8Vh+TMuWUbCl#mzH!moV(0}Wi7RfaVP-O8D=8^)&PA+dkxn565y zqt^#~HH0dv-lUG3orkarr+D@HOZpuBiZ7?)eyM(#`=x!UzfQ34G1xh7=mg*Y)1i;7 z)CmR5X8u0Wrb zQ)mM205ZtBTIx?mRYY-=-xBEf%Q#N%&Yl;j_tHV8Udx(a&0I~#quWbSP>gHrXXZ}9 z{OD%(^ZK`@cD*}$SDbgLEI3`@qxiY|?Y=_H9K8C3Yv(qRIVWDCjTWl`h+hxN98sHTPuiozd0)UlrNgi%I8ruajmhkBr?_1&LF7S zZn1%V{do1a)}fAsOF5= zI10ME$NAs|ClsNKZ^IB+A$jwd1`BpaWyexka_N|cVU1%c6#d1VuOZfVRK6eIWCwAl zKR_MOYS(Cwa1>vgTJxyL8V!`!g-O56r{ge0tIQL0j$h;v7cDv#2c1$W2XxdT<{Ugr zeLuOUuQGm_dL8{f(eulF)ezvt@y0K`vXtnt49(JNIxq3C zas;c+!x}1BR|!_@xwxB#d6SUwc+lkS^C`mmN`lK)r;*)-XnnUQ*us>Y*DBYx9rq?9 zauz?_d{*9Ga2IQOyR?}5T>JM>=C#U{t#lIgAFjvedfQhx`XBDtOF6wU1N{8^pIe&y_oWn+C_buZPEJe1{k%|W zhN;5gSg(RmeLoYy=tm}BhK>a5AykvsLVUVRnn-4ODK^10EE)N*_63E~O`g=BZOo+(7*tpuV7q1!58udUn+OiP* zmHP9tIfnYHk1!=R-oEU{*)5G{{rV}tgq{#xil`!C9>zwp1*zw7_5f7eX?S3c2p$NINj zV(nivp85v_?Y~0p_w`?#RsT~qa&~TihyPuFhfMwVZr!>6efGS)>`?Nc7jlUaTf%RyJ=Q(l}I5O@C~8D#K8 zE@}Z~j)J6C$#$V+4K*-Ul3!|E3up_PZSsj=okv@5<4yo7ZpWrUXuyKxY@g4^5mwe3 z}a?6?Zy>=)n;x0ml&n4!9&A9VX!zk zvrv7LxNb9tuA6A!tb6r=O@R*KJ1a}pR{yTKEl{X-9M<%4`J9C90o8ck!8N^HOCW4q zZsSEZ7%sU2X8f3oYO8vgR%K;%Oxx_IW(*pObQJyf~onX@n?aH7w-eC#06B?s=88k^0LL5?2WDG zQ{G$6Z@ja1*p(l-KbN8}@Q?+Q_f{_J#G8$`zihDf#0bNk9qDlyhm99&je*{@xiVDl zbW%3gt!CWoitZndma*}J zU9mEHDauS4_ZMo~+L@Oc;25GZ$Y6dATCnU!f@g+DSar{iYE-j3?s!#3b9D$f@%{H; zh_sL@cL5t5vIFROD0Hx9Ylp)Y{S+J`V*|R zkFt=Wi8!FMHph9Crv~RnTZlDKLolsjvj*)sv>Dyes_?xOal- zr)zoaGCNR}tM)4#`mw_5RE&+dRnpCb8!9(!T!?5F&}M+`fQp+uG7K#6IKkzqogA(e z$GnYy5GF?;RX>-(ao&P7j`yp43dhX&XC91nOgsm*J^e)+0$BSd&amQk!X>08CT6Ac z1#4>aKk1klo=$I7{-hntAC=CRF0TvGBkjMg9XP3t8UC|{1?^0%ZoOtOBFeUdA&7#9 zm>^xu(LQB=}x~`Q#$AU#c1*3@b|a0j7nTL3n7=b$0lUI$dXTq zzqEc2_>ExLaBko#D-RB|@&_(5g~3JNB>ZJ;Ul~T4U8nbc(mJfJ9bD9S4E4@m!Jomg zF?n=Oym;|<3>J5@HkiF!>djcQc9-2WV3N#lM~v~tz61GyE7|l@a?4`v3I<1~jVy~^ zF}flauK`|JXx~%1>Uw~&G`WOX=GjZ{X34-jRl9ZfiNvQ5qAibUsHlB;DFt#ubzgxI z>s6#w9-HYHwyNK*vPf0RclrzLB+jlY2O}ttD|YSpvD5YROX7)FG2@^X)*q z;y4|-VB&19`W_PwUHLvz@JuWSWyAEgmbZ3TPl(0Cn+pPnm`Koeo{0ZlXnOmyZokv- z9>H%H{c4Ub9TU170dx5>Z7+=`GrPT)zas-Vrt(e&+IY-&1wzH+U1nbjT>Bw;#@tHmHqCwHAD_IJku3hXnFpk@|>dN00bv5_RQAX1REK z-G9RLIF6qoa?~k}ekkQ5>~`Y<8=+V#DoiRHS#~y)&~73{ouXf=BkO`r z)AA_$h$k{46FvD8=nbXTEk&yvysu=3r!S<%nWK=KKp1cQRH}{N@Jvs_ImgVvva|>3`KWgxXj# zYoj_Prhhq?{gshf<-z~)35W$_v_yY3OuU^q$wWx0Q7O=WUVwK<9W{ed2 zILrOu3eNS)M<-)tlZq>we`+b|KRWQ^r4v}^={}Em`w_VAWCT4clPp26_z!`g_Xd*d z*K5v@fFHfD7x2Mv7yX8#y$h@>(?T9klUxaSiT)vhl&{o=s60>@gyTgP*ZX<61>VMQ zXOSDRm=`{k>J$7=yag>e0+r|kp1m^FLgP?sCFnarMh3PQ^c*U$j6YLQLup!95jZ9d zk+cXCh7?~|g#Hi{`pAk&+ah*=XWIUmM~fmlKx{QRU|Y7 z<9>eK?@aFpd6+*`f4LAxK~vktb4;Tfab^U$hOAy~=S4HPF`g|;H@Zi-M>rS{Yuo|P z{e-|_xoVyGCq8*tHfJ2UpUoNSkyZ;4=74^?&306cGT2}_Mwx4~yRJV=|`qcM}r5EnhndMC1Bh|H|p+u%9@8`vhZBi5I!Ib#d zu8N=Sek|91I^J3BKcgd&{8Ra{nP8+l1loq4^SycY`Es55JsTuL&*8RZoS3?{ zDfRB-ux9e-?~va+)MdUG?(n_O4)3Kqyoa;j%Z6F(S`BvsN1DzQJ32IPT8{hA*HHDj z^VmP&-dY$NXWt`kzon&ab*O$FBuK4Gg0L_;FRIW_bYESM;JFXa-Gb**o^`N8dBQwv zJxxdaVuP&TYri4Z@V{=-N;$G;to`%6N*F6dp*!_->yYn8(IGGU4#_)!4mp#KVt|FR z91U6+bFJ8qezA~PvXNQ@>SX z%n0yI{6S;6!Hx6fJFEQjzI>6&PoO-_%U*-$tJo1jO7^0DcO3-LI^F2a3%bNS9BW@q znuh6N-c+VwJvnaa9ONU3?DF=zNQJi47WL>=Y39YW;{hr~+Ex!dZ6mLJ$lJ+Rm z59(jM%i)$#oTof7@-R?4`HHIV;IQ7K!2P)!p{rNBH|{cX34yS0^?G39FZ6I$pA7R} zpE7s10i4#K@2l0(z6D_M3Q#2Eb4g-`W&vgH`0jQPrUB=~+TTqMo)F>v?&8sP@?XY> zV+T!EVJvS`F%gA{)3xAsVd^c)Kd6pazcDKEV;$1Q`?GrEx%681S*7*kn>O1hx~nDa0Sg5beMe96;(7eI67oRN z#sfj$qg#K1IO`0L(T5|!=u3~$e!}Q%k5OA6u+SK4S1_V^Hvz&OK=Tsaj7yM5uA_%C zM^L`lzo7L>-@Y+Ni+5wxqFH|=Q6SqZ~FNytG~_w*&X_8Z{eKkue9Q29q0a2 zYkhWpti3zH`s^$){DMa}(tnB2XN!4PpG^w-?2TJ9eP$M^SigU($N-A8B6w=Paz_lZ zeybZn`^>*M-tU_(wC`Bjy@PmIt0C38-x}zI$5;%~U;oyc@Qs_TzlK}V9w+I?MnHE< zDBe?fqU52!b{FbFfBjzl^}wly$xp+<#9|_{vn@;>14A&$?yupJX~a$6pQc@Q1N~*9 zM)QXo<)J(yD7%}G?01NuRH>cW{q<;Ws=so9mRRNcD;vR%`TQ^j&NT#sA>P^&}7UeY~qxRef7F)L)6;UJ-pQ zxZiMd*|5RU#ky5&8EC&_XkWiR+z!X*GkPf6!9?g;`xBe9SMq=-!+*Ag>UC~KPVejz ze#_Y;Y!w`jCKv%r02n)8ZEzC{f5E`(w{~pHk^H5yO>x#{aMaDy=A7Dr4r)6AJ*?E# z2YS(LaW-YT(pD}Op)CSzwAVw*NM*;0-ILU$Wk#QJLbb-iTzw$ix(#6)sE_Oy>`Ji+ zkk(x2t{(AAOJ&v60@f-7UmJOj%uIt-p7DgJmrLtUL5tkQbLF3F&R_k)u{i}bU>xkG zoPaa1jXo}dou_Ounobw*hu}Z|19i}_oaF8)en3=!L4MP_FSW0N%;?;>s-J7P7sP6 z47v8Vi4xqEl2R6I<45QEVj~LKFJRY)$OAn%<>O8kJ9vBlp9HgcSH?edXjX@IRW)he z(Sv7)8?OFEO2?JqxL-|bNesQ{%6u^r{I^N=vL0@?i74DoeRi_|A0ODI;;H#>_LCNkaZ?uHwhfL+5L(1 zaQsgNH6YD4JZnOjekK7=9l%9R^(~@ z{{7J$xh|K@k1)`DDOEmOit{^~>_(okdeBrc-gVf^kCcwK_y&p&sDa>;y3RGqMW8_U z*<`pqx?RXEr90iR1B@TKoe4jTR=Ie;yPk$0PCSKll*~L*x^!%NYfH7xu0B1Iqs&(W z$`ml{ZEsh=Bll+bf_Q!OV7&Nl&D2=6zJHouIGuonKCIO;3TrWRw5xbmg!j_G^on$+ zD~==aa$n*&!7327!+ADbRB(zLPeB;m`>EKDE>#60BOmZN?p}(T>pYAyDDh`i2@XAQ zu>X94$E#OX<%(Ni--&k_K;BLfx>0DHNt!B4rl7b6VAMCw_`9{s9kX?-wJ_f+i4UF1 z*;`fSeuSst@^2T?4D=uW^Ep42(P^cL%Yt?5Dj6b0ARk!x^DO~1cTO76Qvi}sdX%!t zn(OZM!0s?$BKMK#6goIp|8KIyi>E6m)PIi7NH)0B`&%FP8A2Z`;xm2x?7!&a5#=`K zuc2kBG2ad`ka+WFUr|>#ERD|V6{&U|;@fqA$6+7CVT$^hc z%Gi}$$-#bu-2{HTq5*Oa6Vun_;h!0N;`23wW78M|#V0QFBGFhobplPl4WO&v`-9)7 z_;sCp%yrh-(PoXuN-i2uuf46lMURaaAKi6!i~E9e!Q_y5+*_h^l3TddXH-ZZpYef@ zA5Y5Aq(C$$OBnQqu+hQI&ZiDD$Zj4gNougUh#Xq?>HG%vIhu zw)j>*tC#z2s855cb?@js2Oe;-OyXFOa7pG3cWox|3HZpptHcX4iSM!(Vwi(eHjwv4`03#`g<42oZEsP{|9H{UsM7&@?7*s z?LjvgR@dQ)q9D1Vm|`m&Mz|w8D{V%31dcn7+_E>x1qElBP~AX^a5UUZTs{`#_(dJOyK>{Cr(-o~?P<;(e;9MCoW3|->_Qr&A z)H|Dm0R;P~h!4Pf&l_SjNsI<#U^9uz`aCuqeWsv^lrlTDmeYZrzIi;g4`3MNk+@5! zz88sQbL&)$lQyHJ?v{;E=-)h1K>RCp$10{Cqi~7*Z&0XuFu2}e=8;~6%(>xPlHtu2 z28$sEFS<9D%U5TO`=Zf)!7SfBmQZ<`X^57cU3QL9y%fY~!g%=01ZnO(dO63%W^AvwtACDtQpj*5Y_wAQ~*5E%EmSR+8bK z_G(6OTvQO75w2<uc>9&R;U!6NoAt59 zu}%54c)NY5ezg@3I!S8!$B`rZ$@v0B z;wf+b*pfJdmxe81%#;o{b_=R8sEju81T)WxXjj29uCAkqhT?3p_$M`%gdFGED$5$9 z3JESZyUN9;FsyMCfRmWZORC*6XcP}FMkbFvQ|e9i1jcNaJLhPFFjS{IAKX=aZGM|s z!Tk0&H8$SwoyRFKv7db6*0~nAlWT$JX`dA(rs@QFnl4DGFng7GNtC!wC|Ee)`aO80 zQNzF9+LCCaXuSgQIIj}^ZPLg19%n|Rf%v(F!9^wk z5uS6J%2^@ha?Lp*>fxO2%za`AM4t{szIt zmaoq8DLP-iM#NLrRE7eq^?iGtp2R7ZLFMWdxY%YgPfx40NPc0!@6ji$_9x)fG5iG7!{}O5G|5|6XRuCa#1fiZR%OH#a%qiMTxR$8qN)C3 zW4l0((RX-ku5nc-1z!j9HE{)hTwV!uk9X;L3jF?)U!g+<2Ha`vBWD&;vQxiRoa#Qjq>$G>*5w zOV5sHJVltd6Z3gYJDGAnS5I1OVeU#VWh+kib1BGOE~&O*QR>EuzxaKR`#}{nKcA|| zFNe~`6M1wU#!w-dQ|^~`*t|};a%|F9(55ONC+p4M;Y2x23zK6YJQf@?1m(IjRCiN# z7g*8rh3-Qjz_<0I5_#slN%r;^{@QdM4AGskmQO}5cSmV=q~g&0QQ?wZyt@EEJU(S- zHC_Z-cEgjx4*q<}99`45(H(mUZ2+gEY-=9!X*F}@NruwyK_na6-*^e7{S`l!JnTh#16iFk2Gin-wz(b!Z>Mxz@9 z5*|cMY`l*j^ST#(J{l9yXCL+Pj`W%C5zD5}gOm>F^L5qE^hqT9bgaXGn0C10w2BOv_NT;3LtV(uczlZi!7@Qwp6Ny45SB#1g0_c7*#z&*0{RAP4;=d$fV@r@0i&C7FtRIw;$@_7CS&o(m& z4lP`^EFE7%Dy>vN3}VH5YsLPHB1A^tMm{ulA$|Tx{7LR=rDGScMX`I( zzZL53aQBSW+P{z9_UG`4<|NLc5Cfws?2bp4)^2SRIWiod(#Jg}n#Uo2smjEs^l-=X z(0GK9kp*szd*njhc4nJXK5lr{coN=Q$lBU4Kcmpy0zR>}kG8KqDQkE(aImvbz3wJZ zhdxI(Jld{0KRrGl-9_BhE|Tcp(n7;YuU*t(to3?&FtX)b#99XWcJI3e(5jMIlOi@aOHX%ox2@px%-bq>Ji;_tYMHx zr$DS;n7i}b)6yksuMkWkm<+Slkc<-AGRitd?k-~*Min*LLu&rnkzW$812k)ZNWKxz zSLfemATLx&9BQ=}{OFodjd#=eNV$KlnB9`dJAYeC_G~P9IkZviF+bmD`y<)h2N%F9 z;0^s2x~bA}xarW{YWPpVEFJCNl~9pnK)@^5Krj!iapRH7Y^NtuyrW-<^7(Z+HT$_; zHe+_6)DHfcY*TOSi9U}}BRv|uYfd(p|Hsce#kC5J-5&9n}m*! z&o@uU{bZk{#gC^x6tTo@EbxR`^dt^9r98VNT4^}it{`Ps??|rls1M;qv|V?^qw0d< zh-N6PGMC>iWBWiEs*rosQc<<>1&PYkg&vmy8J{SqN;&cj&j?1NlgoDC>pWA)-=gK zT))_pZVlm;-I^5X_7v)r;g*Q#S45XA@A>VLc6~^ikQ;8ZU4wMdXzm;&u*jfz-=k|z z$_dpy1YGwCD3rBXQc<;}B3|C1rKZpBk>As@>bsP+Y)J=$U>JVN*-8((Jp@Z;bq#BsoMLkkW4Ld-~f3y;Aie?HhGumF^m>#Is3k z)VX>R`jVh329TEgi~RWTX8>&SW~lCaDe+yZ z3^SIE1f5?@DjPD{^vx)K0YA~M4$6it5Cfwg6iAP$>dQnE^G;dx$HWBcPtW&+TE_yg zt)#>B?&>{awnI6)(USLO_whA9vDX%kvi9-oCbL{HHw7sm8RI3#Z(y?u+u7>*1d|^tzG!77o2s7= zSDjnXNvD7yK;QS>!&mB%8gII$Mi1~OQM6ez1{zBG!kHBR80aUj_6o=(4>s~x3ctF) zii;7WPXdDWJ`2qWK0zPc%YQSV&&4x3)wM!Jc|rZJ&EyfP*Qmn}rp%&AEe1eyLtZ#!d+4c<+%!>~>w+ z2eV@b;}DL5CHJ>^zM^(X?vf6>h2y8U8C>#%zfYXQhV0Ntar-p%+%cv9hqL#AvwGV8 z|7U7O6LAKW+(I-ch2}CeYG^cZhKZCvQRvE_{0}qaO2y3JI8F`XB3v#m*Pn}flMMP_ zQzFT~$ZhHJzs0T&&-)A_jA8L50B=&_n)=bUVH7e*Is+=wW~H(9GUoZ z=d+0Y|J=;}cjbqXbG|H3J4Sx(KXH58ifD1d-oW z4|1|!St8?3*Km)YBcHp1(|Dlxp>W}fiqdeVcn*FE7hXj$0$EP1x+hKQ#Tvb(%gYhbehw|tz3mw}R6PY2B$O82D0CBQ1yjzY zFa_|6(R&GqPYEQw2aS`=PCy@=4*Gg-PU)Lw6hPk%3Fge8#%7)pdkTv>lo*<L_Sh<`%-C>_T4mu+dX z{Ez@|+oLv;1acTjx(k^rt^)7az|EyZ`Ja=xFEtN>c1j|@BpyxS9rAcrhoy`K1uRTu z(|n~-|6Fxy;&S!i)2HrBHf~g~L!gc&@z@+SFe5UT_dCYs^VV2odAP^2@SJa2m&NiH z5G)Pr>o1k^;( zi2%nv^#prvmq`%Iu{Wgg7`4#EHo7Tfhew^o9IqP`?S;;<%!0MYsHztW#xp<@`OSRq zS6^EA+x6#^6(+AAVy_sjnDBiH%4tBUE$}#KIa+^)!hfvKyx}30aH5|!P@s&0SX)TJ zru9BPhr%_re++8#+<|+U6b!e8D<<4!TVC`5P`NLEWfQ%HPwf$Db#9>!4=YVrZLg-y zv;6`qcYC*7$CS*69rg>qe#?FVkFA~V7h3B7vWcxIfHKeHM7{h>#L8`rlval~EiSsaNrvOm8KJ7z`CWUJ0a!mPEU0I~7ScD=OkZP{ zu{j9q_C7*NWI%sDMzSxJ1Rt#}seVAkv3?32Ea0S|Rg7YURw0}EP^!Dz_7{n=@kFF- zrn@4Xt7sPD&%6PpdtN4ZhN?r%>-g#X)5O0_$&CYGp+f_Ex<*Xn=l*>fye|}*1C}T< zMxwlxi&73|QqhVx#ZbmgDd(}Ok=x4RAd+u6{%UYrfd#4XBa zFcLWG2JtGplgj-o4aWTLGw6i9K~{Wz^LP;MmWP?+9JHgnN&>tUv%j925l_wPf3aj* zuLsnszn~%=e9j=)`)}?FFroFCSCYdS#c(ikHy&V^Tuu@WPKHT0Fo|CW7U>jmw*o^` z>se6(xPEF~Mye>G1e;oC`-CP+3?#w4o?K!-BgFik5aLNgp=kTk8t*^pmio+Rl_@iM z;wy>r;SvTLPww7|K!OUNeG_5h`UoxP@GgcEx5;QSlnwT(S-VlqowQ8C9Q)y8XUX3J zyUH2XRKfjfYDQU8e6*JK6~*H__-abk?n@0KgCI$NnjBH>0!Wvx6@kO!DK z7Ke;=LwjxABp*m{H%e>f$G?0>ZG5z zH@g_U-aQPGbOjA*I(3k#$=BS5t6Z~~^P&T-$ZGcyc0yoO5_d&6q#NO?#5Qv|4_QJ$3HpL;tK-<8Jl}1al?;Q(gc5 z;DC)~Sgw!eWG_Hzom^qb63MGdA~*D6h3~DBuG18o<9g32h)@!|Yy|VB=I@c}oR}GO zmcCn)WNx-|4X4-~Zns0l{s@y`9#j7DRQXwy_j9=&`}5RXro=c(;7^}6pGmw-iTC)# zV3CLw3{m1uLA$mDLR#>0-#lRRvX{(m%*(vHWk=$zA#nv(vJfd@6mtajNI1deMWb7xneh zr+Odi#c!qMbfR6Z!jnpkV0f+jTrd2f&8f;AL#}3-&3O`!QQ~l)*hsJgm3R_~@ixHV zKCv`zdmPKNV2PxxRy(#)>|&=e#N16yyd%Q=X6GXfwI3-_5mc7AwVZjScEdHWp1Cyq zg&)CkwB0X93m|C9Ry0DzV9qknoP5EYBLn6nTo|(e=9B?OLcX-_B;!iVFU66Qx|7t7 zzr7sCfEF`i{3RNwWzP&SA0k^VtKn4 z%gab60kOQ@i{)89Atjc#yMGGa<0fai-EaJRl}^;*-;3|m-zNV3iY3J(G%6jTs{v5C zBpEND+cppKSH|_ETBE#iTlXnP5!0I&!YU!X?PYm$Gy-Z<4u$v@SL`g&=+ z=lW1@NBO71lS+P1{wa41x#)8UZNo zWXbjduodYNfGq@{F>Gn%B<}y*g9Id)!uTsq0=lNHW!iZhxE~4bZ<`!U?rmeY`M@+e zxEtfrLJrR8gdE(K>Ld2*0Z65(fgD`7GdZ~N#GT5)dXje{2N#jtOb)*86PhH&-v!Uh z!OoM6k1zhw^YMt=#mA5(wUB?-C2+kJJ#5%a?(GRk>&;)9$-OPbEqW982~E9OK|=gO5HaZS)6(U!_UnWI$t^yES8&{T z^^$qlblzWl&OilH)Dmrv&V6L({$(h8awW3uDOMpK#VQET)7)*SZ4ckTGj50-w0S%A zuM8$WpjNIcH~LAlR47V@l^gw3}*6MdKm@$1^Y_y zxMmf7z^=x@W}5D;b1XI-+vaGx^QfCwx!HAiHD)^_nVRhfQM84Q9fZmcf_2vQ@1zz? zo6&s*^lNPmnBl7$RqdDVvXw^fPNsqZ2J@_GpUjTOtJ=24L{DhB#+ctuqpAq5R&EsK zQfo{4K6$k(C8tqLQrz|N2`PqM?G6pvNZelIrlL5bOMbh~&%ZCmH(y5%g{^ICJ1m%e z!q%-mKK1UOjX``rO8I`dTS6v-%J*wpKPJsaBv^5yd0tsJxGQ$eP$y|`DL$BbZ z=VOwaTUdS))q+jeT;m0^71@T1PhN^Ozs{X7!{*;%h9~aO8Pa?v#O3e8mjs!0~VMIVyxm_3Y$M|Nox*}h+S5VFon8dW%^=qlSFZI2 znUr2@rinu+7`)e++P8@yA(BP?k397QYs0VoQq&Ku4bCT|sK4HQNy!)^KX!j#!#IDh7v+SwB+EC!{F1+O-MVkbJlWre!?m$Gv=b>(Bp-d{}tg@5+bayBTYr zxo?wvxaKY7!>D#Uuy-yZqlJ998o)cshjU0(j~eB}Nj{;eM+GGOcli*1)60honMi?r z_~A^AwqFrM#NC3H2H84gl!=o-baiC z^5HVcha(F?`G1iQyHIc^@}Z&6&g8>qqid!2-oeCP?s!%yXFJU?AE z_WwaXTnn5X<-@t8?kFDycqE$S!ykP@6IKV3@IS~09)$8Cf#s1Z)xEr%tfE*NJKHNp z{Mf5$c~8A>Hlr(xfSq)3Y|(b$HRYG^w{_P`uf3kX?Jl{#YsRH4<83a*_?KxHh7y#Q z;6B(Mzr2NJPHTWdN&T=(-e(FvP(l<&=@X|-Ig&>!Ga9&Od zlh1(F`24_(UO^)&T zxmFeXR(^@Hc4e-dbKzfHeauA@d>9Ih)6oIkp|*I|L(O8%D<>QT<%KK9_Q@#U4{%9* zNaV>>ezJ(h8Ar16)b6b~iJj-(*~R8kWqan*Uya5^|9KsOw7iYYr!f#UWuu?K6!Rv- zdG3B+txVOP@zwsWYEyl+?mldh*^0wdOVkDZZV`Xov{TrL)3<1U6c!%u(J6Oml5Rq6 z9MA&;<{QFbUE*+CU(2E+?YS{LOmE3y$$qg?^QfNQ@tC^mJw<69=9BFvkQtd9j<)9E zcw8O)Gnn`y@L(^OoI+KfQdS2@a$?X?IaSJA)N-h8iVSTDQNWA^hOPm&Q%5J zCEt4D->LDGG8`*9uzLkh2!2vMN>t~iH|vI0<`1;XSPa|zHwZ}NL~r~8xfV<{W7T(MvN?D)mO zw_yaCs;?m-e!WsXS`&!0a`=j`z{6f2Y*J6`K8R$_Eqdd0NaglcTG7+HM;1kvPJAzOj?1}ibrRwz z9~YUDrIFKZw#{?TwzdX4sX;xW%$U?pqrsO!q{Wgmf(8?@rVfNF>pI0Rdqn}WnAnlIU ziCCmHj1{VyNFFCeVI5cP!Ed+EzwM;R{Bu1gfLGs)^7Gu=t*oaVbLr{j25pU7Oz-_E z?ehHD7LUx`$RyVti7R}A?vs4(TbomJtpZFEC~H0`O$Sl^@xx1eV0_P54&~7O9I)Ye z@x!nGw?BI~#AGaRTc+tOt*?&FZv~e7vq6%UTswj9;2MTTkYoAt$uvHOo7GM2M&);W z6E{9=-)Q10&0dts=g9oO<`a7Uzvg%SKk~c(ANjpCm(S@l@AvTQ|9kZ->%#GU{@KVs zfT71(+`!UG@q-e0Oj0-M__m?-t*E>>GX#$6s&4r#U~x&KLx@d+63= zvT((CmV{e#2o>-!pT-{O0Owo0eD;^_n{tK!4I%W6uho#p~>#OL``+&Z8yVye`H7&=# zv42-I^=}4y$h7{w!RLW|NK&Z{ybN=-Dopd zb?5uKpTA7q_kl@W^(<9)9CZ_Oo8+6l*Jb19`6Io5-SO{g*}wGsUOUNe@{d!5tLQo1 zBg-nk+#Wf(dvq7YL%4$&CtSsAUBR`GlTb#HZhr$|ytqTtD>CGea>1bJRe8M=y#jeK zNZxw7ue-_3$@Fe1)eixK;;aG-;0nSLBB9QCU0#r?R@RFwPUeJ z$!3g452Nmu9W9p$&c766tW3YSA%$Czei0eM9D|^?ez6+qZaKe(=~qsC1D&?@DmEf- z%o{qnfWDD>UZ>v(tX6i(H-8^RWdN;6+cuo@@(}QRvnEsnQoWG`n3-C;E^8!E^TpR7i?g4O}a0) z=drx6SM-mOa@ij?FqX9oAn*B{fLF5zjhbE7W8o>()Gh0<+Y8Wkw^-IFj!3k*I^r;` z%JuF+An9gDAE6a^0h@Ywm|d0@a6G4Q3lmOVWzEiU7uCTw-WpK78a0VHFQRv9I+%k$ z{;gQRiQVnZkg>z}=yvZxoR!*@}T+D5GWa`Ig{csE3*+38nMU>~7;vAdTFG2IN z$Rc|R{$R>X6sfsdT#|RDel-nX)1cY_4z>Yo97;UA7KP`yeQ<@NR!QQ|!9FCGeSHT4 zOV4~X#L$}W^k~lcAv2bA?&m@2!XIvE7tVCWZ%w60X^;8Ex`$F70TrlrN~~8m?h{fh zc64inOSpZA1gCbJ>+QW(2KR~08n>S(_RR=Y9YC&V3t5@4qAg^VTe6)LOvjfIzB-dw zGSah^INJTVO*3IZxJd1X?syLf;3g~vMSdgL9|Zv&j{K)IvZ~^UM5WCq@yQG-mS(~_ zKZJX%D4uvc&7VzW!}3MYFN^$Q-VF_Ied~j9#nHyFVxe}ym7+wCg)m@&j%IqSa0sJ_Qtf-p+cgngi*JvJZQyJMA_NaM_QF&j7y-)58!%G4P8496vVNtV^S zE(ffY|Kl436hM?Cr(v*q*OB&Q!0OKzT6@urTzQP&#y>SfiQP8(3Bv}v5Sx)$(Yd4} zRNSBJZ~gH2b6wV=r2F-4c#FGx#7F3Xlxj?k6wO?4WJc5ehnT-Ts*bQ{83^q;oxE`0 zK0HqHttLk_ySnlS{uDjfnEtM%9K;3xhtmZH+=S9schK*z-d>$-Al@g z6`aIx3{o%ig}I=7SAU0vvB_|qf7L9X7bRogn+~kKC?nh|9C~W*4IS&Ur_DbSP%M?p zn)EH#`4?Ng`?Y2rT?~d0{LN9^VCu&8$>?sT1WYAP;7obTdL>}-uW;e)_+BPhvRB?N zim5-B1K!S$p<_{F>ZwXCqO7M2Y`7^9;5qI9oGmI{7JPQ2y{{Eq#Zf=P(Zlzors%P+ zcgbMVx}~XXaDX!m2N2PU&teCGn{Ni(XJksWeEgElU@bXRZnfPI$2*>tY4M?OL zp)C7!<-{rbaRBMRFi}2OyL2E$=$PJkb9F&~cw;ZJSfSym*O*LF0&+Ded#5RIgF;XJ zcKsd-&>2}@f;{UdrL3|pv-GxwQr(IxlU*xTGGn{&;f^G;ELzl`R_n6&=U<^dkXS=! zC|2ZkBt&=Ln}0(+vh(<(#H;vQdGLY!yNOiQQR=1q&j7!^YK>!R6rk%5A2>UIfF z!7%?m#ICx6Sip z+18a)F}!#)xkUtt(;laqB$R7>QBrOZkqU3D&|8H7b)q`L8 zLKu9_H$9jEf*BgI_@5|j1k-}k{ufWH>UvVe99a}o#@0=iQSos+iyYqb)2q_vD>&qz=fRCgPhBna@v_ZEh~7ik%r^|jR(3v*u#Sk#jVm4k>lgW*lpih16tq}D&3#%~=Cb_ddRXyUz`8hq z^+iK6`G#0hhSEp_@FH{F8l0?ckiwE#Kzz`=W9q|^1#Tr3OdqIoV>b9nu%Ah`-R}i% zElX+;qb64LC;)XSPEe&u02!a ziWR(e7G~KI`!{<6)$FA_1M)E>vCz1&?8B@yQ7V&3Z~go1ku5B64Ig-M7Rf#kd?c8` zxj(%=P6nm!L*F>X2Ia$<==ikO;bdBKr|AGqAr)H>_c0-fOp@LM-s@}hwuLPfgE$w) zjqdmMV^A{JpNX^0UWm5^8*bckT*AoOFerL-US!@3!ee9<&I_Hs!hOgAS+TSmf(;QA zF0zVyrG@jx9a}wnY?tt;Wsy1lU~geodq(GLHy<#Ymd$YoAeYo+N|B^f6X^hg%#s6> zM-X*{bt`T5nDwzAn8A8nqDfn-w7&7_Srn_|KF~6N+j4x;_M_&&gx00&md}8K`PXq1 z>%D=n@kh&a?q^3bacK3*v4rK>f zvVNWMJ~N@Rg>SGrk-r=$04ydVJr}!yr{dSc6Onnt&Z}N|^XrLODgJzux!|1`t3;*@ zbBs+qhfwt2&}Uh#gnn^k5qiKJMl^@7!cRh{eWFJQ+EJYmvUMRc&pp=DRt6Q3%QEjd zon1QxuomAcYbYBo*7gkyo#;MGtTog{_G|JTe47+Bnrk0Jzt6NIcW>Sn{b2c3QeL4= z$M5Af5W1_zCm%~EG(|78(%)C9ckO)A6(pSzlseZZ@z7MkQo+OfaVgxnSDtjj z^8V566@2pRm}tQ+Q?=ZpE7ZG6t5tsBz{sT>Q>`mMsWfs#dIXz*9~9Q69{YEDkf)mv zzVIhu`PCq_7vLiYo9k7l^?ySKi**sR4LaO zBkyta5~^B7S&m;q)w@$79IMLvL9~xd$y3lgxykjFHjLq+EYd#DeY|izI~~G1Nm$Ga zRXsx`LLr(_ft`CJsypAZZHyG`cVd{ezQ5P6h1{G)e@I=y+2f2fND-^zpl;JIS+^9^m-r2A^+S82OfD zf@0_dQRXB(kfh^O)kjR)$M;;E7=3=e!ut=_ElH=yGurhoj0+o z>w77Ji@FqZ$&-mG(b(rdb@fzwkcvh~U0yBjdu`76tm4SE@N9}W!zgG?oF(DGcDy@t zEZR!pVxuP_We4WGP0bAV!@oBq6N3!%2WTlVrHs>Xb2QCgXR*!Q9^CSTI5%ya%KK#0 zVJ<&*2?v$t+xSE1-2`mjT9UBy)VrJKGwc|z;E!g?YdF@#)O`R3Q=i`2Tlm89 zL)cK*(9`WcM30Y-=JC_I_^uGx-L=NB`0 z1QR=Nr5EK!0r6Ujt27k`yI;<0YHl&dr$IEC>X&E_m**J=-vw)FP{eBblztg(5j72u-hdDQGRbfpjT;o;vg9YU@lMow4^upjoUa zOnYt)-E2YBYZ7$jIpO4IF+jl>9s+XQwm&7~fJ+%1lt1BX>;IyIWvh{wK*O|0X!pDB%o?D6SXhu!az zy;P?~tVTA^iqE!?%5GHwmJHH0v%UrmdGFr*H1-~C`r4;vRd)t0wLThmt|8j0==rEI zNieT)wXiw$&M8ci2)-ff%8y6G_4BF2xpW5e_ClAq$j>L~wl4!m0|gMK6;a5!qwlxt&*wCmk|YtpU!){MzB zCy7aTZ{p{vNw?-Z8`)6WbeX~oioZ+iEyfcsZZwPdYg{|C^+@-p59h3=Z!d7W7 zay{iu^x1pMa}iQJ_S4~#tvd3JVrnbU%PL4GiesjCUu_P zNyxk2!k2~rCK$`@Er51_UfvUTW|{Ug-1a{RIJb%^g$8rJUxKx$r}RvB%QrTErv1qL zDW{Ii?sr0Sv!>ZYrX~cAMlRIeZu#a>JY_HLPtHzEQ(sohTF?6rz@hHUTPVXgT?{;T zf`^knPHUNziRn%I`Ih=a+Io*Z$}IKQ-sG_pnocC6ZKX2i{!+!esBztIGM;wYs!Vovd*L@%1g!X^W3-nnJscCVV$M4#Aj0gpDy5jPp zv2xXWO5Azfuq{|I7YMsrw2Iqg3i=FN3!zV-e-tWENJyZB)gvnv+;ai za7|0IQH^!DkQUtLUIOlYCrlx&B&=De>R%K#JS81IVghT*uO?A6OG2OOFD0VT$Zb=Q zQuXX$B*Pu$Q5vBlFn>AC`+FWhsqPFnyW+2mb8c^dbFhkJ#J}br*VCt7rBt&l;(Kxc zNFMdI@s!^DNG&X1GL6-I(-|dg+r*?r$Z@;s^~`OYlr>mdT;g;i)qH*nuP*2`HWev9 zgz{Q2H;3?B`@8%-G|9;*6rit34Q4k_1|;3zJfK?wKp)cI6ri>NpqHuQ&im53Idwf9 z`o!QB#rFr^MRb%&lFr;AIut()+BET-JbiT3b5{6HlcHFYOy+*^4Ko?f3cKcXFD2K=YF+nC6DfDVYfybKWn4w@nq- zzHty5?1(#cU|8o$vh~+b09ojGd)Y!mncY_fMs+kp{)E6EXqsyc82}9dLRB5neK2*R z*30(DFZ6l~(1fzb;#copJC@=qnMFyhJEp6{5WttP2d)rq)nsD3K{FCtyaGn@h6e^ipx%sM4wXUrZ zCx-_R)Z_Ijip8%%t{5L~{lfY?KS6)*rwqM4_D6c#x>;{`7rkGRXc4`Aj4E3n-J8CC zmFi2lBxd^br+oTVN}nnuWXml2;s-!K2Z@^qd8ZINs}c0aHW!h9%w>0h2Xd%@Oz_A( zA_$l62x0F=2L;-m&; zCVz4KM&y7W-?a78POX_Q5PLh|nTC;%-4~U9{>{&14`$)I%FBtg-hA$@*~{kM@XFtq zVXc^9mA^5;grgp-TI2R95M%hs`wiK~Pt2&vgIZ;vDKe+BpAZ+VaaYrfbfjh*6&vTh zSK2tg6{q*Q#K~Zs-azj=LlwlRCRA!&Sj1G(#w76!?{TjD-0D@S-dDcfKC1T(@Tg}~ zB-p6bP%p7C;QObjH&fTVP`|Y&=x`zsX!P^-RQ|iK97Gl|;W(7a@qEc{;~$$xMM+#u z6Nd=@RF@y+!2)|RyDFQqbls-OE_jIWLbO>hp+emRsa>L1MV))(`Tt{*RCE@9ob6tH zW&e!7mTq7PLgB&DhjR@F+In7nW1>$Ow8FH}hTs>f9G@*Qh-RLu>rD)uv;X2a-f z3j|?#P_dU(Zpkd)XE@vOK-$J%H*I_(P_;UrbQnNOZWDj{yBn{N&TH4Yni$)C+=d$P z)cJH>{yJA=_LK&WPGlZQZco@#8fV0RqKb{1l%qB7q_Y{DXm1;XjpZFMN_27;!K{*c zcT=?3Jgy1e33d0h-1+Q!SXsv?hyMlS$FtDx7L0odb7uKS@cf{i*N*>jCNU^DM`|*S ziOxr@@cg|RdIcNmYxTx`U+CC^za1=34-&PkxBB}Of8EcYTK#dV-+?&>wU1Q&t-z(e zybx03^c?l$S4w!#^p#FlB^~xrX-k4i3w@<@zPN!(iAasylAG%ziowY)=p7x{hozYG z(}uKbS!6M>(KE|Cy0)85b+k8?nA^EhATr$E@CoGfFDe=|ApM2)Y1BlWGQZT*>LRJJNkTUMskGB@uNqt}by(e;xc z4qZ=vPuG_~64QG|ljsc?V>R1n$NNLE|Jr~0-rMA>b-aVi-NZnr`WT%5y3Qcblvv{u zI9N-6sf;%2YuyY;V;AFIY3u2=>=c~)sh3_3f0lYT(~4Gn?7sWhdbjl3rrsT>-mRn8 zEqeEeremXDK-2o*4YWJ%uk3M7@9(6iL{snm%AUh^Yp^UY!}R1-fAeJ0<1gYp{iolu zVCz5qmL8}7Y{}`F#Uz;2makx;m`noNwD<9AD<$5bkElLx_ZOWsfkFM@0x-Aw#)8j!z`IU4x`-PUxT$lY1Z`)fetVXlI zCa&;uJ=n*6w?g~4@~h0`ophi0&-0n(V;;X3e9@mRDOCNGrd8!F+S+}n9@(*?1FZ`HF35inOHx-x|^FAzMYX0ed%|$-#O+FSp*O_ku8WKdYp`5K#gWGZn zN3R?Oj6g~Uj9dF5kYzRaXNDgRKL=M?pdt5gkf<@DQ0>S3byZ4CJ>s1n`Xa!`@Fe&R zRt>NBe@MtANHK!LXrb30>1N&0Cv0>Fvu@lq{OVNH?#JpWO`IL17) zi-Skv3*b5)59t}5YFRCe4x_}Z;nYRllJ|3KvD zfgFDjeABi=oZox@-9eG1!DG`zYQq)F_CgT)OvdE18~qk&&ITLA@-oxZ?b?-b(*n0f z#t9~??C4C1L6IMMMVjMnw-nWf1cbZ0U$wCsq#cT4t*UW-J&NT*F%J}NzuvGN3rsO@ z6~dvxp^ovw`sJ)dZ=`jA{hZmS3!p-<@38N)XxP4s&l#k6BLlfFmu0XZV%bZOd;aEwlyl|167eaS_ zEe=sUT2(uqYGu(=`wUXBJ86_9(E+`6v^nW#6{}tssyf94)GZd6r(Id>1~f(96uX$V z%Qy?vd8h(Da{$DndV8sZA?l0w*u0ti22ECcLeD+;o()xCoV1}Dz)Vg&S;NUhC->|{dMnJ{=)x47oR&9C zWar!ww}r?L+ADOZ*ycm0TxbBp(W7){$7@Ez8C%M5$X>tDkpJtvI8)J&uiLuB@Y?V> zcm*o_tJ~;kYmbtw4k=0U3L?kA$9JK+pC|53Uw@kF=h9}p8+j>jop;}@Z7(!p1?R*u zMfc}-{GDyQ?bI0GTh24XbtrNS1z@V+t)dfLx8=-z-7r0@#(w0wVnNc=G~9IS#&1`% z1(lc0zK&2h5XmEr1Cc+I+62GRaVX_4KzpOq-f3*Do7$U@xNl}}n$fziD22U*8Sb0OU$-O^AKAQNk1~-|{AFT?f5R5i=rC(ADKu&) zK5oud&_@Xzsp&oK1satpe(EEd=jeM{;8X8{SSQUtM53w>6m|o+0f1Fu%4g7B&X?lj z(-{k9d?5WfB+qc$5DzTNZ>L6NM}1s7=1-)LE6BF)tV3Xy5>&V>xBf8Bw-HRagc;7u zUu=QFuR!mUjJSe5@&flRtM_^5+T6X3(Ps(eq`JI=Yme|TzxM`L$O)7yhj*BoS;m%H z$!-g9o;pH?eZ_GvKS~SnEqueRm7BBuyV#YRcOjs(x^i8q2}5^zV~vWXHR|@TVUqFl z`?Q#K6RDKpR_Z)OGH9V2*%#Xhu0XsO1}MT6aWSI7{lUQ5Q_BAm0$Z3blmUVA^Ju*M zZMip%c0c1=mw3O%MVsK|2JqInPsrpo$?Ber3`zzL6!1pS{)J8L7peWkQnN?RYf2AW zy4@JAah=bnGg`}a@QD+|PnU)Xsjq8Jxy7N5Xbf5$yNZ;0P&zjj=KT^DrN}&+cr~;x z)uVAgEV1GC;bJs%FoO*BusipS`OK7#X`EFTKdYos-j_x`Mc(Jj#Lfd)XAX?4)q19R zIa-Xt0)(Df#^U(Fp9HSn@Nv_+vJ7*8DrXP}MEV2w+E_tdtO-`N`{i8!ZU zx<+%FC;FKTw%(v6i>(a$aw<@ZecTyGc!QUWns(KcF1r!jpwki^?@X%fIDO%Frkm#H z>|-@QOe1dUujE6J-<2aH^5s7vLCw+;s%F@zTkoFEfA)O`-2jiR-Lh=vFc=zDt=D) z?$me6KF-N8hv)AB{6l6^_sZ?9%g?Obo>i{eaY7P?HW^g3zlDNboKgy%twRISFwPJnUFS=36F1s<)bb0_`M^k&H|P_Xu1%9*&X zcZco4PKv|ikxaC!aoQP(7O&g#8q|^IoJc{JMJc`Ps+E^AJaXjMgexeged;tg``ind zSrY7*lvduFn^8WBKN%T%e{D!ox7YCZwq`MzCf&bbVlL8@sAoGl559tXRy0L3fgI3! zdpeEKgrq>S;&1uJPp1M~;sPXXINcRL>17n21}4D<@LUq?l^jx78C)sfaXpA=a{0|7 zV8#kQGR?crZG(HgGg0|J;8E#XZ*+szn1xn8b#+h9yEe34HMFG~TE$E5+BCFi1RB?- zA=Ul990*|d`*QWeU87d1l^WW4HRfb!o0=gs+iW~HX9VN9z}@(>#?uzjyVJ+=f_98j zK)2EePJ)u4`5Q}9Enk6Db!`VUQL+5k(#n2$8RflQYj(;6l_|f}tVj)R@8fKIx(K~y zMppUn& zbGho}#cy|o{@jIFh(&8-Rvuza=N$avieZ>#fM5N~PvqZ;p{lX^F3HQx303{V8mga^ z=Va4sBgEZ`6#F;#S`sTyM`?CiM2yx|C>+SP;_vjj#a98`0joXL ze*3{U_Z`Usb3S0io(x0PzHG|!7uRYg3&QdX^}2Cr@^Wkn@z;z3Hvi|)$wNJwEUB@A z^||ykJLu^HDtwm}t^!VqUeix7KT~VwA&TJA`0ZywPsfim)L5$Btld2`odN(3c39Q& z&m%_6_rOW%Kf(RXXOOnkp!vmlRvqcVjg#>K02%ls>QR;*Z+pLfp*Ma?+VY!#P(frtUUOIL1(kJ*SpN1 z&OJd3*Qo_NdT}>mHPbA)j;z!yxaV6xB#(UOhvY2sbb2N}osO_7DRiO9yEEoAapNS< zztoYbr|oJy^?6sDe@u=u0vD|a zMxciKc;gQJtl7YZXS)}g@&!s?uOAeev`LS z0r8*5pNzNn^&j2AD5J-M##flq1gudT2`)YnGlCMf1&7<(MoJ(_KT7soS zja$Rk~d^kf=Nv_Jf>dH{wjJ^3xE!U}Y(y4FdWkePxCI|EyK7$Ll8L6Xp;#kFhg{>#VdAw4A$8O1~o*f(0I#l|@ob9b5N4bB(I5RcbBLlMVJ|mtCv9nB` zC$&v0Z5Z=Ez*&+LAEsA>&0iqGbn>&zqcD|jA47uK*gSFRl#J-#e@X-;)=LP6q& zfKL4m=pTA~VZU8N56tObwX}Sfe!CZk1}+SbdIwzZ%4%1+WiV%qIKdXykMGBrWp(K{ zp<)TyGt@$3nTjvi{z&(G4JKoEa7Hnjy{hFeFRY)y11!9URUwshaC4QksRu#*3acOb ztM=7{hrJN1R3TgZBI-P@_XtCs{g|rP)N~FXn{7 z2Z3NQHxc8WB=SDkRP9eW=}EYe697bcXiO|u#wU!`KGwTUKYAg3DrXn!g9B;F_8eY7 z%;c!E;$!Q=np$PJ@4n?-PU&U+o(|++Q0vAcytE_5)fs*e#gKw#Hqbuqkl1 zZr}3)X!#|f>3id!bW+52fuN+;IdH9QZGAn0GPj;le0kjq&p-eCoJFmR__OOxb5q*W zX)9H2jT`ZWpiX!Q#4UbTOMg_~$W8C#hxV}WQP=4?JXo+BAY2#f%S1LsUC&9IS+?Ej zkFda>q7T(|y^>%(?8od0R?d)q0Y=f&jaK+hF2gVnO?po7qZRN)y?cv0iefMAj})<< z@Q6SOUU8NBoO16uWFy-rH2JXM1h574D#L zbm9|gjN%=&4Po7&hhKY@DY-1stufxm{()xIYo+zKe4l_XY{)zLA=mmR9M?e#!suw7 ztQAC`8_z`e>U|yASDRdz*_v``jBr2hy4jKj75h?1(eJ#o6*@QgbA}traP6Aefc%M1F$C(W=o^?2_?{< zyCnWi;x{Y2q?kjZMF#ysf(V^2CqPqRF-K>?k+I#|fj%>FLxvDslR{7znYz0ABRrO{ z)WNg_vV+CLD@bmR?AaX}kv-LrUE`5`oRWqt!z0U;J3NKx>%n+}$WZ~ldy*$n+eI{g zn!)jrmdf|n86&~-=s>VZho}vP_3>b>DuCbQo}>y&yNR^!jD1=S6NQhL;V%+9cv)}c zbT$={Z%8isc0={O$yCRA@3Am#L9XE{cW8Q92NQc+`Dowt*YUP(|Z*NqZ!UB^r7jpU&nJbCfgDY^^%e=rRsDxt}}Uzr~L zxFky_mh9o@Z(1So#5C&fupuR;KEdvFr~}kF^V98N8V#sZosAH2?A*`^I?~ z!1kuV#(61w*}Sas8#d0vMD}M(&J9&5^z6oYT|-q5*^mC%-z;llsOlJ*(dsCJyBR+K zR!$2W>i{;DA0`bauE`2j+i^6;a3*hqdxgCdL*`vTN2m6I4K8O>W=5^lbm%cBDT#yx zLo;#Lek`(%@2kCiPOVI20&_DHBH+6|A8DdAxQ_M443qmp;^zEn@;=@49>@*RL;#D; z)j&o>NK(BHey`OzESQv!^02@E$dH(xGQ53ozG3K=`}D^}!s@rF=|4{NgnDrw8!Q58z)c_+3?CPd{2~rx>wZKVM){ zmhw9JycHF`?XE$dqq6$e|0r~Okx_?PAO6D>m#QUX+FO+nWmttL%9`aK>6e3w`=nQV zB&c|wDl$PdbWeQXTl}Z5IC-XQQ8I?rsNL>XU4~lez6iD1?%?NJXQWJ}Pkta%X@k2i zXthwS#twdp7>BkFeQ>{ZRi@JMzk0+vQbb(AVK3+RXL}VaQ;D&H_5m(Gp$SPd`yO0` z#X(y$nNHpmx(|3annD{~-6@-saqgKa-VI6_uC{ix-QXtuQJl?IBcuE{{#HF+c;?v{A#`GD&+v7QwCQbu@f1TMe_|x=|E5J=K?7G11OyupDdFyLg5)H*TufaN?j=FkB%-V*_Qo3|0S06@K6!>xvOxAxp=zi_waT zX%A#YyluXP$udI4XQ_f5kYowEe)lP0>vjV<75wm33T#HAHJ3Mm*`wKOPwvja-cobz zQg5j_5lapJOKFyx2M}QXp{2n5*WTNiSRPNI((v@#0~6^e{{PRK-R7;=vD+L%g4u0O z8^=2Q>vKEUZT|k^hIANdD4TuBdlwm8`~C}tr$A21co6J(f>(DsxkbxOK3y?YOzz#7 z%U~coX6`3WLe>@hiCigrD>r(UXsr@;b7mo<@#;Zfr_PA(z@2Qbfg z(c*>ruuX*qc>Eo$4LjTZT7wGxg64oom zPcF8GrzfsNPxI8hh9o~k?sowH~$+Eff)<< zYup!4BOI2`j52ho>p>CZg^m4scfpG$@Z2Yh0n5mw#6rfmN3x-^ss`Ro|I{YG!!fn)z zEA&&kiCzA^bvQA|f4R{XB@5<8xdL_y*Jb62Lhk4-c!dPQd8Bc&f*k3dXQLZ~XGM4S zh=#xyAyoCC5!6oI>s{Wl_iV0{rqHb)kd>)g}VY3Tf%oJ}nrW##lED^I88 z3h}%upY9*N8;{vwf5Rumjl%g({!b9H&*@kPnKEO5;kQxt=%E|4%sh42jHh3;_WK0a z`bjyn9{vW8(#*`XY1pCW)u|$`%lR98&ch+)hJA;9i+El3Ab#i1<}@6^_#77{!9o#) z8Dz6hKZ7d+c9=NE5HF|PQ@F_k|6IY>dntC1-r?||iDzh?X%l#A3b-2r)cE0z^+);o z`>Os%kH`G2S^~hHd}`GQqOu=AM+lJ3^KhTX$zwN2a(1Z27W8Ga+;zg z#+{AOLHF(@oO4B60b!Zbvt|xd$ zTU8b?qWi@P=DwI|g%A6KcMPhKN)Xp>j}eyNf<_%X1S1rxl3z!1nXLi~-HK5*{1|D{ zhd&svTOKp|Y~nwBY}+#|gV>d6*N38Fv!EgK-nyP`~5_qdwgEd?%I-8Pcp>*Vni6){C?= zB8Bufyb|MzJ<_+OA-$d%5WkMPF3VS|R<&^+y??4wJ426V?*DOXa^_{^7*3#gCPsX3 z?0Zg7dKw0%g(2F4%P)adzwIEi>dSn@oR?1+m!_~Y*4oX6oBwJtYz`}}T+lYLTd@A~ zky#v?d25C}3g9aG>BXIjc(I*UdUHRgW7pd1=Z^Idh7O8dlI4RTr@_HTAT+aIo`-XI z00-p*zhYMs`4xus=1#9!N)p94pMbIrNE(SEN32qs^7e|Os>#%{;Gz!3EIL(ubI z3_)ZnvHk7(ITwW>{2T0MXHKL*iaWX^ZxWBXVqbsD^VC1u*H7S8=1Q$Tr+c4SEgUq4zCj%hmp)3I-`JHJ_eacI$HQB} zcmq%8M8P>SOf*D$cj61ne9FaUd=I|lUWnMCGmCZPdpV@niRt2_joqpkGFa=Dhl~rp zc#ct=??>@qy+c#^Fd|3Zbeg|5c&;~db9lavuA9z-w7zd5l8@{JQsMmL#ogtppX=&7 zHRzlxRP{K59SdbUhFxlk?uZ?}bY_iC8IUG;4<4H0PgwuQSG3c{-;&N(&*o5}U8rOp z_S1F@l~n$75pq1QbFf~CS>uNDrEM+&{#2=*RjQc5J>gD?rMzcE3!Id+D_j(Ml!z=z zthM>;4xD?}nRy4O(TrL(k9wzdG*@osLRbC<3<4s-y+wdcHS=wI8pTO!Em?jq`ZXyN z$K@T6QLY9$6}}g$x|2+-FYO9H4prSR7|}3FBo3(C%cA}9Hxf-wWiOCgDOFzARqijY zJOQKY7(=CQQ1l4*oeWc`8;R68pZb=;=2qLf?%))T9-U{nE928%IHoTo^xbE1*;BPX zVgKQ-*&5dmEaT;tIFZ&ebUAvBJ4C4$kjnm)c=?yLmW>0)=O&qy+7}7EcBRqd-8XyN zF1w9CmR_!;*&#-=ZWn<~xYRx>Ry;afy%;yVMe#4qU{}mK>A#opEk5D4PhjZx=PtP^ zC60ojsz1UjddYq-f*x523%1pHiQ`i6QI(jpS#AK0M~_O?1WN>7gDawvHbIcil+1VC&JbfY_^q|8 zCfYximp{-WJD8085cqL6xX<@7>w!)G+Q&p3j{C6pxIO1{+iR~BUAV0|h7|z(Y+;BM zv;sNz8#Z(XHn;KZ=Hd$&S@Z+#A3lNqSv%ur8hdzofMVWTGGm``l-KmC7nko5j<(g` zT_9`nD~ng{PM%^iqvmO3hD;&o7C*iKMyEdz$PAs9dzrBf@nXECaMiS%2LBx3FBkkF z=xodNo?>0{YZ+49n)?lYuHfs82Ke_1ego~AOlpGvXiNBT0`HvaB~E4>9RdD?-U`O+ z``7Y*1V)?2@}2&t@=0l<+20O05s@n~FbIC46B zz>~X%>rU5TM#nIUf!R%!lp%1>FYfj5Zm!a_XT$b%M9X0+p7g`KDm-Lk5X|s zs!7WKDeX;FSX1%HiJ#Nhp5B$P_RiX|z3Y8@ei;<#AI)_?Xz$FRyE0{HO4dyVGdC!yV7PxH3_fOeNbQ&z?xe3EFcfr{roh}P`=YtlR6&oh6~zBk9+ zBfMZs@7zf6`i<@%ySE_R3|4X@92dx4lw9?0lq%9nNn~@Hl;-@@{CR%2y)HYpSJ<+> zVd?F44%+)!fB)axdr{Sz_iu5#7X90djl8jcFOaMLRqnLCcU#^U_1|gnwPV?ZXYn3Q zYJM}6@iUu$pWEU)(&GEqq0P(xBmFy|Z(y9#xil7CS$s<)UofEE-4c`<34F{BQWQ$K z#kPnfV&gJ3+Ipbye( zw&U)MmS~9l5k!b-db~dH&Nzxspm0I+X)0WLxAn%o1Q434c!0FTlQt~wVbT(B1na7> z>m)m2ZfWJ8a~NTe4OLyh=7SoMX?`#+qlR^(RPnH-UKCNFkvLFq`g1k%uOa4X!K?TA zrtiaZEw1xxzb-b{zSz|J^~#!#2O;%XKjkm62^0J!01V8gjZPE!>%5HVv#Ti+}GOb5UovltcAei&40}JDQha{TW3vK^m zM{^Y1-x}0DhvG1eZC`%vL5&oBY(^X2N|Q-?Ln*Zjr*vT>(8+CP1H2{KM|Q(G6^-mcgM2;Ate`W&a8$U+n%RDma2 zkr*rZ)%2=5^quX@q7p)7N#e}dLstosp-DY?QU{59|6ek-<(3B}O8&Zmk!>p5J#mq@ z7f!r2qkpJssfp7D-h}(;OP#Oy^N((L47nT3qUr)2SiI;(PFM{aE9CAvu;oVLu$?xnFj-g5=1S!VWg}sQKDd_h3t?hz7Z(k#%m^9i|4C z{slEy!LHbP{G&5U!^k^L4NgBq+C7SOZz@i7srjQjAoQ~5C#X0XbTPO#HWvD`vgA%Y zzJI9tR1o*$rjWaz|EO^*!KYGm9z~wJO!ANgVBsLD6GPBkKlnHEc&c?Inib^|dtaN71srd-6Sq zw@MOyYP{3PF=XU}4Hw>~a#=&@sN7`flyaiju zu6lPg4XW4u=uR3+HM9O8>{mb14EySHQ`5;~(#B)r?gtYbQ;7RTzL(2ZK<~~7Z@21p zL-}PDoFe)X6jj)+1^^q-duYqH?kIEjGZ}59G@834SsGx`POeOg1@be;CYWQB1T?4-N^6gxw4!Ad$l~ml3~}HM8mbaFAXFTV+^#QgfWQ8I{g; z^QdpQ57Zy_sF&{p>ODQ`Ar31oB59y6R&H)fEHuiQ37_USAFIhx@0L{imEkD{)3Zi| z;Z0`^<;*}#WW*a-vjTYT209+ZC#iae=~)^*pJ~`eAU8kJICZLZQMP3t+-0{J*~7y9 z8jt&oj^KVReX{W9u@vE57i428ZuT_f%}hDo-Deo>|tEr0)}#CAZ9b- z#4Cp^zP-xLZOX5#+`N0JdIRqDum{YV^>UTT8vp}F%?yGb)7vv7YF!^5I$&aRwzOt>UDCLqMAXI z>aRr{&BMmE^sNo_sg1{O^JK7FZ}ce|)*k)}!75B^&5hKV^IJ@p_$d&=I<04qhv`A& z5#h>0(9H_g9c&F~%;;jSmtoAW_-V{v_tgX2B;0|fp^CQAGz2A=8UMS)4(&c4XDNfa6D z=h9Wepj!%qyBjfB#`J17m;UvDVes186b9SJfkC$v240xff)!_sQ`Nxv!l4H^G-CLu z&%IT-NBQR0?M3rXgBGN2jqx)@>N99QzL3hL>@`z89O3H^Qhmi^MFPL1`WO59*QAg~ z0`Dn_hmEf^x)0JIr#N{NbmT_S6M9V}wtM(G{V5oF3umD^GjaKJX4rZ0tJBe4M;e`3 z6{ER#eRIdFxnDq|1-gGjNX2`nSANA;eo~d?N){gq3*d;**qIZ4f+ggmH$e7I&;_kc8m3Q`#q#y=KFh^0A_oD=`Jn*VsgYQ1h8pIpXsarRn_H589&^l ze$((h<_kMHl5XNo&Cl{(Dc8xB5*FSi!9k54w5Hn?Q>?~`uJpN#}tqd?KQ22f5F zlvcjEbnW_ORUVQq=ic^}A6MlGp1t=_wsk zuLL8v@n)mJrn{+qwXc1$YHtUs9d3xTd^cV&d6GTtF0J8gXyYeJ#zvNi$6oeeo)DPL z9!!S7ye=?}PNFsrn!oX%q~gS~M>oQ{kG)5lHiw>T_Kr1iHR0_+(G!~Q=g-z0FPQMe zy_}KYZ}%Q9qIS{rEMkkjsvb34*- zO5bQ^pLkK76TCB2)$H~UPR#&X#IPHL9#$D7#= z&CI?vwWwKs^ZqZT;Ew(OUHtwkxGnp?6Z~#!EQkGXC-|L{hTqnH&G57Sot##`^G@m? znpXeK7WHG=^o+OSlmZeySIr& zPgW1R$i2+Up6{>!X6UPAFGo`#RD8zy3lsP`%6ZRn;vx5}Fi|$`4rEZVmqBM= zhzvUF#z2%^Nun2JUm~tJr(KvPafr8;EI-9h8ao-@SY9COcJvrM(0BS*TTv^^cM}is zSg-AWE!-hC7EAj7IC~TLD2pWSKY;+@a-xEwg5nw#R#Z@;AVdfRnMk52c%mzc;(anv zkSlJIm2n)vdzJOR?;8PEm3S5Bs?3+I3C*md5K~44AZ& zJ~mI$hleP+ZvV^fjrd^^>t`1fe;3Xy9t^ck*``~T;^Y1f$W4y?|Mqh`?J>28sYm;nSOetv{p z&GC5tuWoCMV@cWI6kjZ(`*u}%b|TVeQSED$Jw)4fLMoboeOt@nqP_n)n941zp77NJ z;hFyV|HJv~t%qmG3)Yje%-<>hVf;;WQDznLX`(rYDUfq_d1YdnV@(W}KuV)mXho~u zppD)X8Cd@-!Voix@mdc;7+Z?E(F0; z`xw4cZ?Sj59$S%&wdNjZgL8Mud0sasA~jzEmK_i@;cOmf1}-&r-UA0ny=u(0mJ1i_ zL~L^Y0`DqZv|<=jdj|E(<8W)dUKr=Q7uXb*_Wvw0i|hUrm-(^nhp~&{U;0iM<#dn> z^!^|p2HZ(@x1JJ)Edx-_U1Qt^84$87TTP%GiryGIYnlE2yVe>)0pv)-M% z-Ji+-H4@9s*1G{Z9c!{5*?RRtx?Ejwelz`w_x93Wd1-b17q-Tbva$d_kTI6 zU{}U{YG7SHUI62D?yc4Q)Ue7+2_E1?W#(Rd!j0%^JC<@G<(ZK0yczWIwNyw<&0jcx zWH)F+A+Crwb%q937|X2a|2 zwsO1VSH>-xeR0Ls6*s~I?j*pv4G-Wqh5&e!2P~9R8|oYY^M;wPwmQk zd^L6ceegE*S?yivF6$cSwGgdc+qWn`GWhXos4rP1l2 z36v~4i*HT9ijT#gtqxapn@E)lUE2$601unS0Ls>1-wCiC-ZM>uI9&dSljh-`#!AS6c%{8Fu_NoUp#tssZ>$kJH&@TU!qt}XI7&M z)o0*mR3Ec6yewC;R#*GF$Ydh25_AA|KVk`E4ghmEZsk;iG#(6OcQz1-V~ zkS4|$t)BYDuBpGS{dsj>Z(tp|X_k?Vk19)M!h_$l^YpYb+ zuRY-f-^6g@z~l_<9ouDKUaWI7)M`{5-QmEOkL9ncerZeN%O~?C@q9TywLOJ>Aua$ol7vpV&$eNrihb?hIQKZRbPamksXvR$@}lC5h+xce}u7r><`E zRf=^s3O(3KOWdb%rMWos@JAo|u-IMM8WjlUseT1vfHLFdOjDW0QQdtW2Xo5K7#+q> z_XRBeRMTYvY5ACHmrf@|HYXhl+rk#%qvW?-XoZ1=E$ zb#V88slnT@u)s$B6<2E~90NGm=^)H>ejI zi(ZVhLd48Xx94`_(QqV7OjcN?&MEJ*_wZg7wYSr9dH=m)@WfhouT)Q_*<@l18HGi~ zEM%&{I%l4uLZrIHdd)PW<8#089j_JR)GyNdxav&9`QMj=b9j((VjFP&n7-KhI2%A7 z=^2OyqF!@q%l(eT0M@GIAB2Rw40uBOYhJXqD^zLSnj@;y#@a18?+17&))Lz+YonH* z?tfyx{>x$oe)`PbUg07t3*(MetBX~uT%+xdtPvsMA$k>v*(MC-7Z;lIuE@=)e>25j z+51DguV*Sgs{P_3Ij#7BE_*Xdetksobtio8_g6EuX-uiY$C4<86EL!i3id5aOh=1Y?OwIa%6Cf=hgtv}&G=3c z^))uWta>_5l5Mpa4CJrj28^?Dsi|aKP8B-I;s=sAyA0KMB`Wf5NK8JzxP^Ok7gNNo zJzKhPgWJ%zK2)`v-4Spjh*kYy-V?xEV+GTXg)x>2f7{p}5kx?5KK6G7bFVkiNv zWN%Ap6c;hUn`)chW*g=QV72;h^xK{9;k`Qnc)HbS@a`47OFg_y+V2j$`X@5TCwqF^ zLo)0kJnd23g@Aq`J-cAY(|qz14a0qhE7>U;?bcE9>a&^A!Bi!sXHho2viC1D8N6-w zFCT5qu#d6+|6)443`wU^+;?9T<;D{Jr;qNk&Hlq3nl6X`XSTgou-wkd5BD#Vv-dw1 zT6EEPorZW+aY}X%Qr`OdD?+1J#%I#)*j8D<|#eXTq1 zQ1-2C&Xl8KgL}j$*AC7@JARqGEdQr+@p7_g?qzbwZ*Ws7jLV<6 zxwP$Pv6IMpqNRs(MhNFHKoBc2QXADr{CB+1`d?7kA%+2XU?C%ZC0oey#3e}PrBcG$ zl~f&`6RFjmHGfIA{#wo3Qg(g$Vbw}o1iZ803b6b&hfsLus~0Kn)8#Ft7#Ym6{@*Er zp!-sCGclpxu*lrC5`x=%yIo>pf$Q;<`7OHM@Btc1e)Xo@D|RMqH$i8sKZmSWL)IGT z3={kNqzknJkoa1SUd0H+VMuS8?(^}m8kF7D)@QV`YxuyTm)|l{^B$i(XvEiaQC3gT z*Ng!owis&lX$;!)V|K~Qpq>-l#M+)3uj>g^BwBBOx{X)utrT$gonq{L;l;3`h5Jqx zKe`lFeC$+plk?a|DP_yjZ?jT1myw7*wMK|x{(hyW1<^0w)3Un3E&W=eX05C5=btjz zaeqnbHEuEaxPcV@JIn$-}5ito$#c|RUlSNnmlcQGo#I_piX`w)Jwoao*(1~d;gm$@$ zp&uh3sr_0MR^ZT2_y~vm#PISR)^?`XYMBvwunf?(9_pH#IJ{*}dYc=mJ&F+#1$xZj z(&+`IEpaT)E3`qa>|e7eR^+;jv9b94LV6nd&+f5=o_2=kBgDJ1aV)jvJLFQ?U}cIX)Y2QGsTEI#A{i#k3$hL z>;1MJ+<>*Xr+Jdrxx4%8WXpD_M}$ece-TIp(`B5b+f$s7EIQ9lBkJ54uSxUu#?fy? zmaD$hs^E7X)=imI8{Nq({cht&(5@S1M{ecuv+{$1VuIgKGSV!+0Mf`A1188@3~5@4 zWUy(<8L9I`hw?O$5}r=?BXEO}biuvoA=C)MgC4??ML<}3vJqFd&(!LFi7M&+a!;9E zJy9X0=%I)fq%-Nhv9I;e>MC|6#;~hM3MTMtwj1Hw>!kL66mSLU7^xPI@hxWR2V3Fg zV6LEW{daq6F08jI8op%b73Xtklq}v+l{@*$S7xBQSd}MHIYU$je}Ve0?nI;7Z0aw( zml^YP`koS z?+~w9A;6F7)95bZGI`499mLs)>0!%c@y-_zrMBiNLua(2_8ADK^dB8bd-(?6JckCO*1zJvQrGS08_k?0AHw_f zaX+4}{y0PQM%C-%>;3p|>iq;f+vlpL7Xo)_&MXQ>W%l1a>g$hI{XxF|Gt>{Zqm=Zk zWUKi88Txs)KE0Yk+vwBrpZ-jr{v&^uF**%v(r?Wkd^KRb-dz_Y3bXP}pFUgpp+3Fe zZgR^>|L66;toyF<12XWZKmD8i4l?^k{;kb^mu3ArBx6`kG5t)$_@Wd?2 zRt=x5a{KKqt3;b{J9BlgADKLQT4ZIy`;BL_T%^WxO!ofjI3||8JaA!W+Z3*fzmE68 zEf?9WGG@8*9-^Nu!SuOu+Kztf>(;&-u<`YQrbVxe{d5{$w@i4$GvNL858!Pzcy}%$ zs(CYbe%q$F9De`L1)bOk1+iRe0*%#uee8T0f))DR?cOt&%N&CtMvQ%J(H^Hu=xuOU z;}<2kY`VPq*JS^XCNGD+FNr?O>YtJS3|8^Au5zKDAx$+>e*7OFWAfmuGnvndp1^(u z8Tt!h>D*_>n*6$%)YKB6L`u}xWU!3l34AX-x9G1UuQwOHqVtZzMeikztR}y`CT@eU z!-WJ4Doq}Vvt76Q_v^`G@ooMwuKuoiymagLOxcfE20$1r+@;lMzG-&b$KTza!seUJ z>smeNvx?2BIv1rNUOs+aC5t*vZF`bzvpiiS_Tu93az+R*YEbfahn_RKG$B8Gt% z!XfDw<&_Rbp)@f}dyCrJ=m;z{`T|AA*K^_4+Yu*VNjMPPCvI9{@$tvCAvzEiarHL_}hOt|$m0nhw7}aGM(cfynwI4&f4pY;EAYx)f zcasH#ZmGS+me`ceZ}wJ>i1JI5CA-p`XurcX`mGeQOVsG%jqdBy8;^h+989%vqb18i?$FJT;uwYPoAY~Cc)n1X@6|(^v-N&$qqL*x{hHxvK1$W zb_dGiyvGLvt1sW)=>g6N+hLETc5VpUxzs0{6bV|9r*`aqI_j;~1CAfhrmSY!&&Q?T zo{hSHzF|9pncZO*;w1>@n@B28Xq~8_@n}iHSo=xO+LO-Jn+FI~b)x9f(ZUMt$c?;R z*Y5cuE55Ewx7&)RXl0Rg%dMO)ciZEQy|*{+9>0;@Avq2ev#fd=LBD$dHd%DMPd5^E zq%GI*FIBy~z#4VIWWii(;TS%BeXGJTOg$%T;w^bgS&1T z5q*&l%=>A(GV6XMO0;IN2hi@+qde}3M>ZbG9tK{H6s3Nf1Q3keXf0N zdIG6fyK;IB+lm5gQj-|5#L%ux$yugYBs;!5K9gh*$`5qTZJ{Jf?O)R2VKA)jZWlJ1 z#XD#l{F(l_fh!bRXT6%>?YSSf%vwQArKn4nBM#-RS@~(bEpZ<7=QQsPCS`fzGCbzw zFDs9|WYMr+a3YYkP^#BqM|rd04ifgsqQ4(53N^SJNcL(=tbK}C&Ajy^vW=_$Jrbav2)R+HrZZtBn)cMm_u*a=yDFv^ck!w&+2Z0^*i>We|NgC zi}<$tscj!Tx44(u-r2W(S4P{fRG`TG9r_J`>3HDUyOSAPX_W4#XdVBnv*-9g8^J#) z$$58BCc%-`SLZ~nzpsp;%_Avq=NWUKq}98@25W($Z>D;D6s-nrGwZA48w-gfHp;`9 zA~>h0-DL44f-=TK$yCDf1%=Z%76g!FfI#xZeDmI#ZTp==?P|XFHyn_?U$Xq2Eq^us z_jSRGuj9_$w4ch}uWjW*(>D9HkG}r1`SLc!o6na=bF$`x&6fw$BDDQo;APzd8* zpc^ur*8+}Zz^&R@bHLA=lPTd=t`HD!QCLBOP5L^wWnq(f%^l9rr796@&bH;OG0WY1 zlycw8w31>aVhP%?crH>1gVO$lS%}o^CfH!n1&0Fn`%*CW5ge9qKUd&cX0deDi?upKoB$>Qx4=Wo+6 zo2Qu;lLwe|K@{lj-@elCCr}BFQKgR*D(@9vDbu`msVeQLN>}?zuc}g4U+F$7AvBZQ zwsn}Q>Dq)F>8o9*YI{ZZSy}OK!Vx8$(T*-Z?f+D9FBo< zoB7=Ki$9ys#CF?eK7afhrJLrf&F8h>rOL7X?U*&6P2SWgKeWF*+BPdc8^0$gxD9^i ze*S0pO;5Mmbly7P5AZu7T@L@}9kSZ@@-hRz_Ra7Mb19OvUdaTth3=k8^oz4t`r zwBT7rE4}}m%&l5Yw$G37^DnS*D|%;>Pkud2mT_C_`@uf>*)VyFPd>qv#I^2UKDl-? z$z{oDEbUvJTdz46i)p^w#NOcUf7uRkFVIZh;2z|c1tmanU|K6M3LYB>s-^A%Zu4n+ z*J*kmMEi&I@}a#B4jUSvekCurgWf$(vxD9_8RHE^WT|6q7H2ebt6)8%Dle(5abNw- z%)Paz0IvS^CVnBmtMXq7^9L&bk*s_OyvE%Z=66;8HLj?{=I#NbnFs&$GwN6(bh+Xo zn!8!2$?KRJS@*2pJkd1Lx1UU%CU+UkOgR|9ZZ%&V6nroWua`edQfg?=QG3d?DE9f*!kr5@{=p*<~5st?xDZKB*S8- zaL1q*aJPkO zuAlBvexSyg5fS6<<#bbgVye61KW51T;;C*s-!^^vXY*|jU4Cz-55KW-TY1p1E>({E ze}ABVe4zYL9?WT#H6JbBF(+}UO9?pPvG&Wqa^=5aYIJ|opo#noNjWRFkhWUcfhSgH zdTfelW%mpD{;a}omX@()J zMXIRnPMwa3X@XlUHU&Z>oIQHrm+wXwdn6?uA~l5N$#FR3rNQf+bQ~v<7?J>02YLzc z^bjvE{C={iGEBZLOm1QPS@hOGKVPfEK6WYL6DE&OX;XAicv0wQVgFH26%cVoE}%i901j2Xdw zSdKhpz1xxgnthIVB@gS9_{tI*%nf1r``lYHrIbFX} z^~d`9nNp~u>OVz&x0kQiLG@~=XZw!BRjuc?)!vuHo1|*r4ls1zJBn&E#L##JsM61X zYbNpTR;5xZr4LK^_=EG3O*oW)v7I3S6$Hlf_SbJFC(C2xWL=ttqI$`KwZn8@CK1 zFndN&UH5>8(O3bDb8RvMBXBM?)D5mG+-QQ;`eZ!1w58 zV$|4Z;!4DIV`Z=UiVX3R@tHm^xUze+dI`=*#D$KIYZvXmxUycjEI7!;(^CDIf8{aHTMVm1AdS1p26=rA8htJ=$4&-YqQ^FnZNbo%T1EibKCUe znsCxSkI3ye9QTNa?Z@yI{f;1b{R2LyWxwGB`MQ@M)tia`B^UF^+#~Y(4d?MxxuEl- zRlnh_BDL~-;z#R#!vS0Df3)d0yiKI`O8+Cj-|+lMEtVh^Yuj%)@u6b=N4tK*+eK5g6dS&fMslh)O^myQ-h*Bc-~E;*UgG z2NSK!;y?6XGNFxK;h{YqJQ%kKEnxT3o=XNt=KflqTgPC#zEt++V$62bt4NgObN_w9 z@P}a3S3q8iyYyyimnBLHsy}NJd&zE<^;|r!k@Qs?k4%=gX)KM*%^h6xYvpMTD@ylV zG$XfSTyFhM+Gix#p+w?~D-xsgHxe~CvavkL-SYURvg$83miK%o_tmnVuU3Dykv1>e znZJErD~Z2Ry*PhFqHC8C@vgh}UwqkjC5hbns!)!Uv|Utc(1X4VT!#FN%*~$>d8kEf zWl7|P@|>;X~a(a{l4W3dJM@Hjo%i>=}6TRKd3@mHi85}{r*qt1yy$`6y#@xyZ9r@|fKtWhd zDjaom9HsT~B~>t!&RT=YNWO4L(@1tt8;@;V7~AePY0}Al-js9lpM{oeW{vO_O}tS8 zUdgV@Xoqnarm^d}G(0Um83L5+NHiNkxe+h+wUZ@@*2!LBkI^kjBzzgqYvT(Me-kW*i5MK#4h2sIsfPro`4;w4q7-rehRcTe z;wOyA!65R(@ebcv!5%ol*LQ#MmA_Gnl!qF1FDH=;?Ps)RN~dm8fL8kL>}oxdC+EuQ ztvI$V;seC~7KPV2n|t_3?K?Z~#&I~rgO50v`kgaMo(`XOm{9a@QxM(e431bMbECQS z?Z9Vf{*cJr4%jI5q=xjCMXruoWjIch_TOtdkqbG=q0SFFY$Lb&i#F~73NVsA{EQ3j zOsl|G6ulcw?!+E_|NrKfCbB9$%?D^LeWO+=)*XWuN!IhpmJQXHq>lNw`8Df6(lVr%*6aUOetC9D$*=bbBgRZH`Bg<5 ze=5IJEtFsP_&Nu?qza+@Qa19dq0j$c`PGD$g-ve{@(@ZAmWX7Wq9)G?eW(W&3sJRPdVCpJP0 zPcNQK%E#5RLpkE1d!N@Z+?OSK>)^kO+j*meIA0PJj|e-WL1zn!6#q-iW<#+H6YgE? zj25erRu`*)q)=~@#5&RG;-0kvd{N-8XrdE6{nc&PTLV4uulgPK4g36oHu|%!fIHdw zneN0Q<>j+(vDk@PDA(nsz`G3xr1FLNHd3)EyO}*~cT7Ip?2m%i|7?G>LFZ^FN15lt zFY0uxsR7&6)TPVS1@&99@@;?gpz_20Q6hVPmA!wPNx^OKEBjOYPD{7jWFOz{5Ad_| zLhDCeFyasJ^XG;BJhA?VEd0@BX1ofAEdIP@N>s#G^?zq-#4oVAi5s5VT6m}=W9W@+ zF&46k`TlfFOZ(qSlM~vow=G$`wIy#UxN+~Aqt|KikE%a!6WbX*BfnzYuhGQF{CR{) zZd|o-NcYl%VA-kp)nB%;=jD2?cH5Q6$K%3K^UORqcB?oSz?#Qc=?Jazx{zOFm+At% zPy>;C&lo-AHTM7VaX-kS!86+U5-{7$c@I<>GP6vcxW5>5`nl<+2g~EXxV<>2l8yZ$ z7=)v~A6R{8YfOAedUXysyu{%nqdD0FRV5SLG+Vx2pmN_dz6 zG^Md=olo<-+mC!r^^a30!(5uUg4IEAxK2m&-r+)#q3b*%4MYHSbZi2>GbWmk?5izbr`Q*cqP3^nR~x=Avai;BO|Y+4e0>KQswU_0 zHPO;q@^!m?wczU+`ywD#t!%V?UaJ~_-vitksl88R<3)3$u4}zAP1u?T$&ptPAz2dr z+?$8{oHCfR{?zfaeU1$YxlfR5G5JN!1=58gbNjYe+4*W_@UP3KM`|Xr+^6MJ_2S(4 zidC-m`^sNz1@8GO?;|I6jiwz7<+mfm>#wH zPK3BR>-WUXOkGFIP}e_+M@C_Lik=GqeYfNL!tlE--&NsvKHoQl-);DQApCC4_aotV zE54ryzw`KhCj4&6_ww+&MMn8tzO{#zdm4|@HkuD;C66-VgSe9U;%2RAB71LmGLyJm zDjHervnx15_uJ{t6k4DS_k3;DgEi=)@%J(&%=p=IJHoFKCO;?x_$mrE1OC&%b&W$K za|aI8(Aj7$)cD0WHmrDvL6fhX*~=NP@8g?SxrUXsODcazk69Ul$6iun;DRymb0|OD zWX?YXl1YWza-`-&ny!E$g8TVUd`M6`A+rotmzsl9g%W%;vE{{YH_@knoXjrtbA9N6 zT2iWHr@bw{K&syS_M#3!S3>K;9Fa|F^G*GGhzyHwJ>TpMx9X?9Y`Yy?!_VsVxxq8c z19L)}Zx)IPDy6UaX8JgjpWbxwqsnPG=9~67f{d4hM9IsBh2+yq`YL(Z8Xu$LDmkAS zNw8BDS4PRphRi@^D`!58gRKN5<|Sp6ylnbvH)SiwMl4vZY-NJ#6tes zJ3cQ7-;$S&VOA?&UnLeRJa|jL)tbNB7%bFpAs1fzdqTg}oWFP(+`;b*c0)dAugBYc z`v>ds{3U;;FRb~4^Rt9b+nVIJ=?gEU%i*7++YwFqrZ3#0{7_#Qvo0$?8$Ub@x78PR z`BVIkPPf~nFVugM1>f-F0hdtksS9??#;@dr@r#$|dsRTr-%^9SjOWB0Js7ix?yV(S zcxso}NX#fL+^)}hX}%rmTaBL`I;y;P7b>rtR^pvhKH!&5^b$Fx{d-h?BIYLyh7`t6 z_tw%|`I^?l?9gwi`8k5Q>Q4h>2UV_bh{N}qJHe@6)-=GBOQ*Z|EEO*+Dkr#5uFJ6=%d0`Pclh<$gsDftFOKiUy#&_}82!1|}?Lp|3 zfWnaH?zmHAi_CltY3A|r1iYDaFh=uolc7g^DYlbHO%9x1y%EF3+Z0Df&nt;9VjEz7 zx@Q&Jq4~38IU9;zDtFysIo17IOgmcks>s}tEvhyT=6xF=M6TBT=c>(ItbNdamf26> zYpto;jP3daKG;o1&(UFGqx#ipY%F&Mz(iJg;uT3KPg6qXJ^p*d6ZTu9vJDs z;hN5N5~YO-ELgp$MZ6R>=^-}f#FU97pQ9!_9-SE7M;cw?471~H1GTfJ|H}Y*{FjO~ z=qh>h-dn6{{zB(vN`fth<@Z@B7GP1%cP(%VK~efEl|JX%s}Ntq!wV{9D}Pupn(sa| ze+wdo7<9w|y&=bhLLpaVU{wJG(oK-9)0_-+h zm=yiM?oo4BZxqzSX`=pRtz#Na`hLd%>$|xme>NFo#*~Y(790rFu)VO{voUuJSg`s?8;p{RM(2Y((TMc@Ql48o_J)UbQ)|lK7!TFTJSq?M8Qsa_cO&N{x^; z(6>!XcV0y1Ba+!^eVF`3-E?B!==M}qz1ko=NdM+i-(Xv%$C}cw<|cs3|G>*z!6{AY zD_`^JA1S@GDgA~O9<{|v??rlsxDMlQxUX5bq;?nE6?r)ntdI490i%iIFpKBLx+8D; zA`>bHxRZaCfPtzM=W*5Z^Xt2dkB}E%!3oF<#e8b&AL(y~Uc1T;86_=0B#DQ`muXpe z^SDuQd9W9_6FfFP?vLh$GzyLAqfk^Pg36KpCUy>_iGCfi}` zGz)w16t$|iAV;QaKs1Y9^P3NDPUqM6uyK^hVXo$`VhlWPssnXn?fbl@nl~<9{5kB3 zOMqQF`NrMxR|=YLw_)#OT+5h_!t?WM zKpSl4%Z8JI&@JKkpYD9Q`KfYJ1e(eP7r?S+zpqHqPoX|Uzn!rJ8NF7k!&;a^`pK`- z=yzgBzn4gG(OZmucia8#Iu}o*=ohKEoqSyzuX)!#py9oI$OxQ8!~RYC3F!DlijMbt zI{uy;>jE9QTWxgAU_a3Vq7oQL>UZxHQL(Qy5p~xaji@Z28{Br^XK^olw+)F?>lji| zS^#vO#Km}F+?>ueA)PmUzphy^gw?5X{};`O2ixqW z#glMeD`UHq_Fp=^6TViLADGcwwb$ok*db$nyr{cK^ z>J74faZ;$K(9-ZQbYUwB^?)^sv0<8Ql}X)?aO^|CK! z8*&=laGyMDGmC+lF)e+AJ1|WDg7lJV7NVLD`6?Ut0p|^!#$rF2QQm1R!4hhBLMMri z8;!eovy9(iCuQ_%p7B+f(YtxZ8)VQH+Sy{h$SpiSIkIua=)&{W(Bom+c|PqtrRh9N z<<9kK=PIo>OgqP?ol~=@vQlNv_P@{O_gVTq-v1uY@8k6QEdTo~eiQhmwD3&-`%Hcp z>GwGQdmO*_*6%a??=$$_S-(&Bzfb3Pt13o^@W8xJZ}fMc@8XGnBRgfezjUwe2NQm5 zH1Eq`f1#oH*J?AvMQWCk9-K>2L_uj7EhZRaRXI)3n?HTa8Tx)G{q6)rB7b$Y%@GDRA%$PhyFED;?u5+9!vBw{ZbQd?Z7RdOzXrh-My3?xF-{U#!TeiMBsFX>5 zjcX~y7J)F)DKqpHvuBS0Mkr?&=%D{4Nx+hS>)+rq%geDnv){V@TOuwv*{6FkmbyQ| zsVQ$LBQYa2KQT`*Ut0W`l9!pO=s0Vg_S;}xdzNOA=D3dU`hez((xurC)m6{qqo@6N zbP<0VM-5gtj}nI_TRpzU;Mlz)O_K|&kzhS=FI(aHM*_P{l4H6w##*yAswc;C=@8^^H0yZqef>AO87(s|HV_4lXN zSAyf*qJen!|1uC4Gm=dt;=K|h&(~L_yX7X)so-lQl-9?PJeAjJ4CgurNigmQ7r8JJAoi*X{&ibw9HnRR=!~&9n7Fc^mu=AT=7#WE7pW>h?>J%ZK!l zR+B!>=9&KBDuV9G<%LwJ$2Xa+Zt#vq%KrN{k@Ad%kTMF1&FMRm4ps5X&J-2@&ZQMI zjD>WR{~+gKfG$tm6|$GEZw@Lkryjz~x#H0rM>Ky?lYa1Po?XLa@cY~M7 z4!|M(DX>VMz_=`Mq84yEC z6-XKQ+>^+ZawJdGPi1F>sQWYmIFJyJE`q4~8W9O5OjV1q*`VEAXS%yDvAh22hY zr%{BB^wgnYu9So^q-Al2V*ctFCb5IWioeZdbISI$T|I~?FL?sV5bN?u}z!@M%rRP*|j<_e(YD zG^Y0~DZ=Hqu&j&`BC!$KkHwolVa^dKm(~cVLzrHRT%}073q^t}LBo6m>K{t!n}OrE11U^P<5vx~3b$?pCTL=A>>c zil*mDqaNvwAtzbEJ-UYYTN(;&`~cA1^&>;4@wUxUZts}K&Co9=d!21^rha*)PrEWxzntXLCS~fE6Mfo5^gYurukgRG;J4|Qm;2wB^V{^x zO8>i(-=<&2{O=gQO~0Jre^21I>6e%J-*^vg^A?@ReD{qhnLbr90g}WIzZk!9J40dS_mVGf@elWv_v>Jb;*H%|6sN)d=ob|)uqYnf z(e#V+fuFi<{8<4G{I^g|`=(@3?)#ecYusyG1km5pg(QDBu{?q6O_CtNc~*R|%_=~l zFMMUYz~CVd$MZ1W8BB?&ZrgnPnaBJ<@+Ft(4McFG+3drFTo7w;4^5*X=+xaku||b- z=kq?k*!pz|?uJ{zPqSEhY>8>JrricbfF#~UvUvD=e0WDn3r5BpH?AeuvFX$)E7hqw zSBk8%ZJm+*0nU8%B6YsDuC$l$YS8oaWX#Ml%2E=Mj!H~{wqr^>wzl7cCo?XPKA0@} zViK-n95ZNd{BSRS73FTtnPjUq&ns(k!Ge!OeZSBYxOYbr!i-LI7tyeerQ{{%u1L-M zrUw?qd&q#;;9j+1#ohm;BCqN-tKs11HFgT4xD;^&0UflA}4Gd&pPeIV=YwR6?fZK z*RdDuAqc(Q+Xr)WjxSsfSqf@}b=BtmBQB>`B{EF!SNl0ejln!r{c`@lW_(ov#w+%G9vnP++;6`a#ZQ z(E+PGzjPrU8sh?eyNJHp?GX?Am5CV(M@nzz`Ir*hFH!wp@$39?9;3S>c)HbpwV|vj zGI^?!G$ukm_$ejn6;C=8w^hmKe978tZ8(Strv*;y8K<=z8%5p0NZWF7j#9ffFS$a% zQbxv${`Wh0`WKYvet*?w^AouGG9Z;FC1I#k)$cIB=~9(s(FU%Jy1S{g-~*Z{OAc%e zqh0>2+!xuWFw;EPi;vYqO2oLMEv0l1Zbz(y`Wypo3>E+Gh-99$a~qK^ZnNFeiqxDe zb~VP@k4}q;dLPQ0FZUP(;-9zC7%(*#ex-uR&O3C444*PGTxYo-XhAQCHoJVB_Q;}u zohVo2HfWvN2U*E}N#hbN>tBbhK`etJS1aBj>|@@%?toZO#XmUUm-b&2x%Lin6y<2f zO?()ihUnXja6>)XwPi59J4DDOJ5S#YUdv1K+F*}d<|C%-+avOxwl3As7JxmzMM>U` zEYEFl1KStoFemyUx{{rk5wD{LWK5lYZZ{PmEq6u#C6StlaKmAP8n`sb73FuhMEbzk zD4y?heGXoEHeCuRiVb#wbP-dUJN}lKK_z@P~hl;^4$bkODkhou4 z30|whr>|>VxY7^r!4wINas}>J+GCjS1NGG6aW4}&Yu46wvspVMmYTKiOb$=XyM+QX<{O!6JcT4J+1(j`%vy z`&a79+E>ht;BW9!GyAwq=%dVqU6%cC^Xt3${j2wlzR1i5?E2xWSXXvl(n88e~mX`7T)iW*H zXYc{PhIV?L2bxii(l6h|uxUI-xNoLw*Tqwe)sqM3C^Gk>K5sof3-qwgvZw9kv%6{_ zycMy}N^Y^WWqXvKf8L&?l`K76863d=lrb2?B}7Amwudr6CGmINnI40_ifp`>s5vUt zW*h}|bsu|LBOsbt%H9E5Pr>0}{Z4q7!sL_hXVV40Ke|7+u18M#d=lx1#;5* z!XfSzo`}* zWmTrCO4O>b0O>?tYAhB3x9Dp1b0Uxbp#I8x=1EJKzMCNzB>0tsiu(q5a%WwH842j-?h>*d6L|C=d>8Q9KUo zc;~9pLgN4c8nk;1S{@s6oNzp>cAID6Ut^F47A`o|1G-0m_6AU(IT<#c zEV^^Eb{~XjrNN$e$XL4I{9iRt5?{vh6OHD~(7t7(LtVOpRg8mtop8 zT}A~CAR$@-UuBX#On3LwM6)$Vk~-3~R9TzXlUf#E;>k9a@7Nms}%T^2landoGvW9{N|24GSS;8{)~92SCWiBeL-&I?tmkpKP2JQee12 zX(HLh0`g-|He>3I*}V(H?p)gkX0Gp*=KnG-*7j+1_Y;r9<6F6R#ta)j8zz#7Esbx? z+RM_Ryh8c|8gJ(4U3w@Df!#}G>JONV@`Lv^neH4gvD1kQZR1l#R?|3skP5!(uA;8@ zYpuUF1Ha3JU#m2Jk(zTg9mD3WRgf5NNVvnBH9ua>2R-1OA8o=7Ztfqu(ac$1S;6A2 zJ_fhmf=6jeJ|OXNs_`n3TcbNcEVQZedOzpqmi}FMN*a0tR zrJz~-yuYi*Z_~|xhTqZYcANZT-*`F;zI1B0Z@L`uZ|bu04Zk)S_{~|Em9O=X ztrAXKS`t&*BG+7}=ewt*!eRrF12k(D&s0BADd9R<>!Ue9ZbiN@jfN$s=DK^rJTt&A zb2sqQPS?2K@d6VolxRB7v^l1b0y4gv#-R0&2X{5Ac)E*OUrTOD!fv9}EKXIqgb$1V z$@!39Ge_$hCEh!jqa>`lyNc;1$Y<%wrdCUqbtNAXCfh|#lC5-s+apZ2Kx;BpsB{;X z?~~)N(QRAiFE(goNr^dcR=CFM%qU!A8(a-;yOOD=gbmv=y&*|a^~nTek!{7*3iiYM zrWvBOvVTJw3K7mSQgb2IArCh+jWj6ulNnF{qa3v3(fkxy4hoBQ^dzYpY{R5gI-j|r zQPR5buX8zUxs68L8Nb@Xx?6h|wVQ<{&nEni@I0@-kXTdE9 z6s9WW-NCy_Pq5eGYS}=g@Nsi~v2KiRM>p>9-5B{B-ME+THPa48ZvIJcZ5aN+0Hh51 zOj(Mb1D$bIeourVl3GfIBHmOdcR%-ljQX<;=aTqj|7I2W) z=pOvp`aHHRedZ+>4c#eQ=<}1%f<9+zBd2WoiTFYWnn@L^H-}C!W}A5)Gzk7`nQ4;m z#m|ftB3oXq=2F=<@~Z6mKa*EaQoOl5-RU25o|1HhRH+glo@f*%z;V&{qb_(uT~G1b|N6Vf&u)Id(C|AH9+F2ti{X28=nZvR=LRwy z3)>xpZF%xy!?v@S`Ggb>+I+ENWqyK37{@mD1q`{0QysVZ0wzGR=nB3o5@#_>>fCOp zvkoMtqKz=Yqk3%-H-6fwYonRr2IAW4oiJkml5xZYs#!LkIn8Vo)6C5xN!gORyh5vU z4y(Ke2L*_J(9a#uAcYbJ(T>y{)|7A}{td&lL9z_VLu&OmJ%Px_dS%a^u?rp*XqZ1|vuT^~P0OO*~6e&KarH}68B6PelFQa>zjyD?I; zm%ilyvqgqNnUNwjtw`g&+epnGe8^Va2+d03%Ow7E%vP3YgQ_9JgzOY8)VGKkMkM$^=OxdJUEB~$g#ZugQz8$msk8YW|R=ObN!!iMp` zgfW!;9A-5a)q4OMnl?TqEnIbK4w0ly%Q$T%*NZM;{n;GHp(44pwS>gDLrgLJVj9 z4R$n5M5w0VsoI_VmIfujS3UXzI`nbNl}usvbPoVw1NuFvrFoPOQ^QN0A`cH%_%9+<{73|F-YX?-lc4^Xndq*4WQ`T2ezKs9C& z4kpBv3Rt-9WUtjpOgLq29{YGSLZNmjS*eLC#u$c}mS@-%;k?vuI7Gd#c?hI3=jC|N zcQHR^;k0jMSg?}A1ctNrGil*gyBBmy5rPbRWzm?$XmKdH!5IFLyhiQrB;hlf zk%=bCnq;6XtO3u^hx)R1FIvLof0H7l1~_=i0Q~`9z6{02&rX%qu zV^c4rD~Ho?IC*A&rGh^rkH2b`Uv0YF@fB*Xu4<+^}jQ#WbpSmDyN_Z)A^CINBAW}g8sg_k<$ooaF#iH9z1A7nA3-sD+1ZyWlNVj&ky4Sf5BtE>9 zj0~2lzuj)YznJz1Wu98W&yyrBJOeSDq0!>6g_1 z)L4JJ-!K1(o`*h(*`{HfVRo+ydEKxT_}P4t{#O=%zsden{cS&uZ4dFh`_49Ep%Al3 zT7fQ6+xmMdJ}Rgfx+ssz-wg{rpxr6!_Ok76C&?=_D8F|(M&Kfn%g1dLj};u595|qA zP!9f^Dnn$k33RU$1+>Y=SFz|A5^|R)q{qOP`xCv7V%1CVo!E@;L_stcf5c!f`An$n z6+pMLmX{pJ#t1fc%fb@MT3IzvQM?p!V!`3Q$=$!jw*YKs9>`wbc2c~0Nk@h(&+7-; z%dt=nWuI?y34)pe%JKb^;2Mv4=6s>mrCKBfAyqh?{?b zw@DqPT4qO}EaUJIr*Q59C@k)LQ-xD>m+~hw%OGOxnTC2ixvYdr8$cTUUiurxV&uDS zFHCH0?->isSz<2CLFZzS57sQfZ^u zj&~_k>2zNyvq#&hlCGe+LSN}6Rm%4*edMUr%U6;|NMNo+TRyjb->8Cz`GQZWV9RZx zKZU3Z9z{LK5P%FR8@YYMhz0Ev?QD~d*zXigoPa3RZOpcb9rTzRiA zDBd5J%k$uL_ZakKzjmTn;4c4N9_1jPH3l2&am>_}@_*2M$Sd>R9p+rh9ejW5FxE$$ zrXncdzKBF9d+SOHn*7x7P{3D#h1qICyTTvtw{4r<`^F z*UB-$-vunQ9`Y4qTS@LsY!>x^y%r>5r?Rt0L#-oa% zsoH-V@H?HHHYWvjo{z}rmbWpe)j%uowlPBF!3_p>9jBCO)EjxT*VP@M;*psnDWd4} z0)6o5CdF$8l9mF0QV9NR10V4(=XIk%6TQ;!c~;!bYm_{{WlvLHL6ce?b$D|!jWv58 zw2nykv~M2Lp5fB;O2hm8t_*nlX25IL1kd07@uyo({-6NOek3#p^&SrD!-x_?YXu0( zk%Y-`xLjS_6Q8jvk7JhP?&$G|##ev}a-4sw;M1I7z!O>a(QSTjc|I$@x` zRUD&ZBUa=9^ZlX7uB=8B;eOUDxpp3Z>&fO>GyO)JEA?%RK5$lbR>-uF zUSX(uxd-TOKf)!HUve>G46t7gO~Ru&vlpR z26{TMjoy13lZGFAIE`4HEA)unY=~vmX_6iK%CIlWK}lQGk7!F_owqXhjBU+T{C<)D z@x|A_4C11)>l&vQ2YPkN9NxIUupM)d*k@hb`Moy#2u-lH^r3p*$K!5J<#@)U1<^`5 zm^?LS+TTRTrROe9Jh}0j;x?5d+gvf%!a6bbsx&vO)JK)-=RmjAl-_RuqU#p2G2lr# z@0_tVNna@WH`7~G;s`z4rsef}xUl~7j5@ymyy+N!-K4bCYusXbaN$Od)?L_n5wFWw zEHX3B6h(vTE;7(QpJs_kYgHBFek)6!z;ijJopXp8+qyF5{59bxcKK_e$AKRRxGMf}^cXi3hL!d&-pDyxDlf)Lx7`XWOc%ldy? z`I7qQ!}_933wk(KM6Z{JY^um;FX~#u^UtK=^5ot} zfiOpK$-d{fr$E81NpkTkNp`?j6Kd<=JivLfv1B=?-fr@T*3X^Q&uZbG>^yP3?`IVx zV8Ux!rTV!)Qo#39?5lnz+TdNWqj((lGhLn?zJ|4jT`4V%!@p5~q!4^ZtFE1I@PP|y z@Nd4sHerJi-{5r_4gOmK$q0K|*x;^e@E#!fK1Q)=%h54|g-x5q$Ow z`@b5Qc}<@9fw&BtSVTtMBS)o%K8uhG?vi~70u}Qt+rwQ(9d>Ueye7*q=9R`>S$sW@ zXdh<$$}HU9gZTPxh5Ko62T@ykj=pccLjzm%5jv25zJStH!g3^6z4m}D>HkV3`4=|o zOb`NB36T|bvtVBpUdMyyY`|1@!zgYT9+$`RfeSKjW;O3Kza>ns@|A+~?E(?&`t$H!GWGTRGUoyTic>XY997Q zhkzM)(a1<^gzdZb_9V$)ZD1Z-?qsVC9M3BS6R>#REkol{DVqAaDnybNT*nj$6;9%w zR^G=n!gJEDlL=~yox?^p5jdwicu(=jJcU-}ky%<8mb1HIhRr42-TqjJSp0WMgBu9A z3~|qSoAlK_;MU!fX`j1Ngum1v`T>0JUyw<*Cjh&RtwlXOIa^aKft#*-5ZL%ZE3&#{ z3dDr{j0t67m?g2x-4LeaYIo0trVrKV8_SS%NfA5ejRFBjS7WQh}7Hk1tM*v}C-brL( z?+Wp{w-wQ`*0QhndZ6#mKzk(^UJD*4N9$lUlRCE~zCJkE62xoOo2B@{WtnlyAjaa~ zQ;hoHUm!-Z)ye6CmueI1*O@IVC4W12a%fzY8Varx)}wE=eAk3;i`))r;rrAF?0-if zYNfX&i`r6*4lxmi13!31Fp1x$aoF>)6kGOE7E_!$RpJAm|BvJiVbu=G@7t8mf)x$- zqiMfsJ?qn3hLOIU&%eRV6KP=&QU_Vq+x>UMFMgFVUz9}EU9@7W4maW$c7{4xL3Hg2 z-G>=#Hm(S`!f5fk` zfFa)ZgZQ6!X5}0GK2Uy0zcJvKq2h~vMBOBA<&O`3r}a#trDy%f6h8i*&p#@7TnY(` z=&y4wnqH7$L0M! zn!AGY_GGKv+b|{wZPV*{w@AkAjNe6HLW+#v$8^sAebuYkzxVx5_#4>2Kc0r=>8Jfn zY4Wl>xesxVM|OkIXwc7`5d8hs6S_weS9IZeFwc@C0;JzfH+=`=24-ei!|-&w;|9)i z>yUM0x=9`3?Ge0PlrwIg+>c!;$(ZM`^3}G5ab&0|`u187LtpPf9_L1}zv#@leF`#R z4c5rzIa$=lgUF?rwfQ4y$MdoV1%SM+tKPUD28I=2xTb{5tp#?8GQM1Tm^+ey^I^obc zwZD(dtzbWQ++ga@o$E*KGQk!LXgJtqx+BGFAdaDP9 z0bOugzFXHAEN6vG=^+-LXlFOiy074hXvr?{T{ZSqcsH#wAb1EVqzPdf#30Q<1| zw(`3l*8jKIh%nAcFY>WznYjodU*{~u811$s12=8rqDP8=KNxoU*~R_(7E2;0nmn_$G_iKPY?Y2H*jrr-2|W zU>e3+rmQK@u{4Z@-+LHulI39>yTVdDjIX;0jiIvahIriTVW9t}VO$x)n30CjNun}^ z$K4(V1C@et8U@pnUe`J|--kMIm;6Ub_19;p3(ejaIUK&*Mqh}J|1*6dB1MjsB2(WQ zb5+**YU|NjW`ZwQ7bLRvDbp7eFIUr7`qq9kv+AepfrN&W)&RIJ?jb1QAL*zZ5;*vV zd0T-&)|_w>{4Pse%whBTNX;~{8=P_c8`!1I{zs^xhd=cjpVP_2{wI&k*28p#7=s!~ z7BbW2k>aIxj1$arbU@nr2G1f70}LB$lB5pj`J|gIsq)w|q7bvJ#r8K0%u52-%{_#| zs@HX3Z3nsEfkdH4qINQUaSh9D3`A;Kze(f9S;~S}<5qkHBja-!7 z$jhI2DZY~$x!yPO@y9fB1n}!C{rX=th4|0H@Es~kj=xGKZD4%;!#3Jww=pJc;~99t z9pKxzLTyy2jqTlTKIu#)X(tMQ&KV4U?p0^|n@nHy6|esU_ib?i?ypGHE{bn4u<8esMF-M@T|um4MpV|N4?|AWEWqU(6=r4A2Q?*mmNu8$!<5Vp4AwCU44L2K7ug!un}<=@8HMcK{Pe6j^hD>;wxohcZ_^) zWSDIpiO4@GYL5}#PjrjUUaS*n_ z_=mn#dEF;FuK!eA0tSD-XqwWYGu^}3v*%OoOir0 zv&fja6uBxaqL(&wawM!jjr;E0pVH}f3cE8pEUf*5-EtIncPdF9&&|}WZaKyos8Dke zxh2UX^1@A_j5I`7<9wUfDOIb$b)buh4rYiwCj?ax|4;laMXS%T?z^xfoS7v%e)ow@ zG!EC2MLkgv-J1oT0(n$Mr9d4RX%tvS!88SyJ;P|-6PEn1O)Oc)IFD}Yxtxecp34u# z^+6exVd2M{rfw%GW$Ijjho(Aro${m!@#>JD46+FBjVv(?hGt?ga3Tcm9s-p-D3706 z*u_Vn>t2e1InVI=}Nw=>iy7jSF#1(MJ;ku$CXzO0C!_d0KBG|}S41-!Meiaxk* zg~bzBcPW*o9}qRWk$`MGjt3V8Q(;xp0qd8mU)lDhX@6wD z*>uXE>0?L#f&J!-tqQQm*#li}Ub=P(yC@pvs@$U78*t@PB*Ij#oprJ|;3t&T81#HYE3RbF+ z@AGx$eH&#zpU*$P$M5k_a^F+VoH=vm%$YN1&L}@=|EkH#&&F>RhMukT#q+m|-_(@d zC~aTrz772DOO?a^m5pC^`(w7%{^x_XOP>_nbo;7=}ZM2_xe|S)K`!+tA_lGy$l7$~{_-2};>N9qTcxjyAZod*+e6+i?aor=s z{@pLjewAIGOTDpr`3qbX1Q;Q{Zol@K4Qx@qy&L4q>#C<(_@D5(8W+0%3qDM~d27%# zyY!YwNuib65B*Q={ZaORYtJM_rD)c@LRtq(d@oGW_$Ge@8e7Tip#10l&`<7{&o5<{p;lRW=?<_2WM2>@DmEhtv92>p{i2+mpw76tSd-i9ka@_wNpOx?TPs$J0tESOe=MCr(H@%#}U+1v@{5w8-)caK&MKmV7g}}fp zUMtlc|u_vs$yld2;U zOW|rizc#$()uhP{vI|sInQ>UWHjv#M29PqQgp4QixZ2BGXeF|*tZ?)BlF}8k;H1)J zZ}Rp3Z83wEx+_0Y?W!5xzM=EK-XNmzdyuy>`cszTl;f7XZd?BFd^Yf>+jK3y>r{4@ z-@KtMf6r-+SCTmO0RD0H4HV4`rH_)E#MmB< zX9zf>W{UwG!nEx*yAA^aPWMP?T~;3iWW!+B-F2+|B_UzyAudO_bkrBF(IB;k*7U0I=xg zmvRseRjP;!iY@y&QcJo19;zL04TyyC!eiOV3-qf&-K)s!%fU=L>xR*I1I5n2o{q-; zihdQ8JBf1gD)ozr3orK@Ut;@;>id1+SExs0 zHo-k=-yAOd7_0r7I{~Qn+Xm%kipx0507LoF%(~c2hqm@n{ISn{`=f*Q?@5-9jKF=R zBD?+Z^|b$Lu4pHJj=nj>i{bs64hH&+e7BBmIay}|w_gDFK!ZD`G#k**LjZK82Xv4H zHGyl0pvMb)SmKu=Gu#i$M5ofwW3%N*TY^{bnqUJ~mL*C&_2Y%nvwcT8c&G~uYP|5b z;g(zu*T(myv#{(r^Rd~5lC`u61iixl5V{$H6T zzfJy+PnARdS7+s${J%{3N%^0>pU7UHF5VV?&z-hC{EkSqo8B*tydtZ8!>@I!+?>So zW3%!NzZLSg2=F`gzv1`7w){QXY!|<=DL;-heoHRTYTxj)_vCDyos($04g82RoWk$< zs;v6i^gDc8_+8PT8p-pRq$*(THmCO4Y5e+Z1HaEw<>n-=8k5z&(eKTS{dn8|hTo$U z+=~C^Rc;TzYf|l|@q6g9toE%R{Zi%TB<7=EWoST#pVkFU%JNrAD`7Qmx?pyl!laTvY^@PA1cHG;a=sXrS zK8KZ1@=x*p=>TdKW~-99rvDr`zaHz=23PQhUp(xJm=^o**ROs^jR@^;ulMVJ#7~d?0t`0&M@7e63lGSF*Y&3% zjsJu^zwhg6{F^&rFe%X|slPbshcT-lr$)9J< z2;$F=o8*0$-l1jVr{D}*;rCp>?csMxs@*hxBQMQ@Z}{~}m1F%Ik(F=wb63{wsIiAkJ=Ite`lODAw7Lm9egR;o8SaVcv)F zo}yu_Ox#m(m+q(&($)O#>dxi2w!iZKAmLE=^Z=VKH!)rMj*@=3+Fkm&P0e9)p6Nu{ zu07`|x$RI>c2B3|anERTv)c9cC6BW^J*(aM9@b%$SU=Lk+QXON#wottz&g~!nmVLK zPSXHyx549SiwRjxPuZr>LxPH&4gB6rmE-(p8~EL){9t@HX75L`@f$`zobbItWJ=Ja+ zzu1LY^fCG!oGOR^^YvNzMnBsR1^5jDzf6acEq<3r*Wq5=yeui-khjt2GUTP?Z{~Mk zFOu`0gr;|=RY1N@uC%~h|Mo|&_G_GgX^(?@JVI7rEoN@_;{|m@_#mOs`GH|4vzq=S%LdiRkXsUt_jmDu3%u{=O`dsfiT zqrtI3_xeaZ_pd^tS)%Mq!ruU?VV%!8jvP0SG@+jBQNLY59T0PwE{+-cguUHkw;vOg z6tw&8D5>YOabYw*!Rj?Yx1pt`uX3lE#Oy;aM&=U}0EBmwa3*T@TpI525o1A)EM?qS zi0{-2^xa<6Nxd#HGie{>O4+y{dP|4hH?pzy@ck)0?hQP<7vlknbN9IN+__?+90jtj zS%HOc%2Dd#xLK-`6@J~@UCU!P=Eru9tj`PYIHi!1k@fAX7AmGetaW5vell@gLDgH7 zX~?HU>7)Yv%Zo8Z3qrMfo8?W9N(|@z=5)O}bX=^X!T97a09f51}`{KJ-*S#g9Jmh`dbBmw7b92+K!Me9H z7dKVjDImN0*pjMM<@fiGm$hofB3IXnSeBJTK8XI#Wy*HVP3^^R6t;V-Pl9lDZpKcNN*SbHRAh3=0A(b$;LRZx;gsK(1v}<_H zsOWUxM_LO&sB4w_z$di$?-?=8Ir4B6HXQsVTV16W{f(y zk_oDb7@823ojLkJ=#5b5jXioV4Am&SP+9!Usb%p}TG&8)XH6{&oisguihYJoTv*zB z0q<>7Y|0U!ofu7Xft{>8b}?PPG#~T4eDrI9T`Dq&0{8P#!JB>seFhYaeTN-MC;8@d za{u^;9Xz}W;zt>zGDs0S88}zwPu^MB#Sgss3eD}WEqZ_XkRA$ggDYsh`_^ev>vl<~ zW{s9J43Kt*iAbJ5Z@cB^B~l{r@u53apfb5?=MD*&8M?-ZXW+(w~?YQLjT z?uNe2OGbKN1sXfaS1ytCc9z?||QD=T_(?C^=#meHyAIwq`Q~Ie-${@9RCy$|200 zE15NG#_THg!$)kjdlll*`>GdY;Urhs#i76BXT0&oA%xE^|(CMe85y zoWtu~RYj8gMTkr$!5*PETJ`23tgnC`zj-RGSW?}*S9}B$;aw(zK9~r-r*qSk62_Jd zAFFr%M(g|ULU}!Ll$2Ku1%6npqfYmrART zr<+sxC26sbX4U<+J8|HNoyq2q;(eFJE2hS8V$NvFo&u)pZ3e9e(}g9yKO-I~h5QWq zG|Bhf6qu?acVYDjv@wjqFRi|*nV)js_b~@+9*`gz@;=gVXGy~ezo=U^ikD+Dv48Z# ziujq$iM>%?((9SxYA$uNZ!~*HRPT>Z*+o-#1|~o8mltQx1o`KZ-}IH)*(IVC=S;n( z)lkhLAdTGWAN@&ktL99aN&K$1jE|XW!s%kesiVgUj7-v>YD^;Hy+e6`RYvDFz2@ur z`A`8d{kKRv9V~eCOrqmqKO0^o#pg@fF<)AlMAdxJriJ+ur-bkZy`GB_4}eC)u70E$ zN#iNHd>J&mw!?(7a8#1|$;0egVlHMPL4=#(Jh6Fr07`_Tgz}fNZ>@#%Y z2c^B|a_LlK&xEarx7&l`RVMC-Rd0htz9CT!)p(L^Rj5vkSJsUcX-#GB_o#uMpIal= zY2_4JIWcIZT&>JV3-;395}VXEu@KMOxx$3}9BZXDT?o~@3Mn(k-LB~9f}dy8K~#p! z7F1nVJ9{=XgB7!KHZ$~aou~D11$&$6bQBcoKjZ|r%foV_pHs=pxsg}tiQ=Mkn_Za; z2mNev_DOZ`jdQrnll#By!quX3WI9(&@{TW;hegr!s<-Xc`{aBy!JeqFa~m@r478l4MrtkZKz z({V6QjfRE&b4Rx2Wk~j0aO2TxASREjJ0ev3Hb4BU+!=ZfN~NrRZdM0xt9Xk-W;*@K zO(#hzYmC7zsQOfql{$LMLl4`36Nh@t4mzQ%YN(Kxu_9aYz6Y}H%;Y7;HSW+O7?I1d7uS5I!?;jAc96Y_66Ibw$Unl$d$5wm0=(-Kf#d-m;G<5f@ z#72{_Mw={qiikC-2RLRJQzw~L^ST#Co?rZaIu$1#``^&5_k#ypSVV81JXPL-Y58mQ zJ7(0sY8&+}zI?EsY@1!*pAT#foXfc&5c#3pyrkR{^xUT9Xv8b(t~q&hQg9B`*Y-_g z0(w=CZj%$Lk&9DByzh?YraG)V^tWlDJx*#L+C|2%Jq5@j28C)KfiVc6E=`v!F+>t! zfh#q8kh^7w*oX-;k1`dpt{W@%)2*dC*dWu{Y~>{2D~#pykiCLbr0{4i@@%D4=pneV5=0gwMGDS zZdYG@iB6?*j3Tta%mN98k! zXHoG{?t&3z(V0aHu0P)H0J!5RDb_2+)BH$&2W8QWOG6c(BI|P(M5l*t+f4H;^0%zv zFL~j;yja(i&-NM^R$seh%ubVXa@y1E+KokXM|~o0>j)b7eV@e2v17nbwhkD^ZZe!z zw0O+RK@VX5H%UQ#6rWwq3XITP0ESHy*q>VR3ZyXdh|XfH!5ht;Y^AEc2&D5ADAnB5 zLvk!STL|0>0)n>r%iNsEh`c>)WvJ?7N^P^t_q896e$glarV0mAAv!a%uDPl)aWcSs zhZD_Sl$B{=(+(!FUJ2>ZXFcHj5mV7_T=(%;ISm)2%)s&}S2W^7*{7}J1}||&j@|OYzS4o4#495G#ciE08d}u>8 zHJSUz4>G$@>D%hMo6(4FADJ}}gG0vrEW_+HCqN=3YkFk6?fTMB$)1jXg?O! zlLxMh)};*BG%*4R-G1=$nf8tt{sMBf>Msp1rE0j{DV~@{(bBg~U03TA3NI;(_amIo zv@wgQczD%&;2dt9tKZ>irPZTaHy;+B#MfcrS4z!YDxr{trqB2MF|iqV$@+JyR8>Qw z2l<&MON+>M35fXj&I#s#-s+tm#{HlToLhMZWR4FcTH8D2<2L4y6dF$ms~mQLgF-d8 z^UGdr!V8drHJ8Co4@j}JkaWEhI3}%taJ6q=0kD*iI3#b*H!M@ z`;&Ee|C?eJMgOUqe_H(L?xmr|<4bC|3*>A6%hzs&)_W)~UyPe29McQ^%<54sn=c|d znCKU;0`wQS+LcGYa|7<|OnBe2LpL)kzf8{vTkG^TU+pof;^8IvMgH{h;&EKYbKw)U zub!m^u~so!NnbY{>)wSK>6@T;0Kvefz|jBHyCHV|&-&haI31{)q_{HTn+`i+#;?1XVz&GFxnx4KNzuP|{qYwTxv zI%h#TM?W)i=B9J>Gsv+Exr;!D$#yQcXLYdMos~Kn4xt%wP=O|2bF!5wv0%(B_d4kR zdVi?(D1}ABngg{5m(trZ0X4@1Rze+O`VC|W2IkzGCBCf}AZHDiP{0zNOlB>!nXb64{`ykxbaE&=s$ngo!DO*r7cT{{SY%%U^Jho0>%7s4@~%# z_uzwanhPp7%a{90M!D-KrVUr)}sDJDdQidXL5Z?a#SacQ~N~1b_=YR?xZLK6EEKLi3!b( zV`&4^-@wNhH)vnZSlAFZjx_RAB_ZFssO?-9s`H!eHFgH5 zwAX=dm!Qx!o9Q*4t5C3Vi)|@r|k)-5?|{FYmV5 z&0CaNe}_;_HCRY09;#~GKAxSdd7Q7QN_SH!c)p64-mJp6VPd?7kv`PQPgZG@uJUKA z!j?h;>~r-rNtbY;DweC_z+}Y*j~SL~t1A`DW49X(%cHqgUk{$7Ios-=q56Z9_3P91 z-9lgASUjk|gVo2TofB>g?M8_^x{}B5PSw4Sz+Qw1Qv=f=dQO;Q%;`2{kp37TH)sQ4 z2A{c=@oTwbyVkw(I;|jGlk=58kJ|7(xKRuxFN*l?dyG(@)^HqG_-PR7B5?<`WN*X9M%8ltnh}!p!VS~)U#$lG3m_Y{d&*Fs(A2RVd z_EB8%zBO>nSGCtE#jJzf(4gfr#7S_SXX^l5WtV}W+M#NQMS(Udg+OJOlElSo!}eS5 zq*~jn4W+Th(;yBD{7$s!PQBFxbP%`Aru;fYMM7uR*6%FT6YYR#{gv*=wg*Hrg!AFA zLF2S=4%J>le-b0DQ^9;r4q2#1wovg^31fE4BNLj9GZ-Nqjdq*u7JcZsVwxK9Tv5v_ zIn4=9N;2ewRGTHFXf3GHUMeX(-Q%xjEd-(3Un!Q@31lqR2G&!W&p`e<$|sReJmW#~ z$^k#Jz@Cx;Ht`PuQK-TOgVrb2cozd^t4!iS@{;n*+dsHmPsrTTv-?}D@!tnjqD|r= ziOngDfsFi=egqC3Q6FxYs<-=n8=7wcP=~eFXS44UEulj@@+-#;)_1N5; zQ0@#dfAi>?Pqxb3M&^^BY<@yW{?OTQ?irG-0I#Ews8PO?nXBK7Rm;GFRO znuLRs1+-M(O&Lo}DS@N9Tpkp>JhR|cLBY#23SJu&yf(Aoi9x|@Qw6tjIbf_X?{97R6 z#mCWD;x9}Vt{4S0zKfiuSLJU}@T{Y7MqSaERP)V;m$&QGd9~xlJlGWSRp6b1CE-D3c%|L47jVmXp!+jCLr+O_cx`90^2+b{=e z-`IcZC#8S-ID^{T{we;AE&x%T^oCxX6aA%px+~~5W8uo&8Piv`9Jl$r<8yL`e;LnP z6u>sPy;i^}4MaxSodW^-qUZqfZf7^NL~T}z984Mh$XPiYoWq}xZB zvkxt&@+t8SkAOWA_~_Pz!fTD|dKew!%4#0}VJx*Y7ND3M8g0dAe*C)JqM0{z=o{Ub zI1(PE&)t4rm`LmlXoUjD2Lc^tSiOoyb8UN`P+SOjFTZJJn$MCPZT>lz=hM2_c@Vr* z$r)M!_K}|RWPl5QB`Zd#rj(p=7MKp+W5K{(ieA7)%>LcJZ^$$J3;*%0B-sl00l2e< zU1?|f7J~W0{}>#5>S6zx#x}P4>J+C@k2ca+W&AI>?yiqB3kF#$+|@t~qHf-<7LMba zwwr1LzNqA?*kIc_RK#!mgE`PaHw!9A#RF@DI}Gg&H*qOV_E_6U$VI5?G(Ap=b$FIJ z$8@`~vV7cz=GJVFZ+%w1;zN7oTP-e#K8RLwtL(^TQ521)K_hlzqGFcElK6;Y$vty! z!@tINnFX93%WBsjRRyx%GmXgaxm@Mge`Z;qpR$HUcK>PYVQ*IHKf)YTkye-Qt@})!wBZReP9qr}#at!nk((?<&e;Mm7 zS1*q?O{2KNqjri=EB2_}I04kI^QiR{YJELwl1Fw7o8EuN3tuBZsJi=S;MrrhwOW_@ z$1tbIu4->Kvy)MDld|CSrz8tjyBVX5IyHZ%-3E+T8r9LueBLub-sX(Fr*~E}tKHvy zUaevsRK!QOd+90~Mn!|7=WXO_;hyw&wu3Y5`9X zMA@rL2KEM+m#DX<=B4??N+)Y2sCwXv7uJ^#$Tjx;t+C zwRzwL+LwLFCQW-5SI1S1q%AC=sD;>j*-AjxJa@nxSqNs+!|;O@u{_R34m$`$Cf@-_ z5!E}VmG59%kJ-6y*JqJ-BF8KSP2^*zoFs9QyzZi#JZT{hEVDI%8=eNbYt8N|@lVmR zUL!1?ol~zX_3p=gn?TBrWYAhzyJWhq(K8)d4)Ys0x73Q^c7JIl#}IQk)H*y=dluPd zJy*`&kLt=m)dKxKV#-R3_ExJnk%^c2r(Qjs{F+g1_g;U#qdA7{Wkh~i?q;3$55a!{ z)S!xrdCpeTL$I09dS&$5{E8u;RpzdBRU_2Tye?%s^zJ`oPFWQ6O7eMKk5L|gz)Q<# zH^0glBky*``zmXmx=B#`qgaiB-1OuI6Wso8Nb3v!n>CTwWJHKB3xwu#CBJ z9#TULND&Gk&Z-0{>LKZLH1QOW)t*6c4?m?@!Om+=38drPOaJ5~o`x419^@CJ zq+(S;u?C%ViXu%jM8H*(d1I%IZ}&vCJ6GB9;!T&(?k>LFf{e4|M#M{^0@&{3uyuPU zReGLEP4fh`LFQhD`)$?F4chEEk3}xNQ@4&%-OD+q-|2lE{-PMV3qR%7dCzI*8Jh?4 z5lQKuy+KCi)$VlAD;-#Rexfx^dihs+UU~Gh3S5&+Z$HP!j_9h>J?nm@7Giz12N8Ra zu#@hX%Le_-GRv%wd^-pm?Xl zwtlI#UiCq6X!KPQrmcsg41}EJ8NCxOhWY~- zAox#Cc*(^m2N9&jNOHz6NQ_14WqvU#Jmos%b9|>;b`Qjk+y8os>l&dj=z9LeY#}+T zUs8bUjdWf2IQLTMP>R|vhlHN^ud`S%woi=nQ+dbLbe27C>QyESotfGXrMhTplw6W3p`ZT}ald5Q#0OZif~Gpr)?xA%sHuAUy+g+#_* z_J$-MB>t*7Yx{~|F%}8LaPgh)>|oON*kNgDTXHS*>wH~i?+0Fx(CL`_QmOIX55Em+ z%l{f`FT9Y_-$5&=t=W~7?sqbM5_45)qOY`mJe71`l}Zn*(o4QlrrX0ss&tns-QX+D zQYG0;sC1bsjr5hq(^7(aP|fZXU+^In)El4_JYEIQ@&zRXk|;GZ)BW?fsr_~7Ijjp4 zZ`UPOyE;J72%VlXe)Er;U=P08ZGfeso4aP3E(j16NPCJ~M1Iaw{`uY?kfd-Yo>S3h z(-T2tZtf5)CB6DM@s~T=s`kxSB6q=l-$z`;r*6KnLUmT8j{X=6_9DoK#l2A2RCLa@+|`z zJrsj&QUQ(Ta!uXcW=TkJXuCx~qk5y~eHrvzQoJ>O!!zhP^60F5ukXX-9mjLW(+;fv zTfCv85^b15vWv$H|8|(StX5p_w*fkGFg<~xbKl}P0N<7bF^A4+(mFBbOz%K&9$(Us zSP>CcS{PayjH>5Mr&{WsvD(BOs+Zy|djiUldcRe?p$f&_uKKou80A%8xr_g5;^)l> zbA5o&i5K6x--Kp2>~AK1bYVL=*LP$3H$7hOy89|Ms#58z3{aJ$s8Sv~HQ(YD$-=w) z^DPm92T;U)hDb?V3RdpNtF6J4RlCI3-d(kS2P*O|Q*=F{N`+L);0}B5YTiv5{G5uH zu<7uOcnJsJ#%|EU2;{pR-_lfPw-xTw(9W7He1Qj*Mf9n62l9vCLsmHzBic(Jdl`=b z+y4rK;_g>5%PJssX-5+e4Q3>^lE%A%ZJq)!@|VwNupd^XeX2$T}h74bR``nqz9m}UD#!C5cX-QJ4C4p zJY;bWR=Y#SXq{i-&H_M@8_WF;&E#>j)K(y=Gt6<;zkZ@qQvUVG>c7#)>}e)v=Omhn zvhq#;3zR=uY&i!975B-CO{gBcLxAg2n{TCE6)rL&&T$uf&ZpEmIdP$!_52aPrm>eM zhrh@oRJASyVGuZ{}T_YRvQT;*a-cUOjT< zub^;xzU>=qR_@*+IV(#wW8vHL832imGi@LWwa*g$pZIQ*OkZA#EXyz)7@xS#G%G!E zEHn9hAssKiR4sPjs>LUBlP!M8EN{Bq*Z<~ntAC;DU*hW@p!!X~-9i%FPqoBZ5XrsZ zD;=y#r}|1i?nR|He5Fvv)?$b%9Y>`s@$sIi8mk$(z_6)PHDZ&oEGOS>$*<*BnhYBv z*G^wXWLGMD>=4eVroD+AfMAoLjK)g-YJ9U8G_;ehTlmvZaCy+@)}2T$AxKo=K9b5~ zcqqrpi6gcsRCA1K(oW4L+Cj2Q6`tk>d-$aad~r5a?Af}FRss%EiQ_5J^iS#Sc%``> z)>2hZonZ@2715Pg5a}k9j$#M6wgJ*Rc(iI3i)@N5rPpDbZvo*1{7s#=s6(&JZ=Je! zw>D^Y&Kr6(!n*RFCPTU_;jxOMe+m?Ov#njh2gwI0O$*kIIK}D4=-!m*QzxmbZVab{ zUKy3ViGE6&Yxw}0R*uaB`~LlYN;GKQWZGu%UVVA=1C{@T{KNvAk@o$L%Kx24>T9eK z_nHcH0AOJEMH*MrbJ(=-uR)PJRD}4)nGT`eU)KjSwml4g6V^1XeGTXc5 zV-Z}s=7p`(J!KzD5f@)^Ni5QG~Vj&)MSx?>f8=RQehg ze>J;L5F!nxVaE#(*~Lc6y?nQ}`smE)9p!3bsk~2P-Kog-D*HLtl>VB=y|nq90`N}A zH8X9$(7-pJ)2ZpLfZjAvq6SXq25r!nq<5S&qtaOaJnN4l^C52EA}y!qkCEkh?ksE= zi6R?8_=G;evWafVZ{VI`6lqHhbJs89mQK(DB^Ac(9z79*-{)_PaZ>*-9fyPsncmf@ zV%#4&SpV^Nq0!-IXjf<#1q>nP{_?RCV0$BSVew5UmQ!EFeqbmjJ~x;pIopKyBJgf3 zHt;*-RJ|W`@aO1C5OZIQm%)i3YqJt}8<1*B(`R+>6mg@?3mt=ZP9ice1ChPoWXc`` zB8lsv1@~9JP4He=s(*a@PAm4P=FgB%N+(f}j{I!kgu?K7@-Q|OxQ;+E`jIRIUp9T3 z9?ztG`**L%lttgsii^#}ua&r9x#yOdIIKI9y|qr_3!*FgM;-Kge2nQ&u;D*9YC{-# zC(n&~Wo7f4vMy~3LbVCHEpLpT)I_vOz4Qk;?p9vXBW74OPTbZ8ca!jtg&3AnSz9mp*f_$l^E~MR$)910U z!=0mSI??o*APKte8rl-gR#@+BkbaoBxw+}lH2(=+#wI|-h=$% zHa~Vi;w`IwsvGdLCL0g;mZe@jbXuy9+s}v$Ttj( zq%o9Xo=AFm^0KM-qO9@`_9)4he?&%|1HZgg)I_MMBfRB)^jDd#uheW!Fs43%Bh#ZOyGe@v%#|f9;~G z(<00BtBT5F_bML>>lKciiTq!_|HAUf`WE4?<&%_DU`aD55!uj!gIA%#`XgZS9Vn@K zi>6BOGgV=U2TFD}psEo5dd>9Qs$-*b*DiRjq#!s33ctT*dJEzcOaq1R^jMwXMBkmh zvPIqHHIPE(W5xAAl%J{!?!ez+>DWLQ0Y*a4JG_Cu{wOD@l(@6 z8@I^UE!KXKq&WFojkD34TM-$1ThZbFKm9HE|D?Z2j$dK6-br?D5$+VL`+=r=PFp+u z1jJrdr*X@t@g3&oLgeebaGS^!P4bfPMS~c$?a#|3z}%{<)AQrH)cjz=Yko}eLp>;C zf_VOG977`wv~LU7_w3uFv;Ev$GvZdQ3_H95JFqM0PEejftcK>nGP9m}HONma4`-6b zc~E-32mLKrV^gI?I25~8y@h>RPHYwab3JRRpI^pIn$6{%t*EA7czLQ;S+hp*>!VQo<8?rHd`q~_26)c*tF9QjF&6Hrn^ghcbAM-H3=}*9i$)2-GvBq^%qa+ zMOSQ(?YLx6_Y5;B`a7p$w<$h4SK}1jqNae~mC^YeYlUh$@EeCCGa}{lyHv4VKXiJ$ zP4);H3)S3DI@7m^H1yh-!rktJ9vrIOj|{Z_bM}|o%GqY=ntu5$!d(v(pVCV&ek_^tl~r3>5$)H>m6J-uhfW~auOMV`TWqUd zPnl9w!ZOZi+x3n1Dve&FMZPrh-RAz$%i5Q=!B&DBc4_4O7Pw`1YVI4o20KT;uEf>> zVX}mMcsCHj?WTB9ufxG%gS&Fkrr?38LdMs{&bBcddNpGfMDVEGy~T_ApRd;8?yt|IwO-`*yjXms}N zi9?b{C<_K+{;c!!Q1E+r_~Ab8(*cI`ivlv&1DPZsUjZC8)2;s`kQhMhigPfZ<1Onb z*)X3XQ+uc?hGdPY`{fo!0o`Amvj_Z#LkCne%SU_j#nu2m@<=d%Nc;wkp$*`8QpF4! zKdWyJj=KHwC`C90--kari5`%Jfv7mf%M%=YHoMCCW(=skQY33W%euArO1kwcHJVEC zCn|pKSF&bt&xKu1oZnhvT5`LkJlb+|A)pNBs#n}}U;9DTmIs;Fe`9hLm<_$W7s4Xk z&qJ7f-3`o1;cOv?8#YlMYmj??T)@TAuNpR!=H4Q~Lcy4=i1!5fPOLRsNj3S{8|7SA zTqQ)}g@+5(2R;C|IV~?H$(PWJ=*jt={T!9-|NXMw2jaURbH>N|_=fc z$9?$P2F>1f2sQRhys6;r5Al|_;s@Ul5_<8%Q?7WB_|wngZ~`mK#id2EVG4N9C(u~dJ`qi-%FA8<7)N2&3uu;x}-Yx2Sc zemSmI&i)Hb=anKd>0lDHkEu^<;pE#E!SsRYw$niGHT%2fiR?*#uu=4}1X+&$R1tfv z%Q^wZ4W_-D*&@*#ouSZK+I$>Vj_aVVp%A@hg&U6(f^8y+H?Y{Lj|0ii$KSv9$Ey9j z`61XZ`B;y8FocobdA82Te7pwkW2yPN>7(-4Kn$Qu!o=WO;hOPoVIoNU{q~4-p75)K zChZ3XcK5*eZ_D*9I7T?zZ+XZ4a6hGE;|D`nY9A1K!>H%AlgLlG9Al|KhPWvY#_I0z z8mmyve;Apv*z=+}7xfR!0T3L4wQOcz2X-3oFTa>08cjRL(DNEFLlZVZgyL%btW&tI!^ZJ5vhJwR_&mNUhLqJ3FwQkE zOV3|!pz)ylW>*F*I672w6iU4XoFT*QOKNG+oKc^Pus!b+1!iX{tgsNloaXq)XKOEk zbn?h*@4IQ#8;?;;(8^PGqsgz+2mQe+uqFI_uJ zv!ZG*E__z=JuGxhS(j_0k#ceKE|K2+DP1$G1=axgC2A9|Ec&W8KqSjZz%-58ECd6| zF;}t=M=2!Z4LU^=nT9Ogt&uC9UCl47{6xQ}bn@9M<+{y8GPjrY$8+Yz

%0l9#|kaw4G^@bvM*(#Qwx;hV$_R0zIH^gSf~U7+s)>F+#!>jH96o~=V} z;;8g@3w?J^f9pzBVmH2-?+n78>l}n{cGu0;^j_-cNX^Tq0 zjR_O$2#|a?Z*SZjO(dR0B~7q?R!@v02F|6X&%YqZKRC$u=Y&@Tg0z$^Kecu0aWX&6 zZjU`eQh;S(usJpe-g8jg!#gK{_u12`DUMTq1@L_Sg8}3>gZy&K-$ki98R$8$@v;EI zJ(QqfUdWdJbuX(YkC4`obTH&X*987xHyRo-jR&&}iQmGANe8{j=!Wjk%1`sG?SS|1 z%wHGlNzl)c7O(YbEkiw-{$9W%g0u;{OKw8Y2kY~VqunsY7`f; zX?&o^2W)b_vB`VYi8J_Nd_)*t=_0jFluo?wSrUGm)3=jgHoX$mANLpk{Y28PATj&q zJO0G$5u*gC>Rl<;#1n;XXhMJ1E8dq+T%^BZ$?6ZP#WL~-PR^)rdE1AjcDie=ZTnBT ziRHx1fuAO;bvx$t{4ZJ8qi^&(2A1`+z`ez_T~X<;3?ge)g4gJ*Kc(Z|<0vyHp)(rw zFX*>h7fg?({79u!F;ufZ*pya7l1}_c%}18AplVN)V$1K!k5qn;d3!QbkNu|L;=Ynh zUy_~vuVng@+38Ovk??n(4e!BBYX#P~#^uGF0sl8qz6e33dyojKfx9B8#`NQUO!fP>u*YIeOFA|~9@hoYhU(FU)SSc` z#zynJo8=Yvdd;Xyfk`B@-7ksxyy6S<* zjM7T)3;4Drg=%_IoNz0H>zV7JTKVBJpaliAtz+;8DL{?M*?Ps}S}{Y>FJT3rb1p~< zzte-9ndBs9@Q*F-ZbV<}{qhUx{h#3*dVj$#^u8LZ(DMn@MohQmk2~xXc9#*FcPIHu zZ>iFHU+F+qI@MQVIZn!UiC_0y1rxDS7`1H?Ws zP52;Y{t>INR?K0G9q#Jx`cY@pIQf1x2$9L7_9g90FKk|B%Z>EqK%bu^QZ%hf@uR^V z4%{flL5=}V%h-T)z6>N}4)Bdg+L!Y)koLtM{y{47=X8m4((fWk_7`EKQSzmw6lDjlEqd!N}r#7wOy?bIJsS!C~ZWVLhCh}dfV zp6$N-TC5(bHP5?v;aL^l<>UiP4(|-Bw=-6+(Mjf%{y^6j@#K8Ny(>9DsaOKzCEb*6S3GM=90bEb*bsd<)(-!#_hpgx-ftPiTc z%;=Pw|Ecavdx&HKj3DOB63K z--2*Z`Zz0X4@^A* zJEp5%BKn_1TEEGXA1_ioEinB3j6rKDo#qGG3*GosxjBiLZcn81ZGE~-`GJ3OcijCl z^0VMHYTxj)_k05UVmoZZKRo08mM#3n znK*I;FF~n_91riI2Mxb0){3K|1I~GnPXEf|9k*~&gbl;wiQYHxcPQQRzraXQ#oplQ z5bpp!8`b34UGcO#@C;ig+i1I&55wg&%oN-4cw4^b;oq*3;hIcLYHHk61ntLS=bC?c z`$oU8Ep_iYOi&*DSAc)|H&}A^=?1I@FL0@qHjAg|XKj%bN}l%@w@*zl8ytvQCD5V8aad)wo z+?M1|k6FBMN1m^y%I06euB%~3hdy#YRxzVf~n>W#dfXL_@shV7&%&Pg|P3fBV1vO*7CiWRR zTSL1UEx)`){WXuL>z^0YKh@X2Evx>n3NniY&KMTGtvvp(E;8b{pC7TUL>(#}>fLgt zR6|Q0*x^ClsAEAl4Zpi`yW>3+e#0p{)*`ZQ4+3RTA+oMrI4n^YFMP3qVL+c-h{~iP zdk1Nt{)0ub|9gaLf0m5MVBR0rr3ddmn~kB`n6EjPKMldd%_Y1&F5t5`8%$gy4rC?> zTO6YURyp6-uK63eiE?XZ%Ob}F4IE;*x=pIiBzlQm)3Q|ZK6owE0^TQIrYB5s_vCnZ zd;dXiXx;r9>w@-O1JNTSWjb@pEIT&n{{Ffh04$W7ZNZ?*v=^L$MRmuGZqP*}`bA}? zYyIk`=0Q+W_Q{J-<9&Lfbvp6oD)prXh9W!Q4W8?Z(MWJ$EFVl^6u;hy}VOwgV>INkPE?Ok@f9@`zrCm=j_V0 zJosPdmD{GfByZz|Hxc<1nv(h$smUffvq4U1$dmG>aMbP-nwvgN+EIAH^ksYM^hzpO zP;M_jxM=g9;d@p9Z1R3P+(L9}joJxq6U~Xe1T%G>Mf)v}xAF%FjxNQ*^gr4T);K7x=Y9H{TS<-##>ow8Lr92dUk>8^ z1*PFY)9&({-h|B5BQtBGGu$z!TFB~}bIB~lrve7#bS5*-baH;Wt1us?Y$%}MVYpfU zkR{tUp`BqvZhPgC#%m0{E|s7?n%5XYH7AkTKROy2v)1kRIL^XE880)Gh(;Z%*$0rW z^`B*@v6~H{T7_YERY#i%KspoqUDI%~LYyP=I-ck$z-x<3vq$_6bZq&Gn*g5$X@v#_J zxu?^ii@SE!k1#P2O%%vP*ytD+Bi#&TY01n#gnH(u$^dxq4;Vu+Q%qtZt-mO0;BzC>wb zi+>0bVM`i&8<^eC0Hk}~gTVmKfO@(Q6c`z`kXJ5tF?ItS>r-;6<=_CGh8nMLedJ)CWXU%oPuxThr0clpk3j1wIi|ZQze6Z=17!JWO9&H#g>0B=1!q{*#l5Chz?S}^-Y6aAy>QoFM4l$wB(Pq<@^}<1I-aoy0Po=R6C??u|y>vn_BK?qAO?XQoH{Bp# z{o8(2AMC52uIfXm4i9DWXM2e{D3x`;V+(zUxM6w+B+6~B%{`m#YEniC@9!48_wKja zc)bOe>ppXra7>WAb$i!DQ?72uL?@Z_?IV1u&obZZ*6kAAx-Ci+GU#59kpqIR|7>t0 zM6X~ixrTg+)z_ZkynJSEY0;M)sF9|dVr$*z=dF>AjFhA*a@X}SRkZ3we2F;!ZVo@g zsNB;Fg4}teg~z(rB={!~wTz?m(#VS3s%JS=m-BiQ9QJt17k)_ZB@8i!wGHqBGr(keU8| z&q0QU?sx{vhWBaX(sz3PSi5BGHHpW;I;r>a9x4@H{}dHr0d{Ys&z}@SOsv*{jMKiV zyi_yQ9I?aye?~Ua;xqGkWdZP zTu7>08n(GOg~H8EM+EZZHK{9N^6)?fzye*coMY|;?r?Aw_n$`X)axxP+-2A5WfU@Q zI|@jenk(F0q=}>(hx@-Los+av25MdVD=V~_@o<$q;6Czt@EwP@fFTLn~s8$y?0}_O*+_D>>OmvQ) z@I7E$_bB3~cG^u(B(9>Mr^m)_hUyO|g6fMRCF}q1;JJgxb94s3zr+*^HY~I|f>Z70 z@KpEi3r6I`y@0g%0+#-)dxdmbZ>sj~+~wP;Q9JJ$NjRh_u2EC>LoKFO=0xeMrgSgO z4f6Gds$Px9?{rlfvUR2Qs-!Ro8S>pTZ2e#_B~jJ#afzz`gnQbJUUx2_q{!-R+8OSC&V>Ce zsNyblVH@I>QmyBYZuL`uWq~Ts+IqMVU2O=?ETxNj=#;UJ7hfqm;21i;1!cM;AetId zK?Bf}iuz=nCnWU`e>psPSYTd_(?vZF7os1)j_xibgIN7krD{gHaVC;^4(yRYToM9y zvl}T1A|>h_HyEq9{haCE`8y6b(RX;f3Hu@tSnR68=CZoNwfWdi@ao11OuTUC38vb+ z8RwgI{BMxLt-0DH%gqE~il3Xu<-$EqvO*NkJp#$I=0+=fq9JBW$G4D9ZZRiv7FL@I0A%hu(1;Yp`iJ-5F{ z@O{QtIGzQL#5bRllKt!J^Aw^Y{z1V)pBG&57Ht$%vnND&CP{gig}`Hkv0b?z!JCRv~5lmikWuO0-s~FkIO!ePA+1cp!pW~q0iRubLK)Ta`=b49%P4~4%oFN&I7@b`A?CXeM6Rd*Opu#Y4L0t>GWz2?Qefxkg?=4;q9bwln z631$RN!j<@lmo1vhpL~K2~fQFGzDXsN&oE*j#f~wk6wH5ug!$I1&`n|Gkm)>|8LkP z|3C8uTLAd~74bih*d^z8;#A6K@_)SL6}>ao1J;KR^>fnW~~>`|4ZhMyS8T(1laTcbt zKraBUkxcZ_t0w@?bdvz%AaI23n7ST7VCtDPKW3b}&_h2^(EshBUoGfE4SJ&{SyGJd z0`#Wm13q<~eZ?PoQBg)-gvU{;*xgsWDx>0JM3|k8X}ufC*d`|@p+X?+i2Udm42fI* zq3LxscaVzpf%&(_ZMw&6kw046@ox001n)l|WKyj%Iy%QrLo_~aW(M4~2Df+5H9WlK z4tdSM)|v(GuYWRP9wV&ZpcL+&AbxWQ#IL7AEF76e!~H-!X(u|$*ZkucYR(n>c=1W9 z)@SQ#Zh!5!*1DIpTeab+z0M|bvnvM6#85tx^Vcoe$1r+IaJ9xZJ>&N?GkyB)N`KF{ z_tDO@Hy=EWz332PxhIpk zESk{f!s{=80$*++!AxA237?fQ1Co5Ow{NeD+S5`5UAha;&cai7L?a}6_FPb)q%0Ur z4enF?kRZM3dyS(#rghP1dre)Qpw?F84V{RRl)NgHL7!wi5#plhf)>`)0d6fiW#Fk1 zGTA!Eef+Yxs;b=Wy|;~DULpOj5Bk58`VU>K+crnVRc--OL;aluxTJ6?z1Z8Gh#;N} z;IzWYmp?`IDguHnbv4v!de`44PLA43g?`k!`@v$=+$K!56qjr}OGw*dz@DB){CerG z+RO0ma5VTX2VdI^-qa3^ucIfycqOO&zF^$ckgZ>)sIq)ziYh$=sx-dje1Q;6Uh-jX3?v=2C3S%;$c%=mWk09~x?Y^)ew+UOm4~SlAE&LKW-FoT)B2w_%tP#~o1C4M+}{24 zoF%i*;RS(Yawqq>PcGD>B3w_cWXGY?a`PESJL*O}QTLb2Y(Hu{&8}=Tbr;>+LjpYs zrl}Spthdn*gLsvOy16WJ!{|n95`A4xy2EJFuDI!dErWfBaX+6q(c7=$!J24r3BdKs zkrTMKz}>!3U860=Kg(M$UU(4uBC5fDQ-_(^U`l1IKO6P)@=9a5TBg@=C@R;zC*}P2 zv-Hb-wSQh(sWZSBbt*Xn#BLp_h~31hM&gZk%jCub1?{?&#!t@&NZo)u-2lq#!V_ma zMb|DlUrjB+1nLG*g>6(jwO|vRb`F_W2WGCTp%tntKmZ2Izv8RQ_;FscJf2SfV%M8px0NFTb-KeBpW)mx7-cNs?wC8 z(v!Z@xps)Z)EymEx}D@w%(HgyZtPvMY7wf8`#UWBqv`M}ce4`X=kYG1I;Op6ys*b& zbB#DXz_y>YZ1*2|y+FN;7p|!H*v;=}*wvm&a$;W!dcFagAH6$x$RtsmPRG@(r+|A; zOz~uaAGDhR=)N3k&?fw*b$S8+_}Asr>x1cmBGOza9BYr7SNpOkAtzJLKlqs>I+m7? zlZY@zcC4aRqTe%`sI-rQf@LlI1oS+b%MAiN z@?<~SA9>{^XtXNEkrtC6UUjiIiB$jb3L5AX@nT|v<%sRFUS+Q;*H zHG`@^gJ)W~A9`~FJ}$+~(#Yl>IIu3+zg za-`u1)!f>WUux|GF%FmP@Aeqw1{mqCmZHMT=ZE<3yLi`?m-7nX-}7^6VmTBl#n>h!Euboxk&aDEwx zlz3tHn>CGu;>17u{{BPDJ){h{yERO0+&rn{4Ru!e@K? z9?}w z%|R%{YVfZ?gYW1DT)gFJhh)o}(}L`0$WF_fM9k0C7Q;P|uD(?5DO#dN8l=K~WpAc| zc0u0Z%Dcqpt^UG`*q=(Qx3#+}?u;Hn-ZKL#u8nI&ePg+{r=q zqsrE5AKBEh>Uk5niTzDfZ?UHRHL2f7UL;qjYh$T7^7LbVj`Rm$a*o`|TV%rJ^AkK1 z^i*T1IWl9VC)(Z@`P|(sw{QE@!q@`nnkR9aCyBpnjKno|eK=k?_5jbfBLnCk{SIND zKzR7#GmLuIW7_78W!EY|?*$6kqAa}jx7&T8+WR!E?zWt*);dCMLw7lY1^Y1_^{jRW zH6+RYtu1%Yw((tE#p4me@nk`Zw>;wDfb6r-ry%=>LH5DQ_GE8Y_3!j@m)Oe~F`M=o z%y07^)nG+5&>6;P*^Bk%nu^yMz9K_gY;=a*9`z$Kg{=;(> zP4WaTDex0vz7h!ZQP}D^&j1Zdm_$OSMxXGU5}qYt>CL{%{YsE0QpJ3qFkT6@Bs{yu zC)`Lv;yT~*xu5y5xKwEu`LqkW__WiMR^iibndqB4R%wMk?b?~X+(Al{eS$Xr%uBLj zmt9Gtw-YWvSS9|#6-QftJ-6xBuV25j?XCOb4YZZLb>2iQphKXX#$<|O84+hffh{H*c=d+SvTvg&8!S4Y9E@awi+{4Pngo3;mUoRJ0J+pAOM zIRD!QejPLLoBv@}{cQa9-4=e)XQ{Dm`mNrYeuK7w-<(uA?msQgYTwgO`2qd9|2O>V zD7Y2<63=W8ze`f>rs+2Y%{gO=d-|oyasTPFtbA|p&%iJCK~{b?{Wjz0vlV_7+r{rg zxdm;(e|v8Ozh_hB<|Izt27cp}AJDJq{r`gBzT3j@xu>bI?eXQ#^_KXJoc8}%dl&d9 zi|da&fdEmFjfxt@OVp?+N{NaR0nJJxn;H;B6a{ZZE#9r}3SNNdCgOGtQtwu+wpMFv zYpYhoC=iJdv1$?TqT&^2T>(W6C`#V%@65BC-GFWX@B8}sNcMT2nKNh3oH=vmoHJ+g z;QRTJE!UQM_>H{peth*k!0(v{E@Gx(kRM`~=AelsZEm3~7vgWpNna&4*eU(ajb=y#aD2lU(OKjHVg z&EdD?{-46{;%vK}^t(&mshs_)%-1Z+ zlhcZ(ntSPw=2GI?Wg;A^bqOY6L-(;;Nhy(}-`8R>dfG3%iLrJ$aD&bh1Let5uUT9g zyx!7uAi^7(l?oKJ-9x?nkp$T<>xU5kZ~i4>cN$hxqV^ilpp}^)^59;i`+=+A1k0J; z=Kg%AG$-BZj{hHj6do{)fro~%Pe}JWuU?TyA56cPtw`pXtZdjuNIkGT)OeJ7NtQOd z3u3l=xSQF{581WT-_oOjo#^A;&3d2fzB;3qiVm&?B{lqts77}xd6wS`%WBu_v9Jp) zU;|x{I)p}zZs7&n=(#-e><0Mu|G5k86aGk`6CR&<91JQv1~=+ui?`dq-xCZtrBR2L zubu4HEjuv=m?SQl-LZfTdV%X*h;Q&Dpu1)KV%s@EfY0O;U=I-3cWAJS!)qpBjU3n` z#)-qf2`;W=_z6i2)F%HtIHBkAHa`u}>aW-j&Kn1>X#F*B%Z!OhFl5$I?>Zv|5`NuXqpo#h#~s97@m$@}Qm zR`>?D1;1uIT_XJ@L+z8+E}&_MD#G7Z+9bfUEb>-e8S8#fnXT0+CrQQgA+) z**zdjDX91mcQUatWwSW={vzl>t%lLoo9nLvIIq*Ecwk!xojgmg87c_{H~wlrfHxk= z=3W?^|25BNQP6ylr^spV8AaSD2Xg*&H=uOkzkKOwbtGx52r|ikCW*&0RQqXP zJ6G;cR&9$9+=w!to@4bd^YweHKHh%c{%(SB#ikJUkyI9|zPQPK7+u%v#QNIAE8%r5 z1@+{lKRHtQRVdyf^aund_jY8ze}_r%6)9{>m)U%&|9)VsM@>UZtTaMOutGI%knf_ORyTzgR5zWpAY8wGrzuO~&z4!uB^+4x z@*C(kr|+BHjI<$*d~57F9q+9wXbyQJ{Vv@xq0QKzt2#P)OWzgPmOL^Q>)6xl8So2U zQk2Tj{3ELxI%0j(F@qnPe-*uLE#zHvl3l*-zPf8Yia_ks`k@8UFkBl$&f<@M`5{ zdm}SmN7Pj=x$LA-i5E0hwfnuGv8pZnKD~RE{=MLgX#ccc<63KlhFlUcN>B;R8br zZ)o+>+0d8xfwqEow5DQN*lzY_B}Ay+)c3a}*XlLwlqq`++b?w81C)!q{f7+-&HODt z6$3q~$Xl4y&$v5t*iNCDIzf^%V(1I)i!cz+;x%cvzn9Hc9jmMSGX zvqtcXn^XJ>Sy%Y&sKo1a`@KGDzi%}rKX0l&us~6Z*SWA(hYCMx4se|;LPQ|VcGuJ#VQ(G{r zS${=`*jc31D@v{N&d~-KUoL1DX^M5&G=LfEDpy9gs907%gNAQesC#4vVH=FEEDmq+ zWo++ods|U#`z@A6`zeQcZQ}dX!@x3rC#7F}Z6TjNg&q3SSBOKWNj0#J%mPa?>1tBX zV4*ZVPq@1MK0qbw9=h%q0Lff0b@}O1wulg|Mq%k&C-p9pK*=eJe1~$P_oy@+9NPM_ zZ8^TJ?7eli^0Jo3pD*?)epA~RR`u#%ZT!3LmmidYUJ7*0yg4JaC5Y`ze1M&U$vZz` z{i!QVN18?y)>b|joyhTqQI+3D-w4Oo6{h#iWv^V>;OVJ3U&}#`KZoXQr+Y9~#9esU zPM5o;qm~Za;_?sczdtbgu4LlO8U(|#bUmXNyEipe3%RvxQznopMA6RBIlJio$pQF9 z_u&i%sqsk=xqszlj6-}Qxi1tUSY7#2s6okU8Rz`|ke?d+HJT(l5m<}=i`*%1nql{P z9qEfqdQ0>q0hTfF=W+|EbhzU+W6W9eR0s?2n1WElqx!7^bxnK!$g$X`PQlM-pg(do zVWp=zp&Yr^&8+NCWD6%&HlIO3chKGxfj2U=W|^xN2H%Dg&!b+8NjhF@Y{68ns1V=e zAn4M-{7}y2$fScg!d3iKty*o`{wgqVFIVL^YbX8UFOlIq!)_%SHuIKi3XUgC8u$DY-_b$?5+Sa z=^R3Y@cU(!2+{3zTt;K|W6iLY0n^SRa)F?lc?*c~^}W1sCFNYX(*1>Qtu8O`ESTQb z^O-gLCpplx1?q6G{YqP)(5!y~Lo$v18E-g~q8zTVSE?D?vKqv}Qp*~_w1hc_xIQP5 z*;%c`=GN0*LF`d;&{!FBF!qk!t6&5o08&b`%6TqU551{NtgTJF-4QLHYGFdvi4Wy9 z-H1dCPdEjU*f`eHOqpRaI1Unyi>CGU_#MO(zWdlmicw{-I^2Ck<3qF(!fPA9p&IhH zFZ#pP$p|;RWzPhudMe#PbEp6}~9VwRDO@;6T?Jw>836CWcrQe?b+zz?4hg zAva^o6?<>bHwY(y=_w~enliOw!6j?ljYA4a2hqlfxPN5y6?Va!jX%oJ!FN1M2jJ75 zYe!0+e45BmNB=c?Ib_)H5|JU)B+2ecu`h4pLwd#DPd`Lo3!}gGJr6Z@qe$us{>iTI zx@@Z(DIyC)*EK+*`XdI$dXmo)KUHH3thuYaXiYujZ#A~73srw99&~>sSCZebg&Mx1 zVuroIt?$-6hv)6Uzs77S?K(33*LNKi1U888G2OAi+a& zg90EGtFT-;B0~Yg{HT06R;z96SG9?yk;Iqd#-{t_&^PW1>xcEKiVh6d4=bpO?hF1g z77IynckJ3dAr&`!P7H2g>bwt$u)5m)o{Nr*G#${ZwrLmk6Mp;e?%*k>pj-B6U%2M7JyOgpVP?d(iD zJE)yUf_CCTJL!7>StyXVWIzsq?>2*XXy(O8k{p#@-ZMUk zOlq$mc345|&Du#U3-3n?-*n1R%+y&Fjw6kW(%S^%Q=Pc9uU?fFPB1OPxZ1!!@|p0fz- zs6>J?5^`q*D~vM2kjP?W^Sq|H zPR}EFmc+=jzOnu%);uNSo@spTZfioD0-40)OzlZZXONQ$QXUWhw1rUTQE>9I{ zP&mJ`;cW9gd}A)jHaF}PnH!5}-i((+Yul7lh3>T1CQf5Xx~RledTbgm71m^C0ohR; zeE!8*)NCs%SMd}_xXFj``C5eRn)$OQ6C@0B7V$E7J>eQ=dM*sZp z<4>5M8@M`u{CSr*{)c2c-evr$_us~Ur!M24dCrVK&;P^t8|iIP>N@_^|DVVI%>QZp zzsebZes_-l!C5kFX8ajV7P)WCCCK=X|L^1PvDsw&f3eB_yEY$xwODAUPkKQp{cgPXDwe%u#+z{hk>`1O3xo$#0L zm_OjZ$UFxFemu{c40zZ1zN?Yi#{2gC`F=3fGvh6dRrCGupP27&VyKqPI+b!iG2h(? z$j!J7GgoPwYdA4)+z#8!yuHSt#vaL;vyYsSGiGZvXLtE5Z_G~Z&Y1OQ9J_d|US}H1 z5L>{~gXd=OzVq0FR{7A>vxz}X9l~#|SNd+^Ds%p!X>g6c_YJ;h?9s^fXBiO8tQGC< zum*fuCby#(OLzOzHe7$4SP@@8WBTsy9R-I;&s!DUotJLs9r>71-CEu9IcSacIrgC& zz0!=-Q@UX!{)fOf4c}`ua^pmLNsso-kwV?oqrcB~{d|>bRUspXKTouJ6_xhzm2xf9 zFC*bn5~*4J#q1MEZPZAX-cEaaUjKSc&+lJbNlyR1SF~78{|?_FuYVh!$m!ojpZfk4 zg6sm{zY#+9ayrqae|v$d`Zv^9saBPFnf~=rrLeD*+rQP!*8ib@rJW~jv`C-9Qc9*^ zH)cz9tC~%SnE6`XV%e=&HSECH*3z=fAR%R8*q~TQFR&&J8y{+T#X6#6_qe~Fc}giL zd0@4^EOJNvu(ly5vDW^?mO|N&lrzu2cf}&51(yKb|?3l0Q<#5v5X^7Svazg2| zM9IKO{1nrr6HI0wfpREYm38WNcr>+-*arXi#|HQo0sdN0y@jXC~funs9xCD>z*?yR>Sfs z8L6`T?KRKff&)w)*dK;+g02GD_Bv$RTKiWqZ%dTx14$7;vY^l0zU;c2dy2X^5I@%% zt=kd`xAg)wdr5-nxA?yi_vBQy{pIPLV_-~`@d>Xu(;Wys4#COu+DbETHGDxAc(;cijp&&$<4h z*koQ@9Q%b{#3tsbzq7-E29@5;^PfP58jtitP)#@Zu1%ICUXB`wtnvD|q3}+slnQ2l zbjN&X{MGkI#@jCZY8qaaVzkG8WZX3wSQ#!Ukm$>eZun?Dy=)r%>9LvUhJha#YiE_- z%y~QSB8nuZl;HbLVcZb|^o=BH@@`|*_$mi?ozhG+ZQbCZ&&)z!x&oA1(y!#v09tHTb6eX@8&M}b@UiP+p{ zH@%MLOxq`aBvG#tbvoTG7>N~`Mm@OLqqBh%YS8&|_XmR^Et@Q-z|hHUyaDceF7D7f zSv}}0m^UZ+?3VRmx&$Vj(j4cx=MzKgSU_fsSa(rf2ta{?)POAiSh;<3%E=%qHHo>} z=B8WQ(Lq%7Zj{+>!^fRnm7FmoWsN-EO$C9R zw^MSDzi)gw@q7641S8=(w?GWAZ2kp8DG;U?Ag8 z&4>8(q8*}JdJW0spT)|I8(WvWh^69duHTC8mh8!FDy^IJ0di48wFV26iwhOr_sNk0 z?91(3md~foj5+jEd7IWewHI7q$r#qUtNM$LrqK<{)Xz!h#qP5)*jKsEn7l9g@V+~d z^HX%|kMKeBAgkN%j_>U&x=IE-(pJMDX_(RtCTE%t@WrU%`cpD>wn-q^W%!>zgbDsg zP9yq0?E`UBoBQ+_9uW`f!P9k<_NwE$&(twg36C?Ez@xz4be4Av(K4WmE2C#stnw3i z3(x;Sq|>UCW#*q=$q2FkU&E7S#%OibM`FoW{(#u)O0gav(lhp=PT4C$O*!xB?K7f3 z6LyLYTM{cy>DGgs$tr#@c9cHiuj`Us`ies( zSuGvbBYWv57Ueegu{58i!F7|Ayl#bLLj_whFoO_&Gf*$?FnKa=tm`|0$&+z@QC}+T zY_e*YXj$YQAgi(2%iG+qJ>akLBGW4D@80r#dgU+TofU2gj{%qB50wHgJ`WQHL6m}B zjMJGy1|y~^RwTbTRbCSIS54<}{}a3@W*PXNXRiyx^;aJV2BGTrRNOK-yc0f&lvv@p zT2O4?{F(bVYr`ogtB;$kM~F-}`&~&(LeeHfhxLV1{*r!dc163n;>G*V>N5;}&s@mP z5f}TDD=bBSn&(V6&BEmc=M}h#G%07Gg=Lf~EF*8gg7Pilr{uMx`~m;1yy&%3^pfE9 zsYHC143SFF68?T19dEu*J#V^H*JVituXP>Etp}mT-|^+B`l~Vg)rP9yHwtSCeRduR zSpwWG4aqz1ZiN47r_+Pzo}RLbvdCa-nRZpr#VB^l$r-BV#D9sdL)2`dwXW$BPuIqD zQ+7TC^ws1$Gr+Fl0?6xW{KzIWmIA+1mdG5j7SYxru^H9U)=i4f&e-QNaX~|{Du)`h zQN|b@YHTzT{jyJZL4STl5}(!*1l)9BC8-9}dwThbb7P&nhOOP)zxQEtH)&~jzqZ=K zH%P3zSLn&DYA3Bb=h-K+A6HO(h6w#>Eh@1w^)?7d4v zGPEKFQtc>j!S?ghvx6jbEfFo*pSn|lkVep>o{dC5BbbB8ra2+X4#IY93G2qNZ#cFa z#&?QXV#EEc)i2VGf}2g%V7ETZKiqn`0x)In*|$A6n4db5>~Zc_9G72KOAa}0Ted#R z;d4~^%tBF{_(Y?O z*u>R*NTkk_?j%XOf>orBQHux3cc7D>SF8L);W>N)iL#j-h%Ep+?j>hvqm?WNYdJO% zC|&y}(6)it=H@k8Ed4eDX$A{RCj%YT+)~xx18c9}BeyEw_I!Ca#D=DXSX2F7jRsY_ zhUfW6Ovv!%m`1N*nwVg3Rj9|cyQ06@);!ek2bE&v*}^a{3R@R8u#QX zC#_$W<>{N6rfJ=fy3IG=*dbdAYetYe&b@@P$6<|HpH75j9NH7mKBw$+pQahL&OJpL zUTb5}=T0#^_hs;knDlKCx;6OU`RexSjwGF{{DHZ42uneeLp9~^v_0@xVr#bYp;0EE zHTlT?J83OEGK3(cK&^jIveM$0TDy^FhQ06n9wzHAc*7`6g`_LJ%O)$v0-|t&M(FWrjo_Ff< zyyUz5?^kqr-mlB^+w1eoCvu;q|7AU!4tYW+yX2Q$a^X+Kum7Fm!rw z58vwFuJ6_l&VOyD{*;{h|GFg)KdZ0&Ihp$Dd-A?p|MtzPpWIA+`yRCa@Mh}w%Bg=$ zetnDKAdAv)UDQk{a72p6;0MkpW!10#@_onb?Dy?*zc=dpv)Az*{E-7(n)nq9%z0wZ zohc~AuW9h3*#fvh=Q<>O z4Z*gbM6u3{C^JVd3o0Ak)3VA;w0MyGtJ5@^hI83S+xV`CZ{|)#H$& z7@6vHwP>e&MPJC($cfJ!S)BWV%hJp8pN~vUp5(BF1oMyexfhi%-}ls7+zTlRzaO5# zMcyZRnJ zu19*<$M-OUpZX^~0?}*s0BgTqsB}KZTdH!~<6yv;yys-qwEv_?_>J>=kEn* zdR^gX_6s`wrS&=fMMQC=%mGqA`70RCJ!Ta%iMv#*%ZErIF0(u5_cyb~8rLrpoc>x4 zjn5%}xg9Fpp0{&yq(nChd;V;WR7u`A~GpFcN8(&-) z4$VKpA3ZqYe2cdsE|`qc>@j4-!N!CY^Q=bhUZUoO`c#H4V^#xq4{C`W)*+yHi0Rhm zTM8#y+*%0@98E)-_XQd77<~o@+ZMTO|xvl)L0*=nz;{>k{A5ngx8j88j)4E%rCEp0&C&mY7L($){K|cQ71= zzd&w1H~9tLCy&AIUhNa`Y+ry2cD^>Y{+94wFJoklck=Vx>-m%_#11-}!yu7s+U$7` zED$`ykM(+PwMCTmGPN#ey~{|SZ%q)tPscV{-%{rwu`}~2*R}69x4u1nO`d!=`JcPK zrEkyszRCKQoRxPz%b)-0JfE9-y5`5+_09XY)QX}Ej%zxF+ksJ`a6aLOioE4+pg3AG zi8!}TAB=v1!lZ3Ve;-yjov+#}5IQ^-4>%*ULQ^g4;nIA2uGnmbo$oq@C-8!e39P7v zc6C1%0=RHHgTkgk$`Omc#iIeqwjDZ?l|3J3`vJrK?8LWP>z7xf@vWM=BUVulML~~% zc$N3G=LWPH)0`ltIg(*zMY?YW`|5+AH(Pwq!eZItx8jTY;9nG_RqY88SoORsaOuTX zzpv^Kyrfrg4oZcB`JSO?BtiC5?1hj~f=boq z?mk4yxg4yqJKV*KjP~O{rZ1-h(GC_3|8N@JiPBBTAM(yz8@@g04)WwPH~tz0e-l^O zU`+Wz5eRZerJLby*W4w+* z=$3VI@#?s*V=8RI_g}YKf1mjfxL10(lLdDJ?RDY%ho}!9dH;d@+ks}*-yIQVG&A-f z_GQ1~iV!(A&cf2($CqbASY5d)I#MZ&&{B4x24kqr*(+Lb;DdKzk46rLX?Z}Csm7*1 z=Sbk1(LZY$&&1#4+slbhPA|`yk)8DCJh{=H`yXKI|`i|?eSvLA%F5QAJnW?DLaF)*=Ew;@a`<5LQvRjr2A)V`1 z|5le0+3cF=$IETy`}58F^rxQMseb&^DQ`s?R}KdetB+-~owXSk_~Nsq(#TQ8y_}R! zjxTaIWnoAE!kXy)Kll6#q9%3wCHcaUa8zhKlzHH8dDh4{P0cm|!B6d;D$J=q+OcrGM?xEr#f8?@{AdzQ!5UfQ{Xk00Yt7O7~DHbv!L))_?b~uYZf` zPxAH4)Z*i+oITHMEuJA!(vsSn>RJ84o$u?Pp!zy42*w{wrT%4^`fA>V=R;$iqgFgT)y>Lq3oz1%nOy5251 z&}qrbi@#=J=ozUzwSdhQ6<^2OjNxmOvIsoRSGn8xEX9+Bu>}>EbI5S(nI3~D@-TSO zzr0T&k2Zvx!mI}?;My&&D9l7fdG(Sd2YEkWfsJ4EUFf$T^pm4+`0vQ{=PICVm*IP# zNt`-5m;SOZW%GA?frR}Or;j%vy|iA-)(W}9KDtt?PNzG}@AtaK%jM1gKN;eF1-Q$8 zOA;|m3>U+uF$(#0poRz|tpjB>i7z?1TAc`NDw)2fPB5OMzeDF+e?M7HfA1GeZdSjX z-i{C*m_q&bu;t*n?Yb-njg}`?%fZ{sg&ad%ASXVaXK-&2+146(HYj6GkHgs{A;|mrV)M5peRtmakTc#@&=dyE9q;!ThhV(dPW?ZRx6L10 zZMgGdGo!qM&`6E)o>_|6qL}G_>U10AdOAS7{xdcn@4ihx7xRK~em+V+C(wU}`4fnn zx7@~@r6+GuoRV&;Apb4{ugipQ zBGq{Z>vOATb=bHfnRgI|k7@qr&R^M^yNu`77HkVkEpmJ6;=cbne{mcs>_APmk$$z?|2F%2g!G@?5Z=T8MTA21 zq~Z5MtXThW{D%%=q_i{Tc-qcb&0;%|5ww70C&X(03iX$W7RG(9JhM=LvKJ<>lV6|o zYOW6M1n=|V^%J}$#7q{<)ghO42!?J2(YcXpaNlnfUnRyBr2njWW-zelTDkOXIr>Mg zBd^3wRE8;*Px^ZT8Gr_H+eW+VRiWNmRPB+q$y*Vu91)twg_>~U;8*Io6S?9Ochk1I z=}a++(LI$to26ofJ9T?qSQe|LK)Sc^;JA~HKz!01R)3oYN2d71J<*lxQ3=<%zXC-S zi~91HwIv(=WM{srKx2)Y+l)QRBrh%qcQ_c+<~_BOxV=1yMVQ+A_;(56VTw`>sk@{M zN8zOEWO;e&YGbLYg7%qmTbINRYroF_7-;r@YZlMtb#q@Kc}<&syQ7|xDR1g->^hVj z!_Qdnf6cLfm}4#dVV1twn+N4e44xx-&rMzI(_Nk!!^(A`1|9bwr`~)!AH;Pe-j1bl z-xkNImf1T|=6xR9Fg()7d-8>^@F$2#SrbImYW^6dKEJ72{0+At7)gwl6G-4#e}i+c~qnUF$)TrJE1D&83;wpjV0E zOFh1tFBrq#BL4=NJst#vW#SkVer1(az|#3?VYq2rhwE0Z?M<}W5Z3SoGs^2h+O=H5 z9HPYWo7P>tm+HozQ>nwBF66xKKTRsOFGDJRB)o~4k7DYa_Jm2rP>$JSe*|cTmXc>o zZRn|xr_bEzv(;j#AtG+HizibG2($f?Z{ZfT@T_lP7q!q&E#&V@o}a5%>AQpV^xJ?t zxEth1EhnU!(P@O$7$&AeJl|h34D@z02AXZhaTZ1*vjrDCc?fzlh1p&6Cbr1k@VIq! zZ=s=SKu2%A3^Z;5JwroX_3By}G}KgJp7Zj{^3>pI4VD0HamKo~K_ch$^Q#k|a&OkB z-J(_TbYXf6;m?mt$NIhLqm)9CmRX$DVK3;y5Uj`%=T@GZiqp|O6z#Oe&B&|qm2pb! zz4VLFGvAM$vwyZkaEca&Quvqo&!%_(Fg(tu*mqLJ>AxxKXsCrVb ztY&up+nQ%0MP{T~0-zP=R{e<2D23s_j!sIRL}r!P#7O+A(t>C&mSLNJ=IEM8Y8|A` z=wwYx z;x->OvV#7BFZg(m3}t8gX}f5%_;a2eB8>v&NE3-unl3MP!z+FKh)t@g2hn$_55NVn zL0~z^ze(wS6wmiv+S7My)2dZb?{ezR7?f(Y8hVcK97%DxvgQTP@b!$+)cyY1;u+=1 zZyLOcKz_)L-%-&}-FuVfP?L<+%2Br`u;6TXUY(QX;rd16Oh|{g`l9TxCUj>P*-Of5nVQ@O+$} ziO*@;zUDeR*Kqq4vsp2J80Yt|C2q`Cw)VQWHo|gRZkH1Y&u|a$!s0k?(*W^ZwG3Di zfr37^xE_$JZ&`=dxJBxa)?b0_Tt-`G*RmyJiChy&me?g^}>vYfq|c z>3<6UK`Hs;v;I!TB1az!;why0{w&N@yfn&h?Q$RFIziQ}bShwyEai zL%Fw$S(xF=T(@HS9PX`FH``k?wh3aXf6qsjI(>e_n>@&EmV{?GTd zoBtko7k=qJ`jzy=P{RxG$qeFAH~Kgy?I#Dhy&o|tbJ~kYnfpb_rr`s1E60I5~hA^f4`Tkyo<~Qu?2wm%HEB zd-q?|Q-|yn?(_Acs&`qYUNl>;%-0LUO zr()GyxoLHVwtG$DXUwpvUYiK6z^bC)b5lDlpcWKbPYp>SLg1|*gO}k2l@3!}=Q+cZ zPwrm!7^T4;gE%N|t6G$3$C`2ow_b%BJ~VvRxkuTz+h!xwa2v0NYr_$0Y~|nZIxG&H z+iFOwD1L1wqo&>{o%cgjBNZ{{CyL75sQt1NM8*#FhBNJ{T0>B(+AubKhdc>Obf&D z*V(2G^LIDdHYxRBZh7QisKM+qO@sen_pP+Kw|?&FC4$BYp9-|?2}e` zPNhyvmH2jA$!% zf9kE<;c*wNQat|P!w>a*c}cBNapETXUV_h8yMt!h*U?hE_SrVG?>*MjcS!y|)$e<+ z`B)^6#5Z`7r;DMt(T~ZJ+4t(Fb==RV)_geqwBLP2aJuEdX~|gt<=t|B+8eG!o=jp2 zvyIqAdIK!^zB_FnV|RDmAk*}B4mJ^o@tREpfuK&!O0HHnP3mC%-N_8?Yuw&J#o>P^ z16BNs!pl%A*0?o$a7*&4^z)tJd@tt5AFO`frib*`$9rq?!_2>BfTR#UMPERRlvgPw zwUJ8CY%Or#_u`)iIxAjD#gnnxSU!w1C}Xn72@ijjvI^{mH5zic59GP?5W@UF!-5WS!TX z{O4yM%6~qyOZne#ePdqzAIf;nOcC{C!9@l2J>1$0P*gyDlX%&uUL#(%`uv}Wmrc$X zlKKo|S!Vq8JQMR;?(@1X-+LXE|NZvP@_w(}HpG3*JE7C7ZNwPyslx2orz0PSq^1np zm>CZO*@mQU=l;V?dm0zsx$X#F&F{|OwoLuWsl)Q{nVfpF%k#)C&nJa*@tvI8-vHmq z?%)95E!*PtpzBdSXLk1cW%{02s2R8{x(lY6$!-kdiXQgutYKWEp3+YW?7k}u-8Nz} z@chB)&XVc3{dxvHCZ~QmG~55SnVHt1!sOI6D3v3Pv0o==l%)=1#mvx4&u?~l9@*vj zq^kV#pXGcfHE|w2J^jmE92#z({$;5r56|KYmb4H40Yh$L54L>Fr1VvYmW_WXlH4I# zm{>gEpxDkbD06~AK~9eCQT`W2BoP-k4zJHzZXT~q6vAvVM)VV>@Z~L*9G(SQUV7j(>R>y?Y8%x&* z`UHL9evfks3)1go_`BHc`w-7B*mHPXb19t*pTHrIIn?D`1P0h27nJc*DtNKGavAZ6 zup#-sC)2G~#XE41qh4)6!yQZcq4OxjB-mecgw@mO#le^L!^DIH){_W6V^&z;|C z3Ftf043?LcXiw1+`?@9|_Vupom0=c?FZ&Mt<80{-;v8r#q%@W*p&k=^bwWIALl&9ye4Gdnr52rC)}B;So)X<-mB$EcO91h|jy z4?kny(iz&!o6o>z$w)n6E0oO-4~SXfmbe&gy8^HhaNC`~!z8S>zB`XoJ6|#R8sCn+ihvDbE<^LwlTvMIf{v zp}*%uLKi*%b!d8z@>llNK{<{^6KxZ^;90X>u)c;G_OV&^ncKDuK2G2=lTv4S;hKiO zjJwoT?!+8z8vK~KPTSm-jyfDvtG{0_Z~KSy9QW)1k$ zJ$;Ya2YSzAKmD0OTjSb(XI2K8ax+$j=pQJSysFHl+W9V6|)YGhd9i?kK@hc9#1UtODs+1Q^x0Gw7k#~Ni z7cY!q;~w*`i#Dk zJ9n~jE8EkSLfMl{Ar9j8WWR5h{`(_4D+1{2lD{lXmvxSZx3l&1ovo|9q&RwTU>f*{ zj?hce46Ji2zY~+2SMe8hiOHpS7V$_db{B1D8VPov!03jT&+8d(ySr?>>Y5p^qv#R# zsB``~3;ze>$mS=PSD(LEEU|+0KdWgc{g`|6w^p}Abq}Ym#T4~d?e~C6?OaazHMQ+- z2II?|twbaepN>8LLT)5M7@lM2NEIs=X=2-sY``3ZY(QYNXsxzox(pwBDdM6NB z{djnb^KOy>aP%ClEqHk8%C^eCsGx)bS4LVF-joNs>JO0h2`|Efy>-3lrdm*= zw>##e&J=LirhBV&W=kr1v}lC~-)@`7H`yzfqkX(Y^E7mq1v>W2EU0*lVek0@#0RyW z2s6EArUZQE$6I>ILhF<9==Qq2C$Rz_m=qIaylZ4PrCNa)?WAciKYUtRX2;Lc2O1x3 z0zvTzwYrk!eK)nlxc&eg!jKG@iww|>RUqrbpB?@az4GwF7yg?wt9Xa-A;PzKgm8`Q4%wTmOk-pZs_oe*}Tk~fr>((O^n2HSPGzgZ7s zXKKnL)7`3VZO%WcLs5;&rz2E4xikll2JjrN1r2d8k*BA7xm1 z>U&D&a95!35^u$OsG)lef^%hAe%8{(p=2U^I%oP@5Kq$JV8ZJ&v9#EWTJ8J~?`>XW zmn0;k^js{-OEGAx1(7XSuUc*YgzVKk+auC6R_nL}zPo={DMw6-E&K7KZG;p~6sZv< z`TV6l5vn0d$W8hVb6y!F@lp~MJi?3ti}~;<+ex>g58{`+6a1DGF6%C7Ty0BAP@e`Z zK^CQcAuM(k7N9;Dpq_9+ z!!vA&8-^?Gv(|0<(Prh zZ{JEim=XVZlhLjBqtNXTPqzmjhHev}XBR(Q@$Gt*o-e%e{8goO$$gP3m~`c9!WA{$ zL=H+MDI>mhW57T{;MaONqWQYW_dOFvWDY(tEl1$Ge9*>5P2{5@-U-#!LBRSbqD0)#q9lOums1v<)6Uv-J$Bi;!ZU9{^ zsguFa9kZ2@<~h3pw$0tp@qEC7Rhfl0nf<_(Dr59#} zw&OU+091#}P`jD1F{5_9_Be>8x3;t?#5nHbYesmuW^rqy^3r_vOOkw5q~r~H;A0{g180lGWsBM zG$2c_+T?{LsgsSk^&mr?HEyy9(WU2^@zM8)zBdj2J;#64#C|l9zDvK3Eaum5a#j%X znPd`~nA+=3MdlD=v0q|QI9XKA&QJTHnNJ1{hnN;{1ee}V%(R!Y7HID>TRE*J#J}$r z>sM>%C$s`YywrHjK%!k8Bkk(>&hJy-G!C7^#wlF6I{H`JL%PR6n;?xutEyElj6R?X z)XU>^iP-4xg^F8x<`8&aY1!PT~2F#r911}qoH`)B(n*FBJeCr-V zZSs4zP{S>}HgjF_!qPT;Z#>~EyiAhvd|R%fzZ8A{P7-f1o^su11d^BACXnt!AbT+q zYWT(=62{Wzu3&zdkopJJ1m=3n1-`KDX2U^<@rNU)}JBqJv)eR(6} z@^KSxcf&Q*Fa>06yK2S(MJ=t&?o&&(Rt}=^a!<%=_NmDl+qBjtE+`+QmA{l|Ga1MD zS>}Gb!+Hf$hZ^?)stAx$cg|waB=6K8`V0a@P;A;IcLO?#@}}InD4bZ8dPYMHMXsX{ zsTLmWzFE@=HsQa6w0xV*Admk@Sq|Mh`7iCoyYb)8!0bQpUl~O=!++m-buiSB;lEm#(&rS8UCyD{MT|n{1;1Z!hd_-_#gT2vH**&{CA8=q#XV` z58C}_{u>X?HBeQ?DJxtlnEt=uzYovO@?ZN(`g$hZg;;%u-{QYNtlxzH?k&_{|NqQ? zJNNCvf1E@4-}$e%q12WCda?ub{Ad2Dng8sxo5-JpkIHSwlIeH6ac?XL^jZ0@+H%U9 zKda00x&@u^y5<{6Od+jGr~LpMO#X9XO4oSt{O81!AzkX{KPRSCb@`tEoS2dyf8I47 zJuziWm-_k7i7Df|e9wPQOgW>=_x$I?l*wJb=RYT=T+-!x{&Ql=)GpuipA%2kBOW^U zAIX{d&p|SYe;zE8XqBS-Wob>lc1ZAyK`G;_-rQf^zxlNVHD@CqAELf3p1)#k3MXDs z(#BQ%lsNPT0d4R0En-cS5eKm^Z_c2KReUc+rt0b|zdJ zYdSa~P!PJYx6n*ZEslTRFVs*W`DH9G0ZSf4Ed^EjCqk;V(5zP|tes0b#5xvV$Sr4F zI9vH;w32Of{KM|ax*Mt*mqb%s72AtMWMPgNDGyon^?0hRy6LFG_`;(4?@kMcj$Rs6 zjI|xzbk>&L!i8UOGREVhY|+}Xd1pyIc!V*w66jBc);i+iCbhe*e({CZ7XFwit7|LE zBHbq!vl%O$tL$`@SCzzi%$4WwdJK6@qYA4PEP-F*-*)w-J8b5j7!-)H1M^Xnmedt4 zSzI_=nZYAX;ljG)dBya1I>BQT&9qOzD)FRW#XsCo|J{ICuf+ufYPS?#Ut-;mvAgoe zC}jFP{!#bj3Aa??NK289IeK70)94QpYvbRYcKO24lf&P>;bx@gc&N6h@SFrgM|>T- z%t+x|)Q`1980}JQ`xppnCw&2=O28i;3N`F%RNzIk zv0>BTn?JY_);PV`?fLk6yMYY_ygT{z@ETi*jOD`bp=RrrKFnI%&6h4BW=a3db)**4 zjMw`ajA7x*=R!>cKH1O=iWDwN-Ne%EzjI}2_fX>^p#>XP0Yq-Ii2fSW=nyxoRM8UH z*SKq}Aliq(1gOMMFuR8s&V+ikCN`DmWj@KY+6(j|26o@;GA@A(JT z^J7%IY4}kqIPLa8ob`O!d_m24$c~>$QCP0T6$73djeZMJ+(Zvx(eD8er8HT=YyGRo z^h%kRfw@|lLyz+?d*yhoHeScM$iI*!(_-w;({kH>yMpmnxUa97p1wkuoyASB@I z*UX~4)ojY(2bvQXRyjVUtUb^@U2h{?t1b@N*VqW>CJVTvkUSVqG>Id7uJ@~+aWH(5) z4{0BZ(mUpS#h;HrS%^zN+NZKDw$^40YhRTXzmukx3;$suXZGtZ`P~opk~xE|kG9$-q}o>fkm-+^V;IBHk>r7A9CD!T zGmc8ev?=B)q5kQS89LFUf**dMw=?z@+r}3axewO;&_Pk6^OQ-`eW;0Q9ge+{H4|j} z(H%VGrA;#XP6dnb#8ee%DDg;iXVH^^ai>9eO%j6AN;HEew7Lz`tpA7nj{bic^#4@# ze@4)MS!9F$BY3*{GYtNog5L!EK2Lf0;Q+qzkHv$zn|(Wfy@z&KokizYCeqGb&|kr) zIeC>LK|A8ReE5&R5W;^m@DKLz4-ot<=^OBWCHO-(h3_;qZ4A4@KceL);lFyd(dn;u z1AiwEe;dJHPP<+3zdi@P<$stbT4(cdaJopd)C~2(?I>F7iYZgzeqb2k_*rj>M4WfB z>7et-kN;EYY!}PTG|&eTV;FQVG1|uOP$krGzba)ei6vCztV@C^BVc%f6-5m&%syO z_$8vj!?{)}6f@o~o5V#_LeMl9Wv+bCgUJuUOxC7&a+4|mweNKXDnl&x(3 z#;hyU@AD#>Zav&>b%>e7`FQ;8{92BLwRq1dr=>dEQ#|N<3KsM2Q-8a*kv2P1M_$dL zi{QOn%Ew-5eROxy$CG^@n@*;WC(-vVK7bO4h}g#r*}AKCfTG;sx%r3mgWG3*`fe7V8Eg%}>$F zV{g{Yz@Hz`CA;2ZXcr0XkmPoerYS=r@iq0Sb6Ax;{7vZ9rF@l@KlG=|=g?=2n|0Rz zl|F{A;%{2$659${+H&J>h!;&g-=}kY)tReunb^GpZjnkC-7AtDDy!@$73ojVo2#cD zqkTZ{FCXP^KbdTgEMTvtVY+QRJ#}p^F;YyQe&*Yfi;Y3NYs(1W@!raQ}e~H5qClw`* zb2l;$OofO~{VvyPsF+n$j=H3ZzVwO;7(rysOjLL2`@p#9LW@ zMgK4@J6LZxc<8pk4i}67Ilas|ZgGdnc}BI*iBt{zpV9K(s3j+VEQ>&N9J{Gv{*Gdg zf_%T|dHyFe{x6Ji_StV#uG>QkrXlb-O_i> z2Hz#CIim`q)g<<`Wt87TB2Bm6VbGsYC(*DhE_e_6)H}YuD!Smn``Gy6N4fk7pP)aZ z-$_LDllHY&A3L5DqBH3wo%D52M-Bh8ZUz7K*23`mcJObdU#vUwcxCXvmu+tUb>C(d-)-I2zqULRvwAS7TuqR^#vS9^`{owfD}}hw zt3>UM_3bIKV5YqSwf8SzXLnlUb*EPyL#p{yjl`!d|8+M!@Y7)SoaHek%y(Y+n3? z!Hu3oo{5s^gFx=>=^E63cMa{oHN8dfXy-j1h3DX)onFIdLHyV&`C(fDvav_;Pm4kvg#9ssoHH7>y8Z$yw1 zdd3ZKfcLn(lq%tOWw^E)Aj&fNoUG(X8t@Q5*7dxh{n%Xuv)bfD0+rZim%+LN%uy0 zTn%3C6Gm~p@mQPfSVMc4V@>Pr{>12N8$Sb(m|mNPPf$z8@s_}W_Nt<89MB;7b+fkl zb%~Ac$=_kf)ZRiOTQ6>VN+CEk-i+Iu$(pPw!rt1Oe$^#n#Vo7Ui3>}&c)l)ic3J%S zZi$*A@GZ@*Gr{_HsfP+NyLT2eKvyh3z^~AcQyDJk0Rb zaR>e+7O-thlIr!9wykSCn*njxUu2}Oy%ExDyQ2t`TP_aB9?CkH!^ zh0?bd8cK6!fzm^OPfg~n!7+Vm_|~e>G?-MW#6x`!jJ6)_V-BPsRDv@k{Jnfe!slu@ z%-{U;6t6qT)(`&gi6i~{W-NWeXXt2-B=UFT^ZxtG`}*&XT0ouP`3LfX%E z%Qt=Y0}3hikFs^Sde|#NKemZ~r5qy5+uuZgtW3ZAd?e8+_1GG+`~a-R=-rsfkfZ)Z&Jt_!WPuGi)PPBw zMTwB{4R}w;Yi4?FGr;DT@Q-#W^EN7CLO0+k9eM|EQ5alCiBtbrH17CRW44$i8&~%t z@}nkH%Oz`{xmPMXQ@m^2W_c4AtHO?NYW0f!#l8GXTPFVgYnF*y)QP6y0}f#+e`E66 zAQ$JdiWWOdKF7NBZUXo+^~+v4{6w`-=v&COOh3XYa$4Az7A#?u&cFHkcdNcOtJE%4?N;yx zKly*`$XNy-<42-<#gbZEQ44nuIOmeSj=pn#;}zp_tSDWM+lx;&V~^{%?tN2rc51H* z&1p|eVL8t3pEg&1FWZXkKB);9c&rIs-}_oTVnF}@5^738Fn#`M*p{m|~p4uDyd z`*9g3m~M($h*!9C{o`cwkdrUPKXR?+H0^co5{=MUvhFnBj(590a;R+0ib%9P(V+&a zNKtW%OoNPuf+l(z%-H_2PvvBxzLDy9M!G<+2L_WvdrbGEhlA!rpq(rw`GsZwJhdPQ zzO{O8`B}yvXU$}M-vJQtn}#1+!3ckNc6Nj_JMLNMvg5uQuvvX5pME|Sa;aN6*UPcm zOm1gQGkiO)NjfpKBp5)^-<|pWK;HYcj@cF_ktrsxM1ecl-DQV0>JO|KYTo5#@~{=jz6O`nqOFL{9U zp@t8P8}=plTTz)AjWsc`x|xR#_owfO2sT#+Zrh>mA)E7UZs{RR+&2LQpIgDe8N2>_ zPn5AhR-z#HCev3bf^Lc=yJz&?R#!2}M(X=UDDY=bfmuI;0+mpP{^!o)l}t|G4s@88 zD{skL)-+NFC~%Q1#6D&8A)j7F3t>3-ws5~du6oOU8dG%V8gORjeihD#`1@530M*R; zI0E^L4M6v+3<=J^@m1`td>J*3pM*oVK35Z(^9eiX*c*&*amMA`sbA~u(;{N_Q;u3_C_Nx}Z{B3Y-)&1>Vlg@a8LU+vu! z;+v+w{79gFJE7ZOW)`iS(Sd$Bfdla`s@QGB*Y6lTKEA#*x;><+^8271`4>Mj6kCb$ zVuy_UokRo=gU~dlqw<~Ud+0!3XwI-wcS|?BIq8G+Q=Tv4M{XT`KK)nrFXM{qukO}y zO6)%Ko~?1srgY;rzWscvofAszQ4P(c?aU19!?PlC*CxpG6$RkGZJ zj{VsOgV*q=0VUv`zl&}8;10LCEk2AUWb(Y$0?@9YC9UCa;vb`ro>_uES{j8al!TR9 zvc3f=!JCIal1ZN$PfeT0bex3_v0w`S$U=SyLINI)ifq~hJo`D&4?k)*-Ju=yJM?smZ2$Z)#sC(hf{JR52*a^ z>XEd0{f>M`JHKrXw z(nKpichM*Q4hjAiTTyW9uXL@|ibt!%Mw1@XsW0f{AMsnm%ISs1mf-F&8l)0;?R;f+ zasV9 zWgAsUJYVJep@xgVuacvNp~g=DQJdV6k2Pd_yp&0~OHc3{5}NZCf5xRh?Lv+M7}t`-m}x8J0?53}BaB&sy#lC7Jef_ysa08pQ}O3Urg}2L2A? zvhJJt>qbvxi372+`TwK`m`rNwNmnrbR9oOQr80_0k2BYH1USwFk8g~nzNS2#+NCmu}^igE-^uj zOi;<)4}~;a(Fj@3stXIC7BY=hZR&VUTHY6t+q5P6^UN@du#x1I8tPs-L!Bz|L~Wq0 z0KUOhBlFM9fqTV6?g&ord3rqM=`nZ)^oT&EK=sbh32ZHL6U0<L6v@y|=SW@e^4i46vT)+q15#U1 z%qROxJ>$nebN-HaA5#;iVi4<}9De}!QIl+UL9ynpG^$~+pIh+tw;hRvbHzWEt)XMz zVz$3K{mu?@7)K^8AKLeh&<)$$j1rIZd^mZFmEjccGnq!g zTWb8&jQV9Kae-HxyxWlDNKu(P{R~3ZbU>wT1YQOv!8RjGMkQ3o8RSijAehFT$pv2sE7nCr@q9rHgS|F zO`k=6+8rQ-$vW-}qymyel}9Iw-jQ#1pah;j!y>so3BM`}ndIF~PkDLA!7}l@HCK{Y z7#TXYBsv^v7p}yq^d5}~afIFRpnT3XL%I`P+!|Yf$Q$3Sx{{FVP~%j(E(pGItW|d( z%H~@&L82-4cx~b|^k8snUW81*%sOT(#W)^)fVu**#qPnGKK9mvATx(>J9GkHBeO^{o79}x^KQ--CwX+D({x5gnu ztKhi>AMmmu+S6ohtF-Ur?S5U`fd8Fc?SlLGPT$Y`x7pkqmWw-*BN+Lc^(E5u_&@B= z(+}xSGBT)|)JyKwGobaNWL%&m<+svbMp$t+aa~=1Ev4f>A~tjkl1!tqLj<(FYNz5* zgXChQE#AT({f9oXfQed=QAtc4@p&L!@cFUVX)$GLz(P+R+~EEGPpuwaLHN^W8mg zk2HVYEbe$+mvAJC%H5+3fJM4b11d~NVv;I|MBbIvZk&P9@k?)|xRv^t7{RvT07@H| z4J&uMQH;~BFQ}IL{oS0NJv!Kz)ikzGJ*Fn{q%p11VkuWsZQ|Y*{^0AXK;+mKVHcjm z9Vb<>OlpSdY)m^$V7}_q7oB`rlQdA-dm?I+Gi^+T(a$N?Ud2E*RPif2HY?qY+TJ3i zRY*!(ZSqM~3MUub&7bPThwdd#rz!+_~sWsxIj_L~*fulrJeAp3R>h zK4M?#nrw1#D1bC_zeIDp3iSfH_-mlJ8bMD!UC(cZT}G2#njbK)-r#rh`ILvpeEoX6xbQ+4?-tLSHu zBwG6S?zJh}O)D?pTT#mrozTd??X;$lzb@@t5zn(!=Ga;lF=A z-0xlO|HIjvz(-kKasNSrMnxyM)U;|FHEL8;QbCD;WF(PE36+W{6&Dn%)D?B2SY+$W zDC0N~>r&ggV6~Rky;>Jgh-}fi7MG$_p=#wmMiw`~s^tIuo%_s^0KV`4<)fMBxzAnB zJ@=e*&pr3tb6I8sy5bsbv1Q$&Uh*+U{kw$qv&<@!@;GTcmH!(LVE<^9zs#$UlgG<5 zhL`yBcFUdYCvB;m?$C(s!$^I;hJs~#s+9)}rQ~^vr@{Om?HDChFjWR&=0Z|*+GpNc zeYa6?EA<^$RG<7mFugt0vSs=Br3FaD_6AE`p{!Y2D)LqclYHDBG@Bfd`Ab|N7#s<- ziZhOMm?b~upixw9^i|0DN97!4e3&adi=_7HMdXit&qBS(g5jdG;S>m92yBEw)7`y! zv*_X6&>bpXWilB7+`Nrup+HjsVIJeuS8Y}oy72!_H1NHv{J9+osySRgsx0sm9*+jqOZhK_hASm!cp1%n%UlL_&*Vq?b+p-G;<+ z@@&`KqEh$xQmi0L%y3mi0G;DC_0LQfZELThT=C7Z(lkl3L=zu^?@yVKGP^aVH#eqV zWd(sse`@uH2QvIDPsOL8E=c&{AL%u5c$3&kk5ERos#*;EqE z+$nj2b;m_t-~hKz#k!gu(yjLONW*LCx4=b}>uVpMoIzew5*E4N5Pbcv` zSdA?%E}hY!&Ish)8ZEDbc@_dyJW`h+N`gw`o|LU-JFQOk?!LJdxyG zbTgLOxrvjvm>H8TyeiOD@;V+8wHSR4U|1bqQDlYcX!=VnJ>3g! z>IyJaT34pvOT3nTEF>9ItUME;m(U{jAc>kBFvVZ~raxT&12rZqKE}o=d`3T8rd^iy zKdPT|>LRHb;3k%MdJbThM3Ms_ih@0fH8YNH>F2xJ0Yr$>{1yzP(EM}x6P;J3zjJ%@ zckV^}dFmSeh%nD3U-VhcnDYkm=jn_1LwaQ;-=DpPmps8H&!F*o5mZC^-SpS#f69DA zw44(Jll4<$pS_@4dt<1Fg#^j4{B0@Y>Nh0Xek1J`!QAE^fcqGmy-@W$ZLV}*ZIoR1 z7abd7jL_XVlm|BtHD*rGs;|6xc);xoIem|jfYv^8O@&s@F0^vOmaW_rw(@=TkHCGZ zz-?Y)RC&##!M#>>9U~6?!Xj1acZ11Tmn7UbzIMQL(Rn2G@YhUk7Vji;wKlE1KI7@- zf8-dRxvEU}<#gy)z-c6Cq_xj-3k}sSnS7bwt@|x+qS*I!g^vW(t+yCfmT?}Crt4v! zed-UmumZ-bNWZr6wfdA}T?2&mJAORvg=t>cl~&p3^4w(=Ni|nOS|!tPN_T&Vp48Rg zDs_a4gCBUanm~{Lw<&X3nMFF9!z!hQFYSLN(>{S>)5&yGZg8j^%6!N}?EWVDmo!fY zEtMLxW@LOgsb58{8{)IvKW?_ZTpO@O(9u$#frIRja&Vd6qo)o}zsjYxaG7@Uh)Bu` z5F_1ntpMMUVTCpj%g?=4kML?s8`+so*9;JonW(?yf1M1rpg4Hac1DE?xwkxX7#qaHS*VeboNJqM!q44#pYW#crhf`V&({ z|F|V$`nNJ!`AB-j<|P{U^r6*GO#aF4cuwu9G+PqQpqf~j!Ypm}uTNL=jQwUnG`)lS zf#qW>B=n=n94~gPjNcf`{JK@GuEL0pDMQpSx`#omv!OlEVJW z?$~N~D=D$WQ*+4ARMtkk1wAB;@ez4iKucKMH6z6L5_dC?X!J_`C48<4>}hh%J&ivW ztqT7U3tt*Z-mUcQkj-Iwz-nK#3IY+!Pt3L-3oY%AducVFre2;~yTKOcg<0JG_HD{3 z;?Mi8Gb2@UCOqgd4(WtbcYnA1OW(jX;n%uE*>=IDCQxL_JeS62mGTO0c zDqdx;MuibGcmt8G`bPWJbZ8L~mG@C0cjj}TjMm(st?93j3jeQm3L+OB<`AN`yD zUv2G~*Vbq@Y>MWJ7Lh$1)!TRr(K^;9MjhY`>65l%szX%Whx;#}J(B8_L_l`vy^q~A z^8(Qq*{iBkwis8ciA3u*h=B|`A&F#zNOVQ=zo|jilH{c{rfnJ4ksG5Or?6&R3}GLn zlZ!~5KJG7spVAiU-Tcz2*VHus0y$T=Sgt%|6rW(l|IoC^|I=v~`@a2|eC`pJuMAS#a zbqj$c5gX5T$bDlD0z^|KU;0KnuEg$zDcpVhzmATdp9u!=@j=fuq})1#sv8+9UQ1#laQz?^#t|LJhL^U?}2!BK6C*$T}eu1vB=jiiYtY zY0n+UI7gm9Hmh}_-7%n%8HZ3}25>d#&^qb$QrcqZH7HE)hHd1m*wOS_AaL7LPiVLH zChf{dYB#D0tfKnq3y zyGuF8E0!CrLeG#cjiplk?M-)iIJc_0G5u2Uc&J=`db7LPU}$qa7k|Zujc)B}Ot->c zGBh{~>wQhtXsJnixyHMJtj&FPlb~*M|7-Q<#WFV;GBS^~(y*(4MR9wu#BrBTI8Sw> z8ud^br#K?f*3GT?+gBY8wcq;vVChEH1~IhMo0apce6^0f_4HTa{AowUq27z&4(xW# zJ5Rf&YHu{r(|PyH=${B5Ko+j_lU(A2F&bleFLBo>-i)4Y?*w~v>ex;t*;A=Qr9d6R zrK7+D+C-Q}#k%iV%=v&-Q_oO&%4tlmYkY3q_uR8{@eE6UTb~`?a_>D&SEG@QD5Omq z>n7euSOg~bDuZ|$w@)chO68O~jedU_7@C^k-e1$2wVtLuT~&wr4n{KO#WGh|V{qyh zrtLlWf=?>dlq)q-Q0l&2wT#9TuNpB|3#?e%bAV1>3Eqc9MH0LkXD$`$a6NP7cUO7c zCs9OwvIjEJ`%o-zdh@Op5mMifbI7=_IiuGXRDC&EHWW;sLn{6v8&dqxnq^*8(Y@~6 z3eK2y@>guiTr1QOA2wuP`M3Bb)(3FTI8>0_OYooYH50*rE9IF=5v7l>RVK}aNa1~ALPr# zkGk~9ubC1BI5ft=!3;x@{h-7BZjiUnErwoO{MfFKWEB#s%h*mO$?*3pswi|gepaW> zYVdhSU>pZ+`2<+JvJZ$F7?8S;!_%L*VSl#? zR#^CBeYUyVaI}fknTAE%Ew77bqM2lsqs9%3DQY1fy-QHlLVUGbIwuUb5L&WNWInL~hH4h|}8QJwvSC;Cpan){UhlCB$i@u72i?M=Z@yR+}Df-t0^;beQu_jq9ho>zon4j@Cdcr=8i8|CiIP1UI zaH8pj`k3G&L|4YXMd~54XsBdU7bT*nkzX*n#5K%W)LW+SI=rnqKj>73~mKg9gG+*$JG#;;ThP(>_e2*_Wp7WWCM~Bd3Tx@xkUD z7e!JMjy869*f(gaig?-gL!J12a>K^iWf10kRK+>p7?bH+E_A~R1V zLB199B&`E(M)mXghDC7AYC2)tU%|_r(qAQAD^H@Y{Mr06_yeAf*(@9blY3%8z>|kI3o}@Zw{4+ z6hs$S!y{1Fb^i&eYhs-?JIbQ9R>9OCdvkqk1^vJ%lGsG3%p>Wu(UrmcpfCg6B>{32 zjFk*W=vDNwz2+THX0Q1+c5~TlUi*Hw!&TO7;d1tJU$Tm|Lw6gXEpemiXE*{-Ejv%% zgv7GaJ%~INi@{7@$+!``YEQW8kLng2U?)9tRQywBd-YTClA;;wRJH;97*#iBuH9s4 zYK;$-drmxxFdP&XrL9jzaA|qx#1F7EvXB1tBKdcw80=`*QeLG`}%dmugi}b6dHqKa$WcXP#C@g8JAjM zBlI9c8SIpvBXGo2RSaur#dXyb31Bjf2YZBNZZ8s;S$blGQ~uf^y(eE}1Y=*nA}dIm z$^INj3Ul;{+@PSSZA1D1eupUlc?)3h10XRP(rAC&7dM_VQbHr!3AAAFxt2cz$G*T} zZG}F$G+F7MpbSpBm1Hfk(DS~)Sro{1VjNJV7uABd$PGW0B(yn%dxN3)J`5LIu&&ijbCVF_t=Vt)#7|%z$;M zB%{q^tspx)R!RHlaI^m9i4>Hiz4><-=aiA#%Ouo?uFh7T|FqlP>6fNfebWzx#1qP;{@6a z5843&ZIlPC*k5)#Kr<6a*hFwV6@(B43sqT(uk6#|R2KJ@z4dP@E8DW4e?J10AT+B1 zsKh*Jay4CzJeju}sUcYgM?*K(o%S{E&O;27v(&;AS}68=biI%+If?SIq>`5?drKGT zPB2ReaUPlPhXQSI!AAeyy*UVO<(prRmPbHW7yTP^fjypI2U<4TZMA`C~bk3+8WeduYISXKeP6~le_Oo zV*YUU{vdv0h;@tO3q-t?Yf(W+=(;e;=|7E}B}MCGitHGr)yel!rpx9^rfb$bldE!I zq0~oe)gKWZa4Uddd6NuVr{pkXDBRV4>3J;>i}t48#K7sR)tW55&{sYzteEB0I=5X| zw~SA*j9I(mY=^YD-+?4s{fMP+&B2P`=Ql^zAfTR@4W2vP5BR_sfOmrn3!AN(DwrP1? z5;2ljc@kbo+clr< z&4jxZyw#|Cn);yy-WpCP_(45|D)C^JNJ}l7__~ZGoZMxOSnUSziLti3=gQ4mv~jsP z6Z-ZwP}$Rwwja=<$=&w*is22rU#SR$17aBtqu4@sMSS-SL(1!#cgYMZO?k5XOO0_vInr2D(OGlLUQ~w*S@VE2^T; zpI3LZ&kOAYMd_n|>^j=-DN6qgtd69g!uzry=!9Q8e~h=Wx6c|E&sgxKP+}YA_`%j_ z9`k+_?@7yqQ14@9F2YwXqi@nqvQqI&Shx$X_mGv-4Q+0x15GB~6GJBbhgB=mebv8^ zdb=Hjbk{+7xnp|I%LRz9B1@;*m08IAC-Vm+a!!hVd@y+tUZi=~_P2b0wNSYHA2|LC zh9g68H{zyZl)(K8>(#gB<(R&ItNPuARR&(EzmlsL1eWcb*y~bBis=~0w^G&pWg;j2J+H;vi33ne^C9QvmiG*rWSK={hJlj8qx!ifSXy&)lXH(0j z?xKnZjIWF&Z^H&sv&`E~pLy2|fO`q%q-Z+qH`(MfgKi*oO8@M#?|zzQ)63-@eO)Vw z1(o#&yoI`IO2+^&NM6K`KM$p8S7ma?At_ z5XvzSp9m$F1f}$4Wvsd6fq!pCePfq7`Bw%~YE<%8$q9g2 z818dOYfL=5oH~K-BT7XxDaV^k+iQS{{(Zu0DSn@P#6vr|5^SltgNZ~UF*f)Y>PaMd zJ{8C8!Yw$fr11c&CX#xJVz{bS&=3=DBsqt7_u?I1>wZliv(1%_Ss%uAQTG7SW}nWM zMP92Po_@HM3PXkUr+N%K-huulNZ$Q3kcgIN-VY4&;f3pG9t`rs(W#82zRz1@CMAX3 z1a1nv$_tNmH!#>WuaTRHDK(KBVQy~izwocv3>S$%OC4#xXm^#u0On2y(I7rIA@lKnlk}cZ5`OpI(Bq@9aG= z4nOkcSLMp@=F78>c*8z)l0h%CYg5p*@QFSLp7LELLF|HP|+iH9MIx?%COhp3U`*Yw4vny@qcyFz{?+-R_0)e~mQhhkJ zx;}G`HQ(39^kR)96nXfQkbHK}Q)n*zoHbtD;s9E_;do)VcI}i~%podV{})NiWk6Je zNAWk^G-t1aG~9KpXQ53mH05+t;G!zty6|lcv*33N%w(O`(NM&!wG2-<+_JXqNNqOK zfA2ifk>p}nFC6WKky%GzRUlY4<7~Ec4SaAC7-PPC24X7-bWe`yI~s_0_|gT&x2UeO zY&lTH?ou6AE;qa3p-Y<0aA)u!o(nEE?ib!uH>p5jca-)$=jLQsYKwLRUa<^IT|gBO z+mWnuO|R7yvo-dwreJOY`6KwF%-5`0bNcEw#m3JH<&w|aA~z@HQq?qFkaGL;77PHh z(reVw5p2$js78D-}RA}4)>!?Um7W;-hw>Q&UHF8d4UWZovCIAWO--m zJd;WT85FmTuaRm!v>sjR@wH;Z{{?+W7UrgvITQdRtJK;q^p)Lfxqu9#=yRCZn%DfAsYA)UDx^SinT*nePm$>BKYl`Tl*4 z<7{qUvIw3=Nw6aAE1W-pI@i(EEuMkqQi139ZR2%Bp;&ST`3np)LlaODr zS^0Ga|0!}pHUp`RBcK+FL|XMUCJxg}=Y63E6po9@5kx(ZNovW}vo-l}GGBA!e+rP% zzzXUK@sn#ud|i=i=X^%f+BsH~zXN}A@~bocPp9hOSmr#@!;`ZO47c59ewypee1dLH z)88TA~O%N3TzGF z?!1|;F3gvUA~O!Q8NrfKMsMK*Yk%)KPF%aPIVd`VsK#cG&uLL6lvy}G@~fz3aUNOH z#aI=&8DnJ8p1@!&L2Hf7{5{#V+?znUJiauYxN*EN#b7`$YrZC251t4jBoKdlt`&%8 zn>SnDW5V>Qq^m%Dn5vuprMP&p_3$O2rxF!D&1XiHb|;SW^&NcmSB%3hk>rg?SdGvL z&O`LjXPrm9v6Dg=1MVE>u4ObreZh^tNn5aE@#6a+lKqHG;RhKiPv=`xW=u7(=+EbIk{~A6u9K zg+Cpe|Kc}{Tz^Pdo8CHGuMh4OQlqs?uX)?vM%<-)O4YVok~9tD$i${z%+~4{$Qla z`ugJ=NuNhUmY&m3{S0v@qn6V*a-=<1`JXW&_IK`$>`#{o7rRdF_=Bh zfNHVI{A4L+k8AcYn|tv!YKK&GvbjGc7FXb6@7figtX-HdlQ<(DgT2d}2#gA(kZ_sR<7*4O^1UKg;mkVPF zLu^STwF(xAW$n#&U)?chdeIsoTU+9Gx+0~*HXAP*CxAv)XD;ZCvE(QdE-ieOWa)E% zAso??$cc_{M8l6J91;7S-EiO@#=(nG%Nsj{tLDhE%se3mhi>I} zA3mCg;|1P*+z*}j$PCA{6iFYzW6t@z!=2FX5j;zn@6w}xfZ>7%nB1QtDaGY5arqSw zp?@8gyPD92I!cQ;gV{A$Azc+}pniXBe>%CgbR;|8msKn0u=**&h2g6J^KU-(Fs}dv ztq((Vv3p-~ciJix4_@IFecBC)n7}ywCe3ECegE(7zcfo$7w-j0mef1_3qqshOkFtl3hi6HDZVj$Bo}M?G4+y$p zH%MZn?^iyv@g`b%3SIlOkyU7+fV=NehzUISv{O|jq_$6UKi}1Qdijs(DbdH&(<7gw zr)Pr!rqExi-7r+ZuAO^&BDnGcMi?kRE_R<<3|S#>RRH|DnYfu#%SyC0v2sjs2hz&M zZ%lCfW1tECnOg47&xoU^yoTLR2xtuEXi zc=>K&7=tmz5lOXkgcqL&C%$9w(%%F?T}iOJC$i-hXV|O(T&7s@$yC=4s5#rW_-FHCB=aJN4OYmZpdo&`+D}9dHDua)b-sH3P zmb(QlKGX!S=g|&ow7IiRlh7~@kCWF90~!sib6?!=xlO0I?J!`N{_imT3)P+ZyIKm# z!qwcY!+?>Q0a9DXE)Vh>eD14%+VXkkR}`@%&gX#de&QTj?;=HCUaQE@86 z-ODz&8}>h{xA;U7(+jbNnnt_Sof>{xr|S50e&N$K;irL`arkt4;nR)bCtX_|%iN-_ zV9KIOyg#27wavdl0PS?XFfsM;;AZl%f4N!J{2h;=x$qx?#}21|$-96X4g_)$Ri2-b zR$semDm!H>U0>Q|16F2dwyDsO+jlg&m7k{O;Kx}^5h6G;Q~qzb?XOyxeVOJ{R1>v()iT{H+i!(CmTYdxPDb}XJp!T}!*)RM zGF`L%oBREjzWTBm%N680{aMKMv7L=ur;;zntz%(eOimCh9#zGsA|>C(`FcJ%oO-&; zXOnwLRnLXKo?jQ$Q$ao4rDpwihxu}ktK3e$TsM_F%9op7RBja<6ifo?YVY$Mtw-0W z+yTDa3(rvQYwGI~iE9q!gqIdD5ex{+KjzC1RQZT6pH}&KzWgOc?T%Nw-NSN|e7RDU z+ufJ@naU-6xoJh^`ly`Wb3p$4axe9!+`hit_f>9~FPA7Pw+RUn+!W3mJNt4stK9LF z3w8&P!g|BCml+=7`d+Q?pHr~#-2z}KfK)6K9vIUx8}CXgoIHbNMRV`Lq`JF&UDc}V z9Mz?ZaKdp)_-{S+?Qng|=v#}s(5HWK80i(HGw#uO^y>=XW*jtY<>;qU{hG&=q47J) zmwQI#YE<6|7I3f*rn zu@WqPe51+f-1~=r_wN~7Q|VBMpI_5YY9cJWXKdrD@a`ji72ae1RqZr^o78Qs=uX^YQ=L zRVbyx=7+8P2$fhy!SV9!4B} z4}m!T=PBy$r=Y0Uw-0Cht1096r>BV(TRUl>%tyZb7uA&Cg`FMf`)rlJDOY}CzI>gP zZ=Y{+b)+x%jLLPRT>G^q@6w+Ke--28=p+3Zc7+W=Gim<&r`k&ievx~Ro-%iDN=HXE zWe*RY%y!7p;F|?9Uno*F>yVM|kfVuJ#%ku|ru1xug<+nslay4mx@qvO)soDh|63jq!Sc zSv9ZISK`rgrJav`!3q!&bhs0s9$GbAaS1>zIC0B<4E~^7JDs|6?y;neIU{(6RE;+bH%%a* ze^v+oI#QEs;r-yw@7!h>d}vAdg*=JAQzUOV#>jOTMf{w(t}{P(xt|Kemlx+RieJtG z(qxTu!$4O0{@DVL4(RT~{CHEouDCqycYaS_)%AYUuJ5rf<-6WjI=ajEv7O%2S9N~x zdcSFA=!8!BGeakKe)p7?8(+w6h7elxE@~@&7ZK&(GuJ($*E~IB%r~>}4nDsvT!3BX z{(U@1gpl`Qb&h&2a##u({K0rC1FJWczn%2>2Z1CaaG}QQ~20s zfoSzYR$HstiAr0ddNgxC-BPds0rMJbtls>(bBAo>4fOe-F~P+kHe<- z&giM$WST486^Bdlice*4%x#=WCsw)^)E1I(tsla2y9Hx?Z6 zBscSxqfp+s6`McR4tUl6(BDF26!iD#qtM?69iK`cixfEnw{#atu5_a@Xm*|V5agHL zPS@LpjHMeTpGT(j_@SQ&e^r0z4Tmw#9+TM~Z?MTsO^|}&kxVf+;*b!RLi{2?NW{u} z1@o9Hi{x3h#|v*@&isd|fOT}g$6qc~d!2?Tbq0m_bP25ly4Nw!|Lzap8vZ`41b>Yl zf0sQ1{_X*(C)1Ox%S}aCu(flw4)3Ts{Sym95r*Mt%ATu$E2}?`-H$zH z`eJ>P#kAA>@>wi1tUQ)EN~?_{3^y~t;f$LOOtxIsBLx8kKr z8&uuXoxwf;8__+Bf%g`u!%czo@)ubf`l*)HXZ*fzIJJH|QQJx3@#Fg?E$u|R?4_~9 zvzlp2*aG6O58znWTwxY&uS2+%4;VzIFAF`hnlSa-j#>Ov2>~yAKuC|jf|n7-<~IGs42dLq%42Hp2-nEA$V7g zlDKpE)6aM;;p(PUj-ML=1CU+_Ae?c2%Nd^BfT{7gk(yOq2fY^RPLH~ComDv%dN zAVyN5A0bvRcuze+vF6CP8=40wl4_u|;VxLf6ZX}o$km(w3w@0wzef!og7#@19-ps_ zeEy=fT>aRupC?gb_EDy4+ulBj(mwyuo$F2Y=L-@={*gKTF>N88^ZH77e&6m$S0sp> z3!`ZVM>6hQ-_yjMwdq&5jXj!v#m!@+&02a>8< z&&9H)Zs!Qq{iWW2dya2KyD{|W;YCK2Fs7Ao>zco@AS*jrbPW1BwTG|8N1c(6Ht~?H zx@MeX_4dGJFmSFDqC2V`&knepx66=0okFOJzE~{*wqX7bdxS{3mu-Es(p|2Ob^(3u z5M^mTtuQ}$yvu&xezVEn`!|}rzxM~o-v=Y={h;Z8MgBgv$>eYGEnH*Sa%FTd>lNmU z&Iq}a5EQ{$MlXNKRoDBiwss?Kx3oz-CazVxff$Y8!^sbBJ@#xq<+S5H#JWQXBjp*dn zk1(%8rrkILWo*@la%?hQ@k%;S_{)lVHcY)=UQ<=y`t*O>kE+>Vhg{jQ{Gl$&=0JSH zyLP^-8Yb=-8~3K7!8AF!-$#BeKT+HR<7Ie{&ipS-YrG=2f;%)Wx~Fc5`{Up6RY))1 zu$Y)c8@h|1*SSk}vx3dD%stFZ=grr*PlvC#DyYBW`!MAacxS_6MEM;om1|lBao;AQ z2r-e0r7SYF8HPe$#VoqkP zjhgh-B%T58y7I*E5)R}vl)L|EH6%R$05h}f-WI}j9sr2|keC^* zD7MiJL%)wZb+gc)DcMlMw%;%9c|2zHb#5{lYnR6#RWB-QR#@O%#nG*3-_gU5AFT3? zQa(Z`UI`ibBP}CIVK+i>axE0Y`ZpqMl>2qc-DkeONa||fl{x?JT{Vz+f%Io0usF2iJH?@8u#+7c?C`{t zFbow#7HDw%ppx#ve41M!<; zZFOZ15@{UQ@$`JlyyuU|Jik(zPaC|E+4uyI?OkXyCh4nJ+N4DJ(&Sjrg_HsUwyOPDP-CH;kSc=T|Nj zIdcH4&ApBl53W)G{5cZC3U2|Qx)q>LM6(d7DrdsVMh^Wna;hqpIJP8`)FLaISY0Xi z`yoWk_ZmucIw!QGy>Ox;ep=K{JRe^PC=+*TG*+vJ*GP>dE(d%#q9WKIY-;|=9A9qL z%(aTwb`$(F?&76!+=dvT*|In3LwYGSH{a*mfpCdV(*AJ1)c`jyPSr$`eA z1T&@)9ElIMV?bk()G4%W1RBfiK^(o~%VXnCs=#YKGV{kfctR@oH%uX@o2+jN@Y@zk zv{u6Hl{Wfx*gb}!&!nfs4+Ff^^RFGS{_VwZF9D;EVfmnh^jh%EPL!L;2Wn{FB|o1< zEi^Hqp~vwF-|xvk^)lrncaHMnHvua`qav;{cL`JqgZx9hY$wIo0A%VCd6v5xv^k^R zq41#ZL;Gx@;~*TUI7+uHPS_EZBeO5(Hml2`);*-_5rJh8C|7QqQ^dVo!h>|R!i|}u zRbEA{z2|a;|3xP(C;@8&k|yQ#yUOnc*O>S7LC%&c$61P=#l zjPD1@AW4_vr7AG@2})ASe@FRJ|N;%UJFee+3Iui8_ z11_zI+#s*?#&L?%wlMbGsvf8%+pjkd+8@F~F~kl2IGAy;bA3WN2Ex4zSYp5hdM86- zVnsJ@yC{#$+)hP^D>}L{{fVO1ltnH0)9}nC<>sTYJCHUemNF@{Zx3HH4;U#mUFau* z_W{~S={?s-67yNpfbnI`%Ns$pK`;jC!EEM+83b1^un)Y?L*rqVcvyiY${H0csv5@B z2#$6u&%>qU`@9x(Hr;X&JnLur#>_xLIe%iKTu(HJ>uW`_;uk^5{S_7n>JI#)UtUyQjznMEub zFcI`CUTz+23(uqP&r%7v9St}u#e1V&g%AR`)$WHh3i@XrAY>S=ei$1Utgj`C3m$`9l@El8SYK(9C^p)K&_b%Si(h#_NmRy_)`P zI&8kzW^b*2Gv%7te`#{cuaGXMygoN_jjEr|nDNBq5(;(YZQapfAd4a8Zg=P}oC8xQ zO5#ebXctjnE_Q!McSwATk|mdYLAV&ugU#lQIE^Yw+y`ojIa*^1ic>QF1%Kv`Mo(&r zP5--qmEbiQDUhB>u5=SpYZEIS-phig`CuZ|PZNo+x$EgQh>P`94Dd?)bTJNsbT>n` zs4ALi-~M?>NosteVK{ZC5t@OI`XhedkrhcKl>*b&k0CS_97R8K>rydetp9d=1d04AsEgYpCjB~obL(u93Zwp0=fAz93$(~aDA-f zkK`*$qY-$cw*SD>pUCYsFMN`kDGNlr6IE+s@fX60(#lAod1*$2=!U0?IC|t%A-DN) zw-H7s#7Ew=O*YXS$Pa zqpPpj)M1_Yt6b!N4^nb`gQ{?yG;K!uEaVa6F-wke!IO-^dBlGqz7DhzTuwQW*xUsW z3L<@1Dt2r4+SC!8&6h6gS9Yuv(X?LGZi2q`k`x&;%-fruKY=yq4)%n+``5`|<>^E_ z7ui8?f@N0;iO`bHr^~tsguxl75@w?yEwx{0uA+5X;Z@69rqY5(;=OouFZA?3%<9-`dsIg6`!A#ix1gQ6s!~!MQtwK zF~(&XiLa<>?g_rS!Bn@Pf@e2|ft6CkxF!EZLQ@(Hj4wl6#t*eVxUU*R@ftrzSFf3b z#MPdmdC%>8mPR~&HtKMEU(>HNo9g}?3_Y&nOwV@slrlH&fNr~ndA*^W^}mKA-%mSC z?8mn;F}b{?xv?>Q25Rw!_zUfS^>pU0_{i)gJ$J@#@^iJG9rUX;*i9y_HoHm0?=$Sr z7gyc>DdZ5+3vBun9?lsBR<_3;3{-DoZEb36Q+rhUrdnei&M~&?l z0EDj(dp(nBxyIjWj}>M6PCZ*-MMqH7rm=$ova$Azas?D5C|wLRo0|^wLre}+kaGS* z+P{ATTYBaQEo_@(8yZTw$Bzda2juv7as}h~cLZc;n!EmIBFy-4TFGW6SGeo>RJ(lY zTj9-2d3ih;&6e{G{`mi*JZsy-7W~Y9_()?y-LEq9H>*1~ zbT5q`f>x+gTvK>=Z)?PGzMQ+ap{HNTQcP8k@9y`(O?}Mv>v7t*_^(L^S>pSZgM;>> zr^I$#@Aow$$(|-KnU_9~vMhwc_R#cs9vVcB2|lJ3g!Av0pt$zsc|oNT;N+S;#VOtn z@j7Yl5%3O>he*C4{XRWOaN;Zt_D0L61aI*b@nd7@GvKBT@p59;mo>JXAe$|`(@;Jp zmUdxi#=`z@TSJM)kCM$?Nws}r&JNX3*1kaWJ9hwIO}4LdkL)IZ*iX9=ERFoY^G6wU zG|2L-b7y_H1#k3ppB4+imYOxiU{D)3t-xlL#^0-JoOCE>97)d-FM0S#| zNQ?LoKfZ%qMDq;+zQljxvjsmh1nN||5V&6W)Icje(dzzF+ajhTmhp*4ywGvB`L$+yPLol0+i!ti{i zhv8gcSWwNgI|o2Kjl^HjCO1*`mA&Q#rnpEi_PwucoqwZ%X{)QGbL=zLm1{y7Xj=|4 zE%Z4~{gjSiMZ<{F--Pc7Y!pGfj?{<`{!tI4Y!E9Gax5F)>q&!ZyN=$w2 zxy0R1{y?oWB@#pKBR7<`WvlT4#!wHDsGhH6zPITyIV3mf*fsCQe<#~)lKwY&w8&Q4 z9jG@neyclqm68A9Jwo!QJAYY#7(M+zTd=^6NL(2&bpnN+?sPKVDuT>SI9=A{sh}HO z!0k`x_&i3rAkLBc*f!L-*G`6dIYR`dfehf)pes6krh`xr*VfZAH{mjwnAW)&kGPKD zH=r-^RY&vN!3>eRAJItaPztsaHoSV z%|?FZ!H=l`phkJ1-a9D=RK1Z&k9Q3_?55hTw0q?}8-+i2XB6-^5K$d4pHX;gWquyC zsjQ~eB}`uRyCGlWXB_JZCU?eTa5C>6#i=`Z4Eg|0_%213i^#S6=1%eL9;tQ@^6lO) zr`|JtyP87VuSIqTqsiS#K85-pJjA%mAdULx+9a2dQ|NxTtDjf^$At5kzwPtO=*jTG zDDL(!??+7`xN218G>GI9SJoRvGL4hmGU$zg?{+6FS zG=Ctrb|zGQZa&8Ev=jdIeQ)lz-K+MhiYdgGSnAjMLvb<-_jk9e8>K1*@>y;u<6t?3o6_Z-@*Nn9(7wppU7B;90MCUYtI@8}}EnZ|jMe6^zg!H{AHITGH=CBTwvegm!IjZk_h^5s~CSC_C-z z!<$Q!t<8JaN9KP$ANvKSQ{w$i+9;C0Dw^n+dgXc2=?lT2a`Az3CI6Evh&jERdxDaU ziErw#glb==c1^soYs1aZ>YB(c&n2I0{?oMo9Uh+z!?pjjg|^O$_fV~~RFhSb3M+}E zj)O=O?T6O@dAG=Ki(G5-_dn+4oc?TnoxObHR=vBQtg-QP8?kJLdN8Kv;qX~@d^gKB{1CQ()(t;oGkaI=5ud+# zMPs6)?kaH3MDi!<8s2TSZDY6Zc3#WI*VN7D+>iEKIJ|asd_*)dzqE>xSnbYv+hpw@ zHs8jD;Q)oK-EYaP4tK#j$Xdne+P)hL2R4P+pOJX%Iy|1f(44sOEdJJA9&Uie=9&^GXTl=09@Rs$vmr zo13TPwjuq20p^$#)93RGpKte{W8r5a?|$TBh0l}yXLDwt^mu(fB>bE`{GY9}3QzQbrxXZWTF7HKM&Tf)us|=1o%?;l(Lo17mx5N@{Rl%v_@^usxf5d9`Gj)a+x#Y=;8>XYjBO*f>ABYQ^T?$Q zmFyo^M7gLd%1sW5Rok&^7sl_@)%1z?zr{_tGL|062Ir8n29_47FSU`g^C%KX%rt|L zmF|}aQF!Zgxr=8e^=I#^4b8qO+i#VA2+BTWqU%>Dp=j|^F3^zV10>M)Z`cpm9DrIr6Nqg?v@d65hF zf66QRFp7s)Rpmhl2noiSrQV+*bsi7(nPE7hybwug%1TeFB6doAr^KXc^4$vCvbff3 zZ(f_oyYT+tEYsTfDeN42+`JDQLISB59>r2}Rk0<5_!T%oZ~OzML{ri|J_o&bBB z&#}a0g88NV9Tj$lAd>on>P$?IkuLjT(fDT?MhHvEugM`gNlY3+m3vCgBqomz^8@Et z%k?0T7f}!EkHn<0}KDnVfCdBz?* zMN)6@5WLNwoZPYgBo+6~s<;cBW`;o^qx$Qr?Zc@Ar-4Xnj?mywN<>o1ZM}@|o}a%G zljwA^pXe^^YN~><_MJiP9eh}x8<-b)2p%+S)`zg! zw1-W1NS(WAP@a(QMi4O0;nX)dCQ)~wC*q^o77AjCCIj%mY&4%lPRtGkLs~$#@J*AoBzhKmk|t zalaP~`xM3&!SrVmJl!SxsRhv;%o<7VWo0MzhaJCR!xmQFlRY#yq0r=?)VD57oa*Dj ztg{Xeqn{f2V)K!3{7uOS0Eh186G z*I47AL}Ei_fy8(8SDumU7@<)y&T;5fl&x^@!5LN~bQE$7r$)VC>7Kr#8i|5677JH; zSnuEge&Js+Q*vkycT-4gf79SL=1=N6T7ySh;lavI@QyCgwg4F4L^6_?6D$1&v9*rE zcM3o5(PKq1XfJKcjQk_ei)8N&;tWpF_8jY+ML&qJ-=Qnc+d6# zSf^820dOt82RXf}NT3IsnWJ*)URb|E_8di|b~SiRSQ|WwI+BA&# ztHJX;(x1nm-Rc%MLEez@B-MN?fP{RKlhud#`qcR0ddvxDoVIiA7_3_6K-V76Km3$_ zel?_Mpnnc21*p;a{ve+!%n?44WQ`okr_^%*0F;^+ucU!s3V&>V3fU+%j=aJ6LOot7 zRy@k!H#CtSZ%K*Z{X#yz>+Xr-?_-0{3g0bmNtucE%%$b51JaJW4CD{{YoJVD$d%5a zE}KNoX}$8i>38?8LBIP#@+Uj!y<^!2aB{z@{aZqrl~L=KWH>x7aFfIFQ9b_#Lxm6aGskyEFHwAsgYzYX8dpQFI^xv{`Je5jcce@`=f3y7_AYBrwUPRK? z&|f%_Du1wggY)ugcl|%Ci^9!rcG28N>@cp=vQYkD`DK3&UtP`vdnMUBF{tsOBWRqu zB1uB?fjZrmYHJo*^}o_cGGc1g z|H_-+3rczP^k$Z#u<&dO*JzMde*zny2As5hw2!{hx8SmOZ3Sh9rXiFxP4 zZt&q{|Dk!c9nq)$E!cEtvFXybkcQX9_tfTcd4WB9QE&5(A$y{q7xCvRmE!CB;!jO| z@%@VU^Cj`;_#*zS0TnGZ%X}7h6W2UY_MP^7JL${C_$-HC!~TwUi60w2_aRNg`?vClMdH1d3TfyH$LQF2cutbfv`%-yuq-IYY_6 z+VAcxpWcvIg}zFN(3Ts2cSViiqbF&?$GvbZ`0yIk{||haRaHp%!b?BQRc@luzCXIQ zj=i{vAd|ZSZ)vr;1$zm?Evj2mpeIZ(V~Y(m>8m=04`}HUPM{^0xo#RVh{Aq;;?7Yo zbr&dE+&`!(bDuq@KX0u4CSEajh&1$UzrGJLYdyGrBW(F6``(t&kN$~;a{R)gXML_n zHx>C6MPhBKX_hmWH$Okv{6?80k^8KSI^qYxHNO=yA?KgSUqRj;q#viw2k!>5WYKT; zdaKQ=pZu43^(2FE&~F}~xfRcCVKX)1NX<+xYx+Qq^aq&wF|^SRHX@tM}XtiMq_7ZltAJuijHhUmjDiu1O%3V5s`1I2cm> z3eG3{vOiJIo31ZqB8 ze^7}#V-F01(-*78oZKIDHRVC~vH{eV`_u`33O6HaXzHhAb-xs<+j<E-PZh~GTE3J z9`f;+sP8ZnYT2n3?v>l^yvS~0y{62C`_qiJ)}34IFJq(=@+3KSk7ci_#GpJP_=r7D zuPmO6 zy_3D3{QZkz;=NC&_iUH=IN)`MSav8AId1FAcuur2i5<&eOfzc9OdTDx{jlJVEZ>JB zdBlEkr}3#^ffGAkDEIx_a(p%w7e^oLi0|%~549VcyDbVPEfaF`S5?H zPc!Jdv=0Ctz1IFa4sA%SJ%tR~B+B%6haGHw&nwkne%rH%o=BdjCJNsQAE|d#`b}{M zH`+=IQ&p0FE)ntvf0xw#ETrfYVTH8rjMA2abhz(dU% z-8ph79To_`A>^Cie2rg_9$&5{uDP%M<6w#T_(66mQtLB@!0*NREgIWi$jfgx<|&(d zPJWNMCs6L}pxA}DevNzD^o|IwU%7ZD<=>K3$}~y~*yh9P(;smA zyPfaSVo>K84R0Iiw!5CyAE*oZlgj;qoB~Q7z#|S@V1$zHmtlszNY(iVjaCC`=_R$x zBQuXsu>!_5o|fY%awO`?yVbti+#c+xOg4_bUAL#NQ%C$-q3J^Tg8iePlwzb4^P_Es z9{&ru@U3&#?{7T9v=eHqD69o~c6&c*_rf4ut2s0>(ifd{WH{{M6PX9;=!24FmKzr2*57S`+L}#52HIBjo3a`dqzndZxG_W zVnR~R&c{KJe_o$hn&vZzqHaR_o7W=#=d77Y_<)xM4P(`Q(Nok6R^ z--XBowkWLW&|w!7yQ`^GZT|?~?*kk#Rec)iyVN}^y__o(m$=WbwH}nEooCx{K98Q- zkZzL`%PY(*={NJs&6*8J~CGMPapl@gZFZv?E z;D$YJ^j!50^xO?mgFNVeKJ+~D@1&=L`B%Z@P-Aw_dspMxy|dodxD60{``@IGY_-2b zVaKia_hqcFzQ5hK(cj$BoC5u%H;!~Y%6uQeo+1b}q}LN3MWGtNVVZFa`#9z7)g8tD z`R5V;^fBMRx9Q&=^p9=x?4VQ5qlcH#bKJfzwhns7uOF&k^NYj{`}12F&r`SAzcpGM z*?1n1+Uj_U59H6dt@$zhUhL0U1P=2JOYLt)rC(;(J)kKwZ=&Yw%wrSm=l=2hxbunU6Frsaf{p2b(>2+fZc``Z>F8uP z?7#gd9jESw|9r;pt88^&VSk1pXNIh~f5J;kL%(cEqdTb|g5r`Rqm#J$IBK5^O*T?3x=- z-MSKpA9C=HlE=~cWkOUAQpjDn%1)?rlW)r7>Y%2~VQvlA_+G$xj;sL83(#|jdDO;< zd!c2&E)d&1*wrNj&AKUbeuevRZ!jw9mc62^5eY|4sB_4NHfeOhDC#nL$c<-S4~QgR zu)!c^BW^cux&i1Z-Y;A++VB@c0VTZnsSK$`mir$xvfg&YLy5bd8x1t5S5!8pm*a(& z2?v)jH;hI0CXr3_WY_(hc8TB0F2gL1V>C?=1A+iRSEDe=;iis5*@Vcc-5fvP0-CRL z_2lu#KMrMo2ZnpESVah3NT7E&=^-1>Yu;o$$Ej!8LDODlJQELx<5}3R>4Rv*AL%Kz zr`Y6>q?Ii+H8hx655i7sZZRyF=dcK z)b`5Ji>}&fsQn^-u-!Ja(p^M8->;MEeZPv#`8I#Ab8`Smb@m}I74`~Y<^Ci%093r} zt#dXS-w@JcOe~w#APk3^vbPBTF-i_hC3h`JIt>_NlVz&F6xWRI^A zFNyxaV;6m{1aZ>|I?2UT2;x;_1QpG@gC7$vm$+9iF}FK@&nSt;QCLI z+mG3uI0Y~O?_d!c2l7NeW2*UR0=P(+74&a%){>KT!H>zg|GFi=)VZFZq{LWw4N`tPNj<>THhe6 z7-5f`ob-GUNzUU#$O~hII`b(zA)3eQ&LK42fu_+BUx8BSYg#Orde#&`0a(l=n^-J-~TuH z@u#RkUso(YKK(;pe%$)XHsuHNw@yHVg531Y6zdw6`+0g;g^+Lo*XE6?L#P#ors_)@ znrc5Z1^bEZ&wRgFKo?JyetIkkGrw3=PZ7*gvKi^pVfUp{) z89(8FPINbE4p)=`hcpM&&zzVTL0w7{42hr{>WDH-~YR9 z!?SYymhj)-8K07#TEReEpKAh?1!fqh?FksAB|S$%F0RII(Z?ONiG@Y_9YmK`3Z)Sa zrtMJ4U>Spa9r(X+Nt-+F!TD^3`g$%e&pVCZ%8k@1o-V@IivLIWZc<%c;9K|G&hV`q z@c$3K!CQgvyXa-*eOu!D#oM+$J`Zmt|BBA^vbFIU(0P2uGd>gCxUjC=0AYWUB#)x$K#({ACDhx1)fRYL0?mQe7)uPf%9$h>sIo&e@FdCZYBSu&h^LA|BIzR zMX5MyIIv{<^(J;laOy4U?KGsnEf8~p)2%Gs65b0tx3B#Tyk@h5#;KzBIyc7r+=+gt zZl%7x!Spu!zqS0|K_5qMCI3A7R#bnX|4qLCg!TQ$v z#^2=on=gNpKAhPZS;g>o56iPK37*_a`FjM|54T-D5np5d7nrNJR$d?O+;;gPVfj7R z5XNdNaf>HjCQA(h48&20Ifowbt~N%kUxf-SLvNv)w2&R0DL zwcv&jNuCKr%3}A_W&15VdS=I!|SjIp%m0+oX z=*Dl#^}?Teb_d^KYm7%0q2ntcaj`t)6!9}NY0m9`C#^1<&yqjCf%fX%pLPUst%&mL z^H_GC3=*zt4@4tjDJpqk4e7lvf0TpF-~a=$Y!h*R35v3Z+49!9K@`&feMzYpfgLIt zw18)IyH^L=1_N8!vm=lx%T3`*Js{+_AZGyQ*9-U#|EB*nE{6N4dN{ zAizfhmE9C3IOhGq;HX!9mr!5udu7k#Px-4i|Bv;Z&$o~Aov3{3PnZ2zX_t}Y)4~;I zTekVK{l*_V3k_#y`t8w zTCE#u(12_KSBiUGuxe$lQNayRko$Xo&OCQx`F`8)|L^N1xzF>=oH=vmY;)$!Ob)Nw ze9G3VbM;}`Td9dpCKhweXcr@iMt$``D^qel>rf(j zeD`CmU@i(^=J?+hom~gebX;WX^-uoFd+r{m&Fep#t)KBvqEo1Wzrdg5v+)f4jJ-Zg zA1<4*O?x%K*Z;7NV(qq4|9gG7EV0e{yIiNS>htInSo3#VslQMkzS(yDH~B7ot722H z-xB|*)t|o2_77{1N=@{6wV1PXp503Q&-7tS{B3qdO0U)~-68)(fnXR(2Gp9RG>Ddg z(6t07z5{??O3dZ441M=&gg!fMyMNyw^P}*4v>j;dwiWyiBk3Ud`nLP`l&`-rMzMEe zIrK^U=b)$l3;v+o?}5MlnLa$mz~l*t&u`B3|NZ}|{{Z-(`ahHYAGZbk41a!K>HEJu zXgoMAgMXg<{OC^_f&5>j51e)zrnF)K#vNeCIm@!AMS^=sPGn|#Qdu$Cpzi4+Z&5ix z(iLCjWj13qbMkxae1y#!b=Mq~WRN+Z@&$k}{>Rw(bMsv@5ju2fi)(mI;4#uGnVqxF z;ki1yPV9EKcVzm=Sp8? z`3bX`+{8d`HeR{N+-=e81gAx59wEO&>u7Wl|P?cL^y7< zct{*x%pq}J`Qx`z{tje!TjjfLrTmzw+b+L);g)>YkRfzaGv!*6cbuE|UDnfG z=$W5ET$1d6THbf?UAFYU!#COMzrlCz;QaPB$G7#Iyzg7!8z1g+=_^(6i$z;C+prK_ zP5c2{O=H(m+v$R@+2IJ$d;$zJ`@Ly6F zlI#5ajq+cH#Qx<2NX?J-2SABg;ZeVkYr*+1B~8}`1<#nT4F{u8;RBd8jw$7Ww)uS0 ztVo*mGM+_TzbqI;G0Aeu_{Z}E_eK5F`jD+x-qC3EJWuqzf{M`d@e9;{=z>-VyloNE z4V9w!AfxpG3zs+PC?>kVjAiz`b*a`*a+qE7b**dZJV`}pE#osjs1v{Z})^)JTi zg~;LB>P1E}n?zz{b9J*W1+L@4(nQ?lZ(%$oeA)5L^+n8n_?aC4MhI}fk%Ip96y;q57Sp)KLPaMPCX zl>g!vhC@|rxFA>*0CpXJJp2b|czgw4S5|=U-1C6{IPK<-xoDOgP8;d-L_{E@tHY@7K;uDcLg7XU($- z5(-)WYy0e%AQT$Nz82T_Bd1C4jIY#n@&{Qjm^hq4iD}*W-U@WZu0e^HDIuge4_77p zCf$dJK&l@;^e{9$IUL_;p@oaUrKz0}w$IwG>gy`E-wpdH6wYJQ*4`;K?+o#0RBCDUi7 z`~hU*I{G|I;!NJDpJiqBfxE-Qo0S9aalyOK!@FwAj8yAmS$S|{eEE8nU*OxHtnyb; zKA(47DQ&i1@8c=%FkkP$oOTAOUVq=t9e8d@wmzigv9j*SvO_}kA210IMu*M%cQQ2N zKQO}2e2FhfT}H!J$}&DAxuq%PUW*%bzIYn!{^haz*EzKEHm!r5^16sQm?U0@FeTYO zm1~`uZ|1JYn=I$*@A&2L+Xg!W`Y?tMeg0-Y@i~+Kx1`2*x+UQDyJ*{3p-RQ<+9CJt zpMsCl{AebH9)`TA-b~VY%ftQF;6$HWPXXcco^o6s$L)6g0g%IBIb-PU*9X^IkDq>u z9&52gz<~hs@LlVIChpmQy;WoXrO4t~Sh@++ELUbKiimeAf6! zc5kv6Tx^q6z}PosDqB058%w22OxknrZq9~9g8tZby{*gB z^#5R*jsL7Cpl26ho+w{^mc~D3H8Ga6uRVc6>ERs2%!m>W0}i2nQ)ozG{Ys%+(^w!8*>csH-LKYG`W*d*?J315+9 zY3kVz__mjmYz%NpTUUzW9k+fVG=@@WKxwK@1Uc$qg?(D*=mG+O!zl%LPA8a!I*fkAC)HQ#jPg8uK;v?wOWcr$~W6fXcj*3gm zPo92(@wnd>$lfg;-JT!O$-|i=;3VIu$xL)|7dS|lCh}9k_z5<}nOR32vR*mklBBP2 z%T!YuyaS#Vg0cg_i&DMdZ+HC->-_Pxi%K{W2E@zdM0ogCgzU=7!X7-Kq zvycqRZ?E$4$z4o5b_6{)-Sl#3MuaB{P?@`>E-!Ww)Jr8-Qc=28+eYf2W3)#(u5*e0 zvME%57X{tl}{3)bNDI zba+NqU8;$i1j9O3_cw<;6um-d#oGxb5wT$|d^V6h+>JuF38}lFg}SVvsqFv+HS(PP(K+P9)syPNTdZymLnZlf?)fg|8X~%; z);{2a8-Jbg{-VFa`(b0o@|nY>|D(qHx$@i#5l=oqC9S*cx7h&hH!nkwFu>FDp^m2= zpQ*hh?|=1%ykSoqXwVlECMS3lk?+uqHIOK}zI~|SNM34TE1YX@1dnYdX+AyZc_=yR z?DS=aGhW%=#mBKX;6@ulsq2P{X0HO}d=Q)UT-hv@$+*HZU=Qk6KK0d}Ko+l@~&aUdi0!_<9(8F$O6+UQ0xR;f1X`rtJs24MWZS zo8f~3cYLXN53S7|g&IbErzp$@wT7zC^*Y;6_3;aICZRB_j2_Kc-2$877xewJoRHP7 z%Nqg{s+Vub>njHP*M-4rUG~81vZH5O=`UZm(hai!*CZC#dOe|$m9FBCYJGvOv=|y@ zFJ%4aj7y!)jQW5de)Kw@ML!2|G71egoB)XA+iXF~_BTDPZRnk_)@rWvCiZlk9ZoJE z*sk}o>cpAt>{7=gdxh?P3H#HjetzV4q2~3TC`WWNqI66Co+^!**ZbM)Q2k)uay@Zj zXil5@`L&-2*-|-AiQz}K?t4LFvm#w??cN5XZRL_8zH&f!O~21V_0=*mp=R#(iv6pi zK2`hXl0w#hC)$v|bw5MCgHfvdjbRM=!b!Y`O-eQ1ol9?FycNmvbHfWzdTC4goZPs| zSi9ssa2x0M^huuKyFTSLPv{e2#p>AIGRbf?w?v?PKoa{zh$8tXHc+7t(~jlp4)PsW zx_T<3S48Dyl#Tw(-EpM=s*GPVPK(Sh@={$dp9!eRJC-lyIn?l=z$PbHj}BFjekW=r z%6~bL9(_ws)ge-xtxr!>-jHgJQp5M@#wl1-Og1l)?}&%}d?L~3#y#-1K^xH;y$AHJquh+B>?+ z9U7p2EU)DK82YcFbF824sqsd&jrT#dD$fTkCqT8iP&40$bEDA)$&Wd{%;Irqof$u^ z!_t2`IdM$t$Tp#=C#%s!CC5mZ7QbSFuqnzJBWNZigV)#L+=RgJDYPOhOdV)U68gAPNf*=SNnX@=$u z(3ReW^>EWH3MH5Dj~`zXqfq@byr_P8qT-mK=hliT`dgbxU9wzu~x&;}&l$u~f zet*zGbi^F7aq3Zg@@V-?lZ6N#5Py=NK{E;OkDl2VEi(exF64b+_T>4@Y(zV`E7jc`UnzArmCp2o@Ukj3 ztCO+!vzwAjtGH9!f*GS!ne}=)#S*wTjyHdgar_Nu-X!Pq!SqUH%hcI4ss9wNYq$b& zbc1|zjcV>1-`of_cf7|@Y?&U9ji{yMl?JU&K-`YL?n$bvQ+Cnr-BfoMU-z<{y7N`{ zx72m-Tx~>I{bwp|f@)OyvW7|@0}NY053i&ic5cM*bpN7M_LASw#J4FE%6iGvgl5W| zC2JW?uQ$hg(2E4R+T$}*pre4UjvqfZZEY^Snn>Z*K=R}(6K<@!Yq&>x2K)9dKimU= z?aDmZO9l23hB2vgHr-DC?WubEf^TeJHMXnzk=a^p1 zjuz$@dpJ)CjGVM7 zQ$6(%KZsqHHl4>0H`pfNlQ>Uir90j*NJak11fx^5f3eQ*8!+6?%i>4rh=t+kT#GzJ ziikt&X&N93CXIF{Lvq;b;5#8oZ}crhx#(Dkawf#GDB%T^^EBN-3S@rke7BFU^Yb0l zDfM;ws7{Y`oor*6Hr+tE`Z#W0?XRDFw@SxR>$A=kflEZtiXg1 zH))SGB+Fgn^YI#;mmhmqxl2C~p*)!g@UR*SUWS?Y*Ti2aQ@?BCPnXs4w=#6|0`88f zZ9kAnQNsp=h$W*?{g-^QDabOIM0d+H%on$`U&np9{BSpdUwl@X&01t<*Sh)tlG)KB zaBYcu69FQfG7c2knU;zm&QsByH;i9>StEaAWBL+N?xn22ee9ZVOx&8Vp9mDbXyN9t z%{3GYR6u&4rYB85^m*Azt#Ti{V5R(wWGB7>c{Y&oOlO98l=_JNofqx|1`gI_>YQ0u z&Ys(1Jv~~W+pnvdhQh|I)-&w`{ERO4+_kJKG=~ZzQGG%r zqP+U1+!@U4%XTDTW$In)#~Bppy(~?)23Dh&gl4_OB4DgTnVbAcnt<$sM4!YvFclcr zJr?e?1-%%c7D_ZdDwGp_UKk{rt#hxJqK`?O zOTKDcQY9Yk&4IE;F3u1*sjP2}$ii1k}XY7)~v2sY>B-nDoe)Y>yxE-cMp%FA1}nFp-LmqWzF}eVH!ZbjNyx$ zskc#P7k*qq4duW@sm%d?Fi&uMUS{L*;my$VZ0Kq7a*%581ErCd+zgc05uxNbYHOLl z?Z5Wtir6%Dx)HT`#%X2_okIhc@_p3+VaHx~n@PcrZquCs(cVVJj6)5xZW+oAW~`IC zv?1-k=f&^QwZ_ynW#el2MTCi=x>!RMom_!HYzW8Juo653A^dgxn!cPuQW}n*iUKAO zcb|&IW}3Q>A3rp`A3hxO=R3p)50#K&IjUof;>wE9%}d_qn?NA~3BdHs|X*M{sc(pe^(17-~c=gKfe4yu%mA=n? zDTmiJ(p`K5-df9mk<>t?2m1-)14fH5FYzu-20LB>F)c}lj-LLR*+&fq3d*-@8DI;N znw)TUWS@@L`_{^X)?Su6$DVb(DYGoeelBUHv>Un3?R+nYuu}xGcV}6Wl@u*Ya(*-X z_a!g~KS?;g14|KLHtpH~;6|_)rWe`sRU`cz?M$8mj9RC;@WnPn-`)rbgC)Q-Dj?xd zNK5;p z`fS#2u`A$naxW_7ED(^2s3T98i_ntZ2_}}Ds`mqHsM$?WL|qp!v-aLtWM8EyZ)ZJ^ z9LX7`R@-|)+4bcY$Y!fge9O|qT@_9!XW~?>@y?Pyc9^d8?%k&>OZXYPKnMA*i5ZWSG^yec&4UYk#o+S|ZX+c*a z=T)NpB4=gnweDT0Npze~QW;76CF=&N-#8^%T)sN{iYBH7Uo0I zl3;olP6g>BX~h40fle^|JWZemP8&)k{naM{$@bt4B-{DH49T#r7g8;`oqcKh>UC=G zrQ}u6551I0ixlVV%ju!rh34+;YSYSI{Hk8PSEQC}FS`y?=RWEeMM5d```)3U=psAc zEjRz3{WvTU2ZxGak*0hlZCu5iWsTL0pf3odb_wG!*I*e-Wy!i%#aJEZ#K%b;d#8qs zTIcS+n4nzY67%XcpCifYwj*UtS2pcN^ivr%_x>GQ8lZM;}^(%M5E^tw`1hrD`X)01SQhw-2S!dRqS-Nn2KlRS4^v<1{ATU-GDH$5C zFMCg8m3rF#Qa7ys!*sTh_cd~5WsfxV6+FIhK7{5MGQ+OKqB}2?&DQ7WBK)DnQa0mw zM3C{iCqrz`goth81gYN3E~dMyX=**60jfVkYcO;A5oSgr`Z|Kp=2(MkgVvj=;?}># zI~3E{ro#i;UCniFy}z#E-8h@}91i^|G0m0HUk(k`JL*-|9eqgT@buZr$M-kdyN^ek z!t0uT|2y8-a1-njdmm~z7&y#OR`G~wiIi6NTN0X{1e`J#dn{1Ma58c8aOk)N-Ydd^ z%&u1y+$kwt+0-w}SJ(fLP{Z}=CSQ+CkN;yDe;ZQEz--XLnCj-prlW!) zGYtTz?l&DByqU*Wp#&X4=}#&ukbhgmp>zW6*7 z-=pIL{9mMi-i%g5L)FkDys6U8mDR2n&4@=o0r93&eGPSJnkr3MBsr{!t?HUCd*W zCHA^r&FiSAWC71^0C0i#0`QtUfigbjseRGvgFWnAuYSGM;|@?9dZhPf6MtF9Z6kzT zUPjjHfNT<}{l%Q>!~<))xAK78dAfc9rB9S5&?8m!$Hdb)KHYv@S$j=;pzXSkt~sBsJls5l9>xdhKx$uMm=`3q_=5wx6C0~h!QEqV#uj{xk({Led>9Z zDQGH0&W^vMLyqLgg2?&$JG!9uOjj`yR^%Fz-x3*KU@Xx2(y6zaUpnxdEo}RDV)_r@ zA4``_H4S1-+6|eB=tLKF-z?-*0Xy{>zLWQPZyST($55SAH<6v?$1y0i9QD+vpM75K z{$QUOQn9~#^lZcF)jr^KJ}+R=+opM(o&a5ZgDGSd>Im(C{)vPBKrWz0y2@SdE6>cS zd`3_?;w$gzZryLk zNE5fXgBz4N=r?n(-~(Dmuiw4LrRw^R2-SZ>4=l?>O!&mPq5~a$PyN!#hstMfbD?Dm z;LB7hH!{)Zh((Q%cr`D2=>EwhB)-E+X?OsUx8E9e(W+ zo#qEhclXpxH*$k?;c2>V^2}RU+1ZqI(&UqyJ z{VaR=Pn%|2Twg`U-e+^Q8M}j6ljk+^kXO6Dnt_gbFS?<_q}S7v%ger3n<+N|MCn<> zop3{C-Q>2ts}q;Eja=&@XUMFqYu+2FWK{2uVkYX&lo0oxZ@V~saQ`6WTKbhE&K&bd zc>~YGJrdWS-(|zpi;pl?9Zb~+@}8wV&3+HY{mV z;2s>|J9Dt_%zM|-nWyNW636CSsFE&T*eShKHe9l8cAcKJ4cE&`Et*O}}hFvY9M*qOv^h8Vj&b^!Zme5Ix**!$Ns zVEs#U>}tO$%88Q1(E4oLp4jMo*H*<(qIlDTUjBva-($FBoFkg5Dcq3!3xmqO%HH#% zn|6wDJ5O4F#s^h!jdWj&6D-U*Pl0_y!G^#tHSr7jVn)bugjM3(SI&caD9VEzOcq_= zE;RLL=v6(cszK@LsZT84gcT}0YoCJn#J;k~3)~{||HZeTQ#9VDb!n#k=y=7H_D2L- z+VD?7d_a-1KkM({!475NK1k{)N3KEVK0L2NOuU$UjW6lFq9!r8dsTcuu^Tnc8mPaF z!UWwkO$*hZDE-0uOG_JL^7!~(#Q&vK$M>p4l^&A$y~ORp@7~L*Vn1^@BcEp3eg!x)>$8Q8a_4Sx%oLuwomeTKW2+}N`;cH^1CTvh5m8|&f57F5O7M3)wkWmv`bF4rHp zPyvln75mP81lX2=hXci=_yPVxso#|(IXALJ^jSkQg6XajJW#iOyd$bj?CTC@G0^wL zje>FFZITmARx7mC<%9<8Wa6OhiMqP;hl~5ZYi>hDsg&B&%${rY4Ue^yKW<;N1J+#r zL3#Wzj5ta8>?K|uI8(Y`t@3P*W*wyq+-C?`bbK*8UUmj%OB*O#;I9DiRX6jSh3)c( zNJ7>*w~-|o!cCa$$>eUjJg0xV0!=lJBbt>wo-QGrUjOu7mJH=SbAM)+f>6V9WYg81 z3jGtEPpij;9S=IVu7|h@~x5)(C~T$?70Z)s5h)r6&kb#ZE|U8qg)9F z=V@ex!MO;~$+K+CeE;}#oBwp2TAj$Kx`$5jgZHkgGI-B{qWZ$Q&)guW#f4K&$HBvt zllSlw{d?%lL@M4Zy}Vuxn!erS58&s;HGWv^+vp}_br%|^N=@CZso0wEsG{pwA4`1# z6P^f6>xIO%^W$Dz8<4j6VL9PH4#wnoSC1XsfTXv}* za!Cf4PX?0V+&-6OCF4uCkQM{U2t?s!_zb-E=$JIkF;ZTRB;z!}OH0N;AqeMmdM+aw z)eLX^FguSttxP&oDo`d;GNw!{-m|41*)!txNK(2ttw(kM6*Xx|xLyD)K4$p*bcydD ztnNO_{9f!{;qBr?P+ zk7j9*RaIot(%*cxjHcJ-W zAtDkiQxhLk;#Qo3AD-xZ;ORjmG2Uy4-BN%xZb4vkk!WG$G6M34KX`U=H(Z?I<470v zZ|E~=9yUI+glsmjT|3#(I#_5WP83Ez3!@)}(OqDeRdqU7IMMm`(*lg#(cs}u&sI?+ z%w0?sM)op(r$=@-$|ctjaLJ6skJoNK65nee-%_q|c5zGb0M7R$MydY(s0T=oQ{HHDbI=WzX{HPf|FVFECm_&K3t!?2$x9p|9_#!E$Gm|?&i_sY?9ah zOM09!)abGQMEcR+)8pUlcy{N}zs=~eGyT{mJvw=zqos*ZKy#jF^<_TI-w09on*Rdl|;sgSb|_edQEF=>-IVm_Aj< zKB`<>Ro1&W^4HdT{d4Q>X@9C&33r+t>;hh`|8PehXZ-Qw9~jqSKdy`SU|g$?w{Z>D z0!yjnzJ>L@$w=zPCs*jJHmT|_Xlq36dR1-js|FE7t2&3Otqa{7L#(lBs6yHuia~S1E#w$dkUwP2$=nnDcp%~!UH`Sxw@oW?y-*?I=VdSCNhJ?t0l!!OJOwZJ3jX^V{MM8c*uG0aUdJRvv*wAJfomO{|!*NgL*` zIfE1kGZdq*z7^az-~>Jyj=g4nAeUL|@Ja-uAeu@=I=C0`T3QB}uyQeTcQ@fY9agiN zG=rT7c5fMA;+xZAqt+AOONY=GR%->4yQFPGo%1+k2VK9^4rQSr zo@(`aE3W-DDXs*RlD29RA6N<{D`E?xpR9|%Oj_UPp@9piS!xPW*~MI@^68mez;H(M z1+=b-V6p)V&Dy8t)Y6WkP+M+>j1`7Qjp&-lC+OgTFO%AsmDX?i-Z%UGQhis(eEPeXXs%pux9>T@2@c9Bnk%O>x_*aH zeK}9+=9SPp+_Df>NhN#mP8Ho{)Db@?d)k|UUBa=#WHJt9=XI3VS9@{6S=h%y1akpuYbc;%rTO7z$swGiieR;Mw*& zk#2m^)Rp%xY%eeE!prV%1hSY>5Xm;Q2#hO%fs$(4HvqFMHJbMG59;&wJSShmHHUUZ z$tLsB{rosjzvpT9P{V8}7HI5n;9jqEdlFa3)!1{>&uNXl124SBF5y?6#;&3>8;;#V zU%Ph)Z?34HVeX1fo;+VldfX;W86!_;_Fz5B*Vg+p_T?eA>&d=^X3B2nwTL9)l{`pC z%#D_3fGle`i0A;sL8scA*DZ`;TcTb#Uxf9U8sh2)X(TA1+6(AEFYU9;=%K&rPq|_HSrtiJA zJ9*s4STHcM14k~f{(5_(6D90CDKdp_uV$W9PRA#QroIDcCQx*8ab@%yH`k_9O=GB}o7`4|e!s};RPs{( z$uWmo&u+W>gq-u>SivK%%HpFV*A6~xabId02>Tr5xA}Tw)I#QlE1BTG>?r5Ztmnc; zA+wYk$aUsr&T)A#ds;Tk-0rdU^YSkG)GlB1^7g-;m)HLnN@x9V>q_o$!kau3*jyr7meUOpj;}MV}8DH{6Zhg6SZ|f2|F_g&GdJAVbL#_)LNH@tU+AUP4 zgk#;^QC%h5w$$}oVlxnJiMxHSj!=#qkiK=2^_3y%n-K#~B_}^e^bH%-)viR)pmL5+ zvoL)ho({CD)DiMw+Ar^%TGC*f&#aT@mhb7Yf6P(=J4T8r<0GIE#8* z^%qo5{^^QML0ppBKNB6as}osMq~X?mNK<_KhM>LH8J>Two#jEvM4y>z=kF9!J1MjS z5qIz>+tK~zgD>=UrgV8;>#memll>u{*4GmquggGNLS`gthJKz2NNt6`d%of7_rb6j zVUQ|q5h6Uw_XWv({6U=u?(e%!eu|SJdFuF^4BS41Oj{rD>kXn)N#@HNZNPs`qsRYf z!+%6^P2#+=lIM9SXdWs>q;_s4yAITjJ1m*0VJQkIJq`%;^ZDU7Xw+Qw zl_mxweZ(b*w@mqF41REQQ=8Bqwf5?V&hCU(Gh(wHYZ z`ld#{mnP|vd`+Iq+d!#>W9xmUNwBWupY`DN75eV9aXI>x=k|Heajqesue)(8dPP%h zl}0`!5`iywTzimi)E=2ATcs9O_% z(DBDjl!_YpQxepu3oQae{pc`Au(9aUhWHa#->Z2PDy1EaHPYe zUgEG)t|dU;DoR2RNxu>t$W^?lkF?YGfW9O0@iTu$ z$u3N^%wPH7#XS1v`cEdx@Z)|8;_dR3xgkfj4A2sfLfGlsxlsh@p+xx&Oncn)XOOEz zA1)@Mg%(OzANh}Qrvr)bS>*8^8UqZQf-n;HE}7=UIm^E^&|YlRH81>>)5Kjl>$#{<|8|dKc@C3!YL^NKTWv1gUel}q3J zXU2bwuE^cLI*q5Y82seuS=o$me4bellxph2b%FJ1iRzvHQ|4T0(}~nEnyq#(UuQjI z*QbgQNx_K-%t79f9E&k`|+iX zDb9zL&1icY$9gD2(9+;pk^(IaBAWgS#~NteM5yTq$IenIvjaOgW3j;PGW`cuYq>x6IaSlG z<4fG#cUao!4pR~y(-Kzl&m(niS@U)Zl`B``Q+M%=Vs1MQHl1!iRp|^js~^lk%;AhJ zk1j3rT_cIVB(~hrSfWeY`gifGI>d){W$|Lh4*=HEMTCGfiXwHd+FMV3ve);~B>sTDI z51{XM`U7ev-d}yaiE)g+D4Yo~P6UelB;RqWuwF`En@{JL>Ro+<^;shUmxSuSC`y+Y z9+WuAmzbR{@j3nSFf7?07>D{2Vitq302txui>gr&s#i*KO}w@*8Pqb(`=dRpI5BR< z1irGKu6O(JPI{4<^40$kJ}vIDTi45tDL;+Y$QzRA;?0j+Azva=Ryk#(#*LjemC=o- zhh{A(US1pGr7$8hiPDNMu2Z7Fd-_RhaPm!?%X@TUDWGQxSr%@3f6itOw`!cUbrG9- ztIE1s)~)UQ91Dy}GW-*ASoDVVSvQ840oDcAQcdLhNYHSU(YDRXR1(r}LY{PL>DgA_ zvzW?jA7;Fwi+-MDRbMnQQz+?GiYf;Bmq-1@L7&<47$o0=PtaF^j~IBLJShnh^-7n2 zfo@)fxp56`i4Da^l@g!E>#9PY4}-)IahJ*|DWMoi3kC3TF1vC7nyT{4U5hWtzL2i! z`4B+!-qrFh==IBQ__12R1!6a zx~6J}vJ!*Cno9bk`xvi4WtI5Rz8ac~TlS__@P%>(0Yki3}3oJK$5F>b0nxqsdl zccE{%ml{69ck~tVMBU}SVKF0w|Muo|!@K#0wP!TCv^Y6Fj{)579@?j80`8BOY>v%0PSy8dKJrTbd?p{iqbRrqez8}#glEj zRKvqSOTNWK$;KIfdz4>G;mDi~@}9%Y>9vscvIM5+?|?WX%S5+ z*;;QHe+ElaIsqzhx5w}tZjt;I1YUNXe#2Du*IfJIKyH$tootnUvH8g`S9+Ft>Y;ia z5+gU|Zg8hzonIhb_Q@U6Wo@KZySrV4SZsh9w2NB?Sn7+pw%Xv7_3vH$K$D;P(~+NZ zfGg{I%R$J<3RXDm^n5ciRR|}Zo%`_q4XGxbd1RQaba#$mO>lneV`+Wn`U4Lb>CH9= z0@n@l@PZqM4Biijr}m?5KHmBKr}f`0_^^{5*5bzBE+SVEPm=+>tBCa`hQIe(*0-OhNQzKfX%&-3ogCqs zA0jG6P%Mti zuIqi?5BoJQE7_|_{M-=J8bzpHG1O`tL)X@vp@H5Lp26E8@$<;;jn@_{!KkPPEQ?*q z+*PTEPw63N^?uM}MCAtGUMVT5Jx!|=tKFSK$r{I>fzRCd+YHsW0#qLrb)t&`CFqm9 z;bjo6(&?(JL9r|xzoe}Dz}Wh#o)zRISznkwf8&PU>-(~wVLh=R3Z)9&^)R*3Y&u>V zP9vd9++wgv9JKO+0}5Je%zxAwkn7xKlx05v>j-^WqpP%ybv6nbp}w4_VFEu*xt~pt zX>yMRRsB8&U%kmk#D9XG^f7{^SgD4_mh_lOqFu5WyXI3vk7H| zR!4_Vx>uK4f84;rRh2zf*2F$*y;ba6;`ZY>SNG>%o3eZNWR#s>eJTIyG)DJs5~Ht``uOPd|&BcRdN8!s%vZMW>q>ul^*ex zK0k>{VJany5rk}i{CYw9`~cE!YvRAIldTddvXoyj5z$FIbk9;J1z z72S1Yz}^Udm-OWex$%+~P8Jm%H^{+G^y!30DI0a<%{*#qD|K}$_*A|KK5UNf{Xy&b z;#0I2s^MnT96Kbd`i(A$^mWgA7@v?SDH!W#35Hg(nAeLA)RAs1__Nn1>uGmj{Brg- zY|?Bmd6$2k^B!^Mc%ZEDL7dp77%8Xey zp2)cGAtEKp3k7cO{<+Lzws>?8*>-4{=yU0M@VxaV!}DLby(0HAsBeRmEHOn?rzYhl zET=F8X?Pn^X#L1l`WCNOi^244<|(vT?OV*X{%c|L*6Ff`=D+P`Ed}xK2lC?I_|F%e zvrYf`V_0Vk{~-C&w)}&~DZaUXF!#ee`)@e`x%mgJ-{pNbe060QgtqmPcrx#M<*Cd# zN-z%VSUX=-+vM0fiEG90$!uHnR68Mf}$YV8_=L^efra>tH@h3^Myq_9L3xvBQ4yQ)D@-nh@gs2+;AqbXD zJkuVDlrdd9TEvMhZv9nti|r1jom^mO`Ak#(R6svx?#rj%+2k_KC9G!Dqv1{%AA8;yq7kT5Js zI~z@928P1LDqIsI(1zGoa~wG#7kGWOJDrMBLyqUxC;a@!oG~vycifjJKk2k7TbJ&4 zSmY4*vN7*sB1SL~H0&7E_X_1?*@>C!IC#eI z)+lxhZzBvRyp$-$nLIVxSDhHX9X>AkirceTAFBT~pE$cZbtE@^X|9gG=Md?O!k%!by<|s|GHD%`0aRg z7O%4WBJ`8WFADr5H@KTvey{sa;0UBHhGpmOL&(=b4-YLht`8KS+2vmlgeL9JhHcf6 zGmrBfN$)-hmJcd$S50U483J6f#^Dr9wihZnxS&5Re$jia7OadFIuIy|Ezm)ylMc{U z%nl@wFvu17;xf8lN4R`YFF;_RU)-^|V2~a0>Z>-gHmEpt%4HzmA>P-WKV^Mt?SSru zwIPc%X4bkIS*pKi*$>gyh>?eVeZS^d$}x2Z#N9}(EMf0eI)r0PH6>+hrb<9+*LUjndJzdQAV zvri&Sv59^_5g%Un0n2>D|PdHZkn+e2%B;d~=T*Gs*`|KP0 z!TjzYKj=+q(+HZx^LIUJ(B_H`*c5!V+nwk9hywJ>#1mwG=JleqWxh3y)h}XRuX1F@ zK|^T~uKC6-83G6i@Am3xw6CHI{#+aOx)m2hPT=ZMZICW)I*j_N@t47BbU-PO$|vXI zv)}qJ8i;Ey;A3onhCEVM9osukOw;50wQ`O~Vne^*BQ10;iGa$nb4h(+YpUzDTs&CNtc~2OHykl)GgxX^U6L5H^YcR+=YLLy|L=nckMdf;-&iOeT zg$HN*`$LU7zyZmz{DX^sEPpCbt>$206y898ExnHwA{nE@@oqKo-&S!T)NJ6`0X1(J z^@z0AYged|E>wTJ{p4WQP%~>@Y_Bc>7^Z#w+|2)WwMzA3?$_OcROF%*_;XnXZ(@A zEh*?FL5~ll0GVYqO8#Mq=}@b&E*vj$mrha|QE0~b!V~pT!}bRbqh^Jkp}GI9>8Z-+ z{zz$5`8j`6bDR(K#u{*5Jp6Pir!#eQDn1dw<)f_r>l*2hK{{ckOF`sl_ZX7q-rwEg z!NGlxotvr|@PF@NTH#7yrU4S;9v%;QB=jI!VXoY?JU^- z3s%*t_@bkJUd3H>RI+lA6sBWOH-%g=9a8)}jH=Pn6<*Vve}is`@055r-KiJRN*t(q zQdUpB(#0x2t;&CiG&-ro-3Z8ME{t&IWL@g11>4=G^SJRlrP%n zeZD1U5x+5go@g868KvgwX-%tDv&J7o>MiCc)zADl^OHT7=glu9R4#XZGWd(U@78SY z{G>I1ek1%g8h)-4c^F00!-UunYw=_S^dI2K2W1Gpj4wH zarH_+Fhkdk6h*z#=jcL9h4%U7qiHCU^PGG5I{shfDNTE$S(L9xL-RgOq|z~O*{osi zKrw{$&;HV_Y{w!SJ3f#og^t<{?2#cbpo=TXK~DjTz04+=E?eh5J3E73sQx$slXrgU zI!gY~;?C2~hh?Kg;h^BO~n+{7;$46>)9CcEf84kJ42YzbZ;O@BN<58<0yDrS&v_GnTs5k)AyNaAU!|F1a$*_86 zsmBW9dDHv!fPAd}!n5m!I%%Eh{iOk5*u0-dO{YR8I{#w;in&He%H1+cZ0^!e(pa>5 zMY`4XVm;B~=%Ce%t8>(5tscy?-;|hAC` zk}r4Ni0`lp3cy)ZDb@n(yRXN7Co~$gKS1-P#6i;m>@J8?7R6fJbP@O|U!&+4#^>>0 zF(#MVo7FZX2OquC)4P5Uz&-6OvK;i`X^pTkS<_ViF(=i{V7BTmQq26`$uoM*8m0+ z^@~|+Ey6Kh-Ci4~f|#<8uKr5wqDgHK37$q5!YvgRd6E6{#)}N8pN^uSeCQZ!`l~Yb zOHx%A?q2As31j;CYvdg1Xw9O>czX@lKBm1pJTo2nF{?swAqi$mLA&Y?K*6$K36kv&vmg3P%oH>Tlf&0rE$6Pq7y zzckcf{Di~qi=08R!>n=#0t7XQaV_nPi zz&Ip2m(NC!{&4blu;*fT<2>@r7|tCI(>BZ1S;N7%KaND1;*b?FnLa4f`G)2;m!mkZq`w>V&;zq&?qMvJYxBNS_)dI+5SDUjamzmwmPY1 z)Ee>LOFMB2apB=*tx?$l+Uxy6UT5oUY_XJq!&pclGd*>UElesY#86MZ&9Ca%;as1A zRR)iiW6VM(yF*HgPxVfvr9JkKGlV>Z=+A_e*JFf_?yCK3Us-rqS32dnQc?XR4qp|+dS`6H${HuhEuJ9CgN=rdjGaL|Wdnl|tHu%Q=S z-!;}T61 z{q}oC@U!&m8qjaZy>(Mcf zeyj}q5AxYT)-gvuzk1KmlYCYRmu<-Bk3GKn59L$y+bs8&N;_z82&X@tBTY=x=Sjs8 zWRjz5LSX8{eb@6VNP!Ps5II7BndcoE1fG5)_aV*aC=3#8&NGC%iqA^}OK<*`tYw&Q zdY?1r{SWy6Nf9DDe!2!i<2Uy?BardGcrSnaI!Ze7$FFI7#;-`DpXmHRAJ6}9ivQbf zWBe}KF>m}VLXf54X8N^8W(*?klji@w7<%QmV!$H%md`5U&z|mTm~IP2;^&ED?y?G! zgQ1j?9K4+;2QM3ae|UeZa?rR<{qfn~1vg7SA!PjjthHzSZ{A#<{(bFvzUI^K4{f1e zZ%@Bd4)^@OLi`V1x6c14mK^>2zwp0|UJn0H&*6XJvJL)!dk3wt{C}}e3m?y?&(VyO z=rh9Xmf5EQ^A7Xq^EYu{K7CFvf<7ZWefB=g=u`X;=yNV~+bVt9qd0Qt^FQ;~S6T{% zK56|r!Q1ch3Nh9mZZGiJ3S%)pYV)@Gw^Dqyo+00sex2T)Z~qtj6n!k8enLp}+tcip z(Qm#vG9-8Q{g3JQsFIj-=y&8jMwap& zJpDdmw6{*b{j&6XjzZg_Urq7H_|cFX8jr&NM`{dSPJGoOC{EQEfK zd-|Q#%jh@lb?Eo$cH5v|48i@6>30b?jONmBOCYyPli|0zZ;2`*ma|J90p| z;qGaSab{UCcYe%-qJ1^X(^{c!r#qTL)k>%$ze8`1ifyN}qPACwSfK&P4JZ?zr#?&E zgNAC&oAamHXPPs;<~vD;c0NveY7Jtk$mv=ppsf?DW9xOBl)_g3a#{vd%+DeVy4H@3 zY;@5V;J|a6DmkqZ(!mS-?sb5ip>H+6rN*F(8UNuq=0>U3N3-)cux}TRAA>({)Y5N&Z13xBHJ|>pqjT0PqN&2j zj=r$j=V2r$xk1-jTFQKy5{pf{lt(RC4d^w(?+?w1-{5a$&x83hHMUsqIPK1Dt#@3m z29R#QrmNk%XC`|-o420945rvA-@=z;|F?EWWasy`-tlWgG}!;WFz-A0V?B<_>94F$ z7T=GzhVR37YzyD5<&TY@li%Lv>obpNx5Q@n=C02S&d1mKWBm>GN4zpQKc6R9S`uB@ z4?fcE2tC5FF(XAE7zWlKnalCw?h&@Oa@|ccG%0+$=|*_iq%(F6i`bLLG97ns_awN| zGGMGk*tkLBx>u7AGvhw5cK7|B62=5$bM^>t!JjrU#%J6+n%eoALvcY5J1}ogFme8o z?o?<(Ya`WK4sA3~@{N1uxA;hWz*r=`byc8Wtp0AQA0I!q>1Y73BKP2pWM2J>F0{@M z$4?j=j$bhvIr3qn4G4^c*v{j$C{z4eV*aVf&93oF*b1SGi^&(79#vE)awQ8T-IWG* z_bLg%YF>49_u)S!&w^ikoQTx}+9*uc@WxH$n>%I$3)zXz@ty=iPcXd7L&EFWjccS= za|5C4Qft!sk~sBF0#W2^4^izJU;7_7P`iU_=clVYPi?9xUc&kM7ACa)OFJvPKu`Ly zKO!xJHpgGj2l}v;{Y#fw6~9!M*}rsJ`F|%b*WUWy$jjiT^5ntfdny!2%lG(YdEZSQ za^+>u`FY=!AA00}hwrjm{u_Mncrw4e&E@-*rFq}Cz<12NEx+f=ckB2(`4(sT{rx}x zX}Xu!M%cm2>$77usfo`U#~(>;x9-{f{d%YWB)Fwb;`SiS_9ZJpCb&@*$&p>t_a<*S z_BRM@nf!*Pz9fK&&Mn>ZWZ2{~ann+LjD0*0SAzRHA6bh?&K*hvi_NRKH6`aSt5p?dY&zGF?$dPh^pyMM06LFmv~J3thT}$tK&4dByGL^SLFCT$ z`)jr?mz1glTdn((NiJh`tIblk+D+4)#DCh${YNyi+uDmMSl`q<4 zyK)50=r{uVnYK^IM`L>7)J&w?x(T;HL<$|0wz%e*}P^!ka&$GJiy1 z{um+Odcf{VvC|8*7Y^DOKXA^0h{!nyWAz7b6cV|?gK}wr9-1yf{@Vds4U{>(QI{@wWLPrAnb8q6^K0qj-6UezRfgX zTU4F{ym}5P2={n}6_d&A&}Tg;H{O}E528BpqK3wRZE}+oRznrHH!$pJY2*;$$ex7r z-9j2s7FFNHl=K z#}5G|00{sTzDEkjfE%Z$nuJAo)OzWtJN82YjmWXZe&GybJde^wWbhM(uTD2nn!#?9 zn*tESE~Zcwq>1u&Nk?IC0&rya`86vOT3XMU#+ za(tZFcm&(1SF{7L(Z2^oG9g6rxbb+L7WN{Y+|G-n&!hIGrNUNa%uECTygua6H2kK+ zna^nu;)j=!-_QXOu7;%*KCWek+4@?xf0^>%!y7r}IbKH%DT%W|X*blm#p}oayni-T z&GhfP?YGrGE7!?=i>H+BUl)j$<6U$1s_FX-zE4@{y#8s8Xq)}Bdtb8j*jE2?NS|}Q z218jCFNx_5lk_b07_aP5=__5)p+Va&PpZ0{U)>KuAx31KYd>N=;$o5D!{iMeP!qpD z;FU;)g3B8IQ?=H;F9z1Ve4+Mw)b1)DL}@E85}@ZmZ7FIZAewEe!%0US5kInr-3 z``+4~Z%=KxO?y)(ot%kZ*!BwIBwR7KfTlSYWz(*_nnW@GIsM)^k4;hM+JV$AajiMq zk=>v@z5C%+e9+|Gy23qF9}`%nrF8mX#miOHxB|9K^f{!0* ztYWwLV*P!wgD(PFCo8tlD==7lH+N$@YmRB`v`L15KiMnbV>X;vzodQKg;TnMS&Qq| zkJWzmwI%1&b;X6$K8(D4l#TEy;`W+#S`(qOXhU85l&;0w=$D+&-Yd8Tqjh(y&ncj_ zMO-vhtX(J3g(dL!?%I>HiaT%8@9b!Ngkx3xib%Vf*g+L<^hB|v=;Hu$JAjLMSX8~# z)sRUP2=^JdXO*dUm4u_o`o1csofMez1A^a@mEWX)$NQ{$y=Q@cPP9Gj&;!uM+smM4 zWIVHdy#h%1bdcoH$v_QU43*8>r~{9|6w996g1_LFYdSM=+PfN%$91mdsoM?OBaI|5f&kL{gG_gsP|LRW%6u2{Y z0sK}(DBIsaj?NR*w5$FRzEM^`FZ+8A|77&@n@>nT7X|ux;2b>_N*&H3??`*^)TMYH@k^9UGiZ!4PS$Cn=D)gAf8 zMyuGm+XOKZ@Z*e8K#N$hTz>oxcMxuXA02l$pgXs%pQn!Z{FwSZkqPPNU3n4c=SHbs>ifp6)6YcPPacy>#8=55P_q-g zQ*Me{kM|U;wFaK^@eHBW?vHwIQ6R{;A+02tl>qjlXSNt$(}Hy>9_Wi5IAcSiG33g; z@pWqz#?xWb&_|U)Vr?ppPJ8ybp{W4QAA1jqpMDrzof5tH!%4lj0kA7jq}v{k4E53v-eAa_v7{c`K&xg%PZ{r1Ht#h^!>Kn@7?YD zAA|3E@|3(c1bua{wbG7>B067yIw~X1}jf z{a>ZOFXsvP+xS}ue2?j+^P{2^N4w|+}y);qKq(Yg20ZwEhse+Bg)(94{ zRY)a4EDD2@2-9&ity;0#7OSF*Fi}561t#fF*vg(@pZ>^jN}uD=Z_e076PcH>W9`?^%Yl3u9zIcM zmgBTEuTU>EviupvM%KuT5+m#Bi~zD5Sa?%m*Y{nUI~#fXULd>H~LET!M6Igbts{TB|c12ZX*3&!U8SH=&gZn z2GFx!7N8z1s9;)yL>4Yx0-%+!9{BK|0Me4EHz-?nmHiVwjcvIfj$ZH2Fp~JgJwID> z312Dn-slgf?2&I=pmpY*J+Tuc+;2A`{NW20;Ri>au@yKxV6{Y@`39q8>$4fY>|q43 zQ{V#rF2!?O{L{)mU-8coSAzebDh{@!b}(L1&sJ3il=$?|2a-Tv0WMK3A1xJKXOwfig1_D(>LC=giJB$fny7O5)9JZb_roI_hnGbw#3A|Sj)+Ucbfnfh=0ZPcA>loRFmOyvF zmJFwCuhWCix$K|?A%)>ZhC97GzpVjTR_H8cn~&n0Nx!IyzNY*b3f60;Qzj{AoRY2XxmbFEDri?3-kpAp}m@5Z9dosb@YAv zz_S-_6)4EE4->Lw>rYt@OH~8oK>wrj!ZY=CdY`o5*!0?}Mt(8A!x@PEVXyvcuPkF4 z-8*B9jPGBvW+|Vue$4PRacQ2ZdLc7}>pR%gk@~qYt@Ak3nDBu#-ZqGG1hX-ybT_-e(oQ9&Y~Kr6Z7he`<2sR_#FLNg^}UBSZB7 zMl)QNW`=v{#L`wjRXhs@uQ|M>ZKJ@VNrMX2$g0tjwxkbwgCJ6&n9BfNCS4SN(WIi~3lFpQ_o zyy5^A**j;2ROFeV<&O3;r5<6KAax4rahudTFUk(B(zjTJ7Ax7G!Aiu1_gF$T9ou-n^qYNFPLC__T?vLWN;?$n8%$RO#rg;be>%GK~#ptA%I?8)acGzb$CA{kHF*H z93R4Dt#QRW(r;Oq7Z)|DGvg)w*kjajX@BTTX1zXQli6`LO7~6BBV3;x`Y0#4vgGkg zxycP)h1El4Ln`;9{t2lwYFJ73(WdzMJ*g6@E!^T5OW_!2jTgAe0f#3a0u$E<#H+|wPwmiAb6Kb;RR8X;^42x(7IsQ~^gpwrbaF625B5kuLAJX&t zHB7F!c=@=*k|Kw8m{>$AJO0G%PGtaHW|=;+7ut{WYqH6l-ru<5qh< z4q^(~>|v|u2o!C^`f%_kxEnvQ-;(`H){J2FhQ2KQDbAufnuFtszJZ~O+^_WA{INBV z&(2<4jcHalq?k#{==7+3JN&6e~hq!|3w*G1N^ur*LKh{^_ z@+T>dxt9Kll;Pfm0nfIgGo*3ll(BQ*~87HnULqQSNx$bc;T&^ z>gQKpoH|YRh9{>P6-!~i!~JQLua%F^M)|pzuF1Pq@R4Fa1)^2;YT1DJZxFlaNh-w1 zfU|m6wy70soEs4Hz>=E$VYA)Ou~w9cN4Rhvs$ZWy*bo8CscPs>o}`DGu2;in=-wGb zIqO)|#mMhQM%<$TCRA@LGx}+oI$yGvqMPk5?U5h8F*`pzIg@?!)e6EX9cUe?Ivb4T zvTLWS*mz0#9#b;WcmEFBk=mcBnd%)$H7XuLEc%z+H!wwaK}(4RK$$CWf6|>s#Y-4R z0{3^CWK=vSU!5;AD*lWwv{G{au}1mpsHgrDj0&FjH6wVuEi&MbIIXO9tYga<6})lA zBBO$J%1e?mV?~6}zCHJRh4!3hmC8jr?i(>GxSysVw8Pn^M#aa_AF+!C1m_i69@g+Z z!4j)H_h;&=H7aNe6DwZCO$Y|=dmxZ4%%{sg!o8u{R`~^1`BZql`dj63ORKZ|D3(klW0ijAz7AP1VYx*-{gkoL1RSEl5jkeOQ>&DJ!`kx)?*I4Pry8MwYv+Y|e1Bk)< zMppW7bowTy|4e3Cl5TayKYb=$(J1H6x7d?hlh@)p@nSUG)oXOaz0E~_v_rb9>@vB} zD~9I=^`s~EB5GB=^uDf~r!}&PMD`gI9=8(ypc8In0v=>(gFhv5*@hmKa$AzN(P3E* z!~QIo=ILrr7Om!~ZuP1DK+oP&#jOzPv9GW=AaeyC@2I*SaoEg14Y7{l3H_J$8+;G> zoYaWrAZDyzUfIgz#DV^>RJHEd*$W>&ohu3-dz=LN_0*qrwR`B*i@hxF7mG(YDDc(6(oQ1_;`m zb0BD=QM1_Y&3n9XOj`sj6^hx`AELi36T+##gqIIcC_mWxBjdsU0AiKgZ5-*B53qio zAio*P(tiZ?3_bdKoF7n*v*Zh)iM7X1ee~1AxV;spTm3LY)A8b>QE?W)VK_-c1^ot} zL&76+hu|2^-KeSlY~}p$K!0cz4)GU&_0S#|A~3vE^QObNd6uA3aTnAz!eqZU&L%Y< zs%O7E&?c`PYI_krfYM0?cv?V4e7R#x#z$_?qwBG8r_M*nsjAnzQhCcdqw?f}g~))h zfUCZXN=4;8l#_tjPJWBFA?+B>-2#U8TpdHegV+~LMlw65s zwL<`)VpCBFatIcxF3qi1BfM}N* ztjq52gtA{DBGw2c1%E_%nCxM?hSltCyT@G+9s%=sb>Wau1D-ds{jhLPR?qnII!RS9BBS7xI9;KKos&r!_v#1AwP0OR-|8VlAKI_US276 zQ%st^ulYHWhQ!xFYvM?P$mnfQOR-x>azdBM{xtO05A=nvV&)%#7t`MV0n^;>uiqO1 znH$@zF8EaUSFSzt3a&!&@jb#24qiQQ6^IyuSrSG!OvKq^OQ&g*KlCwdgtqGr!$z2L zhB=#CFl~by=b$)kmEKaRHm(q!?o0wt`o*6CndIpc@Oo5xSF$T&l4-w?>g;a?p)yzF zU+7Q%K#d35suiFS)w{{4H^=@Qer?hN~lKEha3?3H6pdXnay4ljqyFx$|{*};k_dbUF|w}fN48z zxZJzOOF#N8OoLp#bn#xWY_VE_ZTW3g?`!I6&Jya>izu&trfE@aPqZzf&O$$V4(aL^ zn-(5+(X@2awA^Fk6aNpL>~N1YZ}sK$!$=_zlOS5C?!2=KM-QNLp- zG*oMcbb`cCSb%GDlTrOetaZ%K&~)N%;Eby4C=G8H`UE<8QLv?pQC^P#_x_~i2dAaG z7JzjW`w4!$p`nBKVC zMOOY_AwMT{s=LJ&#(R^DJ%gLA!5C(Gs4H2zW4n|V(7~kd2`VB_g%q!r57vgCb2 zXOt|lO3MA~^a;p&$e~7C##vb8{B}+P&H)sx2Y}w&jS4)jDfEsrDn8SnopX$edi|LU z()m6QNl)p2n^Ar-NiQ)f-bN${zQnVeX z`{}ts6kA{wD?y^n8)V7qXBqKLH5n(Gg z%slh~A9AY;qq^>2&~@u>LEXNMqcy6FmGHDqIE@LzlVR-A-{l{ z;P(K83ni{lyWbLiAO0f2?~jwg?-!_tqxk*%;*R*;ggaT<@k={VPK?k3ov=YqSJtC~ z;ODLHT-jFj3)Gfap&SGMvqub3eLbX6{u1)RF+K#xDCIYe3zqbxGt!L@H$SrRfq`v^ z2Wvqdj$2(-#qGk-t@NVkm`S(=m-7O;Qy6omx>aI~@)>NcFixN&_Pb_yQue|!ki`4g zA32TQ^}$GiCY0uf$HgDNI*#+Ts=p$j>w5bNW07^8LWh_dfEGAyunCFw?dCL!~Go zULnK~)olpJZh;&+o&Wfj)>(H$=<^w^E{KFt{swAeI-DYIqa5ACWjxINy}?$GQT_}* z^xgsFg)o+x(u35(lEZBS@CFYGZ$TCx4g-pIqS?6wSv^dlsx%&X5PuPayrn}?OZar- zbAg)thKSwYK8M&{g*@nH7jv>T?M<4op^uV2}G@ju3yjUYBai~0**ga9bi?W@DjaYA*xC;&9D$ZaE zqjR+!ei-7P9o;2wmdrT(HxN0k7e?8~qcaZIBVhb>ai2O(jy|t~PGOYuo^9_)uXR7F zn!SZjUDk7L@GtU-iQ{fu$`2C8bN0A=J2!*Xn`4!Fi=ShcNxNp%_n#~W41EYU|XTCX+ImGeBdo$kt?o)?~g0D}+i~B>R z|3oU?s2GvE;I{fQta3T*&&DNkdd}eNWHSi zyyqMXDf^*~mwjtPO(W`4aAUD^6PGw^SyJ;-w&Jn|@D^;S2k~g;#y6Z@5bJG+7CYD5 zuz$NC78th4;^3 zDnGQ@QK0Mtf2grBRoVk&m|+~*#+w;(27Qa_R4=+;PQa&+MnxpNOlVIv>2>K>N1D*D zZU$)ds|B~9Urk-WN$y@eEqp{`d%pjPJ;`-LJJ8!?ul73qP3mF|??uAn^&osQ75x|O zhAU}#HKCRdk?(^@_ueQCX!$j?EkbJ$(gckIzKJ!xLJDi2z_ zz1BM1mZ|EWn+Za{YeF+MAAU?)bQe)U6@<3t(+eKMnE6>;CSpsHp^dQrhZ}6Rs&&wc z@h*n@x>3&I)u8-b`CqBq`*x#li*?;@*p9lr26Zm}I(nwHLRJeI#VfWvAO(9yFuZKr z%pEHSRX5>QNUazJDM7wJI@E3DsH%Ph9{LLA{S?5z;cYj=G;a2yPMl6OZ~jqEG#S64 ze}>DTiwy;kDtY8MbP$&$sp_z3ah#aO5P#b&RDb9;qHhl1a!4-hkOydYQC_G(-#yf!ZD|8`_p8+TwPDZ4m&Y zG>fbaPp?41I0u^c?P1sJ?>FgseGS$;P?kkdp{pDe<2?#W1iKyFY2W{(GX5Tg8__qY zr?;b0L28MZfv8?w4B?NIU^@kDwkfH4#}{^1pjx}C>A#m69FDa+Xq|(qO`Fu`K(h38 z!qR&J08E1qTgxBZC5`?%@`-rs+E!O@JHT7#8kdc$Ox)~JuiS`k-09Tba^B|2w;cML z_WcR&yINR?gXFe(-?TfgFOoJBg2^txeVuR2XqV3ZtM`XNYPhd+^ptk# zz_-o}?YjYRum!=#-FcWk!pDgnOdf(oUE?0|DcC8rL`{5$hmGsa*(R0;)H52Z-i~MA zU!valAL)0`eTIHlz>19wxSiKiE_uc3cjFQHHam?fq58A*HMCd&ankVmL!E4@OMfgi$rrnuIx8(PnM4JVg+Absl$<~hnMbXgM|#$;=+z>*e~}pVv7|qD01m|^&7-g!9aDr z4f%FON>f~_2vJ-j!9a^jkK49*fPw27O=>)7V2V8sIeR4gqqTodPlK@X3a7a+RGLw2 zh8~lH2L4dFyh+84TvOB!+E7v01ILvCb^0HqHej5n59aez;7d& z;d`X|S7kg`rg{+p?F@(4fo}E&qPA*j=H)2}Xm3OL4^b;{O^if^Km1*MbMUzCb-^u- za0T+J-5;yANFi(AFc(+1bOu5WbgXuZfzO2b$GIiEx17v+b}CFHfh~f%1%5O#C8*!o*cC zP~p@u$AZ*_oQ7cJuEhnGSbgP|6X3+YoAQhoSnRJ~egT8;zKoGo|7Aw3E`gxl4bYM_9%F47We@nmlUd z59?zkk>sv0lFhKDg2z-!%*gOIe^QGXvYtBwg|h*)lB;*w@CJusRB(Ix$6)vy<$kGA zEVj$_`uR-U#|F844HcqM-W`bfk{0Vm*8gyuA{z=XZ3Pgedacm;Vi;z*l;&Zkw4Bv| zR1j(=r0uJ94sN4k4!FffX5`vnkXfx>u5{)lCuI#U=t|T`p`Y#Y;VF>E+1$m2bCmunLY*UCTllf0wI3F8_-|P;F}q9 zkmD@l!R~~|D}|JZe{frKe#GCi{q=V~@h+sB!D!kzqj8CuS6$YGZL!P88IwN3(9(#H ziK`I!I2nPJcA%3pfRz%aOk-A-+aTr4yfsESC(iW#XRS9Q*FixX>N5GKpL>mIK2Tva zR$B#Dxt#&h5lGBt$`t=QbqWE*7s%#!K8mws!2AGya z`TjJ+RI~`o9j~^r?MI*cq6_pH`jtYmnmv^ltGt=fz(5!QbWDgvRd2Mo3V(b+huf<7 z?6R7QFePg|GF8#3tnRR4(p4L7_NBreR-skQ#2|i=H&ykdX2n;UI)h(WHv_JtE@uiL z3iE%wkq5qmE5SD}VS?>A>l4j)9jXL;cfqT>vKUNzPd%mc-@yFr!N^}^<)5STTQ?QT z5Lxgtwgs$#r@*!kfGQnDbrt38R(^n6#Mv{tKdLa&^9%q}H)=>}m^)(=j6muPNZeCv zS9GKoU&Vk&j5f zFP0}@QB}KDh6cEMD*(>30A_z3;O76JH8JYB6Cm$*RE^sFf>g}&1hW`m{M%T z9eA9Ss|7%LMu0Vop_g*a;aSE{gf}3p_D+UcLZE?x?F?8tijh=Y;#=T;IpO|y_&~jk z3Gap0Wik*)&Grl{6pgB~H#gKCt9>{O+l;*jSa0_1a0ZV??lw&Gm98H)1)UCw%2Ocd2hXbw%$ zB$R^+#Y_-dYaD^R|D06D6DYcfd;A(_s5cO`C>7r}+}{yyEwDiW{s#DLg?x7$?s)_i z)S&zX#eH8)XXi4& zEj&hfTNgAfM$v&ESmT>7Qf$qb8iwE!pX#>GK1}FJ-bs0}QtanHNK|31nZy9j1l`%mZ2X4S8x^>(Q2 zwJ;sV`gurYn>97y$bjQow8$571zX+M^hI0#*bl01*JZGsjVM4p=WR`E007e|H%P%o zA*1}?qzVyfF07>Uo2~OWKY%z}J@O)7S>Zil+K$Z+Ux%%sy~G`c`yiO*zPGhieVa6C zlj;_vp@N+bG|oT5!AxublASY6%DYTw&0|)W=+L7hGscTchp&36oVRp(Z%M~_En7>E zhqF?3-lDDaGlV){Mv0_iaT{xHRM|;*1ZUeO}SZ9sE0vGr+4dxL&uYbaL7I#<2M7j2y{jOV|dG?OAts# z0Hb%yr0*h-f&j+tmPy?a=z;)7?3PK)(xn{7l>dZ23#xApRR>iPcR)ROhQ(T;9LWqW zO)|6gnZd)T{=LX6?a&KZ(2BTV-=9$kn?{q^Kco7yWV3o(ve-8`MVLhErVFhboZmdn zwrxH|p_@Z1VF!ik4pbYMii7v8RgvGe1zWpJ&LOZuF=_-XzQ8i>H?&NgRLAdJtI7aHj;B~Vxzgw>>x}EEt)$Qy^VUjm*4gBaN4Iwa!~cg z5-4G$s~;UkZO^FT=y=pYOF;`?0*MDp>)wP%vicQ0`wQJqxJ~L0{I&VyhudbWJ%2I2 zgJ;jj)H_eZJcxWR2#AZW1-Y1ljbF$4-%eHc7a8=&1B^ZB-~S9Kv~irMB4cmM#4kWH z)L4z@JmMLm@whBJ<29b!9C&&HPiz>9t4nmbPu@T|o(chd%hzi9vUNEcCHB00^Bj~L z?c}fVDKT*#LzzYQpgb8n2$-;DoYTwaP%zF|tP3z}yHU+WdDPEX;xE$pO$+}#4W={9 z#@JNB>A`$m=f9HqZ$*Ao5=ic86}dlA#IDjGTA1BnqXTJ-alc?<|C>5b^HZ}1{7kU; z`N7xuS^GDz2vbk@-dH~Xk?}=s{4@9o?OZfn^Ku{HsGWd$)b#c-l#eyC0sd_j_>(R$ zoCW6V0@ho2VrGtIf%jq7s(VoYEMG(l%Pk5kbOEO*T|o-by>U_`_9vF}T8JVV(YDn< zRPc2~hyMyhKLusw(b7j{L#PQ&X@=p=#)Ol4er7sMZ_B9%rA$T7K8qX))rR3ZiczS# zY**}DG0Cx`Ax~xt@F=W+g}xrQFRPcH)Rpy=CTRpossfp)tZ`^9y9sY6Nvi<{`%iv` zI@jkN^fU5$Q#qS9)E_GFP1!HbNd;5}Z5mp^s@F^C%9tf`w-)o{3ch|b-4Pm{YT4q? z(T*^Tm#F*xi%;sp?#RLo%5EMJ-v_5Nedm#W_x%u??{?;6pASYy590ix7=|+_1AUPE z+9-Do!W@!wt&$?=T#HqwYpwI*Zo6pQ=t=|NUuHejhPi&m6kUdMLh31_yXB!?0-PF= zT^tob2mKu6N|cGR3}WfSP%mGXD1-3!I0xq$<6fWNNTxXbPP^b+Y&B-rUgJ4g>W(!U>1_bz07dldBQ z$2ubm#`j`Xn|q+3;l zQQH+8+(CL&mzVU5J4g>W(mQvMZo!9n=ZbxDX*>Rfzo;%R=}S6D4>;1FZJ*90sUKNO z(^VWmmao;nBfa?ObOLdtdypl z)eRQ@dAN@q%cJ>KeKr0mar_5riYI z-&OSU1ZmFo;5a^yjZbfh>z5kG_n;GB6rk0}j`1;#_(pvbe048b{N=J#q~Gj!?E3BH z#1}xS+P<$t{+LF5pN{wj{1t0_{;D6dRHR>K9G{~-FW2=s@+f@l!_xJEO=?x${dJVk zU(WVx{*UnIuj;SyEm&#ucU3}uE`K|URJDC?d;Z$tlN_B+h%aE{`-#S9#_=s(5|@|D z-wqI8>GAMMjz3=awJJS|zcd@42M|%88&=r--RQ(8^63+N?Dbkcsk7SG=S3&PH|IsG zJ_l)hHo`Z{w6!|1&Hsqd{OfE+S4bh&$Ca6ukv43eHLnbMR9!V-*)g9AU@ym@JWup zUwfkZbldo@*Z5Se&EGgDKB=w!PaTIp$#KOA@y&a|;%}tJHzkhmz#<2KQKYK!Jq#1|mG9>>EcIj%n;zPf)}{1s_@vuo`7?B&F#<#Shi zeMXz9eShC(o`}C<8{f}0zRWnj=ifTIK3{7*4!$VLtGiE#ulae4zne9_1xsxHu5#iF z5Ss6J_#{WCW8>pdo=CqBi{!wSm~Q>jF~frGRLD!sN`I^>!ZPQ5sRnc2Q9{jtpMx3| zd5F_+*y!UCsdsDsxDr{d-Bq}siR%cje`H|m;gp4;A>*|Pg(H?txc*|qKujwVbAS3L z^?4gPTomayL{p@GcCMzTj~5eNc)x2^KS1QFBuKn~zMU3VOGKkE7^)IMN}#ryYadzx6-g)qXoE z?{Ck?-TTh@^pm*nJQ3!K+#`?(eI7tAcd?EHU<2ihUCYs=JoQe00sql$0pCS=MnD4P zvZ=s!GswAteMsy?Wx; z83O%F%c{J*ZmR4<{B)XBR>$Pd{d4dz6|D09w;JVV0#5(S%3cQ|+-Wr6g26x()QFz7 zmftE&!G-0l#!BjiIF~xTG*i6N`H_1{)Qa=;k?1m%z=bU(m$^{gxZ1{eFdH#4lZzch z&lGtiZ*-CN5OhXGHvF1$hPV;5Ml6B+S*3J!Ovw5>}l?iA9=k2*;U_6P1GplCCRBSzI*J;NJXath;_imLOiyOOL-WI zVCBspxebe|E#J{)=Se191Oit(yQ?j9=2lfu(gfK zB?*tC;YmWKtMqb`kf}+yOE@S@H@Q)vZMre@W{D`#)rO_TX}8E;z#q_2g$gh^7d?bG zDd_=xMDofy@-Qszb*8iSt8(evI~G9~{fjsw13v46zMb+Q`u6HYcOVK*OS!S-6?Avr zM-N{aJ6StNnFqO+KsuA}GAb^I>lmLYWk$ut`m+lTyr=8W({R4}O#PXPW7&Lz5qZ1b zVpJT2OP7LudjC6&@-IND@yJ{FOYy#izc{WfXUqflpMgX1E0{ZQf48wl#UiWVnLMt2 z5wimDzYq!0JPZ76{S`c%WwY4rjEX-Xp7qL;=X2R2Jb50Qidai;tHz+z$lAA1BYJ<^ zfDLZc$mggj)X43Q8kqydC_ZnVzj#%byOZT^(lwd;(jzz@jB@a)CN8NsYo2|!rI_XC zq8V6zk}iKK%hO(OT%`T)qjkKG@nwjQ{RSlZ;?<-b?kJ; zmM~V{6rQJJ?_lf~jBP>Q{P4`#_=cn1n0&n%RB8DkiHN;Qr1$G0<5=V$ED|C3+jVRq zW2wkvyv{}aRL7pq*#BYdlZ?Ga$7V2gJ`qI*WL}8&8jO0OZGf9$Yzc0LP{*!;$mz~q z)|cF;$L>d8f~=f@lA~XM=FERk%L>j7OU_hRnVUINV>cj1t(+nC6np~+-y|8leL}sa zWA9=t`HdX`9;on&3lq>^z7>+#SfQbxWCfqoNdvO z9ealxXa;GFUseI*Mq=c}q3Ti{`zd32l}@Y_u@0M1^y7&3<7a;8fOYK4+G&IFGk~)E zN2TNu&BQ;Vqe^7hT!P+%+bwf&7;Zc6z)eBT+v|M18RoLyeIJrh(@iK$ijR?Lc1(O6 zjgOi##5S7f57Yt*C@_9rnh#CJOIxyd3F6#x89>kF1!fg{(A{x|rGvkM@Hkv=xfEmR zcARs>ZorKGrAB!xAWeI*e_2_Bz~a59V>O%)s4pwV37pRzh0Cn-VO03p9IV_BWDZ;$ zpbD{Ad(g!7Q!n+=s`Xx!=Lo<%P)d7v!>?~ZP8ERRN5z|MjahCNhP?3Wn~)|0oVvxz zaE+BAlOtv+UQB(RtTRuh8g8MujCl|v$GLISvIbr5KXB0*cOya=#RJ^pqIFHlK_pJDC!Pqg=&Rcv+<$DB#y3eU=IJRkh|L( zuhOX>FcrtCFpB@I5OxH*Ouc&FN?eXaF&wPb>UM)ifb!tQ#q~*(ai1hQ6PnGJ(TVDu z=imEd^!Pqwk%O0Ze8>7u#xQV}^_>E>#{1maO|aLfq8#|-wxQTAh`-E(2p^C(AxucT zd8Llu#3jbmF5-gHtU@fMgqBo#G4w&+1G>jPg9NQPjEYI9L?TF!g%JyRjh}}F1-y-7 zmz5zk#`la9^{vA9OM7gekM`JxOu&-%0>+6)r_q{rTo}3IU-meW3l)duMm`TysfO$F z&#^rBH#RO(xjL$vQLDfOKz{E#P=Ou+2_-llk$Mo{4fOy}Wp*7xL9OKYi5lU6En_LZ zIby$J#dFB!t&q&aG5gQfHwW#9`OO-XQTt_(V>~h$e>rLo<}cdo*T}>Aq<;NX33_lW zpzD+GGqXNPupj{P@dw=;G-W6#jBk1_T$#=g(kFQy8%X^h>^*aeKO*RkUn`z2%l&e#7w@dBmtyzmq!pA<27`hphmLK1 z6|uZqGS(BZ(htQ+WUW^QP^VQmM#Wrf|3S}&tiIMTC`e)N2H7nZU*oPRs##mn{* zIkA1M{GC^PgYq*I<>h?gKOYlE(#2453wgigA`|MD3u!O)s%(qhgvFG&zXNCDoX6qh zzJ7JPT^{=Ky96?TK+-KBcMwPq0AYO{U7ou45+UOHbM+$LP?RO^D^N^e#HP$;*>bY$ zaw3;`U%dR;R{2t^{Jx$jPex+7$0_ezPnz?nR6|kK%>V(1$2>rIn-J8Ff5rWGKUOQS z6GSfsO4}ED7qZE{a+@@m*Q-~r^#wQK;0s8>)4m*N+xbQ>xA}46ciZ?c(fG58pS7sQ zIq~B`@gKehCj4#zvgr7_WQmQf7i#4-+qFBKl;(J@h6--N1xY5IFX1i@6U!t`d5G> zTu3k^w3K!!j>qP#K)tQ=g%;mXy{!wpJX5$q7CX4HPw?#p$jeyhA7c-Mq(Faz7bcw4J>h$SC!U_-;3Tc=EewG7Pr438U0Tw8pZNr*l!J30ig!O_2 zivU0>Ewp6D(;GwLga8&IMNvjR{6qF&EU1kTv0xE^1D~Elz%LP`jeZb3Z+na2AyM4pg|%$y1pcU`YL8_Y&6EE>H9KDDEYV} z@il$_8UzJiy^+`;h1(`u0Nx)C@jn0Xj2iNZzLD+=FI<3cU-*CC#1Bemgl8zcK&G&HDEboA8T*xj9ksS75r7k%!%5zEJ-l=;~n% z@n>}Ng-U~NGq@}bzs1OrJL}qRq1S=|vW#H1FLYM-BG_Ke=7)A>=OFa51evy<4RBn7S ziD-GAs!}J7ca%!AlIG|n`Xb%>v(k~vjcCBkOr)|M1IXx=cN=&@k_hJEmp!fvGUp~T zH#k6LBbr&G$ckL1m5XG0@J-4g2?3-|^D|$a&R3LxmTjer*jmsUbguCZXvG>@k)0b= zW_qht7pZc81Unr;l^;@DG$d5}7B{={Y*MrfT1UArWFiiF)0?YS zKZd;=^vq5G0%;FE{Zos+^N>IWBX(=?Eui3?8B^S53egy6$B=7P@WqT-Kqsi6wAa?z zjmQHF3c@w3nZpjMAb@N})?)$|rDn5~(fuLO+Q|2iC|(VlFeLlgdx?WV7wUl^(UaHK zfht>OoERt=M)$`A5L>{iMk5RT615~u1@MtTA|=i~WFw&%5lM@M#1=6d3CSk_0PjG= z$joel2eWfPiZJy8BEann2)C~|z_108{IP&teQt}4c=eGf0zw&EV#!n#QCf26p#;&2 zf)Vm%gQyJ8!VIRKzeBy~grMhOT=>@Gz{(;%F}j+;^{;z!!0L_$Ogo#X?8-2-hT z)ImQaGaNR^Z-XWcvWW;(m_j(-dXSd2)qvsbr7S>-iful{96@2=4zL3dCxQXw z$Q#`4_6EOl8#8}_d8`jdG~Cju(Mj1~aXsknKIo|4>fI^c$dIJ!hBHK~7N18N zaW+Z}>73~2=3ME(TT-Eud8o`9w{T*IDuDVIs=6EY3FAnj_s#d9u1#EIIeti}Rls<& zYG`m}hu$d&HTm$UNiNrarZf(QKOuyN2LK>@(6VH z9!{hfTN%;k!Ab$KY^Z3=4jE_>huWy`zgaYwxw4`{oXfTzUqtO6)tq zjcQxw!=a|?hSSUx8kJ^JgLi3piVJlTh$L@j7c`cmo~||?ybH94hTRt@2}!QlcrpZ} z*%-7zt#xFjNVPm-)zczZGEDtD{*Con%$w$*jJlZtkOWKkW*#@5t-zho2v-};TSmR_}((k7*i9Tl;I0?#@9RH zU;uphLN|D-<_O3;t9_x-#bTZUCxE;UX$;^KWegF{Ty-j>qr2p}B-icx(tw6?woH=z(=L9CY2_ zNA^3(PYN*2B|P$gK!60{S1JHyw4S}93n@v%b)SHd79L(0o(lVMcs3b!5ORPxmwW?%cyJGtd&jB|L{}231uq;3Y_$9hBT)^dp}7P}{!v8u$1gI$ zau}W)9$pllIwc(Bu#Eym4sM|}Mo$4H?}g?vm5p>KXDt0Ykq5wF16Uwm#ILk0e#`C* zPdYz56|>I4=Z6R193Flj5cOw$fI3PmDZ4owe40Q%Feo~#okKu(AJ9RZ#w-cVmDJ^= z8vQmv)MOgpY(V@-RR9|_a0>uYjR|cCry{^GJ~^CQpP7kIDm^RKOnh?iV60K`Kj;uB zJl=|6&-ZW`Xhy0T(LIM@W@ni4%rNZ?Nw>moI~}dVbPmLlZiPK|I{08ZM>*N z>JN+Z^=4>u{-Px7AJo3Oq$e`mmx0rdm}DJB@p3Efk@JVDy?8U(c%Xs4>CluOIO=qM0Zts_bnfubeMv3(S&My1 zt8m{&@DOsXM=pF1$yq%lw8k4;oQe??ul}sOyE*m-lI+IASX8g3@uDJ*@HtT#ptBI8Iob`hNeIfx7V8f%^U*(qIAN2 zUXrs~{RtVIe4dCut}3Pre%#WdiV~%BR!co0mLO1r{h5Yp6Jd^hau91ttd!Q+2sqTq zhKE%D|LCQ$U%`%nim+9WAV=6%J^x!eP_zS8MJUuEv4dRVi1=_!7)_8FdtY4e9_%C7 zmFmN`88ducni;+k&VZ{hhwP+q1uYhnj=t{KW8JT}U)-+N{d(bHH)Ee;8QzQB>Dy8h_;!q=M3fF@*pxlt2RGxo!=PtnLn!$=3YV4F12_LH#o&Xl)fc5 zvEa7Kru?K$X7y)Xl;`j8^(Ajcd6!w;2=~Oa0*ruSOW;D@F^k6;tvG8x4ZrJ$^vGLm z1n+?XIL;{9@F`+9(3dzQUG{{DVF( z4?TmL$#{K(7ZQ^mnz;crd|=p}os9Bx@MXMyUDt8d)v4oV97^hJJm?bH{)+43UGNz( zj|2~$X3UI%4b-$3>J>i8k|bZ`(h9PMc|k=B@>Rhj0#*JNr*%g63jQ!DRR@<_!E_zm zU9}snl+zfZOB_Z>EcL9FFX~zV<7D6 zWIO~M=@vn5SKj-Ry85zIaB&ihm{aq+>@XpzVx11 zbzHu3g(|o{KRQ%rUH@tA1ISs8I|B{)Kt9DU{0`H;kDZDG`&{BW;7N63S^uq6l=bSZ zs(kUzUa#=Jg@F+X;KU^_-W}auqjAb@DCZx8B2;lj~2y} zC_b8CW+8)QbK60Dpj0-4_zz9PJem--?k_~Xr^*Aii2rfu1`Elr@ei8o+d#iZLkAQ= zpsogV^s7b0rhfew%y@z|MOG(8ygxFRm7(SpyIryF>_dt5cJI$}j=sn$2{*EZE4ZKz|AYjfXxA;sL2bV!B$}@ZZyv;`WU06sf$U9PcF0u`e z^zF;W&)TP6xWx@$@6Fh12#aDwB;!IUj$N7@Y{J;ZRn-IV#cg&FT{K8xFuDgx5QF1& zaJdznqJtZ(;4B?fR&cfswphUzbWnOM_b37*cZc=@QlThPhSlk*J+fNOye3||H)@y1 zn18^Z)aK9nShF zkTL(U3*SU`d^~g^Z+WQRmfCgYjKk6}k9>j%Gx$}H$*-7^FzXw;y5+LvR)1u$TPo}P z4E3M%Bv)iqWg9>#2nhBCkdXS*3TaGv>Eo+30ZS5E{`9<>Slw z%$K9O*5%;VLfChic;GR#_~7b3E#5v@r9n6S*xR)h{*az#7LIDeNsav#{!sm_=dR%) z;X$*?&*K%WW<(ms(LSlDV>#W;=gWi3t(s5QHE%alrVc7AHCG4iW-@h9n(1ShTK>o{ zcID6bav<;-Grc08L9vKnyQR{JG7%ae%8@uN9DEmr^Ml(Pqkby_i|G!M0pu=7oU90hyXRO-3KSx(FAO?(x~7Al-$kQCBiR)00HPppsXv&VZza)$Q|>|g5h*~N3Y(&Ie?=i|L+ z+?mnMnvh1Jn~@C)A36Yzk@pa$rv_%nm|D>d_;{BS1!>T@idf-=7^BuswWcu9p=j$C z;;k5c;6#1;I9Wzru>0p6pcr}=z{G<>sT&dTpL-5!GqgDCaDL>z)7m1}HpcrumZmQB zhF1DQQLHy5Wi9tsAHJ~9av%EI!PP@@8i(}xc<>cH`g%i4s?~+Y{MFv-FE7kbS{kfQ z^7Z-H*L8K*_5QpM%Bp}bGt_)=L)R8`T38UV-$U<;JT1gL{HQiFvtn#9v-;4$KFhsb z%f-iwS1gqW_M{mZvVc-a>3dpS-hBPl-v{pF33c9!%QM)bT?b?6Em@3#cq7b>#?D4o z=lndJ1>io-oVL*6*bW(9dEb0~-g`#yZ|J9Jx}0b}4iE5(+K=+P_p3vj6_Ynt~=V1qi|t;5QAFiJUR zpQk>~q)F>f+WJ#0rl}nlC82rX*@aCT*7{&a6t5HviuB;dUzoeG3&0>O+X-0q7_(Gc zy6Z)Cz_zXaDAPa zZVsZcozPgeePu=-A({TjFt=#$o#>G2;Mqy2cx!~keeJF43*7t{i=u9D@6DjeTA2fU%?;L_CVLfw+`mfpQDb}8aT4wiOty#Vu> zH~xj9IV;A6{9RgOXGv;6LrtLHp(X>p$-0)>Ow?>DDwB8ZrCB2n?xxd2T|aOTOXJ30 z>I*atT7@gQmMWpRQD?AS;k}Ng`m>-YTL$)7-1Ska4ACV-maX1EPvX=xl~oPZf;e<& zO|>t%NRLbMgG)SS_2GeLpE@*J^Tjf*c)Nl$w9QgV<}&ya8k2z+aiSMEB*1;Z z=ZN?c5g#FnU2gXif8_BOVFt_W>5{o(V}a=W;5LW}#Eas{Va1;WQ)+ty*w0UDQX}@U zn)Jw%g$>st9hL-w10vMJj~;P^iufpm@kb9m`B{xd#eJwdxF|v&#s%HMF+Nl1ur_gDf*A3kgOR@L zv=}@Z#V`BVfx(<_y^D~#`a4N340Vw=XhNvaAI0tx8#cs+vS(A#0r2}&y8eAM6Tb)R z%w<7ZKQvO280L@;C5F$SiO*%?jzu~oTU?tN_%yoDEkc^n{n_#I^VAgid32WiglEf7 z@CEsqyFh-PT`oUQZIGWwmHdQTTlT^UQUZ5p~RXqEGEp`2RSE5G@_|qQj5ccl-qOB6M&J|~0 z;tG3`zXuSVmLR+^fb((fHc>eOX86p%Airr;Z5?1d@X`+jp;28K|>4WqE1 z%1shxY^Q9|0h7jH0LhGDfVbSP?qIZ(LXFhc704 zUAi4NJQ}4!GtqaDT}^pX1Nn%_;a> z{}ujh+>bwFRxmegr|F&maJVj_L_!S6EX0p?lL ziFlex!Fx;}v>Zu|^#n4NK*rP|cH&ZIYKjwcm@xOTxF+TZJ~xuMF{_vxD-P4mN}`A% zZbH$!%$XqOF!ET$z{0bL*~2`mg&0L*)*;h`LGO~74+&%{fsENe@U{5Ux-(8pD-tFO zFPa$E)J76F<|F2YWjVcY4vE=@xCzB|`0F616?rUTFzQ&u>|mbtLQDgR*^EpR2Gx-m zR_BDN1Tv<9;A`-wwLVS^n`Pn`EUt-RO>HD`W41Ck_?=!fkHl<5+yu{B=1kPgSIA=# zvo=o57Uo$e#B3ljpCZ$QL2F4&6M;-6kTFq$UxGiaAI6DcvrMFnSj4cVHj=n86orZK z#ZNDek{CjmU~XW}1TjaD$07!Jt(sZSJZps*R2QX|#B3lj;^?1BASW%rtYJ%lH?=3m zA;6pB#B?mcn@EfnU;;U50d62MT7Vnc6XOtIh{tgSm_RH6CXkaB;ARq|1$cXVVjKdz zJx)x=0=%8XXaOdWlNI1}(xT;8wWq})zv#qP#dIvcinM6?C6JSr-!u}V<#$(mVjS|j zD^5(u^1F+~X!#|Ola^mMiO~v}e;u94A-~YIR?T!QziettehK8HYI+ouS5~JmpKu%VEiwa4M7GSDK zM>9DD_(+_Xjs^G#iD`l%Uk)S?p|n%Ph#WqUG-2Py#KKC9{Lt?ci{?<%V-nnyiVxTm7!f!?aztPb1UYWQoG>O* zR$x*fKdgzn*IkGiGj<6~_mq&Xj^)`Vsl6mOzDGLXes97kHnDgfL1O;hRG3B@*y$&7 zT+}p>VX-CZQR5RoBMqOk0E`Gt!)nlgItC3S&`~#*7~3?o7vRQqq~Swg#o#s3Bg11Y zLPc)Uz`j0_ZJ=r3pd}_m{g=qxh!6}2&;Z*()36aVpiV&pW!OQ3CA~Hc?d7&{Giku~ zm8Pu#Yl28Unn-&=)3B964$k$5k(p`;b^~aji6m_S?LHmN2^uK64jL?> zwP|QCu8p6P2FPg>gkWM}13|*U(*$c3G_Yq+ls+Kxu$V#ibI7MLk$M^C0t!HqG!0SE zfc69pN6RU)!C0_qXs>1)Ye@qwwu$$CTty{#emsn zR_H=Gv=9{)#kC#gJ;1!0km82yQDT@z)U@=`>mZ9IL`_+=P)mc0!P-F7+mMH%X)#Tk z7D8*GZfuWw2T+S##Ld>Dq))i!^a7m?A{ZcQilBvB+F8ugW}=3`Luliu*}oyH7V2H? zQEvfiF-qb_>QO?MjrJFt$xIU#)R!r0hDT@+yhf-Jz5Pi29W3GD@^V%G~6-Ln*5y>Qk!A>WDfaW!XgCp_I)b z>Qk!BDA5in^AL51QZ|pMPpL9%ChEA96&4b8hhi2b>QgCZE@DndSurtpC}nlTd`hJ( zji?j4tc0jLl(Gh*KBZFTChCNg1&F#sDQhO`QzK=x&fFM$#X8F-0iw|`>Nmle$9NE7 z%NtTxV&L6K+Ywf)o;=V_0XfVA3(c7BVyGF##4?0&h60>z#4R_>FOcK7lLrq85y^uQ z&;&;wtuYW{OCM6-CtOZyV7lrVghdGRz>viBA&q#PW+F<6Ib~aNFx!yhxKoHiQX-NF z!?OuqJQ`=9#Fj>+zDG*LISQ;YkFY3Vo+j8`(+l0ivkm1Obt2Z4ZP-DOkYfi5Bs`Eu znR4s|S};L=6I^(-)j)|YoJgg&bR#D?wDx2+VNt?7O)$fz7iAOA#`ctmwPo9RFzS%w zxYG&t2`#4}zsXaFKZ{9;Evrc79CM?%MS)f36c#1S(*)6(UhE+rwyL8}#KO1jJ{Wn( z(eb3h5?FQ-hrl*~lK;KHdJ2i>TS{ytDM?5y_3%kZY%wYMmJ&OMl*A=A9fX{Oz?P7Z zZz-_zNQh`s5!f_PauNa?ASK^YV56i&6srg<_1#GbY$YlAmI7NxN)j428F}nHuV(9tA~Wd6)c={Cnc|G zq~zPltGLe`0y__soP@x-Ny)d=u*K~KHVR5kLSVB=$;oP1TCyJC6-%}xF1F%ltV1wv z#fo`|CKNxThbWt+Sls*ct^ADQW7Bd9!?a0!uW`Fo>_MOwM`IyTpUPR2_}H{$ileca zT-%1K7=S=6j>cl5KBd#9Ijr#bw24|HZkUR}hg9)1mJstPoi)uP=ESTiji_x)6sY$z znSMqz3{an%S(7DYQNm7mfP`z#gDe+k!kb-5)TdO+DA5in%O=A4{6kmr()e-C0MG9C?sWb(MH6cw6 z#QJ|PO%z&(G&K|J|DiMinY9-T9w70r=~Y#02o(9TjT~A3r6Yz*n&N{&ayws(EZ!Ou zJIlWCYtBHXrl{X2sJ&)*GF&>#@%i30!&5QZjpO&aYle5jx?D9rH)H$i)zAkUSK&jJ z_cne+^{}2BDTjHOvX$X_hDQ`L%o${B1G2v?`z#T&7m3r)Wps>Rx42p23x3MB%;~Z% zbGo%Hb2={ch;Pko!*RG<*5f?5-Z*MTrsH7SWDld~t>aE=Yny3!e6txYYB3}3&zDp> zwo=>gXgGGLuG(hrQH@OZB=)K54XQwW!OOQk(RQ4Tsx=*LRDGA*Pv_#u4vsPmi{j7i zsDNod!vA~R_%j{0EDz0(*#pie!l1sB>*;r4H$%w>-0@NJ!E}5^&qEdAZ(~|J4zN#| z=RVw@LnM0hYkV3%Z%yNOiJN=)K4HWitkzuDMn+G`mffrfHZtkA2x3nwlRts=ghwvX zyxf_IPxj$f+Eh533HCYU;ZyWUo$=#$t6fI!@^wSxYY0A}wQ@;Mx;fp*UBRshz`-pp z(~-Jj6I0<_oya|?$OqUHm!s@rLV2H17UKk5?s6EeO*@c(4>B}uW=R~}0B&TDBmFRe zbiI+gawl@F#6opb6LKG9xg9Kr1$!WKqIoxg<{cE-#d6@fX+LsvM_E%N%hA2t9-os* z6#0VXcA?x?$ju#_P5W6696InN#o0%@Bb#{99I=1&$xj z#{99I=1kW!Y`TuSK#mr(!6{4O-qmF>C%3uy6_0_)M4 zOSZW9cgHAXY{l0&Zqglx9Zg5!(XH1Ry?;68h~v1rgyU%VLr>F2?zP^Cc-SUJt0qmGnc;JEG$!@|vUyk7%W6)@)eL05lB$_*TxYOO|9;|jFXjBaEgOe9s z&vC|O&CxkV6nPOYXg>QxZ=>)GWEb$%6rPNgSss9RpHtw%IgwqYRU0a)L zs((9XMNM_i-K)>5UD1Sm_u{NWO||##&%aya&1x|5i`0H&_>U*gZkeZW*Wr?z+Nwwmf& z$9zOg>*AP->xk)q15+Jx?m#KCjF&9+-zn`^r^9;{h%(?w(IG$#Cb`?S^*(|%y; zUVj*WHXZ<`qItD_S~u2I-!x_`F|Cbb@~kDMFC3WGBIg#A!gr8#wL{Z_fBm$bTy+j;2mPFJZ!ghGk6Gt>U{7@`t@ek}s zSri{78=MOa)S5jm8i>1g;8Bu+xZwli`T}SRD{J>Qy@QXUImZ-_5{d`1rBX5J0fdDd zvO%e+U3K@W3v2hbVwj1KAhmlNWdNy-HLV4X;(5mui~t1#*$UH$M2{UT>4VH391Z4q8)?8S-m3luuZq#mV zlwqUxqo%DuV%8l~9Oh6QkgYhINc4!oQVwCD7y!xI3u`}Wg?@?;8MPlZ%7{^WsA=*4 zcd@ z1SGJX(A!bsJ3E`n>|}Pl_i|@5dzt%lW;0omo5{B1Zd-m!ehTzzzo6x|-Lj2s*~YE= z|9_`WRduUdw$;qt{ayWjsyYVTWedpAv^P!XacwXDEp8Q8OKSBfTEcg^VF)af* zk4`#oi=9tL9Nr>!J{hC4VE9p_nGZ#m$U#|%$tn7Cf5hZ_u%4alx+U6HllpjkoCm=r zUQl-7<`lhnuv7EAf$i^;_D_$K=@1(U6O=h9OVN4P$2Gs3*uh@u;M6!7E*Ky>P*$KK zMW4N3Nb|ad9qf?~&W@AWm8PC6cW@mjeZJYF*}RtR@0Rw_@zwF!)Ng+-7P~cz*Rg|w zSlm#bi^m?#;QqElgAD9n#pl? zP#BZfvIC3&GW57XGkJ&|6vpIr>;Qp(h9WnaOm?&V!g#!%?IYaJ(Bl@(W9gtU9z#q< z^LVZ1v8Qkzcd~>!)R5v|De1v9yb?Pv3t12yr@ z4Q#(K9=q8=wjRedkDJ&*VS4Og2iZIx(mZZq2jkRZIAxD^%9R-r+2o#2a07#E8RsiK zo~-_T%9`7c9x`24Qh;Hohumtc$mJZ?G%_Ss>XKO-!=x#uDSv2|cLhWSdNZ$?DG z814er1XB=nPrIb2Qz{~30FRr_VO(}>R-X}@mGxX;G`1eB$1q=Uy$rDd1Gx)W^GlJ? zJ?)mB&Z@AC0X%Lx2lm+kT0=&FR?(AYNEU$%3~2UOAV^>|cL8g9DI2<{J<`(|6`L`D z$4%$JK08Wl%81gg>$$|ZtP{e3VZM@s>liH{q`QDMyA%@LQ>XL~OP$s-Vz;}Qr25`G;>AmSMvG5X1UMiiZNQ-zHR5b=zT80*P(MiOy$ zP}s0wEj!2#85_uK1`tE+psYp>2tA)p8c`1o&j`nQ|#uRk6>%CEMRg^ z3RVqE1Fq{i2i?N*fa}s~dBAJUH^pAVQav2FasX@ea4=U6G=EuE4{#wx`+&7b!?`$b zDlY5Ad06rgypr{KfrqiX{-c5U*h$jQeJkyqBt5c?L0WqtU81=htW z<`$I=;RhC57pIzAR5pblc*VLnjayX4(v1^?=FXHT&+`!c7VL+Kllgueo@&71zqDY5 zN$icrx`t$_-k&)3I@f1ly~Px79X7m09Qx{u9WSB}bL9(C@^O`4bWX+XpT$y* zmr=U;_S?HUD?^fj@*fs?Vm zo&?}%h(z07fR@j>u_{40p!6mj%e|d|124=hdUVE)r}xJCu(Se&{n2}FEE0xgt za*3%YznJy{4yTy*jv=O4wE{SLMNGLQ1#sYpaP-<@ilV@gOHBRw#WW5$oMIXuLrlS4 zz!4WQ<$@K!fgi#F>DOY4qQH?$OdIlx>0!X(6w||Fh$-GE1CGNYrd-YfIPgO_4%=di zqQH?uOrLMbFQy5=;S|%v7-EVAF@Pf>Vv1!hgabc>16pWW#APT7967{v*}D94dJJ$l z<@DGXa*E|Lfa6${a>}(ZfCE2-O$10!A(|_2d`RPXLEgOh3sjrtt6! zS_sDLSgHeHJ`q{v5*z@79|H4;^KS9`fjg4Q?+0#8eTaUW;*_<~9=%0GFm`Kd;W~7w z9Xg+}6}ao6jEr`~5fPo(4XI^u^r8JQpRweI62m_Bp^qD| zy2*0Ifg6&_6$kFZ3o$UuPo|G@vZNrqZ0xSoXV8WAv3$gm1PTGWz)Q5iUFlu6n+@ER z?4p}R>#rACqR;?w8^WSdny4cw23VjV;yem~2YrYD997jbc+WnZY|qK@Wi4nPBQ9b4 z@f71GQV;PPx$Q^$!fm|y8y~kHT8H*A{1Tp@NiiNGKx(f&!aPhR&?fSZ@KXcpsTsmbFcSb0@E*6jTP zn$P6!L+dnq7evr}f$a65{Y>^g9?|S=h@<@i+3QF9ne1H{*X%7v^96FZ0nKM}_X`$t zJ!rl#<~FpT`7GvoEav*rz9{gxnY(x$+Rx&y-{Niq+AoZ|O%b%8#oY$Y-Gwb^zcB7% zC0#am8(K7XpI?Xe3uEt8G@r@c#p^VCmqpNgf$a65{Y>^YMKpUKilhAk+3QF9ne63D z4`rKgLGuN2w*k#(a(Al5To0NrjJXfBp!rPIZSYvk^`rg5nEUuTw4cRYzs21Kv|ku^ z7e>&27Izyock5fw{`j~{@9WX#`FY`|In{CmU!mNQTCfg|^g}cc?jA{*j`xk`hgyX5 zY78x&H@3G2Zj(V5-7+3>Ot@qRUSB3-&A97$&q?@RELu5&<-)?{<0;eszR~>nIuQY@ z8!RT?+XL^(kc+Vx9&*g5WXE0)dB|Wh_&U=w1RuOOj<9MU`T@7kq)b2jM)Sgmh=SG6 zUiJeo%D9UG86I-Xmt+TEkNe4JGXT4U50Y+3RU)$5fo{O`ODWSGztK$ka&AOs9wh8S zH?X%1y%>|>A;)w`b_}+#f&4aOus*DOx+{g%LzfVK3G@3>rsaO48T94chwcW8$@lhv zbqv24m*E-5bcc?^v=A(AA!{>*z@J+PJcS5B)4I`8(2!dS{DnwCePomrJl~RA3K|NL zf(7wWQm|}YPB9>b$1et+QBv?wB&QURzy*i_`pFW5$KyH0fCT1DtQI$XR&W)zpvgZ< z3_hPz3P@j0wCZlI&KA@+jFtjVPATvdA_R}Oj1~faZXrNF;}?R3>qbjKLvAVX7a|4E zM@C7(f|lG;&`^jJEQ^nlf`)ZD#eftZzZiUGloTwE3j9IfWZOY2&q{b3}3V3KTuPJe+w9(6&U|9K+BB(9tRcG&>SmD z3k?7qq|m^BDkd8WW~v8GJBDnUpO|MTn4f+$?a)@u%Bg6%Ku$KGWrvG7#18g%du&2-_zM7U7A=Sa#ZN{8>I z*!D%|VtesT@TH!OcqOs}9Ztj>?tKU*=6UeSy&uubd<@TeK18&HRUUn5waO#iJTaDT zMwN6kZl{~M0Hj&p`hvAQgo{DA*yc>1T2;gKFjxjt8-As;Hr&)*8(xfz^9_lNRW^?7 zt=qP7?~+@>H@yGzKeiIL{sU5wCnq}h$FkPntU6X1Ty;1iDU-Ra*PYlk%sb}hM z->&eyNNxDO^|QKa!{2*P61ZZoulXI465Mzo8lIP^4bSW5?Z&vi{nQX{d$9;+TX>$k zHhdHBt}NAezc&?k%W-#4cwSX)_$lOjtqnI<>f4Qe+@68ky=$<`7BlV|?gxH`tzS}m z4EMdiV4*jB?<@R0%+0SVSvtnjENqCgj~if3Kw*G|>v@lP98-hXZl)30%7eb1vj$3RbN#5BpwK^(KHv2kLlv(#6C3JRG3Zq0Vuhu$^wyDd$OMJ9|+F zJ5H%~5~wqSCz}Q7Vq&lG~&>NF`o>iAs$0=gh|* zZ2ceWu-uE+{|;&2$JA)&zIF~FWxi}vzt8{7*6+bT_*C_K<=Fb&JcfQlOzs;?!Et|H zhKBDkHJr)~y(VL1uRCGR9-iJ#!uGQC1(pu;zzm>TpN%Z~(}3ztWD@->i1D{z^NR{`Plf>2H6w z{`OOUrD02d(Q=0V0@zIbwGlV<*9os~PU)``O5V}>o9hXszqy{E{^okZp}(1rrKn`X z(xKAeYHVl;0Z4TywKS>*kXf#3V1P2ReCiN?zJD{7uxfzTziMER`dt0FA^z0fGNg2v z)uv2UTFmk^C2~rcdBH0Np;xIiFU+{b7C>t8U*ys5|2$6ZR{L|w{$iGYe)CuaHUloY zMO-u@0c`5^4dtZ8oOB(9m;Ol;^03#2f7pPZSzW>K-z`Q#Tq+jt{?#iu(H^_DVnZt1SpK9{4v>OT`1IwUXwd5)S`xZN(ARYLK{~5pe+;Q*i;R zHPdR$M73kJ6~|d^ad=(>;);5ywm@OUoWQd@C}^rx8gQi$6uj$g!4o{WnTOkX!296m zQoC51;*GX_H-+zcU8yIFuyqG{&XaiLIvhWYCz`8$B54JrAZvpPtp* z#$M{(!r$oAzTVBm;k~-n>Zxw5=YFJ!Eq5~V2!@~V2H89fNR2d)9m*c;O`!Rk(fl?x zKct%;xYM?piQ@HzCcCmV&` z779;GAN3Xr-F2-Ge~x`T3z{etX0VS18ij8v6o`!UK|F3jAD~Vq9z7Nw&r2T*EIbl* ztxw#-K3=HQcvP~F28~Cp*Fxle3lR)4qWAk7Xl~w2*jGnqO=oQCio!&R#I2-=c z7W|8({U!_isdcT(r(599X8W&b@aI|J*I7Kc4b6X&4gN(7{6=a16$||Gy4LUC1|Bpn z_jeMF$knTI#DrPy{wsR?;nyu=211LCbJ(`M0m8 zZHOI&@Cw@odkHl(XT$+|;JQUPg+43z1Fm#h(5@6zNLPO*K0iY%(@2HGTMu85=dAu{YjETYbc|FM{Wmdn-ZbKGE4Ut^)Yt7yzfN)cf4__kHPfioha(R>m8E%SK>`k z{a0Sn=nCB`>i^E`mikxZUtuy=dp)dwm5vq<{>WR22kCLkuFdkebhdunjJCbT6`QX$ z-ps@8Jiz0=);JT+_BC0i_*&z&(ZFks1^}llKbP8%5~cXNsR5KIzmKIpLWz?5U@C>u z3P0uc97?a(Q({K|%iIRa>L!%xAho{K&fuG8T0mv-*U3Lv^hG^C08Q-I{#k|*;-CBJ zpZlHuxnKL|e$zkq!#}^)X#3~>O#l3sUUtXUGkmlJ`QoGdX~p`TKDuA~=zh~j_rpiO z)@b|a{!AbJb1x$vjezB+1q<=h{Rgz47F4vK&On8JTA^b5X@!dAr{D3ebD(1RYC%PO zbw38m%2x|M+E-`bLtm}%v3<3|$MV(hde=MfvHZ0f+=;&ygv4J9LfT(vAVhzy5OVly zg^}g2g(sH37DU8f3nJpL`x6d-oq-7bwL--9*9sBKUyDFl{#xJ{e=XoEe=YE9f1Lq8 z{k4MM_SXu0%U=ulmcJJ8#a|2f;;)4d+FxgYPk*hzxBayO|MLF2pZ>c4efTL;Kj5PJ zPr@-6CR_@pxh zi}m!Zfk><^^?JSK%?CPSvr=;#WROB1tX%qqMrBE2z7#AOE^FWJu#b(VCBR+n=^Zw+ z(bQku)qdY$M;lG8!(AN(IE*XC88EJ{jGzEE^-0)S7l%AnWPpp$!sNO*1hT>dTzmo6 z*Ol6CT3?0=VcEZ1x%4q7&D1n_kpASa;5q{HTTAxBJ`~|Y(?3Uv2;Dbj)h=%SeXDCrX#Ui?HD`_0C-Lz8ttDTsZEc z`isN&hpN9c9IV(MtTucYhh-(v;|M(u` zzgK@Tz33jmnNGH_rI&rSzYB&ws11DxXo77=uTA`?VxSr74z7wvf)yKTTv2qnyfqN& zs}8;JM6mVsX{vhS(b#Q8gG({-uof2*L7cgsd}8psxFDcyu-gw`8=80z==2Hu|77q| zdSt{g8eX(k=rMRF`c?BIfro2b7flmBhVOkM7&^VN`r2uLI^wEnom2w;R2e_)2A03A z!Xa4E9_sXsth!LTtodv^@c%;)X3ehUlQz1F&bCiL9E$T`c+M0-aX|VC8XdvVoQD(t z4O5ew<_N)SLm&O#kLD7$xz3G*i;a%Z+@kQD68@Hi=alldG(2Y#elRfS$e{hCvb2e z5l82>p#wsi!9$=l+EV}lo=*tRU`noHpZL%&Uu03J8XxZWk|kFBGx#@{-g0t?a(SP7 z=)kTG0tuwC8vj%9@5TR2{MTb6|7*P82#*+(CvI4kzSUUsRRFT;LZz|hP86V>4?hB> zya!_>&%$*s#;!d%VcMoIP#?4cA1B)wi?RDFUl-&UiWyo@{Ih zgr6&^4#h)LyrGlE_G({uTiZ2d!}qqn`^SI%>RaCqxNs@nwrP666`LD=skA!Ojj1|3 zFc>g)_=Z_`=-$?M?of5N@$rqQ8x4dXoD>?a4lVcMkpspS-w>)+mnH6N{rPlNcdKtW z&=y184S>KM8p2!8N!6kE2|_~Z##?{)HCA=)^bG~tqSIZQ0Kk;$PyztBL+8;yA!DoE zt-tzHsfjCzK--4tu8rt_DzG8|Q-IeNjn{px?|xDBZ{vmjrx7o_C<0!_b{nnRRaF}; zK;Q`t0{}dLfPIHX>)zI%->T|5(R$Du8X^Q9;sp>)yaKJi`-XsPAqEJ_iP*zlZ|FQJ zVBz&AQqjf>0L&n_mUzoUCxrwSzwS~1IPrS05_k~;JTnL;D1P17`p%uIu8kNVmjJFk2YEJ05M;?~OC{tH zZ3SH00$m#+m|uR_TdD*T&mO>;TX038+$o-rOvtBeYgao26i`eO0fj8TkCQ2il_<@q zF4JO45%mqZc6P;Fn+SqiN$RA~d7e!*aYwPz7FfzE+H&mxY_5%fVTuCH4H`TQ854S; zG?QZcpOf#uD41+l>e$r|0Hz9D(27Bvcr2n-K__qL14Lq*Qpql%7zCFJ1W7+2gtACB zn=&kq3;}Pgnq7nn@++EzXWz$ZxuVzqkJ=q~jH7-*smQUQh;O0%FfgQSm%I7|qITd;5-PC`Mh zsb5fp130S^v{7(V!lk|gYXud=n|g)^-zQwNl}?~ErS*4TS5R4KE1;@OZJPUI3)ZyfQvTWE}cL8HZBP;-NG%uZ%;uDdW%zk#UbD<4}uyG7i}m z8OO7faj&)tv-1f#l!8J&O@zGMWcCbiJ{boGC{1|kkWdFkK*@Uvg}nE7xBR5q*8{|0 z*g&STi(20M01TwOn?@9E^pH|z!%FN+DeQdIcTt{`$V|%TuT2sSRLcS<=$^9)edXk~SlBnkQ8-jHVK}A^Hl|B%XC`0;ttxhfL)k0Blei z)TI`Ok~p0W`v?NTuu%uplZW`^#;*42vL4e6^aH#qC3krK5M2SOgR4`i3+geGI9)LZ zZ3rFIfdYu<1@aOh4sSq@-nm2YG^s>{72XsUOAP<~^A`h$4(@&Kw5 zPzO(+Msbp&4N6{Uh=Np+hE%mELwKNBluBq;lBaGV4NK+F6!oMcjS$tQjl@MFn`q$> zX{o3KV@8!xPipG4JE#MopfnUxC}|JQrYgaKO{3}vj#_YH4$2TFI3mF64qfEQG@%Vk z(7B)ADi4~(5m=qnfw@zrc?#%5*CDclQWX_R0c#QnbhQWs=%9hL&{HWnAg7WXm^)~c zddw6Y(A6RiVS-9gv+%fR7TmaK)=cl^6$=X0O%Xs7RIC|Vu}UtdSoByh5~5g@TCw1+ zE~{AZTY$A(Db`F|u_j$kv7k_*Sa4ueEa;?CEcfLU%M9y8on~83W(pN+U)$3RjJ2tW zDT{6ecknWB9Aa)sXXxTPckmHMOab--7^tAY1|6iADN)W9wvnnNPh@%-E7Vg?rc~Kl z7)Pj(f+@?%KxY`{DIYUQ*;;}GYx}3_fh-@RLp<>@ZYz!|r^2WQ99YxsS@9ix47`}> zV`flM1OwZ#Dk?#L}^h>t;Z$3PpGtDq99x`nm^YMN;6ROMK}ItjNyC&YH|-ld+f@m4T-l(s^97)Zg7 z3FcD}AiQ&@VBtWVAVFooYsOGBbPNR#_Vdq4T?fVrpmM=j;-^Y0ekz5mD_|^a6)ceL zZt)g~=LA()E{eCRY~xBeDuF6JM3p7d2<7sL^h_ctK@&892vT^U0(s;aax6Gb@oGt) znn#i)8Us%mE0t(5o|aRLi5k!{C6+MwEQ|uhm4RZ6(~B`qFUB~%c(FSWstkm1DTGTQ zTna6A*Q`2&H%eSeN`_yf(ZD>ylp_3WmRf?7VkoX6MBu*lNrp zFl%n(L`;~>b7NBI*2d&dM{wazN&1Mwi@4gf`4*I3_FzpHlHD4OZ&b3BVsaVr4-=jwwua`wR+Iq}Hbha@h|)dz3n z?1MLQ_Q4xD@yOeUWIxrkQY==~mGq`2t0hITqOIgDwfGKh+qL&wLcm16!n@)C08)a0 zHF;?+2W;GItQo>Yo`{kuMa_`3H|Du1iPrpOP3X`=m~iC&lR?ZJVy2N(Rl}IH!h}^# z+rew=To9-~U6J_dNFZDk2rnoJgoCAlaQ&oEe*kk=p`E_{Woh)<__7~sDH|V%aBZNA zhZ6ImerxNP zhD3@KB1l2km+FxAj zWzukD_VUHr+OKh)B=TFzQob0k?waoEYTGgq#bn&KDYT>b3GXCcKRE%%)Ir}-)_yd? zsQY3W)0L+V_>Q`^wrvK7ng&n!POwL2sZQ?+4HV;L53o7v>uTF@jf*Qem%U$7w$le% zr3PKyZCeGKt-k%Cjm2=3Y;905$Meloysk@S{cJAg+p1A--0s`KW`>E(@lXmxn2K|x zEDZmWK@Hd)H zo$v`M_Y#>{XeTHEQ?}%^?hSz&fEcxUtK1LD&RK0#$b% zg}_b)SSKd{mi>4DR1=l;ZK7@it}U)E$mKM2))YAbV0MUN`c6QFU9=hd0HjAO%#yay z03gM+-L4_ueggAZYAr~#8E^xbP5|zOU~MGKAW^&PlAu9j2C!W*0E-VRrW zPN%S)@(s`~0h&&Mcm|=_d;+4gPc+N75x}~r^8EuozN71w%Qr+q2m7tIc! z*#*D>&HI3SCIo}zB{W+}V-#plh17ty3ecRM04dl+Xu770&GhXgjRDR30`Y7@v+IOO zWYSkCi=N}flf0thOLm9$15#W%;yURQ;ptGeGra+D1DJyVyu>6gf!X7_C}=>hD}~em zwiLj8Ji)gwG(cd$D4IOqe$p7g9CUR9;7J5#!wHkfq^}SbJr9DoZsGlsXedQ-Fj6N- zT9T$q+5Pl3CCdqj#T1jggeK-XFL*Rh@(QH^ET!hm1mB6!P67iy(Pa5jre#lv@QT!I zI{^Sg{eV-XSd0_8J_TSsWjIsvx@3E36J)_iof8rZy8s%vwO4FY>ZH)xOH-v_ZQKz8 z%~1pVa*Igh6KIkMQ`dB0QC_xDEOqiE01xelq<{?|(cTka1dNeL_Y9gPKpxrw z1n75s`>1|^<|4>mS%xzu$V)(b$OtTz(4J5};DO!&%#H9l;Nu11!c5vAg;*n8kJJDs zJ;d!2cwj6&H-T1$VD6d@##EK{3!2FbKrWPm2#LdO+DHz;*NE89rq>}F`=FilC_dN} z5&LNIG%pQ|67VIP5P6&clx@Nk;V<+NK<A}!(JO+Eq0p$YUP z1hR8F*i}k);Vc;eYGjvEVP?Eo-gX{p5TZoIq z2<^~QK-npQLTa<{W{Sxh+-TfP1`*0BUXx7#5~hp1QVg%gq!GA9AU9L&z%8JIN18fM zKv%#O;mZT}2|W)SF#LT3idFiCE)Mhv4x?zJ&W zw~4q&53BvCDpiX6WAJa23azBOgkCdAFBSGH`J(q@CtU(V6{%noKsugn zx;fXdFegx46ew;g2^3?rQd~bN5W*>k@J%J5(}7U1G_*4is-NWBAHXQSEIs(E(_H@H zFVZB=YFr3w)AZ`eX;acBqD{W5r<_eRn_f1h#zQ0$h;$;&NGQ+^1R{Cr!ppkr!q3O+ z!V42M;pc~H!jBKvw0@rB$hFzyM=UhYGlcw;55^oqV((w*K{W7c<98xl%^InCm)75S_xMC#f9xNYeKLtz3)K+O7c<`3h5bsALIfMSKbDNU zPSV!9kYk_%_L40gFy7rY5#la`L|(w~(0FIFj0|b@jdwRs^qq(vdd?UuRf9o*yv^5T zywgLFdrMqHWjnD@a*%c(Aa4MQ6V0)}6t3}3nCQKV$cCc;K)e@2BUemt+X09#O^S8t zaiGFaL;PSe!I1#*(-1$H8WdE`ksy1(cu&wI^Wth4;OY{zHbxJ9*Ej`bgI;+6_jZLF z;O;Bo2mp&YPZ3GL9Th~)aUWNt51BZU)H3b^;QKHNa&-%a`v7=)5)yovLq3J22D~OY zL{<__4R}rJq=TC?9c;hyq5BP1&RRyp-&KOiiORQrhA>L2kIVMi;(hL`v~3 zk2z`!4Tz=;su3GN*i0ic-GmokNLV8_Wdxw9LK!y)77E(fAaoVbmeXeuS`H}`jIcP# zPQW;W4ohIfD8hts;d4e?Db_Zd1Gdmkk&Odtum(W3m;kqZH`T4jX-cb??p82(Y|6$C zV33BOsESTpBmje9P0a5m83WCxFBkAE5=Iw(*Jv-LL6c#cA|p;^hz1Z~T@*QC*+5Pi zoe7k%YNmj2kfs2Qy^o<8$7po%!gq|!G#z2v0No^ddL^Hlc+rKA85>Gzpa3EUXNrP2 zmw_2z*rq87Qw2)On2eO9oiatjqABv~o|ynZr!oK#zGFP5$p~Ww=%x`OhWe&tBA%yQ zK4?TsX>99sG%6`1Za=(7aqnuk-`HpzbVQYV=sXo(Y-0lGWv>IM#db2 z5e*s{M)d&D79+RgD6K-;Y74-=B=vx-- zW$6RPS5ezC$tcUT(zHx4Du4`@Nm*%HCUbB_U;&$DnJgQlEK@BkQw}pt%k%^+(YP6-SnU6(cN( zFO_}4!|6ku^if7eVoOMcj0a2uW4b;-ECVc4a!uO|h-HW+5L+Yz#292r1glIkL@b@O z-J6PD0gMc`Ok-hMVe~FzEK>|k1B~8flr@T87-vb4tjw+i$hP-V@iCy0@m41N(7Oz? zGOa9nmw}eToucLHzRIE2s~_{Vl==Qs5j@+Le_9mI4jVo#ie^Uvg;EfsCMOZcGZZtw z3vi6b(5Uq$FWCByw*{{Q<&9qJbAF7`TGX4pzu6|kvbtG&>x?;rc%^5(;0uJCF#LLh zx|4f6COOwOyk0f82w7TIRMoj%(SxrSZH#Vsq3RJ2$}2EP+wg4Fla(mHfU#QO4UX*& zKFbl?>m0GINGGxDmlq$ezJOs{8Y4E0^qx&$L=i92ar{2MsXnv)8juD2w%7x_EBp4t#?djy#_{zVd*0KzyL#eisU`nYcNkz_(Q`Uv*^Ms;jf{fOD< zI%)J-406zDUrB6x>J%D{M%(IALuhm#VZ<LN?EQnH3+HltaVZrI6t8HB9(?80d7QMlPDB^} z`B3~8KAylZ_VrYxth?Ivp^rdfXmJT%K2ZF~>gd7Xsf(_5R{l^bZ=67%^?EW=?Ky96u{ADqGX18Dz3(9T4;3}dtv$qqpoh`uX`MguE=MHaS# zg-5VZ7()esaW=9VM{H)2569@j6&%?d$8KB2FLVgDIN43Tnx2U^6e`te;to_0PaKC% z0C((V0#0Y*U4{+cUr2Te-oQ34*hT{{0F?|bmvsv&enADC2HM!|BL{yqYZLhqjV^qF zW1}P3F0A-T?CAlNanhT~TG)bAx5-~%fym#GX<%HMlfRm^lUk=tpqOa+^_?Jo{n3Tba%2UQ1R?gcPV%96g!Q!i`jnj_ zUylMwFEGH6st-e`)@h$%MJ>TTk>EBlUO=wAbw&kmYY`UvgxwPY&m zY4P=mEZLP(6Gi4_oP5Qx_i;!MnJq@Kx*OLXBQ9JRru0;|Qq3dM7on2DVw zt2%(xlDgJ^EJ8m39K*Kl7^danT^npLFl@=fOU$sZU9)Vp03IRWIXMR0-p-9ubYUHb zbTHoF*pGl5ib(Yd@8Zd1nb>t|9{IKoaAPnR!{99s2f5of@O&o=EwT5eTmr3M2;6bP zos(~1*}I{0zD>EXDm$N?qgKSoyPh&Qc1(b1CX+YJOv;}1Q=vghKt zQQvMZ5fYO>ipgU2fqfaZu*0V`lV9dx;JY&y3Cf85HeWXePy<;s5cJFFQR0{z*yKy) z!oBQ*(-S;-*w;=splLz-Pkd~}1U{x4fRibslS%ka5`8iLqj)d&Ut@j@_kXw0j@eB#qUeDZ1oSRPa?AH{8rZ>?{4E?h;W8*)jp*s5o8$*->;^1FBx+}a>% z`!{@xBNS^Ez>uAIIUTp=joa z%p8oVaahvru=>OP4_(K&Lv!d}N6w%WMndAz+<~`-S;gGh;kJ%I#~o#Z&MLOfjH~S- zQ|>@o!>nTH?C@E`Jg%r2G-j-v>6Ns3^XAph?3mb&9B1U!&wNp^ISYY_3NsAObSYN! zn-|RNaMuy(<~1Yv0$iCR!Ps|$8Q>C@tgzh?*IIUk!|sh(n5Kcv4rCoMY+jn?30>h6 zOT6ZM4MwwO{7Se+4>Z>0HG$a?stxKd^3rvTm=r)^#?+iT!dwy54YBB$QHU9M<`NGb zZjKps6%=JAOZEJwn#z({EodVG&M`v`GrG(rMiNaUru^3nCDnWzG!$W^4k5vIJ9^ZS zlNmGSk}Qdl5h;$zn!*A^nGb|gAUI@TC^LguiosDiCkjRCWVXjGzGBL`c0coab=Io{wV%pQ34kl~lF|ZdKqLIhEr_5sL2vjCPvjo67 z?3c)T9Ri;GL22|5CrxvNrZSIe&Sr4z&*@YULE=zJhRrff&glR_C?W_wnJ31L9^$ku5YCQtWhU2jS)3E#gf8%w zuou&{!=sEV5W=bvP6;powr6~Skai9lAxsE}AZSKm3RozC3200NXX%A=o&+?_;eR0{M#-%TKaPYiR^_8c- zGING!&bJ<`e|X+~fx3r0PrvG!y?FWZre$CI(wDyX-15aMp8n#(#uvWyOylyqzPs#& zZxlIqWX%Y!_4j?#FBtBd!fy?M)P{S4;l3YRXMf9M%;rO0k%IdM*H*Q`BA{5y$2lqIFoaz&UUj3h^CN{Y#t^?xQ0v^8%E)ivp*Z&erJCs zUTCTxP?C7;&siC#CWb8K>2E%gF4$b+rc)V=!jo1Sl5CdoUYrLs!T$NtU>3f;gSh5I znx_dcG&etie?EA!5Mzb}3mzva&;iplXn00FhWk#U@H96((3o!g3xZu*icy`CnM&Y) zh$jb77&hD`lxBDG)(oXBVueip3q5*I^2T`w0#4cCJv3j{EA69gqVmsUH-)>Sh|Ftj zqHj32{s3@|U%wMS=G?IGV+xBg@ykWue&W~f#BUUXSb@OxJMbH$DbyUrG+tv919|X+ z{Q>M?pF+mTLGT1wFYqy41kZz?D8X`?Je*>G&&s>``G?12JZ=UzX09upvM(< z0eXxf6Kr}wnjWy}L4SwsLx+sj_aY5N_)Xq&8Y^*F>BphDo~fJeYv6HS6H*ZIso;K_*YeVm&>P^+5 zPGjm`gNuwm*2&(bEt4d_#m+~Y!n@m8mtHDmL_4^dK-m}|`6oLGrHECCE5A*Mt!1B}5f z)_$Y#e+(9atu+}T%yqb+Lm0F)_}6$q{6*q#&RJ~_u3|H`u9Dt~KO460v+u#DGV3HR zX5J@kgMTKiw*ZMEWBy2D_+DG8eyRNd)|kh^*lgx>Q62j-}0} z_*zoOjZsahGu~42M#=jfd0jlfh&*>&S2~2da_aSsX}5~J_owY-UiPA#I=dX&y4DSu!q2_eO43KpB;5y!#DWf zP%le<59Ih#4*E|7oDrAXwQ6KOku1I zb%MncF`&TNH?b}A{0KZ5%5%V0?Vd-wU*%q%!-;^g=VWkXi|s~{iqTzd%x@IqWZc5Z3j!1OTkg8F8Blb3)N5O!UZ%s_;I4X(tVxu$#v!mH>~*|*hkUF+l6Mw_u1 zBCU}QT)!Td+$&OShN0$|gmwt0IbMbLajke1&A1KsZQ=io{pBL+7Q^i%s_w^_k3mwZ z2U=^)-!*u?G(+XqVlv+QNbt>LEoc;r8i&YH`fS(Supj$Dq&maT;Rhen28<3!4KhDA z9>hPko4_a4emTMfqTGP}PNdLO)9T0O+4U2Q4s6ew;La3ZyS=*@SBr5U>w|fI5W8O2 zhIZAp)|cQSc3k!)0tN*2Yquwg1AGK)87u2rgV$7Juc+F9u^Bb5ReBciVV~YD)yTB< z1ZtwrMAlh?I@RGDedXAl7!}?;SXAW47F)I6@6+7^Vl0Tn@%!F-P!qdi{~pm$aMjUk z18-hH&7$Qu1zSUk21h3h{!k1ePm4rgL zGVdEzC$Td_0JPwZ1HOb@n8uSqT%Dk*os_FHZ~?@@00~XiPL8X4opKMGHTpp#q}Mc? zsO3oeC^P}vi`8({V zc@g_*ei8k=+(4QetGIu4a8>)Y#_ChxL!kAZ&ih+yC$B%(-IgdB{5;|_Ykf25TZ&E^ ztGx}xtZQzF;dW!Kw~43Ns~2&1U>(Z`!1uK*43h1WAQ(b<4$OMFX@_IrQnMb<@w$+# z8xJm$C*!<^ZL+XI3m(VDIGUdFxP;am#RMYe<7%K}J&u8++4~GUE)31tJIvD9z0bzu z!t)`v$YEPmuibn6a=q8$aqQesWe&Qta38u{?@!=ydInRLGJAJju5-+A2eAuJp3dDF zowHgT@GpO! z_pZ40`m1WaA$fztdLVuP>Q9N1b+Y(9(Xwt9C74LXSzIZ4mSC~D9{j*O3=YFr4kirx zyasc)2LD>s2UCrNmuPQ3_d}}c>tTbPI5bYx#nY8;kW zTEb`@L9aSmYOMO08NQIez*x=ogcvQgaKr>#UShnpfaZGjE@iC=5RC<6aHy)=CKBzp z8`HA9a)5JJaP%T|oUrRXiL=X)zL?O(_$qQbX?&l5yj$RL^Onnb;w5H0+$4 zrQ;|e@c514MREkGS9>Q8iX`AAEM#fG|EPSPvedWIJM8jPC?| zqB;WiD-&^A+~Mt4Q1ChDjj#eu-NYV$wC+c2IObett&|5=urcx?n< z-J4(BGk#Su&#Gfh40sS$O%8-x7*tiO*a}w|&jsCet$sk-DI}0E4jGpGW*FCn2n@L+ zszaR&UTZ>KoMaIv>ZSxW7OK=K+bcmn;*@SNFLJ2yC z61WcG!l_a&2mk~er!aTaCY~O^DNG*v=5{G?`whGW5s`e~bMdOBS*|dxaY{@!376u0 z9%5Ej!<=kgC9jE-5CSuQy9z|<5pe4yFEGMEebYPODgzCEN5iW_JYeE>E-f*3Z6Qca zJD*A_{p3x=^;$DoQjQ4GoGSuTBQ1*{<@7)txvgLEE40~I#DmFvG}DDs$cJLA^g>aA zEp<*gM*C?0V>_ECEqFTa3L|TL{g*_sPvO`XA9_K}}zh?-~AL7}Nv}QE` z!~ZacaT@GBHvlR6-9leavc*@KG`W6`o+zDJ{J?Cr=y=n(*O< z0t+pj;bX(Vqp{6uMZm%kYiay8-Zh~L7(Ef5T2OInf36Tuv#8F^{?DOS-^1P_5=RR^ zuE=<$s*l0}0%6QTF7^>K{3zk*L-flQ&NIF>CO^6kCU!lnTm(+86aFm@dp{&fv+4vU z3PowED>{RrK}5S4C_|!Bo$zf9#_AJr6FkMM!wZOX{*L|tr*UI7CuUhp;EvyT>qfKU zkg@vPC_+md6Kz02v`ncL92GPQic-((^y^S9r9`Qb#3x5M0XBaZ5NO;_YfTdkhd^IJ z$M79QZ1c~GuMjtZ1AJQR%k_iz5QMdy(!!7!m3HMClOkGnj!9XKJs~3aEJyEymxz|b z+ps-4F|^4cG-e{^_auIH(1vjjuW&32H-;8Gga1!v3+D4OrPkUkj*m~^|8T;6$Zlt^ zzG}8buY~q0lP@~J!T8(J9-aV>jg^4Sub;;6@x;&2uF#yQaVtewHj)~&k_bW3(WW8# z@oW27v+97c{IS~57US0wjbA@7gvMQO-#hg7AEFXoupM=+_^`GDS&A^IfrWh(?&^vO z4N)92r>fw7{`K4}W#8dpGwJuK`CBA$I@fN1*~Wi}1TiW{&Z^6};9vgx|DU^He|{JI z&wl|ITrBfPWBcF!O#j=T>3{q4`(M6|&f$OYA{63a`(M5jwf!$%jNz`s|MqA5-+o&A zehEe#{?~eOn#=!=@$$^+f5&(!m)HNI=?wpi7lls$%U8u!{q(;IZS8-FwC#TdY1{t- zF~#=3!V^b>CPx5= z0?YKj{h9t(fo1t$4VCGCZKy2&YrQhJ{qMji|2v@k??9&i9Z>#vK>6Q+Ps9J3UYAbz zX1>*;*HunHCF$-@%rCH!+`Qf+L_Q_(4pYh;dUtsbijD^G}l;k z4khJ)an{uT8Tt=nb((Of$@4k=b*G~p@z-ppA24AIX}xR}r~RBYUw9?{`jy_% z{u(Vaq`i#OcCA(PX5LHqZ0(jg@ZCKs{K-j9QquVKeQx8|@bGZ;*S`G#z;c}$9G?cEXHmO0^Kkw> zPOZyZ9*nrZ$yYuYLUNMjGd#>KsyWB$o}v|hT4($&Uc;=MZHG%v-(xh+{ybw|igMz8 z&KILLUxQLU88sQJpTKihw*ME?~>!5%-(^0!(dYL+#>L_dDdkF5MAT7 z7Y>~KKro7fyk0!a(s3Tn@-Px?#r7<<;U=VjSd0`94M+j87%3nYAO(bnFI*kAOu>(b z&Y!*)^Om2-^Nj~tobd$~PqDrIJfHn#7C)fCwNuBX_d`70z*B+a7*C^O0a*DAPr3Q3 zf-TL{jXXWe(k7O;ZeWhbDPoY%Yx!`OQ_c_^jGjwIB}NizPC_E4L7u7+DK&w%9$Ss$ z+5EEx?BB1&IQdy8X`EEb(LI{ggI{Yw;TRpM7t5Dfk0<&|Wddz5zbrb;(XyIdc1|g? zd{(ZHoZcXK=HegbDnNoOXPU(?VGEy?2?3MLIF)IVE|SzSRikK~gUmwQqzn2pntr3- z9J3a~q%oI;3WYRDc8w-Xrg)q0mr*SxgG)|GLwq693PHl9phpcQDGKJy_X`4l2EdA& zAIS|1B(P+E&i*-m`~Sec&w|S2v+uL;iV(<)edp_c+s5}^t&M+q)c!0q$6|=Z42uEA z!CdSn_Wgpg??Qf=JO>{($cqdVqS_S3l|OQ!#D)+Lp29!-A5iq8_?boi6YA;SCrbA8O(y!I)Fe}N*J zt_3C2tDqzu{yqo znHb%6XJK!*Pq;B;EmfV`3%;M`@^fcTGrEAbzob8e=P zA0&V$kFOX7tD-8+|;390-(Vyu$`a2a0f8;@rqAbe;7=4TFHW zYc?CJ*Tcx5Bd*qk4RkMEirCnl^*$UcoEX%bgDEVc!n;Sjgj3&@@M9n6bTS%}g_=6- zcQ3=smUj1wn}KTt|C_Op&5hq(`0p8P!_uc9Uex_Cefph6Yk%VgG{K54U*z;XasSpcfdi7GH6Z*8su{1pppuR^ZDD zEW$E43vgKWP```BsO9hwUMSAB=u>a}-~>D$dXwJGWde;K;0&+N;18M2Ocn_=9z#ji z2sEBSNtOsSrjfb*^TmHm1e%N=T!g`wB+l;7Zi<0AcpZO%m$BT5--S3<(|6HsgH?g`6k|qP zdinp7H+r|1TgVNx|BM|RS=mRA|r zjn$QEAC1SQ`W3f6bXBcicXf@sud4AHk6IXW<)o=J-r7dmUJZTxSBFCV@)xeE`G%`& zz9~CjnWHlZ8CR_ElO9XJa2n?|uEDcKO|O>`p;M9oJ(c$Vhg?EVoqnwK~*23yF89#19W8Bcevs*^RS? zmCsZg<(m@8E#~AGrg1qs8?}&yp$mN@CK?xcKoxmoXih*fguy)|S;QnH?wtih^{|O} zubdhg{6py52-6da;32nd_AVFOlM2( zm3~|~ga0(Y?zqrlGn|V~u9o3|8mz{9O-8N2hCK~_o*i+02YUG+heOQt)B^}N=I?^Q z?H)Wzd*t8`o>>XK|B1L_JrwF6OZ<07{k?X5v|ujAq6{NH z7M_OozU)b^wEQieKa*Iw(e7_wzUR@JLkEmTX0kkv)+&<~4g?4wyWvgz3x#ZPoQwDa z3xkXmQ!#sn+q;rJ$FuUiR0Wr*q;>^2wMjq{I)|7f*gDh87zN9qr+CeYHG2t@qXh&m ztB#c>z6au9=4DM}#e>1t@Bay+rwNAJFeXnlCd;?cjBeC5m_=C+(X*M~Ow0Ajn2er$ z|4M# z!r|)A-}ugjilSiaJ?=NtMHH9S>!F)(rX%F!>c7O5H`6UFubGNRe~)kx5egP#qk+{w z;PuIX%C<2VE>p^y{Kq%{Q~I zC()s=`V+6~VoTzmP!y6^1_8+}Jd^c~jdztV7Yg4|iC;x`p>>J6zmEjQrvg<)(8#Jj zD7m6LV{?Q8%Z5q!(S;4j4B8FGVc3jRm#l+=OsMS^ZjclId#K4n{)=&24H^I@H^^}V z3goOMpMTFglP4IHzXf1`qbqT}i5SFH-XAI|$$B0XJ0>KGHRdIWZnQ5lT9PSQ8y_n%cR$WD0g)%RrHMGH}Knu zfSvRt74iEmcgFV&PP$%(oFF?Xh&GBqyybonxRV6tvc5iud83ok7RgnCdGoOHpt&A4 z$nPO2$u*%Sw=a@0jD|eI*5F$KHXFe|#>Hwdhu_2aKWNol)LxY)l}^DmONM z@PILSfgq6lCv7ii@UNu*jRyhW9%JJ{z=xmB|J9h^b$Y|LQGfWR<*_prMYZ8uAH`3N z@!LaRH{SZ_cB>zg9_k;*!FmBoC)+R<--#aMMS4c9A6pl<70@ zbds$00&Za4pc@x2z@K9IB_rz#XD}>oUW>Vd`_^U67a)Hz?#=Wfh>BFclEw{9V;^&7Cc*twRHye%eW){5(UV72PFJ;_!gYZ_ zKol|ijvU88w3}Ihm|P7+z~(>{qe&>IBX*8s?3ZNbI7Td)WWo&CtlegcCr+ z`&71LG`3x`-4cbkpui4NI@cAO-Y%2@;isv*$7mT@pcP?I9z;e#H28^NxYqhbnl?)k|cMDzc6xREy zWXR|msi8Gt=D98CKTv6rFA1`{%)H28+-+KV@Z=E@9$>iFOp9D?BzK$ABWaO878Lh_ z45hUB@%l5Q>!WHBZ{^Gqp4@?Y|H?Duoy;-gz6NMFpKSyUY(bd zsZk{_^D&hUHhma*IgL~jxlgRL%veC9vvPVfvN9vTF4D#bcO*w5VT=omDm$lm*s=FduEGGet``FgPfT;r8~ANB^<_X=~ZY|+5? zsAP+lZ$s$K9KK#W5K=(U*(*T-sZ`!*z`hp@#*U4WHyY;P{aksY$tWt5d(<-`Ho^Oa&F(g$IRaid2>fY#pBcAZU{_FZR_#;Qp%so+0oj~wOj zutzdX6FQ~4I@k1Jm>Y7Nh6pGm z$ILZNl9}2mx#!R@%yVr<+UaBDCO|(SCKdFC3&D$>bgv|2P8}DEI>pR7O?WIdY&2}D>)5ZVPbkSvQLj+@$%%Y2AZe9cPnwVv7`_Ce==|N zISJiFu_`Ua;^!C6Xqt9RWwky6Z)&7Yi|w|OT4Q0R&S{OnN@dao^J)B<)0*)v%$`bV zZ6r@CSuvd{x9a4{Rz-_ z=DGezdsLVeXP#^L1G-cZxST!}&i@k;fw3}P8|eY@p%Pa}N@YM@La0sEQl8VY)&Oqo z%-47{!!Op&I%TYu2?U^e1*0&Iy}$!219sA3fMFGnh&t*F*a$MVJs)Uk<;T8g zr+Q|0XY72>YJ4fOI(}`FAccUQxzeQ32vZ-v1Djhs*5Eoi9JrA z!w&W@l`zS6jU?HAP?Bsv$0Xav$&nGwL7RCt-)xo@!mV7465NDGHg^hPjLj399iIjx zu8s$_VN82Cc|iJ;4P*)V0Jem9j!M0d64^6RYQ8Af{7dW;B$jhb!9)YEHG1++!Tk2AF{fadopG7u{r(Ko%pnWcYmN6y z+V5|9SpK$7``zx(k@ou_6DJ}y^>gV{lA2K^PE=_Pqk&g2>B8g6b;+BYnAu3KMWV|I zgnx!N8kn5IM#DEFi_<+f_kJi(ug^>sUQtM@aJKr9Kocq3h(wwhS;K#sGix|<>PFjU zAq9<{HQa{~RPvBBAElmmu>tOsjN)dd=8I*LUzSN4vl56`TsDEY4Q*V{uUttk@n7c5 zC62_rCLX73P=|C{afK3+|1#C7o?T&QgDNX^H1KNULvA&))oH1nX~iv2zZ$Ff6cdcw zkh+nD_m??yjU(T$iI|mZTw#Okn#g(TWw}iFwiZYP@ zGG_*Iqy;t+u`-Y=M3B>*xnRY=e9?y7Z&Rm!`Dg9x4fgdW6#GQrwG!%?6T*4^>e853 zFpW9&6#i8ys_T`>-Wl2IT6m&!TS-+yV#(*uO!bU_G0K_5$+*nKuZ|SNgwEneCqoS8 zV`VmCNvvB@X!>)T(DA}Ep;xF(=nr{R7FS6_%*hcOgCWKxf`Ofrc)VHBEzrMuh56Ad z#+e`82H&k2K;l~&jmMEH-GY6k$F~Va=2Op_Zo`aGvLd-n=gTBehb^b6als3YkwE>^ zQD8H*@~4x9U8%FjQs-yxfNE#DUk;GTI4e;*3_Ru0b>^xQwc9+5j3Z~e&7jV!Oy3Sm z9;E}TRQZ~-(zn}C#Ssz|n#tXUawv1+ob;fibLvYZ{F1Mq(_NQIA`cs`a-l0_s&pt56f0Ai#K2o};RXN3muKE)M}#vU z<4HMh)7^HGI{UoX{erU3+W&hk z^5Yt;sffZjd~@vaPy4GyZT93xwEd-`&1Q1?z^mzYM{@dCk-7;nN}lBOHWoP?Be2My zr@sBUqAoK}ec&bZc+$d$4w1U&>H^iU(-lVdSCz8fhAD^RQ?nq^_U{(GZ)UF#Jcr&- z`3983lP*1(xz|4xWz-Q0u&LsFzbWD=j=3ZXoQ+V{i~`Nz3E}87j}cVgDMG_=Fle9b!K6p9b)54j{Ak>Tnf(`QF!$K__2CD8I#M0} zYc78cR;01Acot>?vFtE_r8hNAd;<`NyY^zG_Y&iCSm@DN?J6^PZgYO5>%zAkQfE`0u9}{Cd8IcBUz+9xucGT|FwXxzy z<7^Vk?o4X4?IB&;fwWDb4#8O}6KA)sY~c(*Yziqnq&662Q^*2)+!S)av7Ho>my?*| z{f4}oL|+z(oJiXwQjkp`iHNjCA_vkA5~<##HnFxyH zO;8K$ag)da2lgFzudJj>l0@>B34N{CeL0b~Nu(evCW(l2r>^Zl+Cd`Ko7CQ838p5M zEtFDWJ1U&9^bUqVHmP&8U@PCKC$)H4v>F$ExIsH!!EYcrDzPHlZ>+fwo1NmCWyU!9 z%uN<(1K+4|JJ$*NA{(4Dvukmlv4$`(e{N_~;L*9hvw=tMZJn_OHnS-3a7}2NZ}TI; z(BA4$`$KI9uf+!739JhZhQ5#O9mD_QJzCZfjCHW}SKc^QLsw&c;49T3OwaK0g2dlf z438jp$dBu>P&m*!&s81zDA>B%8%Gdbp43CV;6ZX%(E7Ib3AHff=qLEI*a>kOHZ8<=3&fUWa_64soO{mmJm)#j^PF>^dyb_ZXhHv@9iT+O3iyA%$za-)kxKTYAt;yQ zY47m(N2=NjmRFEjv|Gt;u&lN=VN}oTDx8?tI;{2>NWCF7K?wBD9%E@fLV1ETlKo;>UFUKy)J&36k#2U z#h#O_tB=%W*XwH6>sqeY#R~MgejceS`DYdu6LpE_k{c|{RJEU3I>hrov#b{B28&-j z)L?l9zv6*1G^AvU82ko{NPu6hEbYY}qi)D@J*p7<$J=_`zF%4R1p{Bvk63cu-oG)R7N_@(JpicyRpTLxckzd!1W*>a|G5`QWLUk6gSabE zHX%{yUHq{qHN#ToR95}#P!t8&j&1J&2IL>p`LMF;7bcmbs@fjyY~1iiytKF0Vkv@9 zJGDYklB2k=6}l5)?IqanSgW=p+lu{2Q<@qo1b5k#v>BJy@+6nNpPOV$j4zPzT!3!3$9C!Gx^?rP(p)9G+ zBJ#2qTQHtbnHlxrb|rXOk6Tr15S_|W%Vk!sUW!>fzJ^&VWEOj~9=FUg>sc#hR=)le z>SotRN?8F0s4$kBuje|bfEu{BCmZnNm%}&}h1FQ$vbd`30JCT-ilWpky%cdN!#zMx z>!laES*~4{n;WZbMOgZnpMhcoIv9HB=)pZJA=LomVJ>GoN@Cb>yLu}x1guT)!3;t{1DAy zP(op%CgNX@n&+rWWdM{#dJgfDe$Q_$%aCPOhY%IzmWz05JAgkIKyafTH*=Kt@EN!4 zTU4^J3&OXogT@Utv!j)QpNW?6;44U)mFyRUg+RF%gp!xlvkp;QHp3)kLR85%fLlbA z;#*k37P5aPDngNnNGSy`L=1#(5CjdZRXlMEzLltgN|w^aMi65o8i`0=q!FS|eSpfZ zAbBK)+JVHb1S*24TmV2Vt$LJqnE6y~M;#IQWYc^g!aj;G(P)ph3!+#N+r>{k%91E6 z?j4>m1bQW&V6%SYptTM7F^g`s%jWkGAbE@IAXCaMA-3zseT00w-Y!1ieUD$vM!T*R zg-APV0}hd)LV{-jBnX|0n^^COCvG_%skuzA88%WdHZsEE8);`FAe0rMk;q6Rq4fX> za+W7FBA$qeNQK@=m)=NZU`84t1*`y-UtxHXm{(Xm*w_J71W~I20K>YFj`kk*GJ3BG zb;J)|K0t0(M>r^4A3Tg&>Nx;Vegl&AC`a$0755I$3A4j<*{m#`fv<_3UIao34U5sr zft!!~JSbX6(}^Jtp9?3QW?+C@f=h2Fj?Y?Vy}`<`gM#|1iys5tnF*DRRji14^aSa| znE|pm{;&l)++{oAvh_eyXVNs5xwNpO07_$?rBGDo)=oIJ$1PU3@1Mj-*WM}BjvROJ zyDx3>L>2WEwxm$%(Yg}`#IqiIuusfaJ*VnbPaw-#gg|hm;eF)8R%9}1R-BJmava{; zal$}Y`CLA}b8!@$R+A^>Kj52~;nuo?ok{r8NNaIw9oSknO&vl=dNmWkT6^?dr1 zF=Pg6w)vgj5u!hw-eUCP)C%;9sMkByjstUWevh&dYZjFd%}Q~z*82*H;)xsppLTjz z%tKQ9>KtWui_`l`H4@&{&*BQeR;PDmEpDCO)lUn^ye6mi9kchf6`X$ z>oFd*qXirnRGd%B*XkUA3ZC7JXHDLzs`s^jLS+EFgU9D;YnVdSKxST(*VBO1dYG6L zj3)1k%}5cK3M9egtvtu5GK@d|3W~HfEaP4CA+DrLQmA?K^j2`n$(ljc;|}E=R#uJ5 zoZ7D}qs8x<2H9dgQuPG?3OCvlCeW3ShgCc{mz2lT2m>N$R8lgC5uLF&l-l=Zy zYqWm=Yypk)v^7k{Xj~>+Gz<|mZa_-(6WWc^=+|lNWUpy!SjM|1h%4$`FKGOTNNG=G z0AE@_JDaqOD;CyoHIFz0JGk zVk3s^sp*Y*n(LW$MPdrlTM-}go9Q-!J zEqmICey%4ESfA#Rje-9FiEiR=1Jwm7^%iGQEK=D?-l5$k>&_Fz!d`s^ibws`!D43#4x>^){!Ld)LFou!d3{LU^(GC5E>SgbYoz> z_@3Tu1)9_8(AE%$TA?k@@eWn46?EWR`${Qb9+3eVL;dT$#qc+uKvSsjHTpc-8eS!P zLGaI+;0Qw-L{{_$an(D6+ZtDfyf5xyV~{ZX1++CxdDnCa*t{kR1$$XAH-@V~i=&>O z8C0&-p2)>L4oZO*(H1<7-)1p(MZ+BJYa+OG07Mp1;*uyr5U6_1!{!9{kyIM_K`$6L z8VsDMJu%w*%p=}nOoP5NkzGLaJ78GzVRWpZ{}Ey!l#lmC&g6i=v!rwz;c%QQw}BO$ z>}g(R12=@)L-f3R344uK$-z%>2TXs3A5vQZRM<0{1cj*Q1I@!Cs2UZB?nl`7>~-W2 ziNHM$Nx^_Yf)xtR;~vh43C51LTo8>kePyO`OB=7>(m~a4)z~dPGaWitzf~GPf-%6u zbc&cq<2Q>Q5mTy9Drly&^mIG44b$dGK7^fVYb0M!+avktCFawUWPR;=x+0Pfx|mN7 zEaCvRnjkkjjHM-IN|R{?7o4T@iE8jExsQc zl~re0b&2x3vsik-3Q(4(2d4r4JP3{oz00=IrEPL}noLu)30aP!jWr#ir;!!u@_hPbkLRF+q1fP;38$5~jTUMJLX#SH>9`QoGbFs>a$%pilB1@rI>WnOcCai$=v;4`W z&rsHJRtRU)wgXsl^~9`t>*-ZdaOs5+8!=$$UqTjwe>Z}ifP#_5m8FkC3h}h+`!7p9 zh_LMlK7}&z)cz?dg^w&yaBH2x!r0SD3U=9cV9>A@uyPc#L$87@bI6o%D3fPEgN8rb z*baRia{wroh{6($Bb^IA;J;vR6fq3e{Z=@>kE1qBz;JfS8Yb%v_QTXsQyXu-+o zd86Ea#p!(jap%}K-1`vr+WreiQ!pu*6U0NFW>fsz0O}3LOs@8y!&?94a#h1dP#>GT zljo|~D(21-ZJ)z)I36xkTotu%soDo_?Wn4qDlzU=n~tRh?I?kn6P`DyO~UAR5iU12sh zvkf=RQ5NENm&;tVR`Kv$Rc^U(1kgQv1K_d{uZFptTLCY$EL)HWhJNRTricZj3w$4n zP+YDeOka8ZfedOl<@G(QQAtnd#6;9kEk8Bhz5e+KSRKR!Pw@#q)P)twcLs zTJUa(=hFSk(qr(lN_;=vgB~owDN%Hr@K(}oF#+f&VQ{Npg7FT7Q21ZRXqiknFDQ7b z8+vkpXF;v) zkOw+kI^XSK2Rvu?E$Ar-t3?MEj8J{$?RI5Vr`w4A!;S?X0vV(lpD4k9bG(6mL7Lov zGXds=gERgOCy@#8;%16NWTa!QN$hh2C&%rZ3>JO>3uICyYuWY}@SqffZ=V ze?UEN+fWG_GXe6#*WUu9>5wUX(;ImJQ^TTt<-x6L(K|Iifusn4;9D0;miS($~@1TwswQ7V3a#@2WZ=+PkxKfau*BIK$rU zo7!H2H(2Dw(%(_+eM^OF2D3x0ZP%QtrCz=PU)XfNtMYs%>zCdOJ_d&Mhgxky>qT--I+bS75pF>MqsJmuk&%`U4NC z8qQo<RD%W z7adj_W`Q8B`}lv+K9~6ZxCdC5_#Q+Th>?r237}t)B}OiNQuJeP$N{yt8l#<)DM&6$ z7wnOPxvA^^ytR(>mnWjJH&Hz_#QI>X2T1tJSF>UE(oZAZ^$%=PZR)StQM?v<5a@%3M0JF*7kUzphyf{v;#A+nv5}FH5S%X(0@*{s#M#mb$fcCD-VJ_tLvZLv$*40qGiG8_iw*i5ky{#Jj_4Jm&f)zdUygHa3q1&z5wps?4rdYMi?8z?eMV_6JJ^{~hlAKF{bD^tE?QtKRc>um ziAAN^n6q*6#x@wKlftdgAqtiru{kCAZl@R&ji~>Y6ZvY1Lz+f zMTFp*)`C60>I3XNe2)5TR?jq_+jM)}SmyYHI=$VYoxwTveD7Y+;b`i<9emV2a9qHY z>#!^DgGu9OjKff0*A%>6S+&E_bm{gIV*qbjoOvHO(|4qAcNcA|djoAllU~@9z6aVC zzGdk5i1y*EE?*-qp}wY z1XGf!zLcD@;48mBhjtO03?;Gfr(LMNL?HLUBz?A03NNYY*cgfk{tiJLuq_2mxzzB!7^b=Hwo^+A^KhWL&o^nI+W zM8-E38(N^C@kEPrc$c{GO*5%jW>5>Z8sVaMaj-uB1B`jxBZ^Dw@T@mY(?%PM*4LZ~ zaT8!MTAkVsF&>3_7wo5wFVqJx)-_D-0=(Sntv1Q-+~CU#Ip(Q%Av?KI)hTp~T7Xv| zsEN?m*%ecKId=)&0DY?Ft>q(7pOweJg+N59Vz~wSRA^R?H`*>LSDH|2A+EdN&x}87 z=s$#3jA$|24jbM>#%Z$9MC5C`u^bTkGVlD7T`kU3E;|}RWddm1I7f4*hC`E(ij(*` z%jKj3yQ=!cJ1H^$Eyn(;0Y2PW%-P^U+yyPKqV9m|TSJE=_!m!$iP&pQXhBTLUNwPo z{Qf3a{{E8oUTyKLMga`Ko(p_e{bC`27&f@|(%QFpxQvbxe9|)u5GDJyx$?oE18T*e zlKtw_BI7s9#Lq8(E`DBoMf`YIiyzMh@$=dq@$+g>{QRa%{QQz0hm!pw{R}1BOYcI- z_Ry!0GkH$koFM7ledEA``Hxip(nFL3s z&dTeXw4c&*6LaXN3T!*(c)FAy=CEO{^_!2vlSE9P^d~(hvb3OFXM7-o>>z8wZjvNs z&_J5^%rXhWJS3CJT$v=fOyYiZ;J( z;}5WuX6wWm6wC%o2i zsc5_M;P%FiT83Mh7I0(9$vZ7K0-Krw;1;*{A+vW{eiUc|aHre*Evt80VHB7N;65G- zF&g-BU-ZfKs!uL(G4+Fq_^))h7rXHk{-gw~gJM$~$-uHD|D~%A&dTNQSY^ zPtEoWXsm9+hePkruSW{6Olr0dXL*C0d7y&wojA-oT~+*Kr5d~LJg=> z95se543Xc(=ZN2_J-FLF44HUm6b=%c4v+LO0C?+Evl|KIAO@d}pCL}-5U5Z1Spr+* z+4AAbym0sI%DFsxtI{E^Q^d7Ar8fh(r&H#kFUx5LAC4f>HV*n4U3-hZHAps|t zI)!>G=VtQi5Z5WINcLiYA%Ovu2QkDsf~5}N$%1Wo11=c= zr6LPZ&m>B~J`|)P(iuQ4(su~-l>iL*I0oz`$>5@tfPGAfcg}Nj1Ovo%inx~N^kx8+ z1y5{<*8$WwQVF&qHwN&u9KEI>VzC;@!=StZPiU;wp9Uk3D* z0HLR&N^mnthN_Yb*us=}w?B8ZV1T$z5!dq3y%}(s2w-T&O8|zf&VUZ&3TxDB2vi8t zA`&1+AL`)b|sKwk-f-i?!hbtD;$ zO9pT|+%S&Z`*#Ce9aLXA*UYO!T&IX@IYc;76?_sEge$lM`FQ@b>A$)+K>hhy_6FF2l@4*8BCh56y%}(IZ-7$sS@s4*S8FQ^d8r zur~v)?hRCs0iR)SU?R>vrxaH@a91Mkrr=I|%wAcJJ8T@<%PL;oJE$f@I9I*8ci>QR z)%znJz?EDC6ezhLbyZ!1pMYnkpwj-F1!PYZ+39FlOq>VoF<^CJZv7irG&A&GUr?&5 zmt%I0nT43Qac)<$I~fTvx5K(Yl^u?eSSf(tBiT}gX#w1lsJEijv<^ishCV zMHdDDO#&3NDr`=On{_e)E`vRv@NxzB)5s!GD1=z@lsMb$C9(OKebX5mDH=P)Ch6B zvZP*NrAAJcA*4qssSx?9>Q+i>S^tu{q7PFCQBu1&27$raHxQw5q*U zl%V>hPUYzfSW$wcqJr?;>i#9w&suJjP7RYXdK&+eR;iRKOvJ<0_5BNKYagBtqM%0n zTb-xTg)j6p1eNmAOHeBk1ocxad_@KIY71X%xF12if*Z?aHnH@{Q&wUNUy#=<%Ios} z{p|XxWfaubeg)NT?!(kShp)=DoX_goBqX(hk_zGLPg1RYm^z4(+OMx#My7st zebs78YDfQ)YVX6;L6p>febovwHH4-U{i^xECT^-KCyCIhH`Nz9w{1P{9$dk@t+;#G&%0f?!)hDu z_Tv)vBgwtC9F= zh9#TD{=mGO%WX2NutO&9xwwq8rwN#D1|o%qbp$_+leg@4LjM|fcq5`zx$0T+IHZbB z91j*}3}4mEdhry`?F;iXX&j+j=28mZ;SQmvpslLb68Nm8nm{bLRyT3U4UYr*xW!H= zUVK!q9WKiQiZA=|Sm|=Kgjpw!!)6&w4y&+CS2c4v8`>^gK;?XcvWTTF2{hj23zJ20 zO_8EDrEv3+xQ0;q3RJ!|q23j&cZaAKm(6So{%h3%LUgp1dzAecYvIEvTE*~`dz24S zQ1&Ft=tQ9Il_;`}pbM-B5iSz(l|V4eWySEjO5v7|SO71LMI%_qzDGHbLQoi&Em%1x zo9MWpr9GmhHnzkX<682g$Yz2>OB5WzB0pP_9fHa}W`Rgch>yBQ*&AyKJt$i`%a-03 zE$v}TpCq=_ik7xSTY@>1EwRJH@8YTOcC>`^$73zQKHa12i?xLK7TJ=RsC^(>dY>)z z>X~-5Bzp$6iEa=ywX-GiJiG%fkxNmU4zQ*Dv6e8~kS+a*eu7=NQa^PJem@zm+)swV z@29LQ_fyv3_mla`{bU~eezIPL$_wQn91QprovcAM9SSp7`lUcJi)gnGUg0q~{G@JH~&z`N>g zhS)eoa`#LC6Evz*nX?tJIlJP}MiRQCYD`zxOFgn`m(mu3b!el_Ydgrx8B%e87g!tq zz`pPY28BPgAWmi17w9k;@yV6$N8rgTnoMXFY-o+kd6byV7dk&U$vZ|1|KI{^`d&S5 z7wm<1wd?CR2!5YQ09PPcW#(;_pZNeQyM72ETCiUffM11l1>6^W8vK-**!&AVYEl#2 z7V+JQ+7vQ-x|3>dz0hQaOQJL$$Io%B$LrrO#``Z3?N?;Zrz#r{=wkK+~yikux%| z9bY0Kc~NAHie{uWH;p>59+$R#GS^tsnj~|dtm(K7=Mb%HZnB-)6EL2-h&n{Qt;1Mn z#|Wf@f%n@E2Nug}TR#`6wqt0(cIuNrURYF0Xuuf0jK3bzF*k)*M+(XLL5iTKI3>yGzxdJu1-xcGQ~qMZV03d%iM6KAXdn|l8sTP#ek zBB9y0BrE{eV?Jp>ZuRoOcEo1~nre0>2Ts@QN(+Q)I%#MxGIa}Xx(OMMqV|fwLBwL~ zd9B%cUWbAjP6ZB%Ct62DpuWS9i{t71u zQ@xGhj=m>%xrRFBfKlG0)wkhIiam$by2=oK7&CrJIxIANr;_$e*$yaymH z%dbmX;tYNDN=nN)vL#{K32AAMNXw_4cIwg+opwf~rT=N?`lz&w3LoXPlhV>kX(=0! zw5+%;X^D3i{FIiP)?J{qv{PCt1|%&juS;6uoQ~>NO3N8aOTrWw(qfKC%cq?J>(UaP z0!O5!|0!^1R9XtcyD$yjO=;<%v{VmBTKv}~E%B~P`%Ue-fGznHmihq+OY3zBOPs$` z-9cf&rPpj6!UD0ChUnAI#&uzd&c-9c(*JB+O!3idH)i7N<7VTOnJmi8@&UrLe3Vh_D#0OIG527xPW;yVxl#{s9R~)^!O> zyzgSY>3x?n3QOxigvD;YE@_GPUF{Ck z4{ynjL|R}JUX<9v8(GvG$Zk6cpL++3+XLxso#I6`9;pZz+rpT;wd0*mDDYzhY+~Af z1~;gl@2`K1U`<^39)A(u<0DcN7rw_woF-nq--`Bv<20W+5R20c zbp0?f<{@r@DlR_LF$0HEJmh#7J2Be1FJx>dMzh!^a@<4P80R2@HW8i49WHS=3U_A2 zo!k4RUOO=!aeFKK?8JD&?R~1xPK@W>-i3X3V!Z73K4AAwQ={86W?_3q?(SIToi-~9 z%mI+QJ63q7&5Z(c0p#wE)!u1OM}eaO+!t6FA2YEK-AVlG@x}=`;Q2zvPAo+1#6reS zEM)A&LdH&ntL}b(Ct@dVjptk}$aQ&h(>NJFF;=|fF>w8}R9v&U0Qxntu$zSIlXob_ zz|PsB=5^n{V}vnqdG^}o!!rwm#^ysa8DZfP5f<|qVG$M)7Bl&typ9nT0lwx%&d9({ zMpy(mIY7p!Xa-)@jbVhv7(`fz+#!sx5RcU{!s0R`Ebc~x#SpBN?UeO0!eTxnEOsKo zVjm(b8fCSJu+ZB>gvH&6u(%U%gi$G>fgzC4Au_^Zo+X8(+Qqe0T&Ih0i%J=8F^NA< z-ti!!E_9;Haod+_y0`Od5QYJ&S2Q=xWEe&r*XDFA5QYJ&R}ck}5v7`Ib9XWf<4%NO zh}>Ze!_cWl7{+CWVcdr>jA01F(5dFy-257>&5`OO2*dEnY7vH^w}&u{`w)gP4q+G( zs)ylq@-P{Ofz6!-)#6$zuG2+KMx~6&n8Y7YjnIq;)wu0THQm?wHHg&!)qYZqrMEgR zz3EsWRs&S~iGs+8Qq5S6ag5a%hgc1fJCd;)I@O5P5Pdxau^J;0tD#fPSdIBLh}DSn z^-Ho^#A@j6Ay#7uVm0o@yX6SgBk|68q>R;=XA!{~c5y8g*Xbf~qf!QLOyUoyM*K#E zYTWjvn%?RB8U%EJ>UL6%S7>!yS<|sVKnJL9Cki4XN;LyI?q)#8-3aIqxnmg6p;L{3 z4$;@c5YRCOFQj#Q_5L(m7G;ZTkc z%^`lL4EmU75m6s@aV-_s=^_H8QbvGG;tz;MAV`F0-1a4!t|bPV=xQ^m#=E#WE{o|{ zATk70n~8$Rh*HhSkRgl=8G^_Vkvoo&Av)EF3=v&D2HiFeks&(OTo!{8iFNhA%W4rB zqPK_0kTHl1;ZTlH%^^NcMuyC@h|mzbxR#3RbP*;}DZ@l2@ds2RS|ma>Zu?SA&k+Mn zP;DpGcwtw^@DUvggpYt~J5dlBQK}g}GK}FP!w^0qa_?sNh)y-aM?_!WiSUuT5k8_* z&F~Q@kyu~sSE zgp@?6#%*7!=^0|6392hdb&$j%#ze;gF(#n8f+&cLDAjy{HQWbT&Ih$lu8+vGKoK+8qp~c zs&U(w>NulUi7uNmWu0i5xY{E4|0EW$0YuM>iihhxa~`IoYj89PpVH) zo^M{OJyuXHuBGBST?DvP$^e&1`~lU7bBXjdZu?RlXSJVbC)GE()wT+%#kEvir;8|< zN*M(+i9etk!7vf3aod;bIII0t5`B|f?FoWtaV-_s=^|35Qbx*5;tz;Mz)XZ_-1a3p z&T2nlCe=5&)fOQ%c5y8g*Xbghrc#E}OyUoyMpR9NYTWjvI?if8VJFo$xz$E=4ZgMz z9Ucw2DaGA<0h=BTzNuuy%~K-yW>O>$2khYOB72l2dRR_hw#1qBCo0I6ftYm!*tji- zx`96sXWRiTy+6^y12hfg>KL69G4p^ucz>d;2Z+Hw@dh6tg!&{{eSjG1gHln`4-g`K zu5AA?sgFeL7;ul*I6K2ntOx`cpL3q^IVTvO!)KAY1vlM<3`fyod*BEIQDh$Cb7UUk zbKsK&j)*4^pQA&EiE>N`kL|NG#V3pWfi2+$ey|1cIp-OlbAs_Xl61u9NFouR1GZEI z_Fb7RTM*N-uV1zxmn$D}-bD3^=B84{=k!_w*uwZ6G%Yfs4&=410f^Qx2@wt?)&RC3 zKIiId0K1|cI1KSQSOcK6v{PEz2O=%@`s3Rj)oB>!N zyd=IJD-`GNR98?~Iw&j&%NP(A^p6x41n20&67T8A+^a2P=)w|R#)t?@fND>;LZZNE(oL@fa_u(G}q-OU+19E&~-t;#Xy8+&|H@VD{gkzWdU6mghmcP zT8anFb-Bq`N+2y?g|Ju$A}hs%=DI9szu8@v1$12yt+3mLz&knuYU8NU-=bZ<211aT#cUz2e>Z|su+JB+nKz>eGdbgSE2y~pjH+wS&O z1QP;yHgoSeo^gvqbSGEf&x}7S{_Oa});3i`etA~wX_-84v?!8B$d68GJ;=?%ajKiFR(Ls$E76@2cAS;-uq;Ey*-4eq~8MtAERm?9zhsC7#PTfBM%*@Mv7$!#I@uwCXw3rD|zY zyw0z6P0^fR$63|8)q;y|<0;kiQJ3oJG1c74JDXqiPB5z4gd`q7trm6FoDyg4y0tLQ zGcPrM92|qw=1Y8!+~z0WT3mC{3^?z~$4SwXd0g~lGcQ)vbLsvc&QKfM>K5?8Udfb4 z9gjF3b$rY57|-E#bOvyi{ZEK<y`;$q^>&~x*=S%{g;p6qJ=_y+* zzzFA%yS1ah1_yqp27kh1leImnr`?YO?@Nr$XtLJl(DpgC`Eym@bNRA(aQ(d7451qI z(sG_-z8WdxqjN*w20)+|cV4eIRZE)$K7GRWKM7q9Cmg>#XSv`<=yPaS#)~;-xP5c- zML&8Un5$}M*E>`5fwkXQ;>%1y{}d`qRrJrBh3pX?`fls-bej~3m*J0hT^X-SDQJcoeLy{gTb!xz<=aOmrZ4rxvv?xMh8c z(XifWM9Sk&0;J|-92bKXAi}L36kQQofSv_jwjE^H(o9s}6vW};VSsg9J+b@=wXP&|lzb>NnYO=r?)#`fo1dRPh}){~XPUfXkPVii_i8`OsGrVWE2y zPiPMv2d6go|Ih6k`PcachEnfPm-l~}92eH1yUa@Ck!+}_#fOEaT6~E=O2hW?&?Re- zZ%5c}Wh@(;*D0kFk$c&flt@5B;k4ti`Ts zwH8&?W?0Hp&1sqCP4hmM;(gHMeK^zUot)+LKA7Y5KAh|HJ~sMz66E;+%<9Yk@lua% zo74Lxmlkkn>mABwN7I(!E^V937H~9eO?TOLJ2i{NVO#IYYeCi!mvJv($jU$om+=#a z*5XY5t^oxcwgV`T>d@Mpc|9nQTXJeG z4%<$)XG`w^#+F#Z_=!_Hz?P72BPM8Qts~ly%hv5Q9&{NG$%f9L zA(KPf;?j2M4LP*k4%-$s$hTYW&mYFTS$@+I^;{f zX&d4R>O%LRlh{K}(L?5|4Wq{`=0O}smaC5=%b<;;{Hu?n{6QQ?W3M)j#tzyzvR-{0 zSqE<%O}N@PnlNbNsPO9JsBqB6(Zs8dqlwo)j*gom^983Dk>pPAvldYIF?3c2hL}qW zJDRp7xok%qO&=!%nC7xwa5SA93TU>=_Aye<hbpBEZJC>Yv8Ab3LzA@PIlp9o&)_?;Ob2gedaVL^%EE@F6t zEGTiz0uNK7IG!F553R(IhF9=#D>1wQhL_mEYkC&$LWG3_6~YNbP?&78P)OkoGTFc} z7bs@xD8hsfh=YYhP*{4paiWiJgrx^|qshUnD0-&{D1;MsB zp(~n!3}b4U$1S6&5y?M&6yE^P0@zu|Kycz3^^vOQUUWtQDzJ-HKzSRFgCb8AngvFzJEaezf->^4+{ZbDO zWKnoVOBNQ~-{4oJJPF|oxNQ7STy}f`Ta{O}@U(g!`?^{ zKZ@X}okGKfXc0V#vo-EfE~hL<<^i4t5h>jczDEx7JVH{d~kMfBq4D4b!+fg`x!sp`)_lI)DHK4qh z{dNs#FJ2+b4;1soep!B?$S-b}17`bTvn<~q{<3$(`P_@`vM5m3MU5SR z4fdz$D6`(F8_7?7zLNYgm39)jQ%8d`AoEh|<-wO{Zcr$Pfx0IvEjB%x}) z$j4#2I7vyVst1>=EhVGMvp^kHzY4i4JM(og{B<(O@#1!wF)*9VR# zV|`uqoT%q41&<$eYA~I6V^?(vD@|CD47hCXA#VuQhscTc6jxp|puF#f6E_;QV+{^P zw&IAXDlDrWz=|F2&f%d{EPUZKt@o0-xMVzTL-S#-lqEThJmYa!n!|Vr4i@-*3F~~q zO$GQoro?Am8q~w7qr?GgtS;MT;=pIHo`>@uP91UNVI7et+n>*HCeOfhoWz|vDoP4e zF4$VIs3(eYNj9%XJXo`PsLOZ^3wA)IS)u~{v|v}Z%h=7;BqI-i$4s8{au{gRg>w}a z>`KBCt;>~qMDz*>_;C=ct7`<%&6OC}3p$yO8~ z?bSUdtlMG*5Y^Wihy%#SLp?xltIHU~GI^{g{4Qe`QXO1*GEz_`SV%q|J>=2=#c4xT zT@rbr4)2RmWylV=qf1-SkT4NEgnyh1w8CD9>e-M8s$20 zlEa9jh#(BcZY)WWKiv+anDVi6vHE~+h{^&Nb8UOs1AGL_@9eH4t~{*#lY{3o&=WcA z2#5~LNlCz(FBW%MQs;$u4*Yf+Ls(u1BE%VpV6a0JoW_e>wK9UwQWTsToFUdGMS)Af zF;NgJSUB|>qJWI#M=ZGx4YWZLP>2{{85k?RY?%~uE!eizX~fA`)fdaeqB|OXA6&X% zyaYD|RO}w=hztf|!@+?1r5s>&*d-Z&1uY>5uDs0vLJUT;3>T_(x*-MZ03ifsop2!p zTnaM=u?ipS0YBauA_X!74j}}!SRas5a5$nQe zOGA59Cv;O9_?jm{CmfE`2^XmoU}UaMC-4nNADz&BojPH{r_c!;MuVjj3a_RU4#ew( zOM|KtCSFA+RK!a`yiU-2K-US-K2e=ut$)h{#}6}|jX0TzA|aInMIk{kNGBoDJ&>*e z8x{0QkAOUeHy|AW-3O57pLNDeKa97u_z`2T8+u{nbwW@^+ICs#_NYlGqA_zWEjeJi z6^}FEeQbAhkj6~5G}pSNb_pXbQH?Xuj+kwZ4MJ&>qqypZSmMeNCr6vam3CLw8aKYA zwN13M(#EnIz6cUVQdYSsY8#1X z%q~ik2pIfCycm5iW(oTk!KkoDZJ)4vy2+E)PNErS>0(AMYT$%zi(;u;G>Ii8S4yqK zk{+$BGR~Wgh-iYn8ax@L^%-;-r9~Nh86A5gWHe6i51NcZix0YtQZo;-j842Z8I=o0 zT1Rr4STg$b3r4>`J+K9%YoEU&!t*L2JAofn4N3RC)Pvt)dH6l9BrG}E4S|bQ_icCq z1-h$J@i#3Cmxs)_e9PK==tqVY%y0kof4|hzeCSETw&p|MH|!2v41d?qeCXST1A)`r zaVHe6vj+}_pQ{L5l=E5qiuo*l#e5dOz2>vcho9tRRr&1+-9|MZ{x)W;0Cei6DzLHU zy)+hp&O!`PGaAKAHlQ0V>`wSzGA6cs051H2!1kJR!!fnx1Jt#FCQdP=5er=81QrE# zQ-+!`H{puteik2&-TseAqsBt%sOmf;hoByqJp|d9x9au{&thJp&uCFXJWCver3*AI z*qzOX^a(9+Zk9HWH75l&p1J_AEMDIrpvEXvl8b|wHn&gDe$0I;_voy}ESad$7u+l>7J%FQe!2;N6 z(FfXIfdP!O=zOR>fdNc5s){q)An0P5)QfyT_Pw0O@_}gI%ZV(j#%cpmz(iIw9I@!p zo|k4l*7I^2D_SKF;C;fvBUxwG=dwbDipGVV7tJ!hDKd4{n~Pa`p$W1$$T1<6MAPh3 z4RpzVmkw&I-}O-+3d5vg)Js3$8ize5sia$au%hFyci8KGL$vF!JnTc^_Xca&hr$Rp zj12pHbba@qY1pG-c2s28Q^)JWUUx{y+G`p1uml|Dhh_gq#{Kt|i?aXaTs7AJ`nW$B zX0W0@Q@z%4-#y6VUV1pu&hKa39}MputZ{!ZjFG3i>xJn2OMjMe&sO8c{Xu-9EXTcc zokYi9%eartOO0JUI0jhgJPv=>q?>!aL0bBlm5(#f$Az5e+?6Ht$t&|vGZ%CTMa^+`FwO+VSwFB^8orp(i`YB8 zVlLR~6>|=&S4mQ%8F+Wm=j6QSl(lv_9PxRS&96U%TcWw0ZBZBlBMIA>!3y zC6wFixqO-U{&w-l{D@KIXDir4{1eQf`Q^&uWG!7L+dzEAq89DK zmn?3@`Qa75W(ho3HRR-TnE5_eH7s=@rp77!eg~g>-nW|2?y3j45Bs!MPKet%A?|2i z_grC$1)IRt6}m0ht@qG#hL+}a^9yHKu({`N#m{sEM>QY*F6Ps`@5-3uOR-M&js9X_3#Qb~ zlM2rqa@j63t0NVtwJ^(NJCD~w_^$Z9 z7VnNR*>3?Y@EuN~_&qSwfi0M9C%<4>CJ@=oHbU561(R;xUIZpN<0tzv^H{EVQuUd3 z@&q}jQ=8Y88akK-OkmDY?RqwO2#91BKmmf}t};T-2vm*%mC+djU&$2Mc!8MUN@fw} z)Do8l%L@XRy=>;Vj?3X^IxYd1Oxt8%idofh%zToRM|HIY9}cMUHUn2#HN@ zu>4javYCiP1a=(-7Pa1m-jzZ!$r@#d6xh?uB1foW1RjThM@l}}ejf97B7l*D>v5nF z5fQv(7JNuSfZ%3`2&QPgmCJWAVZVZMsl&9L7+zhuoCxo}Ugd%*{LP_UPGC-d1C+~& z@GkN(Ub%GtcPSSgmzZ*)p(1tzQ!dY8Zr@kA%*O^xvUebUdQU

rBu0gr{dp)$9jK;ki@2I)1XOH>Npw_V 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

|f&y(J$e?=C-kp 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%0Djb?EO zs~f;BMAbMI(CshfknN5H5IgrwwEwJbKlY*$2it!ibz^jlwr7UF4Arp?CV*{EZ~7MJNn-5 zSG+r;@4FA+JtO))u^R7fqVNAsglcOMeZM{d@A1+1;Z-Pq@UjSft@q%4NA$f+;eB27 z{e_EAzcl*Z^+LRV9DP50KHguCzW@6?ygwa%?{_ZVXGGr{rQrR+===QEcpnmdAKnV@ zy`%4~TjJdreJ?u;?-|kei7oKnCi;GPGTvM0_sD$kG&^xj+9~IQga1Ij`_%al&PM*# zr_S%qPH%SV{Ez1$fA6KIgr7m7_~z94A8$tf2mc|TLiWU|^E19j{+LteAEXeuPo4kZ ze&k<$>imOyk>Bjp`7IitQ}$kRO8TFUL;g3X&i|M~`N664dsia=iBsnv+=cuxr_TSF zLhL?ues2o()u+xsNTF_a>innALH^!0r=&lFgW#J}=da@+_~6v}51x(uCr+K;f`ewv zsq;VPpmCo%zqf(>t52OT>$hg7&VRZY>hDdhO}~5(R@)Kr@tnrA9q~Ifcc8~$6JKlz zHXJ{6a*g*`1J8NJV_zfPzXEAh*TMt{Hh<5=JZ|Kc!rJf*Gra}9;tbzGYJH2-#r)}$ z?CGK*qDbLPc+d>oGQbSnhEHy1X5bq|v=ENRajN(9ldRxvEs%!XFBeRzQQIU-uiKI^ z(G0wEiFaoM&&I>q$?=A-Gy>4b-q-aCS#M~#9%oElFIm^S3YbRdt7Q)k;DWq^ z(1izwJkUbq_jSTOyH%e5guMbIQ3a=M4%;feAq`*!9$pHw@hRYerv`?fa*%6PI=z)J z4(Ad*+^B`m1mR=u_n~;i0f1$L+d7DT8(67(HLd0c-0)aV)9<)l&4Fs36jLs72xfl& zxi0v}Uq7(>n`ry<6)8I}3G?ow3 z{Cojy5<@tbL?dBiArgZ424Kbtyjo>ysTT?SM35B2H-vz9wYum{_=>Pz#y5w4p1rvy zCytKo=c32GyHvOfxRBJRR!Z~oYT-Da@lt)O6e0}}$9#luV62Pk@sp2$VD-U5` z)#k&{mxK>);yEmWr#}IBjsyu&JURYVt1zCS-6zD(r&}v-{Cae`zBQp7$>?i!^#m@` zs+I5ch~zyqi;|%ia^IpcX7@!WMFfFz3%5-PzY$rjx-*NC%$Gk=S3C$gX(?)OH93;m z@oQl`R6N*mHNrQc*e4U8!5+e{luvB+2|wctT&f#h*kn5S1329&VX0=|y0koNJHcEJ zm`J~t&np2EP<9@fRMX`jV2mfr477v~qgstSN>!16XN*J^5$*t?xl$EA2rv{kr?oA# z@DDu%UoOQ>kI+M&jcV3@!9T4NKYohtB>rO%ZVCLq0L1Q#;jVmEqZZ7}K1)ieKaPlg z`Ulg~QEKZ8LcRJ~(hXk$hYz%^3C;>@y90mF!7=~Zt7N5KW8a2ypu>AS(eNEbQSb3a zhHslZK+k5fm0-j6PBu;@fjQ8fW`aHHzF(s%8rK5I=rqYYG80@WK8DYIfNFDrta{hfuzF2Z1~>e zc=T^Ie6Qm{Ep4%zN0x&7ff2?yb}bq-+Rf3U-eZmhHD9i(8!~B``bRYB2PDCljPYYU zR|5Zr@!aC1wT8bH+RWqB+6)hYoV1qK67SELIXNu>%=k0}Dh3<+-h=K4HlKgt03!#wmjST9iH_=Tjgog16x@z_J-*rz0>~w$z&DH9BN%u?wr~Gq( z;9(F`X!!YE4()g(?CTBks9OC^erwd__|?;9?AQLp4hlT4_1ZJgYrl|StpERl%kJ41 zM86v`U!-$D1=8R63jH0oq29u+sDKpF*{#k%6R15Nwc)dZA4B!jZN&OMPW%&d#O;uy z@b?Jl)aKaH{IywoMCEiN7j2$$=V3ygX6xv)Y_{T4eQN)r^)QP= zX12?``xRT7p_9dlhXj}GgL&x2dYeGdx0v&>V2|9hNXHre*OeEU#H#>D<+yRK< zDAz6-QwKq8mpFW@&JZ^dyFEo+{i)781BM1{*I;I+VFi#_;-g9s%IGh_JW>`KA<%Mk z7lYKyPrK^@>prBrnV*THO;)L1f-s{%*N>$Dw4O@0%M_xF_?B60f-ZKrOISIoc)Qr` zc2n>#>oVIS6M*{hR}C&R+Elel*TwE15ov0^U5xx7R=A&5m-%u@1gmH4GJ7zwIv0Zc zxDZWrXYj6gVT4CRg%$V(LKxW#B{BsIk)I{+M#JC}=`-z?W+6YL#KI^2G8^vK?3rp; z^@pogtA}H&Hn*$Z8?8Fpo(OKXt9D10GdK~_g!r4-y6X;VUbJNay68; zXf07^eG-1g+^y1L-dd{b`4-Hq+%1})DiXr{pa3zRdZG)|^L(vFaJPB<@HOk zFg@PVG;&q}m)GqY@9G+u#+tvT%N@H$==L6u*G0+V2~t`H(|I%%u*^ka`3z>PeIfVt zVsGaLHLpk%+m}How(qzM2zJ?g42rGzX;EykF%%=9%W&^vJF%D7=U_&eJvV&7)&o=WbhrI{~4zLG~myBQs{p<0QmYFPhB=2A^pIsF8%f3&;IBn^p~`Y(EsUa(68bD zF%$3)+Vm5C$NKOqpQ%Ux$>2NYN9aEd`1687{~s3M@3i~>FzE+gb?L7MfA)tbp+EKf z2>qX&2K^fTK=%I@n|{LYSRZ~RheWOMciG9{JFX7HZ+#l@=RG0xcOw1UZTf#F{lKd( z{q^9_{@`TvpBIMz!o1U{C!s7?RL;5$Bz^#5tVpBE7NzkCev zD{cCJBmKauF8%f3&wl?T^p|`RhX2CHr$N7le?H+Wn|{LYSRZ~RheU1qPX^x+f#3Qx z;Lm$p=r4E_@IyBJhe$v0s!M-8__N%*_)kf=@n z$>2L8@LQh-{CSp^f5NY_>Hn4V1FyRD*MmR%-ILM(afJRkr$N7l|FRG8_uBLme#iRo zD>)=;(|%pJ>&dKPX8=?QB)1Y6&A4vH7 zZTbnnV}1CQ91^wZKN);S1b*w&fIsgsJ^mj7{A!#21Ee2#)uq24{Mm1xjQ%+h`ae7k z`ZfHmr2j{oe!}lqAATi=L~Z&{2EV8}V*i{5{CST?`+tK?e>Ld`UUliO2Y>dzPeOm; z?lAlpJ~$2fHTUU;!eQ?u7cX3Xi=9k?{l|S<-+;$$m|Gf8@eD4m&fN{g}?BT z(OWFb>wU5v;p>fec$bvxbVh>Ty)p;kLK~{@dNMrhFdT zS3abRy`VabVjVNWGzR^)~c^0jw{&k zV)*zZ7zq3c{UXgdqB}YvTnPhzy14tQtjKQe(0Aj2M z|1LlbaW^7bf3&XeVf~lF^`B(@2X+0OOf1nmUKg?c8K|$W)784L8t)nsu>D!Bqpn7G zez;mChD4|W6sbQS5o{Z=+Oy$msjQZutHs8n%w@HgQ7vWx7+rtO(@kwHL{nw<_^(1k z#lWnN)Q{khtTp~-zY!7c==!hy_u=vP!aJui{x$pp!e3^Of5PurAAThVVlDWWoecim z@51m~p9cJSGlZ4zPY3*OZ2I?*e&AJ?{(A6dzkU+>9Y2TRzwq{H(68ZFO#}ROHvNR( zu|E7t%6@J7PX<43M;LzV(||v(Q0VVO_!Tz&A<_@L>e62i{_I&Np}%l@82$_YJ`MUc z{FkQ!{(75!!tYogekEnQHvK1q9~Xh&Ito7$nW!JC&WRZe&^O+r@t(6yZ+UW{F}7k3 zB78dR-|WUf-?;kaoBWUE)BnfvSN_NH+#h!_-r8wx)bZAKuyvAZ1HB^7v}LNReuS4_ z;bgF_Zo+cclJp`kWI$8aAE;o;i`GWOGf@Nk{)?Ca8qe$zK&-)-3XNQrFIsll%z z<`mT~m4h0bli<237_|`}hB>mabl=7Pl83}gXuc&!Xi~!1uwP_Tp?D}%AZD$x%N~Z? zup5HEbCJ>5#jT=CKg33QX`SBx<{KTaUPiRAAG5~U$BB^j+pP7B`&Kud)i{oxymHm5 z_X$C*E4VY`k9iHTZFldCKR)4a9{h0gr+DEW{1~tKX=WhTbPe5LdP`cHS&Q>qx&pa~ zQtq2%{ypCOd+#LkjJ2MQ(C)&{*v~23au#gf7LD<+Qz3`}HO;g5{%-g^;5^fnm3wCX zSJwB~;eeCY>D}8}UDoxh7++p#xyxfq zF}}W^iu6EU+(O2p(i7dP4Rz1N$|@~Y;~e0)D4nT6vMA?W0{4mdN@F>&Fsx| zBCdA!6qXtK>(*hm8NPYQ)T}dnFW?#5_vc)7Hj;#WW63(6)4{%S;of!J!Jv zTS?fzb6LRB15fMped}m)v@qdgO*aD_)c&7#)?{t*+>=pL+?eJ~F!QY?An}U#cZi8H z2MvPtAZT{W6MCOodIHGD_5|e>SiOEF;<@ez(f0cczTauTXH=l^4w5RS zC7FS#fZ3{BZ(3!gD!D08fW_ovBiu|($HqM9@T6TJd&qo!9+nBiQUu z{6$#H66gA=+)j75G<^R?WA4DTWYb%gjArr?UvS~$iysE^Ez{J3hea^PKSae(9KfGt z1-4KyKn5h;d1*mS)!%841*G(aZq#1*rOxbtnyge5u5?VNmt0?f{RwU9TsNH!c23j% zV*R9^eOLF%`Bm#`^mfnZXAUndO&adZ>X~Br-T=nJcWZOFE59p6R}QkP{jvwu7k3R~G=<^+8mQz2y7kIKKlm9}g74-T{tL<6_{C<{ruffvp58-P*Rju+kNnUS%=<(-}$=Q+a_=$UFJV22=Ak{n0^&<<`Uu_k&J+cVpG zIlo8+#F~7Ey1ChjnmZsQmjLbC(Oj5#!_Q+F>e+W}`bo$rY^mt+zW^~Sac0|NX7IWu zdOx|-R0p;zL8(oKr-{2$u4(wQn1ruR^#QHeA?uN7#&0&Wj(Mh;Sw{^2Qen+OGa=7m zTB}LDkCDzG!!+a9nOUnLZ!D6KZ^}s(-R3Uf!4C^=aR+-ea9hpNKx1l;-~~l$5`;z$dcVQO5lzKRP z66_C51yB$W4o4KhT>Z%X^_R|t>a~^ya+A7nUNC&4V7zpZso`35|Ci7j*nGL}^0VW* zP{Vnyf&@YPcgV4p*9ytf>mSr`p(tuxf*)DdS!fS~*6=xK6+y*dpBL!Qc>+N^A2#BV zni6v19W#L7tQDSI@XYXkKr!+@lpdF#9(oVYF(F?4A>bjpR~Pe3A)dLha1U(OBUt6QH>>2bC>Hx=M2J zi-~2i;p>V`zJN2?dlV53hrn^~QRr1}2oM3rKLngD^MZFI8q1wl1Dkyk5E*c$x`MYg zaL2F3yl?ophHzyeaBL)zL2L)M2f@r+@`ag8CxDp~BnRjJ$Y3%vLB4T<&b_byWSg0P zJjA>hX5R4@QAcy3xg3ST%q%T0J1@obvTx|J5L><|no^6aF zhIY}w>xjyEr$L^Pdm^JktvaJIG$2akStnrmxB}ynLXSzSh3IMMe~;jwNc^t_{#=iL zh4J+)=^_n3h6N&{GAs}`fQC>*>K3bYUabkNC@dpxp0?$OP7B_YkRJ9&5;?vODkIPO zHMB%Np%`6vbXaUv0r>XfUbhpo(S>jfNn|* zcasBE(M_IV85uO6A?!dh!v|$t&;Q-hm@Td~jix|9a zYbWBb)Fchui~=XzWWvR7s)lIzrh$wYe#?Z{>BJN}Apvxxx~%nRICL(u0?zgv4NUG}C%;=8mU`=TjP;|~h>p=d)CaZVdv%;P z{bJ#0UeVwZDaB~sMTs&)aBKaSv+c)a>RfU|o9Q1(fhD3g&q6a2?&~XpM2Z5v2}!O% zYYDeFE=F3lx}{Wmwdg&8f68b_PjH(QPoa3%sr**;Xz=Pko3XtLA~Q4<%bfUf_`1E~Kg>Q^nSwWh+VE6@)EcUq#q zVtNy6UE5M?Ip^iJYb`#>`axz^91C86{oyz+7#AW)2(#5*2>g_^_KOYjTw=Mryjbsn7y$Oh6OM@g7s%x zYQNH-6IIdprg5(F#EX!_Gl~%S*yuQIzq$gAqOcb&+yQYm{J5SC^YDQfxVzA1)w7Tb zAPc1yM)pa&0zQWX1&3~psY3N`FTZj)jJu{r>-Dqi?I5aDeKGYOW<5q`%Djkr?W6TB zvgfOwGxECo>k3-*P>h7;KVU}GlJ*Hk0)?-GH`cgKhQ8?!IL!FL#4+P^V}b}IZEbNNgE#$jMM|0n;( zC^Q!9-*|}c|INQ~*D$_;wk=(Uq=fwt44#F4KN&_5G!ARVmm$t>9zbD z+h>Li|5vHZuyP%q_SgUH-x%LUSQg{oAlt(J4YDrc-`Jc=|Aw$H*1s`p>wocYy!JyK z|HhfCBmRvdAu%(NBzAjAud&vkLG9mo{?fm+{QU?2#t>i?>)&wloeF{Tg!nhI{M^5( zR-e~2iuG@daA^NV`{NijRLiIEZxrT5{2Ph?$-mJdC(y)ctg!tXWwrFtfAVjviugAs zf*E!F8+)F!moMLq62X`^3WCv-TtkQNy3ZC0#*|~4nR-^(zwy45zVHLoUf4l++-fpv zveMjeCELHT{j#WkqYs9xnCa3l@NazbqVAJU-=EaKF&<5m&#-%o?XJuMNHxW-mdI)` z{*C_dZ!BKK&Z+I+pwkYEboe*0Ea&`_M=igPRMqouVD<6sWAtyxvKg*I&kXTy82(Yf zCgL(7bunnY@hs5V^$$(W{oett_h=2;>xo+aioU?l>@+pW@K1qWveBZyA}<9nnB=cG zg}(w9zJkZ}S73z(f5i&J*9on~`YYD4NJ4%}=n`bOv)E=U-6s7N{ot=?34cX@`YX=T z{tBvRSJq0y|AMq0@mFAd2|m{ISByg`cd*^Z&pcdH>;p%*UW39{lj(B`GtK)2d5ds) zALnRSpuYp2zYZ*FCeSBYHL59=s93MDS6TbL7c}dx-2&E)g_R9P!$etZCQPC0C^2oJ z0}ZJ|7_l}G!%s|9n-Q1=g6%E=It#h(gqZFh?v(*~`AA!QxnM;4<@ZCQbw)D?6J1F? z7>ht#8-b5E1A%QY!BzQi6bZJPh1M4O1}g0(`SZ53Mz)zf_tClrXX2nit;LqY zu{p7D#eZ{^;MVSH)LZzDrh3c09DmiSy`Y#Nt7KsKgaU@01cM~dU4hZb+dzutlp&hW z0Mrbesf1%FYEOeRm!V2r2v@X2h~w0k_X;mOfU)ouf!Aej5pZ5YJOT*|=`I4WG3VNI z2D~f)b}xXzq<$mTp2hsSnL8RC+<|SKad4c|cpjTI7%R<@l55Q0=L*~i zWS@H&uAygsgQ#im`5R^cowL=`Jr^54{&z`{w*ao8cA>ZN9MioqkKz3W7Bqa*Stl^S z_782%SIRp~q|^5l`e~c)r{rN;I%k5VSV}CUZWZIj_&MweXb0_D+z!ZMWH4wT_$)m` zD~hiPC#_KrBPnWknMbnI7on^2pELv6+Arkl)D;@00EtM_exd7ufE(BP@R&~$4DELN zp2VRFYqR0w$x7GI#l=-Dfi*=kGS?!Lh8#DTVDqVTK;)7gp05&@RciR|K-+Q;W)@V1Q=rqm;T|gD zw(A~GdZ>K9*m1K0{Q|P-q2I1mrg=ACIJ9`raz48TPR; zKX)YZo|uYr9Tg=iA*YSXG3G0^_edk4IRQ$xG_(eV!AyADOVC&dh7{I!@82T`<`BW9 zqzV4hAjZQdL>yaL;@^Rc-L}#0Q#~O10MXD5Xi&^{9`=E|D`|L94D!N$_43m;vvWC7 zC836<=a^uQJ|dSc*GMcH0wj(CiO@#iW?FkhRk8@y3_Pxe_JhskIs9LW7YL$cFDmQsLy5)ZM5V@fX(e&kW$aDfjWfKOVi0C(sD{rEt;&%oKM3 zodSA!Sj?A97JH{rW6>aS2PQ)%_K5doikOhq>RSXRqT8ONC&J~OHaO1H*&Q6l?)}y7 z>q=#T-R#<@QD%XI4Z-Ub%$(goJ7-=hl@KByEvmf01F(b;3dQ*n>+s!=V=C_{!wk&W zt!{jZ6A|~f4PQqV;Z0+5^Vg^62@wBVNX^&^ZEWkm;`^mGR_eG<=gA#4#SetvtJPY( zV;wx8&gNkuP$b=h;~?MABr!@A`*q%F4)EhoA!857SU6lLGxIvp|Tr6YY}-ITfbQ{k?atX4lPK7C83Lmo~%>VCwIvJxcV*#XeU6!xPQmOxc~BQ%yf}BD^9m+Bve7h)=)eu7XjB9 zC?+fe>Y;Ba))za_6Vn{XyBB$Mz4>oI;SjFe3iDNE10D+GpuobB0)w4(3{}rS@9DE{plroenzCmXX)(A7FbG_rmf|JEjk3tH7y)(f zo*#4HAm0Cpi4~@Y?H{LvbAEO9A8u5a#O?&~m?n0&9l$EiXbb-j|FoB3a3i}Xz#t04 zcP)wG6@l!>MlGO!x3ZeJllVaIN;C|u>JrWW&ZG02It!=A4>Nq{iXcx*cX`XwxhBeR z8uJ@>9-9AyD>x~h{24h!E*0F$a611$5#vK3Ib0!s4Wsj}3gliuF@F~M2x>9>JiiWp z6~3hRtlw-ZcLw@yW3o(}o-47rl!_uQdLsciNj>o34^X>h;%in9+BL*KiyFysp4Ql! zgOdW!YUp3$67k8tHF9y<_B{B^+oJ@w=JBp}7#iXZ($9md^u;0Dfj-!TF9~6Z1!m#| z(*e~;gOW>0L!Y30R38;iZ!p~O|A0OPyAs-AgMg35{BDVzJ%;ZxG-*8b3u<%*CqLrv zSi}Djihy|yA=5pV!8d!wU^38N76>JVpUTP&qb)haV}lWR>g9nlE}k2NanXnf!^aPFjtcsZ(b#HHWD@ zE~>`s)X_}+8&f4faga{!%TzADLtl}*QF}Z*%` zHsV}31b>+?PGCMHF`W;oe5lI6xP*UsQar@syyoELH+Ra|Y({^u{{~>>w)W)(rebU^ zlfi7tU>!JCGCrQ;mK`{No%hjOw{A84QdyDB}E_(U*fGi`vR20*n`y~teekD zLHORuHr<5XD5ght!dez!t9;px7ycfwf8)?)eCH5Sf8g8R)H_^-xr3idO-gUF$ZdNn z1-#g3{-wULi^~ltfr3=^1HYk}Qgbq3b3R3-8oqNLsc78F7rin@YgkQjZxvMOtrUNA*=z zKN+%b^~Zo)jhYb5xX+-k4)w32uey4}`szifIOwYxOF8yxsVoQfD>x_lv!D&|NY(o{ z{Yce&DIdeCm-@kYirx{bUhcqC^~Rxyt!p+c!ua^$4z1J_93i^z4F4gNrEsN(Dv+w@ zLv^X9@Top#iZRHxVAQHzn`PqPtE2_XhV0=xA1 zqqE{roE`^nqT%AjQczaBf!ENrj4sM{U~`bS3wlw)X3^kdV3BpZX3;XZY6vL_P}L*j&m^LjMg# zA|N+~j9fMkE(61cd<)VEIT?^2u^}giGLee?zdj;g!}_9M=;A`%F=i!c4dv6o;X0sfxf(V^J&%_KE#v5(Goy5O0Ojf=6fP9CyHJu|Z zI5eBF>qb7X2`VhV*}x25q-@XEfr2D;%@`h)7>!lTZWt@J7Uh5mWgg=+o)Z_>*9^9c z>xywrD~T}R=wd9XiGVcq+9OmhXlVCnG!!UERzK>8RJHUY;2oF%bEyC;s67j4$f&V? zssYB`!dbDc_zI*Ayfbt=T8WHzdoNYUAsn^pev*Xw1;mS$#X|_PJNYyo+=0<(ty;Aj z$0H(3>D+IEN2;=1NTtV-QQ;DigVhI>hTA|?_lviqL1NO$7~lq=WxmM%%W`EcH6D44aDk!@B&|?4phIyh8#)1& z6X?Lzz=ofEQ6CN=LDO93i!R0rdzWfz!b)&Sk$Sne&~x3bpl6w;CzbTP2|7VfA(F!M z^rFf_6WZx0m(k zr%1fM9R|<)(f_2^I9;{451(*fLf$L_JMHD$H+Yog+oix4{j9hU?%BsmaGfWler+O@4cKATQk=$aRQ+O^qXuyh~F_ZxX2W zUr=}WIp7-#@sg^D{#6Bef?rGGM=qkjgI)f*2^h`*=5;j0-+*C=K?)IngtI?rA=lY%1F;6*!}Uz(CTIC zv57zFjaf;jn|q1+`zWN@t}mW6q`9A(u>!pYlj{1P^nEX{{z-wyk_qk?^dyEc7CMYV zhbqminE<;B%Ys>C6VMnZ>nbUOWdT-KY7VN0>u}xGA}4LK&NnSz+KZ@XwD6_P#4jft zn88n^G4@9L^AgXaStk&dqlCJrPGeYL%tCs!y%M}}*+FxgIHt(8dAF?Ro;Bi`PK0s6 z8+mNB$h9l;5t;=ULP}EAxeazkutvv2_9d(t#|?V1WV(jPN4Pq4B~!gM`X{I(-g!s; zx@jbtyG`}T$FH`dYwzSlf#vLU_43_x!IZ1@ zy>Pi3yr(M`UdsYH-tBL5c47xDqr_h^E#p2c5f8d74Dpb&KUiAxX&UEW`-f8>EMD}v zvcz&)nhH^mbx>%LgfGTw8tV@WHhic_>^ogtN6=~Eg?lto`ak%`E^2^Yw*6yg;Tbwl z;-nJp-sN%T46YD_Z-Z-ScYVD*NQN-GBT&?aos>@%=e6g7#4zwhY#hEBc zwYw|Ef!5xxag>yz23DdG2U?1{q)NB3YAD=dJf+Hc zO?`#0(UhuYR+)Eqe5h{}-$&4@y4$Vs-EXf2lH&63)84TkkizBM2K?H~xfS}6%ejU6 zk;^$;ks+ie$7%0aa_DuW*vqkXRRD7Q77c{MCgL5Nf)`cTO<0iS0t*VjrVzgJT%+#O zsh2X9TNa_6Ozopnn=|!MrqWTaZq%tqOr-vcsqB#$gAewZ?S_u{$C6Mi;(rpg%RkV? zzO+J$1AdF_-&y#D7#hACP=}r!7|kp!+S>w!0VLbju8fis=ZD?g&Qn>fGXiotmyONb^h{3W6# zx!`B?AUqYsHP|cOd%S`17(TCt8`!#~@TmO_oGS*)c{tmtc7*0#D(-jH`lKUqoRT&e z!rl#yI?KC>^ADnI_~`dDgIGL^bg&_;2&EZWa-x~=1k2wNl;-bR`**wjdjP*G!3MVq z=+a6M-hvqV{Qw}=@5k7W4b>XEf1x-7V$_n?xCwrf1X2H_`tr@{2HPJRc{2HeDKPa8 z?f3hQLqKa>@%th8SNEk_y-T;+l{IXpp&1&@p1#^IBzVCu1Ov2^(wz?EasTW=U9q`F zC%ss!w9HomP-$wswu;ix6y{Lf7kF+Dc@n)9+5&Yzbwg(ZWE#$+U*(C)hMq3SHrW3Y zo@l=NY0|l@y`gWBV2i}?%CJa0-YrHX-j^y^t{oz?Ej2t+B9+fBh zex}G1T|eXHiJqU4c!Fe#p@|p}YN<}`!cKs(Rrc8b`}`)CKUmJoB#>j1P9_S?kzXB>A(?_66v zOzLO$Lj6S!LVgr|YWrv8UY1Sk5tU;l*j<8Mf{2Gk_xEk;x7)Q_kE07B)(}knn_l`8xJAWZ__xg0MS>4#J`8|~K{FTFr=F-M6WFv@X%th+_)DW2z)^)(s!O?cqY-xBC1`{V1u zP}ubzo(h6nqSiE@gQf%BI*5_WTQsa@84VVhIBrU5uX)bxE(^kI~kLtpUHq&;p z9Zt#W+pZA*q1#>FrHx&sdlTS|xy6s3OGg`!Ja}W&`O~8zDGy;pVlvcC&qEoz>9_Hy z7GDUagqKA&fR<_u0KoO>Eop3)sst{}(Ph(<)N?G&$@3pX7o+a%93Zhda~Af&cPb^0`Kt}Y-*wX=Wu(3 z;s2Dl2JltEJkT$V=JJAgETpla&MRw|b!Kz@lThQyQ78+T=tN{{w#WEUxFyLi=}07u?Gr=nZ_lB`u65%0?%5i zDI=lG04pzRZ=TU@7cZ?n1A2~Z%L|N60-vzWQ$~mLbEOX7YR^rYnc!n4_1shlcsL-b z0PQ)w(^KLX^3r60)ps@rS;ofdn54UO}(`9acXf8C%CYbJwqv5-F$OR)lAh5 zJtW6PapQ+NPRS!^87}yev+e{B9OvcI6Y514zYy#ScZ_Ppl%`0jzdobSg~QauFRbNo z24SUpAY{AD z#5sl`h|^zv(t62V)k2Bw+XJ)2_cz#Cvta>0lcJ4wI?kjEzqk*$kndGz7cJmdS0uk$ z%|g1Yr^usPiq;Xu;^2@n51yV&cVZ>qlJlh=;mW z&%$q@RdmBs{m~6?;(1XD6VMGGN;fRA`T!L{5uq-^vCIhvN4%7E}k<4M!iK zB}_)}v2Vv7rSneid#F{{)99&|Pb(vg_p1)x8nqcPXw$^B=R_iUH#QQ(_cehBgMkTn z{23fc$rQ*Oa(%>}h9g!kPNHoP-9`2HB4+t5$ilE`2=-A<&xRd>!|^-vEG3U2&eWt-+oZFu$Hjo5t^}Xz@MAN_Lw$Y> z1`8tmSdvwXA7K?hOD=T9fS(|pg}_zxQ0Ru}d!6y$LyvzRhd^}awi_}2xrDLD|8Di+ zFsfmUe`;dSKpFq^V}^AA#=kn&iMMenpAeNmY@?>T0?zx{ION!MP%_icH6$E=r~q;6xLw;(Bw%kJnpr?@Kt>i(ED_$2F-TI=~U1xrtBuICYt zvQ;nP2Q;F1)Q(5tl3f;HP(J&~y3iwip?auq@KG5K@<*20*q>`-|KJ_K5MqW8>)?aP z<*K((vyJ!dyud67pIq=JdJYzHSU z4{y2p`1acPKg~wy4M> zFh*rJXo_q46NBh@nbV!`dc0gJDE-IrGVackjTf0g)GuZ&{QB0z@6!7CjazJUEVZxZ z*xhyTGh*=bGVec+=e2`k@e9u=wSTdny5P67qV^@;UA5lnMc51-VQ=t=WfZ*=QCttQ zqzL>?+-(0sQP^}aK07sjsHQ5}W&L0VMq|@uNjj~l!Q#-XR=FAU$>#q;Me>8%e6{G% z?d_pMLude|)Ti%5hi+?!bR4uefi%pY!B*Ga9`?ifGVCc;T!Lad7NV4F+@EijmqE*l z?`+I!I?g>C!utOU*yJ@;3-F3AcW7hoRb3+QWiWY8GBThyCg%rQpiYO z;IT8(bOszzH6CPiSTM=XXsRw%#nnOL=yZLw*LGjUQ|DFx*1q<|wpHd$EVbi&Tkx zI*uR9D2R0&%fdj&+X3iUsHwY%6QZPTWYZV?VrS&)j3{}PcE;5@BTC*LJL7E0_)^&2 z?a?T^uX-oKZpcz`HHxds+hbV)9)#I}0*Bb%DOsVF&NjHQ-$Waj&ts*5dfM3^UxasB z%NG=a2N7rUMmRMX2eY;@XX`;}%jM>!L1|yOtu2Sl*^KX9E_Arl-iZ~jsHBDE5f&IW z>Z;LmxY*3QIN50HH~=?ZekEfe-Vvy7>nF5{Ygas1an<^ctcU>su!k3&x;{2U=H~G; zNQ2T!qHuAe53eS11*Q$o3*0r%Dznz{AignYwHa*I-4*EPFf-PerRAyCCZ~1Oj6d!& z<{U7CEyr7{&5X5X>2iGcsKksfWwJY%_8>x*GAhl|HOV-p7Jr=WxPzV1PLFhV#!)v` z|1-^XCDuwVyk`M$609zqJ2d8O!Ucl80B$4_O*7+HT$5&&E>3k?Yt8tzdB&Vlr**J< zFcH`weFcCnH{(|`y?gM2u4p9Vd$V*Uw996zf~~pZ1=x#rtL@QhvYCO88hO%+&?YLZ z6O_@oJD4~Q*}d{ImVmPYw+wK9HRBJU{gnV}<^q|F#Q*@f6)wSNWzS$s6QsK{HkqZX zlYyNs4}7k6pgA}NyQY{Kdz{u1)ON*}nClj!xm95DfL!axp221&N=(knSnetq=PG75`1oVA>cb zPI6>yx0`pzFJo5s;F$Yy)8;NSBc$2528Eg7hIq|nEmX;~E_YgcU8RJxj1?^)YRuWy zBbak9f_A$0a%C)sHzt0)3-GM2>0l_je|fI81u}C>SYG~c#sA?p<}B$MOw4v#tK6D_ zIC&Yr4#``)2bM*twgTaWo>Mh!l=I^gDIvf(J&^f#G7$h(~D-t0gMc=)>@3$17`eDiYsz^ z;dQy0u^fGfr&;bSPue@U?+D&OH*f($7{0EcmuiQDXD)~S7u@CiB37Xk@lwS=5l^_d z1BG$WIT#VEd4r}g2i~#kaHHGIIC!{R83!mB)*1+>TShOgXl(WnJZQoc$T_&O35Xwa z2d|!n3obGgvOGDK!oC?M+drl1=BIadPBh68QZAZh^Lfa*&~<+@I^C)-7`5ixifa;SgS-$tb@!# z7T24B7iR(gkmx$I9aNt|(_a0CTZp1rsNUVb9M&JDialFg4#wEEk%5pJIphc}iu6XF^xs+Sf zTXIYAI%h7JZOtVE&5YGK7**>K?K_tpZf!ySr|vq|>7IUY-|B zya5UbntFw;fY|5p>yU?@ZssyAa~$S{983rx8l|9uOl#&*QVD|4;5fV<5b+X?00FE( zzanumQTWak|2?o+hk~~<3>Qj8X3HFF6NJi`^D7iZN6awet(EQ!tYUwnVwtOZ05irx z09gl}(>n(fH(q_{t;%PCrOvM;NkaDZ&DACCHl{(2PIzUB`wZ-t`W>?r) z&;yM0pp~KZ1&;?Hp`}S|Q*5+#1IujJ(=BsU<(SB|8#>ARfi`BHAEhPQcmfA*ZdG;{y z2p;TgH<4VTf~m5Sxc*YCB)%eVuzmi|HsXnii}4`@1wFxT$vG6p;5_W%DEMc%` z!|UZf9c%U1*O!5wZ)53swpWB6>93zZ`5)-%H|zB1L4RSS#q`&Y7YSMY+JLMzHd!H% zT8FF`E{!FtR)6(F6rg=+f1b5e7T++;xiaI1Fzy$;9}u`pQ^+Lj7vYwT%-4=`fn5pt zR0B(7Qwi52VS-IXB6pG;92VSrLe#kIEUD)@y@7A1 zaO3_mhAG0^zw==rGGi$*%ZXl02xk@%iz{~EkL`y`0m`VEUzSm!H#N|L`uhWt=ro=y ztC}0N=VR`_&|&%5+RI^s2qerutNxkEvYfQsM1(i0$bb5s{e@1rQmb=@FPm6 zVDuUYxj%~1x(&W@l2Jpk#3uXBFi6pFy3Z`-z3;|u6~O~y_O(BRS1HO2VB^ZyshKHP>>qK@iC$44@Is~lQ@t4zE+R!S?iN}?( zY-V>87bX?7=8oUgBiI>3bW4mnko9n4YlxD&HSdCA+^7TnS#2J`!g{;W);z#SqbcVk z^XEDoT3*Z|Yw)iuT)>=hTxP$|a8XirFfk=3Yo(`|wK+5iJ;soZIB$78503Y02z%f! zC)UB<{qeA0u^KAf3A8He;!|&Z@6I}qUzrnMmbGR=b2L`9INaQVnz$N>A&yA=I^1~R zyWu&;xUF&Mia0!t?FE8Vq3PXIh?L2*m}Jg1+9syqwI%jIzN8X0rTl{@KgiL&I~8 zQNQu&Pd@#{jQxE5jZf9XjR!X*A!F+yT?8yHL&nyhnf3>AH!^qZ??@X_&LSs>8{Wom zN@lq#s#*#mX&S$QY2!Dhpx}rJHLw4sFZ4uPPW==4BGm4L|NWtT%2qNP*q}b$W zN>E}Wi>+rdPy@h30r=XujXJ`#Q;;MG4%x`ERroWCY#Koh?E#Pt!;MjU@%%H}`+?cN zAax^Bs@UY<13F)_wysCkk4#3*v1{>fz2b+|F1A{9?#ci?FQg?ou@$INk&Ztb)7cX69zm#E*mgSUVvmg7VU&H(Ha8OhOIM^D zWgD1+!b6DSPCOH3Fi#jGs3Jp(k6kBK1b|&nP(>qxYAn~$kf6%W85=^qjqUL?VI7Y8 zqGw1fGf;{QL`DTNMgS0*KVdCiCRDVC^e>)CaoT7@t3>i<=51i!G0FS(zX4Y$uYt2! ziiLD0FcB>5#+FNCWp-oxQD+kYZ6u(*Gs!_p4+V^5iNK>vAXz#YO@W0Y*f={EKI~CI zb}V3z<&elR1}{bu#Bs<{BtiCajFHeILzdwU!O%7Y7#`NKBzkNt37{I0p)h!p(RO?hQVyZ%EdX%<&!{(YqtW(`xhw^A2eaA1 zM^SQ?(e~yNlmJpAf%o90M%#xAjkdS0MLJY{_XE(g_`nJxi*m8C>$d)6Y`gClXmGg) zX)7LFfuOd>rlfgjF2XMwlB7{(2S#b&`Wr1{7XR(#=L9&98BZKTPrta4aKx5=mN zr=)d2aAG-ah{>w)eA`fR(E1rnk5UKP3v|6}KpD7{v7lhu*hfz>moX=~{LmQ|B*ZSX=)VzfJ7x^<_1p=}hzi!+e#aRzdSxdKy1 znwU_r4|C}Pg9cEr)offNsb0*5**0S-XY!b(--2ek$RjK=`wnc~Z^iZf{6K>z%_A0> zy89l%!tgVMoq5GXf>ETo;haIp!5Jfm@hF3U-NCQY3dvKHrJ?qh+&?HLid?4=wnDu7 zQeB9ubO-ez51e((Ny8X`jl%Ae*8|=^(dgG~3?A6Y50CbehdOJkG8!DuG2A* zh%cF7gGBo!s+`tX_}m4C1{#L6AA~}*rvOwL4kOh8Mx1Iv$dO(>N&DWi_}otUeT+x= zttJd28BD5IPaJWbv6Nhi85c1v#yp1icg#S`1eet^5$Gq`=-P!ii1n?qSO#QMO`xW2x;woD=9f%xP_Q zVBMJOLzHhxn*%ek&~MN;La)dc+zCng!zxdP&w9C^exUc&)F8gBq#o7 zYfDb>mKx`gLpKL=&ad%TIE`HF94*VmEgRn6P>duCZn{L{g%XHsn*;s|5TA{+&$yWu z$Y3$&@L@qSA4RzsBsp9I_sRhm;r(96BB{pwoHV%qv6Y511G&~VZ%I6oaWF#Vz{4NCSTV$&m8O~!XRb5UcmcUim>qM4JmY{H~m=&LDC=j-X@n8#{w{;eOfQvB2^)^B!xEKMp;Z9p@QkDev~_o`+qiH}(UU~~1lgl_JHX77jnQQHJT0b(WgY+R3Y@+VGoDlcMq3@(8cp0w0 zJ7gd`*yl#jycpbSnPB*?MiSuVkOkI?;LYsP71E_4cIir-*ek_T+vVs|c$kl4r$TpQ zV(T1hk37cz>YX|$+3>YwQ|L@wUcoM8U#VF;NK@|QT-=o5$COL3-BdNdb3x>v?+bB^15kM7g^bD>(jJE!B8T#$sDBu3_PYixUy?g94(_H3gZ zEVWH*Ik8o#t|K^vU%{Ihc|WEM?EGQ6Qy`NVSor$SVo!Ug_pf;G_Xy=E3GwJ?Bwm8; z%VHkwngOHgO_R;z8D(>xT*f!hWom33B^v^HMbA%gpeej0G=O+bAAP}$K6n9nev2q z5o3POq(J|~zzqoAOjaFXfMO!@N|0*p`E?6B3@{lMVfg3-qg^=;)9V6^F^0TY*r_}W zMJjPNg$<#d0+)*!i!Ulk7=J3tp_eK$_Q9VGpPhs62u?&4%j-?On5KVYY6qtB!3;n2 z3O}TWACkilDd7hwLt1ZB(gx(=s%q`0geq?2RYN+rG9J_Cr%PNzbNtx2P&M0?amH4B z3+uOqU!We0$pg)BFM6;`2xq}m%O(u#-VqJu8Ic(dr)RTL9GaGYU9Wonb>=4$;<7y+<1xk2dAbPZ)kc!$;f|mLBq9FVV2L zBGB*^p&n3>SRA6zVZl}~04TiE94Ne;CA7DO(ejc)!*`~}K!SdVfw`cwX2Rvf;9QM?!^S|1ESQiK#lWEwZ4CI? zwc4!D)}))EM*y|R6`aVsFZ*r4`H{6vnj+}T@bfe@@k@oR;oz8p2&L8*9DYzNv>1Qv z`prvFzsRotBJ1OLx}PU(+}5tzRlh%hs``s`m@h?sJKt;gt^$uck1~Agv5M+E#PHvS zx)kRzhTqhW2{;VhML#A2vup84EKNLj22I2gF(k3#J(i#@K)I;=Yj{Hp-}!_y-tbqU z42Wm|CbYok?(zLR&4l$xXY;+#{A)H7dev?|nazKVKhSG79|kmf2=}YnP4I*_o4^J9 z{^tOW7^c^5;#+9N(8JP%kNp{L=ej&x=jX87G3|CB8vc9jc9Lti<7YcO^KIkN=ZlFo zD$cH-#QL1koKpGc+Eu%=>Jib-=nuPorwXv5BuTSkIWkEH@2@<^hL6*6v7BzmM&_{` zl&I*1jIH`!m{d~5R8bIo=oL0!b!~<{q^XP>JToWqPf)ojZ$^+qq>ip z5E7^jgx+uUT*iepG|D!$+%CEqGYN~b8o$bbl5Pf7!rqaR)#_EdgUpkOeIQXLw;&%t|LeA9E9IlFMuTQdhH6h+K?^lZZy zz=L|Tf$SVU(GWX_gFqMLTO~nzyq_THrPC+rV>#i&Rkt<9O8a@Vr|m`#JzPWZEfO$f zCMGPJfX?EFX}@Gj;WUoGxp89U++*z!g-pOW~ zNHco8se*VtCyzm+(D8%7uh0mTQuo*yLv%(qGkP$?WoPu$8CNnRlNs&pj9YX@3uauv zjC1UaB|771A~F(~@mHJ%?$8`dUJERz18 zK!Bj=Ln^hO7qy^E?gu;Z_%0G2@e(Gu zgb7NxO9|6#ne7e(u<&hL%WlhBP|K(abA^{M&59{6YSS&@Pk&UUod5Ot*J~QQH5uMDF!0 zpCPdRdtKsrVlH^5;%C=;4+5e0u4zUm^;N=+Ucz%Op_>vyO6cw-JmC_um2eITO*Q}> z?Zff2$n(GL0g2tLNb}uKngi{wPh~v*?#AQ%G&*)KCCyh=7itLYcpUz{KOT?4<`Q4< zRF3(VL*JhQdc>jcZVq}?1Nt@}{jFU8J%XEr{wW@_2(;oYiiv1@ySUm9<- zP6c&Y5t!bAO!0hO2IS6|>~}p&ief$c@7|4~Ge}UZQSmmF`odbbg8w;*yY+4Ua^5IQ z-Ow7$<~>K?hfaJ?h;dV7OzMRC`5V|Ay~76l)R2Qr=B2f)+@6E%vOP=^L9FMEI&dEt z(!V{^$yElde_+`X&gHYS`Fks{{=hP=yA3}EnQ267^DZh6D~`RUE<*#rBNdrtgn6lt zbLZ&8`YTke-iWrRbh$!N}I z4h3@dQ2vfBL9SzGU#o3ufejY5Fr7jSR%=B5pCtf&XxO7dDw!YW0cSY+5P4L_%n}^* zG7Dl;de1*!-6K?dNX%b*)MB3odI3-X3nes$qPz$lU1p|{Nb{t)MlM9)x7}AHZ6OitZNviD=(FUARhsA%b^&6x!}2NizEPN5!s3Zwh^Ju-+fCvR7K%)4oL zN#(CH&#e5)%B};*7mBsXmOZsY55&s+8guyDF6~mKEiY2Vv{B1KnfPOGtfn%i9@Y%Bki>GTNWcup^AXI39n4sCB*(PLsxu7LXqu^$}8YgR$P=DP7X41v8q%U z-Al|N!c>OhC#|T=;tsTfdrehxd zoxGN?KTqvryK?TS z8(qI}T2eVjshnmF<=BRpyO({%TZgrQ>Fe0REZgaNZJ$7RiV8?^1+3gl0bN}IMJgbj z0t#YR^nw5Mw%gtA&v|4=+mDMCFmFEvJ&dM6znM37+1`kV$cc_fiij+RIQ>01se&Vf z*Vn@fJG>I%58dNA~#}f59Cexumu}@wu&KAyaGpkG6gNRgNd6WvQGmDgPiT?MFg` zxx(&JVPhzaZX8j$viveQXK#cN0>`l3oXgRPZ%-|hRWnf-C2Cc@dGRY@^z2=LQMrH{ z&ztO#LHMV%3Jx4}Ky+w{&qeY_^9Qp67aE@_uSqKn=b5Y$}(0 zWrx&`B0|m`zaP(ptG2b}>8OwPQs3p$2)_P-=1MtSxS5_I=cBu)*PC6gh*pVlO*{3k z!n+4NyXq6yvH}aD%ZoZp#v=K(juK!cKU$VGh3OZHog`Kiil4O@-^RKQE*=7WV9Zjj z^YZpSA1Lq`UQyRcy#rxAe&;cS_h|+Uf$K^e65E)e@^loZ78tYJPR5eb#FCaUEl#ut~ZScOut$Hb}x6# z9sRgh6mLqnY}Ej}7w$5r{YHEjmOIb`WB^Fqfq6?BpDeZJ{k%;CT`7o8$xPgX4N=BR zDPiVS!FLrz$8=5{ragkehR2Jzo<}pwPlIweKN~UY5|om}DXc#48Z1)G{6$Ugzea1C z{vKD|^!Lhz$-iZ|SWY2+Ak^Y0?#TA?sNRdGyR0^7J=^q;h8`yrW{V$h_!CXPZ~Sb{_PcKVSbiPb5##G`+*-1(?wcBZDNnqyI?GcWO+9^ z5OF^&9j)^32t=NN(B$XyM^$VD(lZrvWMqk>y-IO<$HNYY(R*9PBL1YMRJ`H(u5yzd zm-BeUw(%{m=aLGu>rLHU9>mi>!(<%4t)3go%1jki z!L9>@6RbdF90i7dZWf5_1fnB>A<7%?bVh_5vbgQ%dn9@TcJ-It8Y5k7l!mJO2;ODj z<}!g=?-nA{TMr6kX|NO*@D%cm@bite`Nop3czKb{;xy2GWcK;7H+KC_V(fxHXzT)& zeVEER)Txv!EINLoCjjrf#moOU* zWXCa3xt&jG6X`H4mE~d)e+slgUiRZBdsnCvw_4J{6m#x&yHDNyBfG%o;4%R-Z)F$g zy5lp3Bk7&7Stt7HU+qq|Xq|k8nw;uP1v|xj`K_gwFM0+*-3!)^X5Mk|Y{8cb{-A|x ztY%NO!)^Pk?rCia>E^M&I@oaPS$D635B- zZgFM3{sU#n9m&SZG{p}3q@a4JJ#m!sp6j3!1$~FSw0{S0-kYxU3v$RbK)yg`zGv5J zEO{qt!0)O*FlzdxYVIizZFJ=EOAp{<3!Ha6K|&k9e$CKKsKdt_p5W3HNHD-_ZD ze9Y=L;XP=QTfk7{7ro_Fp3mIw%x&)6`7YROyA-u|!l~lYlQMM}b6IEJf3p0IV6C}k z#3PR6&1!mhQdUa2(6g#k1YJ=R13mvFi=JiCb3o6cNK!{-nLH2uRH667H!XhI*iihc z5utcR(ERX(rTu`WQ^pNEOQh>Qk`EvK+Rme=zGqy{wFPzSqk`ssW5-2H#2=T^?-&<7 zxhTAT4sWRNQr%_?Jh1RsU?BRWn@hJ zWOGZt+h1qvm!@*`c!@us6-X-HDUr(bh>guKKXkRUG9W{y6wl>8$oScOD_`^Sz3cL| zAs?JACGiIeGJkeu%=wNoB+b~X5}q8Y{pmQe;;(-s2=XRs+@kCwHe>Bgn6KO^bNK{! z!dyOz6XYq|r?dNadk1Tj&%f9((z3&*e|}&LPh}(>{x`ag7H4RLtbn=J(n4s899Z+A`Rm z98Y`PD1`Be8*a{a*XoeD#J%i;$r$Jhxg`Jl4UlF%O4P_IB`E7B9U@DKJO z90^jf?icb)-_6DaDm#1M&A~s5Z&gQUNtIr8G84xN*YYvH{>NO*25_-g{%!^_)XyFQ zr3LP3?a-ERLNFjF9!gdB;F~(gZV?kTyPS{3RECpt0@oi$9}B(h-?$Cs8PTH>I#8QS zCiOc9YDq2XBrEDq-j8M239f-Qdtioo{44+^|hd+&{WUV1J>V&)-vEiI%@7 zkCfNXrn#ecmgtR!p3mRwj4h|F;L`+m{N1c^@B`lh&j+5Epgtr1ql0f2yr-+zoExau zV(2rOU&j(f`!-Usv#~oaoXk(BBi*WnT%EWHGG??R^0)DWN^z^9hg}V6ca@~>sIP52kA-<@ zy3X7VzbO6MPS=zCB{7F$Z7lSpC6N>?rQ%7hEs3vxg5=D47~!u6@jZ`j{AZTIo;pi+ zi6^E-E!mSW)ilIi;kcOw*S$Dk_S8wKw-KR!QnPUt_fMVFJcW15z1e!3SDQ@l>G=r# zq-kL5-#?$}HQSbhyaKJp>3XknMQ>aZRCzdED%1ts8-3B7*DNdEEY z=@DYHW{aH{chjj0FH}|H-Cn*l%jYPvc)Kh!~IlB1I)I^7%UrRX$}dGKg| zT^PG$68&h_Y_tC>+pd>|uP31E78>I~PY9%5uY0y}z9jkIhQCIjgnP@+2F1Xeo=itL zHSV_|qB=;IkTBxw5^w1{en!u2;@h2$`DU~ZH(S{Wn&hvO7AZ-st*>?R)(u|$Kv{S_ z`vm_hwd(e5U4-K#tm>{eE~+NbzcV-GTav)_60>MawQmt~2@`JM|ave&$^Jmx0N z_oO#N1J1tZ_JGakY1VfBV61z(w1T~=8&j3XG`k>G1gkb+BWDL45~i|Sj*(PBq7^Gp zySfMI36e(z&1XF5E&>XbE&{oZKxvf?K@;zErU?AaBamwe^npOBN1)U^>=9_~5#abW zQqR0bJQ_qz%H}Hu4gC>sw_!S@u0Ph*rL!e92vTJpsWNl9B}K&DrHMD8z&cicS^KeZ ztXuwSK7T0V+dfXvq?67Bn)t|K)89z;sd#z3!f)wv&E#q_h&iPf9p(UpeshNO9b{m$ zYO5<_CUBJ@HQ*cax`!J_0_FX0r(1T~NB%ipe(5J3Z@I~4Ka1_L;mKGY8-1`$wm-e;t70+|_o^87?3t znd*=}-2&1w`XP}e=wJt3ENCwkpnw9Vw}U<}=p};wAPeqA4*F+7B}68^5H!a@rwOW1 z2?;sSc>BK2&vr}1{79Fwxfkj`8D?$Ih%sEm!Gp%!ze@qx1G6IF^X{7sT|kesW_Irk z;qV#?e^MXnCMDILDFtRoiI4;oxsnglZo>vt9Yt;nL?rRraNeBCVCm#0CPzd#TbSBU zHV{mu#6GwZ*$Js$I$N`E?&39kafvSc*h>t$&_k^<3*Lkjqu!sxkrAH!Y^_KFONG4r z-y1A1d79t$zKVd?c|gmjWA|rQE3*zLbWYU%d&1J>hPn_nq9@m_*P0=l4ofMB7p3+} z-J*k-E|`P@(?zdv=Fsem3&KC8j{Y63$ymO$Y96Y&R>`TL>F` zZ(R;5$0PytUlxiVGi<7HKIK&}3_=`C8iby+3V4@`2t5>#%){_Q5)K{;AW0Tz4)_S@47alBt9@B(7tVU;zW%_<6yua)lp{o zo`fIY_LQn&DmUI~?nL6-Y5+{@08L@Un}?#AHzc1}PZ0~Kp4Z2i=RnDgR++ z8#S0mCVTi#QYgH@{!R%6ig>_=6izmEHAJ80K}&<@473HK@nnkF#yk-VL_z}cdzx)S zAR={4ZrDgKT%_iGxfQBRjEHIWFALK<-D8I^C9tmRud{C^T6xIHU*6+)ddNh!nKg9m zCmNa~cPA*4^Z!G*D?5HcqczJrA->SikBb?K4AUxY8>byBIE0&u!gn|~I&juKZyZd@dWW?7_aW?xUDsW#WQ^%w{$*^@u8PGhzm) zy_oPFy_%~|p@%|U76&35G?2G_W_RJsYuUo0j0hsqZ^p5o-mzXP1v_etTu$0OVS_-u zy8MhCz!K&u0LM&&$8WMsG$FgH$44pGyuRJF=p(?0;d{T3G>)fjV!R!#sgS0?78?a; zuYr5BBPL#i_<-5!f!7r$_+d+v^UqIhO@AQs!WZ4nKXxoNT}%rOvOA9Wf}Ovw3Z)X~ zQVIUDx0=wm>+1(=i_BZiWUk>EM)*zFugBD1O?PJTe{Mlm>-71U@%4#5=?bOj^u1s3FP)7Le?&2W2bsxt zv?Myj67%X#t*b!fS$c*|;m=U9e9Zp+Mv=bzd|`S3b5Pbl+1?cwdyA z!D!f%qh6F2$=-UMR|hWe3*HLYsMD8Rd;8Wdg;M9Ms@t*8-M8^Q>=`1PLDgY`fhDE2$E{(ILn-SQ=b=7Q15O_Lwo2}w<> zQ~RT=(u$l=JjDN{d{4?U*EDz0dtM-&L=L?s;q;67HGWmD>Eb0y{va_#VvxiTi9vIc zO)MWvLLU-JN$5jDscG&KZXsb131uVCmu4>#ZL z+V|l0ChZ$D>frXR(}*6LKOFrpOy}`VJ8z?XH&^~&+xOi5|FV5MadS*=-&M^I-99V7 z{VX=Yd&&*+g={^X{R|uA+WYjkDz)NhYu!q=uChNMU+gw#;Cn{5ZzzsW&M@<+qrdsy z&1O~{8!hhu;x>!t=&4Hrv?Fx%z%D+lvu@W%I+3CipGX=XgfB%rrvI!a!CnLav!|6F zdT^m*v=t??Os&zr7EQ|z%#v+OTh)6O6qqIRVo5*Q9HCLDFm>-hm>dc}%L>Ow-8?~F zAmE!nlw3e4CR)jT=gl?gllSUmeU*wIlWY&he9#nNE($ZD3iRQ z=y}=ZDYEFB?Rfr{gSTTEezj|DmRdV!vu$mzIj3i1Yu$^w-&m;tIo!jmeT-b7 zvr8nHvJuDy&#ty|!BjxLMWD||$OZrOm>jdFOhj{A67!W-w|o$K&U z5}qe9?HCSTSBEEg$;UJ6z$@_Z_OEjC%SYfz2dAE|3$MAuo0f$458<^2FDXPha?+=B zll?8?EfP;A|CWVR{tSomzrdLkk43G77MhLT1J8R^3+HIDx!}#d{HiNr5;%D!|Bi|d z)&^D3WogA})}%JSA6W>=dE3#Tf`uj+n$wXdS|8X>H5X^KQGC&I(!qwE|_Aj`oNA;iN@(H ziea2`>KUgS7{4ZV;1~A$UT7(6L4ltC0FCDaJr!);TXpmftb^VK0KD^`U&LE)j5p!= z%VY>$jx+L&)!8){gXnD83>Y=eF0C7lmFDcw{wrx{pXOVrD0;F9ZMM!db@|8@@}Kz! zsl4`^<&970v#@b4SZ&A04eC~rYC5P_*g+kJe>Q28=jV^8*yy46xd`-04*fmfoZ1dX zYrQIx$9O@K2_O`EV-9sQkz2*-QJB6dzeU0-Rw@aqh^E_3&IC8w)np|9JpNR@tM7QH z=Wk(1_8h=b7(SP=JS-NY|I}#LanZ2yD;ee&ew}Ykm@AXZkbJRZyw$|fp5FKed8$4V zQoK_y(SPU=^rK;A^T}58E%%qAP<%+b7_C#bIlbL(#{XdV>dKSpumPOMFhdUE|Kaz; z#J+etkmHwg(yd3Yv(MejTFUs)*;j9b&02q_dsGelUoHdS$wyxPm&P$TwX0nIvuys& z6_?4k=2V-P^Z$44d_S<7`8iTetBoe$6&1J6fXP+LHJYW4_SKCL0E)42HR(x|@rBgk0D@Kj`+0Dd3v1uIK_4z1cPO zwwq|`RH}*!`5GXfb$4X7+julSKa`-d&PDgb#^j0R>88aNE1(?W{V6BipMg4#d{P^G zNi!6a;2%P>Bj}FH^C$4 z&f!~ZHCgA?G4g)3#jM_JB}ufej$1jvw(nZKC3Go)?e;^C_8l3DJ|r?~9B+l0H&@zO zbN(uZ?n0Y)yIJ|R9k%4KucP0$oY+1EmRvgTm5P7P0Mm8E9h7`fM?BKW>xiRJB7UVK z?o#z)hwO+UO7c76>~xuz<-}2SHDxCCNuv9nTGr?<-&aV|XV8~loCBJ9=1a>$BCACs ze#Yz9CwG^E3vb!0LKj6m3mA8dW0R6vc{aU(!6${)|^JXSSOj z+Z~UxrUdrh*t0@4_nZe7$*oBCdcsZw**M+2FcbGR^n`;pPKmxG+4(^8O?InI^PqOg8+69Dsnq~^4z0E*3uhm8fta0&@%!v@iM?Wf#op8}Mdnn-TrmTF$ed9W zeoSsXu1FXP@{{TqgEPHLy_ZO|^=e*kAGc z^vkUFGQLa3n3Zj#cKcCt8dZ36_;T^jt!}o)+f95A_wM6X{9?u~fhQ%thg6cRcc{-0 ze)Nwf%X`Rwk0k%r{FX_t;A*>tFwL3Y93gSd%NGO?6Uv8pjvM`u3a~I$g~swY4f8R{ zNus>N)JZ9$Dmcik;7E46dE#v=8hpzPcxqgbCGO z?bll|_;(#eH`r)VtSJJ2IM(B$0*B%++fZq|zJ>Pyl@COwlDn5|#VnXHFs145%1qg5 zS|@`2#ygHWVGPSPsQ3l=5A@4FdQ1@xE+}f1DWOziefa#<+i!pRj{SMWO50)hw=A%Q zar~KydrnF8Df`pzgECQj@j2=%o<#07z;Si$CM6lA(6OGd-_Gz5DO4wLoeXA)tWpDE^tJaM&7i(heXe^qqRYi@za5iRxZ zO@F(8#1>@N3Kg^qC3|%?8=O$YTyX*2q`%x?)0X5=pM&Iabd6NqPiKYb$eLsC zMeehC$3W$4`sB1fEq`brawm1kC+m{{8I2ay_sxNvMsHf~q@OjX%g-Y{Wc_T4JW#;LY31*yvh}km zp>sv(ZvHu_z4A+xvqV3V)Lt6d$9>AzK=GP^s=b%+sVdjHlHO+&)sOnww4{~DK8fFu z+ix#)S~xoLhuB9lB%4EWyFIjU^M{|h2rrVFP6@^5V10Y*>)dZ8|1NVQ`nreqkgLgQ zv_NS3*|a7XlQHoS|1=&!ik_I;lBJH;P|@la$zB1n?rq$2x}&yaj!!K<0uRI`IZ@8h z1cKjGZspJ{5ft49e=Btze&;6xRO4{5INE)x>vVHYU8m*1&w=Q@K1wwer{%lIDK*S#5AB}?W?qe@LX zFY$RV(VjNI*a#;#s>}?$!lB;drD~ap?eTaG=V@${K>#Tx=w%y3Hq?n=ymUu+)AsTs zql@?x-p93y%Sn+QLh<4sqM;H7nHC;uM>3Se`ngwZ?KX3=$_!7y7bbGF=yvaqm|MoJ ziri3)0}NDvt9WL*{BoFe2uD25bWHjPOs8?2GUgwqibl8Wg8X zx0L>jOHcpMZ6-NhdX=9(!==|f;L_8*^hZcH``@&K{M1qg+1^t@&-@$8S91m*Y$$r`lz6v2zsG|E*5mQpo@UA7F)2A&*t)%)}p3c zO2sg7A$=x}1#VIu;@^e%lx9o3+eJ^&^41G&%O`>2xBOKWP2xKty}Q76*VRIrqSAV+ z4zD`s#e(h@^ddp$IB0u8zZNtHXcO@$==?3N{kXy3;=HN|IhkxP&Bfnh1mEW2Z;;8E zl*i+5u{@ZW1#Ee6kXpn|pECW$3&WRpeE$F&@!o%vS^fd)bMx&-RxLh(i`H!G0&yQP zX=m5@u3nNiMfeABlaW%__KMw>VOL5jY|&clb%DGn)~mll0aOmL%yO$ax4o_kFR?1m zK=$zBSWzF<`f|kxC^q-Mp?+)e`IB5rm8%qdCw1|3O=p>?L*{<^is|+Ut?@g(Kpf1w zc$Qd6G2)X&oaJ%Fzk+A)J|PBStXF37?jNeu386KcLS0skyvVe7MU7NZ{ajHGE=nq@ zy(=o&lKc^qz3x7{A9B2I4W0ohUrWoA1sBQfN=_I! zXymN&>ORXN+2X=fwjz^b%2HYgyeLFnmx_Aqo%`)%!MSTv|kqL$E)>`w0{T(8d2xaF439fzYs3}Lt%b`fD z!tJbN*yeU~wwH3ga7(h=z=%)QhNDjLu8nRtt-VY~S@iR4pyrLjF7p!f$WX5?Kgc*( zipP!4KZu3BR<~?>wckPn%AAtaugu6d4r6q;n={XV*>?FnFnuo~VIe(GmRE1u0Zizc zQE_+@9=-+q;rh^p=FQhFJ2=0ZCEml%wQlMweHTaRRn?x86;OuQ-hk4*F zFzpTBc(-a{#vG;l_jUQ2KV{RVbp z{84Xs&Gzuxh4fR2>*0qWY5LKBOz7lQoWa6QoCX^EQ#|c+%1;Tbpu9GT3&nVCziaTB z1KM>zWI}7oUdzgrBBx1(8QM8WWxH0`XtP@XhiFBjJBTn+dPXZr%W5bOKH3!(eNPuB z`pCA%@+_+h`20C)2-J1Z%1S@Iab-NwhhbzsQS$kH@D#!Inx%9<>= zz06g$>v(WT7=#F87hGAxg8SIZp{=Uvf_u|TQRj&P!N7mH;2!caiMyz-IvKSKZo8N8 zI0=VXaKw~#>n*b+^-I(2b+_KCPGh}MRv(>7PS=GDExMtJyEJCAH811`tN0+?uYT7Ic*dVN9=pZ0iCG?VP_jG;Z6&f1h zyM&fRPhZ~M2@2haaEQ%VS@@RA58-LVv^rb zs!O31OGn)x`D@Z?Z(`WzpXQm=6O?~=>(u*zd8pJ*KDly*1_UK88wq&tgnZo$@a{6 zi}p=^t3Sj?3a)YXP1(ym3ui_X3+DvS!Z`}Jdu!zEG(U!s^H{eYo7yi?z?>h+o3B`t zo%as+75}t*!Pxoi1rs$G@oo!VV=uV&U+e|dSSx*7<=;Q|b>suD*rafhFSN7sVIS>L z9G{eK{*LgyFeqxw!o$UMU$4Q#v)>Nw5%2LzATzhgwO$=nWAb$Kp~3F?m}`e(E3j-% z9zVXGgPq~&;tH}Jmc-7{nOQFca8@-8Y(ggX`T5sVu34e^78{idFh{@}1bhjg&Xh}{ z9k7z8^S>qOW3bh>L;7pm`TS?BQqDi2 zSeGOGr_@z(-UUGxwMW|aG`pNlr6hK?jyLT+9$!GWhuH-SZ&TsEUAyjz0kiY_Rpev4 zD@s*t*?N%khgWpKLr?KuUrNIaxc((O!aQ|l@3$(}e@T@0M7;j(6&sE@b~*QNzbU^+ zgi`W{1R~lFIqH5ALb|QW2oKfOJl`E-E?a0i3yPB# zT*GV3@#`GN)4f)mcX#&($U0V_sFaRnj-5^~>X7;}IM*m__uVsTY6@e@XO=$AQ8zj( zMvdS$%)|hHRDDVFxT_pZRNM zg08`sy?&rUx5wECvIg#^pAOyYOuvgK|zehCq(w-)bFyQJ+} z)=}&qKc^zz{_8G*Ww8-5D?|KW$~HGC(=3ChvEnZw0r&YyY_v=?4gk#aE}=aaUeXx~ zmcUl?>4!G+@l7{IPkvHHGL^(Sm_L!vUm6YF(&mdpbjxn4==BNxp>DB#VxP5fkJ})^ zb}*|x1NWeP*0*2ae5gy#jrSWKqCd>p%T(10>=)~?UkFs_JLg*G9@#JK{f0Bp0<0@w z`C46ZNH1+X}h%E?_Zw zVdO)N3?gcJVf3VIGhu;(Eu9spoDR4+{8MJd#87yDJKnMEnxXWOqndM{wfa)BA6zZ0A@NVUI8#*L)Wjbe)`?%-f-0}xTuz{`%1@#% z*tuL?F0Sw^8<^!{-|>Qk_2aj9scd~?l?qW^-- z9X&mI|B#g!Z(&6AOxE<%_$Z3*DC+WlAo4Qbh0zbVN>>DPx-5lHipDj|{O#Gp7%hSHRtefgZXvn> zJJ*Xf1-riwo795nvcSx5G~t*sJo9p+Ftf7@WBs$wN;2uqwgifzJ8jg@g55jfZG-Xr z**p%jC%m;4&lRWmP5tud!YmR4-C=DsJDz*H=e zHGV`P!^#(423@;s;FNK%hqnARlw&>d2dL;fA(_dq+Q?5pENxz}l zC1(DuF6}tdK%)VH%Eu4`xKMa$d}1fW0bNrp>9VaP&;xgxZM{;zHB0~Ju$1C1Uj(Mh zKUmGDe1AnIUU##|uF9ook%YnMni7aq@fnKWgl~Sukvzsy9Q~XiVO6bY9h0Is{B0}q z7F6l+Ua9<3Bxt;CoaB_$YC)TYH>HJZo3&oWkE>hOY--hdRlMzcN)K;JchKfFWZ9JA zex%iGY7yR)<$koN+0-(;DaenRMXk)1F8eqOE!tDk1u^RPv=zge4Wm5U40+n^b1$%d zRXFQ+mHbghJ!9AJR6xF6D2pYX_zoqQaa1SoU^%Lj--r1n^A@G0O?PRE5wG8yUu9W( zYq~A7C11edciK#|;+8;@wQLqoa|G@r&8^P4 zkd`>4=Y^y@f(%o8A-zitsNRsIlEw+?LXa%mhHEjQEdvn`GW(wv=VASd{n*Raa4DNJ zZ&zck7SDM6NjVd@F_TN;ccfQI^+yCPjOMe@zBO-s={5tl{wyzzScxRFPt9#ebAjVc zGuMK;XKBHD*Mfm}(1OEU3nbL}9sJrnS}>LlPEriLPxQmHu+!rzZ5k})W{r3{x473(O;`>cwXHZ?>1<+{9n{PP5fUz@a5xqEJe}y zZ~R}H*jIGlYRH>TzT08T>UiD?$X1MPgzbf6l=MuUgw&fzBZdso=Z?JQ^(c3p$^D$Ts# zD|X&elY#P%ojOgL7LiogTj)hA%GpQMe|g#N7S~f9tWL(-;*7~_5}j3Mt!MgZunR4g zyt&nkMP#pgr%}HcCB5Q?Wu9IU=Or8YS6)dj^(dWbJJo#n!6ABd0j+Elo&UEU)%e|T zQz8Zx`VoV~RCmh8URZe5|<2h-pt%eGdV;VOYg7N|Gv}TV-}wFR)$h zsWsarzw^H}Kk&D+8FXG_m#@IfoMGye=eqnarT@n+|Jq9Q3W1CoOqVzI_aLWy>S(i2 zt6(esCG>N$C_}rg{o(=+cz(rxF-WG1T>TT&Kc&`)aVD+bXm z-NPvv>Q1FtMZfN1R}cB=cLs$xm-y-1w|fR%i7wlAu4P7TtlzgDX(0r5FP=|wwu@cm zJrNpO=8xc=9gy+UC$^=Be#FzDuY1y>zh{jXL5q&@q5-|4#@C-^2Qa_Kh=GWVt>U~A zJhx;G&tO`~@943mZVkPwCi43%4LCNf?3e9kUHJgCwYy}>H^MH5Y-2h)!-bv^At{^3 zPwIJy(eem{s+98b*r=dF3}^`vd~a+f(o{Q3Xq4p#^Tnr_^8*);r?72ix1ChVyS%&C zjm}E#;f|yr``#2aD@WpW>}yoIdH+&ZlOxGMSCrowyDW%I+eXg~W(ESYj&y})X$t#= ze!s{SI$ec&wwPk&XYibn2Ddu!1mkV3QyPspno~D=B|gRuD1BUZrtabri1(a7+IRqg z$YfGuR|VDn97Q_cq6TzRfS$lzC#X)a)w(vmohFpW_;B_1mo}Lo{!(_%G+!zE#~f$> zQ0y26Gf;UB#mHcyN2C1ptoOxa@>2YX{E@_+AtcOP(!B>_6x)WWHM;SEn7dq}{F)~4 z>EHZtep3u*;x?d6X2zj?&gFCx6lK}g(ya%$E&=rBS13tA-TTMpVs(CY-1YHR+-L2niGPDYd#US5r0 z^-pSK@9zIhR(E&*=Ens}oF=r94y}XGZgyzL32nTO_F4nl?;P4TRCm+Wp}qVhXfAY2 zx7xQr>+Yke@vgKTf3>CQfy1VKF>s~r3wQ#3A^$%cde5Dg3Uo5vV^%+GJLWPKbf&A{ z7!~vx6|l{k&`{6}SJ0)Z-=hw#tzW;o4GU>4B_v&Jz-CH?R@K`1Ch*G(_p zy|ao2;w!KyFkPA&%ppTBeWsH=B9|!ZHS?0#gLfJo3hx;nxJzyhJUj_Ivkni_^0O@? znQ=ELZ>STKI*9Y{hitd6ozpnJDGTZLe)KD5g)i*T62knLzaXP4@S@wN%;^qqsPNXg z;ac$~cpWTWlXLS=SbB+vLDhch!ce!O*3$GdbUzkzNAK)xQ}Eyh96**?yUY-B+qNy*bfKd5ILgxLIbSf9Rm|G%w|0TjRynGYUT$qP`$ZnC=fBW;+Yt zn)}FrEr+LEZG0w@vkPjzNlW~OhUr0(mI!o(1W5@T)l%`3%8LZ-LBJlMygGbTj|{-g z%FnjoEWnZMsdR}_cnA5X=H+c|O0G?r?WN>KKMB|Fh%QpdkY|BKzi9tad~$ubzUAoO z6vy+A-5Ho%(zY!6J%3w;H|thE66?XSYje}Su=TX zsNd=&P%}W+HU%{YRM-@h1}Lv7s0E-?0EMetHjwMGc=F+)hXSwmPNTrKEqTi$HPq#- z>_Fr?O-zlX#whQ8H%9F(5Ru0Ac)c0-CkHnA_Qc9VT%V1^AD zx*C@Hjh)WH6m#MOcKww9g>~Tj*;KI(PJdAAXJHt8U(H>`(n$OXYXN>T6_-(*qP2xTZ}#rhOxiNY07XxLwIa)EhKW2@{>rq+_mM)TL|`@glN6|!JP zxl-PJj8gK|1H`XZDHB{N)00ZcQ7H*$CsBy{^t#91&=g2~0JS&7?-TMzmb4NKg|)zn zQ#FzP4ea+yQUnUF1f8%7*jZmmOcV=dI5?pLE{p{G2*Su7cEmbm&ndfRCmULjO=9@n+Ipo=}lryIl7Tjo~y)dtS zVSlK5&M62xY(I94+%>MgN=<06Kb)!Rd*@4y_6LrSLi}GU-;Esnb48?F_6H81CUGfD z$D&tdnqDqJ_J@Y^rE#y@%(6dpM&j!HpX?7XgRLeTB&7Tt+Y4;+W^Q$3N67wQJ7N}f zg{f7OfrBRG{U9w#sggU^!S;uK!Ve$p)FJ(`-0JHSD#y8Vz&M+~^z|oSb2Wgr8;a8o zRf9JFbq(CeB-X#xL|?c1>j&(ZzoNhPk=B~ksKi?RbvgXOKZJinynYS(O?xJyB`C+=J}tTDS^b#w3*O4p;E_`5il zi1~8%#(m=3@HqJ7Ci8-3e}hgpIa#IqfC?6eC!^7wkgU<|HZGnU50|QA(B?!O6?sCA zPyA0F@jp1?x#|`hBAt?Q^dk`Y1mb`ih%@s!okt<;=mmQFo5hieQ+}*drxnWe@l%}o zI>Spvb>{9SIv41j&BikuO^|iBd;CaUlzDp7bNx?Vu?wcqU8uX*%Hig!S(XRh{bzWf z^c;9#=Z^5e8}2#i9RGzXp9iMEHZ2eAlO!^G-15b*IRw` zV!9B0G-*tEe-vFHaXL91KlJd=rBIXM;qM`fHDvTeJZ|cR;dIi(m*jBxZo>5~pQ5*b z-vSIlDWWYlLGZ0Vxe7f4Tysu}=ziL6711WOI)faEIR9wAlB>eQkP0emq%e@{8+=Iu zl{=;8+(0(39^la>_I=~Ps}+svbO%RN>U0*LvKduM+9!Hj6MAz+PY*6TdcIz59=+R+ z+u8>hw=v))y3=>2(m@vrS|n&kpjB&ZO}97&b@dzK!(3*O24-)EY#lDEfsV*(59sfb*1ox2&J4!a^h|NXMb^}KxBbP>hRvf z-fl+D;lvB0alakrH9n=&)w9ewKemX0S<*~O`kAT{+J}%P#8P_w<=6;(7qk`gOpPGC`-Ee26N%o&osD^?c(8pX&!D~ z8_cbrIJkY+iw&t%i9w}=yp%V=5Dm!^rXMp(WafzseVm(GVAo~fu4m~y&4xZD9RBA@ zHw{Uo&Z;{Xc@`VGN8tO9MWFng28u^nish&1Im2FE4g?~7Afz$pEPaCsZ&CJ&w?q_r zG>%sd=$IVu1jbq^)M&(`pUnfWG3B(Q>u?-#sgmDzEUPLV(2VjR=~Z`mkiLRY(%#LV z>6|?yQ6lYT{|xb`7857(v{_GbVw*Fw8*a8pbjGAaqnC zbR>Go8p0eZmANMRL87~O(4&@qyO*J9-=l-KXHb@z>*$7)=$1k^@ru=mh=1bhwRr;d zDsc5GO|Dlzhu@Mz1HWDw!dK)kjRW1t0NJr&<8Zrh^xIxtekzIX3A z0q*%sb!b84+DP^seu(R%YPefMfyl%(Hby<;`g5H_ejaLhL%?_TlT}sORHu3_`{Z9Uh#M-OHO>+yP z+erQrz?WC^q1S*X^9JsSO;<-(ML*N8jda>3ef+yHS~nmt*nYoL5QXIA{@HCv-6#(v zJ_eH&P&%O6Lf8QxgKGh80YC|Z`Jd#rDvQzKGgAfWQzdTH2NXtV=tw-Ndwl2_DK$%5 z73QtGBwom8b?d^sPcRY33tRBx2pKNZ3-e4-{H)^&$XAfMh@NdzkoS2(&D%#7#9<;u zd7CWOilR6#j+2^EP_yKSqPzpT_L6x?{G_Z);%VpCRJW>m=g301>l*f|wmsq}9pvN7LxM&yW(*3-Z>}wBu_QA5oZBR~SF5b5Xp_iMEHRPf_%J*`wMN}qIMcaNu~(#X8!VMM#sK;=+G;zISXxE*HWbw$x_*kPk< z3ZvGIkIkP+Dxz(fF2l&XLw~>5Kbu)F8R|CuFgzm7h!5LOe&)!n-}1dX8nIX1-Ao$# zRUyCUF~zm5uxx++H+i-I(;1hl9ca%)2lhGm%&%eJ@pprW|HKbd7`;FHIlDlH{+rKL z_VZ^fO~dFOsQep%U8=$WeCrqdzg$1QBeuco4s&sILG}VZ7Y6O`pE2hSqvN7?XTJ-; zU)lf{f&3o-FDv9mV71LWw5E`JYaQaELMVxs7Dk`493c9fz28S}9bFXia|wTamZ0se zkJ-MEz_Luo9QAgV1FlF6Hdiw$MzXMAQngxg;Gni6dQQK05{j zLv*n@`jG~s-1+_`h#uc#lHQB_Gve5Ztos(n{ZxUVfF zu$R5@u(MU@@+Z9ihwtG1g;2C)5%tWz7bRA?`%q_-i2~ZadY}S^G5q9jn~!F5mWix1 za8xM`?Gu#2=?L?cCtXTfvkp8!kFV0DPmz3Pg-FVo+=hl4h?%YFovAJVV=V-ik|2j~ zY%7;xgS#rjyyp_~u(g$n(G~^uZ?9aam2z;!y8u+e-)B54;Z#aRQl5}rW$y=2{sqr# zADd8WhEYvEvg~fBnw@M@er1PCp^vL{4(cReI^c}w_uG!>_*IiluOF2d5;UuxqnL10 zlbp4O{TUkCXlLx8vsJ048*RFIP?)OVdx-9;ASK#5nu#{$S1Ndm9V#3COV!j=XhQ`L z-iL0rsmsu;`I22&4 zc*R6()oq%$_}O5{LxRp*@BC1*gwG47y%-jrQ@p&VRSWo=p=uR}$4S|jeUVQL zYRBfSE{O+m%LsOru<^Ut{5|ynFrAv+g4c+_>rX_ zfk+BySQ4-fMcVRd3&^1WX2k|G!4|-=HcJz|;80cydkz~m#5NQs5Y*>+(s8R%5icZ;`ZXT$7*rS96s-brSm3kV{J9Z87 zE|D#Nl8411c4apYi>Sy+SSJdrAOE=Wz42`SC;TsFPd>SCj zr}F(j-e+EfJUTnbswQMnnRKr*9GxdsW|oM3#6J!5%X3S41sGE?$t}h6S&?)FBM-o13P4B44&L*~S9+M#2)85vw?<^%0J5%G=G~a_RUzWA6v~K8A z0?II*vBoNx)|Ks?v346}$sWVe36ZDoQvYzy!Dg{2Q29PTC=a8BjE`2!=ap_~z;Q+6 zNRP(T4K!pjQ2W5@tc=#rD%<6*b~ga)d{h2An^A`5m%Y3tP4Zsk@`kME zS{G(qL3lFHrdG-)r#LnYFNP`URsUiJhT1#m^%7X|@3y#h z6Q&VJ@BOh>NtLgXucS_xh>~jWayvVA3^Zb*EPcDO?i2slKH0 z^FZZj+VDF6UknS~{bQ)hioo;?XqH3`Vq6;QI#G1;tl!=yM-iQrbJ8rm_g$iOud6HeoVX_!qzs3X~<~SRWZY%T-@LB`{-MD{7(U=)Y9VaPeNv z{ANvKIk2Z9vx>;V@Ph#}Gv;FbaQc)oimhgL4vZ7$Fh$tX$vjz_@=H{`-3UKXEtLABa~ zU4zY_Bo(ta_Rvtx)>fCs+g?x{-NQAV3xXk(nrf;hv^nipa zi2*d}D8)Oe7J!SY_gv&PImj(KOb)yFf4$JK*?3VKHGN*MPpL;D9A?xzOr~$sQ2W1; zaV4GqOEVA_mkuc8AAXf(6^9q|1Y9)+n?*qYV|S3W9-V7F3fY~jQ6TU9FdgM)VD*5& zz_%?L`0JEuIcXo0Vf|V@*4j*~ybJ?TK!^XNOrWjbNBSyJf?Q!>Ab6w&22u!w0_zX( z|A(YfPGI2201rr+ss$qIW$2#+KL84qK_Bt^XA-^_q2Vj}+O4m$_etabIv;b;7NtY$ z_WeMqALI%Heb+d0gO(|E38`NSiiSG!2dQ!+chEO=s`|bGMS;3S{4@MRa@_uo62HTq z(s#cjQxK@zDA@PFZeJ5P>ef}Zh`{ZO9b%v_))>eY29COf9uRrabHw+8gO5G59MO@x zp;AY8*KH;H4ye@@ci9=JRIF_cA!hR4GCS#9qsBDTvYV+Hp|RHd9l;UDLm+G#Y+R%!aB9u5LMWA+ z>sqiiThdrctx8h&0m`F;t%tXutPC1GeTW6fbN> z54-M!sZ7+u98nT;J;^31 zt*OB970i%NG^189ar)|?+dt7X{8;noLp%LeYiVMmV_E`RrTNA@8U7i6-{tQn{%#;u z6BJY7$d8o)%gyay^A}6a@C5%e@9aWakJ;zWHLRcYtc&%mq4gMH29k52NPYtP8cMT; zfJ2QwRgE^PM(=3KQ=n+8(2;AEb9JW6MTU3vMFJ#?0=HYHuvT9m3a)iw6SZzdp;mxu z{<&RiaCo(-v-bM(zipCM=~kD=F7m!C*Y(Q)!Wa6IxSmDt^NK;VyNp#l{8JV@Jz7RX zhA-kT(|Qo=P>T)b78pcVl+^@|x^fk;+Q3nRcZ9m^2~=KZOyu->GwWE41EpbjzJcATvekz)(x-Z$f(8Asr>8G=~&ULi(qWt`gF6hg2pcDJF>k<;&Af zT{Q6!UBugY>dJ6X4TL3)NX(YxImOY*6rC-ivs~0~chF{n9z*+KCGl<(H&ChJv=CWJ z^1Clfouo>wV1&%?9oo(c(40)(t*4MKbV$iE`PLC2MS1YZZiBFrBzZN~c1E=A3>G7& zw96`XB$`26vIDW(ld}ECPk(<7yefLrIBcGgTC*j+^+(b3_|bbtvl_0+e($9;ui27m zf2i2vE{iKxCb}@0%q>Ig;Or@#{9`ijv>!b=V-it4rGbWyI=1-CL!(>Gs zCCZK2c6j3nSVq!oEZit#fAQ@DX3g!kZu#n3$*;`Gl&MUw_0-wA|4#$x?itL~+Nn+q zgdI3F>n6Uu{m%1$T#8f0A^jg`%jvE$KF*yGHS->owXZQgj?ARyK7j0a)&EU=oZaCD z)9@)(J#FPXb*Ba{K2DcMAdhPGEAer7oyXbt4hoE8Eq|SuWZ3Xj5f15O;Nuhk3By|S z3dFp;0G6DO=Y3OP-R?CX5p21V(w+D?{VUG$e5khHkLL64P&*+o8*m@!aWWw-BrUet z$v#Js0HtGP!J+TA@*c#)`Imm!DA{5W`6DYn^t`EFTL9@h9qBjSu8*xtbw?6Pulsw_ z`WFS_yHq?VTFvJ7hY)WI&6ERRO2stm)-@AEB&Ng&hSj_=(9Vmrk<5!+GBYo#yEA7O z4?0MhKbGdX`7sDiW#???B%8iJKb#*{J4jQ3BtNX?g2??aP`Sr$Ncq`(x?4^8*@?}- z{QFlc_9Fvf=|EpW%kZM*$a+0xmNlD)U34C{F3&M=ysdY;+)2#mt`BRn{jbq^ay;8i zXR2g$m!vWhYl4)NDI+BDmL%(&^ue93kCeC z8p>NByZ1?`J5-P#_Rj&f|05&l|E{znF#)8;@w5wYv1#XW-K<=fD%aKIGWEAv+>oGp z4#Qx_nYYbfr&{v`_jA7SoWBaACTUP@JQi7DU%_<4@hq!s zt#$NzATEaF8!iSiq3B5K}qD@nW6a5Y}7$4A{)#$V*A>|CYjxicxq#P zA`fEz{^fQ^>sYjr@W(V@G13XP!1g;tGP8IZ7X@T_K7~r=eN&g2EZ3K$VnkUQ2=7&E z?7e>#_$k%Ix8d`|XjOVbe>(h4j|2H5h*H^PTs>yp$t_6eXyp_3pab zgUVHv5#5E%WZe(%?A%4`Q z_fe7m5I^cJmM2sFm+_PrF*jchX2wf$-l)=wu;#QJzin!uK!VTc~*WX-2|ZswAWHZ5Qe< z+nCr9udPq^<+AdLUVFR(GkAkzwIaWbwZi0VaaT6DGRU&~ov)shG?}Y^-087B_}S6I z<+DO0b{irVtQTH}@QR~9BZ(3OV)Y<*I-Dh_l5_lzOnvzB7QTtuVII)Q7=xQ)b+I1M zDM_^t=uB0%VmPxd2n^KowCCJvXZML#IDHc7wyAKc_Hnb;i+QlQVs0@nT5{X1^Y@a+ zIN!b4nuTQfjZdZnu>unZT6^?^2G)@v>a1oH%Hm0++j|3!We0!WjH0 z(K_C#CmNQR{DU6&3kN=>jiOO(FjGA6a=_;3o9tqoK)3i0eNM?mP(9&hyLTy&l)up~ zXMKA8W7p!?B$390`~C9$yTq_OuCMxq2U4{ASOZ?5QkuJ!u9JF%n*-!Xe8oS$eBsl1 zeQ^+@Pe#ZHP73C^^WNIWkREy#9o z`zFq0{%pU+weMqcS*HVg-6y)g2??EtCKmCJ)jw@ZxEk^l0KX+VUsX$Zv!n8KuO&PK zoKy{+hbAWT&unwz4LaT1V&6bSYPoU1^kfNlHdFhweX!)VH%eVe3O_J#hR>4c--0Cb z1H?4H%{$jSdIg%Q@pf&XS69_2GMi_;bnkrg>)S|wBq=@SrEC8O|6S4(W30eA6-bI1 z;-zcDBmFt0U)z{&&!8xlewf<9H_iXJ+)>(lhY0$ifXG)Az~1 z4D35inEpHuuN8L^?c#cTx|xe8FD`qHcW*vZODVdXZp|{!5T`HnP;r+f<(D;St(^h=0|AIyR?g8B@LD9&e&Q1F3Ta3=AyBr;f8fxX!bp2?=}$+yy;h!v%4s-figs83I~BI{rhn2bsBQR6P* z4MHzvkig2qe!n>|0C;@qR zB}5MrkejIY!3O>Q7w^TO<))a0Bh-p z!4c&V54jUw7@Ee4&=G%s{?O|sML1Y$$nYfUj8>iv%vu*18D~@|2-mYTJCWTkl)~s< z92e$26{viU{bOEnpz=oO7rfb)CeAw=-wG9iD|%)D0blR=nf**Xp0{!Uw)#V%>7j{)ZQ<5z3mnKSKQSsNtsl-PP#OC8M&L@weNFRQRJC*Cr>eri5f6(f3X zuV8*FO19n+;_VMCl7rv_)saPkNF5cF8B3k8f$uK61NU?UMKL!%qc;^GBi&TSR})Zx zFZwkQ`O)EU$RcJJ{lew>Zl{+=Syq#UlRO>sk;i86-nGdzd!{sIoYj?eCU+=Bhv?ll znAaI$lHdcvd(z9N#7lQ4!EOuhX$mpcP7F5hW8v%eqz`hsqhws zX~A5kMA8bg?@JSZctml(b=;Fcu}t|{(UQCk8-N;2z7Nek|AX24D%Z)^F2_#W(uTgBZYS9+OwzyQSwFs!lCc#|Ib z<`NKGSX!6--=8zjliWnwet+NZzkNxbJI`~@oS8Xu=A1KU&fGSJ6+yA=+52J|2&2 z?csV0&M#v{lLfb*hpSAhf4<=UX)6-?-!P+l&1m4Hazl5a;8uf=<*zCYu2OJIJe(|b z1PZf};2}5a67?oek_-7bMpL?3(CkB-lXQ8G9pai~zo7@D=ZN&h5U&_k@1lQc zgjy-_AX4h*{o5mA?4SMfgmnK3_pvnlEq}{;sQ)kdL0aB_%T;#&_5R!8W{v(2^M8J6 zirQZ8zdg&wbG*iLCv?&&Wkcwc)*9z#`9G(H2Ep9nysG-2=Kr+&Aof3b?{0~r^5(k0 zrBLAJSDG%+xa^Np;T&H`JlQnX_KmhN<8G%=D-+uXQ9fb{H@hrCK8a>Nm*Bp+%@fo7 zEkl6Al)myL{4LTBUC*1Sp5^)9?1wR)IRxM|zVORM>ByE&qnK<{;-HcDrw!IgbAjDnqpAM~^N>Gu4 zY23+iuY@Wep?AFIN7mZRD0|U@5tEaAE3dl^c$~(&4*3hufn# zfPbGa{JpXeNGw!yc=J~*L%G%$*uw3t0o~gfnb*ItdU5<(?zD~G%2f}@ z*kBu#GdmQr){M?oWD@`2x^RE`omM}8s7*IJC`|!`)wz%UWSf^08XzTkMrsa_jpIMqdhPz<^xA3~PG|2qj?SJ%Z=!l=qaoDyqA~O)?R{&%OX&pn)o#AiHy84agpxAT2$;4j5STap zgEz+-4BZpR{`En|zkGMjJsx&HzCfF0caVij`@1vNh#+@RbVZJVPv28}MXH#CPv^o!MYXhpbYn^@o1BULeVM`DZbjGjwf zEXrPJ2R;wS^|^sIuFKD1TXWad>W(}YomtMYKS32vE(bG?B} zdbsInaD{@?t>xOk9^&Cf2u|tA;G?GmH{8SBk_ML{xH|*5&K~Yi!M*9>Dg@Wf!)YB1 z`EMn1A$2}*0SmC?Z+626)9}s^pQb+e{oqLT9{~>bpYp)DxBaIPSMEj8d-IyTD0&Nh zVYHc|_a_RQ_Mbv^kHKA7M%{7(@n7RURFlq^nlwe}#){MOgLD0wB@eKq1wVCbFY>BP zu9l11Bgf;FTPT&#bV2#k4k?GoKooq-i@o{NMqMo=@k@W?Pb=~-N_m04aYHfwv?%_x zVwdM%6r}sphFxJ;aus=0c&k@kn;dE0ZcOu|W%7BtAMH|zbJvU7v{*3-Xm`0UY~H2k zQrNhdF zVW$6!`irOL#uCd)r|+@nE>WVfwG3JaOA(Xu^lQ36PDOYJfn9$DKic-+PQr9b6R){9 z&(m(1EVvt2ySHcROii78g}-Ps%yjP>i&U$MKx?Sps^>%<64wmXB5n!Omy$!e_efTJ zY}{9-qr))ldTAlxVjb#;R9{9>N~>Daeh0Dxai$|o8>v@lw5V!gM(%gMa7F}D#+-g1H;x48_x9g@)%z>dEZ>HO{Xvq&G zV}qtgn_9iqmk@u1v(DP~p)a{PY}>C!HE-9Jpr0;fkXyDbKH=ZC>$ea3c3lZr>L^KV zYni$V51_j%z}iV~IQL?_#L*=6r{2fU*w^nNq`uTzAlUlt@KYexc9s*bX^~&GR}!i3 z?=$4Eq5JMJ!ne`=;}dK$vb0QtZ#OQ`4SjC=FKsdwQpl;PjSHlIyAQ39dr`R`RfQEQ zd`X35Vtyad=8Zpp&t)0p+1;jNo9;I4)g<1Q&9sg4Q$X?G;yH-oR8y13nHTvnp1EI) z5HLW6>hM z*Y!Wm*4^ueu$~pEWyF77#75?j)5W)`K8wSf*B=l5`wlFe?{c+-OqXo_?R@2}9?ip#8X+~naBU*%)Skr=IIAE1`~f!EBB z6JHS>H?52VeeB1KWDS{8;HG?~?u!2vUSqJ>pOfMTe{w$^#lMq1Ds?!1TQo6nn9*Ke zC4J)Ce%AQ$XVUly(w%FIvZm1Z*7PrWshB2g{8J_91*Od!Z2Y%b{CD1h4)(3r|CP+# z<_j*7sC<8)eI0#FU2$cMpa|$2$6^~Pok8f^Ns$}KHxSx?k$L-6x$*rX|MvX;RAat} zi;el1i{{(-1r)>*z4P#A+z_1KZz%t}l1o1K7RH_hy`jju3pKf$C(`%pDi*)OJbFBi z-5d3|p9xLXxrQ8NHVt{CMi<`KKTuM6Q|4vm3I4RYwtNPET4Q=@Kid;ltsroB&#BhO zPetkDx9Fsl6tHIXK0Fh9|E<%#y>D@~EGJNQ#`)ggzpKDZ?^DF zGkhiU+Zs9l#DVlVr=k}rwBJw3Lkw&ET;HFrm&Y?ecs}MMONi#W`qJZ6`UjONSDW-g z*{bj8u0`3Z%Dr#5)w-8P*aYn)Q5%X2rf6}%O0F%6Fq3HmX%})cxR0l58i&?Sa8LBL zPI-0^)kOVddhTi(F^}q*Oi~TP$uy4nRX>~fi)q>JmPw{7Ql7L>nXXm z1d#{Qy~XL63(ilI{+hq1`YH#g%KpB}sH*JmtCUq9R=EQ?mpaB8p5a=1xDJ9l+rwoG zZa)tQY;Jz{@Q2b}4TKBvBPv`rzV7^abzF$1h=KG?#QycjST{oETB#0yYs!eq) zb3?-h1~c?$+Pqvnp84@qKb!OTGrfmrK4e>hiZlV7Hbu+l*!+Ku`7d3c{F-DH8HR%| zvHXgRD=LmGst<+%*&AcQEwvLW8X#s0+lUVBovo<9ES^~XPE+}X9G z>bm}Aeu%Ee2Cp5CUQY_#-dk`spK5CL9T9j`Kz`qG*vJz=1ltum2Tz<_Ef)8y} z2QZw-4Q^I>f!~rF<03Ur>k(>Olg*<#8x;K}k)O!FZv)}K@sDkXr;1B{vm*AIMGZK)Z`iw&~>h!=qQikg50hr>VV& zoJmRe;@+S6F3S*jqul(EZ~v{_tYQ9Ij#v>vyI$hAh(H`J^p84d@g$FGOfJu6AL_2m zW}~2dxv9JPC*;>qKBC$ARmW{1G(eotTyJ(&Ct2G%sBNb~Dvg<4$NWpu=1_VfENi>2 zv)3|*@QqcOz=;zFy!-YIK9BDJ8z;c6f z)Ec=yg3HPz*Z1rYF=ZE|M=b4k5|e@WRsRI=fLEx#dw_mU_cHa*Lz@Ss3#gEY$=_F>a#(FD#OD z2+l-oVI5bACOY7kBrKO7w%JcfwH-nqs!l0a(=22IV~Zo>OD(wsjs0Y)MX&l)4)<@` zpgZh>NP)>%q+v=nD;+D8vf)%Zo4+pUngb;JL4?my7p)EQJ9hHEgb>3D^JGRSmCobZ z!}lVvlM(1C)}c!}M2iKlYF;(T_OL%uUwhJy{VWVOXuw@o?8$#%bqi|bZH1)&(ukYk zIqJFncIr_A4Ji(3BvdspBEPnGhvw;a4X*XwO_Kk??D}11L{o!NVTvWpf zRaUhJ9LE_B_{f?D$66)oj$(C|s%3IB!(T611oME2HB%K}&XO^x{<@i3JM+zxAsKOF zP-~^WD0 zfkcs9e$2zQ5!}}vZoc6D?%@(?aAO5`P5?K>!@brIxOQr5ZBeD*rg^yOX>j?1JJ`cD zNdZxW6v(3D)J|Udb<%b7c;mwRDfHC;Ih+Q@^{E9&aw1z5b5-SVsqN`KwR3dA4_`EF z=l>1S$ebmS-z+|2X*J7jMFnnr4oVSVDMg7Z0zUC6fXx(7aHtoTU0XNg*XF26*>SFGAnQV>`XwJ}}n2UW+>$ZZZ^ zlKi<%o|_7DOKOR^_qDHeCzG5A4-{yRp-o=hSnhZ*aSYWpUi%9f$KSgk_Rb%yEba^^U^_ zePNU@i&ar0qm__Xw3uRxBP6#7KKWn37TR0GzLS7?Hm0qBYfPkM{ zp4aisNZ`>jr{~e`v4K*tBGse8PteLoW0~|~dE<3tx7#vWQ{8W!p3I9V_w$kiROVDy z*PT{3W%i6zOB_ZCTID0$SVM4U4KHw6qf~`fi*g#9wrR3`q`er<3;OGZTp;j@4bOG& z`WHX5POdG_R>!tF#}oRBRWT3^r2nwwz_LXDGI#(jB@9sZa#AXvK@*^y|2sc4vxhYe z4S_FyXu6GQ8X6UvPq&>fw4qU<4b7Kygbj_2Mf%{-O?w@hXrh-^qWNW1A;$xuK_Qjl z_=ry1y$>SNwExnj`Toiyozs8+@8ZvX_Sk=qKRe>saQ=TTE0!bXHI7FZPQQ@f4_>!SJkt{JbrgXIFIu+#s8=AXEq5>{!1_klSh-N zJj)HbO9}+qevv)+lj@pN_d|gzWI{0eP*iZGQuu%hd)O>dzJ(s?+l`t->2t>B|KK+A zk7#qPWK?Nlm(3w_EluD0KDea(RR(`&27hMm-$Ro(;vZc>xEC&1IbU=alI{!SM&4Hi za9R0Bvie)~8%LA?ko_*R^48GO7-lt`Zvz!&f+}NRBVyu+<~hPnnSuD?HkL&uRnYf6DG zl-O3fsagfYr`Tl-r~2l(xNgnvLyM+BC}Wdt(p#o z)-c5S!kE7SyJkqq{JX5p`>&c~32|Minyp^1R5>>T)4urSrQ^0?0v8y5-GOJ8-;&Q- z*SE(!G}9`3Nb0p}*24>;iQxsMeYch`t>54D zb@AC-IEm*|X9kBgG|$pJE{*&zKfmPB_o9czrA_)(1H$p#ieu*I=^Ic`f`!Pn;df$qYm*v0h)uIJarj zwtVYUtU%Z2<&qKdhca{4oHP~B^sqj=uE=n+jiJp0x-tMru{GEPkPW~b0ES(Wk-8T$ z-J+iuQO_1YRN%CK>{WeU$IvZ5;=1pfrXA8b!~=U8Vj+GKMnv}u~X8y(+u_XrLYf(gR?5;dl| zlV*nT2SXFDh5J<%7G8yYlJqIzW9(SMZ?YEfY!E*n%ewruFnD*pERdbG(rdQ6ZT!Vi zeb&01 zJ4FG}U$|gcpfKN?_(k7lEhq*`xh9}!w0%qzl}*O&Zipzw^l`s2lD(c*fSDsmYZ z>fRudnV$+`vz`xXdPYo|SU)uLo1r~-xhZV%U5|<+hWU46MhM+V{0c^+LK??)sjuL~DNqk{{Y#a}1m3`wQyEHXXS@xFe8c+I+Vix6nkZ zKHn3~{IY5zXRa!NL|N+6v0%jhH0c~JM%p;#DoWxVGm8tLlCoARyTHm?g=MW(Hpt3a zhh>BtZk%$wm2r&9!?sn~VOG{QENiE-eJP7|Y*!HLnz5kF+DmB7ZbHdAmqbxwU^3ogchD`1F{5$-MmdM`LXb*a4_fIeO2@s1JR;N0y@;Z1tH z)6?)43a^f|s~tl;T%O=`BQotM6WnkQC$CIMPln*WfKPy1Fxj!b<3Fwa;&8INB1+du-|{` z>QC}Yt|U6v!=Vsq7pYm>6z_OU3_=2Fx&e&dez%yCPVPdH-gGm^WxPZlG{if){{9WW z7RS%TKu1)h-HUtDAk`Z0!wbx+v;)V7`WJ|iW;Xe8>Gp0EoBXbugU(CZLsN!4v)FDH z%|YiWrphd~Us^+Yc|G59mRQfxgJI{nvr2)Z=5$LtFsz&G>-*ZJ+tcLNY4%$}^l19> zzsFzw#X8f+UrF0+jK6w)*8j@?_F(tW{@zwTcCYbQFRK=`mn?T=i5W7s1Yb|7dxn#f z7H<_@N)kl5N;fVvt01({TgF?h&M`S~Xg>4qY(MXY^(20H?ZK3%``eBi80w#u5;=SE zx83SdEjSuf&w5mU!j0r+f~tkTtw^)_Kl$5iz8-W!<9y9uc%flDX*d{PlvV1^*C4}u z`*Y<@U8QtqzQ`C&I0tg5WaLntRT!FB-nf@2Rhccc?ymAm^+ER)nus$6Bl7HqOq)ZPjN=sA)enp=OTF#!DodT1b*>Zv9K2EH0*lU zH~2=Uzggzv-Sq+1+?Gbt&+9C@BGsMwqOtI+gMFb+f7|(i#y2YigvvP>t$IGM653TS zbrsPo%8jg|Xd=`2O)&-DM{xg zxkqy=8awf5PoR&HIE{~*^kd0G#NJ7S3hpgT{jdF)CxI<5L87=ammh5|U8EJe&c3h= ziEc@ubcW0QFxb9iO#LCn$tq0w!if|{h4YsxTw{gP7|tn^Rro6vzNkVrp<%eXDlw}5 zm+m->_WZuKRxg&MS`$x4T(F9+w@-++E@fTj(kQzEb zD+lu+R``18-4%Ul~ys-P8n(|FF%{b!Ub6oFY zkM1=n{!z4iBzXCxe_0k}pdiqZ3>06T?jhxO0CH>)PCu5H#qJ$@8NZen6L~=_&X9?` zh`Q(f3%({sl`ILon9Pe|ZjOI3m<*vPO@uqVZR#_5QIa*4R1r;7=?}lO3(7D3A)f-) zVgHJfWQ|54VS`lPUHT5ZIU6Oy_pVQ}x8n@X6RvH(vW500#^&^`bA=h#U6j8*vT7#} zTCfOXSDFQXTaun8w{#ksbMTEe^mpJKT*|YM6$lw-L~wmlwtnJ-#P^1~{uf91q*z%h z)z`WHp-o;`kRLvHUsVE`lEzLte@eX8CH=ZYZkf)PEmCF`v;TR3trHJZ(V`3Z0{tw% z2kXS&JGbytv^zaqC&~_zGXSTJ`lE&262xU*+>_9#rw+6QkNcYN*NnrrfWIcq=NPHE z7#3H8ATIql%`N@2GH{S^zD~aA6Qap3d5vkeXq5X^UsFkLmeZinwPEz->HF?zg>euR z33>@soO?0lw9hK#2X400^%p*ms>GijJu8Iu4oDru-1o1Hv@FIKV_Iple74G{}z$YxENVrZ*%FJt62? zlkoPn#8?<&93qSpLX2f#B;n2=DYEeFb~h%#7{+ZCWJr6Pgu|mH#^Mm;Kg+<_CB!%u zjGUDnR2*X5H^6vIK%+9843+XtKjVm;r-|drXIq!loXCrm;yFz2jUA*&5Csx%3%Eh%@(*SQ9xwsm=+uSe3bWCkC#lBc(8h9@wFQo96 z6FYUcaL);#{zKejnGQuC01Y)h%^Zy{)>3$6|$5>*IhPzYiBz~D94Lf8QT zVLA^h!g3+(c)k^3xv3G9$`1E*a9`HnX}Ruv*L_bx`#LGe@zu`0eLW0KKPCB9SHu!0 z691Rhx+xegsR$o=e-cemT-`QG)hgoZv`sD7B?#W*(KB^_%7$ILbqobZsgVZg2;pqtAdz?yBG6MKA-pZ3uvz~9s z*VhdGF~JXRf=`}?hpXKjb_{~d(T!4ynXG3&8LWfjtiJLyR8=sYO8AovPrqbyGa7R1 zkWu3QqF_c%gj=IPaFCnVq?6_WarwnsE;=puRcGq0oo_!-jyb)Lx^I^Gm!D!cOP6D7 zQ8x}GSWpn-M}5~R!#%iG5_Owxs*p?w(+V!x?0%i=C7AXgb?XH_e0u2HHs$MFWPcm> z9o-oA@em2?_ErlH>S(sS?8?w~UfxN_H@h((VMAXG5uyJH=7MXLpGwSy2mCt!*anun zT93?=w#<)erBvy64d=Hhge%%n*(rCht+OTDGx!;lizy3W&~NzGuD(t6rqt#M_531I z(_I)n6CV(KFZa3}5$0ZR#!6$!YoGd#e^`%$DK&NzHC6;QzQwCx8q~Z%TZMs`*tAJ? zm@q8lpT_+Hw{}14vo(j%X9ECA_0sD``_w(>-#?@GXY2ibs%6Qhw(7mZ7^2e5k5LXP>{H~*i91%d~XAqJ|zvrjUpv2wa z;ja<=T*1GNgVJ5@OUJ78OO-yW(sO+2nJWEUr4Lft%pdw);16AmZncsx+z)wLd?bg8H`1rHZRa`k z-UbN51-1gT;k2n`Ce`05{__H4to{~el$-icoI(D;q(?SJ$iDE%<_g(wJ+dij$cjOh zl1nte7tJVNEPTT<%IAmcrG9ILZG&X-rvA_R=%~C;o3x6Bu{1Qt6i=!XibIn=V$Qt0 z%91dY^}bL^9XM06Extb~y{VI^&Xop@?x{Tna)Kxblc!ugP1F;a-%wulL{<(Z1LFzZ zD@dDDtS2^3_(V_ndKy+jev9i^CB>H52+e3vOC>Ub}YZ_@w@{5E9O5vkLAC~T(zRlb^M6O**wN*`BVB!h~Q%W${#(^?Mt*RIyp8Pd!h0z zj}E?+Df*2;))Fo?t^_8etu>xikSHBI{QG<{cXy!!B>oOIQTP} zO{qI=p(kIBplZ9u`F7E_YAE*toXt2t=Hb)_AzYc@&i8QYsR~reyZH9UeWMggq}peA zNVTsMoJ%&ehT1WyHyJWpzg;h1?{{6P_bXp-RP~#a_!cLP!(^@$dDHCF46ZGDZE z^M0cHiDFu6_uo&1Xxo@xs{UL`m-WnDKbNH|YWP{Pa0_VNj#Fd_dQblI`cj@0_Jb;h z{ci>hM$v?g!JN2JZu29^^n9N}^+Sc6Rz+XB&z`bbcvrM`EFM56y(8pzCX#(05v|zS*ZJI-TNotc%NhoeTJLXCY)V|SzmTN zrZcmvrmfAc+o?aCCC4K;sjdERE-H}Pt_SnsqTL2mbXg1*ALfCkrvZHr*Qb79MRuJ% z(5D9g)Y|58QGtNEc_6V`Skp=Yy$sL*2ro_@$~;r>X|{Iswp$q^;?A&Mj8yB`f}L)* z?bhDyNRzOIqQHOLm#83PyQ#f9A3kl|x65gCGis)4>^VP9 z77P5d#3?hDA4L7nDuTrL`HEicCc2jAMVi7{DwyD3au`&itZ$pV_(7Gg&NeR|ucPC> zcHa=r1W3~2CF*Z()OVtZSF{OGZk0uBANt3=ju7) z+j+mWQw2Brm&vAfb_?6dYqhh3VPxT>A=cK^g*-LsZ-HkssDIu0stlc#Z&JtekKKoE z=L4l%yzX1g2v!{KTm66mly|aLH;rAfwWiWu#y1gcWV@p1gO^xiR*CjAF0$vBJOwPZ z1~bOPJV_6X3VPtaQTE~e0@~jL&1~#}>+Pk#0Oa5ILOb8C>XD7T5T1WTM(42NcA)wU zlpanE56Fw8jkoeG+&V0C$(F40Z=!6nc32=vol99i2t^M;t z02IKIBW1!oQm!Z9l-5q}ShaYcNa>CxKeUE$Q!QNg;&;5b1_kG(W3^YYp1Nq&hCQ+5 ziLKa#cUJ~Iagp@|D~k3?5IXDK67ZH(eYVdTwH*}5nNhm>i<0S|SMn4;C>SXbc3r@+ z-9ez=KQr+csotO8O(Ui^!-6lrrUPl`r5cTFy|`t#A2OX@)bHKFB!9(zTja+0;1f$F zuLW6}Kz97F#1~cvP~m`W2^yqr2R~pnJcar-OrEc`adV%yo9u>EJCrr=?;t)aZMIC9 zX;R)~qb9-;ej-e@D#|;D6Jc4C{1L~M+3Pq#iQ8RoFDu{iJ%Rhkcz2Nh;>AEN>cgsY zjmaO^^KLIRW;e3y1po4mCRS~fi+peLe}wNsUG(f*t=NnSGqqI!;T=VI54Xs^iXWok zeVXUdu$^rXBHR7?#QE0r4w&f~S%;`meLi;|pQCEZ+grsfED!T*30E)mB+ZtNg@6&`$+p0|2AaED&zs9?0cj8tDo^MtJCD*nd8jWFwcYK5I`>)TyZ*x!?!&c$sdLA#US*2nE4gpuP4h{T7vt`- zJjwC4sEy^vYae^Nd%xG)(t_PgAi@Chl8Yc|07^%F)z_J6g?(_yITHV~2c^xNzkakz zvgcXQ;D+0NqzRh4metP<+v8sS*9TI**6fQObrz&kWo^+92jSsg_3Z~Thd)wbkS^oK zh7ZVGOHZZAKb;>p`KNu3pnKpt<;%#|P6rVLM3;8plQ3nb_G?j|ELlm>0y3i#KU#l^ zpMU+XE|LPNesJbDmO3RvZq944Z5<9{NFdnE z{Z_wiUu@yKDr?Mhqg~6?OGgL$kh(AaJw?sGAzGg7rvz4NqmnFU~ZS|8iv0Z)o*&(-I*`*S^=B! z&YI?*B-@gMAQyh)`~GYJEr%^QFVajNhyF3sVPEq$h|RSu_em#nj(I&J2yY0QUTlf9 z*SphjO;a7IeQwBbt6tHF4x~CN)ZGpeSd-rKBhuxEcN!2p zTS*tq4S?QzT|E)M8HdX|-F2+`LW&0#n&m6Uh`#9zVtNu!mdmm_keVyp>+kyNj(kHy z;e%KE!MQrlaJ}aDRB0_b42!?8>$}uaZgRDT?=5ITgEJA+Q<7I#D$=qnxBF#lnN4YZ zaEj3vsorS%#4oby2Ig^v8>6s1%Nt`&Gd9(WF4DaD`%arTueF8goZ3)Z-4sgdbhqf8>a)VR|I5wZQSxzD7n zvB18uK&wn?@@j=3a5W}IKP#NV=5tF>+xU^?9>u|vSf=)F;M*a!v14h7Ha0EH+2cFQ~uyX~))UZ_5+6!S^NeYrtj4e%-%fELDu=$Wl^4*4)Mi zMwEON$wePUrhOz;ul+Db%7S z4a`kG;S*ce=5`_$Z2EHbOVdimERy|TXD8~py*k8K%lU9Hl_t+aKH(w+NCyw8HP_v= zt9|f7yGXpfRc|?gfIql>&`S!Jk#`J=bECD-SPx*7M>FeOv4Nk3XLM9H35EH4W1;JI z!g?*!#_y*ytW=y!U~2KyD@!8J?qf1xJ8rda#&M#*cK;7sa~;o;#aT*?f0k^oVVdep z(-km&$%u3MynIC~9bCDlBpXld5Vt4H_XACZ|2%bAa9z+n;&-Cu|bg zoyg+LZeM@UuxJQU(D!6**M+St^ZAf$nDel2jA?KAp~9!d2|0AdZdQbw#g8J#rXdoK zIR3VGte@I|w>1~q4}*3d3x-|Ms^nY^cbTWIeSxP=Vvo`+XzS#j>0?wK4^Ho=oI^pX z2S3x67w8SmB8!ih50h2hl$&Y($4E^9t%xPBrW3v`P3%^VzvRGN(-v+PTlQ@gnNiCF zv0Ot>E>yx;OrVbXxR-`EFKv%+1@ z0-yrMham`3A-b1yA_hp&Q|WA`k- zm>*g7D`!R%t-Px8g4fU7tQ|(=2-UyN*ZhD4QmK*s7dd?pqd5hWLMe+CIOXJf3rVoqvk%Wo|5g11v}=yhKZM+GcW>0$$G2@C~sfdm&;xL0G;mIFN{Mre$NP5uJ_uaC-!56rf;|MbLO_-(4I)N`f~$* zl(W4!maHf&t!g-9YM)p@N2%spkYWILhzL1;-%aYsJG52NWPj632u8PaiS#vFUAFKD z`)ib&C#N=kh$R+B+rJgRkZBs<$3{5OO3IL)VZYYiCttrPTz}lGZPto5YTbPS|L-gQ z_pQEp|EVqbpLq!-W;IEEkM{7(zXSem;MKRaMYTdP)}z?}ycSa^3lyoo%mU!W9k~H_ zJcXR|hbe4Vr21{V7@AdyI^)Dny)DUSPD&Y&Li)Apu+7(j!%sLdH%s&n)l}C*Y2syL zJ~vn!v5C5}3kHfQb(F^j+FqLE<0ODT(6#^e_QnLPDI;yR&}FvJg!M_>m+zaZK~b>& zHqH0Et=5NceM=v-^KuYlY)Sud zKce4<`2LPm9aQFw_?~+se)+3Lt()|f5r6l!X~ge2ye07`d*bhf_!ECjyj0;P;*V)0 zUYiB~!QS{~+y7v1G>*fo?C8-Hd_kBT7cGL!x)vtKKV^p?g&zFUn(|6T*c5*$lj})y z8chy6BEoQtXI6u@iWXhksfEd*JzNdhY!I8SQ|IosI#^{^xC?^no?g;qa%ghNiU7fj`+nqvtLDPPdNN#j*KpOny(fU#BPC3gsqMBkze zr4U@7Mb!CA-8V;Tko>ZDFQRtnsh1T-W}L$^Sw^?$j?(V^5RLLLRV_xJT@Tsa-5m#*f6eX(Qe%gr&(czixzB0RtbW%t zT#-pL|FL_z$SXNdnl{;zS;XDLdA@P9t2))gWPK&bGhDCD#uwv(S>z997maNLU!34R zXaGOBKOr}+;%7|h(Y;t>@mF=wf%P}*1uH`*LCPHE7M+PDq20_Ted^WE4SyTqe}dtX ze@XaPQ!jjXEr>(Ds{~z2xdDT92orO?>$bnOIiUo9&jFv2x|}bberz*er zg7?z=sdi}b|KdNq_Jx1vKm7df_zz=S{vZ8^-8{hmZ~nt})~8*&d`ZCblL!6Z{D%!4 z|BL_dqTl?;e^~#ijqmcEjBnsS+=Cy=ef?Pr|KXrcq5tq+L{X#v@G%cxE%?3o4;%BX z$``fM9EdQ!8`jsJ2|+40X|iB|G|ipOU2^ zsBK%jpX3TYIr8bv1(FZDkWNL;*7Lwp(s$t4cn|o{Jg$MWOY1-ETRioehWbYv<0l4| zmG&K2R{pMeEniQ4!~*0~a!ZsC^{5xb5?5x`_4n&|D5b-EI*R16)x7>L?FZE!8{J;f zus~-TthtHi{?b>wdVlFSs|n?XDJ6gDaQ*iF(x+9{++TY40fE1C zG_e>7Q?g((Uz8>1ygB!izrgq+Ugodh*flVldl}~lTWyDKvD$w7l}>M%OO=sZZnP?%$y0_4 zAw?2>D4QqSUH>VL9#t&&&-;4Ko7#RkZd~IF6_j_9*d<1)UzRJiH)BX=k{pW9XC!}# z_vf-yclZ&usL6~?46;$>M}e^i=% zQ`@gw&<)r0*J1Md_NG_c@erkG+pIOrbp=o>;LsnKbn1=i%Qfareop2}CH2r(lYC!U zSE?7cyTVQC!=U?WukWrtbUi4v^s<2+pLo@3PX>5g)drI@UA{z4+y`P(cGeahwiT(D z_$1KkwUgv6^OF%ioP$@c+>j1>kh=Zm6`i%4d%8=`qdQAMNO#I<(CC>WWxFQX)ZufJP0Wj4rrNES6hWa@Pp1wi<|u4mZPDCcA(x&Geg_tdmn+{i zjc;@MI(qu9@M3hF$lR|bnFo0?N4d;2GS7j`GtzwDpZk;Lzx>VE!di;gV6#X2(PF7Djek&)`(Gd589aNDNN zd=W^fJir9~r}2wT(4%?9k7yz0izVmFMAu_s|B?!<6f?N2e2ovOjlX7M_oGee0-yMI zU&WKL#5fc9joSdarpix`)I`i*-`rm}<`Y4UuG(55Yc^8jV5`7y$(jd0HTo^3@0yEf zAP+b#^SSSyW@1>!lBdKHOLU=Vb}T_+f|Cw9;2QWEXOm0Zt`!6CyyY*=wq0@(ui{gh zW@_`OHF#ThD^Yr;G{XfWu`p3g@OtdmBvVNAAGp?7% z_u5wQT@~V6u^D`QJic|DPj2RM`~XRmI^RS~G5eout=8)WFS!Kc+$!j=!P{bYdp3aR z#|Hx1$p7v!;1|uIVpD0+tS#D62lY_@n$2B-}&0JzqC<4ECHK%wE$<`!V7CUt;2A20z4`sC*8F-RL zv|>IbC+E0J57BqtBGXaz$g||13al_PH_79_t$w<8HRV^^B|D5ykimfkb_97AmD1SO ztMOQ1BV0pQP$G5xO>V_n^+muhy#!)dJmV zkjgA1AyWNN@T^k+ztc0b7^G|p;Xc+L#mnfU0+K64zf*s=147lhbiSnWtnAEShJPn+ zPwp4hIf2)Cx2r_+ei=_gYe#j8)|Pal%Wz11H4FiOi1M30Idbgfy5&2=>F>8m*!IfT z7$Uv4yMxwhpKWlyWPCeJR^7}C4D)s1u+7Zti6Y(JhAg(_6R zaa5qCzy~!&s!s+~pVNzVuH-;=*zy9oMyr-=tiXqHx#ZWF8>yIb6|&Zu@#sYyk0`` zJCIO)x?Jop_<_KyohSdzvuqZ`7|W`WG#dVjR4WI6)OS<9i*=>Zy(kIucj)}P1P@DS z?Ha^kucIt}>#oJ}u5o;MnWv99K7&9g{d{Gbzo9WeNw@jPyDdGwF%Bs4b&wYuH{kXD zZl!pf3+9yIuJ)vY$IBb)$vULCtLFJJ;}cms)v%90Fn7bJ3Nrf0UHy*rWsdszDAiM2 z^!(+BqN(cpM9OYdL9?mt`buVKdmoCJgLi36cG}SDSpv-~|(#67v3 zN2@K*Uzlrrw7FFANfuUwb2>|fZomw66M>xy708YM(XC!%wB7$Xw9ViPXv@fewzbgA z&`CQBm$X}%ilub}^C{w{a)vBz2{RLzI3eXF*mqGbU%2}^OPa4=NH2l)q(>Vn8b+s{ zX)Ob{7%3+`|1AqkUlL31Q(9Fq3_+*x1C2TTexzJ%`$ww^55MO4XkCU-8eWZWYX8T+ z0}Yt#XKF>Py)#8um{s?q$CEScx1 zyCT(+V75Jci@uP4Ca-y{?}3pSI!_Qw9B4T*+-GwTQml(eckMW z`PyEf;*9z?X`h?*w)O9)o9Lf;l$xEl;(L1NLEm$Wxj(mA50@egQspLg(8or5_=g2Q zD}=vU@RtDJqK7*Q^k?F@kpEdR!#29HbJfJuA?fekx2uf40m8pD#DA3VXL|a6c1Q~j zc!b%QdI!nm$KS)Z5&YvJ{O8{Rzr<7CiF}NU_UKIz6!~+(-yOnF^YF_z0xw68_0OLL zKi$K>g5tPncN%<8!RrDQtN&CFUoCjKmkoY`;7dIGnb$#oI(!PwPIV37#R?053Y_JC zV*2$G=%@@#3}(!M%ozPIT32iwP*+@FKW*;VyfV$G>PDP)LoFCkYLL67-mE+Bv{wS% zUUmHoGIGVS4e@}h{v2uIDsKjx{d)%+`hi~W#=T|Z^4ce~>*pe&wrJ+Jkai{QZ87RO zG-!06#mdC1``56%ZY*v_&+aWhqDOXI6Fmp+ot}m!d)%#l)9Cqb1N2B$g1YoW6R zJ-0IT1A6R!OooOj3fmtXGp znkH4t3%w_xk$Sn}uDvE(JWrun*d$E|BLO=Zt& zSF_G#w6olex1XbCjf>}XkcSY3vLP0E@{7{Qli!?K+o4yib`t7NCadWdcgMfXwRn53 z09d&4b0amYK_@%(>)uq69Hd|^`j504$8%AzMs_|V)-_jyuZr-cL1+dA0MJX3&8jT_MOz38|)A}KoXbu{wi zifHYLt=+|3E+vic9-u_yn;Sg+x7crvKXHB<^SNg6jTN*UP`rd3`D`0yV>aFvdi=}L zvo%0r)-#l+Ln=dgwKfQkVTjcc>P%Msu2*bBzO>Hl;9YI3 zH+>en6-+X(x8N{5QG96Yj)aEvb4J^0YUUpF{M~0Ux(@~ygwlr{-1WWI@x0lssr*=u z#SVf^1Dolly=G*tSqGV|Jee!oLS_}@x0qK2P}O+8w!eqFUvND=+)Tj@0ZwBXHZO@w zv1Ri%YtD+$)JWC>lVk4dSB;LC@Y$v@8w0}kt*__AE-hApIp9dOLD5W8Zv1+VMAe+U zhFf9rqJQnK{oJGv^6|nf>$bXq*%`UwP=!7R`lp-X>wo-X>L11UGhBaYL0&7zJA5pzx5;PKhxJ=topx& zt`_yrl_>l-^{2@z6IM6b%+CQKTcm@bDpGCw2?>cTVp3sHZ*g6GG>l$)oxvbmgm6#IZXp`0hrZd78SiQQ6WONU=w`OkzFCnO3dAo>;OS7{ z)dXbDc}+q{^P7^>qc93|PzyPHr}tb3cl(&)a)7-Mx-!$x(K+gqaXX_)+*%lKh=}!w zA?D}+{Na%&cMw>6Bp!_MMB8Mt>%Y;RvD0SmRT#2J86y9peWUX4iB>P0s;`Dtciqd@ z@xNV5$4fzC;Okn^@iQ0@!FoncV!(8LF_q5C%+te|%gysKISML-oI;WFwI{Q8rxx>Imgea; zP3snSZFza%W_f(id^m$>sn}MNx|16D1-WEdH81p{}k}_Rc+Dd8DMx24B-IhGP+9!K}rijTqJDA zn64J|=Max?yzqIKc+tJWHr&%QW->_9wLQ(>)aXWf#1rmFEro;O{PS1}r?T`h5wz%; zcZQXum`TY5aaSMJG$Y2D?5}gP4qj(#)^BBX;~ylhW4&wF-4`nPYq0Wl$Qzp2AboPy zH4QyEa#n{d5@#}3me_P4HoTqtMR3v8KmZ|$y8T4Sjz`@kE3D_Qd!Lr-$cXja;|_grhWdk0};qHkB8wV1_UEvB`iJ6!qQt@KAY@vm32&^-ox;Fn_M zcUKH42ZSH9p#%MA<5>_c6Uvgw$52HH59Fzx)lE}DO{ZnVyQftd zty;m^v(qxlciBhFTAmkeJnCczbiVN$?ul>R0He+4e@ONxzCTjq_sIzj$dA(0drb$m z(6zoVm2=l0JI?PxUuoZ85Pxi*40dK%h)U+8`F!zQgC7DA6umvs|XYi_9NHTk1l z(&HZ?{F6NXl_!D!w;sQioX}7%27mn@yd2fdf-M?z$zTiU{o_)z_(Qv~m&gCj8t~8X z_$Lbg2_F9kY4|rV<5H*ET9aY>cc}u&{iekdeJ<2z`~|`91l}4#y@&>|wcq{zBXLor zdMTKLkvd$8iGnz89JHx{3mAtcez4JcmQUo|-Z$3w1_o(^e&SL`-bmi&xb0Vphl#Jg z&yISkFR#|`slQ)^6209We!uy=>XfS&SF_gWqqiagI+VeLv5QF6W=r zvd5j1hBBJG($2nWuzFSAka2Z6`bRk@Uw6ApmYMIF``bPxX=>u5v`_v0O#@5h{B0BO zW=xTu5W1K->gRhY_f({S2|iu*{dZobNHVL0tLiZ>X%C{vi=&sO7our zz;+z1`LBLV_i=x|r9AL36f$+ud}XO+G>hj(if7X=9SrdSADA>hj^@OBDkPswdKlu1 z?BpJ+$pNh_{P?i6&H-Oj(*pU$m(hu~K7Fb~1X*t3Wt%Yi$7rp$Q)m}3X7#Ux{Qd9g zneqO=p(mF{Q_GCZ|0zB5FHfiEm=^TBg2qz+O1QZ9SzNrUu9`F9RhwJa4r>(|xD@^9 zy@f2p_ePU#mM&v`Pd%HqzVrLq7QYkEw0QrI=D+VC4zE#P@VY^8qV$gU91HfhS>


he*$mbH!_T(v1vVGyj2CAvay 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
OiPXx7jj;Tc@g(=jwLze5Jn2oC%q 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

es}jDpYP-Q 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

h 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi new file mode 100644 index 0000000..c3148f1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi @@ -0,0 +1,67 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import padding +from cryptography.hazmat.primitives._serialization import ( + KeySerializationEncryptionBuilder, +) +from cryptography.utils import Buffer + +class PKCS7PaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class ANSIX923PaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class PKCS7UnpaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class ANSIX923UnpaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class Encoding: + PEM: typing.ClassVar[Encoding] + DER: typing.ClassVar[Encoding] + OpenSSH: typing.ClassVar[Encoding] + Raw: typing.ClassVar[Encoding] + X962: typing.ClassVar[Encoding] + SMIME: typing.ClassVar[Encoding] + +class PrivateFormat: + PKCS8: typing.ClassVar[PrivateFormat] + TraditionalOpenSSL: typing.ClassVar[PrivateFormat] + Raw: typing.ClassVar[PrivateFormat] + OpenSSH: typing.ClassVar[PrivateFormat] + PKCS12: typing.ClassVar[PrivateFormat] + def encryption_builder(self) -> KeySerializationEncryptionBuilder: ... + +class PublicFormat: + SubjectPublicKeyInfo: typing.ClassVar[PublicFormat] + PKCS1: typing.ClassVar[PublicFormat] + OpenSSH: typing.ClassVar[PublicFormat] + Raw: typing.ClassVar[PublicFormat] + CompressedPoint: typing.ClassVar[PublicFormat] + UncompressedPoint: typing.ClassVar[PublicFormat] + +class ParameterFormat: + PKCS3: typing.ClassVar[ParameterFormat] + +class ObjectIdentifier: + def __init__(self, value: str) -> None: ... + @property + def dotted_string(self) -> str: ... + @property + def _name(self) -> str: ... + +T = typing.TypeVar("T") diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi new file mode 100644 index 0000000..3d4ea4e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi @@ -0,0 +1,8 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +lib: typing.Any +ffi: typing.Any diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi new file mode 100644 index 0000000..3b5f208 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi @@ -0,0 +1,7 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +def decode_dss_signature(signature: bytes) -> tuple[int, int]: ... +def encode_dss_signature(r: int, s: int) -> bytes: ... +def parse_spki_for_data(data: bytes) -> bytes: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi new file mode 100644 index 0000000..66fc065 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi @@ -0,0 +1,133 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import typing + +T = typing.TypeVar("T") + +def decode_der(cls: type[T], value: bytes) -> T: ... +def encode_der(value: typing.Any) -> bytes: ... +def non_root_python_to_rust(cls: type) -> Type: ... + +# Type is a Rust enum with tuple variants. For now, we express the type +# annotations like this: +class Type: + Sequence: typing.ClassVar[type] + SequenceOf: typing.ClassVar[type] + Set: typing.ClassVar[type] + SetOf: typing.ClassVar[type] + Option: typing.ClassVar[type] + Choice: typing.ClassVar[type] + ValueSet: typing.ClassVar[type] + PyBool: typing.ClassVar[type] + PyInt: typing.ClassVar[type] + PyBytes: typing.ClassVar[type] + PyStr: typing.ClassVar[type] + +class Annotation: + default: typing.Any | None + encoding: Encoding | None + size: Size | None + def __new__( + cls, + default: typing.Any | None = None, + encoding: Encoding | None = None, + size: Size | None = None, + ) -> Annotation: ... + def is_empty(self) -> bool: ... + +# Encoding is a Rust enum with tuple variants. For now, we express the type +# annotations like this: +class Encoding: + Implicit: typing.ClassVar[type] + Explicit: typing.ClassVar[type] + +class Size: + min: int + max: int | None + + def __new__(cls, min: int, max: int | None) -> Size: ... + @staticmethod + def exact(n: int) -> Size: ... + +class AnnotatedType: + inner: Type + annotation: Annotation + + def __new__(cls, inner: Type, annotation: Annotation) -> AnnotatedType: ... + +class AnnotatedTypeObject: + annotated_type: AnnotatedType + value: typing.Any + + def __new__( + cls, annotated_type: AnnotatedType, value: typing.Any + ) -> AnnotatedTypeObject: ... + +class Variant: + python_class: type + ann_type: AnnotatedType + tag_name: str | None + + def __new__( + cls, + python_class: type, + ann_type: AnnotatedType, + tag_name: str | None, + ) -> Variant: ... + +class PrintableString: + def __new__(cls, inner: str) -> PrintableString: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def as_str(self) -> str: ... + +class IA5String: + def __new__(cls, inner: str) -> IA5String: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def as_str(self) -> str: ... + +class UTCTime: + def __new__(cls, inner: datetime.datetime) -> UTCTime: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def as_datetime(self) -> datetime.datetime: ... + +class GeneralizedTime: + def __new__(cls, inner: datetime.datetime) -> GeneralizedTime: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def as_datetime(self) -> datetime.datetime: ... + +class BitString: + def __new__(cls, data: bytes, padding_bits: int) -> BitString: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def as_bytes(self) -> bytes: ... + def padding_bits(self) -> int: ... + +class Tlv: + @property + def tag_bytes(self) -> bytes: ... + @property + def data(self) -> memoryview: ... + def parse(self, cls: type): ... + +class SetOf(typing.Generic[T]): + def __new__(cls, inner: list[T]) -> SetOf[T]: ... + def as_list(self) -> list[T]: ... + def __eq__(self, other: object) -> bool: ... + def __repr__(self) -> str: ... + +class Null: + def __new__(cls) -> Null: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi new file mode 100644 index 0000000..09f46b1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi @@ -0,0 +1,17 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +class _Reasons: + BACKEND_MISSING_INTERFACE: _Reasons + UNSUPPORTED_HASH: _Reasons + UNSUPPORTED_CIPHER: _Reasons + UNSUPPORTED_PADDING: _Reasons + UNSUPPORTED_MGF: _Reasons + UNSUPPORTED_PUBLIC_KEY_ALGORITHM: _Reasons + UNSUPPORTED_ELLIPTIC_CURVE: _Reasons + UNSUPPORTED_SERIALIZATION: _Reasons + UNSUPPORTED_X509: _Reasons + UNSUPPORTED_EXCHANGE_ALGORITHM: _Reasons + UNSUPPORTED_DIFFIE_HELLMAN: _Reasons + UNSUPPORTED_MAC: _Reasons diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi new file mode 100644 index 0000000..103e96c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi @@ -0,0 +1,117 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +from collections.abc import Iterator + +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes +from cryptography.x509 import ocsp + +class OCSPRequest: + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + @property + def extensions(self) -> x509.Extensions: ... + +class OCSPResponse: + @property + def responses(self) -> Iterator[OCSPSingleResponse]: ... + @property + def response_status(self) -> ocsp.OCSPResponseStatus: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_response_bytes(self) -> bytes: ... + @property + def certificates(self) -> list[x509.Certificate]: ... + @property + def responder_key_hash(self) -> bytes | None: ... + @property + def responder_name(self) -> x509.Name | None: ... + @property + def produced_at(self) -> datetime.datetime: ... + @property + def produced_at_utc(self) -> datetime.datetime: ... + @property + def certificate_status(self) -> ocsp.OCSPCertStatus: ... + @property + def revocation_time(self) -> datetime.datetime | None: ... + @property + def revocation_time_utc(self) -> datetime.datetime | None: ... + @property + def revocation_reason(self) -> x509.ReasonFlags | None: ... + @property + def this_update(self) -> datetime.datetime: ... + @property + def this_update_utc(self) -> datetime.datetime: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def single_extensions(self) -> x509.Extensions: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + +class OCSPSingleResponse: + @property + def certificate_status(self) -> ocsp.OCSPCertStatus: ... + @property + def revocation_time(self) -> datetime.datetime | None: ... + @property + def revocation_time_utc(self) -> datetime.datetime | None: ... + @property + def revocation_reason(self) -> x509.ReasonFlags | None: ... + @property + def this_update(self) -> datetime.datetime: ... + @property + def this_update_utc(self) -> datetime.datetime: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + +def load_der_ocsp_request(data: bytes) -> ocsp.OCSPRequest: ... +def load_der_ocsp_response(data: bytes) -> ocsp.OCSPResponse: ... +def create_ocsp_request( + builder: ocsp.OCSPRequestBuilder, +) -> ocsp.OCSPRequest: ... +def create_ocsp_response( + status: ocsp.OCSPResponseStatus, + builder: ocsp.OCSPResponseBuilder | None, + private_key: PrivateKeyTypes | None, + hash_algorithm: hashes.HashAlgorithm | None, +) -> ocsp.OCSPResponse: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi new file mode 100644 index 0000000..404a300 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi @@ -0,0 +1,80 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.bindings._rust.openssl import ( + aead, + ciphers, + cmac, + dh, + dsa, + ec, + ed448, + ed25519, + hashes, + hmac, + hpke, + kdf, + keys, + mldsa, + mlkem, + poly1305, + rsa, + x448, + x25519, +) + +__all__ = [ + "aead", + "ciphers", + "cmac", + "dh", + "dsa", + "ec", + "ed448", + "ed25519", + "hashes", + "hmac", + "hpke", + "kdf", + "keys", + "mldsa", + "mlkem", + "openssl_version", + "openssl_version_text", + "poly1305", + "raise_openssl_error", + "rsa", + "x448", + "x25519", +] + +CRYPTOGRAPHY_IS_LIBRESSL: bool +CRYPTOGRAPHY_IS_BORINGSSL: bool +CRYPTOGRAPHY_IS_AWSLC: bool +CRYPTOGRAPHY_OPENSSL_309_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_320_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_330_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_350_OR_GREATER: bool + +class Providers: ... + +_legacy_provider_loaded: bool +_providers: Providers + +def openssl_version() -> int: ... +def openssl_version_text() -> str: ... +def raise_openssl_error() -> typing.NoReturn: ... +def capture_error_stack() -> list[OpenSSLError]: ... +def is_fips_enabled() -> bool: ... +def enable_fips(providers: Providers) -> None: ... + +class OpenSSLError: + @property + def lib(self) -> int: ... + @property + def reason(self) -> int: ... + @property + def reason_text(self) -> bytes: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi new file mode 100644 index 0000000..eb44608 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi @@ -0,0 +1,189 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from collections.abc import Sequence + +from cryptography.utils import Buffer + +class AESGCM: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class ChaCha20Poly1305: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key() -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESCCM: + def __init__(self, key: Buffer, tag_length: int = 16) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESSIV: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + ) -> bytes: ... + def encrypt_into( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + ) -> bytes: ... + def decrypt_into( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + buf: Buffer, + ) -> int: ... + +class AESOCB3: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESGCMSIV: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi new file mode 100644 index 0000000..a48fb01 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi @@ -0,0 +1,38 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import ciphers +from cryptography.hazmat.primitives.ciphers import modes + +@typing.overload +def create_encryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.ModeWithAuthenticationTag +) -> ciphers.AEADEncryptionContext: ... +@typing.overload +def create_encryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode | None +) -> ciphers.CipherContext: ... +@typing.overload +def create_decryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.ModeWithAuthenticationTag +) -> ciphers.AEADDecryptionContext: ... +@typing.overload +def create_decryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode | None +) -> ciphers.CipherContext: ... +def cipher_supported( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode +) -> bool: ... +def _advance( + ctx: ciphers.AEADEncryptionContext | ciphers.AEADDecryptionContext, n: int +) -> None: ... +def _advance_aad( + ctx: ciphers.AEADEncryptionContext | ciphers.AEADDecryptionContext, n: int +) -> None: ... + +class CipherContext: ... +class AEADEncryptionContext: ... +class AEADDecryptionContext: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi new file mode 100644 index 0000000..9c03508 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi @@ -0,0 +1,18 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import ciphers + +class CMAC: + def __init__( + self, + algorithm: ciphers.BlockCipherAlgorithm, + backend: typing.Any = None, + ) -> None: ... + def update(self, data: bytes) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, signature: bytes) -> None: ... + def copy(self) -> CMAC: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi new file mode 100644 index 0000000..08733d7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi @@ -0,0 +1,51 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import dh + +MIN_MODULUS_SIZE: int + +class DHPrivateKey: ... +class DHPublicKey: ... +class DHParameters: ... + +class DHPrivateNumbers: + def __init__(self, x: int, public_numbers: DHPublicNumbers) -> None: ... + def private_key(self, backend: typing.Any = None) -> dh.DHPrivateKey: ... + @property + def x(self) -> int: ... + @property + def public_numbers(self) -> DHPublicNumbers: ... + +class DHPublicNumbers: + def __init__( + self, y: int, parameter_numbers: DHParameterNumbers + ) -> None: ... + def public_key(self, backend: typing.Any = None) -> dh.DHPublicKey: ... + @property + def y(self) -> int: ... + @property + def parameter_numbers(self) -> DHParameterNumbers: ... + +class DHParameterNumbers: + def __init__(self, p: int, g: int, q: int | None = None) -> None: ... + def parameters(self, backend: typing.Any = None) -> dh.DHParameters: ... + @property + def p(self) -> int: ... + @property + def g(self) -> int: ... + @property + def q(self) -> int | None: ... + +def generate_parameters( + generator: int, key_size: int, backend: typing.Any = None +) -> dh.DHParameters: ... +def from_pem_parameters( + data: bytes, backend: typing.Any = None +) -> dh.DHParameters: ... +def from_der_parameters( + data: bytes, backend: typing.Any = None +) -> dh.DHParameters: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi new file mode 100644 index 0000000..0922a4c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi @@ -0,0 +1,41 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import dsa + +class DSAPrivateKey: ... +class DSAPublicKey: ... +class DSAParameters: ... + +class DSAPrivateNumbers: + def __init__(self, x: int, public_numbers: DSAPublicNumbers) -> None: ... + @property + def x(self) -> int: ... + @property + def public_numbers(self) -> DSAPublicNumbers: ... + def private_key(self, backend: typing.Any = None) -> dsa.DSAPrivateKey: ... + +class DSAPublicNumbers: + def __init__( + self, y: int, parameter_numbers: DSAParameterNumbers + ) -> None: ... + @property + def y(self) -> int: ... + @property + def parameter_numbers(self) -> DSAParameterNumbers: ... + def public_key(self, backend: typing.Any = None) -> dsa.DSAPublicKey: ... + +class DSAParameterNumbers: + def __init__(self, p: int, q: int, g: int) -> None: ... + @property + def p(self) -> int: ... + @property + def q(self) -> int: ... + @property + def g(self) -> int: ... + def parameters(self, backend: typing.Any = None) -> dsa.DSAParameters: ... + +def generate_parameters(key_size: int) -> dsa.DSAParameters: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi new file mode 100644 index 0000000..5c3b7bf --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi @@ -0,0 +1,52 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import ec + +class ECPrivateKey: ... +class ECPublicKey: ... + +class EllipticCurvePrivateNumbers: + def __init__( + self, private_value: int, public_numbers: EllipticCurvePublicNumbers + ) -> None: ... + def private_key( + self, backend: typing.Any = None + ) -> ec.EllipticCurvePrivateKey: ... + @property + def private_value(self) -> int: ... + @property + def public_numbers(self) -> EllipticCurvePublicNumbers: ... + +class EllipticCurvePublicNumbers: + def __init__(self, x: int, y: int, curve: ec.EllipticCurve) -> None: ... + def public_key( + self, backend: typing.Any = None + ) -> ec.EllipticCurvePublicKey: ... + @property + def x(self) -> int: ... + @property + def y(self) -> int: ... + @property + def curve(self) -> ec.EllipticCurve: ... + def __eq__(self, other: object) -> bool: ... + +def curve_supported(curve: ec.EllipticCurve) -> bool: ... +def generate_private_key( + curve: ec.EllipticCurve, backend: typing.Any = None +) -> ec.EllipticCurvePrivateKey: ... +def from_private_numbers( + numbers: ec.EllipticCurvePrivateNumbers, +) -> ec.EllipticCurvePrivateKey: ... +def from_public_numbers( + numbers: ec.EllipticCurvePublicNumbers, +) -> ec.EllipticCurvePublicKey: ... +def from_public_bytes( + curve: ec.EllipticCurve, data: bytes +) -> ec.EllipticCurvePublicKey: ... +def derive_private_key( + private_value: int, curve: ec.EllipticCurve +) -> ec.EllipticCurvePrivateKey: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi new file mode 100644 index 0000000..f85b3d1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ed25519 +from cryptography.utils import Buffer + +class Ed25519PrivateKey: ... +class Ed25519PublicKey: ... + +def generate_key() -> ed25519.Ed25519PrivateKey: ... +def from_private_bytes(data: Buffer) -> ed25519.Ed25519PrivateKey: ... +def from_public_bytes(data: bytes) -> ed25519.Ed25519PublicKey: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi new file mode 100644 index 0000000..c8ca0ec --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ed448 +from cryptography.utils import Buffer + +class Ed448PrivateKey: ... +class Ed448PublicKey: ... + +def generate_key() -> ed448.Ed448PrivateKey: ... +def from_private_bytes(data: Buffer) -> ed448.Ed448PrivateKey: ... +def from_public_bytes(data: bytes) -> ed448.Ed448PublicKey: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi new file mode 100644 index 0000000..106b531 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi @@ -0,0 +1,30 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import hashes +from cryptography.utils import Buffer + +class Hash(hashes.HashContext): + def __init__( + self, algorithm: hashes.HashAlgorithm, backend: typing.Any = None + ) -> None: ... + @property + def algorithm(self) -> hashes.HashAlgorithm: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def copy(self) -> Hash: ... + @staticmethod + def hash(algorithm: hashes.HashAlgorithm, data: Buffer) -> bytes: ... + +def hash_supported(algorithm: hashes.HashAlgorithm) -> bool: ... + +class XOFHash: + def __init__(self, algorithm: hashes.ExtendableOutputFunction) -> None: ... + @property + def algorithm(self) -> hashes.ExtendableOutputFunction: ... + def update(self, data: Buffer) -> None: ... + def squeeze(self, length: int) -> bytes: ... + def copy(self) -> XOFHash: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi new file mode 100644 index 0000000..3883d1b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi @@ -0,0 +1,22 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import hashes +from cryptography.utils import Buffer + +class HMAC(hashes.HashContext): + def __init__( + self, + key: Buffer, + algorithm: hashes.HashAlgorithm, + backend: typing.Any = None, + ) -> None: ... + @property + def algorithm(self) -> hashes.HashAlgorithm: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, signature: bytes) -> None: ... + def copy(self) -> HMAC: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi new file mode 100644 index 0000000..7ea1711 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi @@ -0,0 +1,109 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ec, mlkem, x25519 +from cryptography.utils import Buffer + +class KEM: + X25519: KEM + P256: KEM + P384: KEM + P521: KEM + MLKEM768: KEM + MLKEM1024: KEM + MLKEM768_X25519: KEM + MLKEM1024_P384: KEM + def enc_length(self) -> int: ... + +class KDF: + HKDF_SHA256: KDF + HKDF_SHA384: KDF + HKDF_SHA512: KDF + SHAKE128: KDF + SHAKE256: KDF + +class AEAD: + AES_128_GCM: AEAD + AES_256_GCM: AEAD + CHACHA20_POLY1305: AEAD + +class MLKEM768X25519PrivateKey: + def __init__( + self, + mlkem_key: mlkem.MLKEM768PrivateKey, + x25519_key: x25519.X25519PrivateKey, + ) -> None: ... + def public_key(self) -> MLKEM768X25519PublicKey: ... + +class MLKEM768X25519PublicKey: + def __init__( + self, + mlkem_key: mlkem.MLKEM768PublicKey, + x25519_key: x25519.X25519PublicKey, + ) -> None: ... + +class MLKEM1024P384PrivateKey: + def __init__( + self, + mlkem_key: mlkem.MLKEM1024PrivateKey, + p384_key: ec.EllipticCurvePrivateKey, + ) -> None: ... + def public_key(self) -> MLKEM1024P384PublicKey: ... + +class MLKEM1024P384PublicKey: + def __init__( + self, + mlkem_key: mlkem.MLKEM1024PublicKey, + p384_key: ec.EllipticCurvePublicKey, + ) -> None: ... + +class Suite: + def __init__(self, kem: KEM, kdf: KDF, aead: AEAD) -> None: ... + def encrypt( + self, + plaintext: Buffer, + public_key: x25519.X25519PublicKey + | ec.EllipticCurvePublicKey + | mlkem.MLKEM768PublicKey + | mlkem.MLKEM1024PublicKey + | MLKEM768X25519PublicKey + | MLKEM1024P384PublicKey, + info: Buffer | None = None, + ) -> bytes: ... + def decrypt( + self, + ciphertext: Buffer, + private_key: x25519.X25519PrivateKey + | ec.EllipticCurvePrivateKey + | mlkem.MLKEM768PrivateKey + | mlkem.MLKEM1024PrivateKey + | MLKEM768X25519PrivateKey + | MLKEM1024P384PrivateKey, + info: Buffer | None = None, + ) -> bytes: ... + +def _encrypt_with_aad( + suite: Suite, + plaintext: Buffer, + public_key: x25519.X25519PublicKey + | ec.EllipticCurvePublicKey + | mlkem.MLKEM768PublicKey + | mlkem.MLKEM1024PublicKey + | MLKEM768X25519PublicKey + | MLKEM1024P384PublicKey, + info: Buffer | None = None, + aad: Buffer | None = None, +) -> bytes: ... +def _decrypt_with_aad( + suite: Suite, + ciphertext: Buffer, + private_key: x25519.X25519PrivateKey + | ec.EllipticCurvePrivateKey + | mlkem.MLKEM768PrivateKey + | mlkem.MLKEM1024PrivateKey + | MLKEM768X25519PrivateKey + | MLKEM1024P384PrivateKey, + info: Buffer | None = None, + aad: Buffer | None = None, +) -> bytes: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi new file mode 100644 index 0000000..bb37b96 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi @@ -0,0 +1,205 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.hashes import HashAlgorithm +from cryptography.hazmat.primitives.kdf.kbkdf import CounterLocation, Mode +from cryptography.utils import Buffer + +class PBKDF2HMAC: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes, + iterations: int, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class Scrypt: + def __init__( + self, + salt: bytes, + length: int, + n: int, + r: int, + p: int, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class Argon2d: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class Argon2i: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class Argon2id: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class HKDF: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes | None, + info: bytes | None, + backend: typing.Any = None, + ): ... + @staticmethod + def extract( + algorithm: HashAlgorithm, salt: bytes | None, key_material: Buffer + ) -> bytes: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class HKDFExpand: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + info: bytes | None, + backend: typing.Any = None, + ): ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class X963KDF: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + sharedinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class ConcatKDFHash: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + otherinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class ConcatKDFHMAC: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes | None, + otherinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class KBKDFHMAC: + def __init__( + self, + algorithm: HashAlgorithm, + mode: Mode, + length: int, + rlen: int, + llen: int | None, + location: CounterLocation, + label: bytes | None, + context: bytes | None, + fixed: bytes | None, + backend: typing.Any = None, + *, + break_location: int | None = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class KBKDFCMAC: + def __init__( + self, + algorithm: typing.Any, + mode: Mode, + length: int, + rlen: int, + llen: int | None, + location: CounterLocation, + label: bytes | None, + context: bytes | None, + fixed: bytes | None, + backend: typing.Any = None, + *, + break_location: int | None = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi new file mode 100644 index 0000000..404057e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi @@ -0,0 +1,34 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric.types import ( + PrivateKeyTypes, + PublicKeyTypes, +) +from cryptography.utils import Buffer + +def load_der_private_key( + data: Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> PrivateKeyTypes: ... +def load_pem_private_key( + data: Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> PrivateKeyTypes: ... +def load_der_public_key( + data: bytes, + backend: typing.Any = None, +) -> PublicKeyTypes: ... +def load_pem_public_key( + data: bytes, + backend: typing.Any = None, +) -> PublicKeyTypes: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi new file mode 100644 index 0000000..232469a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi @@ -0,0 +1,23 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import mldsa +from cryptography.utils import Buffer + +class MLDSA44PrivateKey: ... +class MLDSA44PublicKey: ... +class MLDSA65PrivateKey: ... +class MLDSA65PublicKey: ... +class MLDSA87PrivateKey: ... +class MLDSA87PublicKey: ... + +def generate_mldsa44_key() -> mldsa.MLDSA44PrivateKey: ... +def from_mldsa44_public_bytes(data: bytes) -> mldsa.MLDSA44PublicKey: ... +def from_mldsa44_seed_bytes(data: Buffer) -> mldsa.MLDSA44PrivateKey: ... +def generate_mldsa65_key() -> mldsa.MLDSA65PrivateKey: ... +def from_mldsa65_public_bytes(data: bytes) -> mldsa.MLDSA65PublicKey: ... +def from_mldsa65_seed_bytes(data: Buffer) -> mldsa.MLDSA65PrivateKey: ... +def generate_mldsa87_key() -> mldsa.MLDSA87PrivateKey: ... +def from_mldsa87_public_bytes(data: bytes) -> mldsa.MLDSA87PublicKey: ... +def from_mldsa87_seed_bytes(data: Buffer) -> mldsa.MLDSA87PrivateKey: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi new file mode 100644 index 0000000..768a340 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi @@ -0,0 +1,18 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import mlkem +from cryptography.utils import Buffer + +class MLKEM768PrivateKey: ... +class MLKEM768PublicKey: ... +class MLKEM1024PrivateKey: ... +class MLKEM1024PublicKey: ... + +def generate_mlkem768_key() -> mlkem.MLKEM768PrivateKey: ... +def from_mlkem768_seed_bytes(data: Buffer) -> mlkem.MLKEM768PrivateKey: ... +def from_mlkem768_public_bytes(data: Buffer) -> mlkem.MLKEM768PublicKey: ... +def generate_mlkem1024_key() -> mlkem.MLKEM1024PrivateKey: ... +def from_mlkem1024_seed_bytes(data: Buffer) -> mlkem.MLKEM1024PrivateKey: ... +def from_mlkem1024_public_bytes(data: Buffer) -> mlkem.MLKEM1024PublicKey: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi new file mode 100644 index 0000000..45a2a39 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi @@ -0,0 +1,15 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.utils import Buffer + +class Poly1305: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_tag(key: Buffer, data: Buffer) -> bytes: ... + @staticmethod + def verify_tag(key: Buffer, data: Buffer, tag: bytes) -> None: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, tag: bytes) -> None: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi new file mode 100644 index 0000000..ef7752d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi @@ -0,0 +1,55 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import rsa + +class RSAPrivateKey: ... +class RSAPublicKey: ... + +class RSAPrivateNumbers: + def __init__( + self, + p: int, + q: int, + d: int, + dmp1: int, + dmq1: int, + iqmp: int, + public_numbers: RSAPublicNumbers, + ) -> None: ... + @property + def p(self) -> int: ... + @property + def q(self) -> int: ... + @property + def d(self) -> int: ... + @property + def dmp1(self) -> int: ... + @property + def dmq1(self) -> int: ... + @property + def iqmp(self) -> int: ... + @property + def public_numbers(self) -> RSAPublicNumbers: ... + def private_key( + self, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, + ) -> rsa.RSAPrivateKey: ... + +class RSAPublicNumbers: + def __init__(self, e: int, n: int) -> None: ... + @property + def n(self) -> int: ... + @property + def e(self) -> int: ... + def public_key(self, backend: typing.Any = None) -> rsa.RSAPublicKey: ... + +def generate_private_key( + public_exponent: int, + key_size: int, +) -> rsa.RSAPrivateKey: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi new file mode 100644 index 0000000..38d2add --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import x25519 +from cryptography.utils import Buffer + +class X25519PrivateKey: ... +class X25519PublicKey: ... + +def generate_key() -> x25519.X25519PrivateKey: ... +def from_private_bytes(data: Buffer) -> x25519.X25519PrivateKey: ... +def from_public_bytes(data: bytes) -> x25519.X25519PublicKey: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi new file mode 100644 index 0000000..3ac0980 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import x448 +from cryptography.utils import Buffer + +class X448PrivateKey: ... +class X448PublicKey: ... + +def generate_key() -> x448.X448PrivateKey: ... +def from_private_bytes(data: Buffer) -> x448.X448PrivateKey: ... +def from_public_bytes(data: bytes) -> x448.X448PublicKey: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi new file mode 100644 index 0000000..b25becb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi @@ -0,0 +1,52 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing +from collections.abc import Iterable + +from cryptography import x509 +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes +from cryptography.hazmat.primitives.serialization import ( + KeySerializationEncryption, +) +from cryptography.hazmat.primitives.serialization.pkcs12 import ( + PKCS12KeyAndCertificates, + PKCS12PrivateKeyTypes, +) +from cryptography.utils import Buffer + +class PKCS12Certificate: + def __init__( + self, cert: x509.Certificate, friendly_name: bytes | None + ) -> None: ... + @property + def friendly_name(self) -> bytes | None: ... + @property + def certificate(self) -> x509.Certificate: ... + +def load_key_and_certificates( + data: Buffer, + password: Buffer | None, + backend: typing.Any = None, +) -> tuple[ + PrivateKeyTypes | None, + x509.Certificate | None, + list[x509.Certificate], +]: ... +def load_pkcs12( + data: bytes, + password: bytes | None, + backend: typing.Any = None, +) -> PKCS12KeyAndCertificates: ... +def serialize_java_truststore( + certs: Iterable[PKCS12Certificate], + encryption_algorithm: KeySerializationEncryption, +) -> bytes: ... +def serialize_key_and_certificates( + name: bytes | None, + key: PKCS12PrivateKeyTypes | None, + cert: x509.Certificate | None, + cas: Iterable[x509.Certificate | PKCS12Certificate] | None, + encryption_algorithm: KeySerializationEncryption, +) -> bytes: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi new file mode 100644 index 0000000..358b135 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi @@ -0,0 +1,50 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from collections.abc import Iterable + +from cryptography import x509 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import rsa +from cryptography.hazmat.primitives.serialization import pkcs7 + +def serialize_certificates( + certs: list[x509.Certificate], + encoding: serialization.Encoding, +) -> bytes: ... +def encrypt_and_serialize( + builder: pkcs7.PKCS7EnvelopeBuilder, + content_encryption_algorithm: pkcs7.ContentEncryptionAlgorithm, + encoding: serialization.Encoding, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def sign_and_serialize( + builder: pkcs7.PKCS7SignatureBuilder, + encoding: serialization.Encoding, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_der( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_pem( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_smime( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def load_pem_pkcs7_certificates( + data: bytes, +) -> list[x509.Certificate]: ... +def load_der_pkcs7_certificates( + data: bytes, +) -> list[x509.Certificate]: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi new file mode 100644 index 0000000..c6c6d0b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi @@ -0,0 +1,23 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography import x509 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.serialization import pkcs7 +from cryptography.utils import Buffer + +class TestCertificate: + not_after_tag: int + not_before_tag: int + issuer_value_tags: list[int] + subject_value_tags: list[int] + +def test_parse_certificate(data: bytes) -> TestCertificate: ... +def pkcs7_verify( + encoding: serialization.Encoding, + sig: bytes, + msg: Buffer | None, + certs: list[x509.Certificate], + options: list[pkcs7.PKCS7Options], +) -> None: ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi new file mode 100644 index 0000000..34a726e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi @@ -0,0 +1,313 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import typing +from collections.abc import Iterator + +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric.ec import ECDSA +from cryptography.hazmat.primitives.asymmetric.padding import PSS, PKCS1v15 +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPublicKeyTypes, + CertificatePublicKeyTypes, + PrivateKeyTypes, +) +from cryptography.x509 import certificate_transparency + +def load_pem_x509_certificate( + data: bytes, backend: typing.Any = None +) -> x509.Certificate: ... +def load_der_x509_certificate( + data: bytes, backend: typing.Any = None +) -> x509.Certificate: ... +def load_pem_x509_certificates( + data: bytes, +) -> list[x509.Certificate]: ... +def load_pem_x509_crl( + data: bytes, backend: typing.Any = None +) -> x509.CertificateRevocationList: ... +def load_der_x509_crl( + data: bytes, backend: typing.Any = None +) -> x509.CertificateRevocationList: ... +def load_pem_x509_csr( + data: bytes, backend: typing.Any = None +) -> x509.CertificateSigningRequest: ... +def load_der_x509_csr( + data: bytes, backend: typing.Any = None +) -> x509.CertificateSigningRequest: ... +def encode_name_bytes(name: x509.Name) -> bytes: ... +def parse_name_bytes(data: bytes) -> x509.Name: ... +def encode_extension_value(extension: x509.ExtensionType) -> bytes: ... +def create_x509_certificate( + builder: x509.CertificateBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.Certificate: ... +def create_x509_csr( + builder: x509.CertificateSigningRequestBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.CertificateSigningRequest: ... +def create_revoked_certificate( + builder: x509.RevokedCertificateBuilder, +) -> x509.RevokedCertificate: ... +def create_x509_crl( + builder: x509.CertificateRevocationListBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.CertificateRevocationList: ... + +class Sct: + @property + def version(self) -> certificate_transparency.Version: ... + @property + def log_id(self) -> bytes: ... + @property + def timestamp(self) -> datetime.datetime: ... + @property + def entry_type(self) -> certificate_transparency.LogEntryType: ... + @property + def signature_hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def signature_algorithm( + self, + ) -> certificate_transparency.SignatureAlgorithm: ... + @property + def signature(self) -> bytes: ... + @property + def extension_bytes(self) -> bytes: ... + +class Certificate: + def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: ... + @property + def serial_number(self) -> int: ... + @property + def version(self) -> x509.Version: ... + def public_key(self) -> CertificatePublicKeyTypes: ... + @property + def public_key_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def not_valid_before(self) -> datetime.datetime: ... + @property + def not_valid_before_utc(self) -> datetime.datetime: ... + @property + def not_valid_after(self) -> datetime.datetime: ... + @property + def not_valid_after_utc(self) -> datetime.datetime: ... + @property + def issuer(self) -> x509.Name: ... + @property + def subject(self) -> x509.Name: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certificate_bytes(self) -> bytes: ... + @property + def tbs_precertificate_bytes(self) -> bytes: ... + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + def verify_directly_issued_by(self, issuer: Certificate) -> None: ... + +class RevokedCertificate: + @property + def serial_number(self) -> int: ... + @property + def revocation_date(self) -> datetime.datetime: ... + @property + def revocation_date_utc(self) -> datetime.datetime: ... + @property + def extensions(self) -> x509.Extensions: ... + +class CertificateRevocationList: + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: ... + def get_revoked_certificate_by_serial_number( + self, serial_number: int + ) -> x509.RevokedCertificate | None: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def issuer(self) -> x509.Name: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def last_update(self) -> datetime.datetime: ... + @property + def last_update_utc(self) -> datetime.datetime: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certlist_bytes(self) -> bytes: ... + def __eq__(self, other: object) -> bool: ... + def __len__(self) -> int: ... + @typing.overload + def __getitem__(self, idx: int) -> x509.RevokedCertificate: ... + @typing.overload + def __getitem__(self, idx: slice) -> list[x509.RevokedCertificate]: ... + def __iter__(self) -> Iterator[x509.RevokedCertificate]: ... + def is_signature_valid( + self, public_key: CertificateIssuerPublicKeyTypes + ) -> bool: ... + +class CertificateSigningRequest: + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def public_key(self) -> CertificatePublicKeyTypes: ... + @property + def subject(self) -> x509.Name: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def attributes(self) -> x509.Attributes: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certrequest_bytes(self) -> bytes: ... + @property + def is_signature_valid(self) -> bool: ... + +class PolicyBuilder: + def time(self, time: datetime.datetime) -> PolicyBuilder: ... + def store(self, store: Store) -> PolicyBuilder: ... + def max_chain_depth(self, max_chain_depth: int) -> PolicyBuilder: ... + def extension_policies( + self, *, ca_policy: ExtensionPolicy, ee_policy: ExtensionPolicy + ) -> PolicyBuilder: ... + def build_client_verifier(self) -> ClientVerifier: ... + def build_server_verifier( + self, subject: x509.verification.Subject + ) -> ServerVerifier: ... + +class Policy: + @property + def max_chain_depth(self) -> int: ... + @property + def subject(self) -> x509.verification.Subject | None: ... + @property + def validation_time(self) -> datetime.datetime: ... + @property + def extended_key_usage(self) -> x509.ObjectIdentifier: ... + @property + def minimum_rsa_modulus(self) -> int: ... + +class Criticality: + CRITICAL: Criticality + AGNOSTIC: Criticality + NON_CRITICAL: Criticality + +T = typing.TypeVar("T", contravariant=True, bound=x509.ExtensionType) + +MaybeExtensionValidatorCallback = typing.Callable[ + [ + Policy, + x509.Certificate, + T | None, + ], + None, +] + +PresentExtensionValidatorCallback = typing.Callable[ + [Policy, x509.Certificate, T], + None, +] + +class ExtensionPolicy: + @staticmethod + def permit_all() -> ExtensionPolicy: ... + @staticmethod + def webpki_defaults_ca() -> ExtensionPolicy: ... + @staticmethod + def webpki_defaults_ee() -> ExtensionPolicy: ... + def require_not_present( + self, extension_type: type[x509.ExtensionType] + ) -> ExtensionPolicy: ... + def may_be_present( + self, + extension_type: type[T], + criticality: Criticality, + validator: MaybeExtensionValidatorCallback[T] | None, + ) -> ExtensionPolicy: ... + def require_present( + self, + extension_type: type[T], + criticality: Criticality, + validator: PresentExtensionValidatorCallback[T] | None, + ) -> ExtensionPolicy: ... + +class VerifiedClient: + @property + def subjects(self) -> list[x509.GeneralName] | None: ... + @property + def chain(self) -> list[x509.Certificate]: ... + +class ClientVerifier: + @property + def policy(self) -> Policy: ... + @property + def store(self) -> Store: ... + def verify( + self, + leaf: x509.Certificate, + intermediates: list[x509.Certificate], + ) -> VerifiedClient: ... + +class ServerVerifier: + @property + def policy(self) -> Policy: ... + @property + def store(self) -> Store: ... + def verify( + self, + leaf: x509.Certificate, + intermediates: list[x509.Certificate], + ) -> list[x509.Certificate]: ... + +class Store: + def __init__(self, certs: list[x509.Certificate]) -> None: ... + +class VerificationError(Exception): ... diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f758239f88fb1f272c81579ed879424ed364c929 GIT binary patch literal 226 zcmYjLF>V4e5Hu16LgFD5+!jPgNGQq+Xn26Nhd1YiJA38zfi54&2l9e+>GK*|o{%mT zzA71MW;9cb1{aIDDfs-TPT$4vWB89r2`_~@E#l0ExmXcVGQP;J4Man9COGTdgnF1o&@=kefAp?LtnghBNH literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..266714ee35d3df061868226272fafc0bb0a444fe GIT binary patch literal 5287 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 list[str]: + return [ + "SSL_CTX_set_cert_cb", + "SSL_set_cert_cb", + ] + + +def cryptography_has_ssl_st() -> list[str]: + return [ + "SSL_ST_BEFORE", + "SSL_ST_OK", + "SSL_ST_INIT", + "SSL_ST_RENEGOTIATE", + ] + + +def cryptography_has_tls_st() -> list[str]: + return [ + "TLS_ST_BEFORE", + "TLS_ST_OK", + ] + + +def cryptography_has_ssl_sigalgs() -> list[str]: + return [ + "SSL_CTX_set1_sigalgs_list", + ] + + +def cryptography_has_psk() -> list[str]: + return [ + "SSL_CTX_use_psk_identity_hint", + "SSL_CTX_set_psk_server_callback", + "SSL_CTX_set_psk_client_callback", + ] + + +def cryptography_has_psk_tlsv13() -> list[str]: + return [ + "SSL_CTX_set_psk_find_session_callback", + "SSL_CTX_set_psk_use_session_callback", + "Cryptography_SSL_SESSION_new", + "SSL_CIPHER_find", + "SSL_SESSION_set1_master_key", + "SSL_SESSION_set_cipher", + "SSL_SESSION_set_protocol_version", + ] + + +def cryptography_has_custom_ext() -> list[str]: + return [ + "SSL_CTX_add_client_custom_ext", + "SSL_CTX_add_server_custom_ext", + "SSL_extension_supported", + ] + + +def cryptography_has_tlsv13_functions() -> list[str]: + return [ + "SSL_CTX_set_ciphersuites", + ] + + +def cryptography_has_tlsv13_hs_functions() -> list[str]: + return [ + "SSL_VERIFY_POST_HANDSHAKE", + "SSL_verify_client_post_handshake", + "SSL_CTX_set_post_handshake_auth", + "SSL_set_post_handshake_auth", + "SSL_SESSION_get_max_early_data", + "SSL_write_early_data", + "SSL_read_early_data", + "SSL_CTX_set_max_early_data", + ] + + +def cryptography_has_ssl_verify_client_post_handshake() -> list[str]: + return [ + "SSL_verify_client_post_handshake", + ] + + +def cryptography_has_engine() -> list[str]: + return [ + "ENGINE_by_id", + "ENGINE_init", + "ENGINE_finish", + "ENGINE_get_default_RAND", + "ENGINE_set_default_RAND", + "ENGINE_unregister_RAND", + "ENGINE_ctrl_cmd", + "ENGINE_free", + "ENGINE_get_name", + "ENGINE_ctrl_cmd_string", + "ENGINE_load_builtin_engines", + "ENGINE_load_private_key", + "ENGINE_load_public_key", + "SSL_CTX_set_client_cert_engine", + ] + + +def cryptography_has_verified_chain() -> list[str]: + return [ + "SSL_get0_verified_chain", + ] + + +def cryptography_has_srtp() -> list[str]: + return [ + "SSL_CTX_set_tlsext_use_srtp", + "SSL_set_tlsext_use_srtp", + "SSL_get_selected_srtp_profile", + ] + + +def cryptography_has_dtls_get_data_mtu() -> list[str]: + return [ + "DTLS_get_data_mtu", + ] + + +def cryptography_has_ssl_cookie() -> list[str]: + return [ + "SSL_OP_COOKIE_EXCHANGE", + "DTLS1_COOKIE_LENGTH", + "DTLSv1_listen", + "SSL_CTX_set_cookie_generate_cb", + "SSL_CTX_set_cookie_verify_cb", + ] + + +def cryptography_has_prime_checks() -> list[str]: + return [ + "BN_prime_checks_for_size", + ] + + +def cryptography_has_unexpected_eof_while_reading() -> list[str]: + return ["SSL_R_UNEXPECTED_EOF_WHILE_READING"] + + +def cryptography_has_ssl_op_ignore_unexpected_eof() -> list[str]: + return [ + "SSL_OP_IGNORE_UNEXPECTED_EOF", + ] + + +def cryptography_has_get_extms_support() -> list[str]: + return ["SSL_get_extms_support"] + + +def cryptography_has_ssl_get0_group_name() -> list[str]: + return ["SSL_get0_group_name"] + + +# This is a mapping of +# {condition: function-returning-names-dependent-on-that-condition} so we can +# loop over them and delete unsupported names at runtime. It will be removed +# when cffi supports #if in cdef. We use functions instead of just a dict of +# lists so we can use coverage to measure which are used. +CONDITIONAL_NAMES = { + "Cryptography_HAS_SET_CERT_CB": cryptography_has_set_cert_cb, + "Cryptography_HAS_SSL_ST": cryptography_has_ssl_st, + "Cryptography_HAS_TLS_ST": cryptography_has_tls_st, + "Cryptography_HAS_SIGALGS": cryptography_has_ssl_sigalgs, + "Cryptography_HAS_PSK": cryptography_has_psk, + "Cryptography_HAS_PSK_TLSv1_3": cryptography_has_psk_tlsv13, + "Cryptography_HAS_CUSTOM_EXT": cryptography_has_custom_ext, + "Cryptography_HAS_TLSv1_3_FUNCTIONS": cryptography_has_tlsv13_functions, + "Cryptography_HAS_TLSv1_3_HS_FUNCTIONS": ( + cryptography_has_tlsv13_hs_functions + ), + "Cryptography_HAS_SSL_VERIFY_CLIENT_POST_HANDSHAKE": ( + cryptography_has_ssl_verify_client_post_handshake + ), + "Cryptography_HAS_ENGINE": cryptography_has_engine, + "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain, + "Cryptography_HAS_SRTP": cryptography_has_srtp, + "Cryptography_HAS_DTLS_GET_DATA_MTU": cryptography_has_dtls_get_data_mtu, + "Cryptography_HAS_SSL_COOKIE": cryptography_has_ssl_cookie, + "Cryptography_HAS_PRIME_CHECKS": cryptography_has_prime_checks, + "Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING": ( + cryptography_has_unexpected_eof_while_reading + ), + "Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF": ( + cryptography_has_ssl_op_ignore_unexpected_eof + ), + "Cryptography_HAS_GET_EXTMS_SUPPORT": cryptography_has_get_extms_support, + "Cryptography_HAS_SSL_GET0_GROUP_NAME": ( + cryptography_has_ssl_get0_group_name + ), +} diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/binding.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/binding.py new file mode 100644 index 0000000..6e13df1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/binding.py @@ -0,0 +1,107 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import threading +import types +import typing +from collections.abc import Callable, Mapping + +import cryptography +from cryptography.exceptions import InternalError +from cryptography.hazmat.bindings._rust import _openssl, openssl +from cryptography.hazmat.bindings.openssl._conditional import CONDITIONAL_NAMES + + +def _openssl_assert(ok: bool) -> None: + if not ok: + errors = openssl.capture_error_stack() + + raise InternalError( + "Unknown OpenSSL error. This error is commonly encountered when " + "another library is not cleaning up the OpenSSL error stack. If " + "you are using cryptography with another library that uses " + "OpenSSL try disabling it before reporting a bug. Otherwise " + "please file an issue at https://github.com/pyca/cryptography/" + "issues with information on how to reproduce " + f"this. ({errors!r})", + errors, + ) + + +def build_conditional_library( + lib: typing.Any, + conditional_names: Mapping[str, Callable[[], list[str]]], +) -> typing.Any: + conditional_lib = types.ModuleType("lib") + conditional_lib._original_lib = lib # type: ignore[attr-defined] + excluded_names = set() + for condition, names_cb in conditional_names.items(): + if not getattr(lib, condition): + excluded_names.update(names_cb()) + + for attr in dir(lib): + if attr not in excluded_names: + setattr(conditional_lib, attr, getattr(lib, attr)) + + return conditional_lib + + +class Binding: + """ + OpenSSL API wrapper. + """ + + lib: typing.ClassVar[typing.Any] = None + ffi: typing.Any = _openssl.ffi + _lib_loaded = False + _init_lock = threading.Lock() + + def __init__(self) -> None: + self._ensure_ffi_initialized() + + @classmethod + def _ensure_ffi_initialized(cls) -> None: + with cls._init_lock: + if not cls._lib_loaded: + cls.lib = build_conditional_library( + _openssl.lib, CONDITIONAL_NAMES + ) + cls._lib_loaded = True + + @classmethod + def init_static_locks(cls) -> None: + cls._ensure_ffi_initialized() + + +def _verify_package_version(version: str) -> None: + # Occasionally we run into situations where the version of the Python + # package does not match the version of the shared object that is loaded. + # This may occur in environments where multiple versions of cryptography + # are installed and available in the python path. To avoid errors cropping + # up later this code checks that the currently imported package and the + # shared object that were loaded have the same version and raise an + # ImportError if they do not + so_package_version = _openssl.ffi.string( + _openssl.lib.CRYPTOGRAPHY_PACKAGE_VERSION + ) + if version.encode("ascii") != so_package_version: + raise ImportError( + "The version of cryptography does not match the loaded " + "shared object. This can happen if you have multiple copies of " + "cryptography installed in your Python path. Please try creating " + "a new virtual environment to resolve this issue. " + f"Loaded python version: {version}, " + f"shared object version: {so_package_version}" + ) + + _openssl_assert( + _openssl.lib.OpenSSL_version_num() == openssl.openssl_version(), + ) + + +_verify_package_version(cryptography.__version__) + +Binding.init_static_locks() diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/__init__.py new file mode 100644 index 0000000..41d7318 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/__init__.py @@ -0,0 +1,5 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d360bf44ac2dcbcb2b6f57782dfe1079b9ee0a7d GIT binary patch literal 264 zcmYjLu}TCn6iikHx#Pg!*us5bL1vYjz;qB(#C3m|?NM7z(8-Kztu=9^(TPtfj zE3;M(%$pf_41=rHLKM8cHoK3apL6(+s)TzXWV$Fu3oUyw$R{a7lNsg;JZ$Ig(Owu6P&mw8-E2c>&`G0vq-z$N&HU literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py new file mode 100644 index 0000000..41d7318 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py @@ -0,0 +1,5 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d894697db090a5050804fa32efae3ca56589b44c GIT binary patch literal 272 zcmYjLF-inM5S&>R>cBk%eYQeg{3b*H<7@cEMjZH;_2fgI-lx^RI>K9|QPwfBz literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e63a554e845a5aac0ec63e8be5e215ea8c6c4c4e GIT binary patch literal 4860 zcmcgwPjlPG6~_V~2~s3QDY9L+(*$Xo#%yD<@qfEcMyjNAe9?3&HwSn+D8yY!kU$V! zK+=d~&$J`=;F)B4XpT8#eABl`F8L6+_M}TcKzr%$EeMd3qKw@R4GkXm?ZfVS`+o23 z+m+X7)HFOVzv%4ztD$NCBxdq4!7OSTi@!yKYn%mIpE-ebX^jpBa?; zWvAS)IF-KTSWNq^#!I~XT;pX?IWn9o_zJhcTcQlU2ENK`;A=;^GXrjh*TL15v<|+( zo8X&@Z-AfWE$}VHH^I;GdGPa!p9TLGUjVubjAzA zLEvtlr^F3ze#w-ZOb2cv2Z1NIn2=k121eIYbLscX zw;ThcZJk`hd?)vaEE4%0k-rf6ipbYQG^S~3Y2z>v@i9vc*x1w2pFh+#@GcX&Ei@AC zsrHl|=}$EmX0B_;Z0%T=Wk}>a$g!T9u?RLZMw3_2_wN_o?Ll93{b)Ci_o8SZlkSEe zZy$I&LL}Y2$anqlz?0nF^aJ5;c(LH!&b|ouyMe!P=T?h)SZE_zZ#e$wqJT;i^mBNKO`!_;!2%THYQ5)6ygO4+bM zKI`O?)bPUuz9>tP?8&eP2Ne&sX^?V96Ag054)Eb@ft;bQoml9F7mPrJnG=}2j4tJg zjQjv>YUR;DTxN(qG9;I*wX0-r==Fu`rZv~?5BMG&Y0! zNm|Wkh~-tKE0Tjq$mCG|mCx?_qG zV%AVGTjnM&Ax6u*^4xSP!r~UMg0Jxz6|+@dN6a?T>SO6gfmm5xcg&lhl8k5@>PObm zmgH(l;U~$+a}ioXr-Eb$4M3s*+12F-3ER=Ro)|kOrO)REgX}500(wPz#=_3%+Y-KY z)VJlc-*W6`f77pO^nFq)V!uqW->$65x1n+Pk99xX3dD8z-7eN*U%Pjm^2$bU+_wGL z<|2}!=Ou#MUdZiHF4zZt5ZD{SmZCq{hs+Oc&)(ca@KIkNkPjXE53#Us+!{}aui`{_ z+`c9{Tb&O`iT%qlZFf#6PO)9p;sp5;h9kOzl+X1?k(9t^l1fE8g?LP;XsnJn)(yP>DOZ}O zxE34E7eE!6FMmjL{s`oCl3xCpM!iGiT_P%}#+gO-+{K&c_=Mg(P1lZV@~1TPXGGp3 z@^g^1wm}6()eQMQ_0oQ>7Af1*x-gr60V!D(Q}R$Yt9-tMd?rZ`@2Q7&wZ(jcKb_AA zaw9d}JSo@O=2=TGG~xzk{RppGxWy##=TuYXE|TgMGz!(4W1#$DD-mU`Q|2BSC~*}k ze%LQMxy{rQZo~A0>rtUrpHMrFt(mikQEbT%iBM3bCFzA*;+13TCdMq` zortYgRx3#IMgT4?FReemos|bFw|a)l{ls;m187+1=)8ZaUX&wG;oYWEz1>>yfza0 z2#Lv?0G+B%-vp}pP2kbW>e9p+YI<<=X^A-;q;>jmM1@Mgp;W#C91k#Pn+BePgCrNj zu?T6A7`T@GkH=hV8RzsM@IA-sjan*EaMC4%vP14HwWbHv5Yy*S&E@t?AFgMGTGXgQ z?JGd`YYg0@!DGlqHxrUv4A}*H+3RHxZqYa1NCLem+{1=-D4jkapA{PQOyetHLI0h2 zPUFT{jCM1UwCCxHnq6C5SJHMMJ0MPd@|vEV>QCL=JK4>>6G^}CC;q;OJ8pJ)FRt#A zYLuk2Vs-(b+p0RsszarugNLNrCTUxhl+2RCLy}$JwK1pG!|X2oG0hp%4Y;mbdYvs) PTJ@IQG+T|)-|T+@S66ne literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/modes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/modes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a7b222df6f25d7aafa75bc860b1ae29ac4b4338 GIT binary patch literal 1838 zcmcIl&ubhv6qe@4?yS9bwxw~}lD3DEg9F*2G?WBN2o9w55cd#hVJHZBr1i)SaC7eqt(8@i|kmj$egYAMKv% zquuv*f_9?H{*(*YvYV8 z&8dIqSDm{Cy3a*k=zJ>7T*z99sa}Xu*T=5N>DbM-cIiH@YL;=uvH*LixC;K{Dpb*V zltns5J4TzRN3VF+)BP+_2~r(&;V(}Q-VHso@xg2|(Xiy*P4f{kG55^!U;~`yg#Uyj z-NT7ve{sdn`0IePGk(SdGI`FH!66KAcNs#6LpHi_?r7n(EzMMSd*Vv4Wza=dmy^}k z3~u1p@6OYrsdQ@EskO7VZNQ~R#uhK-iPkQiwFb|6DM5*eDYZC~R;zS8*Y!Lt&Cw6{ z({|yCrv85XFtx_%d#%i;@>tt6hehj}V~}mJNDFydNtY^}gKmvWbJG?YY+7N^?6_TY ziSU$#_yjpw5`pm{KOLfypUel%25?Qi&ffISkRpVHXGQ z?&>ijlO()}-TDv&r(Y1(mAV}+2Sl)zl@_Ag5&~(@Pz=!xg?KTO<;6}!BajDO(n8Z} za0?FuF|K8Mb4*JmofeY@ge;F6z(`UBPo5q? zA5VvbApS>M0#Su+dhF1{JM+OKlI0uh8^J}$b#UQR-1|3ih0o}43LH?0T!x{jev5q_ zRRXy>s&MP$?>}(;3O8=kA(zyr^=nZ-LY5D%UH*II(z>>G2=iL>|Bi4js_ILR@?Qh+ zHJ)&nPPr5ST0h+1q8gmc@Fu_-1Om#2o7c_iTD-HlG+y06;}%SX|A#r=I#k8l0_oxF j)7KVIh=E`>5^J3pUGn3q^dC_{dve2I$Va`=?r8TPlO=oM literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py new file mode 100644 index 0000000..703c8e4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py @@ -0,0 +1,142 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import warnings + +from cryptography import utils +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, + _verify_key_size, +) + + +class ARC4(CipherAlgorithm): + name = "RC4" + key_sizes = frozenset([40, 56, 64, 80, 128, 160, 192, 256]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class TripleDES(BlockCipherAlgorithm): + name = "3DES" + block_size = 64 + key_sizes = frozenset([64, 128, 192]) + + def __init__(self, key: bytes): + if len(key) == 8: + warnings.warn( + "Single-key TripleDES (8-byte keys) is deprecated and " + "support will be removed in a future release. Use 24-byte " + "keys instead (e.g., key + key + key).", + utils.DeprecatedIn47, + stacklevel=2, + ) + key = key + key + key + elif len(key) == 16: + warnings.warn( + "Two-key TripleDES (16-byte keys) is deprecated and " + "support will be removed in a future release. Use 24-byte " + "keys instead (e.g., key + key[:8]).", + utils.DeprecatedIn47, + stacklevel=2, + ) + key = key + key[:8] + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +# Not actually supported, marker for tests +class _DES: + key_size = 64 + + +class Blowfish(BlockCipherAlgorithm): + name = "Blowfish" + block_size = 64 + key_sizes = frozenset(range(32, 449, 8)) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class CAST5(BlockCipherAlgorithm): + name = "CAST5" + block_size = 64 + key_sizes = frozenset(range(40, 129, 8)) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class SEED(BlockCipherAlgorithm): + name = "SEED" + block_size = 128 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class IDEA(BlockCipherAlgorithm): + name = "IDEA" + block_size = 64 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class Camellia(BlockCipherAlgorithm): + name = "camellia" + block_size = 128 + key_sizes = frozenset([128, 192, 256]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +# This class only allows RC2 with a 128-bit key. No support for +# effective key bits or other key sizes is provided. +class RC2(BlockCipherAlgorithm): + name = "RC2" + block_size = 64 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/modes.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/modes.py new file mode 100644 index 0000000..1786bb0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/decrepit/ciphers/modes.py @@ -0,0 +1,53 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.hazmat.primitives._modes import ( + ModeWithInitializationVector, + _check_iv_and_key_length, +) + + +class OFB(ModeWithInitializationVector): + name = "OFB" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CFB(ModeWithInitializationVector): + name = "CFB" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CFB8(ModeWithInitializationVector): + name = "CFB8" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..757352ffdfead2ba8e3f75d7acac01b6ae51e616 GIT binary patch literal 220 zcmYjLF$%&!5In&`1Rr8ywon8?#2483fMa7;Z#Bs+cbA0N`3GNMXYXrleS)2pmr4g_ zmYIQJaWopLh}$(eKH`0K<{!Oi){(v+B~x29?rrYMb@5L=7cjOUU^#hTiC7mPWp5fh z5(TJ)HJ1&#Oz$}-oua1&cCM9R4-Un&VDMaE e0C8M!;5ybi&T`N?k@h)Q7B;JLT6M3zBh?oyt3SE` literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1b7c6e61ac792a3c1e2c97692f357660512e0963 GIT binary patch literal 732 zcmZWn&x;c=6izbJ?rhy%5XAFPJXly~5JeC~tVKMCWudpZgmjX2(w!gKB-3Sj-MxDA z=*gS^Qm&r-7d-hgyVimalK1kG_r3SN7j}9&LLlG2CYwhDp`ZS6C<8dWLkOF5FgW74 zL>103_BJU=Mm{1Q@bDJ#P>@Z)2Va6LvX7nr z@I8h`lq)?1@P7M!n-)zaQmHPDX_acUO_$OX*K8w%O7{&yiSd@;+bOkC0h%V=DJh1S!E-l!uVm4J;R?^BXTvN6uCQ+RW zp&xMuMHv_^Lc#9wf5avJ$$WC;B1*kUsT)yRHN1tos5_zbs%7QnQg=qXEEP!Aingi{LgcawNQ02&jGe^IWM;6P ztP=G^d*Q&18;b+1~!?XO?M(|=rq z{x*Zv20rvTLRiJnVTj=r4RMUI>07B4Tky0~d+5XtMqeQ2F!us6ms_VU^M0{o4}3M| zgU{#QxgFP-%j)oJys+6CYhF09&#b4Ywf@SS+QQ`;&9YomE%HpYVeF2yNL6BHSKAWT zGw^a0V}@dj+uVV3F|%G^W;5r)ImhQX_U3-K@_Vc{_t)lrKmh9j)7;4yVGnD1(g^15Fo3s3)(bK^G!NYu zDj4RB2lsi{3xnOmlc&3T!R|2~@-!86w-qkmZNEftuA_L`l|F1=m@Qrue4`$)fb%2 zhHEe^>#z~2Ho6VN1@607aW7YuHbA}+;_sHnKkM@fYmj#VDX*}1xQYG<9P4tjM;xO4XtgaigY0NS)FG-e031(7lgYmJ29lY&c z+G-v|UWXlNl2Y{+p@*=;Lg?RsytvJ*1H>Kfo_a>?AYmvu3u&_&$j>i#j?z3CT;bt$ zv#KfK(Wu+yvb2FaxdFRN56q1s{MEG)ra{M?_SUfOKi&%+iv;NXi?rW#xP%Q60%ZP36bxZsU2h9HRhf%*9FjM<0JShGugntWr8P-SKa~B zvdj8Xee$kx*T5uI6@ZRurf-<7O5+i9H2MQGe1`wDFw)i;lxSw{pfhx8kFk8B9cEv8 ze}hj7%((D$e|OLEPw*Z@)@xUXy)vk#+h1nm|CNT|{?uz#<)Or3%ab;&inmD8=gEL{ zCYq~M40vg$Jgf4zY(Qxl@e?U?S!H$0lJCJgvkP6)Qq_$uGUifrCuAYHhpf>JZ`R**a}`*J3Ko68dOk8Vn(pp;<})e{=rPJ UPs~?PnGbl=@~x(~b9-y;KjhfYSpWb4 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/_modes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/_modes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..713679c715ec2edc0f6638fae662650b904e5588 GIT binary patch literal 4024 zcmb_f%X8aA7}rYjGftW&P9KoAOUghEMW*2~zyQ<4WN2r=?X+o`(M7Dan^>_dxvO=G zJzjD5d*Rl9Nmow&7jgi;Z|&Ghn$pftWwKuV_WAw3r`YUl*?{NI-<=(+Vi@e5OyZLUxE$H`LSnQVEQn&1u ziSez$^StoL;00ms%<$rGmRkX=#LIw{MP-cI?ku1)yaH$?gU$gu%jW={%b=$KJ;mn% zozI~2yueTM1-|&$;#I!%$aYWjGCwm$&hm4BEb#OE4L$44$2MQ)7XVv?S%>Q`@=JhJ zxp~*9(Pzj?jifUyiekl75JyQ9-gA8wgh|aztM{U$-|NLv3BDF?$1+guZd&y22$sNH zoUtCpey0)i+ColeoH_>hcu@Aq!OL}2!57dGhD*5Nn!*zHPL309J|^7a_9J_r>=QSy z(HzqJ*yKfCLfkFzGKesf+TX`qq*kKjQvsX3En&8G$&X(uAwl3-?rZVrB_ zx8ts;2fa=*rmo%!lJ-NkBZR8=dw~~351HiNRuBrW#S+2m&aQ}d>tWFP^y7MOpxSZt zk@I;y36%Jt$NUc47D?TggPw}FCF`{Z^)?%JnX30>&<#|u3&S4XH*tD{)CMWU0^BDt zp)sss2^n$_l?4D&yBS9UR99k$8kIAE`+7Pqfd~61k@jFBeWNY>P6AvpMOhd^N6<+4 zB1xDW&>-4nGGLKPXuLHd^a|eaD$E_5QEjr7A9q_pq|J{qDQH)y49l92~PD@l}V zO13-&uj!dx76zOt;cdmzo9urc#zqvF!#6brC(movieS+m^5c1F*+VA#pc*f&c;16P z3&$hHo{W1!szGY8mY>eC7FZ4Q72LKRb2*PUs~)|cwhFwXEJAY{{u7K$MPd@0EaYsW zad5a2Y{LAICCQ6D(XzzB``&(N= zO1#i3`OEEzzBWPCz-3>IbSpsH*<@RlbaY2= zwBriQJT&Un{}RzTae1>=kV|;j8EnpCa}FCc6!``=7qOYR@~EfPw+sVs!GD6OW28Qb z*lW?&?4c-|4+ZPU3$X92Yh@b6p3{oL?f#Dza(ajNQSNalSv+!8M~}apR*DjxMC&CO zcn`PF(2CgWr4_=RFJ2$55pMUtXw^G>jB+2RRbSQ7<1eQb-Qh%9(NaIc?K89@_F8B? ze`o@0eF*uH3Va<~Hre*Dq8*&>Q4mACx(WYBU{P$FVipYp!KsRMlJTMNP_mDqY?52L znBiU}uvoC;S4hp6`3o_FwxvE?%KphW7Ja#@+&+9$t4@dRPtZa%}5?OJOacZXlyioyZCw))vsdhPR7 z$hr}ytDk&ITY;h-F-UZtg|r<%1Y#$F8dmDMr)IfDnB^tGQ0T;#mhWS{-;gqvauIHm zky+>9CC|rtz+)ouaAhc>ZPng@nF*#ogH$2sng7UlaV=7Eq}s3mKu`;dj-iY_V+U%# zpUpj!lPU^tb}ad!vN#}rKzR=1HvHO8auWh_&1ZPl@bpb6KA<9?H}6xFfL=Ms*R+r+ zaca5Lg3IYppO#x#ypF_t2bOACvwCs!!7j>jT-^DwxT8^!^gCFsRc%;hGDqYGxSNjT zCFs>`shw5V2)cyP`bM!2pCc6DZa{&l$iA6?miGvVN}ia?+OhY|Ux~`?8T()ZK#aMQ z2V!oh0=GselA`D5GSuXo2P;&H2mL?_&^^_1Q(sr@(~3-9fpdq|L;7?W8Z#(sFeEWn zL$y>6k^p>=VOT}ANvx_Rmh|buz2@C}w{PFNv$^q&*SLB6#>O3q2}EAS1~~?Lk8v^0 z4BC_y$K2}U$A+{C3ll5=kzSJ&iT$^2FA#YRkRz6aE`wAy&~3(+L?$#E&(pXE6ca<` z_rS)mr(MZxN(VN9dZ7+K$7GZrBBl*lYxyL1I5)Kq@Vtyi{0M8G6QoS!D&VyxtUkB; z@C5_ar$kY7ZQ@q4wZBC1+_PE85kL8&r@!8&s&J2dF*u_y250)k;CLhTPwM57nEDH$ zu(sa#9x75@p6WtJVp^7%MC4^`rsAUt^z}17qBW|OS^N@0GgQ-Gqje-$WL3fL|3+kVP0v(1GqSq2XDi+UU-C+d zx4}D}qxcf|vR78T6IHr%-W=0@r|~kc{GjoQFpsNehBpt*9IrxC75ec4pMPz5i_k6b zMd%jABE~F1UgFD;mzBH>d4;b+UOm&j6-aCR4x~G(ca`f0T5bJD+Fy<3b3q&@S&)TE zoHij_{Va@9FwS1wPIwp}fnVGYWY86vkl!Y<8)Q(;@5}Hs$izfZ-S4-eusxCIzYEgN zc65};Fza;NWN!9h5VpvrYhZ-tF|NUl%rm&|ncTn<&D`AI**h3MC3?Ey_ERjzJ@{^W z!wq8YKKt^e7`WfduosDMFs!DAZBB=6e)YoL-+B4Xx0`DG_TB+$c6WB0H7j>~KgN!H zKd<hq0rZ?}avqyfaeQ*`^OkYNyoLlxP2 zZy?K9(mGmdf;h}%N^^T$su(tn3*w>Y_u+zr*?9pGS_ZJwJU1krAvs5c-ktiO;1)=? z2=V|e)j=GlWPqs*Yz6HoNYiWUF)(n8aB?5abUj>u!??lCA50*|!s_h&?v6;a?b9HP zf>tD^OUtd+AQKAGJy>{^NZuy%%vP)Ke4kpt^EMsT7T+j3oJ7b)k=<-npWS+6V zvJo3;zR5M%G@6oN{Pyww#k_8}pJr}LxEpRF-EJa5L(guNf*qxkZtQz|6!S zQ2_=F!T`6p%}d;QW2xk60}*o^3Gn^>?>W&As-X@1SGem$oev#fSSNe z6^nqaK>ZUi3bxuv2YA`Y0M$n(s6jwJXH8_=l7Hj$HA~XblN6~dmS^CjkVBCA0xfkw zG{@F$X0zdEAN1k`rnv#fAko-`Hzl3M$+l=t+7fwCZR_`7M%pooaG%MQ42YofNoO`Q z&h+$2W{yuRH%>J993xCM!opiNIpny6=5Xt^Ng1R$T%ShL4I(K5K5$c!4Ij?v$45Mf zT`X1{3Hc)(hT+qj#<;x%X&V`NJXX@ls+9{z-UBZwC(F-4^78kC-bE^SM9R;IOu}5# zi#U*juQ)!hOl|)f-6>71u?kWHH3v;c!l!1w8-DTOcuc306iP&-JVo&PgYq@TQ&2K? ztRpOINSi7w&>?9;^Rvt$Bijm_bm={qx#8@pS%l7N%j#dukVP&ijbK{?zd9UZCj3t#_&6q8ymRT3^w4825e z;cBA_=j#74O}M*oGtqa$&p+(y$!tYACV-EhOJM)M{0eZ7P$tKI{mu1!^uIg!(G4%Z z&(m@P`zYK@E|pi@tZ=IVjj5x7>vzNFA9nQhX;m36t{{3*Z*PP) zRUnmbehKFNcY_Qm_1IEyCU6(o#duBk6SKH0$UB&%X2=Hqe%ZL~`do!BiZ{)C{J;;)a(K1x0cKT5X2 z%W!fdyIzTL6u+luE1m87@}${NOF zewAp{{4NyJ(A4aiDtd$cD^ZhFN{47^1w<>OkQT-C$$KC%DWgqE6@O;RX%NUi1GMqw zj^x@JeFPo$af!f3kffdGM$l?|)!B~>NuKdOnN`(`?~ZyajOjx$t@{%9Ur8Srk}e=c zAn5#fPj7l}`n`gg(vC<~waLxBxZhRjFfVQI?EV4Y2I`bb!mp%TqC!g%>nYkNo6McB gi!Zw0(jwG{LsfV5D#H(%8b5o*S~HiNC3B(qUvomENB{r; literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/cmac.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/cmac.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e06d808a7b3bd5f73094430f5a5a70723cd7d8b GIT binary patch literal 386 zcmYjLy-ve07_`&0sY?42Y(>HzKuAakfjYwgTNcZS-NdQ?WIL^b#9QzLY`judCSHLF z8-&yw?z_|X>As_@)dEDkzoG640`Qs4F|ugx0D%513I-UIK*18iq%)bRNts7IX<#|! zc{l5dvS9f$SWmxF${LO*RBIDx5JvlG3uC$VUXJn>1qP5H8#RqUj9KZDaid&;N z7Ix=-Z>@0wSHiak+HoFmZv_$hKpi7nAvvk2=M1Ag*Ly5Qb#;mD5L%-z&^7iV@N-M+ q9c{SB$8GUnTWp$q%zVr zE68dBQ z!jL;8^oUjr4ijq1xDw)QO3G>>AnOS^Zy(&xac^6vK&;-3PECV;n+FbA`~y}M{{Ybp Bko5on literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/hashes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/hashes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..62ad06bc5ec56307896d1a1d59a1a056ec8b2562 GIT binary patch literal 7036 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/hpke.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/hpke.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80b0f1ee568cf7245f74008e6ae8d432ec876272 GIT binary patch literal 612 zcmZ9J&u`N(6vyo}ZPGR!7X+NS^+3$F?w5oRlQu46Xwojo7t5)=#;xO6w$mv{{1^NM zyYVmO%87r06LvtOU`wCxd;aRl@7Z)Vn*hHazUFH>0N{H_c30$+cK|@ke82#M5>yaF z7~)7q)d0s3@OV93kMOA11Sh?wIPGzicH;1Q-or-6D#iQ|9FuZMq;~(cwx(Ok7jcW`i#DwR;FPEm( zu3j0c%Qi3R=Zd<#5Q+)4vNJ2xsH_R|#6p#d@0po!1IcDn7 zC4^8Z3Hb)hUN{W+`304A#gWh(Ya6X=<4_@Nc~94zJJe`Fgu17OkvkzdDX8TP$R$ok=4X}a9d6}M=2AoP16q>ZSA6I*YG#&g|v>6@x%jpT1b|Msaz L7G+Ti|Jl(m?Lep6 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3e0fa4fbf254df0c7c05c9a1ffbd2eba7fef64fe GIT binary patch literal 4766 zcmb_gTW=gm6|U;r^z@7`NoIXXvYTPaE*X@}Y%YW>gy4`wh!t3311s%77}~D3-S$k+ zxVpx{R*$r-gD?`2vJ&C}cyJJk2oJpQPk2K8%9Ee-f>uhxcdExTmGT~qxx&+eA4P5DtFRr#^SF0zgq@W@qGVpbb(=1?ZhQ+DcVSZnaU)nyZC%puj3cNs}NgGB!+_528i6*->qonrM>R(vOyd)aiDFuY%MJBb9nfvfXOvDNbG0 z-Y+eMk>3org49}Vhf&3q^hGjHhM+BhYL@aS<*O+VQ@-$+$uFYn(~oK^?N(3=J8N;= z?R45w)fU2d<*vUP1gh5UgpDw|>r2sC3Y$S=!H)w`t8N6*My(kxT)tH6Y^s%Zbg}ww zEe=(1uH!GR`O86E%f_*c^Qnuu<)7re1?ejm5SMCh$e^ z3=DHh+~q}Hw2m65pBskt%rQ&Gq#@tJvn@|;5~!-zqs@w?2bvbpVFR;4U8T7Nd_@om zS%CKepwTSTiFxO7go0uOGr>2wEGaGku#dT7J5*<`F?j}c0N9|;o?^mTGvyrWb5t+f zp7~3*#6@0s_grNNr{CJ%HgBRAz|~AxVgjZn;8K`>Z0>0k&?xuHFrU_buo9H_1Eq{{ zlv~|cl^24tU*5o)iZWtO*Y{CWL949_wIXNL){TdaRJj@W=-~Y2vPOvDUI@d1Klh?{uSo4!P~!-$~ok>|!v#N{9%9!qKd4%=u9KajBjV9^_P1Ije_*T3Tg#sV`Lh#y7c07xNt=T^7b{kPEbZzQ zb8a)uLq#zL9?FaH{r>tqlvAGOp&ap$AnBTzmuE0Cc^0N=!q8!{t+OLkI$)KBK-~?3 zsC>TcN1}Y;Cl@dDIfBIN(T5*C+M_~-6AcW4$P>*O8Xo^UeaI?xtQWXOB^|MY^_CY< z7gD`ui*utv+_)R6l}5)Gg2dtw>d>TEDQI}gi`0pRBF)86l(ljW;W@%BeT^M(OKSSz zMrz`PSsM*cEx!75hg38BnP2&RygDw!WV}P1<8kY`Yn4b0jS?T{liV`ELf?STK>W0N z1cG={YLj@9NB4`p9GMZBbz&DSw z`D3GJ_grD`784g9jv8AXPi#@h`WFZQY68y@Ec7j6eA{@y<#*}1 z$jvbFv5*g}G1Q*UTCH*Nh>*%hr;~#4)=b>Lk6xUlP(bkLekPJa3AyP59>1^nHf4t7 zNqzq`K`Al2ix|v2->Z4SMP#HQQaKMLxBVGy9otP!QI~`pGro1aVq7Tg`ApLB2_SX$3j) zIaAPrS3CzZ%nK+gJwzqqlRJn^4~gp}_i|H+*U9IWQGDh>Y>KAy)H0`@TDC(GZOEJG zB*G}J;GN|Iw|>8Xxf2a!96$UQ7I#qOuyqq(1&Cf2ScEW{A) zqgX`jpDrgGQMu>WfWhyba=wqXQvlZ+d~r0p&rR| zG(B2AP@v<#N;zND486DqHRCVnGlTq_2iN;hp`h5no{ADpIY&mTg-$cC(=8m7jY%^FLZU(E1`qzb6?}qE=U(LDd zH<#NI0^f?YR@cwIVmpjEi1l{+KR3b8AIgtZLxrs%Ti&-YF1-WDmYh^rhq7LfG=J-7 wi$RBeHpx(;r*CL9y|`DiS-(cXuC=~s&<;cYnWYo#>C~~(aoAHh&*Pl=HwJ_@NdN!< literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6f069134eb5dba81335dbc2c3119d3a04a7f0635 GIT binary patch literal 2632 zcmcIm&2Jk;6yMohuQ!h4q+g*3sVpspT58v&tx78aN*e*HDy)hKg!Zx;d&cp^`^C&S zB~}lJ^vaE64}iGjU)n3D{s)K?@6E;^F)0!ithD1dZ{E&(@AuyP#&m71VZrn3PvPF9 zx@G;2lf|b7lP$|4>NgOW#YkeMBq9W5JFz1hex1Zg-N-dMH>ssw_L3iiTH}`Md zenJ@&+3t3pY5tuqFHZGeWyQ&rb59;`?|isqe!(c0ZTskb@o{0Yg$UjSfm;z_R%CN$ z&t-(!%mD;kR(tLqlBj01HuGK(R%gD^d29u8YLu;$&L>TiO!#m-7;stEdIy@Twq3f6 zYFc`d>#@xG_Cg#e6L_~V6pV=x*w~(Y*$9pw@Sp-cj%&q~=SWs=KKt2fQ zJ{1Y=B|Jc90acYkc_cgf~-`1AYDFi&|$6eFd^MUhM0=?OJ_O7}R| zopB*zkv*l7#RHM>xJMOdop7IL`<+De?%wGX2YQ%ix5N7#B{aWL(Ef<-a@Fa}gF@%K zk`}{*&X7)0syl@gsnB8{mXFIB76+v_E+A}v4nk4}AA54)B(`B?aYW=Q81)gf>4WlV zAl{wj{+Y;VA||{7vg)GiGx!Xk3qToUz|k7)J4Z>jU|RZvG{JdVpo9H%)O1A=kcjN@;|G&x>zXs=(kXisTL`#R--CX?&v{p`sQOvx|~>BE4F z3I(6IwFO03n972*EAXPPo>Ny)aWhva=Aw5 zVytL<++J~i$or!J>>84i-zBJvWtSw8YOH#lPnwe^e~0#7~zOk;!L5$PV;CP0%P$fgxf%N5#7 zWJ1Sr8+I}bViBKAS|);Ux@a0hZeS?O2WJ)vasq^6?Lja*mV5`MZCiTqQ-OR2r5R^b zr@=#vxx4{O)mb2uX63nB__yAmW&XjNKQ=c2mp2#u9cMaS>K=I#Swx=4;Q|it;&2s* z_i&h}Fh5NJEL?+EVY)tPxh+Sc?tkhJe|n|8ev6p;$jcC;yn@3#D?<;M^L=>d9dTyr z^FL?`yr^E;6b9;#(YNV(GFhK_e!Zr^KRd7XhBe(<@HWqL))Ml4++mK;yzW@@d-(A} z-BH)xK(-!?;l2j8mY9g#gdu7!UTG59BD%b&3aeW#?1>Ej!>BNpzP2E%84&< z!T~CE4zn}b)$GvaasdL~-%wjY06r&kj3}4~0H8Yyf&m64=wJciq$3%1aghWa*RYuJ zq@A~Ek+S3&tY%+R$_kDrR4MJL7h1VsQ*F3%PLA1=mc!-x;`(uwjSE6Hz3(k2#7-ZJ z)5;FU>)KM&45*2e4@vzx4fz z8{Kg%%+|Ty7;QZ+g=_Y-<=o@m2qM&;T1GZPa#B*q8Ady~wt+~U;jqzV&Y^>;n7rU@N6hdYgv%5~SUh?}{XyxXC@+gny(GQW3bNT=P literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_asymmetric.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_asymmetric.py new file mode 100644 index 0000000..ea55ffd --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_asymmetric.py @@ -0,0 +1,19 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +# This exists to break an import cycle. It is normally accessible from the +# asymmetric padding module. + + +class AsymmetricPadding(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this padding (e.g. "PSS", "PKCS1"). + """ diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py new file mode 100644 index 0000000..305a9fd --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py @@ -0,0 +1,60 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils + +# This exists to break an import cycle. It is normally accessible from the +# ciphers module. + + +class CipherAlgorithm(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this mode (e.g. "AES", "Camellia"). + """ + + @property + @abc.abstractmethod + def key_sizes(self) -> frozenset[int]: + """ + Valid key sizes for this algorithm in bits + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The size of the key being used as an integer in bits (e.g. 128, 256). + """ + + +class BlockCipherAlgorithm(CipherAlgorithm): + key: utils.Buffer + + @property + @abc.abstractmethod + def block_size(self) -> int: + """ + The size of a block as an integer in bits (e.g. 64, 128). + """ + + +def _verify_key_size( + algorithm: CipherAlgorithm, key: utils.Buffer +) -> utils.Buffer: + # Verify that the key is instance of bytes + utils._check_byteslike("key", key) + + # Verify that the key size matches the expected key size + if len(key) * 8 not in algorithm.key_sizes: + raise ValueError( + f"Invalid key size ({len(key) * 8}) for {algorithm.name}." + ) + return key diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_modes.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_modes.py new file mode 100644 index 0000000..deae8bc --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_modes.py @@ -0,0 +1,105 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) + + +class Mode(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this mode (e.g. "ECB", "CBC"). + """ + + @abc.abstractmethod + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + """ + Checks that all the necessary invariants of this (mode, algorithm) + combination are met. + """ + + +class ModeWithInitializationVector(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def initialization_vector(self) -> utils.Buffer: + """ + The value of the initialization vector for this mode as bytes. + """ + + +class ModeWithTweak(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tweak(self) -> utils.Buffer: + """ + The value of the tweak for this mode as bytes. + """ + + +class ModeWithNonce(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def nonce(self) -> utils.Buffer: + """ + The value of the nonce for this mode as bytes. + """ + + +class ModeWithAuthenticationTag(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tag(self) -> bytes | None: + """ + The value of the tag supplied to the constructor of this mode. + """ + + +def _check_aes_key_length(self: Mode, algorithm: CipherAlgorithm) -> None: + if algorithm.key_size > 256 and algorithm.name == "AES": + raise ValueError( + "Only 128, 192, and 256 bit keys are allowed for this AES mode" + ) + + +def _check_iv_length( + self: ModeWithInitializationVector, algorithm: BlockCipherAlgorithm +) -> None: + iv_len = len(self.initialization_vector) + if iv_len * 8 != algorithm.block_size: + raise ValueError(f"Invalid IV size ({iv_len}) for {self.name}.") + + +def _check_nonce_length( + nonce: utils.Buffer, name: str, algorithm: CipherAlgorithm +) -> None: + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + f"{name} requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + if len(nonce) * 8 != algorithm.block_size: + raise ValueError(f"Invalid nonce size ({len(nonce)}) for {name}.") + + +def _check_iv_and_key_length( + self: ModeWithInitializationVector, algorithm: CipherAlgorithm +) -> None: + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + f"{self} requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + _check_aes_key_length(self, algorithm) + _check_iv_length(self, algorithm) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_serialization.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_serialization.py new file mode 100644 index 0000000..9c3c474 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/_serialization.py @@ -0,0 +1,136 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils +from cryptography.hazmat.bindings._rust import Encoding as Encoding +from cryptography.hazmat.bindings._rust import ( + ParameterFormat as ParameterFormat, +) +from cryptography.hazmat.bindings._rust import PrivateFormat as PrivateFormat +from cryptography.hazmat.bindings._rust import PublicFormat as PublicFormat +from cryptography.hazmat.primitives.hashes import HashAlgorithm + +# This exists to break an import cycle. These classes are normally accessible +# from the serialization module. + + +class PBES(utils.Enum): + PBESv1SHA1And3KeyTripleDESCBC = "PBESv1 using SHA1 and 3-Key TripleDES" + PBESv2SHA256AndAES256CBC = "PBESv2 using SHA256 PBKDF2 and AES256 CBC" + + +class KeySerializationEncryption(metaclass=abc.ABCMeta): + pass + + +class BestAvailableEncryption(KeySerializationEncryption): + def __init__(self, password: bytes): + if not isinstance(password, bytes) or len(password) == 0: + raise ValueError("Password must be 1 or more bytes.") + + self.password = password + + +class NoEncryption(KeySerializationEncryption): + pass + + +class KeySerializationEncryptionBuilder: + def __init__( + self, + format: PrivateFormat, + *, + _kdf_rounds: int | None = None, + _hmac_hash: HashAlgorithm | None = None, + _key_cert_algorithm: PBES | None = None, + ) -> None: + self._format = format + + self._kdf_rounds = _kdf_rounds + self._hmac_hash = _hmac_hash + self._key_cert_algorithm = _key_cert_algorithm + + def kdf_rounds(self, rounds: int) -> KeySerializationEncryptionBuilder: + if self._kdf_rounds is not None: + raise ValueError("kdf_rounds already set") + + if not isinstance(rounds, int): + raise TypeError("kdf_rounds must be an integer") + + if rounds < 1: + raise ValueError("kdf_rounds must be a positive integer") + + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=rounds, + _hmac_hash=self._hmac_hash, + _key_cert_algorithm=self._key_cert_algorithm, + ) + + def hmac_hash( + self, algorithm: HashAlgorithm + ) -> KeySerializationEncryptionBuilder: + if self._format is not PrivateFormat.PKCS12: + raise TypeError( + "hmac_hash only supported with PrivateFormat.PKCS12" + ) + + if self._hmac_hash is not None: + raise ValueError("hmac_hash already set") + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=self._kdf_rounds, + _hmac_hash=algorithm, + _key_cert_algorithm=self._key_cert_algorithm, + ) + + def key_cert_algorithm( + self, algorithm: PBES + ) -> KeySerializationEncryptionBuilder: + if self._format is not PrivateFormat.PKCS12: + raise TypeError( + "key_cert_algorithm only supported with PrivateFormat.PKCS12" + ) + if self._key_cert_algorithm is not None: + raise ValueError("key_cert_algorithm already set") + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=self._kdf_rounds, + _hmac_hash=self._hmac_hash, + _key_cert_algorithm=algorithm, + ) + + def build(self, password: bytes) -> KeySerializationEncryption: + if not isinstance(password, bytes) or len(password) == 0: + raise ValueError("Password must be 1 or more bytes.") + + return _KeySerializationEncryption( + self._format, + password, + kdf_rounds=self._kdf_rounds, + hmac_hash=self._hmac_hash, + key_cert_algorithm=self._key_cert_algorithm, + ) + + +class _KeySerializationEncryption(KeySerializationEncryption): + def __init__( + self, + format: PrivateFormat, + password: bytes, + *, + kdf_rounds: int | None, + hmac_hash: HashAlgorithm | None, + key_cert_algorithm: PBES | None, + ): + self._format = format + self.password = password + + self._kdf_rounds = kdf_rounds + self._hmac_hash = hmac_hash + self._key_cert_algorithm = key_cert_algorithm diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c0bb31c542cd665b4588e3cf25d904097b11f37 GIT binary patch literal 231 zcmYjLF=_)b5R}11F!&)Zd|NmK0wLrDZt?)Jcel3IKAje6?~L+>lzBnA^m&b2KOvo~ z=qh_)W|^5{7MII~Dfs@X4!`AICUcKjF>i%wUZgeeW;NUXm^j5ZxqgBRo`B_;(jXF| zLe0sY@Ia(62wUz?7+bsJj%C3-D^A9Z~L^1#X literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6657e7200e9a966fae349943469b8e5b0dba3ae5 GIT binary patch literal 5083 zcmb_gOONBm5hf{0q8=m7L$f>k8gn-fTgk2z$IdznB!=y^vqm-^1hIhtybu(-XT({F zq`RrzNT&cXe9Iv~fL!*F1i8##$k9K8SD*YBd~#LsA&Sy^G=MpnVzXH4uCA{7zHT}@ zJ52?y|Ne7u{&81PzQ%{*RfUK56h)O^L4zqwohVb)QdMkg6V1}#UYS&;x>Y5eKB-OX zR$Wzi_1rjbSPi;2ttQ=DR*UX!tNlb_RaW~#VKuIu@38vcD^`bhtS;~TdzWlF|AA4! z%3uw!YUEaXe9zkFd#Tl4YSm;duxjO22mHY5@q^Ur0IitzsnTzMgR|?aam(@jAaWuv z@Z||S*MpGzQcj@Ru_YItGw~Mm+QnZKuRJDy04-N6l_{3SE9W{>nf6j;6{dfo|4p^3 zq=Q+qIx}8YSc5f5Un6~sY};&ybamDN@49jO!;k;y2xrP8E+jn(@3|B4r+j{)#x=pC znebh;;10I&|1qwT4h^P4Puk+0rkP$(xX%UjAx+0;X3_<;O&BWge2`n8TqrP-F8SnC zG@v^Y-+nn92U9-u!e>&>!Y~lgaOBDH3+J5kXgCW!+w)&Ig4w6ugxe!WayA@1=l=8I z#2Y<)dl=56ap1o-cr=t=#2P6mjc+{|*1 zGt-eKjaXP5T8)c}XhHX455+!;e4#`e9^-D_pG_Uy0%a1Q+T!*~fJ%n(e&OxOY&wE0 z+$!6KYty3q%BGceRi21I@F_dLxAe(RJoriOzP30nI4B2erYC(PHf-C63bO6EY1`9) z%^)M~xNX~?&zwp6rs9m;xZ{juBpf$_6dMOj?4UP26xUY$qVQs51=c=VNPIF>UEQtf zYOkTI^ajAA0ev~{#F5eki-OCOfEARopU#WDwKii0n{+_g$M3OV^5kP z1;vE%w(`80C#w8)?z^_QR`h*o5_dEGRZ8%FK9dYts07K;tJGg7nVX#!-@65WZ)Sc$ zHVjtHLAT@aT8}^(FvuYB zXv4I~D6S&9?dHwtWJxGL}P_&dPF-yuLi!A*gqAf3l!DrW=H7?ra2Rz*V%h?avCHtdw77 z5bMlyqYEw8r+gZ087^?|ryJa3oQE5IyhuYf*bp)Rd;DGEu2pb%WvPosC;c699eX-L zaRWqbgaS5&BASbvs6!GJCW^Z#euM&Ixe1JN3;Mmy?vQqe9Rs7hCU7PK!>}cjh}Y1TLb+kLKnrpT78xBJLS-y> zwK*S9P_aU@3)`D2_Hmwq$XbOmdj$_9V_ks=sBCf9It351dcMBmb&6A9vptVJE&H8q zz2x`v*wy@})R(VzJRg+69ssi&axUz`glMC@4RreXgr2}rz&Ej@*JW`?s)z2YZ`I#_-aSfbTK93H(F_$?u>zyHDGPv9I!@N3M&2jbsJjmrAWZ%H_1WvT|7ie6GU4xw6+SeVyN&} Q=^g26r_y_q8#S~Ztx z_0sES~IWFTFh08xyob_xE52cHM(Z5)3umu4Y`EW>*jUw zf5Y4m|2NG|a*b5T646QZrAn5`%8Q)2Mb<>$g6LZ%HR#(W%44a%{%^EUT@Dv)*Y$kc zcRZIL!+XISP?z&wT?s1|r_8Z?P9TQEe8=V;%7H02^qn3y@(+e5CzQ2O*yN+Z%Y8KY zAvCCD%0x01s&+LZ6Xm5$RHD7mp37!V^yNffo)ko1p6H-pF4RLkzc zu-^i6&t=tv)J(q-Tanl?*|b>Jgf$}@E+&SIUYFoCTplD}S#G4lI&>$?xG||BZ(QI# zt`|bxvRrT$%L+@D)%VB{OmBr{%lc+$_u>)NZneXT-Qqs8+dkN`;}KRxbyl)EiM>X} zm<|LvI5u=yldCyR7QNvAMG#@Pdp746LLd+9_t6di0gZ78P_3KG1_6XYUi4a>Nmq=Cg7e)WF;9ViBqOTDohIYaKF4BHQL ztr4W=x*BT4_U*7}CnIbDWVKZw$%E}#soqGf@z^79v$q;dHCE(}DjmJe34JB7pH^0@D966e@qvWYWtskcd+OG)03lji+YVI|lZD+fW) znBsi1o`v_uXKvdgj(ZwxPYpbZ)cV|GfJZ@nY7|62o-7kU45Ap+6Ll@rX)H9%pNP-H z8uY~D*3|AIUMCN>FYIn6tt6JiWCAf|B((|zsm%@HM`JU`d#*)${v#01evG7!WNPCV z6GI6Zp94qa0fk^|wm}8o)sYI?-%On_(cU)N-eA520{Di!mi6mYC1pDQB`gp>PTN0M zLak5xUKBi{B7jfv!S*ckzB@xfLg`?pmgh=jPD}>VMg-W!?;?f228PInO0b!=;UwE} zy~0*eRt?EDAfY~BP>(Wy#MZD6O9HlqWCzJE5<~;`LnQAZxrO8olJT~V!5o1MgPkMM zWd-1T1>hVZ9e=fA^na}s!#wi0;g@+*WdA30|DTW@>Uje7JD@n=`2@bNBdP;pCpbQd z?b~E$0^4^1+iw7;L2ky_z6aR;4%>!Buni>hVLRJIUSZN1b)488v{=wFSi62nq zeUNU%R{&Zk4x9rKKvJ1Wd5RUo^oG=9__&8F{;zdI{tN|=exI(d5Qqa-x--#un2$=c zP-}S}p0;xyD8lAU)v%JibR`cvwEct|6wf)1e*sMDahm=asy($OdCQ{TSk@m?WtAyq zqw%Z3jqRt>XSl7%%731iB%2iy)M5=3(gf1J60F$!>4dk_mROxQwIKrh6@CfqWL@lX z)M0pOF%38ZYp@(-A0qiFl24Fa4mg-yTkyLCa1d+~5E^IWpyZDRP>nT?+z~_;f?il? z!9@Xe$!sUVg7_gGIC0KraPx5{v#Jlryyx<_vM+a)SL!qAHQtA)$92t-AY2>?4z-R1 zW^?e28yrCVK`aDtFdK5;Xi?++gWHGu#_fZ{kM@l_2Or+vH#}w>9^AW&M>^hscr1No z_lEQ{#yl358GL5NH%OrhmlWaZ_{t$o+~AP{#D5NoPI)AQ6-a-FA4imxR9)5;(UBO=rfQ4 ze>-@ga5BV{V_6L670wanqa8B$Ca-N8(X~yZ<+xZ(^M-{sVW=@X0%GpY;)aqlzT{z; z#TZ^$n)S;$8{_LBhQ=~WIIk&A9Z9mg$nyh~_5l*SrW$Y2gde0)9O@rO p_c))RJ@`J5vVtB_maB4EE~~YQCRfzj$0@~8S=XfRYbELX{{RB7^XC8n literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ed1db0b427c70ea3cd4dee8a02c3eea04100e5f GIT binary patch literal 11264 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 Mm(-fx__U<{1UnEm9smFU literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/mldsa.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/mldsa.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b99f0853f959ba84f00b136ee91272d64e87af75 GIT binary patch literal 12505 zcmd^FOKc=Z8J_Oxd3Zb?zs7cUv)S}IAz2gem}KpJKoa(u=dQEZyLk+crae`*$2+f7 z_jqG#xg>i534}yAfcCH(34{+^2;zu>#0en|aBCza#EG18LTH5$|6kQzT|LvYI~(jo zgtod|Q}uWKk9z#y|99I%L%9T8@4Z{v_|-xp@i+XTUMcu-Dv{8f*R@1~B#2f^)U~pv zVO_83WgY$}YstD%HtMNzinklJbUjnf@_MQ^P|uZfyq>NN*7N1OmUuovG9-H=L9$fe z7$O7TO_mFEm}W`t9i6$faBGBSH%2!Kw}B7P4w5|3<|XZzq`gJQeA+Rec8C;!wjgQ8 zCGGF&xKBIo(+-mnpdFF4MM?WlTJ&j)KJ6$O1KKf3I}y-+Ut^Ea37>kxryeIope{=4 zNrn0{o%E?Ek(%hsiJ6JNqs?bDZ_sWuny&3un+<1iM)!(W8cw^_YJyeB>DpS8Ro(Tv zm$jCt?Encpk!iMQ!*Oa*Em#g^Rl8Q*<^w=W`b>Lum9h$su3j1VaSCVk1E|nMStE(E zPLl-w6aA)6lEk=SyrY#3n%YQ{6iGu*=4O&)$pCN9@OF*lZfbmXkT%QPrbz+*z_MiY zra{KY_>C0w4e&nf86ia&XM#-fadNzUiabE}0oVQHLEbvZTN8Zr1LPszmgj8;LB5B9 z(jkt_N>pkL)T)c2@`Skq!rS?j#T6vjnd8w5xmpVJTXAs-9y)>h4n>8vr=o?%~ zsNj7T4KWK9P*TU`{ViQfT-R^uw-b)(CP~sYHd62CZ)XBY-0T=ep+?YNddu9xCNmG`Z(X5HfT`FX3w?Pm$wCB0;&=CDCzf!ucz zYzqF}`S#p;vrgx#t*eeN$lOZRS-)m)Q0mULTUD#txMnkAtyXK)TCp8U=1QBiu{l?( zt{j`6Yi+sf&BoEv$vLO$(jzUfp1nq$In^9LzsC&Q`rnT~@8kadAtn zEpL=duSz`v5;_Ga5_(?GYC8NG|29(F)151%)b;3{sp$SGoo`f{q}o`!^I%7ZSZ2>P z8O+#D(#ukx&`YoKHkJqe6`Y&k!a6P&zSeNQ2(BT0`()1augmMy47M*NuwG#Kn$1;M zHPjRenpf#oNzyO!$pG$#Lu;$-AsCY#!~*9?6c0en%d6Ho04)yR1L^IDx-6nn?r1^@ z6gs%D-lfEhzWqZf6e_{&YxkD^{G09Srd^{A*L0h{eqz}jUb3&vno!J?a*=UEBjE0O za`xzxPx*Yn=q6VNc3zi(G7DD*h69>8^NQg!ZustyO2xkAlj^J2!k43Ja|fC_f%J|Oh6 z>g_K|_0!w?d#Dd&Ub?xmK`X9jtTdZ7a3iTEOaT+tP@M?Y<7RMLTI1|Gtz30X`eqwE zv)jFcbs_t)7_rlqMc=fn=cLSf%#;b53JMWiSdSCxkQ8c(yF&*iq|$74$;2Lo0Xl7% zwJfBytP9W?Y?XaoCJd;+@m4D?I^a63H~Tl-V=*!kN?Wml?)b)gHb&mOW#Mx|<|Reu z?t@RIoY59{3V^VzhFzzY<>f4^-Xv}CWR?d*;w<_-gO!@?IN*}jn}qEH242!$sdxo@ z#c`Qkas8fYlt8{zfQsGaQ*-l1^IzP0xSo}kK-x>u%H20 zD+O39O)|VKMFIW*0z|q2lH+Yz-Uj%b0PZHkfcOCS@ty(RQ{dEy0udqRc-u6LJOR{` zfCB;faeO$)dkkn*abTXe3dsT-IK=Dp2vN>?aCgDDd zR=|T&!ahLb*R@`-?{;E2!G?f*W`H5c;E;%oVhu;*AdHP+Z5#_Uez~|t84H!tSS>-+U=nbVo8Xyne1W_K&p7B6dr0Pd zTmkdEiR$2DOX%AN0#2a{AtBojGks)kaY0H`L;L9^MYZGoG|Fbu*f#51Y_0o29iU?Ph4 z8{|+B3E-B-nV2;j6ww3@Lf>lH4Fb;q^y-2IJ}wHeF}i`yJvZc!ELQ4upa|g6!!ffa zq!6_CUU2~Bej_!&6$jX{1008Hh2nRhW0j|b$FqPr!&yH(qe7<37-{x4d(^@J$)sh? z!$*Bk4Z{VIiHI~}m-}eMc8H9>BkiYeKXMQI2_%ik8vrK{Gx0d?A903oW*MNdSX3D8 zcZv?9AHsn{7NNuC$F70U`Ui^SliiXd2^`%VUGngbZ*6!6FRaG_uAfUI3JG@!|C+Gm zO}oaZO}5M`1fL8tM6fx83H)ed)^wVXgpd;W%@{n{l?rVk0tZOjy=#0-6^ElUXa#`B zKLUM&vrR%kv5eqkD*06R-X9F%xY&>}kdq^%_Y_t!-Y}ee787Ly&FLq+smnGLz zvKAsQgk(R1J5cao_hRS-jKd7jM1q~e;ye}z*%<<5b`gu`v3LQCMJ%ph@fsFi#lphk z?r88OAo)7n4w?zk;K-mrgoynnhd3(KCZRr-_3T?Rox zs*hn>NhbM@E%cM*>l-R6dAMT>kvv=+cH-g2FF~9*j3`oFicz{#T^w?-2Vnq)DWQ9( zs@TIw%lC*WYvGoehPDsj7F#CBEvX`?`Ic@>-V3gMI+>-D3*DKeV+);LCC(x8IPZ7T z5J4)bmm$Jb5<@S@9>?M^6cq!C;KF*Bb7427Y|IoMHrejW>W-PF%veH>{yuM@Hsvc^dIL%4&( zx?9nH^CNxuqK_0t!tJR#?vX3{hr(2(E}~4sBnPA}*cqS}*5Wn_4P`^e`#2Qt)jskG zNZ;i@($IM7GoC#F>q;ckeNyRQ0gU&--`{ukUI5?)2coIy@I$C=3C)P!ZF0oysDre@0;@9Y(kjcQa0UPGJ?Z=l94t zT~N4+I4NSyjyQ>ZGis-BX3*0>`t?5I8+-!q$o1KbZ%!Ql6ylo`$M-6}IdQzd_y)f? z>K)%GM)_po8zPr_5Z|aG{O`m!Pt7iz?2d0v9Pc~6X-Go^@l7v7>}`B=P0A6x$yVjq z?fB+x$t`$s+|6x|;+yYD*1`KdqD=dYZwNSo z*Knw5sPqxvAbpqr_~4HR!K5EQz5%yzxA^9#IJcOA>-exsU>#Mdy^U|~ zQ%NPh0R@#{B<77M&lUfohn^z7iRjt+7L+e(cwAms$NMb&a}22Tj&GDbw>$C8uTc+< zp@Y|-5!pYf_~y4#j3B;=im~hQ%^xMhAin9%a4+JUKP&u2d=ufnyYbCm6=u?5$kSz4 z-vfQ9u!`C9dlcV%q;M7SO~jgg$2Y66`F?_9Jqne+-rwL8GgJ8a(P|q%CA2JtyNSO_ zDo?53%9iL`_&N_i84o{2DNjd8g0G9K4g8?hDOva}FiYWp<4}|j#!BQ7s<`pnsj@ZAyr4#Uf=+m7wJ%*!&mR&`wXY!1JMVfaRh*;t_8Wq4XK u)KUqYWkBdi4Y6`mQ5{$<5K%CD2`B>O`IwzSzzvPoFBoH$N4BzBCQP_?3{snK-X8e7sR zJ)>l;3J1tu_P}i^IOLFUp?su@6DLlbxWI9$;KB(`oG8jgQM}jlFO4Gyk^_uu+O5~G zyWe}={oeO_w26s=0MF0As%`!8v>^N$e?*@&{8$hK(fTJ;h(N@)&=DJ=h;^wgH6-|- zYNtAKL++#-X-=2hnNGHmDh3eE_&@NTcDQexWX=}D&cCD4F?$&ra>YfgqyyU)716j3q-b$l0bhs{9+w3Bd${Xi0hC(?82gtk+uUSYueDQaX@ibt*SvPC<}I5~U}c!iIn-%y(~cSp%TNI(W0Ue= zW&OeG>b1~VQA?4HW3hW5f_r9#R%nq#^y=}{rq~0{F)?;mpQoG*o8LH8J ztTCc)7;UOHHH(sZ?Gf!hs<(~ir3>}mj@>f5AJ(qaEyJesJ+Pm)Nv(R+9(C6q^&T@i zhHX58X3g5^bg0b?z0T#W^>&;oE`C(%Ns!P&V+m48%83&E$^VkmgSSVvNNuF=-i+Pv zwdwb``g5>mV1@7RimV8u>A2kfgLQoQ-a+#d+!NAZv7mU*Qdie{R==&;^s3_SK1(@g zwKPTv977#QbBb>CS`?1%=XSLg^jzUahK(g#w7tQ9xW!SJ$0^cq;FCbG_?DIir$*I_ zaPA$AAN?ALXA+~kxi>r1;2xlxCWFoBr2T!6gRwZjliA=+u1RqB`485UOmZbq?0$>1;6l?TtPpcoJnBHPp0wg; z1Kk!|RNuA~`mhf{#~xi;$z56$a9E3ss?vw5dNCsVu~FGwrtvEYNApY|)f$flmZB-T z*&7im(WW_7MP60?W<;J7N%FXC5OxgR#_-dj9rNI(doMvqLTN8i(p}Gd7ZS`@QdR8d zN^>nDbi$#Cvaak-0D4fnT8FBtQ&828N&4W#RR>1IW%OE#dRwzB@Ww5ZuwyX3lhT^H zQ`VZ6%{1NiS^(7v>}yz@!=jGGc`QD{B0R{vhW?G^pg07tgcCLI!Xn1Gq>7xX6$! zr==+be4yq?9;g6kI5o$qCEnYIHhE41P(!AGd-|D7W=Mr|7kEpKa~~#0IIYNO?)*o| zF-|LS+HsKJ1k5!{PIBr5IR)_Mv@;#-GzPB4rigD&fI6{_kH-<6@FFVvb*Kb*22kV^ zaX&osLRc4A3D~Q7hKA>no?#RX!3CSbpVL^NjT?tIX_qn(Bm@rNxnVyZMivadk+tPv zE9duEhQ_4uJUgml&F{mp9Lqz`*9YKURpn!GoMcf5<2*XDN`ktFICseO**;o_?l@Rj z7nOuv*%{~yo}>_hg@gN(i-AA6K@;#u42}#37vH@sCFoZq;cygn<8eWXgxpY{2rECc zu}zEdVVl@d>QE~j*7a!G1<(s|KV)#ba)@f23P3E6u4;ZJ=dLsYO#i|9 zh`}JdU5y!RUzoMOkwBOsoP|eq_#97oW_I`fL*Q_iK062(DPlOc>N1aCcTnSpF*N{< z4B@R%e&yVy3-fpa0aH>E!OuhZD=I<&z~+<{GhByr)kt?2ekX33shIMJm7W9!kOuDr zyL2A|V2ANWVDATJPe6A(dOnTJn&dZqu);pTp+1Bn<~I{@8$+b!uJ)y%7KUYv*I&Zx zAN02pl#SzvGP{D~T*U%W6Z;s8>sUa964e$ z36n(^DEQ#uNC7}X#sdlqz@)<)d;ZsMI9v#D{{0UwtolyyO@u}NUV}}5wFdKE>VeZ9 zFiygx-z^M)WY+KnEDs+x-w)2?s<&M z5X}R}`yB|nKO5tG`NoR}*db>dxjhPe?YLz3B3zeoB&9@>UDRY4kR%-bFofh? z^XzX3bi%BP7Db56z5&GnoZ~$5a_iTETDTaP*8Cb?e?uJS&M_{-K{M3@xc}corgGi? z@KkQv_nO`RZzIztZMT^FXP1H7wHUWkXsr9t@D&b)N9&~t9&(QO?f-{#ZYJCx0aO@u zP3T?FH7x!I`P>8O_X_#k5kJ#%^Eup3D&S&v4TgyDBu{)YL9sWR#l51U z$A{uhB+W`l<2X?H(>}Vo_sRU^1&f%NyRjQE!U25DO<;44eJiMi#|A;tU*YwAOymTH z(??S+etIyh_z%`c!VGx*TQRR6uAmPy{`*{ugS)@M^uF-!CDf4ZhO#X7ZRo)6V1ZCi zADaZR73Ad>yBE|#10uHkJG`z8*}<7m)6jr1fImKFvhM^FB>@FQvT*kjsQvEPDPLQP z03SeuX%kQ78_E&Nk$K&WaA=j|QDQx?A77|&wZ01tzlZl=2p_qthw-{{qYvNt;JT8b z_vAT7<7o7=QjLDDQ=WWV;q_MIY>dVK5@&Sr3yD=z@w*wrgn?gyHBKjS!_M)(Q!xxt zjp-Ou-!|YwS{53d?6vEQ%W!4M??RkxOS3fFW=@XLO~bO`o*i%4*a8-Kgc<4<@xg(K joZQFm-RvhQnT4nlzIREJVhR6Jl`93YoT}X5Wl;Y&G?3nN literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08394b2447e2dd85be1b8dcd7e4afb7f273edd36 GIT binary patch literal 3745 zcmb7HTXWmS6~+P}2wp|WsxQi=XyT@(Ym@b~?o886N3^XtZ6Zcf$(0EcqkjlIQsRF42smg1RYLKds>U<5-ntHPaxxv>V zuPeC@d4perd`;*lYkcz`hTFi{5BPPAT^9}Pw$5+xoBS5v`r6=c@wZ=??grQQwdOl7 z$<8LrDt;UfQa=p`angls_57qK67<$P$++JasSJZXpYt$2#-Je+KcH8aF9u;C{(0+H?IcXa{h=S6`o|(^2XZ`22glMM_Qvg= zKk55vdnm(xn1*MV_UArn4|AuqhGS_#EwVk)(b!DMZ|tSAx9dOuOvJ}&Z{qBWI1OVF zIcI(}63)>;I$!K|{^)(S(|vmI$rr8eg(-{V44aw~nylz~d=Plv!by3rN-Jt;HgV51 zB>9asEO?z!I+$#&Qm*st;B%-Y>$Kban3gmk|J+>CfaEvUpyoXZaZ2ecH@&|~lPAA@ zy0d?<@YL&7T89d6FR4WGcT_SlxJ}^RLuUr=XPPk1HP;jcw3aBMwE_4N*F~8dA8Fj= zIxlbwtSfRGtgDDB#!6o^#dhMXE80=b=@%f^Et zi65n2q!5!CyH7vP%Zy^MY2nB`*ApkTI6G&5WBJUvE=TtC(1hiQ=;G&9xlrp+~2WOgTymUedfqa<|> zh2zH#OcTdK-g6d6zUN#zu6quEPEe8*Qzo}peP|-&fR-Ig;ip2jnx)M2$l!9AgmIGk zaUe1SdnwRM!kMI#%}NL3q1cgfAhYrxh*qjEuVD^8GZPUV$?LTG1~m%|6M-m7g>jgA z-cKMUL?x|Y={l=^YZ^M!zcmXR%+@DWoMvmb^nyu3d_cC$F6z^*oKD`KYA0~p1?yt< zEy#Ghi^rAym14ifxFWEoPl~h=tnN1JR|0`D+bu7AtX$xl%B|!Gw|2?rl5$|S=6Oq* z08!+JG-?m!U?^ld&KPb4IZ#MIE z*7^iltrHy&WSI8)lj`9(6$u!X^FZMTWxE03|G<#D(6S+}(LT6hSIDNRUI+85}vQlxsDMatq&=v|CoYq`0JL zrBH%gIak-UJf&~b%#ouoe1}#xsaYJFIxjj`7@;Mq^s%ZqDLS)Bjhr@zu5_^E`v6z| z2n(A`-orz_PtBG6ND&I1GvL=kFU36gE6iexYGgv=E)hJL1Atx9V9ThAk z1rg;k6hK#1yiIef)FD9s3AgfOnW-bdmegeECel!aU7|WkxAO|nuq^ajXRo-7% zI)~?9uqL6{s4;@)q(;ikp}E3kgz1$oYhmKgxRuLLn2|iWjT*M~`~A+I49}23J{4m` zg4x*UFbV?<A$`72~W=A)=--T6yJWaqC2?*ug%{VxXS^hwh^)d@v84pyv`ruU87(P@ zKFW@jdGejWkAhJIb-cd++#4pza+xCVwqlcJQo5|OI!;(V#Ax#xmH$U0R4FL`B`Kd7 z{$b$0yIhgC@`}8*sK`~AbnpJ}MJ;bpw@W%AxA}iwSXxhRQx*M{dP3zk6$!Fp=h5R` turMb#flS%73X+-qQT`w2H}u_vh*{Nby~?Ua)o7S?^=mkdTbpLX{x3m97FGZN literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..87aaf1bb1868adf30b26fe353efcca2354bac25c GIT binary patch literal 8344 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 Jxq8Gh{|bVXwN(HB literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ffe9d8a942fbec85d80072a2c17f7eefa81a7d92 GIT binary patch literal 1486 zcma)5OK;Oa5VjrX(Y(__OL?`t2~fK&=}STg)J7__MHL09@+ETONwcokvDQx7@DJe3 zFW|;s@|6>JBm|c-o3vdwRYe``IP=Xnv-6F2&0H=m;q&dQW|I*~`oW#(lSk*3B+33; zS&}Ttk{yZ4hAi{{ilZ0`zGF^|s)kDAMw}*$1Wg)Anle&!#2BGzBTX|#hGvZ{%^5ja z0>#dQY8N1G7a?PpAYqR}${vHHeFaABtGLE-O+ebdhHDaX_I1eGH=4Og$+&r(eG4;g zW5yIRr*YlEbr;$9aNWnM53u?}to#VGA7gg8pZ%nteUcevMXEGYxX;r*^FJN-na?i6 zJk^lK+B252BbC*ke9C1x%$Tm*4$OeGUH@G<9V%8Uj9I=JD$oeyU{xy1VG^wQg@w75 zFissF!q+~~Fvjq|ddL}x!#<&`h3Q(Y*$FxfYBi?d7GWajdBoi_$_>`@g7zLWy;e_a znV+Z`XdWY!1f&bTX8Ju!Az-AzVwlHNZsOb|xJh!8;s%e2#Q3RU8E&#@!uUrQ1sIvN z_3cjGA&m{_8QHa+*Aef1)Elol4)FrgSnaSb2v)H=P%4mom5)I9#jQ=OTd52qiwncZ z@{&MGTbmozt)<0Cq0v4xH#;9GRoLy1QRL-z&upGQjeO{N;G@L#ZAQ9g09%g=D0=?sr8gUOyX4RU+fm+@4!P2!ZxLw^L^~H+r^@3L0eXgzOJ_%sPGaLKn9{76n zO6Y?tp?jxSLKjy;5BT@iyk3}kLEBcxftUPh_+QXum6S4@SLF+Tzmy}jcwtmldAxKk P{s+Fc5i literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..032b2f41e83dc7aa14fdc63629fb928ae9a72d94 GIT binary patch literal 1232 zcmZuw&2Q5%6t|N!NxN=>Q7#*zh^t|>-T$fcejIJ{rnzHpScMAw#N2?Gjxa$*2kbQ z#BhdkoM3EqCv$Q)aU0#uyu6jPFyijiPkfL;61+pqW36+F)w_gzu4uNp`Gr&)JT>C)w|G+IJQn4N)>T;+%EUvV zCuelZxrwV%5FyW~Vq_%1(~xS;;^>si(>N2u=TGBuW+sJv61|AEF#J(T(-R8$#HpH< zrWh+)PG<3h&U0$wQi)s`aSGQ|&+?obCDOPuBGXYhQ!Pkp4?gXH2ytUyX@&=Phqf6H zLD@8eIX^ISnRo6bE(aKx4|c%9b8m^07HdPZI(7S4@utUY-dpuLdJipsosA16%p?a4 z+H`HCHjDMLx+TXO8~Fh!1}(6`Q)lVuo^cso;;(pt7l?QZJZ-`5Gh_i8%EY>mn8r6+a!)2!r2N)-x#y-2d&VGa63i#Z3Bw=5us zr+GF~mNgr|m7M^~5+Q{lh^0o zIod+?)-72rwF>3QB>|P!`(c-ZovM6~SwCroPqW-O@hR@igkRa&Xy(7`ba5AO I^4&e}AJGakOaK4? literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d064fd1635040b6183afa7fa65a21c861159ad14 GIT binary patch literal 4517 zcmb_f&2!sC6qjV#mOtV+Ax&D^22s9hXzi9#pujM+X($Ykc9M1m%t6T7O)OU*?yj6* zPZ?%_69Y3GIQGzT%bmYQS5Ev3JutktYs>OS(=vlRTCbm;ci)%Z@3;2CLQ#S1kKgN^ z3yX^K7yd|JS@`jhqNw~gm=J}ip5m)bRmHjHX-y5jGhW8mo4TKEW`$h$a(=#Phbnij9z33#vD4Ov9VRc|k3Zq)W;!`h}c2Nn27 zKJ3zfa}TB!i&N&>o;wf=fFyUVx4TQ3gR7^nBpSbflqyY?C{2xK2z(RmfkrY!|4IK* zZR#}J$&oC{!IS)h3^7PS$n!$3lHvoElt@{~3?W+}6|x8`RLPQ%7K9X{0Gi9>IUy?w z*$V7+3^Z5Cnvj;rafrl;c=5|OFJHcRdm9{6@tAFj#k!%U3?tOA?H)o+EnR{N0^S!*6(cX+_`n@=JxH)>(=I%8=qX= zy0K|p{rtww?N4ui@K6X{45!}Oq_8%&Pup4?s}-OHTZh` zbE6&lwBdH|^5OoCmdo1*c8Aia(d)XF8ywh-Si7!At(MIxY1H>=u;1|9*4uA2y8Wmf z2AAqr8r+TO`7T7y-lM#c4nsqRq0wco??&!EJhpk?_i4mjry*^wcl&Gw464G-(LhBj zYlf=9NB>994qlY$NNS=!OhX22M!aU~h18>VaJ3s?5Ky?yO(*{?H=J2}Rrsn9~qXdcs3KmNv0=Z0td6)Lg}@UVNG@t2h55bj>9Z2r?YqpBwSQ|Zg6TkAZf)zRr-K7k1m|g^WmGsCiH>X2TwPC z^Ip&0w>=s}W)u$HlXZ4>+depF!cd!b6-+|&r~Rv@&9-3oS3ybos13}cd_?6q7q&Xo ziDJDKh8}dwYzP5o()o0I!1+Aq&m_)ow5fBKoAh1}+GjMIDNUOH(i|UhmPPMb*7=m> ztJ9WC73Zl5In)L(CN^!0KF3Ylbi(e8N$iC=wiuR$x|Ve*WzF$fYoro1RM&~HvHH{x zpD}D;;;VB^B$RgN+Ict(U2TrJWy`|&DXLRJ>C6JWvfpm~y<64C{78rt7_TpiXGgKiK}Kx(!Q&P)_JzIYk9H_+AB zVUpl7FrWMClW_TwvZJsCP_GpjMq6MOLvR>_BU{3s%Q!p-L$ka`1IoY<3p#C0W2^WC zp(K?@(Nm3);&pg93pV=T#I#@a(LY!o*F&QD|FMt%=x4kvp-%=~wq15?)=l;{$ZotS~A(u{|57R6GZNam9u*0n=jzSgodyu{vG> z<}iF{*&}W)yC{-`(S`GQ;PYPMHX`p6*~2(Y)0hgz2uvNbhj(GC>2hBf23nSi4H`0b z`N8^Z?9x^BOu1(hP5>rP(T91~Pw|KJo(X|CXKsb#*q^P<5Q@1)vNYi_aNZ=JRs>`@b#I&>&JHuN}9Q%Mh5 zxbG5pHE`e8_)&Cmh@|h&$+9upgQpyxZDb>@r{|WvlI${vXb6<-AGy_tiLlpjp|dbd z^vt=Gj3GqG0)8WzjlmaD`FprWFaPP8gig|g3PV!H>NqrTxPZfD9I!jGi#WWA!#g-2 z0b%dq@Bt1-6M?rt1yBu+l`tR?s1_v|KmxE@oFW9MU0X)3vfG2hD{vKt0T326*V3n@ zI;4n-hQr5L*E}w7tV(WZ*l(W zwT&-;xCj;#8;tI`JOWmYD9g~1REJ4&6B{2$7WN^U!4a0>0H;;eGJY~E7b}^Sjeh}- C2_et` literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..478a5747be7eb4753848c3dfae236fb699387eb8 GIT binary patch literal 4515 zcmb_fOLN;)6qaP!mL1zoTsP^9RJ?0wZA#0dz%aCFC>gGFnAy=J(TkL3Jo_9)a zxlv&+MS* zhMKWSO%5vXkD@=I9_J2BYX+yxHXVB`HULTC@^E{bG7EQ4UU7te0V$O_GLbq8%@Oz} z%6*08i29RyPwuER-!G6nDZoncevW9QB;-XQmr41)EIdVBO~|UGMh?Lai)2Y?mV{Ii znsstm$jU<2fU}N(<}z6k(gku9B5^FNetF@-yElei$F@GDqcGnc1(feAp-Rla3=50~ zL*`jZ!krw<@m|B6pMeQjt6q}6=VI& zwNEZ>TwOOVeRlQw=Czxjd>&TVkO#(O(@@2I!liBIyT(97&WNIx3v-sk*#hp1C+5r-0t}eJ_q5-1KRQ!I%9-5eL+GTJsOG;$?iy0mi41?Y= zjI#;58}oKY3f5DTv9FAuk1g61eU0m;Zux@)2C-8amS~27x`uH+VasybmPiHKr)>q; zMqTRq&loZ=@RbY$38jNfEB7a1Yi1Z*F%0})WX;8d!Kt!Ns%f5Iez zx6oApK>=?C0;+((DxhK>P_aOYLYAk1Re-ywS0ZI0(}WBd28qyCO`t7m*M#;AZKEA( zqyhULAoh962>603rGv&1mq0;m{b!VC}D68@~?fbs2AcBn@g7-B$+ zZ7OUTR}euGsT9prn<}ouViv}%%zM?E>a!y5hCK8CqZ2ryE9CBPc&+oF#dmpg_%vQ zJOKz${~CP~eO(zJOZhR=V#h#jd@_yr(Ww#SkDIAgsNbz5RR-dKyB-#y`=DfM8l;x?yY znCp|742&TtM1}i$JewgdLh%o9PapXcsZ`E0gBn8y##%VEad-oVw{XCI$j;&LCJyi5 zfQ*B^hryJ%%sr0{=RzS=zIAEQVC0Q=d~B1~$9|BA|uE zOPAL^2d*NBOIYlg+zbL1YK-pKJOD0@@XFAmM1zS_6lxzt4D3U+ha>933!AbiSMZZ- NoGZ( DHPrivateKey: + """ + Generates and returns a DHPrivateKey. + """ + + @abc.abstractmethod + def parameter_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.ParameterFormat, + ) -> bytes: + """ + Returns the parameters serialized as bytes. + """ + + @abc.abstractmethod + def parameter_numbers(self) -> DHParameterNumbers: + """ + Returns a DHParameterNumbers. + """ + + +DHParametersWithSerialization = DHParameters +DHParameters.register(rust_openssl.dh.DHParameters) + + +class DHPublicKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the prime modulus. + """ + + @abc.abstractmethod + def parameters(self) -> DHParameters: + """ + The DHParameters object associated with this public key. + """ + + @abc.abstractmethod + def public_numbers(self) -> DHPublicNumbers: + """ + Returns a DHPublicNumbers. + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> DHPublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DHPublicKey: + """ + Returns a deep copy. + """ + + +DHPublicKeyWithSerialization = DHPublicKey +DHPublicKey.register(rust_openssl.dh.DHPublicKey) + + +class DHPrivateKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the prime modulus. + """ + + @abc.abstractmethod + def public_key(self) -> DHPublicKey: + """ + The DHPublicKey associated with this private key. + """ + + @abc.abstractmethod + def parameters(self) -> DHParameters: + """ + The DHParameters object associated with this private key. + """ + + @abc.abstractmethod + def exchange(self, peer_public_key: DHPublicKey) -> bytes: + """ + Given peer's DHPublicKey, carry out the key exchange and + return shared key as bytes. + """ + + @abc.abstractmethod + def private_numbers(self) -> DHPrivateNumbers: + """ + Returns a DHPrivateNumbers. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __copy__(self) -> DHPrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DHPrivateKey: + """ + Returns a deep copy. + """ + + +DHPrivateKeyWithSerialization = DHPrivateKey +DHPrivateKey.register(rust_openssl.dh.DHPrivateKey) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py new file mode 100644 index 0000000..f245557 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py @@ -0,0 +1,179 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import typing + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization, hashes +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.utils import Buffer + + +class DSAParameters(metaclass=abc.ABCMeta): + @abc.abstractmethod + def generate_private_key(self) -> DSAPrivateKey: + """ + Generates and returns a DSAPrivateKey. + """ + + @abc.abstractmethod + def parameter_numbers(self) -> DSAParameterNumbers: + """ + Returns a DSAParameterNumbers. + """ + + +DSAParametersWithNumbers = DSAParameters +DSAParameters.register(rust_openssl.dsa.DSAParameters) + + +class DSAPrivateKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the prime modulus. + """ + + @abc.abstractmethod + def public_key(self) -> DSAPublicKey: + """ + The DSAPublicKey associated with this private key. + """ + + @abc.abstractmethod + def parameters(self) -> DSAParameters: + """ + The DSAParameters object associated with this private key. + """ + + @abc.abstractmethod + def sign( + self, + data: Buffer, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + ) -> bytes: + """ + Signs the data + """ + + @abc.abstractmethod + def private_numbers(self) -> DSAPrivateNumbers: + """ + Returns a DSAPrivateNumbers. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __copy__(self) -> DSAPrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DSAPrivateKey: + """ + Returns a deep copy. + """ + + +DSAPrivateKeyWithSerialization = DSAPrivateKey +DSAPrivateKey.register(rust_openssl.dsa.DSAPrivateKey) + + +class DSAPublicKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the prime modulus. + """ + + @abc.abstractmethod + def parameters(self) -> DSAParameters: + """ + The DSAParameters object associated with this public key. + """ + + @abc.abstractmethod + def public_numbers(self) -> DSAPublicNumbers: + """ + Returns a DSAPublicNumbers. + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def verify( + self, + signature: Buffer, + data: Buffer, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + ) -> None: + """ + Verifies the signature of the data. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> DSAPublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DSAPublicKey: + """ + Returns a deep copy. + """ + + +DSAPublicKeyWithSerialization = DSAPublicKey +DSAPublicKey.register(rust_openssl.dsa.DSAPublicKey) + +DSAPrivateNumbers = rust_openssl.dsa.DSAPrivateNumbers +DSAPublicNumbers = rust_openssl.dsa.DSAPublicNumbers +DSAParameterNumbers = rust_openssl.dsa.DSAParameterNumbers + + +def generate_parameters( + key_size: int, backend: typing.Any = None +) -> DSAParameters: + if key_size not in (1024, 2048, 3072, 4096): + raise ValueError("Key size must be 1024, 2048, 3072, or 4096 bits.") + + return rust_openssl.dsa.generate_parameters(key_size) + + +def generate_private_key( + key_size: int, backend: typing.Any = None +) -> DSAPrivateKey: + parameters = generate_parameters(key_size) + return parameters.generate_private_key() diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py new file mode 100644 index 0000000..39e6751 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py @@ -0,0 +1,369 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import typing + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat._oid import ObjectIdentifier +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization, hashes +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils + + +class EllipticCurveOID: + SECP192R1 = ObjectIdentifier("1.2.840.10045.3.1.1") + SECP224R1 = ObjectIdentifier("1.3.132.0.33") + SECP256K1 = ObjectIdentifier("1.3.132.0.10") + SECP256R1 = ObjectIdentifier("1.2.840.10045.3.1.7") + SECP384R1 = ObjectIdentifier("1.3.132.0.34") + SECP521R1 = ObjectIdentifier("1.3.132.0.35") + BRAINPOOLP256R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.7") + BRAINPOOLP384R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.11") + BRAINPOOLP512R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.13") + + +class EllipticCurve(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + The name of the curve. e.g. secp256r1. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + Bit size of a secret scalar for the curve. + """ + + @property + @abc.abstractmethod + def group_order(self) -> int: + """ + The order of the curve's group. + """ + + +class EllipticCurveSignatureAlgorithm(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def algorithm( + self, + ) -> asym_utils.Prehashed | hashes.HashAlgorithm: + """ + The digest algorithm used with this signature. + """ + + +class EllipticCurvePrivateKey(metaclass=abc.ABCMeta): + @abc.abstractmethod + def exchange( + self, algorithm: ECDH, peer_public_key: EllipticCurvePublicKey + ) -> bytes: + """ + Performs a key exchange operation using the provided algorithm with the + provided peer's public key. + """ + + @abc.abstractmethod + def public_key(self) -> EllipticCurvePublicKey: + """ + The EllipticCurvePublicKey for this private key. + """ + + @property + @abc.abstractmethod + def curve(self) -> EllipticCurve: + """ + The EllipticCurve that this key is on. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + Bit size of a secret scalar for the curve. + """ + + @abc.abstractmethod + def sign( + self, + data: utils.Buffer, + signature_algorithm: EllipticCurveSignatureAlgorithm, + ) -> bytes: + """ + Signs the data + """ + + @abc.abstractmethod + def private_numbers(self) -> EllipticCurvePrivateNumbers: + """ + Returns an EllipticCurvePrivateNumbers. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __copy__(self) -> EllipticCurvePrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> EllipticCurvePrivateKey: + """ + Returns a deep copy. + """ + + +EllipticCurvePrivateKeyWithSerialization = EllipticCurvePrivateKey +EllipticCurvePrivateKey.register(rust_openssl.ec.ECPrivateKey) + + +class EllipticCurvePublicKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def curve(self) -> EllipticCurve: + """ + The EllipticCurve that this key is on. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + Bit size of a secret scalar for the curve. + """ + + @abc.abstractmethod + def public_numbers(self) -> EllipticCurvePublicNumbers: + """ + Returns an EllipticCurvePublicNumbers. + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def verify( + self, + signature: utils.Buffer, + data: utils.Buffer, + signature_algorithm: EllipticCurveSignatureAlgorithm, + ) -> None: + """ + Verifies the signature of the data. + """ + + @classmethod + def from_encoded_point( + cls, curve: EllipticCurve, data: bytes + ) -> EllipticCurvePublicKey: + utils._check_bytes("data", data) + + if len(data) == 0: + raise ValueError("data must not be an empty byte string") + + if data[0] not in [0x02, 0x03, 0x04]: + raise ValueError("Unsupported elliptic curve point type") + + return rust_openssl.ec.from_public_bytes(curve, data) + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> EllipticCurvePublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> EllipticCurvePublicKey: + """ + Returns a deep copy. + """ + + +EllipticCurvePublicKeyWithSerialization = EllipticCurvePublicKey +EllipticCurvePublicKey.register(rust_openssl.ec.ECPublicKey) + +EllipticCurvePrivateNumbers = rust_openssl.ec.EllipticCurvePrivateNumbers +EllipticCurvePublicNumbers = rust_openssl.ec.EllipticCurvePublicNumbers + + +class SECP521R1(EllipticCurve): + name = "secp521r1" + key_size = 521 + group_order = 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409 # noqa: E501 + + +class SECP384R1(EllipticCurve): + name = "secp384r1" + key_size = 384 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973 # noqa: E501 + + +class SECP256R1(EllipticCurve): + name = "secp256r1" + key_size = 256 + group_order = ( + 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 + ) + + +class SECP256K1(EllipticCurve): + name = "secp256k1" + key_size = 256 + group_order = ( + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 + ) + + +class SECP224R1(EllipticCurve): + name = "secp224r1" + key_size = 224 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D + + +class SECP192R1(EllipticCurve): + name = "secp192r1" + key_size = 192 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831 + + +class BrainpoolP256R1(EllipticCurve): + name = "brainpoolP256r1" + key_size = 256 + group_order = ( + 0xA9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7 + ) + + +class BrainpoolP384R1(EllipticCurve): + name = "brainpoolP384r1" + key_size = 384 + group_order = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565 # noqa: E501 + + +class BrainpoolP512R1(EllipticCurve): + name = "brainpoolP512r1" + key_size = 512 + group_order = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA70330870553E5C414CA92619418661197FAC10471DB1D381085DDADDB58796829CA90069 # noqa: E501 + + +_CURVE_TYPES: dict[str, EllipticCurve] = { + "prime192v1": SECP192R1(), + "prime256v1": SECP256R1(), + "secp192r1": SECP192R1(), + "secp224r1": SECP224R1(), + "secp256r1": SECP256R1(), + "secp384r1": SECP384R1(), + "secp521r1": SECP521R1(), + "secp256k1": SECP256K1(), + "brainpoolP256r1": BrainpoolP256R1(), + "brainpoolP384r1": BrainpoolP384R1(), + "brainpoolP512r1": BrainpoolP512R1(), +} + + +class ECDSA(EllipticCurveSignatureAlgorithm): + def __init__( + self, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + deterministic_signing: bool = False, + ): + from cryptography.hazmat.backends.openssl.backend import backend + + if ( + deterministic_signing + and not backend.ecdsa_deterministic_supported() + ): + raise UnsupportedAlgorithm( + "ECDSA with deterministic signature (RFC 6979) is not " + "supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + self._algorithm = algorithm + self._deterministic_signing = deterministic_signing + + @property + def algorithm( + self, + ) -> asym_utils.Prehashed | hashes.HashAlgorithm: + return self._algorithm + + @property + def deterministic_signing( + self, + ) -> bool: + return self._deterministic_signing + + +generate_private_key = rust_openssl.ec.generate_private_key + + +def derive_private_key( + private_value: int, + curve: EllipticCurve, + backend: typing.Any = None, +) -> EllipticCurvePrivateKey: + if not isinstance(private_value, int): + raise TypeError("private_value must be an integer type.") + + if private_value <= 0: + raise ValueError("private_value must be a positive integer.") + + return rust_openssl.ec.derive_private_key(private_value, curve) + + +class ECDH: + pass + + +_OID_TO_CURVE = { + EllipticCurveOID.SECP192R1: SECP192R1, + EllipticCurveOID.SECP224R1: SECP224R1, + EllipticCurveOID.SECP256K1: SECP256K1, + EllipticCurveOID.SECP256R1: SECP256R1, + EllipticCurveOID.SECP384R1: SECP384R1, + EllipticCurveOID.SECP521R1: SECP521R1, + EllipticCurveOID.BRAINPOOLP256R1: BrainpoolP256R1, + EllipticCurveOID.BRAINPOOLP384R1: BrainpoolP384R1, + EllipticCurveOID.BRAINPOOLP512R1: BrainpoolP512R1, +} + + +def get_curve_for_oid(oid: ObjectIdentifier) -> type[EllipticCurve]: + try: + return _OID_TO_CURVE[oid] + except KeyError: + raise LookupError( + "The provided object identifier has no matching elliptic " + "curve class" + ) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py new file mode 100644 index 0000000..70aec5b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py @@ -0,0 +1,116 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class Ed25519PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> Ed25519PublicKey: + return rust_openssl.ed25519.from_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def verify(self, signature: Buffer, data: Buffer) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> Ed25519PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed25519PublicKey: + """ + Returns a deep copy. + """ + + +Ed25519PublicKey.register(rust_openssl.ed25519.Ed25519PublicKey) + + +class Ed25519PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> Ed25519PrivateKey: + return rust_openssl.ed25519.generate_key() + + @classmethod + def from_private_bytes(cls, data: Buffer) -> Ed25519PrivateKey: + return rust_openssl.ed25519.from_private_bytes(data) + + @abc.abstractmethod + def public_key(self) -> Ed25519PublicKey: + """ + The Ed25519PublicKey derived from the private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def sign(self, data: Buffer) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def __copy__(self) -> Ed25519PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed25519PrivateKey: + """ + Returns a deep copy. + """ + + +Ed25519PrivateKey.register(rust_openssl.ed25519.Ed25519PrivateKey) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py new file mode 100644 index 0000000..9ecb478 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py @@ -0,0 +1,143 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class Ed448PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> Ed448PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed448_supported(): + raise UnsupportedAlgorithm( + "ed448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.ed448.from_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def verify(self, signature: Buffer, data: Buffer) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> Ed448PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed448PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "ed448"): + Ed448PublicKey.register(rust_openssl.ed448.Ed448PublicKey) + + +class Ed448PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> Ed448PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed448_supported(): + raise UnsupportedAlgorithm( + "ed448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.ed448.generate_key() + + @classmethod + def from_private_bytes(cls, data: Buffer) -> Ed448PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed448_supported(): + raise UnsupportedAlgorithm( + "ed448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.ed448.from_private_bytes(data) + + @abc.abstractmethod + def public_key(self) -> Ed448PublicKey: + """ + The Ed448PublicKey derived from the private key. + """ + + @abc.abstractmethod + def sign(self, data: Buffer) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def __copy__(self) -> Ed448PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed448PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + Ed448PrivateKey.register(rust_openssl.ed448.Ed448PrivateKey) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/mldsa.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/mldsa.py new file mode 100644 index 0000000..9c52949 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/mldsa.py @@ -0,0 +1,504 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class MLDSA44PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> MLDSA44PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-44 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa44_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 1,312 bytes for MLDSA-44. + """ + + @abc.abstractmethod + def verify( + self, + signature: Buffer, + data: Buffer, + context: Buffer | None = None, + ) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def verify_mu( + self, + signature: Buffer, + mu: Buffer, + ) -> None: + """ + Verify the signature over a precomputed mu (message representative). + + mu must be 64 bytes. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA44PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA44PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA44PublicKey.register(rust_openssl.mldsa.MLDSA44PublicKey) + + +class MLDSA44PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLDSA44PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-44 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.generate_mldsa44_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLDSA44PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-44 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa44_seed_bytes(data) + + @abc.abstractmethod + def public_key(self) -> MLDSA44PublicKey: + """ + The MLDSA44PublicKey derived from the private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + + This method only returns the serialization of the seed form of the + private key, never the expanded one. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + + This method only returns the seed form of the private key (32 bytes). + """ + + @abc.abstractmethod + def sign(self, data: Buffer, context: Buffer | None = None) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def sign_mu(self, mu: Buffer) -> bytes: + """ + Signs a precomputed mu (message representative). + + mu must be 64 bytes and already incorporates the context, so no + context is accepted here. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA44PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA44PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA44PrivateKey.register(rust_openssl.mldsa.MLDSA44PrivateKey) + + +class MLDSA65PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> MLDSA65PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-65 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa65_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 1,952 bytes for MLDSA-65. + """ + + @abc.abstractmethod + def verify( + self, + signature: Buffer, + data: Buffer, + context: Buffer | None = None, + ) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def verify_mu( + self, + signature: Buffer, + mu: Buffer, + ) -> None: + """ + Verify the signature over a precomputed mu (message representative). + + mu must be 64 bytes. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA65PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA65PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA65PublicKey.register(rust_openssl.mldsa.MLDSA65PublicKey) + + +class MLDSA65PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLDSA65PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-65 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.generate_mldsa65_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLDSA65PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-65 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa65_seed_bytes(data) + + @abc.abstractmethod + def public_key(self) -> MLDSA65PublicKey: + """ + The MLDSA65PublicKey derived from the private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + + This method only returns the serialization of the seed form of the + private key, never the expanded one. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + + This method only returns the seed form of the private key (32 bytes). + """ + + @abc.abstractmethod + def sign(self, data: Buffer, context: Buffer | None = None) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def sign_mu(self, mu: Buffer) -> bytes: + """ + Signs a precomputed mu (message representative). + + mu must be 64 bytes and already incorporates the context, so no + context is accepted here. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA65PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA65PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA65PrivateKey.register(rust_openssl.mldsa.MLDSA65PrivateKey) + + +class MLDSA87PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> MLDSA87PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-87 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa87_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 2,592 bytes for MLDSA-87. + """ + + @abc.abstractmethod + def verify( + self, + signature: Buffer, + data: Buffer, + context: Buffer | None = None, + ) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def verify_mu( + self, + signature: Buffer, + mu: Buffer, + ) -> None: + """ + Verify the signature over a precomputed mu (message representative). + + mu must be 64 bytes. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA87PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA87PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA87PublicKey.register(rust_openssl.mldsa.MLDSA87PublicKey) + + +class MLDSA87PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLDSA87PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-87 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.generate_mldsa87_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLDSA87PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-87 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa87_seed_bytes(data) + + @abc.abstractmethod + def public_key(self) -> MLDSA87PublicKey: + """ + The MLDSA87PublicKey derived from the private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + + This method only returns the serialization of the seed form of the + private key, never the expanded one. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + + This method only returns the seed form of the private key (32 bytes). + """ + + @abc.abstractmethod + def sign(self, data: Buffer, context: Buffer | None = None) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def sign_mu(self, mu: Buffer) -> bytes: + """ + Signs a precomputed mu (message representative). + + mu must be 64 bytes and already incorporates the context, so no + context is accepted here. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA87PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA87PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA87PrivateKey.register(rust_openssl.mldsa.MLDSA87PrivateKey) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/mlkem.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/mlkem.py new file mode 100644 index 0000000..64bca11 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/mlkem.py @@ -0,0 +1,278 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class MLKEM768PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: Buffer) -> MLKEM768PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-768 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.from_mlkem768_public_bytes(data) + + @abc.abstractmethod + def encapsulate(self) -> tuple[bytes, bytes]: + """ + Encapsulate: returns (shared_secret, ciphertext). + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 1,184 bytes for ML-KEM-768. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLKEM768PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLKEM768PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mlkem"): + MLKEM768PublicKey.register(rust_openssl.mlkem.MLKEM768PublicKey) + + +class MLKEM768PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLKEM768PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-768 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.generate_mlkem768_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLKEM768PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-768 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.from_mlkem768_seed_bytes(data) + + @abc.abstractmethod + def decapsulate(self, ciphertext: Buffer) -> bytes: + """ + Decapsulate: returns shared_secret. + """ + + @abc.abstractmethod + def public_key(self) -> MLKEM768PublicKey: + """ + The MLKEM768PublicKey derived from this private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key (64-byte seed). + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def __copy__(self) -> MLKEM768PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLKEM768PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mlkem"): + MLKEM768PrivateKey.register(rust_openssl.mlkem.MLKEM768PrivateKey) + + +class MLKEM1024PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: Buffer) -> MLKEM1024PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-1024 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.from_mlkem1024_public_bytes(data) + + @abc.abstractmethod + def encapsulate(self) -> tuple[bytes, bytes]: + """ + Encapsulate: returns (shared_secret, ciphertext). + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 1,568 bytes for ML-KEM-1024. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLKEM1024PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLKEM1024PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mlkem"): + MLKEM1024PublicKey.register(rust_openssl.mlkem.MLKEM1024PublicKey) + + +class MLKEM1024PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLKEM1024PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-1024 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.generate_mlkem1024_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLKEM1024PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-1024 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.from_mlkem1024_seed_bytes(data) + + @abc.abstractmethod + def decapsulate(self, ciphertext: Buffer) -> bytes: + """ + Decapsulate: returns shared_secret. + """ + + @abc.abstractmethod + def public_key(self) -> MLKEM1024PublicKey: + """ + The MLKEM1024PublicKey derived from this private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key (64-byte seed). + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def __copy__(self) -> MLKEM1024PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLKEM1024PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mlkem"): + MLKEM1024PrivateKey.register(rust_openssl.mlkem.MLKEM1024PrivateKey) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py new file mode 100644 index 0000000..5121a28 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py @@ -0,0 +1,111 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives._asymmetric import ( + AsymmetricPadding as AsymmetricPadding, +) +from cryptography.hazmat.primitives.asymmetric import rsa + + +class PKCS1v15(AsymmetricPadding): + name = "EMSA-PKCS1-v1_5" + + +class _MaxLength: + "Sentinel value for `MAX_LENGTH`." + + +class _Auto: + "Sentinel value for `AUTO`." + + +class _DigestLength: + "Sentinel value for `DIGEST_LENGTH`." + + +class PSS(AsymmetricPadding): + MAX_LENGTH = _MaxLength() + AUTO = _Auto() + DIGEST_LENGTH = _DigestLength() + name = "EMSA-PSS" + _salt_length: int | _MaxLength | _Auto | _DigestLength + + def __init__( + self, + mgf: MGF, + salt_length: int | _MaxLength | _Auto | _DigestLength, + ) -> None: + self._mgf = mgf + + if not isinstance( + salt_length, (int, _MaxLength, _Auto, _DigestLength) + ): + raise TypeError( + "salt_length must be an integer, MAX_LENGTH, " + "DIGEST_LENGTH, or AUTO" + ) + + if isinstance(salt_length, int) and salt_length < 0: + raise ValueError("salt_length must be zero or greater.") + + self._salt_length = salt_length + + @property + def mgf(self) -> MGF: + return self._mgf + + +class OAEP(AsymmetricPadding): + name = "EME-OAEP" + + def __init__( + self, + mgf: MGF, + algorithm: hashes.HashAlgorithm, + label: bytes | None, + ): + if not isinstance(algorithm, hashes.HashAlgorithm): + raise TypeError("Expected instance of hashes.HashAlgorithm.") + + self._mgf = mgf + self._algorithm = algorithm + self._label = label + + @property + def algorithm(self) -> hashes.HashAlgorithm: + return self._algorithm + + @property + def mgf(self) -> MGF: + return self._mgf + + +class MGF(metaclass=abc.ABCMeta): + _algorithm: hashes.HashAlgorithm + + +class MGF1(MGF): + def __init__(self, algorithm: hashes.HashAlgorithm): + if not isinstance(algorithm, hashes.HashAlgorithm): + raise TypeError("Expected instance of hashes.HashAlgorithm.") + + self._algorithm = algorithm + + +def calculate_max_pss_salt_length( + key: rsa.RSAPrivateKey | rsa.RSAPublicKey, + hash_algorithm: hashes.HashAlgorithm, +) -> int: + if not isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)): + raise TypeError("key must be an RSA public or private key") + # bit length - 1 per RFC 3447 + emlen = (key.key_size + 6) // 8 + salt_length = emlen - hash_algorithm.digest_size - 2 + assert salt_length >= 0 + return salt_length diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py new file mode 100644 index 0000000..d730ceb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py @@ -0,0 +1,295 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import random +import typing +from math import gcd, lcm + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization, hashes +from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils + + +class RSAPrivateKey(metaclass=abc.ABCMeta): + @abc.abstractmethod + def decrypt(self, ciphertext: bytes, padding: AsymmetricPadding) -> bytes: + """ + Decrypts the provided ciphertext. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the public modulus. + """ + + @abc.abstractmethod + def public_key(self) -> RSAPublicKey: + """ + The RSAPublicKey associated with this private key. + """ + + @abc.abstractmethod + def sign( + self, + data: bytes, + padding: AsymmetricPadding, + algorithm: asym_utils.Prehashed + | hashes.HashAlgorithm + | asym_utils.NoDigestInfo, + ) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def private_numbers(self) -> RSAPrivateNumbers: + """ + Returns an RSAPrivateNumbers. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __copy__(self) -> RSAPrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> RSAPrivateKey: + """ + Returns a deep copy. + """ + + +RSAPrivateKeyWithSerialization = RSAPrivateKey +RSAPrivateKey.register(rust_openssl.rsa.RSAPrivateKey) + + +class RSAPublicKey(metaclass=abc.ABCMeta): + @abc.abstractmethod + def encrypt(self, plaintext: bytes, padding: AsymmetricPadding) -> bytes: + """ + Encrypts the given plaintext. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the public modulus. + """ + + @abc.abstractmethod + def public_numbers(self) -> RSAPublicNumbers: + """ + Returns an RSAPublicNumbers + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def verify( + self, + signature: bytes, + data: bytes, + padding: AsymmetricPadding, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + ) -> None: + """ + Verifies the signature of the data. + """ + + @abc.abstractmethod + def recover_data_from_signature( + self, + signature: bytes, + padding: AsymmetricPadding, + algorithm: hashes.HashAlgorithm | asym_utils.NoDigestInfo | None, + ) -> bytes: + """ + Recovers the original data from the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> RSAPublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> RSAPublicKey: + """ + Returns a deep copy. + """ + + +RSAPublicKeyWithSerialization = RSAPublicKey +RSAPublicKey.register(rust_openssl.rsa.RSAPublicKey) + +RSAPrivateNumbers = rust_openssl.rsa.RSAPrivateNumbers +RSAPublicNumbers = rust_openssl.rsa.RSAPublicNumbers + + +def generate_private_key( + public_exponent: int, + key_size: int, + backend: typing.Any = None, +) -> RSAPrivateKey: + _verify_rsa_parameters(public_exponent, key_size) + return rust_openssl.rsa.generate_private_key(public_exponent, key_size) + + +def _verify_rsa_parameters(public_exponent: int, key_size: int) -> None: + if public_exponent not in (3, 65537): + raise ValueError( + "public_exponent must be either 3 (for legacy compatibility) or " + "65537. Almost everyone should choose 65537 here!" + ) + + if key_size < 1024: + raise ValueError("key_size must be at least 1024-bits.") + + +def _modinv(e: int, m: int) -> int: + """ + Modular Multiplicative Inverse. Returns x such that: (x*e) mod m == 1 + """ + x1, x2 = 1, 0 + a, b = e, m + while b > 0: + q, r = divmod(a, b) + xn = x1 - q * x2 + a, b, x1, x2 = b, r, x2, xn + return x1 % m + + +def rsa_crt_iqmp(p: int, q: int) -> int: + """ + Compute the CRT (q ** -1) % p value from RSA primes p and q. + """ + if p <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") + return _modinv(q, p) + + +def rsa_crt_dmp1(private_exponent: int, p: int) -> int: + """ + Compute the CRT private_exponent % (p - 1) value from the RSA + private_exponent (d) and p. + """ + if private_exponent <= 1 or p <= 1: + raise ValueError("Values can't be <= 1") + return private_exponent % (p - 1) + + +def rsa_crt_dmq1(private_exponent: int, q: int) -> int: + """ + Compute the CRT private_exponent % (q - 1) value from the RSA + private_exponent (d) and q. + """ + if private_exponent <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") + return private_exponent % (q - 1) + + +def rsa_recover_private_exponent(e: int, p: int, q: int) -> int: + """ + Compute the RSA private_exponent (d) given the public exponent (e) + and the RSA primes p and q. + + This uses the Carmichael totient function to generate the + smallest possible working value of the private exponent. + """ + # This lambda_n is the Carmichael totient function. + # The original RSA paper uses the Euler totient function + # here: phi_n = (p - 1) * (q - 1) + # Either version of the private exponent will work, but the + # one generated by the older formulation may be larger + # than necessary. (lambda_n always divides phi_n) + if e <= 1 or p <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") + return _modinv(e, lcm(p - 1, q - 1)) + + +# Controls the number of iterations rsa_recover_prime_factors will perform +# to obtain the prime factors. +_MAX_RECOVERY_ATTEMPTS = 500 + + +def rsa_recover_prime_factors(n: int, e: int, d: int) -> tuple[int, int]: + """ + Compute factors p and q from the private exponent d. We assume that n has + no more than two factors. This function is adapted from code in PyCrypto. + """ + # reject invalid values early + if d <= 1 or e <= 1: + raise ValueError("d, e can't be <= 1") + if 17 != pow(17, e * d, n): + raise ValueError("n, d, e don't match") + # See 8.2.2(i) in Handbook of Applied Cryptography. + ktot = d * e - 1 + # The quantity d*e-1 is a multiple of phi(n), even, + # and can be represented as t*2^s. + t = ktot + while t % 2 == 0: + t = t // 2 + # Cycle through all multiplicative inverses in Zn. + # The algorithm is non-deterministic, but there is a 50% chance + # any candidate a leads to successful factoring. + # See "Digitalized Signatures and Public Key Functions as Intractable + # as Factorization", M. Rabin, 1979 + spotted = False + tries = 0 + while not spotted and tries < _MAX_RECOVERY_ATTEMPTS: + a = random.randint(2, n - 1) + tries += 1 + k = t + # Cycle through all values a^{t*2^i}=a^k + while k < ktot: + cand = pow(a, k, n) + # Check if a^k is a non-trivial root of unity (mod n) + if cand != 1 and cand != (n - 1) and pow(cand, 2, n) == 1: + # We have found a number such that (cand-1)(cand+1)=0 (mod n). + # Either of the terms divides n. + p = gcd(cand + 1, n) + spotted = True + break + k *= 2 + if not spotted: + raise ValueError("Unable to compute factors p and q from exponent d.") + # Found ! + q, r = divmod(n, p) + assert r == 0 + p, q = sorted((p, q), reverse=True) + return (p, q) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/types.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/types.py new file mode 100644 index 0000000..6555e35 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/types.py @@ -0,0 +1,91 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.primitives.asymmetric import ( + dh, + dsa, + ec, + ed448, + ed25519, + mldsa, + mlkem, + rsa, + x448, + x25519, +) + +# Every asymmetric key type +PublicKeyTypes = typing.Union[ + dh.DHPublicKey, + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + mldsa.MLDSA44PublicKey, + mldsa.MLDSA65PublicKey, + mldsa.MLDSA87PublicKey, + mlkem.MLKEM768PublicKey, + mlkem.MLKEM1024PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, +] +# Every asymmetric key type +PrivateKeyTypes = typing.Union[ + dh.DHPrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + mldsa.MLDSA44PrivateKey, + mldsa.MLDSA65PrivateKey, + mldsa.MLDSA87PrivateKey, + mlkem.MLKEM768PrivateKey, + mlkem.MLKEM1024PrivateKey, + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + x25519.X25519PrivateKey, + x448.X448PrivateKey, +] +# Just the key types we allow to be used for x509 signing. This mirrors +# the certificate public key types +CertificateIssuerPrivateKeyTypes = typing.Union[ + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + mldsa.MLDSA44PrivateKey, + mldsa.MLDSA65PrivateKey, + mldsa.MLDSA87PrivateKey, +] +# Just the key types we allow to be used for x509 signing. This mirrors +# the certificate private key types +CertificateIssuerPublicKeyTypes = typing.Union[ + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + mldsa.MLDSA44PublicKey, + mldsa.MLDSA65PublicKey, + mldsa.MLDSA87PublicKey, +] +# This type removes DHPublicKey. x448/x25519 can be a public key +# but cannot be used in signing so they are allowed here. +CertificatePublicKeyTypes = typing.Union[ + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + mldsa.MLDSA44PublicKey, + mldsa.MLDSA65PublicKey, + mldsa.MLDSA87PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, +] diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py new file mode 100644 index 0000000..c01c342 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py @@ -0,0 +1,28 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import asn1 +from cryptography.hazmat.primitives import hashes + +decode_dss_signature = asn1.decode_dss_signature +encode_dss_signature = asn1.encode_dss_signature + + +class NoDigestInfo: + pass + + +class Prehashed: + def __init__(self, algorithm: hashes.HashAlgorithm): + if not isinstance(algorithm, hashes.HashAlgorithm): + raise TypeError("Expected instance of HashAlgorithm.") + + self._algorithm = algorithm + self._digest_size = algorithm.digest_size + + @property + def digest_size(self) -> int: + return self._digest_size diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py new file mode 100644 index 0000000..7498998 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py @@ -0,0 +1,134 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class X25519PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> X25519PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x25519_supported(): + raise UnsupportedAlgorithm( + "X25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x25519.from_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> X25519PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X25519PublicKey: + """ + Returns a deep copy. + """ + + +X25519PublicKey.register(rust_openssl.x25519.X25519PublicKey) + + +class X25519PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> X25519PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x25519_supported(): + raise UnsupportedAlgorithm( + "X25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + return rust_openssl.x25519.generate_key() + + @classmethod + def from_private_bytes(cls, data: Buffer) -> X25519PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x25519_supported(): + raise UnsupportedAlgorithm( + "X25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x25519.from_private_bytes(data) + + @abc.abstractmethod + def public_key(self) -> X25519PublicKey: + """ + Returns the public key associated with this private key + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def exchange(self, peer_public_key: X25519PublicKey) -> bytes: + """ + Performs a key exchange operation using the provided peer's public key. + """ + + @abc.abstractmethod + def __copy__(self) -> X25519PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X25519PrivateKey: + """ + Returns a deep copy. + """ + + +X25519PrivateKey.register(rust_openssl.x25519.X25519PrivateKey) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py new file mode 100644 index 0000000..b9dc826 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py @@ -0,0 +1,137 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class X448PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> X448PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x448_supported(): + raise UnsupportedAlgorithm( + "X448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x448.from_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> X448PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X448PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + X448PublicKey.register(rust_openssl.x448.X448PublicKey) + + +class X448PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> X448PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x448_supported(): + raise UnsupportedAlgorithm( + "X448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x448.generate_key() + + @classmethod + def from_private_bytes(cls, data: Buffer) -> X448PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x448_supported(): + raise UnsupportedAlgorithm( + "X448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x448.from_private_bytes(data) + + @abc.abstractmethod + def public_key(self) -> X448PublicKey: + """ + Returns the public key associated with this private key + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def exchange(self, peer_public_key: X448PublicKey) -> bytes: + """ + Performs a key exchange operation using the provided peer's public key. + """ + + @abc.abstractmethod + def __copy__(self) -> X448PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X448PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + X448PrivateKey.register(rust_openssl.x448.X448PrivateKey) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py new file mode 100644 index 0000000..10c15d0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py @@ -0,0 +1,27 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) +from cryptography.hazmat.primitives.ciphers.base import ( + AEADCipherContext, + AEADDecryptionContext, + AEADEncryptionContext, + Cipher, + CipherContext, +) + +__all__ = [ + "AEADCipherContext", + "AEADDecryptionContext", + "AEADEncryptionContext", + "BlockCipherAlgorithm", + "Cipher", + "CipherAlgorithm", + "CipherContext", +] diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f252f899cd0b19a099b3bad15fe3e4ed376944cf GIT binary patch literal 638 zcmah_yKdVs6r~=PWXDDuAldo@LQrvNQ6NB2#I>_#$;O4CEyiL@iUdhHasHrtzra)b zOI$Pc7dl0h5~TK$I~?45fP3yamrN!j(AMr(arZj};K>jFSIdD*00J{_n-Y`(2O>a0 z;QNq=B0`afQQXZDABY4cB1NglP$q_GC`M=$fE6g?U4V|t!41fhzg|BN+!3j3X^CaB zHhJhyesH;5&zP#Hp7NE{%vQpEI3V(YJDy%m=RG}>wWSZ%oqB3cmwKzb+#Y>ZAJR#` z>?V66d8!AkF`alwJwzTd53z?~3)lJBjWE7#Y@;d0+P??E?tolrqN;6Ckw-ynp)?cB zvJEu_UUs3#Yp7n>YofDvR{Kp;EQq0p_Bvy*hFN`2bct^nr`R7TVX>k026DFe_7$qFtz`YBIERK=`dN|XnyjeV n3k&ndVf=j|vqmeG>`qx2aeR7yf{ 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 L;C=N5c;bHnH59Ni literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..006aa4901634410405033a22e16f53457a731eca GIT binary patch literal 5581 zcmb_gTW=f372X@Kq9p2SNxrSyI5AV3v|U-Y(InNyYU&3wh9tYrw!n798Hp<`FPUA+ z)q+Ke$SC^I0)1%Ehq^%9H~po3D$pnWgCZ#EerJ}VD4BFpCtS?znKL_Q&dmAdoHKNW zhqDTP|M*jJr*TeE{zZ-6UkZ&yMN$37s-iH3sh(0(Emb92^R$|7>5|qxqn5A|wWO7l zZNp2|(pFm13D6lUBk3gQtd*5?${VWXtXyr_8kX&}H&Pq5MkSpAowxFm&VnAZ#w0xi zdfXb9bPn`{H6iI?(393=ZOWReO@_g(-w`S2EW8-L# z^9i))(4JtEXixG{w9lhG#ir4o=HqBzK>Hk6aco?+0q zM-9gDo~8HCAbqJ7RCzscD^i&aXB(XtjyoUL-N1D`HUU|E{S@TWu>gG{Fp7Sx|35 z7dl>1zO%~B{eb(PyUU|#yYFN$so`^POO8HN#2iL{_1jXlQR5}Ix$Ad8QrdL=>T_p@ z^Ptpfx{&qU5zO9lJ#KG0K4+!k9u8}J)Vr?Ts8bH7v( z`^})SEu3a`zf^U?niG_o!mYvfd(m74_h9*R${HLV)jh@q)@T@ZgTY8TP_|DcwoS%zg_YHWz*fa??+ z2EIlj{n^I4n1U<-HxbbB8w^ykS1(Wlt*sv5u40NU+s9ylW0IwmzYm`L+BaZT@ z!Yfj?S!?-$xyj92x9{E9bOYbKc5A_ua4r-Q666A5MTvBr_$d3-@mhRUh=z!gwiHm% zV*8Tdp3Ri|NXEE_;-^soQd&+;Yhexx?7~W1M9()tl(>u!3#zz*m$*WewAYEzNP$I^ zV?nm4MpG54m2?r7z|rX+q#or+MX(| z2g!J&J6jz7Vx!8zsW1^R>$R=f`8U>1*URLOiWfa;j&HO zo&???OVc3I?ar;+ul3Uy^cPZ5*7a##2OeBZU^lE}ye#>~XHjNjzZt{9N>fzu-H?mx z`0}uW3fjZ7hN6@80L3R5D(bkZsoEy+L)BHP2xj74 zsw4*A>v@Hcf;>q9|IJ!Lo}|J?RPr1s+jCHF)*p z8gTe={11=-1n{9d8j6m#%$L`d*dZB08hV^0$~8+wQUY^!^@Ig7aA);dHJl^0-WKX| zvVr(oz(mhzvNI8k_^+WX0p=p1?3W;Vq0UsxU>e{)#S)ZlvGhxwV%CcU@rGPmn3wMR*3H}VCPnQ+ z@rV{1o67i7*F=rq%zxNAxU-?rZutIVdtj7t&AB zIOU+!0QreeX`dPxJBb5L<|s*~%_+Yo*98ayylX+4Xh2p2;Mal-)7u&#Ys8S1Fin)h zt5C2vkJzN!s2N`z%##G_Lnslx*9TD*c^#&_vepok)HroBOvUIb7P7I^yp7Q!Llvz` zkQ=bZpOn|1JbwJi+Q#Ywd*$KdpRTS&Svh;0TuAG6aR_f9FBdmyX#V6gTSD?I%E(*( z5k=nb6g7(nsfTL(*D$gYaoJbl99gEnPo}#cxu(KUzkqK|+K-l=*{kK1wND?D^2?uY ztgc%llDo9jY4_wR1h@EpGSG|P$0yZeg^?xDlR*0SpULx-xX9#%z6rm?p9W^t@v-6X z7PZD6XJ*had+&k8_#Rkfydrqh4T_yxU@^W0k^o8wpSzw%W)nP?vLza|zH(0Plcyyi zQ#I%B7jNPbfJtgHQI?Hwu+D28aR996?qjZig8l}xbc4lgLnvflj~aUERC3yZw5i)%EN z@@ug`6`hzU%Xm|8{71%_Jk8d~gD&G?eg1Bb@9172qVxyxe-9s#tMbdJ=t`SMY@#P` g#OKe{Cl&j0`b literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/aead.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/aead.py new file mode 100644 index 0000000..c8a582d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/aead.py @@ -0,0 +1,23 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +__all__ = [ + "AESCCM", + "AESGCM", + "AESGCMSIV", + "AESOCB3", + "AESSIV", + "ChaCha20Poly1305", +] + +AESGCM = rust_openssl.aead.AESGCM +ChaCha20Poly1305 = rust_openssl.aead.ChaCha20Poly1305 +AESCCM = rust_openssl.aead.AESCCM +AESSIV = rust_openssl.aead.AESSIV +AESOCB3 = rust_openssl.aead.AESOCB3 +AESGCMSIV = rust_openssl.aead.AESGCMSIV diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py new file mode 100644 index 0000000..6b20dd5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py @@ -0,0 +1,138 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + ARC4 as ARC4, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + CAST5 as CAST5, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + IDEA as IDEA, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + SEED as SEED, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + Blowfish as Blowfish, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + Camellia as Camellia, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + TripleDES as TripleDES, +) +from cryptography.hazmat.primitives._cipheralgorithm import _verify_key_size +from cryptography.hazmat.primitives.ciphers import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) + + +class AES(BlockCipherAlgorithm): + name = "AES" + block_size = 128 + # 512 added to support AES-256-XTS, which uses 512-bit keys + key_sizes = frozenset([128, 192, 256, 512]) + + def __init__(self, key: utils.Buffer): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class AES128(BlockCipherAlgorithm): + name = "AES" + block_size = 128 + key_sizes = frozenset([128]) + key_size = 128 + + def __init__(self, key: utils.Buffer): + self.key = _verify_key_size(self, key) + + +class AES256(BlockCipherAlgorithm): + name = "AES" + block_size = 128 + key_sizes = frozenset([256]) + key_size = 256 + + def __init__(self, key: utils.Buffer): + self.key = _verify_key_size(self, key) + + +utils.deprecated( + Camellia, + __name__, + "Camellia has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.Camellia and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 49.0.0.", + utils.DeprecatedIn43, + name="Camellia", +) + + +utils.deprecated( + ARC4, + __name__, + "ARC4 has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.", + utils.DeprecatedIn43, + name="ARC4", +) + + +utils.deprecated( + TripleDES, + __name__, + "TripleDES has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.", + utils.DeprecatedIn43, + name="TripleDES", +) + + +class ChaCha20(CipherAlgorithm): + name = "ChaCha20" + key_sizes = frozenset([256]) + + def __init__(self, key: utils.Buffer, nonce: utils.Buffer): + self.key = _verify_key_size(self, key) + utils._check_byteslike("nonce", nonce) + + if len(nonce) != 16: + raise ValueError("nonce must be 128-bits (16 bytes)") + + self._nonce = nonce + + @property + def nonce(self) -> utils.Buffer: + return self._nonce + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class SM4(BlockCipherAlgorithm): + name = "SM4" + block_size = 128 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/base.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/base.py new file mode 100644 index 0000000..24fceea --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/base.py @@ -0,0 +1,146 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import typing + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives._cipheralgorithm import CipherAlgorithm +from cryptography.hazmat.primitives.ciphers import modes +from cryptography.utils import Buffer + + +class CipherContext(metaclass=abc.ABCMeta): + @abc.abstractmethod + def update(self, data: Buffer) -> bytes: + """ + Processes the provided bytes through the cipher and returns the results + as bytes. + """ + + @abc.abstractmethod + def update_into(self, data: Buffer, buf: Buffer) -> int: + """ + Processes the provided bytes and writes the resulting data into the + provided buffer. Returns the number of bytes written. + """ + + @abc.abstractmethod + def finalize(self) -> bytes: + """ + Returns the results of processing the final block as bytes. + """ + + @abc.abstractmethod + def reset_nonce(self, nonce: bytes) -> None: + """ + Resets the nonce for the cipher context to the provided value. + Raises an exception if it does not support reset or if the + provided nonce does not have a valid length. + """ + + +class AEADCipherContext(CipherContext, metaclass=abc.ABCMeta): + @abc.abstractmethod + def authenticate_additional_data(self, data: Buffer) -> None: + """ + Authenticates the provided bytes. + """ + + +class AEADDecryptionContext(AEADCipherContext, metaclass=abc.ABCMeta): + @abc.abstractmethod + def finalize_with_tag(self, tag: bytes) -> bytes: + """ + Returns the results of processing the final block as bytes and allows + delayed passing of the authentication tag. + """ + + +class AEADEncryptionContext(AEADCipherContext, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tag(self) -> bytes: + """ + Returns tag bytes. This is only available after encryption is + finalized. + """ + + +Mode = typing.TypeVar( + "Mode", bound=typing.Optional[modes.Mode], covariant=True +) + + +class Cipher(typing.Generic[Mode]): + def __init__( + self, + algorithm: CipherAlgorithm, + mode: Mode, + backend: typing.Any = None, + ) -> None: + if not isinstance(algorithm, CipherAlgorithm): + raise TypeError("Expected interface of CipherAlgorithm.") + + if mode is not None: + # mypy needs this assert to narrow the type from our generic + # type. Maybe it won't some time in the future. + assert isinstance(mode, modes.Mode) + mode.validate_for_algorithm(algorithm) + + self.algorithm = algorithm + self.mode = mode + + @typing.overload + def encryptor( + self: Cipher[modes.ModeWithAuthenticationTag], + ) -> AEADEncryptionContext: ... + + @typing.overload + def encryptor( + self: _CIPHER_TYPE, + ) -> CipherContext: ... + + def encryptor(self): + if isinstance(self.mode, modes.ModeWithAuthenticationTag): + if self.mode.tag is not None: + raise ValueError( + "Authentication tag must be None when encrypting." + ) + + return rust_openssl.ciphers.create_encryption_ctx( + self.algorithm, self.mode + ) + + @typing.overload + def decryptor( + self: Cipher[modes.ModeWithAuthenticationTag], + ) -> AEADDecryptionContext: ... + + @typing.overload + def decryptor( + self: _CIPHER_TYPE, + ) -> CipherContext: ... + + def decryptor(self): + return rust_openssl.ciphers.create_decryption_ctx( + self.algorithm, self.mode + ) + + +_CIPHER_TYPE = Cipher[ + typing.Union[ + modes.ModeWithNonce, + modes.ModeWithTweak, + modes.ECB, + modes.ModeWithInitializationVector, + None, + ] +] + +CipherContext.register(rust_openssl.ciphers.CipherContext) +AEADEncryptionContext.register(rust_openssl.ciphers.AEADEncryptionContext) +AEADDecryptionContext.register(rust_openssl.ciphers.AEADDecryptionContext) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/modes.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/modes.py new file mode 100644 index 0000000..ddf0170 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/ciphers/modes.py @@ -0,0 +1,192 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.decrepit.ciphers.modes import CFB as CFB +from cryptography.hazmat.decrepit.ciphers.modes import CFB8 as CFB8 +from cryptography.hazmat.decrepit.ciphers.modes import OFB as OFB +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) +from cryptography.hazmat.primitives._modes import ( + Mode as Mode, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithAuthenticationTag as ModeWithAuthenticationTag, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithInitializationVector as ModeWithInitializationVector, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithNonce as ModeWithNonce, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithTweak as ModeWithTweak, +) +from cryptography.hazmat.primitives._modes import ( + _check_aes_key_length, + _check_iv_and_key_length, + _check_nonce_length, +) +from cryptography.hazmat.primitives.ciphers import algorithms + + +class CBC(ModeWithInitializationVector): + name = "CBC" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class XTS(ModeWithTweak): + name = "XTS" + + def __init__(self, tweak: utils.Buffer): + utils._check_byteslike("tweak", tweak) + + if len(tweak) != 16: + raise ValueError("tweak must be 128-bits (16 bytes)") + + self._tweak = tweak + + @property + def tweak(self) -> utils.Buffer: + return self._tweak + + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + if isinstance(algorithm, (algorithms.AES128, algorithms.AES256)): + raise TypeError( + "The AES128 and AES256 classes do not support XTS, please use " + "the standard AES class instead." + ) + + if algorithm.key_size not in (256, 512): + raise ValueError( + "The XTS specification requires a 256-bit key for AES-128-XTS" + " and 512-bit key for AES-256-XTS" + ) + + +class ECB(Mode): + name = "ECB" + + validate_for_algorithm = _check_aes_key_length + + +class CTR(ModeWithNonce): + name = "CTR" + + def __init__(self, nonce: utils.Buffer): + utils._check_byteslike("nonce", nonce) + self._nonce = nonce + + @property + def nonce(self) -> utils.Buffer: + return self._nonce + + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + _check_aes_key_length(self, algorithm) + _check_nonce_length(self.nonce, self.name, algorithm) + + +class GCM(ModeWithInitializationVector, ModeWithAuthenticationTag): + name = "GCM" + _MAX_ENCRYPTED_BYTES = (2**39 - 256) // 8 + _MAX_AAD_BYTES = (2**64) // 8 + + def __init__( + self, + initialization_vector: utils.Buffer, + tag: bytes | None = None, + min_tag_length: int = 16, + ): + # OpenSSL 3.0.0 constrains GCM IVs to [64, 1024] bits inclusive + # This is a sane limit anyway so we'll enforce it here. + utils._check_byteslike("initialization_vector", initialization_vector) + if len(initialization_vector) < 8 or len(initialization_vector) > 128: + raise ValueError( + "initialization_vector must be between 8 and 128 bytes (64 " + "and 1024 bits)." + ) + self._initialization_vector = initialization_vector + if min_tag_length < 4: + raise ValueError("min_tag_length must be >= 4") + if tag is not None: + utils._check_bytes("tag", tag) + if len(tag) < min_tag_length: + raise ValueError( + f"Authentication tag must be {min_tag_length} bytes or " + "longer." + ) + self._tag = tag + self._min_tag_length = min_tag_length + + @property + def tag(self) -> bytes | None: + return self._tag + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + _check_aes_key_length(self, algorithm) + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + "GCM requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + block_size_bytes = algorithm.block_size // 8 + if self._tag is not None and len(self._tag) > block_size_bytes: + raise ValueError( + f"Authentication tag cannot be more than {block_size_bytes} " + "bytes." + ) + + +utils.deprecated( + OFB, + __name__, + "OFB has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.OFB and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="OFB", +) + + +utils.deprecated( + CFB, + __name__, + "CFB has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.CFB and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="CFB", +) + + +utils.deprecated( + CFB8, + __name__, + "CFB8 has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.CFB8 and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="CFB8", +) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/cmac.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/cmac.py new file mode 100644 index 0000000..2c67ce2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/cmac.py @@ -0,0 +1,10 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +__all__ = ["CMAC"] +CMAC = rust_openssl.cmac.CMAC diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/constant_time.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/constant_time.py new file mode 100644 index 0000000..3975c71 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/constant_time.py @@ -0,0 +1,14 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import hmac + + +def bytes_eq(a: bytes, b: bytes) -> bool: + if not isinstance(a, bytes) or not isinstance(b, bytes): + raise TypeError("a and b must be bytes.") + + return hmac.compare_digest(a, b) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hashes.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hashes.py new file mode 100644 index 0000000..4b55ec3 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hashes.py @@ -0,0 +1,246 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.utils import Buffer + +__all__ = [ + "MD5", + "SHA1", + "SHA3_224", + "SHA3_256", + "SHA3_384", + "SHA3_512", + "SHA224", + "SHA256", + "SHA384", + "SHA512", + "SHA512_224", + "SHA512_256", + "SHAKE128", + "SHAKE256", + "SM3", + "BLAKE2b", + "BLAKE2s", + "ExtendableOutputFunction", + "Hash", + "HashAlgorithm", + "HashContext", + "XOFHash", +] + + +class HashAlgorithm(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this algorithm (e.g. "sha256", "md5"). + """ + + @property + @abc.abstractmethod + def digest_size(self) -> int: + """ + The size of the resulting digest in bytes. + """ + + @property + @abc.abstractmethod + def block_size(self) -> int | None: + """ + The internal block size of the hash function, or None if the hash + function does not use blocks internally (e.g. SHA3). + """ + + +class HashContext(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def algorithm(self) -> HashAlgorithm: + """ + A HashAlgorithm that will be used by this context. + """ + + @abc.abstractmethod + def update(self, data: Buffer) -> None: + """ + Processes the provided bytes through the hash. + """ + + @abc.abstractmethod + def finalize(self) -> bytes: + """ + Finalizes the hash context and returns the hash digest as bytes. + """ + + @abc.abstractmethod + def copy(self) -> HashContext: + """ + Return a HashContext that is a copy of the current context. + """ + + +Hash = rust_openssl.hashes.Hash +HashContext.register(Hash) + +XOFHash = rust_openssl.hashes.XOFHash + + +class ExtendableOutputFunction(metaclass=abc.ABCMeta): + """ + An interface for extendable output functions. + """ + + +class SHA1(HashAlgorithm): + name = "sha1" + digest_size = 20 + block_size = 64 + + +class SHA512_224(HashAlgorithm): # noqa: N801 + name = "sha512-224" + digest_size = 28 + block_size = 128 + + +class SHA512_256(HashAlgorithm): # noqa: N801 + name = "sha512-256" + digest_size = 32 + block_size = 128 + + +class SHA224(HashAlgorithm): + name = "sha224" + digest_size = 28 + block_size = 64 + + +class SHA256(HashAlgorithm): + name = "sha256" + digest_size = 32 + block_size = 64 + + +class SHA384(HashAlgorithm): + name = "sha384" + digest_size = 48 + block_size = 128 + + +class SHA512(HashAlgorithm): + name = "sha512" + digest_size = 64 + block_size = 128 + + +class SHA3_224(HashAlgorithm): # noqa: N801 + name = "sha3-224" + digest_size = 28 + block_size = None + + +class SHA3_256(HashAlgorithm): # noqa: N801 + name = "sha3-256" + digest_size = 32 + block_size = None + + +class SHA3_384(HashAlgorithm): # noqa: N801 + name = "sha3-384" + digest_size = 48 + block_size = None + + +class SHA3_512(HashAlgorithm): # noqa: N801 + name = "sha3-512" + digest_size = 64 + block_size = None + + +class SHAKE128(HashAlgorithm, ExtendableOutputFunction): + name = "shake128" + block_size = None + + def __init__(self, digest_size: int): + if not isinstance(digest_size, int): + raise TypeError("digest_size must be an integer") + + if digest_size < 1: + raise ValueError("digest_size must be a positive integer") + + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size + + +class SHAKE256(HashAlgorithm, ExtendableOutputFunction): + name = "shake256" + block_size = None + + def __init__(self, digest_size: int): + if not isinstance(digest_size, int): + raise TypeError("digest_size must be an integer") + + if digest_size < 1: + raise ValueError("digest_size must be a positive integer") + + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size + + +class MD5(HashAlgorithm): + name = "md5" + digest_size = 16 + block_size = 64 + + +class BLAKE2b(HashAlgorithm): + name = "blake2b" + _max_digest_size = 64 + _min_digest_size = 1 + block_size = 128 + + def __init__(self, digest_size: int): + if digest_size != 64: + raise ValueError("Digest size must be 64") + + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size + + +class BLAKE2s(HashAlgorithm): + name = "blake2s" + block_size = 64 + _max_digest_size = 32 + _min_digest_size = 1 + + def __init__(self, digest_size: int): + if digest_size != 32: + raise ValueError("Digest size must be 32") + + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size + + +class SM3(HashAlgorithm): + name = "sm3" + digest_size = 32 + block_size = 64 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hmac.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hmac.py new file mode 100644 index 0000000..a9442d5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hmac.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import hashes + +__all__ = ["HMAC"] + +HMAC = rust_openssl.hmac.HMAC +hashes.HashContext.register(HMAC) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hpke.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hpke.py new file mode 100644 index 0000000..c802808 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/hpke.py @@ -0,0 +1,27 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +AEAD = rust_openssl.hpke.AEAD +KDF = rust_openssl.hpke.KDF +KEM = rust_openssl.hpke.KEM +MLKEM768X25519PrivateKey = rust_openssl.hpke.MLKEM768X25519PrivateKey +MLKEM768X25519PublicKey = rust_openssl.hpke.MLKEM768X25519PublicKey +MLKEM1024P384PrivateKey = rust_openssl.hpke.MLKEM1024P384PrivateKey +MLKEM1024P384PublicKey = rust_openssl.hpke.MLKEM1024P384PublicKey +Suite = rust_openssl.hpke.Suite + +__all__ = [ + "AEAD", + "KDF", + "KEM", + "MLKEM768X25519PrivateKey", + "MLKEM768X25519PublicKey", + "MLKEM1024P384PrivateKey", + "MLKEM1024P384PublicKey", + "Suite", +] diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__init__.py new file mode 100644 index 0000000..26c45bd --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__init__.py @@ -0,0 +1,32 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.utils import Buffer + + +class KeyDerivationFunction(metaclass=abc.ABCMeta): + @abc.abstractmethod + def derive(self, key_material: bytes) -> bytes: + """ + Deterministically generates and returns a new key based on the existing + key material. + """ + + @abc.abstractmethod + def derive_into(self, key_material: bytes, buffer: Buffer) -> None: + """ + Deterministically generates a new key based on the existing key + material and stores it in the provided buffer. + """ + + @abc.abstractmethod + def verify(self, key_material: bytes, expected_key: bytes) -> None: + """ + Checks whether the key generated by the key material matches the + expected derived key. Raises an exception if they do not match. + """ diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..791b682e14cef4b25cb52eba7dd14aa89d0e7007 GIT binary patch literal 1516 zcma)6J8u&~5WbhsjvoOt;C+%wwXJzGj;IajorkXdbai2;vVl@TD$|!X@~ot-Ko!=chL0>>+SPC+6R1C+q-;(fOe}pZ=gH^DONR@S4A2cP*rDEYEWaR8ZM!v3DfAp;>wqx z3z>$_21qlv@i{c~Aa_U(Ms_Z;KDi!8fZG$13Z+HJ;(przdW7f)35YMHLFl2B2`t>o0vIGK=FO@3tJd-+@ z2^F2OQve+lxu7CFW0KRkh=JD0gUJfgRS=8W<3~YW>L^PePM!uzXn2sbaLE>+f>4&Z z&K8p8Q5i(+0zn126p7Gch09Am4=9Efn$k&LRz5dG!w7MynnCB{-i`E68b|4(XXPDd zDU98^rplkyjUv0a5}M`pF!P&K_|)>VRfX-$8%^3cYvya|l+GloC^Qj`Sh>trf}?m1 z&<%NNJ+O`)MA`^si1?$DG$*hcG^HbJI@?FXnyCBRh^oEU6b<1#hfo8ji2DDD`q~zF z7(uvHnVC^66)i@rHdsUCplqEoE)u%Mcc!B*-t0ATD z3l?9mxNH_yyKJVkWT8%wm5j@Q0kCUcxBrGxpE@I@G+Y4(Qt=8@*f}_^U`Cqx#^aIx8NS(+DA?`S`uHh9=tnFbTN;YD2w`^!AdtWcb(mrt zIZ;WM(#6cFT6P)DFoMM~KNhr@^NOzKT+$M9&*ced&EGw~PXRNTKvakbq{ zC1Z!d4;C1+VO>No_I5PBZ!9`!#`M;copkLD zKLU6%7|Eo*;a0GNRKRxJfgtr6^qDBRd-;Nx(YL*RUcVwvdbl)vf8q@|@_18nzbW}A jnFOJP&&R9HI2EtEUJMG}MD6ZL2vt(yDk*UEGJ5hGSYM_c literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ecf94235427319846795d55ee2690a8dcf24fed4 GIT binary patch literal 549 zcmZvYF>c#16oyIJmSsim)(dp=P;qEcpg>WyNDveV+78L2g`mY}i8e(NB;`OkKu(YY zB;9%?t(|&>P9@a>_0Tswem}?u{{Lg^b&f)Pdnor`6NG+5aayw=J|KkMO#qHKmZ-xO z#*q`5bhBzc@k}ndv`R68`F^?2s%$z})e6$b9I~e{G0`d#pYuhNRA)TBMw{i&_}>PP zXG|&WnHO5QAeY*Ja!v+(eg(q?SaF;#FMCzTN8|cjtD5<%i_1@+Kc1gT=GrftV$3Ps z^}e@2sSV*!^`f?e@w&0hv_sjlyN>yCD-;*1aV53A^EM`~iiq^Dga3~iD>~uD5nOrT zJ3EhKvq)(my9jN}EHuJ-u;Y?aCMBick&XMF+OK=k>JEr72j_ZYwDn{wTzkv*0G{+l zP@!&_<#Z<`&@FSoNqGcyBvNeOye4MwtyZtfx5Nn#FAb{?tN}+(Ly|us$v?LwcqH|- fxj>~E#_V0Ec`xC8H0_>+RwM;3k_=}_j`QR*Z3h<{z4Ukq8$pEsH*eznMljM8=IIs=p% z9|)C4E7NP&R)*=iFKTw%Fjp*v;zCunpr*6Vgp_3-kiJd*+@_6agcCck#g?y49Bh+7 zQ%@%GGNcA7VI7!ZMk$k$(kEoXACL0yj?`@fMCh%xoz|^!WGQTY%{BmzbXriMu9@L< zEhNw-v%pEQ1GOVkEWdvvx_5P}z7{`-6%LLyTWwhdmV69JUPF@iZHeEJ)LshR59vwM X@=n5OSlWK^l1DktqZFr6hO_8D-iw>n literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e5fc357cad7d6297f9a9bc3b8db74c058bad3eb GIT binary patch literal 973 zcmZ`&%Z}496t$Byb(@rqMnYoEt_zX{2nh+Hc~Owc%!Zvekz2d1+q}khIux-2K7kJa zcKlLyh!wxUifgyh6lrjjt85~jPGBP)lUzhUp6@$0VF2~Vf_IBM;zy< zz!YPPz1%B&>O1V`LD8Y1!$ICH2qhT3LcGJn&xnV@U-druv=2;|6JW@miA1=HR|7f_ zu6+aYq0IqL?G-SWQP7esD_J43tnFu6 zQSm0XIL@-`hUL2%8l6{7X@s(cKajHCy71>?x~vM3%6hGJQ`eO;=~U|F4O=V3+^jlLxTqUr%VjecIsxc++Wzd!=ux znKPNjQ!%fU00Hj=rxBZj4f`Z6BWq#9-g+^2oB(J+|}sFp3=NA4Qwe>Rxyna%~HOl9v)K3&c9?TOD@ZWPBPVK zqwFt0V+*tW4ZFMS*7gJpR~;y8gO_DfIHTRRs1Gx=H#wVJj9*`#p0`Aah18&TPo4vL em(Z3x-`%(uwyi#f5PLC($3G5^LxTGr!G8hNcl!$J$Us&W#1#4k%?p zQ2L7W&~?`E`9O-Q1j5zQm|CeyTat29+_43KCAH#|%R8nsI_Cmt$_!*AUV&T@!PEUc zq8eLNayLF8hFjQCY_?=M81gqC`OZgvjS^>%sMO&kR!tiomQ_{@IP#8-|KU+E!lNL> GQSb#nZIyKZ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b55f772d739f1930bece0d0f7fac44b7ee3449f GIT binary patch literal 548 zcmZusJ&)8d5VgG@3EAv*G?a8(5EmdMB!nmc>2&NB9F-f(yO~X#bsWof_Ab}*7x)1O z9e*h;)%^u3?101-Ofi1XZ$|HpSg$h_>igHCxg-evjO1a>0(pxNcAo+$QHd35F~c}w zq6j15ovB$nXN&1?u9j`W5{!T}X}NfU*dtgpS+im*NbYi2eT%!x3bS=duFxjAk8T@0 zu7uW|7hZPST?U?X2DEc3z{eLbyaOvwllr08`#5zU;-YbRwYP)uo3kd*?bjDtcP&t9j?VSQbk@_I zboI4p06guDgQ!=ve+ nqv^l&G{mEBnkmdMrmx$s>=nFOgk0_{w49_Q$N4-XDbC1moXDeF literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f18aa9229d89642c11d7f6bbd8e2eff6a958ac84 GIT binary patch literal 497 zcmZuuyH3L}6t&Y=`WpEGwhqKYQKd=-R_!GV% zD-*xKgk6y6z#Xp7(S7(Fn~lc<&5bBGHeEvt}9z7;@~7{P-h(LWz?{?%n&iGg5UEUKC|o3Apr bytes: + # RFC 3394 Key Wrap - 2.2.1 (index method) + encryptor = Cipher(AES(wrapping_key), ECB()).encryptor() + n = len(r) + for j in range(6): + for i in range(n): + # every encryption operation is a discrete 16 byte chunk (because + # AES has a 128-bit block size) and since we're using ECB it is + # safe to reuse the encryptor for the entire operation + b = encryptor.update(a + r[i]) + a = ( + int.from_bytes(b[:8], byteorder="big") ^ ((n * j) + i + 1) + ).to_bytes(length=8, byteorder="big") + r[i] = b[-8:] + + assert encryptor.finalize() == b"" + + return a + b"".join(r) + + +def aes_key_wrap( + wrapping_key: bytes, + key_to_wrap: bytes, + backend: typing.Any = None, +) -> bytes: + if len(wrapping_key) not in [16, 24, 32]: + raise ValueError("The wrapping key must be a valid AES key length") + + if len(key_to_wrap) < 16: + raise ValueError("The key to wrap must be at least 16 bytes") + + if len(key_to_wrap) % 8 != 0: + raise ValueError("The key to wrap must be a multiple of 8 bytes") + + a = b"\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6" + r = [key_to_wrap[i : i + 8] for i in range(0, len(key_to_wrap), 8)] + return _wrap_core(wrapping_key, a, r) + + +def _unwrap_core( + wrapping_key: bytes, + a: bytes, + r: list[bytes], +) -> tuple[bytes, list[bytes]]: + # Implement RFC 3394 Key Unwrap - 2.2.2 (index method) + decryptor = Cipher(AES(wrapping_key), ECB()).decryptor() + n = len(r) + for j in reversed(range(6)): + for i in reversed(range(n)): + atr = ( + int.from_bytes(a, byteorder="big") ^ ((n * j) + i + 1) + ).to_bytes(length=8, byteorder="big") + r[i] + # every decryption operation is a discrete 16 byte chunk so + # it is safe to reuse the decryptor for the entire operation + b = decryptor.update(atr) + a = b[:8] + r[i] = b[-8:] + + assert decryptor.finalize() == b"" + return a, r + + +def aes_key_wrap_with_padding( + wrapping_key: bytes, + key_to_wrap: bytes, + backend: typing.Any = None, +) -> bytes: + if len(wrapping_key) not in [16, 24, 32]: + raise ValueError("The wrapping key must be a valid AES key length") + + if not key_to_wrap or len(key_to_wrap) > 2**32: + raise ValueError("key_to_wrap must be between 1 and 2^32 bytes") + + aiv = b"\xa6\x59\x59\xa6" + len(key_to_wrap).to_bytes( + length=4, byteorder="big" + ) + # pad the key to wrap if necessary + pad = (8 - (len(key_to_wrap) % 8)) % 8 + key_to_wrap = key_to_wrap + b"\x00" * pad + if len(key_to_wrap) == 8: + # RFC 5649 - 4.1 - exactly 8 octets after padding + encryptor = Cipher(AES(wrapping_key), ECB()).encryptor() + b = encryptor.update(aiv + key_to_wrap) + assert encryptor.finalize() == b"" + return b + else: + r = [key_to_wrap[i : i + 8] for i in range(0, len(key_to_wrap), 8)] + return _wrap_core(wrapping_key, aiv, r) + + +def aes_key_unwrap_with_padding( + wrapping_key: bytes, + wrapped_key: bytes, + backend: typing.Any = None, +) -> bytes: + if len(wrapped_key) < 16: + raise InvalidUnwrap("Must be at least 16 bytes") + + if len(wrapping_key) not in [16, 24, 32]: + raise ValueError("The wrapping key must be a valid AES key length") + + if len(wrapped_key) == 16: + # RFC 5649 - 4.2 - exactly two 64-bit blocks + decryptor = Cipher(AES(wrapping_key), ECB()).decryptor() + out = decryptor.update(wrapped_key) + assert decryptor.finalize() == b"" + a = out[:8] + data = out[8:] + n = 1 + else: + r = [wrapped_key[i : i + 8] for i in range(0, len(wrapped_key), 8)] + encrypted_aiv = r.pop(0) + n = len(r) + a, r = _unwrap_core(wrapping_key, encrypted_aiv, r) + data = b"".join(r) + + # 1) Check that MSB(32,A) = A65959A6. + # 2) Check that 8*(n-1) < LSB(32,A) <= 8*n. If so, let + # MLI = LSB(32,A). + # 3) Let b = (8*n)-MLI, and then check that the rightmost b octets of + # the output data are zero. + mli = int.from_bytes(a[4:], byteorder="big") + b = (8 * n) - mli + if ( + not bytes_eq(a[:4], b"\xa6\x59\x59\xa6") + or not 8 * (n - 1) < mli <= 8 * n + or (b != 0 and not bytes_eq(data[-b:], b"\x00" * b)) + ): + raise InvalidUnwrap() + + if b == 0: + return data + else: + return data[:-b] + + +def aes_key_unwrap( + wrapping_key: bytes, + wrapped_key: bytes, + backend: typing.Any = None, +) -> bytes: + if len(wrapped_key) < 24: + raise InvalidUnwrap("Must be at least 24 bytes") + + if len(wrapped_key) % 8 != 0: + raise InvalidUnwrap("The wrapped key must be a multiple of 8 bytes") + + if len(wrapping_key) not in [16, 24, 32]: + raise ValueError("The wrapping key must be a valid AES key length") + + aiv = b"\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6" + r = [wrapped_key[i : i + 8] for i in range(0, len(wrapped_key), 8)] + a = r.pop(0) + a, r = _unwrap_core(wrapping_key, a, r) + if not bytes_eq(a, aiv): + raise InvalidUnwrap() + + return b"".join(r) + + +class InvalidUnwrap(Exception): + pass diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/padding.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/padding.py new file mode 100644 index 0000000..f9cd1f1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/padding.py @@ -0,0 +1,69 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils +from cryptography.hazmat.bindings._rust import ( + ANSIX923PaddingContext, + ANSIX923UnpaddingContext, + PKCS7PaddingContext, + PKCS7UnpaddingContext, +) + + +class PaddingContext(metaclass=abc.ABCMeta): + @abc.abstractmethod + def update(self, data: utils.Buffer) -> bytes: + """ + Pads the provided bytes and returns any available data as bytes. + """ + + @abc.abstractmethod + def finalize(self) -> bytes: + """ + Finalize the padding, returns bytes. + """ + + +def _byte_padding_check(block_size: int) -> None: + if not (0 <= block_size <= 2040): + raise ValueError("block_size must be in range(0, 2041).") + + if block_size % 8 != 0: + raise ValueError("block_size must be a multiple of 8.") + + +class PKCS7: + def __init__(self, block_size: int): + _byte_padding_check(block_size) + self.block_size = block_size + + def padder(self) -> PaddingContext: + return PKCS7PaddingContext(self.block_size) + + def unpadder(self) -> PaddingContext: + return PKCS7UnpaddingContext(self.block_size) + + +PaddingContext.register(PKCS7PaddingContext) +PaddingContext.register(PKCS7UnpaddingContext) + + +class ANSIX923: + def __init__(self, block_size: int): + _byte_padding_check(block_size) + self.block_size = block_size + + def padder(self) -> PaddingContext: + return ANSIX923PaddingContext(self.block_size) + + def unpadder(self) -> PaddingContext: + return ANSIX923UnpaddingContext(self.block_size) + + +PaddingContext.register(ANSIX923PaddingContext) +PaddingContext.register(ANSIX923UnpaddingContext) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/poly1305.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/poly1305.py new file mode 100644 index 0000000..7f5a77a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/poly1305.py @@ -0,0 +1,11 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +__all__ = ["Poly1305"] + +Poly1305 = rust_openssl.poly1305.Poly1305 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__init__.py new file mode 100644 index 0000000..62283cc --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__init__.py @@ -0,0 +1,65 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.primitives._serialization import ( + BestAvailableEncryption, + Encoding, + KeySerializationEncryption, + NoEncryption, + ParameterFormat, + PrivateFormat, + PublicFormat, + _KeySerializationEncryption, +) +from cryptography.hazmat.primitives.serialization.base import ( + load_der_parameters, + load_der_private_key, + load_der_public_key, + load_pem_parameters, + load_pem_private_key, + load_pem_public_key, +) +from cryptography.hazmat.primitives.serialization.ssh import ( + SSHCertificate, + SSHCertificateBuilder, + SSHCertificateType, + SSHCertPrivateKeyTypes, + SSHCertPublicKeyTypes, + SSHPrivateKeyTypes, + SSHPublicKeyTypes, + load_ssh_private_key, + load_ssh_public_identity, + load_ssh_public_key, + ssh_key_fingerprint, +) + +__all__ = [ + "BestAvailableEncryption", + "Encoding", + "KeySerializationEncryption", + "NoEncryption", + "ParameterFormat", + "PrivateFormat", + "PublicFormat", + "SSHCertPrivateKeyTypes", + "SSHCertPublicKeyTypes", + "SSHCertificate", + "SSHCertificateBuilder", + "SSHCertificateType", + "SSHPrivateKeyTypes", + "SSHPublicKeyTypes", + "_KeySerializationEncryption", + "load_der_parameters", + "load_der_private_key", + "load_der_public_key", + "load_pem_parameters", + "load_pem_private_key", + "load_pem_public_key", + "load_ssh_private_key", + "load_ssh_public_identity", + "load_ssh_public_key", + "ssh_key_fingerprint", +] diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..132649f7b2ddeae04e17a5ee871f9fb586cdd9c7 GIT binary patch literal 1350 zcmb7@%Wl&^6o#F9nrqYClNMN#MQsoj5)wjC1VTcpDuvZ-Mw57&OzUG?<4LOYCD`-{ zy6Y=>%ZgWE#T+M1oR+H>pXU5Cb9~P4V^%H~4E@|(o9DM#!}x|l{7LHItzjgBYrU`y zJK-3RAc+L7lTH#+Bn4@bh78F-mSiDEa*!u^*daSmAcg2$$|*vLl%Pz?P$3nlk}B+y zU8s>-w4ZkNpib)0APs1eCbUQk+N2E~(t$4NLXY&IPx`P=_ThjWB#en+XKoVYk)0hH zgWPwlcaR8+%ym7*lol%coMznc}OkbUGV3V!Vp_^!JGe*|6?-%%(P%)W6Fb zgpG~3%uFx%B7QV_K}_^HJiH%?5AH|m`u?C8R))h*@3~asOpJ9CVRJh^o(V^n7w&D# zUlu+OTPtnVzit%eV4Y%V#9GD__m9?4i^^FaTXr7=Q|ia6??j$N>au!ab5{v<=SyrS zG7Dq9plABya;Y=9YS5J_JsvWR$RPBT8#0H;BX$rCL=#a%>>=ui7NU*7-$WJ>B}5rf zK~xdDhz_EQ=pp(VCxgdffzq>?nn_Nn#NUY=Mx*FWB=e^WbIPvtK$*H)5K7E>VA3Ey zlmAjb7Dt}{CGA#LbHsG~$9~AO|4OLMzwh40){T$9Fe%JY${dH%TSGoV=MX=>T2l|W zCH#vZnEAdZl{FH<^pc%(uB@3asBkZtwDs3^IK_5s%bas}ZaHG~^2qWRYU;T!%vV+* z6hHLY_<~J%V8xrVmgZX<^Q|qHEUI536s4xW2=lMOvu6%}gJTrn@RX8I3s3S#m7i2O BoIL;l literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b054d850f4c587fe58bac7e7a98a58cf162f80d5 GIT binary patch literal 550 zcmY+AF;2rU6o#ENZ9{3Nassvv!~+Nk2_a6v!saD%>es}n6I-^ED!l?LCt%}BU75H7 z6OLP{sipUR`}6Z}`_aW>hTQo2Ov*e&=%-%{hhyl~h3OMRED)#)NEjdp%TXDT$m^Jl zy-vu)>y%8L#^n{6dA%lc7QUm^=-0WRRdAR}1+_8aZM7h`Yuza;b4^vzB?aAA)Fv6P z8LxAbq`EOy_s<~newv<69-=LDhTI5AS*oB)mF6wAkUDDx z0E-*NQ(o_=X6c3tNHc1H;iQGS#e!##4_I}!koA4?gblZFr|5c1b1-<=O?>PocD<>% n<*nN`pg9$MPc4@Q_JIEziU;Ij3iJS%GjdsyTD!^kw>-@7xqtDn$dXAO2N~ z|8vYRe#Do_YYtx44TFfEfT0E@iIEbY5ai9o^i6nLiIv*Etz~xNq^|F3-bv=tfy@;9t}*85wp!$h^f5e&8b;Qq$;)oUA! z%cvDKVTL-Di(uxRHk}v{>O?*=wUt^+vXBOQtQUlB8Z^gS302ZV`SI1-@bD~%!~HOj zyep)T8E5L;c<62WG|^a-mklrL=t%znh8aGg1~?C)Cbg&y5IEEYQ(Mdi+1xWi3v~Xe zeL#E%B&L=WX-P|5kXTw$rWGxjI|R}^1hN1?;vN7d>^TpB;@c`c1#d;VhG6nVI7a{E zlwrJqx0SV7|InZlrW}r}CXtYTe*=PtRZCf52W6u%)lx`lgborW+Pb2N>JKmE5y}lT z$75gyV2m!|H3^&~u_>+CmQL)-xws(b<6_G>Fhxz4C^;biBm;;!nEg4-HYIqu_#8$| z9FY|?=2K%}-7^kgu4urBqt}pu5iAT$po;?w=n^%+4DQyeKZDnJDZuJAnD^K1JD0tC zNH&us>d2_M(dGLLUhiq&yzFHhcyL#*lY6HJN^2?Ft=6xj`lIba?+rtFStDjmiTmJ+ zCK(z9o+jLA8-aE?1L zzYoL1_|S1*&jYH~>8bf!JFLwfclhm1)D;!BP4jjC`m7+X1#rMf20`ssk~PCb+^&tb z=&y%K;_Zh?mkBRwd((b5f?^gBqPoma!x4BHh^l}Cj6;GKv<&=VLN<@G)g$gPF$^vDSjd@8q8bY-kOlwrNl`UA(;wNBBeiF$l z5`;P@XMt0Nq0#E_CTc(ow@6IWCWpWOnm^k`lbEkHt@@Iu~#TO)7{m|+GH3lb_h;9(6&Z0(uZ72s{)?L*!H-r0jWIa+QW8dxgS z!d51~NIMBjSz9tX<$hH&M-;tn%E-zM0`@2f9>S2oJY|p~v8^&GzBbL`|N7@=8X#Y% ztf>8_=^fZd>xX#~^fO|}@K`xeqXW{i4#-doN7=if*d3o(IkF3iFXsULY zvLH~!AV@RXg%T2|au7V~hDkoce*=4}LWgG^IDT*HZ2T&W@*7BQA{j@h<}jJ*UIkN_ zI1Z#hRxX-k$r|2E#RV(xW`j?K>quPDe+n#JpH`}_LLCd0?Mo&V!X(L?ZC_X^{0@HY*~&gfc4#BXR3EF_&2(D#iu2{kqZ>E6m+eN z&zH~-pgXk&_6rBR!QSGS*Z3VE{j2Zvi>#Hmpy;c*5e2;_dm4ToH^NSadq}W<;TMo# zufi`P!R~~Ahy+3A=n5R%*x+}O+(UwqS9SO%^5f3qGkje~G6g+O{~qqV^O&2_c{r2q za2(vjhN6&v>SN3&tuAyIkWV<~QRT{BCu;Ag#b%Zy&_m<@&sx}MatlWN@?<;8F%bQW zlcHMQq1GBvo5C)l7N9G0#9C|UpL^Tv&ZwW&R`EZ1_oP~IB+KYOtbX+u)`X&$rcCmv znZu+J(vWC`urc+IG}}W}#)qqo_o#uDnBWyyrRD-iSPA4~=gT%&D|ZDCHP#NGvDdIK zp$u!YPNaMpISg9AG!bn6!qMQ;@vG6AK!239RpC}%4sN4~#iu~ZW`UH=GRc2u=HR_F b>PLzF6C{Os*IL+s{?kG^l%dzQyR!0swa|u~ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d67b54c8d387fcb967c63bfa8d53fee6e4d90ea GIT binary patch literal 10682 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 B_fP-; literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a29dc98262a4a39a194db16b3eeea38e868843d9 GIT binary patch literal 38985 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 QaOjP}!Q7y)PAVGtzgQd;H2?qr literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/base.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/base.py new file mode 100644 index 0000000..e7c998b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/base.py @@ -0,0 +1,14 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +load_pem_private_key = rust_openssl.keys.load_pem_private_key +load_der_private_key = rust_openssl.keys.load_der_private_key + +load_pem_public_key = rust_openssl.keys.load_pem_public_key +load_der_public_key = rust_openssl.keys.load_der_public_key + +load_pem_parameters = rust_openssl.dh.from_pem_parameters +load_der_parameters = rust_openssl.dh.from_der_parameters diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py new file mode 100644 index 0000000..58884ff --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py @@ -0,0 +1,176 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing +from collections.abc import Iterable + +from cryptography import x509 +from cryptography.hazmat.bindings._rust import pkcs12 as rust_pkcs12 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives._serialization import PBES as PBES +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed448, + ed25519, + rsa, +) +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes + +__all__ = [ + "PBES", + "PKCS12Certificate", + "PKCS12KeyAndCertificates", + "PKCS12PrivateKeyTypes", + "load_key_and_certificates", + "load_pkcs12", + "serialize_java_truststore", + "serialize_key_and_certificates", +] + +PKCS12PrivateKeyTypes = typing.Union[ + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, +] + + +PKCS12Certificate = rust_pkcs12.PKCS12Certificate + + +class PKCS12KeyAndCertificates: + def __init__( + self, + key: PrivateKeyTypes | None, + cert: PKCS12Certificate | None, + additional_certs: list[PKCS12Certificate], + ): + if key is not None and not isinstance( + key, + ( + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + ), + ): + raise TypeError( + "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" + " private key, or None." + ) + if cert is not None and not isinstance(cert, PKCS12Certificate): + raise TypeError("cert must be a PKCS12Certificate object or None") + if not all( + isinstance(add_cert, PKCS12Certificate) + for add_cert in additional_certs + ): + raise TypeError( + "all values in additional_certs must be PKCS12Certificate" + " objects" + ) + self._key = key + self._cert = cert + self._additional_certs = additional_certs + + @property + def key(self) -> PrivateKeyTypes | None: + return self._key + + @property + def cert(self) -> PKCS12Certificate | None: + return self._cert + + @property + def additional_certs(self) -> list[PKCS12Certificate]: + return self._additional_certs + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PKCS12KeyAndCertificates): + return NotImplemented + + return ( + self.key == other.key + and self.cert == other.cert + and self.additional_certs == other.additional_certs + ) + + def __hash__(self) -> int: + return hash((self.key, self.cert, tuple(self.additional_certs))) + + def __repr__(self) -> str: + fmt = ( + "" + ) + return fmt.format(self.key, self.cert, self.additional_certs) + + +load_key_and_certificates = rust_pkcs12.load_key_and_certificates +load_pkcs12 = rust_pkcs12.load_pkcs12 + + +_PKCS12CATypes = typing.Union[ + x509.Certificate, + PKCS12Certificate, +] + + +def serialize_java_truststore( + certs: Iterable[PKCS12Certificate], + encryption_algorithm: serialization.KeySerializationEncryption, +) -> bytes: + if not certs: + raise ValueError("You must supply at least one cert") + + if not isinstance( + encryption_algorithm, serialization.KeySerializationEncryption + ): + raise TypeError( + "Key encryption algorithm must be a " + "KeySerializationEncryption instance" + ) + + return rust_pkcs12.serialize_java_truststore(certs, encryption_algorithm) + + +def serialize_key_and_certificates( + name: bytes | None, + key: PKCS12PrivateKeyTypes | None, + cert: x509.Certificate | None, + cas: Iterable[_PKCS12CATypes] | None, + encryption_algorithm: serialization.KeySerializationEncryption, +) -> bytes: + if key is not None and not isinstance( + key, + ( + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + ), + ): + raise TypeError( + "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" + " private key, or None." + ) + + if not isinstance( + encryption_algorithm, serialization.KeySerializationEncryption + ): + raise TypeError( + "Key encryption algorithm must be a " + "KeySerializationEncryption instance" + ) + + if key is None and cert is None and not cas: + raise ValueError("You must supply at least one of key, cert, or cas") + + return rust_pkcs12.serialize_key_and_certificates( + name, key, cert, cas, encryption_algorithm + ) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py new file mode 100644 index 0000000..76b667a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py @@ -0,0 +1,412 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import email.base64mime +import email.generator +import email.message +import email.policy +import io +import typing +from collections.abc import Iterable + +from cryptography import utils, x509 +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import pkcs7 as rust_pkcs7 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric import ec, padding, rsa +from cryptography.hazmat.primitives.ciphers import ( + algorithms, +) +from cryptography.utils import _check_byteslike + +load_pem_pkcs7_certificates = rust_pkcs7.load_pem_pkcs7_certificates + +load_der_pkcs7_certificates = rust_pkcs7.load_der_pkcs7_certificates + +serialize_certificates = rust_pkcs7.serialize_certificates + +PKCS7HashTypes = typing.Union[ + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, +] + +PKCS7PrivateKeyTypes = typing.Union[ + rsa.RSAPrivateKey, ec.EllipticCurvePrivateKey +] + +ContentEncryptionAlgorithm = typing.Union[ + type[algorithms.AES128], type[algorithms.AES256] +] + + +class PKCS7Options(utils.Enum): + Text = "Add text/plain MIME type" + Binary = "Don't translate input data into canonical MIME format" + DetachedSignature = "Don't embed data in the PKCS7 structure" + NoCapabilities = "Don't embed SMIME capabilities" + NoAttributes = "Don't embed authenticatedAttributes" + NoCerts = "Don't embed signer certificate" + + +class PKCS7SignatureBuilder: + def __init__( + self, + data: utils.Buffer | None = None, + signers: list[ + tuple[ + x509.Certificate, + PKCS7PrivateKeyTypes, + PKCS7HashTypes, + padding.PSS | padding.PKCS1v15 | None, + ] + ] = [], + additional_certs: list[x509.Certificate] = [], + ): + self._data = data + self._signers = signers + self._additional_certs = additional_certs + + def set_data(self, data: utils.Buffer) -> PKCS7SignatureBuilder: + _check_byteslike("data", data) + if self._data is not None: + raise ValueError("data may only be set once") + + return PKCS7SignatureBuilder(data, self._signers) + + def add_signer( + self, + certificate: x509.Certificate, + private_key: PKCS7PrivateKeyTypes, + hash_algorithm: PKCS7HashTypes, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ) -> PKCS7SignatureBuilder: + if not isinstance( + hash_algorithm, + ( + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + ), + ): + raise TypeError( + "hash_algorithm must be one of hashes.SHA224, " + "SHA256, SHA384, or SHA512" + ) + if not isinstance(certificate, x509.Certificate): + raise TypeError("certificate must be a x509.Certificate") + + if not isinstance( + private_key, (rsa.RSAPrivateKey, ec.EllipticCurvePrivateKey) + ): + raise TypeError("Only RSA & EC keys are supported at this time.") + + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + return PKCS7SignatureBuilder( + self._data, + [ + *self._signers, + (certificate, private_key, hash_algorithm, rsa_padding), + ], + ) + + def add_certificate( + self, certificate: x509.Certificate + ) -> PKCS7SignatureBuilder: + if not isinstance(certificate, x509.Certificate): + raise TypeError("certificate must be a x509.Certificate") + + return PKCS7SignatureBuilder( + self._data, self._signers, [*self._additional_certs, certificate] + ) + + def sign( + self, + encoding: serialization.Encoding, + options: Iterable[PKCS7Options], + backend: typing.Any = None, + ) -> bytes: + if len(self._signers) == 0: + raise ValueError("Must have at least one signer") + if self._data is None: + raise ValueError("You must add data to sign") + options = list(options) + if not all(isinstance(x, PKCS7Options) for x in options): + raise ValueError("options must be from the PKCS7Options enum") + if encoding not in ( + serialization.Encoding.PEM, + serialization.Encoding.DER, + serialization.Encoding.SMIME, + ): + raise ValueError( + "Must be PEM, DER, or SMIME from the Encoding enum" + ) + + # Text is a meaningless option unless it is accompanied by + # DetachedSignature + if ( + PKCS7Options.Text in options + and PKCS7Options.DetachedSignature not in options + ): + raise ValueError( + "When passing the Text option you must also pass " + "DetachedSignature" + ) + + if PKCS7Options.Text in options and encoding in ( + serialization.Encoding.DER, + serialization.Encoding.PEM, + ): + raise ValueError( + "The Text option is only available for SMIME serialization" + ) + + # No attributes implies no capabilities so we'll error if you try to + # pass both. + if ( + PKCS7Options.NoAttributes in options + and PKCS7Options.NoCapabilities in options + ): + raise ValueError( + "NoAttributes is a superset of NoCapabilities. Do not pass " + "both values." + ) + + return rust_pkcs7.sign_and_serialize(self, encoding, options) + + +class PKCS7EnvelopeBuilder: + def __init__( + self, + *, + _data: bytes | None = None, + _recipients: list[x509.Certificate] | None = None, + _content_encryption_algorithm: ContentEncryptionAlgorithm + | None = None, + ): + from cryptography.hazmat.backends.openssl.backend import ( + backend as ossl, + ) + + if not ossl.rsa_encryption_supported(padding=padding.PKCS1v15()): + raise UnsupportedAlgorithm( + "RSA with PKCS1 v1.5 padding is not supported by this version" + " of OpenSSL.", + _Reasons.UNSUPPORTED_PADDING, + ) + self._data = _data + self._recipients = _recipients if _recipients is not None else [] + self._content_encryption_algorithm = _content_encryption_algorithm + + def set_data(self, data: bytes) -> PKCS7EnvelopeBuilder: + _check_byteslike("data", data) + if self._data is not None: + raise ValueError("data may only be set once") + + return PKCS7EnvelopeBuilder( + _data=data, + _recipients=self._recipients, + _content_encryption_algorithm=self._content_encryption_algorithm, + ) + + def add_recipient( + self, + certificate: x509.Certificate, + ) -> PKCS7EnvelopeBuilder: + if not isinstance(certificate, x509.Certificate): + raise TypeError("certificate must be a x509.Certificate") + + if not isinstance(certificate.public_key(), rsa.RSAPublicKey): + raise TypeError("Only RSA keys are supported at this time.") + + return PKCS7EnvelopeBuilder( + _data=self._data, + _recipients=[ + *self._recipients, + certificate, + ], + _content_encryption_algorithm=self._content_encryption_algorithm, + ) + + def set_content_encryption_algorithm( + self, content_encryption_algorithm: ContentEncryptionAlgorithm + ) -> PKCS7EnvelopeBuilder: + if self._content_encryption_algorithm is not None: + raise ValueError("Content encryption algo may only be set once") + if content_encryption_algorithm not in { + algorithms.AES128, + algorithms.AES256, + }: + raise TypeError("Only AES128 and AES256 are supported") + + return PKCS7EnvelopeBuilder( + _data=self._data, + _recipients=self._recipients, + _content_encryption_algorithm=content_encryption_algorithm, + ) + + def encrypt( + self, + encoding: serialization.Encoding, + options: Iterable[PKCS7Options], + ) -> bytes: + if len(self._recipients) == 0: + raise ValueError("Must have at least one recipient") + if self._data is None: + raise ValueError("You must add data to encrypt") + + # The default content encryption algorithm is AES-128-CBC, which the + # S/MIME v3.2 RFC specifies as MUST support (https://datatracker.ietf.org/doc/html/rfc5751#section-2.7) + # however rest of S/MIME v3.2 is not currently supported + content_encryption_algorithm = ( + self._content_encryption_algorithm or algorithms.AES128 + ) + + options = list(options) + if not all(isinstance(x, PKCS7Options) for x in options): + raise ValueError("options must be from the PKCS7Options enum") + if encoding not in ( + serialization.Encoding.PEM, + serialization.Encoding.DER, + serialization.Encoding.SMIME, + ): + raise ValueError( + "Must be PEM, DER, or SMIME from the Encoding enum" + ) + + # Only allow options that make sense for encryption + if any( + opt not in [PKCS7Options.Text, PKCS7Options.Binary] + for opt in options + ): + raise ValueError( + "Only the following options are supported for encryption: " + "Text, Binary" + ) + elif PKCS7Options.Text in options and PKCS7Options.Binary in options: + # OpenSSL accepts both options at the same time, but ignores Text. + # We fail defensively to avoid unexpected outputs. + raise ValueError( + "Cannot use Binary and Text options at the same time" + ) + + return rust_pkcs7.encrypt_and_serialize( + self, content_encryption_algorithm, encoding, options + ) + + +pkcs7_decrypt_der = rust_pkcs7.decrypt_der +pkcs7_decrypt_pem = rust_pkcs7.decrypt_pem +pkcs7_decrypt_smime = rust_pkcs7.decrypt_smime + + +def _smime_signed_encode( + data: bytes, signature: bytes, micalg: str, text_mode: bool +) -> bytes: + # This function works pretty hard to replicate what OpenSSL does + # precisely. For good and for ill. + + m = email.message.Message() + m.add_header("MIME-Version", "1.0") + m.add_header( + "Content-Type", + "multipart/signed", + protocol="application/x-pkcs7-signature", + micalg=micalg, + ) + + m.preamble = "This is an S/MIME signed message\n" + + msg_part = OpenSSLMimePart() + msg_part.set_payload(data) + if text_mode: + msg_part.add_header("Content-Type", "text/plain") + m.attach(msg_part) + + sig_part = email.message.MIMEPart() + sig_part.add_header( + "Content-Type", "application/x-pkcs7-signature", name="smime.p7s" + ) + sig_part.add_header("Content-Transfer-Encoding", "base64") + sig_part.add_header( + "Content-Disposition", "attachment", filename="smime.p7s" + ) + sig_part.set_payload( + email.base64mime.body_encode(signature, maxlinelen=65) + ) + del sig_part["MIME-Version"] + m.attach(sig_part) + + fp = io.BytesIO() + g = email.generator.BytesGenerator( + fp, + maxheaderlen=0, + mangle_from_=False, + policy=m.policy.clone(linesep="\r\n"), + ) + g.flatten(m) + return fp.getvalue() + + +def _smime_enveloped_encode(data: bytes) -> bytes: + m = email.message.Message() + m.add_header("MIME-Version", "1.0") + m.add_header("Content-Disposition", "attachment", filename="smime.p7m") + m.add_header( + "Content-Type", + "application/pkcs7-mime", + smime_type="enveloped-data", + name="smime.p7m", + ) + m.add_header("Content-Transfer-Encoding", "base64") + + m.set_payload(email.base64mime.body_encode(data, maxlinelen=65)) + + return m.as_bytes(policy=m.policy.clone(linesep="\n", max_line_length=0)) + + +def _smime_enveloped_decode(data: bytes) -> bytes: + m = email.message_from_bytes(data) + if m.get_content_type() not in { + "application/x-pkcs7-mime", + "application/pkcs7-mime", + }: + raise ValueError("Not an S/MIME enveloped message") + return bytes(m.get_payload(decode=True)) + + +def _smime_remove_text_headers(data: bytes) -> bytes: + m = email.message_from_bytes(data) + # Using get() instead of get_content_type() since it has None as default, + # where the latter has "text/plain". Both methods are case-insensitive. + content_type = m.get("content-type") + if content_type is None: + raise ValueError( + "Decrypted MIME data has no 'Content-Type' header. " + "Please remove the 'Text' option to parse it manually." + ) + if "text/plain" not in content_type: + raise ValueError( + f"Decrypted MIME data content type is '{content_type}', not " + "'text/plain'. Remove the 'Text' option to parse it manually." + ) + return bytes(m.get_payload(decode=True)) + + +class OpenSSLMimePart(email.message.MIMEPart): + # A MIMEPart subclass that replicates OpenSSL's behavior of not including + # a newline if there are no headers. + def _write_headers(self, generator) -> None: + if list(self.raw_items()): + generator._write_headers(self) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/ssh.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/ssh.py new file mode 100644 index 0000000..411113b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/serialization/ssh.py @@ -0,0 +1,1621 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import binascii +import enum +import os +import re +import typing +import warnings +from base64 import encodebytes as _base64_encode +from dataclasses import dataclass + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed25519, + padding, + rsa, +) +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.hazmat.primitives.ciphers import ( + AEADDecryptionContext, + Cipher, + algorithms, + modes, +) +from cryptography.hazmat.primitives.serialization import ( + Encoding, + KeySerializationEncryption, + NoEncryption, + PrivateFormat, + PublicFormat, + _KeySerializationEncryption, +) + +try: + from bcrypt import kdf as _bcrypt_kdf + + _bcrypt_supported = True +except ImportError: + _bcrypt_supported = False + + def _bcrypt_kdf( + password: bytes, + salt: bytes, + desired_key_bytes: int, + rounds: int, + ignore_few_rounds: bool = False, + ) -> bytes: + raise UnsupportedAlgorithm("Need bcrypt module") + + +_SSH_ED25519 = b"ssh-ed25519" +_SSH_RSA = b"ssh-rsa" +_SSH_DSA = b"ssh-dss" +_ECDSA_NISTP256 = b"ecdsa-sha2-nistp256" +_ECDSA_NISTP384 = b"ecdsa-sha2-nistp384" +_ECDSA_NISTP521 = b"ecdsa-sha2-nistp521" +_CERT_SUFFIX = b"-cert-v01@openssh.com" + +# U2F application string suffixed pubkey +_SK_SSH_ED25519 = b"sk-ssh-ed25519@openssh.com" +_SK_SSH_ECDSA_NISTP256 = b"sk-ecdsa-sha2-nistp256@openssh.com" + +# These are not key types, only algorithms, so they cannot appear +# as a public key type +_SSH_RSA_SHA256 = b"rsa-sha2-256" +_SSH_RSA_SHA512 = b"rsa-sha2-512" + +_SSH_PUBKEY_RC = re.compile(rb"\A(\S+)[ \t]+(\S+)") +_SK_MAGIC = b"openssh-key-v1\0" +_SK_START = b"-----BEGIN OPENSSH PRIVATE KEY-----" +_SK_END = b"-----END OPENSSH PRIVATE KEY-----" +_BCRYPT = b"bcrypt" +_NONE = b"none" +_DEFAULT_CIPHER = b"aes256-ctr" +_DEFAULT_ROUNDS = 16 + +# re is only way to work on bytes-like data +_PEM_RC = re.compile(_SK_START + b"(.*?)" + _SK_END, re.DOTALL) + +# padding for max blocksize +_PADDING = memoryview(bytearray(range(1, 1 + 16))) + + +@dataclass +class _SSHCipher: + alg: type[algorithms.AES] + key_len: int + mode: type[modes.CTR] | type[modes.CBC] | type[modes.GCM] + block_len: int + iv_len: int + tag_len: int | None + is_aead: bool + + +# ciphers that are actually used in key wrapping +_SSH_CIPHERS: dict[bytes, _SSHCipher] = { + b"aes256-ctr": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.CTR, + block_len=16, + iv_len=16, + tag_len=None, + is_aead=False, + ), + b"aes256-cbc": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.CBC, + block_len=16, + iv_len=16, + tag_len=None, + is_aead=False, + ), + b"aes256-gcm@openssh.com": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.GCM, + block_len=16, + iv_len=12, + tag_len=16, + is_aead=True, + ), +} + +# map local curve name to key type +_ECDSA_KEY_TYPE = { + "secp256r1": _ECDSA_NISTP256, + "secp384r1": _ECDSA_NISTP384, + "secp521r1": _ECDSA_NISTP521, +} + + +def _get_ssh_key_type(key: SSHPrivateKeyTypes | SSHPublicKeyTypes) -> bytes: + if isinstance(key, ec.EllipticCurvePrivateKey): + key_type = _ecdsa_key_type(key.public_key()) + elif isinstance(key, ec.EllipticCurvePublicKey): + key_type = _ecdsa_key_type(key) + elif isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)): + key_type = _SSH_RSA + elif isinstance(key, (dsa.DSAPrivateKey, dsa.DSAPublicKey)): + key_type = _SSH_DSA + elif isinstance( + key, (ed25519.Ed25519PrivateKey, ed25519.Ed25519PublicKey) + ): + key_type = _SSH_ED25519 + else: + raise ValueError("Unsupported key type") + + return key_type + + +def _ecdsa_key_type(public_key: ec.EllipticCurvePublicKey) -> bytes: + """Return SSH key_type and curve_name for private key.""" + curve = public_key.curve + if curve.name not in _ECDSA_KEY_TYPE: + raise ValueError( + f"Unsupported curve for ssh private key: {curve.name!r}" + ) + return _ECDSA_KEY_TYPE[curve.name] + + +def _ssh_pem_encode( + data: utils.Buffer, + prefix: bytes = _SK_START + b"\n", + suffix: bytes = _SK_END + b"\n", +) -> bytes: + return b"".join([prefix, _base64_encode(data), suffix]) + + +def _check_block_size(data: utils.Buffer, block_len: int) -> None: + """Require data to be full blocks""" + if not data or len(data) % block_len != 0: + raise ValueError("Corrupt data: missing padding") + + +def _check_empty(data: utils.Buffer) -> None: + """All data should have been parsed.""" + if data: + raise ValueError("Corrupt data: unparsed data") + + +def _init_cipher( + ciphername: bytes, + password: bytes | None, + salt: bytes, + rounds: int, +) -> Cipher[modes.CBC | modes.CTR | modes.GCM]: + """Generate key + iv and return cipher.""" + if not password: + raise TypeError( + "Key is password-protected, but password was not provided." + ) + + ciph = _SSH_CIPHERS[ciphername] + seed = _bcrypt_kdf( + password, salt, ciph.key_len + ciph.iv_len, rounds, True + ) + return Cipher( + ciph.alg(seed[: ciph.key_len]), + ciph.mode(seed[ciph.key_len :]), + ) + + +def _get_u32(data: memoryview) -> tuple[int, memoryview]: + """Uint32""" + if len(data) < 4: + raise ValueError("Invalid data") + return int.from_bytes(data[:4], byteorder="big"), data[4:] + + +def _get_u64(data: memoryview) -> tuple[int, memoryview]: + """Uint64""" + if len(data) < 8: + raise ValueError("Invalid data") + return int.from_bytes(data[:8], byteorder="big"), data[8:] + + +def _get_sshstr(data: memoryview) -> tuple[memoryview, memoryview]: + """Bytes with u32 length prefix""" + n, data = _get_u32(data) + if n > len(data): + raise ValueError("Invalid data") + return data[:n], data[n:] + + +def _get_mpint(data: memoryview) -> tuple[int, memoryview]: + """Big integer.""" + val, data = _get_sshstr(data) + if val and val[0] > 0x7F: + raise ValueError("Invalid data") + return int.from_bytes(val, "big"), data + + +def _to_mpint(val: int) -> bytes: + """Storage format for signed bigint.""" + if val < 0: + raise ValueError("negative mpint not allowed") + if not val: + return b"" + nbytes = (val.bit_length() + 8) // 8 + return utils.int_to_bytes(val, nbytes) + + +class _FragList: + """Build recursive structure without data copy.""" + + flist: list[utils.Buffer] + + def __init__(self, init: list[utils.Buffer] | None = None) -> None: + self.flist = [] + if init: + self.flist.extend(init) + + def put_raw(self, val: utils.Buffer) -> None: + """Add plain bytes""" + self.flist.append(val) + + def put_u32(self, val: int) -> None: + """Big-endian uint32""" + self.flist.append(val.to_bytes(length=4, byteorder="big")) + + def put_u64(self, val: int) -> None: + """Big-endian uint64""" + self.flist.append(val.to_bytes(length=8, byteorder="big")) + + def put_sshstr(self, val: bytes | _FragList) -> None: + """Bytes prefixed with u32 length""" + if isinstance(val, (bytes, memoryview, bytearray)): + self.put_u32(len(val)) + self.flist.append(val) + else: + self.put_u32(val.size()) + self.flist.extend(val.flist) + + def put_mpint(self, val: int) -> None: + """Big-endian bigint prefixed with u32 length""" + self.put_sshstr(_to_mpint(val)) + + def size(self) -> int: + """Current number of bytes""" + return sum(map(len, self.flist)) + + def render(self, dstbuf: memoryview, pos: int = 0) -> int: + """Write into bytearray""" + for frag in self.flist: + flen = len(frag) + start, pos = pos, pos + flen + dstbuf[start:pos] = frag + return pos + + def tobytes(self) -> bytes: + """Return as bytes""" + buf = memoryview(bytearray(self.size())) + self.render(buf) + return buf.tobytes() + + +class _SSHFormatRSA: + """Format for RSA keys. + + Public: + mpint e, n + Private: + mpint n, e, d, iqmp, p, q + """ + + def get_public( + self, data: memoryview + ) -> tuple[tuple[int, int], memoryview]: + """RSA public fields""" + e, data = _get_mpint(data) + n, data = _get_mpint(data) + return (e, n), data + + def load_public( + self, data: memoryview + ) -> tuple[rsa.RSAPublicKey, memoryview]: + """Make RSA public key from data.""" + (e, n), data = self.get_public(data) + public_numbers = rsa.RSAPublicNumbers(e, n) + public_key = public_numbers.public_key() + return public_key, data + + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[rsa.RSAPrivateKey, memoryview]: + """Make RSA private key from data.""" + n, data = _get_mpint(data) + e, data = _get_mpint(data) + d, data = _get_mpint(data) + iqmp, data = _get_mpint(data) + p, data = _get_mpint(data) + q, data = _get_mpint(data) + + if (e, n) != pubfields: + raise ValueError("Corrupt data: rsa field mismatch") + dmp1 = rsa.rsa_crt_dmp1(d, p) + dmq1 = rsa.rsa_crt_dmq1(d, q) + public_numbers = rsa.RSAPublicNumbers(e, n) + private_numbers = rsa.RSAPrivateNumbers( + p, q, d, dmp1, dmq1, iqmp, public_numbers + ) + private_key = private_numbers.private_key( + unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation + ) + return private_key, data + + def encode_public( + self, public_key: rsa.RSAPublicKey, f_pub: _FragList + ) -> None: + """Write RSA public key""" + pubn = public_key.public_numbers() + f_pub.put_mpint(pubn.e) + f_pub.put_mpint(pubn.n) + + def encode_private( + self, private_key: rsa.RSAPrivateKey, f_priv: _FragList + ) -> None: + """Write RSA private key""" + private_numbers = private_key.private_numbers() + public_numbers = private_numbers.public_numbers + + f_priv.put_mpint(public_numbers.n) + f_priv.put_mpint(public_numbers.e) + + f_priv.put_mpint(private_numbers.d) + f_priv.put_mpint(private_numbers.iqmp) + f_priv.put_mpint(private_numbers.p) + f_priv.put_mpint(private_numbers.q) + + +class _SSHFormatDSA: + """Format for DSA keys. + + Public: + mpint p, q, g, y + Private: + mpint p, q, g, y, x + """ + + def get_public(self, data: memoryview) -> tuple[tuple, memoryview]: + """DSA public fields""" + p, data = _get_mpint(data) + q, data = _get_mpint(data) + g, data = _get_mpint(data) + y, data = _get_mpint(data) + return (p, q, g, y), data + + def load_public( + self, data: memoryview + ) -> tuple[dsa.DSAPublicKey, memoryview]: + """Make DSA public key from data.""" + (p, q, g, y), data = self.get_public(data) + parameter_numbers = dsa.DSAParameterNumbers(p, q, g) + public_numbers = dsa.DSAPublicNumbers(y, parameter_numbers) + self._validate(public_numbers) + public_key = public_numbers.public_key() + return public_key, data + + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[dsa.DSAPrivateKey, memoryview]: + """Make DSA private key from data.""" + (p, q, g, y), data = self.get_public(data) + x, data = _get_mpint(data) + + if (p, q, g, y) != pubfields: + raise ValueError("Corrupt data: dsa field mismatch") + parameter_numbers = dsa.DSAParameterNumbers(p, q, g) + public_numbers = dsa.DSAPublicNumbers(y, parameter_numbers) + self._validate(public_numbers) + private_numbers = dsa.DSAPrivateNumbers(x, public_numbers) + private_key = private_numbers.private_key() + return private_key, data + + def encode_public( + self, public_key: dsa.DSAPublicKey, f_pub: _FragList + ) -> None: + """Write DSA public key""" + public_numbers = public_key.public_numbers() + parameter_numbers = public_numbers.parameter_numbers + self._validate(public_numbers) + + f_pub.put_mpint(parameter_numbers.p) + f_pub.put_mpint(parameter_numbers.q) + f_pub.put_mpint(parameter_numbers.g) + f_pub.put_mpint(public_numbers.y) + + def encode_private( + self, private_key: dsa.DSAPrivateKey, f_priv: _FragList + ) -> None: + """Write DSA private key""" + self.encode_public(private_key.public_key(), f_priv) + f_priv.put_mpint(private_key.private_numbers().x) + + def _validate(self, public_numbers: dsa.DSAPublicNumbers) -> None: + parameter_numbers = public_numbers.parameter_numbers + if parameter_numbers.p.bit_length() != 1024: + raise ValueError("SSH supports only 1024 bit DSA keys") + + +class _SSHFormatECDSA: + """Format for ECDSA keys. + + Public: + str curve + bytes point + Private: + str curve + bytes point + mpint secret + """ + + def __init__(self, ssh_curve_name: bytes, curve: ec.EllipticCurve): + self.ssh_curve_name = ssh_curve_name + self.curve = curve + + def get_public( + self, data: memoryview + ) -> tuple[tuple[memoryview, memoryview], memoryview]: + """ECDSA public fields""" + curve, data = _get_sshstr(data) + point, data = _get_sshstr(data) + if curve != self.ssh_curve_name: + raise ValueError("Curve name mismatch") + if len(point) == 0: + raise ValueError("Invalid EC point: empty data") + if point[0] != 4: + raise NotImplementedError("Need uncompressed point") + return (curve, point), data + + def load_public( + self, data: memoryview + ) -> tuple[ec.EllipticCurvePublicKey, memoryview]: + """Make ECDSA public key from data.""" + (_, point), data = self.get_public(data) + public_key = ec.EllipticCurvePublicKey.from_encoded_point( + self.curve, point.tobytes() + ) + return public_key, data + + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[ec.EllipticCurvePrivateKey, memoryview]: + """Make ECDSA private key from data.""" + (curve_name, point), data = self.get_public(data) + secret, data = _get_mpint(data) + + if (curve_name, point) != pubfields: + raise ValueError("Corrupt data: ecdsa field mismatch") + private_key = ec.derive_private_key(secret, self.curve) + return private_key, data + + def encode_public( + self, public_key: ec.EllipticCurvePublicKey, f_pub: _FragList + ) -> None: + """Write ECDSA public key""" + point = public_key.public_bytes( + Encoding.X962, PublicFormat.UncompressedPoint + ) + f_pub.put_sshstr(self.ssh_curve_name) + f_pub.put_sshstr(point) + + def encode_private( + self, private_key: ec.EllipticCurvePrivateKey, f_priv: _FragList + ) -> None: + """Write ECDSA private key""" + public_key = private_key.public_key() + private_numbers = private_key.private_numbers() + + self.encode_public(public_key, f_priv) + f_priv.put_mpint(private_numbers.private_value) + + +class _SSHFormatEd25519: + """Format for Ed25519 keys. + + Public: + bytes point + Private: + bytes point + bytes secret_and_point + """ + + def get_public( + self, data: memoryview + ) -> tuple[tuple[memoryview], memoryview]: + """Ed25519 public fields""" + point, data = _get_sshstr(data) + return (point,), data + + def load_public( + self, data: memoryview + ) -> tuple[ed25519.Ed25519PublicKey, memoryview]: + """Make Ed25519 public key from data.""" + (point,), data = self.get_public(data) + public_key = ed25519.Ed25519PublicKey.from_public_bytes( + point.tobytes() + ) + return public_key, data + + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[ed25519.Ed25519PrivateKey, memoryview]: + """Make Ed25519 private key from data.""" + (point,), data = self.get_public(data) + keypair, data = _get_sshstr(data) + + secret = keypair[:32] + point2 = keypair[32:] + if point != point2 or (point,) != pubfields: + raise ValueError("Corrupt data: ed25519 field mismatch") + private_key = ed25519.Ed25519PrivateKey.from_private_bytes(secret) + return private_key, data + + def encode_public( + self, public_key: ed25519.Ed25519PublicKey, f_pub: _FragList + ) -> None: + """Write Ed25519 public key""" + raw_public_key = public_key.public_bytes( + Encoding.Raw, PublicFormat.Raw + ) + f_pub.put_sshstr(raw_public_key) + + def encode_private( + self, private_key: ed25519.Ed25519PrivateKey, f_priv: _FragList + ) -> None: + """Write Ed25519 private key""" + public_key = private_key.public_key() + raw_private_key = private_key.private_bytes( + Encoding.Raw, PrivateFormat.Raw, NoEncryption() + ) + raw_public_key = public_key.public_bytes( + Encoding.Raw, PublicFormat.Raw + ) + f_keypair = _FragList([raw_private_key, raw_public_key]) + + self.encode_public(public_key, f_priv) + f_priv.put_sshstr(f_keypair) + + +def load_application(data) -> tuple[memoryview, memoryview]: + """ + U2F application strings + """ + application, data = _get_sshstr(data) + if not application.tobytes().startswith(b"ssh:"): + raise ValueError( + "U2F application string does not start with b'ssh:' " + f"({application})" + ) + return application, data + + +class _SSHFormatSKEd25519: + """ + The format of a sk-ssh-ed25519@openssh.com public key is: + + string "sk-ssh-ed25519@openssh.com" + string public key + string application (user-specified, but typically "ssh:") + """ + + def load_public( + self, data: memoryview + ) -> tuple[ed25519.Ed25519PublicKey, memoryview]: + """Make Ed25519 public key from data.""" + public_key, data = _lookup_kformat(_SSH_ED25519).load_public(data) + _, data = load_application(data) + return public_key, data + + def get_public(self, data: memoryview) -> typing.NoReturn: + # Confusingly `get_public` is an entry point used by private key + # loading. + raise UnsupportedAlgorithm( + "sk-ssh-ed25519 private keys cannot be loaded" + ) + + +class _SSHFormatSKECDSA: + """ + The format of a sk-ecdsa-sha2-nistp256@openssh.com public key is: + + string "sk-ecdsa-sha2-nistp256@openssh.com" + string curve name + ec_point Q + string application (user-specified, but typically "ssh:") + """ + + def load_public( + self, data: memoryview + ) -> tuple[ec.EllipticCurvePublicKey, memoryview]: + """Make ECDSA public key from data.""" + public_key, data = _lookup_kformat(_ECDSA_NISTP256).load_public(data) + _, data = load_application(data) + return public_key, data + + def get_public(self, data: memoryview) -> typing.NoReturn: + # Confusingly `get_public` is an entry point used by private key + # loading. + raise UnsupportedAlgorithm( + "sk-ecdsa-sha2-nistp256 private keys cannot be loaded" + ) + + +_KEY_FORMATS = { + _SSH_RSA: _SSHFormatRSA(), + _SSH_DSA: _SSHFormatDSA(), + _SSH_ED25519: _SSHFormatEd25519(), + _ECDSA_NISTP256: _SSHFormatECDSA(b"nistp256", ec.SECP256R1()), + _ECDSA_NISTP384: _SSHFormatECDSA(b"nistp384", ec.SECP384R1()), + _ECDSA_NISTP521: _SSHFormatECDSA(b"nistp521", ec.SECP521R1()), + _SK_SSH_ED25519: _SSHFormatSKEd25519(), + _SK_SSH_ECDSA_NISTP256: _SSHFormatSKECDSA(), +} + + +def _lookup_kformat(key_type: utils.Buffer): + """Return valid format or throw error""" + if not isinstance(key_type, bytes): + key_type = memoryview(key_type).tobytes() + if key_type in _KEY_FORMATS: + return _KEY_FORMATS[key_type] + raise UnsupportedAlgorithm(f"Unsupported key type: {key_type!r}") + + +SSHPrivateKeyTypes = typing.Union[ + ec.EllipticCurvePrivateKey, + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ed25519.Ed25519PrivateKey, +] + + +def load_ssh_private_key( + data: utils.Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> SSHPrivateKeyTypes: + """Load private key from OpenSSH custom encoding.""" + utils._check_byteslike("data", data) + if password is not None: + utils._check_bytes("password", password) + + m = _PEM_RC.search(data) + if not m: + raise ValueError("Not OpenSSH private key format") + p1 = m.start(1) + p2 = m.end(1) + data = binascii.a2b_base64(memoryview(data)[p1:p2]) + if not data.startswith(_SK_MAGIC): + raise ValueError("Not OpenSSH private key format") + data = memoryview(data)[len(_SK_MAGIC) :] + + # parse header + ciphername, data = _get_sshstr(data) + kdfname, data = _get_sshstr(data) + kdfoptions, data = _get_sshstr(data) + nkeys, data = _get_u32(data) + if nkeys != 1: + raise ValueError("Only one key supported") + + # load public key data + pubdata, data = _get_sshstr(data) + pub_key_type, pubdata = _get_sshstr(pubdata) + kformat = _lookup_kformat(pub_key_type) + pubfields, pubdata = kformat.get_public(pubdata) + _check_empty(pubdata) + + if ciphername != _NONE or kdfname != _NONE: + ciphername_bytes = ciphername.tobytes() + if ciphername_bytes not in _SSH_CIPHERS: + raise UnsupportedAlgorithm( + f"Unsupported cipher: {ciphername_bytes!r}" + ) + if kdfname != _BCRYPT: + raise UnsupportedAlgorithm(f"Unsupported KDF: {kdfname!r}") + blklen = _SSH_CIPHERS[ciphername_bytes].block_len + tag_len = _SSH_CIPHERS[ciphername_bytes].tag_len + # load secret data + edata, data = _get_sshstr(data) + # see https://bugzilla.mindrot.org/show_bug.cgi?id=3553 for + # information about how OpenSSH handles AEAD tags + if _SSH_CIPHERS[ciphername_bytes].is_aead: + tag = bytes(data) + if len(tag) != tag_len: + raise ValueError("Corrupt data: invalid tag length for cipher") + else: + _check_empty(data) + _check_block_size(edata, blklen) + salt, kbuf = _get_sshstr(kdfoptions) + rounds, kbuf = _get_u32(kbuf) + _check_empty(kbuf) + ciph = _init_cipher(ciphername_bytes, password, salt.tobytes(), rounds) + dec = ciph.decryptor() + edata = memoryview(dec.update(edata)) + if _SSH_CIPHERS[ciphername_bytes].is_aead: + assert isinstance(dec, AEADDecryptionContext) + _check_empty(dec.finalize_with_tag(tag)) + else: + # _check_block_size requires data to be a full block so there + # should be no output from finalize + _check_empty(dec.finalize()) + else: + if password: + raise TypeError( + "Password was given but private key is not encrypted." + ) + # load secret data + edata, data = _get_sshstr(data) + _check_empty(data) + blklen = 8 + _check_block_size(edata, blklen) + ck1, edata = _get_u32(edata) + ck2, edata = _get_u32(edata) + if ck1 != ck2: + raise ValueError("Corrupt data: broken checksum") + + # load per-key struct + key_type, edata = _get_sshstr(edata) + if key_type != pub_key_type: + raise ValueError("Corrupt data: key type mismatch") + private_key, edata = kformat.load_private( + edata, + pubfields, + unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation, + ) + # We don't use the comment + _, edata = _get_sshstr(edata) + + # yes, SSH does padding check *after* all other parsing is done. + # need to follow as it writes zero-byte padding too. + if edata != _PADDING[: len(edata)]: + raise ValueError("Corrupt data: invalid padding") + + if isinstance(private_key, dsa.DSAPrivateKey): + warnings.warn( + "SSH DSA keys are deprecated and will be removed in a future " + "release.", + utils.DeprecatedIn40, + stacklevel=2, + ) + + return private_key + + +def _serialize_ssh_private_key( + private_key: SSHPrivateKeyTypes, + password: bytes, + encryption_algorithm: KeySerializationEncryption, +) -> bytes: + """Serialize private key with OpenSSH custom encoding.""" + utils._check_bytes("password", password) + if isinstance(private_key, dsa.DSAPrivateKey): + warnings.warn( + "SSH DSA key support is deprecated and will be " + "removed in a future release", + utils.DeprecatedIn40, + stacklevel=4, + ) + + key_type = _get_ssh_key_type(private_key) + kformat = _lookup_kformat(key_type) + + # setup parameters + f_kdfoptions = _FragList() + if password: + ciphername = _DEFAULT_CIPHER + blklen = _SSH_CIPHERS[ciphername].block_len + kdfname = _BCRYPT + rounds = _DEFAULT_ROUNDS + if ( + isinstance(encryption_algorithm, _KeySerializationEncryption) + and encryption_algorithm._kdf_rounds is not None + ): + rounds = encryption_algorithm._kdf_rounds + salt = os.urandom(16) + f_kdfoptions.put_sshstr(salt) + f_kdfoptions.put_u32(rounds) + ciph = _init_cipher(ciphername, password, salt, rounds) + else: + ciphername = kdfname = _NONE + blklen = 8 + ciph = None + nkeys = 1 + checkval = os.urandom(4) + comment = b"" + + # encode public and private parts together + f_public_key = _FragList() + f_public_key.put_sshstr(key_type) + kformat.encode_public(private_key.public_key(), f_public_key) + + f_secrets = _FragList([checkval, checkval]) + f_secrets.put_sshstr(key_type) + kformat.encode_private(private_key, f_secrets) + f_secrets.put_sshstr(comment) + f_secrets.put_raw(_PADDING[: blklen - (f_secrets.size() % blklen)]) + + # top-level structure + f_main = _FragList() + f_main.put_raw(_SK_MAGIC) + f_main.put_sshstr(ciphername) + f_main.put_sshstr(kdfname) + f_main.put_sshstr(f_kdfoptions) + f_main.put_u32(nkeys) + f_main.put_sshstr(f_public_key) + f_main.put_sshstr(f_secrets) + + # copy result info bytearray + slen = f_secrets.size() + mlen = f_main.size() + buf = memoryview(bytearray(mlen + blklen)) + f_main.render(buf) + ofs = mlen - slen + + # encrypt in-place + if ciph is not None: + ciph.encryptor().update_into(buf[ofs:mlen], buf[ofs:]) + + return _ssh_pem_encode(buf[:mlen]) + + +SSHPublicKeyTypes = typing.Union[ + ec.EllipticCurvePublicKey, + rsa.RSAPublicKey, + dsa.DSAPublicKey, + ed25519.Ed25519PublicKey, +] + +SSHCertPublicKeyTypes = typing.Union[ + ec.EllipticCurvePublicKey, + rsa.RSAPublicKey, + ed25519.Ed25519PublicKey, +] + + +class SSHCertificateType(enum.Enum): + USER = 1 + HOST = 2 + + +class SSHCertificate: + def __init__( + self, + _nonce: memoryview, + _public_key: SSHPublicKeyTypes, + _serial: int, + _cctype: int, + _key_id: memoryview, + _valid_principals: list[bytes], + _valid_after: int, + _valid_before: int, + _critical_options: dict[bytes, bytes], + _extensions: dict[bytes, bytes], + _sig_type: memoryview, + _sig_key: memoryview, + _inner_sig_type: memoryview, + _signature: memoryview, + _tbs_cert_body: memoryview, + _cert_key_type: bytes, + _cert_body: memoryview, + ): + self._nonce = _nonce + self._public_key = _public_key + self._serial = _serial + try: + self._type = SSHCertificateType(_cctype) + except ValueError: + raise ValueError("Invalid certificate type") + self._key_id = _key_id + self._valid_principals = _valid_principals + self._valid_after = _valid_after + self._valid_before = _valid_before + self._critical_options = _critical_options + self._extensions = _extensions + self._sig_type = _sig_type + self._sig_key = _sig_key + self._inner_sig_type = _inner_sig_type + self._signature = _signature + self._cert_key_type = _cert_key_type + self._cert_body = _cert_body + self._tbs_cert_body = _tbs_cert_body + + @property + def nonce(self) -> bytes: + return bytes(self._nonce) + + def public_key(self) -> SSHCertPublicKeyTypes: + # make mypy happy until we remove DSA support entirely and + # the underlying union won't have a disallowed type + return typing.cast(SSHCertPublicKeyTypes, self._public_key) + + @property + def serial(self) -> int: + return self._serial + + @property + def type(self) -> SSHCertificateType: + return self._type + + @property + def key_id(self) -> bytes: + return bytes(self._key_id) + + @property + def valid_principals(self) -> list[bytes]: + return self._valid_principals + + @property + def valid_before(self) -> int: + return self._valid_before + + @property + def valid_after(self) -> int: + return self._valid_after + + @property + def critical_options(self) -> dict[bytes, bytes]: + return self._critical_options + + @property + def extensions(self) -> dict[bytes, bytes]: + return self._extensions + + def signature_key(self) -> SSHCertPublicKeyTypes: + sigformat = _lookup_kformat(self._sig_type) + signature_key, sigkey_rest = sigformat.load_public(self._sig_key) + _check_empty(sigkey_rest) + return signature_key + + def public_bytes(self) -> bytes: + return ( + bytes(self._cert_key_type) + + b" " + + binascii.b2a_base64(bytes(self._cert_body), newline=False) + ) + + def verify_cert_signature(self) -> None: + signature_key = self.signature_key() + if isinstance(signature_key, ed25519.Ed25519PublicKey): + signature_key.verify( + bytes(self._signature), bytes(self._tbs_cert_body) + ) + elif isinstance(signature_key, ec.EllipticCurvePublicKey): + # The signature is encoded as a pair of big-endian integers + r, data = _get_mpint(self._signature) + s, data = _get_mpint(data) + _check_empty(data) + computed_sig = asym_utils.encode_dss_signature(r, s) + hash_alg = _get_ec_hash_alg(signature_key.curve) + signature_key.verify( + computed_sig, bytes(self._tbs_cert_body), ec.ECDSA(hash_alg) + ) + else: + assert isinstance(signature_key, rsa.RSAPublicKey) + if self._inner_sig_type == _SSH_RSA: + hash_alg = hashes.SHA1() + elif self._inner_sig_type == _SSH_RSA_SHA256: + hash_alg = hashes.SHA256() + else: + assert self._inner_sig_type == _SSH_RSA_SHA512 + hash_alg = hashes.SHA512() + signature_key.verify( + bytes(self._signature), + bytes(self._tbs_cert_body), + padding.PKCS1v15(), + hash_alg, + ) + + +def _get_ec_hash_alg(curve: ec.EllipticCurve) -> hashes.HashAlgorithm: + if isinstance(curve, ec.SECP256R1): + return hashes.SHA256() + elif isinstance(curve, ec.SECP384R1): + return hashes.SHA384() + else: + assert isinstance(curve, ec.SECP521R1) + return hashes.SHA512() + + +def _load_ssh_public_identity( + data: utils.Buffer, + _legacy_dsa_allowed=False, +) -> SSHCertificate | SSHPublicKeyTypes: + utils._check_byteslike("data", data) + + m = _SSH_PUBKEY_RC.match(data) + if not m: + raise ValueError("Invalid line format") + key_type = orig_key_type = m.group(1) + key_body = m.group(2) + with_cert = False + if key_type.endswith(_CERT_SUFFIX): + with_cert = True + key_type = key_type[: -len(_CERT_SUFFIX)] + if key_type == _SSH_DSA and not _legacy_dsa_allowed: + raise UnsupportedAlgorithm( + "DSA keys aren't supported in SSH certificates" + ) + kformat = _lookup_kformat(key_type) + + try: + rest = memoryview(binascii.a2b_base64(key_body)) + except (TypeError, binascii.Error): + raise ValueError("Invalid format") + + if with_cert: + cert_body = rest + inner_key_type, rest = _get_sshstr(rest) + if inner_key_type != orig_key_type: + raise ValueError("Invalid key format") + if with_cert: + nonce, rest = _get_sshstr(rest) + public_key, rest = kformat.load_public(rest) + if with_cert: + serial, rest = _get_u64(rest) + cctype, rest = _get_u32(rest) + key_id, rest = _get_sshstr(rest) + principals, rest = _get_sshstr(rest) + valid_principals = [] + while principals: + principal, principals = _get_sshstr(principals) + valid_principals.append(bytes(principal)) + valid_after, rest = _get_u64(rest) + valid_before, rest = _get_u64(rest) + crit_options, rest = _get_sshstr(rest) + critical_options = _parse_exts_opts(crit_options) + exts, rest = _get_sshstr(rest) + extensions = _parse_exts_opts(exts) + # Get the reserved field, which is unused. + _, rest = _get_sshstr(rest) + sig_key_raw, rest = _get_sshstr(rest) + sig_type, sig_key = _get_sshstr(sig_key_raw) + if sig_type == _SSH_DSA and not _legacy_dsa_allowed: + raise UnsupportedAlgorithm( + "DSA signatures aren't supported in SSH certificates" + ) + # Get the entire cert body and subtract the signature + tbs_cert_body = cert_body[: -len(rest)] + signature_raw, rest = _get_sshstr(rest) + _check_empty(rest) + inner_sig_type, sig_rest = _get_sshstr(signature_raw) + # RSA certs can have multiple algorithm types + if ( + sig_type == _SSH_RSA + and inner_sig_type + not in [_SSH_RSA_SHA256, _SSH_RSA_SHA512, _SSH_RSA] + ) or (sig_type != _SSH_RSA and inner_sig_type != sig_type): + raise ValueError("Signature key type does not match") + signature, sig_rest = _get_sshstr(sig_rest) + _check_empty(sig_rest) + return SSHCertificate( + nonce, + public_key, + serial, + cctype, + key_id, + valid_principals, + valid_after, + valid_before, + critical_options, + extensions, + sig_type, + sig_key, + inner_sig_type, + signature, + tbs_cert_body, + orig_key_type, + cert_body, + ) + else: + _check_empty(rest) + return public_key + + +def load_ssh_public_identity( + data: utils.Buffer, +) -> SSHCertificate | SSHPublicKeyTypes: + return _load_ssh_public_identity(data) + + +def _parse_exts_opts(exts_opts: memoryview) -> dict[bytes, bytes]: + result: dict[bytes, bytes] = {} + last_name = None + while exts_opts: + name, exts_opts = _get_sshstr(exts_opts) + bname: bytes = bytes(name) + if bname in result: + raise ValueError("Duplicate name") + if last_name is not None and bname < last_name: + raise ValueError("Fields not lexically sorted") + value, exts_opts = _get_sshstr(exts_opts) + if len(value) > 0: + value, extra = _get_sshstr(value) + if len(extra) > 0: + raise ValueError("Unexpected extra data after value") + result[bname] = bytes(value) + last_name = bname + return result + + +def ssh_key_fingerprint( + key: SSHPublicKeyTypes, + hash_algorithm: hashes.MD5 | hashes.SHA256, +) -> bytes: + if not isinstance(hash_algorithm, (hashes.MD5, hashes.SHA256)): + raise TypeError("hash_algorithm must be either MD5 or SHA256") + + key_type = _get_ssh_key_type(key) + kformat = _lookup_kformat(key_type) + + f_pub = _FragList() + f_pub.put_sshstr(key_type) + kformat.encode_public(key, f_pub) + + ssh_binary_data = f_pub.tobytes() + + # Hash the binary data + hash_obj = hashes.Hash(hash_algorithm) + hash_obj.update(ssh_binary_data) + return hash_obj.finalize() + + +def load_ssh_public_key( + data: utils.Buffer, backend: typing.Any = None +) -> SSHPublicKeyTypes: + cert_or_key = _load_ssh_public_identity(data, _legacy_dsa_allowed=True) + public_key: SSHPublicKeyTypes + if isinstance(cert_or_key, SSHCertificate): + public_key = cert_or_key.public_key() + else: + public_key = cert_or_key + + if isinstance(public_key, dsa.DSAPublicKey): + warnings.warn( + "SSH DSA keys are deprecated and will be removed in a future " + "release.", + utils.DeprecatedIn40, + stacklevel=2, + ) + return public_key + + +def serialize_ssh_public_key(public_key: SSHPublicKeyTypes) -> bytes: + """One-line public key format for OpenSSH""" + if isinstance(public_key, dsa.DSAPublicKey): + warnings.warn( + "SSH DSA key support is deprecated and will be " + "removed in a future release", + utils.DeprecatedIn40, + stacklevel=4, + ) + key_type = _get_ssh_key_type(public_key) + kformat = _lookup_kformat(key_type) + + f_pub = _FragList() + f_pub.put_sshstr(key_type) + kformat.encode_public(public_key, f_pub) + + pub = binascii.b2a_base64(f_pub.tobytes()).strip() + return b"".join([key_type, b" ", pub]) + + +SSHCertPrivateKeyTypes = typing.Union[ + ec.EllipticCurvePrivateKey, + rsa.RSAPrivateKey, + ed25519.Ed25519PrivateKey, +] + + +# This is an undocumented limit enforced in the openssh codebase for sshd and +# ssh-keygen, but it is undefined in the ssh certificates spec. +_SSHKEY_CERT_MAX_PRINCIPALS = 256 + + +class SSHCertificateBuilder: + def __init__( + self, + _public_key: SSHCertPublicKeyTypes | None = None, + _serial: int | None = None, + _type: SSHCertificateType | None = None, + _key_id: bytes | None = None, + _valid_principals: list[bytes] = [], + _valid_for_all_principals: bool = False, + _valid_before: int | None = None, + _valid_after: int | None = None, + _critical_options: list[tuple[bytes, bytes]] = [], + _extensions: list[tuple[bytes, bytes]] = [], + ): + self._public_key = _public_key + self._serial = _serial + self._type = _type + self._key_id = _key_id + self._valid_principals = _valid_principals + self._valid_for_all_principals = _valid_for_all_principals + self._valid_before = _valid_before + self._valid_after = _valid_after + self._critical_options = _critical_options + self._extensions = _extensions + + def public_key( + self, public_key: SSHCertPublicKeyTypes + ) -> SSHCertificateBuilder: + if not isinstance( + public_key, + ( + ec.EllipticCurvePublicKey, + rsa.RSAPublicKey, + ed25519.Ed25519PublicKey, + ), + ): + raise TypeError("Unsupported key type") + if self._public_key is not None: + raise ValueError("public_key already set") + + return SSHCertificateBuilder( + _public_key=public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def serial(self, serial: int) -> SSHCertificateBuilder: + if not isinstance(serial, int): + raise TypeError("serial must be an integer") + if not 0 <= serial < 2**64: + raise ValueError("serial must be between 0 and 2**64") + if self._serial is not None: + raise ValueError("serial already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def type(self, type: SSHCertificateType) -> SSHCertificateBuilder: + if not isinstance(type, SSHCertificateType): + raise TypeError("type must be an SSHCertificateType") + if self._type is not None: + raise ValueError("type already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def key_id(self, key_id: bytes) -> SSHCertificateBuilder: + if not isinstance(key_id, bytes): + raise TypeError("key_id must be bytes") + if self._key_id is not None: + raise ValueError("key_id already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_principals( + self, valid_principals: list[bytes] + ) -> SSHCertificateBuilder: + if self._valid_for_all_principals: + raise ValueError( + "Principals can't be set because the cert is valid " + "for all principals" + ) + if ( + not all(isinstance(x, bytes) for x in valid_principals) + or not valid_principals + ): + raise TypeError( + "principals must be a list of bytes and can't be empty" + ) + if self._valid_principals: + raise ValueError("valid_principals already set") + + if len(valid_principals) > _SSHKEY_CERT_MAX_PRINCIPALS: + raise ValueError( + "Reached or exceeded the maximum number of valid_principals" + ) + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_for_all_principals(self): + if self._valid_principals: + raise ValueError( + "valid_principals already set, can't set " + "valid_for_all_principals" + ) + if self._valid_for_all_principals: + raise ValueError("valid_for_all_principals already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=True, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_before(self, valid_before: int | float) -> SSHCertificateBuilder: + if not isinstance(valid_before, (int, float)): + raise TypeError("valid_before must be an int or float") + valid_before = int(valid_before) + if valid_before < 0 or valid_before >= 2**64: + raise ValueError("valid_before must [0, 2**64)") + if self._valid_before is not None: + raise ValueError("valid_before already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_after(self, valid_after: int | float) -> SSHCertificateBuilder: + if not isinstance(valid_after, (int, float)): + raise TypeError("valid_after must be an int or float") + valid_after = int(valid_after) + if valid_after < 0 or valid_after >= 2**64: + raise ValueError("valid_after must [0, 2**64)") + if self._valid_after is not None: + raise ValueError("valid_after already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def add_critical_option( + self, name: bytes, value: bytes + ) -> SSHCertificateBuilder: + if not isinstance(name, bytes) or not isinstance(value, bytes): + raise TypeError("name and value must be bytes") + # This is O(n**2) + if name in [name for name, _ in self._critical_options]: + raise ValueError("Duplicate critical option name") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=[*self._critical_options, (name, value)], + _extensions=self._extensions, + ) + + def add_extension( + self, name: bytes, value: bytes + ) -> SSHCertificateBuilder: + if not isinstance(name, bytes) or not isinstance(value, bytes): + raise TypeError("name and value must be bytes") + # This is O(n**2) + if name in [name for name, _ in self._extensions]: + raise ValueError("Duplicate extension name") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=[*self._extensions, (name, value)], + ) + + def sign(self, private_key: SSHCertPrivateKeyTypes) -> SSHCertificate: + if not isinstance( + private_key, + ( + ec.EllipticCurvePrivateKey, + rsa.RSAPrivateKey, + ed25519.Ed25519PrivateKey, + ), + ): + raise TypeError("Unsupported private key type") + + if self._public_key is None: + raise ValueError("public_key must be set") + + # Not required + serial = 0 if self._serial is None else self._serial + + if self._type is None: + raise ValueError("type must be set") + + # Not required + key_id = b"" if self._key_id is None else self._key_id + + # A zero length list is valid, but means the certificate + # is valid for any principal of the specified type. We require + # the user to explicitly set valid_for_all_principals to get + # that behavior. + if not self._valid_principals and not self._valid_for_all_principals: + raise ValueError( + "valid_principals must be set if valid_for_all_principals " + "is False" + ) + + if self._valid_before is None: + raise ValueError("valid_before must be set") + + if self._valid_after is None: + raise ValueError("valid_after must be set") + + if self._valid_after > self._valid_before: + raise ValueError("valid_after must be earlier than valid_before") + + # lexically sort our byte strings + self._critical_options.sort(key=lambda x: x[0]) + self._extensions.sort(key=lambda x: x[0]) + + key_type = _get_ssh_key_type(self._public_key) + cert_prefix = key_type + _CERT_SUFFIX + + # Marshal the bytes to be signed + nonce = os.urandom(32) + kformat = _lookup_kformat(key_type) + f = _FragList() + f.put_sshstr(cert_prefix) + f.put_sshstr(nonce) + kformat.encode_public(self._public_key, f) + f.put_u64(serial) + f.put_u32(self._type.value) + f.put_sshstr(key_id) + fprincipals = _FragList() + for p in self._valid_principals: + fprincipals.put_sshstr(p) + f.put_sshstr(fprincipals.tobytes()) + f.put_u64(self._valid_after) + f.put_u64(self._valid_before) + fcrit = _FragList() + for name, value in self._critical_options: + fcrit.put_sshstr(name) + if len(value) > 0: + foptval = _FragList() + foptval.put_sshstr(value) + fcrit.put_sshstr(foptval.tobytes()) + else: + fcrit.put_sshstr(value) + f.put_sshstr(fcrit.tobytes()) + fext = _FragList() + for name, value in self._extensions: + fext.put_sshstr(name) + if len(value) > 0: + fextval = _FragList() + fextval.put_sshstr(value) + fext.put_sshstr(fextval.tobytes()) + else: + fext.put_sshstr(value) + f.put_sshstr(fext.tobytes()) + f.put_sshstr(b"") # RESERVED FIELD + # encode CA public key + ca_type = _get_ssh_key_type(private_key) + caformat = _lookup_kformat(ca_type) + caf = _FragList() + caf.put_sshstr(ca_type) + caformat.encode_public(private_key.public_key(), caf) + f.put_sshstr(caf.tobytes()) + # Sigs according to the rules defined for the CA's public key + # (RFC4253 section 6.6 for ssh-rsa, RFC5656 for ECDSA, + # and RFC8032 for Ed25519). + if isinstance(private_key, ed25519.Ed25519PrivateKey): + signature = private_key.sign(f.tobytes()) + fsig = _FragList() + fsig.put_sshstr(ca_type) + fsig.put_sshstr(signature) + f.put_sshstr(fsig.tobytes()) + elif isinstance(private_key, ec.EllipticCurvePrivateKey): + hash_alg = _get_ec_hash_alg(private_key.curve) + signature = private_key.sign(f.tobytes(), ec.ECDSA(hash_alg)) + r, s = asym_utils.decode_dss_signature(signature) + fsig = _FragList() + fsig.put_sshstr(ca_type) + fsigblob = _FragList() + fsigblob.put_mpint(r) + fsigblob.put_mpint(s) + fsig.put_sshstr(fsigblob.tobytes()) + f.put_sshstr(fsig.tobytes()) + + else: + assert isinstance(private_key, rsa.RSAPrivateKey) + # Just like Golang, we're going to use SHA512 for RSA + # https://cs.opensource.google/go/x/crypto/+/refs/tags/ + # v0.4.0:ssh/certs.go;l=445 + # RFC 8332 defines SHA256 and 512 as options + fsig = _FragList() + fsig.put_sshstr(_SSH_RSA_SHA512) + signature = private_key.sign( + f.tobytes(), padding.PKCS1v15(), hashes.SHA512() + ) + fsig.put_sshstr(signature) + f.put_sshstr(fsig.tobytes()) + + cert_data = binascii.b2a_base64(f.tobytes()).strip() + # load_ssh_public_identity returns a union, but this is + # guaranteed to be an SSHCertificate, so we cast to make + # mypy happy. + return typing.cast( + SSHCertificate, + load_ssh_public_identity(b"".join([cert_prefix, b" ", cert_data])), + ) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py new file mode 100644 index 0000000..c1af423 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py @@ -0,0 +1,9 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + + +class InvalidToken(Exception): + pass diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2cfd7f1f9cc91137a2b3f1ec135bbde3674d8523 GIT binary patch literal 448 zcmYjNu};G<6tt68l#>1fYX;&0goK0;3qmYiV9H{>#%|*_v5oDdgcUYczJQHi%F4tq zFkv@B^hvhve9!lMhS_Y2e0{uU>j)$C707;#Jh?^)+hY$HVz@#z&M`)}h(#=ZMJ(pg zOPt4SbdS>Ux9>tJ?vFr9<-iFgZ4u7)%g-4+6Aw7bF++L8u)iPm$(?MW66`^3xSXeP zKcQ4Y%_;4tl-7zhRlo_Qj}26V@`=oWciL?~Z=_T;Cqi$mZM0U#k%h437S^0Q(r7`2 z+=5|rDZJAHEN3KZxok-#7UyR~cdk_OG`k>HIDVp`*uaWgQkYIVwKAZ~j+F3RgCp9A zS~$^q*=^Ml3a1RAet>Y4X1X)6f7Zk=8wG%Oe4dU%lx5=@k9LYW(Mz#J?*kbfEwM literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a65b46474b1ad9f5044d5076f1c1b1386b6b59fa GIT binary patch literal 3400 zcma)8ZEqXL5#GHw9w}0yWm%S;z$IF=34?_6dmT4*?HWzpH>IuB7QG<79=S{Lq~jgE zx0FMMLV(&ufdcuKZ*>4E-}(>wTkdN==`R=v)Mxf2Syh9!N8a4*?(EylJTntD8a0OJ z%g;Mo|EM$ePimZgDrnqijOSm15lrxejd;L0@m695migL&jjx?JBR6nIUf`K=C#j75 zz#mnEs%g7PZL|<9jOsys)Cd};&r23ZOTm)iD@k*7E;z@Tw6~V!f~?ENz`n$S^THQZ z{AywWwEn^q4YBy#308j0#FFrzGvPn8f(ycW%-YQZI(?fL3sIV8I?{2L=Id>%aGy*v zEsN?zB{J=2LZYwH$Doc<9qM=_3uicr`fa;#9zS|;t?)pv-@0wSx2|2slJ%dYJ5dsg zjci+{XnQ}L3i%5G{VO9sNc^fIEHC?ah^}GY*T)$RTPdR1sN?>UU*9CiAwt}-SOxl1JV1C zjPx9g;B&Uc29~fi-?PBm`y4GBoU`TbdHWdKw0GS(Og7=_-rU`*2xo2&tbLdjEr0G9 z&Q?8Lo!ig&-x^Cxr=I) zY-TFf!;xCXF<DNu7o=pDE z)ORrQ@-N+CHj>?VybXJd$C=XIUYrk~Mq5(q?qnQ?ar!h;A{@kt4C%C@+u4!nPB)2r zw{LdGQ$5Vm8=ZH%d939-r7#LJ?@OBMI+plsZ^1c;Y7uB>U<4^`95Fdi(fe&zE;h#4%aO2E6Y`HVysUBryn1U z`{W}D7|8-I7{Gg3*uoL6@I-|`2513f&t1UT5p~gcVTnbt1gKHVfkg9#EzXH$^tfm{ zM&i6!LE94-&|U?-_`(ru;u88Qg2NYHQwS_uo#geMnZ0ByH_# zPge#c{|CtXMjqG;{W(w<0y&^H!3-J>$n`d6Z~RP7Tjgz9!zgd*tksjPNTV;xb?e&o zJFOlt)0wq@Za~mFan9Cg0s#_EDUQfZsah03ItO&c1G4VPq-@Y4{hr#PC-qY))7EWF z7p*&3|G_aBPZp-2_jaocdaXT*s_GKCN`#PCk~hE=eh84oIt)oRUj18twI$#r zFhAR~=X{^C%Kg^8W@*;@}OhQluZhtVkM&iqfV-o5(C zwcTCBr`zZ-x>Vl-uSa@)G#0!MDGKV?p4o&)OncLxaz;Omng)ce;=MQx62eNDr@W# zlH`51i&Q&z=8mXdWPi3Uv0Yc!wiYN9iP~qDSh!E#R9{y&aH7KQ#hY!*00nsvE}bbM z)$Gc#ryU1{V|-sV_)bWJho6?eC06jx0Y}dPDel1JL#}XZ79SoSe%h`p(gcc_Up#nN z!j+I(c$2Y!+ZDdfLSu`f@d30rNV2CT&~K5HKZsM5L^G*wqFDxm+CXKaa!%WO<)4M! z*B=Kps~z^1N{qlk81uFkV4R;vxRT{+H1J{;7E4D2z}#QMrRci9d5;4}1L;6kv}xA#Lu8 zZH!Bv+3Sp7u53yjj#ajUu$iSubd<*bh&6K3JhLsnayYwWuJm=1ZEJm_?NcbEVkZny z0EMGWOi*-$MLi6kOroS5QSV~85-<;lBQ>gD5qWhY!%=KCS()N+P73oq`0~rkYfXRI zX)d-`X_LVO)h0Gk1RM1_Na2;4x~QX!MwQb+sLSQ6LMym(y140-#ZBi`abvJ;{4MzQ zf0xAEd?@oX=_Gjbf6O{5o=n6Dmj6wBqT?hls}T1$DNLc>qKg@8Qi<|)S}OeaN?qS0 YQ03%Bb<5{Ie6q<`;FEQ$X|G-W7a4kIKmY&$ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e034e2d17538ee7c292c1d066191ebb8c880f89 GIT binary patch literal 1929 zcma)6OK&4Z5bo}Ic3+(4q0yerM`0FCjf_~svVPnB1BtLuC9JneP2~2ywmUUK6gHOw)w#QYK4_$4Yh^2OOQBKuN zx08HY$xO`(-9`xFMu}Rt#z_kCb3G8{q>`zK;Y_?alD6RD?LZwL`W%CN1(dbDCNWWT zP1kH~t--w?(E?0-YLEodb}6IYi&YPq3AXF29pJ`a`;)v%ly=5TC7L1AHe#<` zDb!q+DZ}$u1IxsQ&mjCRD2lA9qKZw}8Ef{H#pxOS9xQ-3IksOWXY@M;nse!{*>g+| zcC`9n1lRj@B9lTWA^l?BD1R*cr1ZfZF$EJOitsDBam>sD;G&Z?nJJJ|NGxaVY#eW6 zA$%caCFKCj@*b{v+o~8^5^<0RXl$oS#pqz43cAP0p0PBoS z*p!|*kOJ0`L_Z_92A?VpVPWAK)(owN#BD@x;L@8Y{uR;QRH(R?)dG^DDxs}l_X}ZT zgC$BVMr|Y!e*HgJ2PV?nPC!DAAhn=mFvvKDRuC5zpF@Slx*NyO=1IO;kq^)dq*G$1 z$hS~jJ7qMJOKn)d6g0WywFo7@ANF_K16$(Cu#Znn=1^Pkgv9F7?xrzD4{w%wuqpN6 zy3{xHzy05vg1`HL$&BdH|J@#7$1~l}bZbLOH2BBqxytg!bafNTZP9D*;|+YDU str: + parameters = [ + ("digits", hotp._length), + ("secret", base64.b32encode(hotp._key)), + ("algorithm", hotp._algorithm.name.upper()), + ] + + if issuer is not None: + parameters.append(("issuer", issuer)) + + parameters.extend(extra_parameters) + + label = ( + f"{quote(issuer)}:{quote(account_name)}" + if issuer + else quote(account_name) + ) + return f"otpauth://{type_name}/{label}?{urlencode(parameters)}" + + +class HOTP: + def __init__( + self, + key: Buffer, + length: int, + algorithm: HOTPHashTypes, + backend: typing.Any = None, + enforce_key_length: bool = True, + ) -> None: + if len(key) < 16 and enforce_key_length is True: + raise ValueError("Key length has to be at least 128 bits.") + + if not isinstance(length, int): + raise TypeError("Length parameter must be an integer type.") + + if length < 6 or length > 8: + raise ValueError("Length of HOTP has to be between 6 and 8.") + + if not isinstance(algorithm, (SHA1, SHA256, SHA512)): + raise TypeError("Algorithm must be SHA1, SHA256 or SHA512.") + + self._key = key + self._length = length + self._algorithm = algorithm + + def generate(self, counter: int) -> bytes: + if not isinstance(counter, int): + raise TypeError("Counter parameter must be an integer type.") + + truncated_value = self._dynamic_truncate(counter) + hotp = truncated_value % (10**self._length) + return "{0:0{1}}".format(hotp, self._length).encode() + + def verify(self, hotp: bytes, counter: int) -> None: + if not constant_time.bytes_eq(self.generate(counter), hotp): + raise InvalidToken("Supplied HOTP value does not match.") + + def _dynamic_truncate(self, counter: int) -> int: + ctx = hmac.HMAC(self._key, self._algorithm) + + try: + ctx.update(counter.to_bytes(length=8, byteorder="big")) + except OverflowError: + raise ValueError(f"Counter must be between 0 and {2**64 - 1}.") + + hmac_value = ctx.finalize() + + offset = hmac_value[len(hmac_value) - 1] & 0b1111 + p = hmac_value[offset : offset + 4] + return int.from_bytes(p, byteorder="big") & 0x7FFFFFFF + + def get_provisioning_uri( + self, account_name: str, counter: int, issuer: str | None + ) -> str: + return _generate_uri( + self, "hotp", account_name, issuer, [("counter", int(counter))] + ) diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/totp.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/totp.py new file mode 100644 index 0000000..10c725c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/totp.py @@ -0,0 +1,56 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.primitives import constant_time +from cryptography.hazmat.primitives.twofactor import InvalidToken +from cryptography.hazmat.primitives.twofactor.hotp import ( + HOTP, + HOTPHashTypes, + _generate_uri, +) +from cryptography.utils import Buffer + + +class TOTP: + def __init__( + self, + key: Buffer, + length: int, + algorithm: HOTPHashTypes, + time_step: int, + backend: typing.Any = None, + enforce_key_length: bool = True, + ): + self._time_step = time_step + self._hotp = HOTP( + key, length, algorithm, enforce_key_length=enforce_key_length + ) + + def generate(self, time: int | float) -> bytes: + if not isinstance(time, (int, float)): + raise TypeError( + "Time parameter must be an integer type or float type." + ) + + counter = int(time / self._time_step) + return self._hotp.generate(counter) + + def verify(self, totp: bytes, time: int) -> None: + if not constant_time.bytes_eq(self.generate(time), totp): + raise InvalidToken("Supplied TOTP value does not match.") + + def get_provisioning_uri( + self, account_name: str, issuer: str | None + ) -> str: + return _generate_uri( + self._hotp, + "totp", + account_name, + issuer, + [("period", int(self._time_step))], + ) diff --git a/.venv/lib/python3.9/site-packages/cryptography/py.typed b/.venv/lib/python3.9/site-packages/cryptography/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/cryptography/utils.py b/.venv/lib/python3.9/site-packages/cryptography/utils.py new file mode 100644 index 0000000..9cfc992 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/utils.py @@ -0,0 +1,135 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import enum +import sys +import types +import typing +import warnings +from collections.abc import Callable, Sequence + + +# We use a UserWarning subclass, instead of DeprecationWarning, because CPython +# decided deprecation warnings should be invisible by default. +class CryptographyDeprecationWarning(UserWarning): + pass + + +# Several APIs were deprecated with no specific end-of-life date because of the +# ubiquity of their use. They should not be removed until we agree on when that +# cycle ends. +DeprecatedIn36 = CryptographyDeprecationWarning +DeprecatedIn40 = CryptographyDeprecationWarning +DeprecatedIn41 = CryptographyDeprecationWarning +DeprecatedIn42 = CryptographyDeprecationWarning +DeprecatedIn43 = CryptographyDeprecationWarning +DeprecatedIn47 = CryptographyDeprecationWarning + + +# If you're wondering why we don't use `Buffer`, it's because `Buffer` would +# be more accurately named: Bufferable. It means something which has an +# `__buffer__`. Which means you can't actually treat the result as a buffer +# (and do things like take a `len()`). +Buffer = typing.Union[bytes, bytearray, memoryview] + + +def _check_bytes(name: str, value: bytes) -> None: + if not isinstance(value, bytes): + raise TypeError(f"{name} must be bytes") + + +def _check_byteslike(name: str, value: Buffer) -> None: + try: + memoryview(value) + except TypeError: + raise TypeError(f"{name} must be bytes-like") + + +def int_to_bytes(integer: int, length: int | None = None) -> bytes: + if length == 0: + raise ValueError("length argument can't be 0") + return integer.to_bytes( + length or (integer.bit_length() + 7) // 8 or 1, "big" + ) + + +class InterfaceNotImplemented(Exception): + pass + + +class _DeprecatedValue: + def __init__(self, value: object, message: str, warning_class): + self.value = value + self.message = message + self.warning_class = warning_class + + +class _ModuleWithDeprecations(types.ModuleType): + def __init__(self, module: types.ModuleType): + super().__init__(module.__name__) + self.__dict__["_module"] = module + + def __getattr__(self, name: str) -> typing.Any: + obj = getattr(self._module, name) + if isinstance(obj, _DeprecatedValue): + warnings.warn(obj.message, obj.warning_class, stacklevel=2) + obj = obj.value + return obj + + def __setattr__(self, attr: str, value: object) -> None: + setattr(self._module, attr, value) + + def __delattr__(self, attr: str) -> None: + obj = getattr(self._module, attr) + if isinstance(obj, _DeprecatedValue): + warnings.warn(obj.message, obj.warning_class, stacklevel=2) + + delattr(self._module, attr) + + def __dir__(self) -> Sequence[str]: + return ["_module", *dir(self._module)] + + +def deprecated( + value: object, + module_name: str, + message: str, + warning_class: type[Warning], + name: str | None = None, +) -> _DeprecatedValue: + module = sys.modules[module_name] + if not isinstance(module, _ModuleWithDeprecations): + sys.modules[module_name] = module = _ModuleWithDeprecations(module) + dv = _DeprecatedValue(value, message, warning_class) + # Maintain backwards compatibility with `name is None` for pyOpenSSL. + if name is not None: + setattr(module, name, dv) + return dv + + +def cached_property(func: Callable) -> property: + cached_name = f"_cached_{func}" + sentinel = object() + + def inner(instance: object): + cache = getattr(instance, cached_name, sentinel) + if cache is not sentinel: + return cache + result = func(instance) + setattr(instance, cached_name, result) + return result + + return property(inner) + + +# Python 3.10 changed representation of enums. We use well-defined object +# representation and string representation from Python 3.9. +class Enum(enum.Enum): + def __repr__(self) -> str: + return f"<{self.__class__.__name__}.{self._name_}: {self._value_!r}>" + + def __str__(self) -> str: + return f"{self.__class__.__name__}.{self._name_}" diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/x509/__init__.py new file mode 100644 index 0000000..cb34833 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/x509/__init__.py @@ -0,0 +1,271 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.x509 import certificate_transparency, oid, verification +from cryptography.x509.base import ( + Attribute, + AttributeNotFound, + Attributes, + Certificate, + CertificateBuilder, + CertificateRevocationList, + CertificateRevocationListBuilder, + CertificateSigningRequest, + CertificateSigningRequestBuilder, + InvalidVersion, + RevokedCertificate, + RevokedCertificateBuilder, + Version, + load_der_x509_certificate, + load_der_x509_crl, + load_der_x509_csr, + load_pem_x509_certificate, + load_pem_x509_certificates, + load_pem_x509_crl, + load_pem_x509_csr, + random_serial_number, +) +from cryptography.x509.extensions import ( + AccessDescription, + Admission, + Admissions, + AuthorityInformationAccess, + AuthorityKeyIdentifier, + BasicConstraints, + CertificateIssuer, + CertificatePolicies, + CRLDistributionPoints, + CRLNumber, + CRLReason, + DeltaCRLIndicator, + DistributionPoint, + DuplicateExtension, + ExtendedKeyUsage, + Extension, + ExtensionNotFound, + Extensions, + ExtensionType, + FreshestCRL, + GeneralNames, + InhibitAnyPolicy, + InvalidityDate, + IssuerAlternativeName, + IssuingDistributionPoint, + KeyUsage, + MSCertificateTemplate, + NameConstraints, + NamingAuthority, + NoticeReference, + OCSPAcceptableResponses, + OCSPNoCheck, + OCSPNonce, + PolicyConstraints, + PolicyInformation, + PrecertificateSignedCertificateTimestamps, + PrecertPoison, + PrivateKeyUsagePeriod, + ProfessionInfo, + ReasonFlags, + SignedCertificateTimestamps, + SubjectAlternativeName, + SubjectInformationAccess, + SubjectKeyIdentifier, + TLSFeature, + TLSFeatureType, + UnrecognizedExtension, + UserNotice, +) +from cryptography.x509.general_name import ( + DirectoryName, + DNSName, + GeneralName, + IPAddress, + OtherName, + RegisteredID, + RFC822Name, + UniformResourceIdentifier, + UnsupportedGeneralNameType, +) +from cryptography.x509.name import ( + Name, + NameAttribute, + RelativeDistinguishedName, +) +from cryptography.x509.oid import ( + AuthorityInformationAccessOID, + CertificatePoliciesOID, + CRLEntryExtensionOID, + ExtendedKeyUsageOID, + ExtensionOID, + NameOID, + ObjectIdentifier, + PublicKeyAlgorithmOID, + SignatureAlgorithmOID, +) + +OID_AUTHORITY_INFORMATION_ACCESS = ExtensionOID.AUTHORITY_INFORMATION_ACCESS +OID_AUTHORITY_KEY_IDENTIFIER = ExtensionOID.AUTHORITY_KEY_IDENTIFIER +OID_BASIC_CONSTRAINTS = ExtensionOID.BASIC_CONSTRAINTS +OID_CERTIFICATE_POLICIES = ExtensionOID.CERTIFICATE_POLICIES +OID_CRL_DISTRIBUTION_POINTS = ExtensionOID.CRL_DISTRIBUTION_POINTS +OID_EXTENDED_KEY_USAGE = ExtensionOID.EXTENDED_KEY_USAGE +OID_FRESHEST_CRL = ExtensionOID.FRESHEST_CRL +OID_INHIBIT_ANY_POLICY = ExtensionOID.INHIBIT_ANY_POLICY +OID_ISSUER_ALTERNATIVE_NAME = ExtensionOID.ISSUER_ALTERNATIVE_NAME +OID_KEY_USAGE = ExtensionOID.KEY_USAGE +OID_PRIVATE_KEY_USAGE_PERIOD = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD +OID_NAME_CONSTRAINTS = ExtensionOID.NAME_CONSTRAINTS +OID_OCSP_NO_CHECK = ExtensionOID.OCSP_NO_CHECK +OID_POLICY_CONSTRAINTS = ExtensionOID.POLICY_CONSTRAINTS +OID_POLICY_MAPPINGS = ExtensionOID.POLICY_MAPPINGS +OID_SUBJECT_ALTERNATIVE_NAME = ExtensionOID.SUBJECT_ALTERNATIVE_NAME +OID_SUBJECT_DIRECTORY_ATTRIBUTES = ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES +OID_SUBJECT_INFORMATION_ACCESS = ExtensionOID.SUBJECT_INFORMATION_ACCESS +OID_SUBJECT_KEY_IDENTIFIER = ExtensionOID.SUBJECT_KEY_IDENTIFIER + +OID_DSA_WITH_SHA1 = SignatureAlgorithmOID.DSA_WITH_SHA1 +OID_DSA_WITH_SHA224 = SignatureAlgorithmOID.DSA_WITH_SHA224 +OID_DSA_WITH_SHA256 = SignatureAlgorithmOID.DSA_WITH_SHA256 +OID_ECDSA_WITH_SHA1 = SignatureAlgorithmOID.ECDSA_WITH_SHA1 +OID_ECDSA_WITH_SHA224 = SignatureAlgorithmOID.ECDSA_WITH_SHA224 +OID_ECDSA_WITH_SHA256 = SignatureAlgorithmOID.ECDSA_WITH_SHA256 +OID_ECDSA_WITH_SHA384 = SignatureAlgorithmOID.ECDSA_WITH_SHA384 +OID_ECDSA_WITH_SHA512 = SignatureAlgorithmOID.ECDSA_WITH_SHA512 +OID_RSA_WITH_MD5 = SignatureAlgorithmOID.RSA_WITH_MD5 +OID_RSA_WITH_SHA1 = SignatureAlgorithmOID.RSA_WITH_SHA1 +OID_RSA_WITH_SHA224 = SignatureAlgorithmOID.RSA_WITH_SHA224 +OID_RSA_WITH_SHA256 = SignatureAlgorithmOID.RSA_WITH_SHA256 +OID_RSA_WITH_SHA384 = SignatureAlgorithmOID.RSA_WITH_SHA384 +OID_RSA_WITH_SHA512 = SignatureAlgorithmOID.RSA_WITH_SHA512 +OID_RSASSA_PSS = SignatureAlgorithmOID.RSASSA_PSS + +OID_COMMON_NAME = NameOID.COMMON_NAME +OID_COUNTRY_NAME = NameOID.COUNTRY_NAME +OID_DOMAIN_COMPONENT = NameOID.DOMAIN_COMPONENT +OID_DN_QUALIFIER = NameOID.DN_QUALIFIER +OID_EMAIL_ADDRESS = NameOID.EMAIL_ADDRESS +OID_GENERATION_QUALIFIER = NameOID.GENERATION_QUALIFIER +OID_GIVEN_NAME = NameOID.GIVEN_NAME +OID_LOCALITY_NAME = NameOID.LOCALITY_NAME +OID_ORGANIZATIONAL_UNIT_NAME = NameOID.ORGANIZATIONAL_UNIT_NAME +OID_ORGANIZATION_NAME = NameOID.ORGANIZATION_NAME +OID_PSEUDONYM = NameOID.PSEUDONYM +OID_SERIAL_NUMBER = NameOID.SERIAL_NUMBER +OID_STATE_OR_PROVINCE_NAME = NameOID.STATE_OR_PROVINCE_NAME +OID_SURNAME = NameOID.SURNAME +OID_TITLE = NameOID.TITLE + +OID_CLIENT_AUTH = ExtendedKeyUsageOID.CLIENT_AUTH +OID_CODE_SIGNING = ExtendedKeyUsageOID.CODE_SIGNING +OID_EMAIL_PROTECTION = ExtendedKeyUsageOID.EMAIL_PROTECTION +OID_OCSP_SIGNING = ExtendedKeyUsageOID.OCSP_SIGNING +OID_SERVER_AUTH = ExtendedKeyUsageOID.SERVER_AUTH +OID_TIME_STAMPING = ExtendedKeyUsageOID.TIME_STAMPING + +OID_ANY_POLICY = CertificatePoliciesOID.ANY_POLICY +OID_CPS_QUALIFIER = CertificatePoliciesOID.CPS_QUALIFIER +OID_CPS_USER_NOTICE = CertificatePoliciesOID.CPS_USER_NOTICE + +OID_CERTIFICATE_ISSUER = CRLEntryExtensionOID.CERTIFICATE_ISSUER +OID_CRL_REASON = CRLEntryExtensionOID.CRL_REASON +OID_INVALIDITY_DATE = CRLEntryExtensionOID.INVALIDITY_DATE + +OID_CA_ISSUERS = AuthorityInformationAccessOID.CA_ISSUERS +OID_OCSP = AuthorityInformationAccessOID.OCSP + +__all__ = [ + "OID_CA_ISSUERS", + "OID_OCSP", + "AccessDescription", + "Admission", + "Admissions", + "Attribute", + "AttributeNotFound", + "Attributes", + "AuthorityInformationAccess", + "AuthorityKeyIdentifier", + "BasicConstraints", + "CRLDistributionPoints", + "CRLNumber", + "CRLReason", + "Certificate", + "CertificateBuilder", + "CertificateIssuer", + "CertificatePolicies", + "CertificateRevocationList", + "CertificateRevocationListBuilder", + "CertificateSigningRequest", + "CertificateSigningRequestBuilder", + "DNSName", + "DeltaCRLIndicator", + "DirectoryName", + "DistributionPoint", + "DuplicateExtension", + "ExtendedKeyUsage", + "Extension", + "ExtensionNotFound", + "ExtensionType", + "Extensions", + "FreshestCRL", + "GeneralName", + "GeneralNames", + "IPAddress", + "InhibitAnyPolicy", + "InvalidVersion", + "InvalidityDate", + "IssuerAlternativeName", + "IssuingDistributionPoint", + "KeyUsage", + "MSCertificateTemplate", + "Name", + "NameAttribute", + "NameConstraints", + "NameOID", + "NamingAuthority", + "NoticeReference", + "OCSPAcceptableResponses", + "OCSPNoCheck", + "OCSPNonce", + "ObjectIdentifier", + "OtherName", + "PolicyConstraints", + "PolicyInformation", + "PrecertPoison", + "PrecertificateSignedCertificateTimestamps", + "PrivateKeyUsagePeriod", + "ProfessionInfo", + "PublicKeyAlgorithmOID", + "RFC822Name", + "ReasonFlags", + "RegisteredID", + "RelativeDistinguishedName", + "RevokedCertificate", + "RevokedCertificateBuilder", + "SignatureAlgorithmOID", + "SignedCertificateTimestamps", + "SubjectAlternativeName", + "SubjectInformationAccess", + "SubjectKeyIdentifier", + "TLSFeature", + "TLSFeatureType", + "UniformResourceIdentifier", + "UnrecognizedExtension", + "UnsupportedGeneralNameType", + "UserNotice", + "Version", + "certificate_transparency", + "load_der_x509_certificate", + "load_der_x509_crl", + "load_der_x509_csr", + "load_pem_x509_certificate", + "load_pem_x509_certificates", + "load_pem_x509_crl", + "load_pem_x509_csr", + "oid", + "random_serial_number", + "verification", + "verification", +] diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff2b82be8bd0d819372395d18c9d6f260b868cb9 GIT binary patch literal 6496 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/base.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1d7ca572803b6da1f40a663e82fe334fbf289b4 GIT binary patch literal 19831 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 B$0Yy& literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a303a8473ed5bc3d06401fbd82d6fe7bdba8ac2f GIT binary patch literal 1243 zcmZ`&&2G~`5Vm7Ganck}#R&pynah4e}v zfhXX`+i>=kQ(u7-Gj5>)!Ac&_e7l|*fAcL{UF})0zI+Z3t~-|X9fRfNLh#74Y|X*p z7PnI?vx#k^-%4AVL!8EUQaAHR+qRxs+~wYh#XaF1bUr!62c*qAfOO80E+9Vd0@6K4 zdZK->Li)Tnu?8!rSbt#GD=g0o!;CC)4WU;VnWE!2@Dn-9f>HCVMXFKG| zTPRG2qrK^~C(nkv(-FD+YHzd*e6hFg)AM%*r0e8}cPN3mLzrkE>MCW{EU zh+?6PoXMCOL5*U$E}0T}ya>yM@}Qp;cr;GZw_UqI{!iZ(IQA!fK%G-}-Uy{(5)EtP zfvY-jPWfoMVCvS<`o*uGd018T!C*?=0^{3F{Qu$s9Qw03&W?E8C2j7J4sSy-R>$e(mVMB+LZBNN~hb$%9#;g2`~I!(Q{rG!a@f+u|dO zO}c>dBG4d)fa!~bzbgeY5B8o6gL@mB_k&y0=aXPP+!&lEn+UNT>?FpNdOM0Z1NkbL zn^2(?W)>D|9`PcM5|gEon#GvorWP@3{Pu%zGhD~#VbfQ`v}yw*r^wx@17EwVQ`ioN4n@z6l?8{@+xaY*odL2N1RD) r$Tggv;KK_wPh}>wVOjaFKdAkkvy1u=HLg)<{Z`-ZJ8RyWyLR~}aTO|N literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/extensions.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/extensions.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..048f554c6719118a4138a4fd38a185bed2f9f031 GIT binary patch literal 81061 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 TeK6ExpTSk{5}5@cy^?g literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/general_name.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/general_name.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7b8ebd359b3d3d197433d92254d1f7cfca5e92bb GIT binary patch literal 9830 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/oid.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/x509/__pycache__/oid.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..598516758728ee3b4ff215cf389b33019b37454c GIT binary patch literal 753 zcmZvZ&5qMB5P+Tjr9Vkqeuad1fF4MY7LZn2A*!-S6=+*gxcFi@iQBjv$C2&qZg>u! zU^($hxpLwaIN`}&TC_fVvL_RNGal;uLuA+Ok6{0^jnHp69IloGs&AU^8iRL~;$BeEgr}=$ z&tkJoSPlZF>gj5+Ssx`&S0-f&{`hE11H+Sb8QCiA{qt-GWv6%H4d3O|l!_gNpKr=L z$vv&jd}Zf?R0q%lbOA1)4;TPO0GOom06t(0m{?rQ9@IlZwk3!OQ7}{dELK%v}5gYOFK9n9<~wQ dym@sR+8%Bt#$i#^C%A5Y#JgV|LVjE0{z4ylPl%(xqmq-{ z5u|Xa<5=AlE_G3MM5pLd@7C89ei6{12x;h$4avP5hxWkR^=Tj6-2egz*Y0CNhvsP|AV(6bEh3JDNDl)FQs0f-95a1aW;3` z;L~EcU9Q0&Yg+$K zMo0Ov<|4zk(HazmeGs;Nx5QLNfF@s@onn2A?h<`~p*s%mYNeGA&NYHHi1Paou1SG)lU ziiuR>3{)5QE6-L5(v%5-HHX&nzDVp=MK(OP@GS-w_GeH%i_jvl7$JTVHM6?K-$Sx3 z3rKi%rFC6Zr83Ei>+Ln$0hpw&c*^B9Q+c}P0@4-JkSFmT*yz#}3BaN%34c``JUJH0 None: + super().__init__(msg) + self.oid = oid + + +def _reject_duplicate_extension( + extension: Extension[ExtensionType], + extensions: list[Extension[ExtensionType]], +) -> None: + # This is quadratic in the number of extensions + for e in extensions: + if e.oid == extension.oid: + raise ValueError("This extension has already been set.") + + +def _reject_duplicate_attribute( + oid: ObjectIdentifier, + attributes: list[tuple[ObjectIdentifier, bytes, int | None]], +) -> None: + # This is quadratic in the number of attributes + for attr_oid, _, _ in attributes: + if attr_oid == oid: + raise ValueError("This attribute has already been set.") + + +def _convert_to_naive_utc_time(time: datetime.datetime) -> datetime.datetime: + """Normalizes a datetime to a naive datetime in UTC. + + time -- datetime to normalize. Assumed to be in UTC if not timezone + aware. + """ + if time.tzinfo is not None: + offset = time.utcoffset() + offset = offset if offset else datetime.timedelta() + return time.replace(tzinfo=None) - offset + else: + return time + + +class Attribute: + def __init__( + self, + oid: ObjectIdentifier, + value: bytes, + _type: int = _ASN1Type.UTF8String.value, + ) -> None: + self._oid = oid + self._value = value + self._type = _type + + @property + def oid(self) -> ObjectIdentifier: + return self._oid + + @property + def value(self) -> bytes: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Attribute): + return NotImplemented + + return ( + self.oid == other.oid + and self.value == other.value + and self._type == other._type + ) + + def __hash__(self) -> int: + return hash((self.oid, self.value, self._type)) + + +class Attributes: + def __init__( + self, + attributes: Iterable[Attribute], + ) -> None: + self._attributes = list(attributes) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_attributes") + + def __repr__(self) -> str: + return f"" + + def get_attribute_for_oid(self, oid: ObjectIdentifier) -> Attribute: + for attr in self: + if attr.oid == oid: + return attr + + raise AttributeNotFound(f"No {oid} attribute was found", oid) + + +class Version(utils.Enum): + v1 = 0 + v3 = 2 + + +class InvalidVersion(Exception): + def __init__(self, msg: str, parsed_version: int) -> None: + super().__init__(msg) + self.parsed_version = parsed_version + + +Certificate = rust_x509.Certificate +RevokedCertificate = rust_x509.RevokedCertificate + + +CertificateRevocationList = rust_x509.CertificateRevocationList +CertificateSigningRequest = rust_x509.CertificateSigningRequest + + +load_pem_x509_certificate = rust_x509.load_pem_x509_certificate +load_der_x509_certificate = rust_x509.load_der_x509_certificate + +load_pem_x509_certificates = rust_x509.load_pem_x509_certificates + +load_pem_x509_csr = rust_x509.load_pem_x509_csr +load_der_x509_csr = rust_x509.load_der_x509_csr + +load_pem_x509_crl = rust_x509.load_pem_x509_crl +load_der_x509_crl = rust_x509.load_der_x509_crl + + +class CertificateSigningRequestBuilder: + def __init__( + self, + subject_name: Name | None = None, + extensions: list[Extension[ExtensionType]] = [], + attributes: list[tuple[ObjectIdentifier, bytes, int | None]] = [], + ): + """ + Creates an empty X.509 certificate request (v1). + """ + self._subject_name = subject_name + self._extensions = extensions + self._attributes = attributes + + def subject_name(self, name: Name) -> CertificateSigningRequestBuilder: + """ + Sets the certificate requestor's distinguished name. + """ + if not isinstance(name, Name): + raise TypeError("Expecting x509.Name object.") + if self._subject_name is not None: + raise ValueError("The subject name may only be set once.") + return CertificateSigningRequestBuilder( + name, self._extensions, self._attributes + ) + + def add_extension( + self, extval: ExtensionType, critical: bool + ) -> CertificateSigningRequestBuilder: + """ + Adds an X.509 extension to the certificate request. + """ + if not isinstance(extval, ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + + return CertificateSigningRequestBuilder( + self._subject_name, + [*self._extensions, extension], + self._attributes, + ) + + def add_attribute( + self, + oid: ObjectIdentifier, + value: bytes, + *, + _tag: _ASN1Type | None = None, + ) -> CertificateSigningRequestBuilder: + """ + Adds an X.509 attribute with an OID and associated value. + """ + if not isinstance(oid, ObjectIdentifier): + raise TypeError("oid must be an ObjectIdentifier") + + if not isinstance(value, bytes): + raise TypeError("value must be bytes") + + if _tag is not None and not isinstance(_tag, _ASN1Type): + raise TypeError("tag must be _ASN1Type") + + _reject_duplicate_attribute(oid, self._attributes) + + if _tag is not None: + tag = _tag.value + else: + tag = None + + return CertificateSigningRequestBuilder( + self._subject_name, + self._extensions, + [*self._attributes, (oid, value, tag)], + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, + ) -> CertificateSigningRequest: + """ + Signs the request using the requestor's private key. + """ + if self._subject_name is None: + raise ValueError("A CertificateSigningRequest must have a subject") + + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_csr( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) + + +class CertificateBuilder: + _extensions: list[Extension[ExtensionType]] + + def __init__( + self, + issuer_name: Name | None = None, + subject_name: Name | None = None, + public_key: CertificatePublicKeyTypes | None = None, + serial_number: int | None = None, + not_valid_before: datetime.datetime | None = None, + not_valid_after: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], + public_key_rsa_padding: type[padding.PSS] | None = None, + ) -> None: + self._version = Version.v3 + self._issuer_name = issuer_name + self._subject_name = subject_name + self._public_key = public_key + self._serial_number = serial_number + self._not_valid_before = not_valid_before + self._not_valid_after = not_valid_after + self._extensions = extensions + self._public_key_rsa_padding = public_key_rsa_padding + + def issuer_name(self, name: Name) -> CertificateBuilder: + """ + Sets the CA's distinguished name. + """ + if not isinstance(name, Name): + raise TypeError("Expecting x509.Name object.") + if self._issuer_name is not None: + raise ValueError("The issuer name may only be set once.") + return CertificateBuilder( + name, + self._subject_name, + self._public_key, + self._serial_number, + self._not_valid_before, + self._not_valid_after, + self._extensions, + self._public_key_rsa_padding, + ) + + def subject_name(self, name: Name) -> CertificateBuilder: + """ + Sets the requestor's distinguished name. + """ + if not isinstance(name, Name): + raise TypeError("Expecting x509.Name object.") + if self._subject_name is not None: + raise ValueError("The subject name may only be set once.") + return CertificateBuilder( + self._issuer_name, + name, + self._public_key, + self._serial_number, + self._not_valid_before, + self._not_valid_after, + self._extensions, + self._public_key_rsa_padding, + ) + + def public_key( + self, + key: CertificatePublicKeyTypes, + *, + rsa_padding: type[padding.PSS] | None = None, + ) -> CertificateBuilder: + """ + Sets the requestor's public key (as found in the signing request). + """ + if not isinstance( + key, + ( + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + mldsa.MLDSA44PublicKey, + mldsa.MLDSA65PublicKey, + mldsa.MLDSA87PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, + ), + ): + raise TypeError( + "Expecting one of DSAPublicKey, RSAPublicKey," + " EllipticCurvePublicKey, Ed25519PublicKey," + " Ed448PublicKey, MLDSA44PublicKey, MLDSA65PublicKey," + " MLDSA87PublicKey, X25519PublicKey, or " + "X448PublicKey." + ) + if rsa_padding is not None: + if rsa_padding is not padding.PSS: + raise TypeError( + "rsa_padding must be the PSS class, not an instance" + ) + if not isinstance(key, rsa.RSAPublicKey): + raise TypeError( + "rsa_padding is only supported with RSA public keys" + ) + if self._public_key is not None: + raise ValueError("The public key may only be set once.") + return CertificateBuilder( + self._issuer_name, + self._subject_name, + key, + self._serial_number, + self._not_valid_before, + self._not_valid_after, + self._extensions, + rsa_padding, + ) + + def serial_number(self, number: int) -> CertificateBuilder: + """ + Sets the certificate serial number. + """ + if not isinstance(number, int): + raise TypeError("Serial number must be of integral type.") + if self._serial_number is not None: + raise ValueError("The serial number may only be set once.") + if number <= 0: + raise ValueError("The serial number should be positive.") + + # ASN.1 integers are always signed, so most significant bit must be + # zero. + if number.bit_length() >= 160: # As defined in RFC 5280 + raise ValueError( + "The serial number should not be more than 159 bits." + ) + return CertificateBuilder( + self._issuer_name, + self._subject_name, + self._public_key, + number, + self._not_valid_before, + self._not_valid_after, + self._extensions, + self._public_key_rsa_padding, + ) + + def not_valid_before(self, time: datetime.datetime) -> CertificateBuilder: + """ + Sets the certificate activation time. + """ + if not isinstance(time, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._not_valid_before is not None: + raise ValueError("The not valid before may only be set once.") + time = _convert_to_naive_utc_time(time) + if time < _EARLIEST_UTC_TIME: + raise ValueError( + "The not valid before date must be on or after" + " 1950 January 1)." + ) + if self._not_valid_after is not None and time > self._not_valid_after: + raise ValueError( + "The not valid before date must be before the not valid after " + "date." + ) + return CertificateBuilder( + self._issuer_name, + self._subject_name, + self._public_key, + self._serial_number, + time, + self._not_valid_after, + self._extensions, + self._public_key_rsa_padding, + ) + + def not_valid_after(self, time: datetime.datetime) -> CertificateBuilder: + """ + Sets the certificate expiration time. + """ + if not isinstance(time, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._not_valid_after is not None: + raise ValueError("The not valid after may only be set once.") + time = _convert_to_naive_utc_time(time) + if time < _EARLIEST_UTC_TIME: + raise ValueError( + "The not valid after date must be on or after 1950 January 1." + ) + if ( + self._not_valid_before is not None + and time < self._not_valid_before + ): + raise ValueError( + "The not valid after date must be after the not valid before " + "date." + ) + return CertificateBuilder( + self._issuer_name, + self._subject_name, + self._public_key, + self._serial_number, + self._not_valid_before, + time, + self._extensions, + self._public_key_rsa_padding, + ) + + def add_extension( + self, extval: ExtensionType, critical: bool + ) -> CertificateBuilder: + """ + Adds an X.509 extension to the certificate. + """ + if not isinstance(extval, ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + + return CertificateBuilder( + self._issuer_name, + self._subject_name, + self._public_key, + self._serial_number, + self._not_valid_before, + self._not_valid_after, + [*self._extensions, extension], + self._public_key_rsa_padding, + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, + ) -> Certificate: + """ + Signs the certificate using the CA's private key. + """ + if self._subject_name is None: + raise ValueError("A certificate must have a subject name") + + if self._issuer_name is None: + raise ValueError("A certificate must have an issuer name") + + if self._serial_number is None: + raise ValueError("A certificate must have a serial number") + + if self._not_valid_before is None: + raise ValueError("A certificate must have a not valid before time") + + if self._not_valid_after is None: + raise ValueError("A certificate must have a not valid after time") + + if self._public_key is None: + raise ValueError("A certificate must have a public key") + + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_certificate( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) + + +class CertificateRevocationListBuilder: + _extensions: list[Extension[ExtensionType]] + _revoked_certificates: list[RevokedCertificate] + + def __init__( + self, + issuer_name: Name | None = None, + last_update: datetime.datetime | None = None, + next_update: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], + revoked_certificates: list[RevokedCertificate] = [], + ): + self._issuer_name = issuer_name + self._last_update = last_update + self._next_update = next_update + self._extensions = extensions + self._revoked_certificates = revoked_certificates + + def issuer_name( + self, issuer_name: Name + ) -> CertificateRevocationListBuilder: + if not isinstance(issuer_name, Name): + raise TypeError("Expecting x509.Name object.") + if self._issuer_name is not None: + raise ValueError("The issuer name may only be set once.") + return CertificateRevocationListBuilder( + issuer_name, + self._last_update, + self._next_update, + self._extensions, + self._revoked_certificates, + ) + + def last_update( + self, last_update: datetime.datetime + ) -> CertificateRevocationListBuilder: + if not isinstance(last_update, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._last_update is not None: + raise ValueError("Last update may only be set once.") + last_update = _convert_to_naive_utc_time(last_update) + if last_update < _EARLIEST_UTC_TIME: + raise ValueError( + "The last update date must be on or after 1950 January 1." + ) + if self._next_update is not None and last_update > self._next_update: + raise ValueError( + "The last update date must be before the next update date." + ) + return CertificateRevocationListBuilder( + self._issuer_name, + last_update, + self._next_update, + self._extensions, + self._revoked_certificates, + ) + + def next_update( + self, next_update: datetime.datetime + ) -> CertificateRevocationListBuilder: + if not isinstance(next_update, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._next_update is not None: + raise ValueError("Last update may only be set once.") + next_update = _convert_to_naive_utc_time(next_update) + if next_update < _EARLIEST_UTC_TIME: + raise ValueError( + "The last update date must be on or after 1950 January 1." + ) + if self._last_update is not None and next_update < self._last_update: + raise ValueError( + "The next update date must be after the last update date." + ) + return CertificateRevocationListBuilder( + self._issuer_name, + self._last_update, + next_update, + self._extensions, + self._revoked_certificates, + ) + + def add_extension( + self, extval: ExtensionType, critical: bool + ) -> CertificateRevocationListBuilder: + """ + Adds an X.509 extension to the certificate revocation list. + """ + if not isinstance(extval, ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + return CertificateRevocationListBuilder( + self._issuer_name, + self._last_update, + self._next_update, + [*self._extensions, extension], + self._revoked_certificates, + ) + + def add_revoked_certificate( + self, revoked_certificate: RevokedCertificate + ) -> CertificateRevocationListBuilder: + """ + Adds a revoked certificate to the CRL. + """ + if not isinstance(revoked_certificate, RevokedCertificate): + raise TypeError("Must be an instance of RevokedCertificate") + + return CertificateRevocationListBuilder( + self._issuer_name, + self._last_update, + self._next_update, + self._extensions, + [*self._revoked_certificates, revoked_certificate], + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, + ) -> CertificateRevocationList: + if self._issuer_name is None: + raise ValueError("A CRL must have an issuer name") + + if self._last_update is None: + raise ValueError("A CRL must have a last update time") + + if self._next_update is None: + raise ValueError("A CRL must have a next update time") + + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_crl( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) + + +class RevokedCertificateBuilder: + def __init__( + self, + serial_number: int | None = None, + revocation_date: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], + ): + self._serial_number = serial_number + self._revocation_date = revocation_date + self._extensions = extensions + + def serial_number(self, number: int) -> RevokedCertificateBuilder: + if not isinstance(number, int): + raise TypeError("Serial number must be of integral type.") + if self._serial_number is not None: + raise ValueError("The serial number may only be set once.") + if number <= 0: + raise ValueError("The serial number should be positive") + + # ASN.1 integers are always signed, so most significant bit must be + # zero. + if number.bit_length() >= 160: # As defined in RFC 5280 + raise ValueError( + "The serial number should not be more than 159 bits." + ) + return RevokedCertificateBuilder( + number, self._revocation_date, self._extensions + ) + + def revocation_date( + self, time: datetime.datetime + ) -> RevokedCertificateBuilder: + if not isinstance(time, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._revocation_date is not None: + raise ValueError("The revocation date may only be set once.") + time = _convert_to_naive_utc_time(time) + if time < _EARLIEST_UTC_TIME: + raise ValueError( + "The revocation date must be on or after 1950 January 1." + ) + return RevokedCertificateBuilder( + self._serial_number, time, self._extensions + ) + + def add_extension( + self, extval: ExtensionType, critical: bool + ) -> RevokedCertificateBuilder: + if not isinstance(extval, ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + return RevokedCertificateBuilder( + self._serial_number, + self._revocation_date, + [*self._extensions, extension], + ) + + def build(self, backend: typing.Any = None) -> RevokedCertificate: + if self._serial_number is None: + raise ValueError("A revoked certificate must have a serial number") + if self._revocation_date is None: + raise ValueError( + "A revoked certificate must have a revocation date" + ) + return rust_x509.create_revoked_certificate(self) + + +def random_serial_number() -> int: + return int.from_bytes(os.urandom(20), "big") >> 1 diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/certificate_transparency.py b/.venv/lib/python3.9/site-packages/cryptography/x509/certificate_transparency.py new file mode 100644 index 0000000..fb66cc6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/x509/certificate_transparency.py @@ -0,0 +1,35 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.hazmat.bindings._rust import x509 as rust_x509 + + +class LogEntryType(utils.Enum): + X509_CERTIFICATE = 0 + PRE_CERTIFICATE = 1 + + +class Version(utils.Enum): + v1 = 0 + + +class SignatureAlgorithm(utils.Enum): + """ + Signature algorithms that are valid for SCTs. + + These are exactly the same as SignatureAlgorithm in RFC 5246 (TLS 1.2). + + See: + """ + + ANONYMOUS = 0 + RSA = 1 + DSA = 2 + ECDSA = 3 + + +SignedCertificateTimestamp = rust_x509.Sct diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/extensions.py b/.venv/lib/python3.9/site-packages/cryptography/x509/extensions.py new file mode 100644 index 0000000..7b78e9e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/x509/extensions.py @@ -0,0 +1,2533 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import datetime +import hashlib +import ipaddress +import typing +from collections.abc import Iterable, Iterator + +from cryptography import utils +from cryptography.hazmat.bindings._rust import asn1 +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.hazmat.primitives import constant_time, serialization +from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurvePublicKey +from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPublicKeyTypes, + CertificatePublicKeyTypes, +) +from cryptography.x509.certificate_transparency import ( + SignedCertificateTimestamp, +) +from cryptography.x509.general_name import ( + DirectoryName, + DNSName, + GeneralName, + IPAddress, + OtherName, + RegisteredID, + RFC822Name, + UniformResourceIdentifier, + _IPAddressTypes, +) +from cryptography.x509.name import Name, RelativeDistinguishedName +from cryptography.x509.oid import ( + CRLEntryExtensionOID, + ExtensionOID, + ObjectIdentifier, + OCSPExtensionOID, +) + +ExtensionTypeVar = typing.TypeVar( + "ExtensionTypeVar", bound="ExtensionType", covariant=True +) + + +def _key_identifier_from_public_key( + public_key: CertificatePublicKeyTypes, +) -> bytes: + if isinstance(public_key, RSAPublicKey): + data = public_key.public_bytes( + serialization.Encoding.DER, + serialization.PublicFormat.PKCS1, + ) + elif isinstance(public_key, EllipticCurvePublicKey): + data = public_key.public_bytes( + serialization.Encoding.X962, + serialization.PublicFormat.UncompressedPoint, + ) + else: + # This is a very slow way to do this. + serialized = public_key.public_bytes( + serialization.Encoding.DER, + serialization.PublicFormat.SubjectPublicKeyInfo, + ) + data = asn1.parse_spki_for_data(serialized) + + return hashlib.sha1(data).digest() + + +def _make_sequence_methods(field_name: str): + def len_method(self) -> int: + return len(getattr(self, field_name)) + + def iter_method(self): + return iter(getattr(self, field_name)) + + def getitem_method(self, idx): + return getattr(self, field_name)[idx] + + return len_method, iter_method, getitem_method + + +class DuplicateExtension(Exception): + def __init__(self, msg: str, oid: ObjectIdentifier) -> None: + super().__init__(msg) + self.oid = oid + + +class ExtensionNotFound(Exception): + def __init__(self, msg: str, oid: ObjectIdentifier) -> None: + super().__init__(msg) + self.oid = oid + + +class ExtensionType(metaclass=abc.ABCMeta): + oid: typing.ClassVar[ObjectIdentifier] + + def public_bytes(self) -> bytes: + """ + Serializes the extension type to DER. + """ + raise NotImplementedError( + f"public_bytes is not implemented for extension type {self!r}" + ) + + +class Extensions: + def __init__(self, extensions: Iterable[Extension[ExtensionType]]) -> None: + self._extensions = list(extensions) + + def get_extension_for_oid( + self, oid: ObjectIdentifier + ) -> Extension[ExtensionType]: + for ext in self: + if ext.oid == oid: + return ext + + raise ExtensionNotFound(f"No {oid} extension was found", oid) + + def get_extension_for_class( + self, extclass: type[ExtensionTypeVar] + ) -> Extension[ExtensionTypeVar]: + if extclass is UnrecognizedExtension: + raise TypeError( + "UnrecognizedExtension can't be used with " + "get_extension_for_class because more than one instance of the" + " class may be present." + ) + + for ext in self: + if isinstance(ext.value, extclass): + return ext + + raise ExtensionNotFound( + f"No {extclass} extension was found", extclass.oid + ) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_extensions") + + def __repr__(self) -> str: + return f"" + + +class CRLNumber(ExtensionType): + oid = ExtensionOID.CRL_NUMBER + + def __init__(self, crl_number: int) -> None: + if not isinstance(crl_number, int): + raise TypeError("crl_number must be an integer") + + self._crl_number = crl_number + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CRLNumber): + return NotImplemented + + return self.crl_number == other.crl_number + + def __hash__(self) -> int: + return hash(self.crl_number) + + def __repr__(self) -> str: + return f"" + + @property + def crl_number(self) -> int: + return self._crl_number + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class AuthorityKeyIdentifier(ExtensionType): + oid = ExtensionOID.AUTHORITY_KEY_IDENTIFIER + + def __init__( + self, + key_identifier: bytes | None, + authority_cert_issuer: Iterable[GeneralName] | None, + authority_cert_serial_number: int | None, + ) -> None: + if (authority_cert_issuer is None) != ( + authority_cert_serial_number is None + ): + raise ValueError( + "authority_cert_issuer and authority_cert_serial_number " + "must both be present or both None" + ) + + if authority_cert_issuer is not None: + authority_cert_issuer = list(authority_cert_issuer) + if not all( + isinstance(x, GeneralName) for x in authority_cert_issuer + ): + raise TypeError( + "authority_cert_issuer must be a list of GeneralName " + "objects" + ) + + if authority_cert_serial_number is not None and not isinstance( + authority_cert_serial_number, int + ): + raise TypeError("authority_cert_serial_number must be an integer") + + self._key_identifier = key_identifier + self._authority_cert_issuer = authority_cert_issuer + self._authority_cert_serial_number = authority_cert_serial_number + + # This takes a subset of CertificatePublicKeyTypes because an issuer + # cannot have an X25519/X448 key. This introduces some unfortunate + # asymmetry that requires typing users to explicitly + # narrow their type, but we should make this accurate and not just + # convenient. + @classmethod + def from_issuer_public_key( + cls, public_key: CertificateIssuerPublicKeyTypes + ) -> AuthorityKeyIdentifier: + digest = _key_identifier_from_public_key(public_key) + return cls( + key_identifier=digest, + authority_cert_issuer=None, + authority_cert_serial_number=None, + ) + + @classmethod + def from_issuer_subject_key_identifier( + cls, ski: SubjectKeyIdentifier + ) -> AuthorityKeyIdentifier: + return cls( + key_identifier=ski.digest, + authority_cert_issuer=None, + authority_cert_serial_number=None, + ) + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, AuthorityKeyIdentifier): + return NotImplemented + + return ( + self.key_identifier == other.key_identifier + and self.authority_cert_issuer == other.authority_cert_issuer + and self.authority_cert_serial_number + == other.authority_cert_serial_number + ) + + def __hash__(self) -> int: + if self.authority_cert_issuer is None: + aci = None + else: + aci = tuple(self.authority_cert_issuer) + return hash( + (self.key_identifier, aci, self.authority_cert_serial_number) + ) + + @property + def key_identifier(self) -> bytes | None: + return self._key_identifier + + @property + def authority_cert_issuer( + self, + ) -> list[GeneralName] | None: + return self._authority_cert_issuer + + @property + def authority_cert_serial_number(self) -> int | None: + return self._authority_cert_serial_number + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class SubjectKeyIdentifier(ExtensionType): + oid = ExtensionOID.SUBJECT_KEY_IDENTIFIER + + def __init__(self, digest: bytes) -> None: + self._digest = digest + + @classmethod + def from_public_key( + cls, public_key: CertificatePublicKeyTypes + ) -> SubjectKeyIdentifier: + return cls(_key_identifier_from_public_key(public_key)) + + @property + def digest(self) -> bytes: + return self._digest + + @property + def key_identifier(self) -> bytes: + return self._digest + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SubjectKeyIdentifier): + return NotImplemented + + return constant_time.bytes_eq(self.digest, other.digest) + + def __hash__(self) -> int: + return hash(self.digest) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class AuthorityInformationAccess(ExtensionType): + oid = ExtensionOID.AUTHORITY_INFORMATION_ACCESS + + def __init__(self, descriptions: Iterable[AccessDescription]) -> None: + descriptions = list(descriptions) + if not all(isinstance(x, AccessDescription) for x in descriptions): + raise TypeError( + "Every item in the descriptions list must be an " + "AccessDescription" + ) + + self._descriptions = descriptions + + __len__, __iter__, __getitem__ = _make_sequence_methods("_descriptions") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, AuthorityInformationAccess): + return NotImplemented + + return self._descriptions == other._descriptions + + def __hash__(self) -> int: + return hash(tuple(self._descriptions)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class SubjectInformationAccess(ExtensionType): + oid = ExtensionOID.SUBJECT_INFORMATION_ACCESS + + def __init__(self, descriptions: Iterable[AccessDescription]) -> None: + descriptions = list(descriptions) + if not all(isinstance(x, AccessDescription) for x in descriptions): + raise TypeError( + "Every item in the descriptions list must be an " + "AccessDescription" + ) + + self._descriptions = descriptions + + __len__, __iter__, __getitem__ = _make_sequence_methods("_descriptions") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SubjectInformationAccess): + return NotImplemented + + return self._descriptions == other._descriptions + + def __hash__(self) -> int: + return hash(tuple(self._descriptions)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class AccessDescription: + def __init__( + self, access_method: ObjectIdentifier, access_location: GeneralName + ) -> None: + if not isinstance(access_method, ObjectIdentifier): + raise TypeError("access_method must be an ObjectIdentifier") + + if not isinstance(access_location, GeneralName): + raise TypeError("access_location must be a GeneralName") + + self._access_method = access_method + self._access_location = access_location + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, AccessDescription): + return NotImplemented + + return ( + self.access_method == other.access_method + and self.access_location == other.access_location + ) + + def __hash__(self) -> int: + return hash((self.access_method, self.access_location)) + + @property + def access_method(self) -> ObjectIdentifier: + return self._access_method + + @property + def access_location(self) -> GeneralName: + return self._access_location + + +class BasicConstraints(ExtensionType): + oid = ExtensionOID.BASIC_CONSTRAINTS + + def __init__(self, ca: bool, path_length: int | None) -> None: + if not isinstance(ca, bool): + raise TypeError("ca must be a boolean value") + + if path_length is not None and not ca: + raise ValueError("path_length must be None when ca is False") + + if path_length is not None and ( + not isinstance(path_length, int) or path_length < 0 + ): + raise TypeError( + "path_length must be a non-negative integer or None" + ) + + self._ca = ca + self._path_length = path_length + + @property + def ca(self) -> bool: + return self._ca + + @property + def path_length(self) -> int | None: + return self._path_length + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, BasicConstraints): + return NotImplemented + + return self.ca == other.ca and self.path_length == other.path_length + + def __hash__(self) -> int: + return hash((self.ca, self.path_length)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class DeltaCRLIndicator(ExtensionType): + oid = ExtensionOID.DELTA_CRL_INDICATOR + + def __init__(self, crl_number: int) -> None: + if not isinstance(crl_number, int): + raise TypeError("crl_number must be an integer") + + self._crl_number = crl_number + + @property + def crl_number(self) -> int: + return self._crl_number + + def __eq__(self, other: object) -> bool: + if not isinstance(other, DeltaCRLIndicator): + return NotImplemented + + return self.crl_number == other.crl_number + + def __hash__(self) -> int: + return hash(self.crl_number) + + def __repr__(self) -> str: + return f"" + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class CRLDistributionPoints(ExtensionType): + oid = ExtensionOID.CRL_DISTRIBUTION_POINTS + + def __init__( + self, distribution_points: Iterable[DistributionPoint] + ) -> None: + distribution_points = list(distribution_points) + if not all( + isinstance(x, DistributionPoint) for x in distribution_points + ): + raise TypeError( + "distribution_points must be a list of DistributionPoint " + "objects" + ) + + self._distribution_points = distribution_points + + __len__, __iter__, __getitem__ = _make_sequence_methods( + "_distribution_points" + ) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CRLDistributionPoints): + return NotImplemented + + return self._distribution_points == other._distribution_points + + def __hash__(self) -> int: + return hash(tuple(self._distribution_points)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class FreshestCRL(ExtensionType): + oid = ExtensionOID.FRESHEST_CRL + + def __init__( + self, distribution_points: Iterable[DistributionPoint] + ) -> None: + distribution_points = list(distribution_points) + if not all( + isinstance(x, DistributionPoint) for x in distribution_points + ): + raise TypeError( + "distribution_points must be a list of DistributionPoint " + "objects" + ) + + self._distribution_points = distribution_points + + __len__, __iter__, __getitem__ = _make_sequence_methods( + "_distribution_points" + ) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, FreshestCRL): + return NotImplemented + + return self._distribution_points == other._distribution_points + + def __hash__(self) -> int: + return hash(tuple(self._distribution_points)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class DistributionPoint: + def __init__( + self, + full_name: Iterable[GeneralName] | None, + relative_name: RelativeDistinguishedName | None, + reasons: frozenset[ReasonFlags] | None, + crl_issuer: Iterable[GeneralName] | None, + ) -> None: + if full_name and relative_name: + raise ValueError( + "You cannot provide both full_name and relative_name, at " + "least one must be None." + ) + if not full_name and not relative_name and not crl_issuer: + raise ValueError( + "Either full_name, relative_name or crl_issuer must be " + "provided." + ) + + if full_name is not None: + full_name = list(full_name) + if not all(isinstance(x, GeneralName) for x in full_name): + raise TypeError( + "full_name must be a list of GeneralName objects" + ) + + if relative_name: + if not isinstance(relative_name, RelativeDistinguishedName): + raise TypeError( + "relative_name must be a RelativeDistinguishedName" + ) + + if crl_issuer is not None: + crl_issuer = list(crl_issuer) + if not all(isinstance(x, GeneralName) for x in crl_issuer): + raise TypeError( + "crl_issuer must be None or a list of general names" + ) + + if reasons and ( + not isinstance(reasons, frozenset) + or not all(isinstance(x, ReasonFlags) for x in reasons) + ): + raise TypeError("reasons must be None or frozenset of ReasonFlags") + + if reasons and ( + ReasonFlags.unspecified in reasons + or ReasonFlags.remove_from_crl in reasons + ): + raise ValueError( + "unspecified and remove_from_crl are not valid reasons in a " + "DistributionPoint" + ) + + self._full_name = full_name + self._relative_name = relative_name + self._reasons = reasons + self._crl_issuer = crl_issuer + + def __repr__(self) -> str: + return ( + "".format(self) + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, DistributionPoint): + return NotImplemented + + return ( + self.full_name == other.full_name + and self.relative_name == other.relative_name + and self.reasons == other.reasons + and self.crl_issuer == other.crl_issuer + ) + + def __hash__(self) -> int: + if self.full_name is not None: + fn: tuple[GeneralName, ...] | None = tuple(self.full_name) + else: + fn = None + + if self.crl_issuer is not None: + crl_issuer: tuple[GeneralName, ...] | None = tuple(self.crl_issuer) + else: + crl_issuer = None + + return hash((fn, self.relative_name, self.reasons, crl_issuer)) + + @property + def full_name(self) -> list[GeneralName] | None: + return self._full_name + + @property + def relative_name(self) -> RelativeDistinguishedName | None: + return self._relative_name + + @property + def reasons(self) -> frozenset[ReasonFlags] | None: + return self._reasons + + @property + def crl_issuer(self) -> list[GeneralName] | None: + return self._crl_issuer + + +class ReasonFlags(utils.Enum): + unspecified = "unspecified" + key_compromise = "keyCompromise" + ca_compromise = "cACompromise" + affiliation_changed = "affiliationChanged" + superseded = "superseded" + cessation_of_operation = "cessationOfOperation" + certificate_hold = "certificateHold" + privilege_withdrawn = "privilegeWithdrawn" + aa_compromise = "aACompromise" + remove_from_crl = "removeFromCRL" + + +# These are distribution point bit string mappings. Not to be confused with +# CRLReason reason flags bit string mappings. +# ReasonFlags ::= BIT STRING { +# unused (0), +# keyCompromise (1), +# cACompromise (2), +# affiliationChanged (3), +# superseded (4), +# cessationOfOperation (5), +# certificateHold (6), +# privilegeWithdrawn (7), +# aACompromise (8) } +_REASON_BIT_MAPPING = { + 1: ReasonFlags.key_compromise, + 2: ReasonFlags.ca_compromise, + 3: ReasonFlags.affiliation_changed, + 4: ReasonFlags.superseded, + 5: ReasonFlags.cessation_of_operation, + 6: ReasonFlags.certificate_hold, + 7: ReasonFlags.privilege_withdrawn, + 8: ReasonFlags.aa_compromise, +} + +_CRLREASONFLAGS = { + ReasonFlags.key_compromise: 1, + ReasonFlags.ca_compromise: 2, + ReasonFlags.affiliation_changed: 3, + ReasonFlags.superseded: 4, + ReasonFlags.cessation_of_operation: 5, + ReasonFlags.certificate_hold: 6, + ReasonFlags.privilege_withdrawn: 7, + ReasonFlags.aa_compromise: 8, +} + +# CRLReason ::= ENUMERATED { +# unspecified (0), +# keyCompromise (1), +# cACompromise (2), +# affiliationChanged (3), +# superseded (4), +# cessationOfOperation (5), +# certificateHold (6), +# -- value 7 is not used +# removeFromCRL (8), +# privilegeWithdrawn (9), +# aACompromise (10) } +_CRL_ENTRY_REASON_ENUM_TO_CODE = { + ReasonFlags.unspecified: 0, + ReasonFlags.key_compromise: 1, + ReasonFlags.ca_compromise: 2, + ReasonFlags.affiliation_changed: 3, + ReasonFlags.superseded: 4, + ReasonFlags.cessation_of_operation: 5, + ReasonFlags.certificate_hold: 6, + ReasonFlags.remove_from_crl: 8, + ReasonFlags.privilege_withdrawn: 9, + ReasonFlags.aa_compromise: 10, +} + + +class PolicyConstraints(ExtensionType): + oid = ExtensionOID.POLICY_CONSTRAINTS + + def __init__( + self, + require_explicit_policy: int | None, + inhibit_policy_mapping: int | None, + ) -> None: + if require_explicit_policy is not None and not isinstance( + require_explicit_policy, int + ): + raise TypeError( + "require_explicit_policy must be a non-negative integer or " + "None" + ) + + if inhibit_policy_mapping is not None and not isinstance( + inhibit_policy_mapping, int + ): + raise TypeError( + "inhibit_policy_mapping must be a non-negative integer or None" + ) + + if inhibit_policy_mapping is None and require_explicit_policy is None: + raise ValueError( + "At least one of require_explicit_policy and " + "inhibit_policy_mapping must not be None" + ) + + self._require_explicit_policy = require_explicit_policy + self._inhibit_policy_mapping = inhibit_policy_mapping + + def __repr__(self) -> str: + return ( + "".format(self) + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PolicyConstraints): + return NotImplemented + + return ( + self.require_explicit_policy == other.require_explicit_policy + and self.inhibit_policy_mapping == other.inhibit_policy_mapping + ) + + def __hash__(self) -> int: + return hash( + (self.require_explicit_policy, self.inhibit_policy_mapping) + ) + + @property + def require_explicit_policy(self) -> int | None: + return self._require_explicit_policy + + @property + def inhibit_policy_mapping(self) -> int | None: + return self._inhibit_policy_mapping + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class CertificatePolicies(ExtensionType): + oid = ExtensionOID.CERTIFICATE_POLICIES + + def __init__(self, policies: Iterable[PolicyInformation]) -> None: + policies = list(policies) + if not all(isinstance(x, PolicyInformation) for x in policies): + raise TypeError( + "Every item in the policies list must be a PolicyInformation" + ) + + self._policies = policies + + __len__, __iter__, __getitem__ = _make_sequence_methods("_policies") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CertificatePolicies): + return NotImplemented + + return self._policies == other._policies + + def __hash__(self) -> int: + return hash(tuple(self._policies)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PolicyInformation: + def __init__( + self, + policy_identifier: ObjectIdentifier, + policy_qualifiers: Iterable[str | UserNotice] | None, + ) -> None: + if not isinstance(policy_identifier, ObjectIdentifier): + raise TypeError("policy_identifier must be an ObjectIdentifier") + + self._policy_identifier = policy_identifier + + if policy_qualifiers is not None: + policy_qualifiers = list(policy_qualifiers) + if not all( + isinstance(x, (str, UserNotice)) for x in policy_qualifiers + ): + raise TypeError( + "policy_qualifiers must be a list of strings and/or " + "UserNotice objects or None" + ) + + self._policy_qualifiers = policy_qualifiers + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PolicyInformation): + return NotImplemented + + return ( + self.policy_identifier == other.policy_identifier + and self.policy_qualifiers == other.policy_qualifiers + ) + + def __hash__(self) -> int: + if self.policy_qualifiers is not None: + pq = tuple(self.policy_qualifiers) + else: + pq = None + + return hash((self.policy_identifier, pq)) + + @property + def policy_identifier(self) -> ObjectIdentifier: + return self._policy_identifier + + @property + def policy_qualifiers( + self, + ) -> list[str | UserNotice] | None: + return self._policy_qualifiers + + +class UserNotice: + def __init__( + self, + notice_reference: NoticeReference | None, + explicit_text: str | None, + ) -> None: + if notice_reference and not isinstance( + notice_reference, NoticeReference + ): + raise TypeError( + "notice_reference must be None or a NoticeReference" + ) + + self._notice_reference = notice_reference + self._explicit_text = explicit_text + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, UserNotice): + return NotImplemented + + return ( + self.notice_reference == other.notice_reference + and self.explicit_text == other.explicit_text + ) + + def __hash__(self) -> int: + return hash((self.notice_reference, self.explicit_text)) + + @property + def notice_reference(self) -> NoticeReference | None: + return self._notice_reference + + @property + def explicit_text(self) -> str | None: + return self._explicit_text + + +class NoticeReference: + def __init__( + self, + organization: str | None, + notice_numbers: Iterable[int], + ) -> None: + self._organization = organization + notice_numbers = list(notice_numbers) + if not all(isinstance(x, int) for x in notice_numbers): + raise TypeError("notice_numbers must be a list of integers") + + self._notice_numbers = notice_numbers + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NoticeReference): + return NotImplemented + + return ( + self.organization == other.organization + and self.notice_numbers == other.notice_numbers + ) + + def __hash__(self) -> int: + return hash((self.organization, tuple(self.notice_numbers))) + + @property + def organization(self) -> str | None: + return self._organization + + @property + def notice_numbers(self) -> list[int]: + return self._notice_numbers + + +class ExtendedKeyUsage(ExtensionType): + oid = ExtensionOID.EXTENDED_KEY_USAGE + + def __init__(self, usages: Iterable[ObjectIdentifier]) -> None: + usages = list(usages) + if not all(isinstance(x, ObjectIdentifier) for x in usages): + raise TypeError( + "Every item in the usages list must be an ObjectIdentifier" + ) + + self._usages = usages + + __len__, __iter__, __getitem__ = _make_sequence_methods("_usages") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, ExtendedKeyUsage): + return NotImplemented + + return self._usages == other._usages + + def __hash__(self) -> int: + return hash(tuple(self._usages)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class OCSPNoCheck(ExtensionType): + oid = ExtensionOID.OCSP_NO_CHECK + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OCSPNoCheck): + return NotImplemented + + return True + + def __hash__(self) -> int: + return hash(OCSPNoCheck) + + def __repr__(self) -> str: + return "" + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PrecertPoison(ExtensionType): + oid = ExtensionOID.PRECERT_POISON + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PrecertPoison): + return NotImplemented + + return True + + def __hash__(self) -> int: + return hash(PrecertPoison) + + def __repr__(self) -> str: + return "" + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class TLSFeature(ExtensionType): + oid = ExtensionOID.TLS_FEATURE + + def __init__(self, features: Iterable[TLSFeatureType]) -> None: + features = list(features) + if ( + not all(isinstance(x, TLSFeatureType) for x in features) + or len(features) == 0 + ): + raise TypeError( + "features must be a list of elements from the TLSFeatureType " + "enum" + ) + + self._features = features + + __len__, __iter__, __getitem__ = _make_sequence_methods("_features") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, TLSFeature): + return NotImplemented + + return self._features == other._features + + def __hash__(self) -> int: + return hash(tuple(self._features)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class TLSFeatureType(utils.Enum): + # status_request is defined in RFC 6066 and is used for what is commonly + # called OCSP Must-Staple when present in the TLS Feature extension in an + # X.509 certificate. + status_request = 5 + # status_request_v2 is defined in RFC 6961 and allows multiple OCSP + # responses to be provided. It is not currently in use by clients or + # servers. + status_request_v2 = 17 + + +_TLS_FEATURE_TYPE_TO_ENUM = {x.value: x for x in TLSFeatureType} + + +class InhibitAnyPolicy(ExtensionType): + oid = ExtensionOID.INHIBIT_ANY_POLICY + + def __init__(self, skip_certs: int) -> None: + if not isinstance(skip_certs, int): + raise TypeError("skip_certs must be an integer") + + if skip_certs < 0: + raise ValueError("skip_certs must be a non-negative integer") + + self._skip_certs = skip_certs + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, InhibitAnyPolicy): + return NotImplemented + + return self.skip_certs == other.skip_certs + + def __hash__(self) -> int: + return hash(self.skip_certs) + + @property + def skip_certs(self) -> int: + return self._skip_certs + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class KeyUsage(ExtensionType): + oid = ExtensionOID.KEY_USAGE + + def __init__( + self, + digital_signature: bool, + content_commitment: bool, + key_encipherment: bool, + data_encipherment: bool, + key_agreement: bool, + key_cert_sign: bool, + crl_sign: bool, + encipher_only: bool, + decipher_only: bool, + ) -> None: + if not key_agreement and (encipher_only or decipher_only): + raise ValueError( + "encipher_only and decipher_only can only be true when " + "key_agreement is true" + ) + + self._digital_signature = digital_signature + self._content_commitment = content_commitment + self._key_encipherment = key_encipherment + self._data_encipherment = data_encipherment + self._key_agreement = key_agreement + self._key_cert_sign = key_cert_sign + self._crl_sign = crl_sign + self._encipher_only = encipher_only + self._decipher_only = decipher_only + + @property + def digital_signature(self) -> bool: + return self._digital_signature + + @property + def content_commitment(self) -> bool: + return self._content_commitment + + @property + def key_encipherment(self) -> bool: + return self._key_encipherment + + @property + def data_encipherment(self) -> bool: + return self._data_encipherment + + @property + def key_agreement(self) -> bool: + return self._key_agreement + + @property + def key_cert_sign(self) -> bool: + return self._key_cert_sign + + @property + def crl_sign(self) -> bool: + return self._crl_sign + + @property + def encipher_only(self) -> bool: + if not self.key_agreement: + raise ValueError( + "encipher_only is undefined unless key_agreement is true" + ) + else: + return self._encipher_only + + @property + def decipher_only(self) -> bool: + if not self.key_agreement: + raise ValueError( + "decipher_only is undefined unless key_agreement is true" + ) + else: + return self._decipher_only + + def __repr__(self) -> str: + try: + encipher_only = self.encipher_only + decipher_only = self.decipher_only + except ValueError: + # Users found None confusing because even though encipher/decipher + # have no meaning unless key_agreement is true, to construct an + # instance of the class you still need to pass False. + encipher_only = False + decipher_only = False + + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, KeyUsage): + return NotImplemented + + return ( + self.digital_signature == other.digital_signature + and self.content_commitment == other.content_commitment + and self.key_encipherment == other.key_encipherment + and self.data_encipherment == other.data_encipherment + and self.key_agreement == other.key_agreement + and self.key_cert_sign == other.key_cert_sign + and self.crl_sign == other.crl_sign + and self._encipher_only == other._encipher_only + and self._decipher_only == other._decipher_only + ) + + def __hash__(self) -> int: + return hash( + ( + self.digital_signature, + self.content_commitment, + self.key_encipherment, + self.data_encipherment, + self.key_agreement, + self.key_cert_sign, + self.crl_sign, + self._encipher_only, + self._decipher_only, + ) + ) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PrivateKeyUsagePeriod(ExtensionType): + oid = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD + + def __init__( + self, + not_before: datetime.datetime | None, + not_after: datetime.datetime | None, + ) -> None: + if ( + not isinstance(not_before, datetime.datetime) + and not_before is not None + ): + raise TypeError("not_before must be a datetime.datetime or None") + + if ( + not isinstance(not_after, datetime.datetime) + and not_after is not None + ): + raise TypeError("not_after must be a datetime.datetime or None") + + if not_before is None and not_after is None: + raise ValueError( + "At least one of not_before and not_after must not be None" + ) + + if ( + not_before is not None + and not_after is not None + and not_before > not_after + ): + raise ValueError("not_before must be before not_after") + + self._not_before = not_before + self._not_after = not_after + + @property + def not_before(self) -> datetime.datetime | None: + return self._not_before + + @property + def not_after(self) -> datetime.datetime | None: + return self._not_after + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PrivateKeyUsagePeriod): + return NotImplemented + + return ( + self.not_before == other.not_before + and self.not_after == other.not_after + ) + + def __hash__(self) -> int: + return hash((self.not_before, self.not_after)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class NameConstraints(ExtensionType): + oid = ExtensionOID.NAME_CONSTRAINTS + + def __init__( + self, + permitted_subtrees: Iterable[GeneralName] | None, + excluded_subtrees: Iterable[GeneralName] | None, + ) -> None: + if permitted_subtrees is not None: + permitted_subtrees = list(permitted_subtrees) + if not permitted_subtrees: + raise ValueError( + "permitted_subtrees must be a non-empty list or None" + ) + if not all(isinstance(x, GeneralName) for x in permitted_subtrees): + raise TypeError( + "permitted_subtrees must be a list of GeneralName objects " + "or None" + ) + + self._validate_tree(permitted_subtrees) + + if excluded_subtrees is not None: + excluded_subtrees = list(excluded_subtrees) + if not excluded_subtrees: + raise ValueError( + "excluded_subtrees must be a non-empty list or None" + ) + if not all(isinstance(x, GeneralName) for x in excluded_subtrees): + raise TypeError( + "excluded_subtrees must be a list of GeneralName objects " + "or None" + ) + + self._validate_tree(excluded_subtrees) + + if permitted_subtrees is None and excluded_subtrees is None: + raise ValueError( + "At least one of permitted_subtrees and excluded_subtrees " + "must not be None" + ) + + self._permitted_subtrees = permitted_subtrees + self._excluded_subtrees = excluded_subtrees + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NameConstraints): + return NotImplemented + + return ( + self.excluded_subtrees == other.excluded_subtrees + and self.permitted_subtrees == other.permitted_subtrees + ) + + def _validate_tree(self, tree: Iterable[GeneralName]) -> None: + self._validate_ip_name(tree) + self._validate_dns_name(tree) + + def _validate_ip_name(self, tree: Iterable[GeneralName]) -> None: + if any( + isinstance(name, IPAddress) + and not isinstance( + name.value, (ipaddress.IPv4Network, ipaddress.IPv6Network) + ) + for name in tree + ): + raise TypeError( + "IPAddress name constraints must be an IPv4Network or" + " IPv6Network object" + ) + + def _validate_dns_name(self, tree: Iterable[GeneralName]) -> None: + if any( + isinstance(name, DNSName) and "*" in name.value for name in tree + ): + raise ValueError( + "DNSName name constraints must not contain the '*' wildcard" + " character" + ) + + def __repr__(self) -> str: + return ( + f"" + ) + + def __hash__(self) -> int: + if self.permitted_subtrees is not None: + ps: tuple[GeneralName, ...] | None = tuple(self.permitted_subtrees) + else: + ps = None + + if self.excluded_subtrees is not None: + es: tuple[GeneralName, ...] | None = tuple(self.excluded_subtrees) + else: + es = None + + return hash((ps, es)) + + @property + def permitted_subtrees( + self, + ) -> list[GeneralName] | None: + return self._permitted_subtrees + + @property + def excluded_subtrees( + self, + ) -> list[GeneralName] | None: + return self._excluded_subtrees + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class Extension(typing.Generic[ExtensionTypeVar]): + def __init__( + self, oid: ObjectIdentifier, critical: bool, value: ExtensionTypeVar + ) -> None: + if not isinstance(oid, ObjectIdentifier): + raise TypeError( + "oid argument must be an ObjectIdentifier instance." + ) + + if not isinstance(critical, bool): + raise TypeError("critical must be a boolean value") + + self._oid = oid + self._critical = critical + self._value = value + + @property + def oid(self) -> ObjectIdentifier: + return self._oid + + @property + def critical(self) -> bool: + return self._critical + + @property + def value(self) -> ExtensionTypeVar: + return self._value + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Extension): + return NotImplemented + + return ( + self.oid == other.oid + and self.critical == other.critical + and self.value == other.value + ) + + def __hash__(self) -> int: + return hash((self.oid, self.critical, self.value)) + + +class GeneralNames: + def __init__(self, general_names: Iterable[GeneralName]) -> None: + general_names = list(general_names) + if not all(isinstance(x, GeneralName) for x in general_names): + raise TypeError( + "Every item in the general_names list must be an " + "object conforming to the GeneralName interface" + ) + + self._general_names = general_names + + __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") + + @typing.overload + def get_values_for_type( + self, + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[DirectoryName], + ) -> list[Name]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... + + @typing.overload + def get_values_for_type( + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... + + @typing.overload + def get_values_for_type( + self, type: type[OtherName] + ) -> list[OtherName]: ... + + def get_values_for_type( + self, + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): + # Return the value of each GeneralName, except for OtherName instances + # which we return directly because it has two important properties not + # just one value. + objs = (i for i in self if isinstance(i, type)) + if type != OtherName: + return [i.value for i in objs] # type: ignore[return-value,unused-ignore] + return list(objs) # type: ignore[return-value,unused-ignore] + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, GeneralNames): + return NotImplemented + + return self._general_names == other._general_names + + def __hash__(self) -> int: + return hash(tuple(self._general_names)) + + +class SubjectAlternativeName(ExtensionType): + oid = ExtensionOID.SUBJECT_ALTERNATIVE_NAME + + def __init__(self, general_names: Iterable[GeneralName]) -> None: + self._general_names = GeneralNames(general_names) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") + + @typing.overload + def get_values_for_type( + self, + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[DirectoryName], + ) -> list[Name]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... + + @typing.overload + def get_values_for_type( + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... + + @typing.overload + def get_values_for_type( + self, type: type[OtherName] + ) -> list[OtherName]: ... + + def get_values_for_type( + self, + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): + return self._general_names.get_values_for_type(type) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SubjectAlternativeName): + return NotImplemented + + return self._general_names == other._general_names + + def __hash__(self) -> int: + return hash(self._general_names) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class IssuerAlternativeName(ExtensionType): + oid = ExtensionOID.ISSUER_ALTERNATIVE_NAME + + def __init__(self, general_names: Iterable[GeneralName]) -> None: + self._general_names = GeneralNames(general_names) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") + + @typing.overload + def get_values_for_type( + self, + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[DirectoryName], + ) -> list[Name]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... + + @typing.overload + def get_values_for_type( + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... + + @typing.overload + def get_values_for_type( + self, type: type[OtherName] + ) -> list[OtherName]: ... + + def get_values_for_type( + self, + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): + return self._general_names.get_values_for_type(type) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, IssuerAlternativeName): + return NotImplemented + + return self._general_names == other._general_names + + def __hash__(self) -> int: + return hash(self._general_names) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class CertificateIssuer(ExtensionType): + oid = CRLEntryExtensionOID.CERTIFICATE_ISSUER + + def __init__(self, general_names: Iterable[GeneralName]) -> None: + self._general_names = GeneralNames(general_names) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") + + @typing.overload + def get_values_for_type( + self, + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[DirectoryName], + ) -> list[Name]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... + + @typing.overload + def get_values_for_type( + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... + + @typing.overload + def get_values_for_type( + self, type: type[OtherName] + ) -> list[OtherName]: ... + + def get_values_for_type( + self, + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): + return self._general_names.get_values_for_type(type) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CertificateIssuer): + return NotImplemented + + return self._general_names == other._general_names + + def __hash__(self) -> int: + return hash(self._general_names) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class CRLReason(ExtensionType): + oid = CRLEntryExtensionOID.CRL_REASON + + def __init__(self, reason: ReasonFlags) -> None: + if not isinstance(reason, ReasonFlags): + raise TypeError("reason must be an element from ReasonFlags") + + self._reason = reason + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CRLReason): + return NotImplemented + + return self.reason == other.reason + + def __hash__(self) -> int: + return hash(self.reason) + + @property + def reason(self) -> ReasonFlags: + return self._reason + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class InvalidityDate(ExtensionType): + oid = CRLEntryExtensionOID.INVALIDITY_DATE + + def __init__(self, invalidity_date: datetime.datetime) -> None: + if not isinstance(invalidity_date, datetime.datetime): + raise TypeError("invalidity_date must be a datetime.datetime") + + self._invalidity_date = invalidity_date + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, InvalidityDate): + return NotImplemented + + return self.invalidity_date == other.invalidity_date + + def __hash__(self) -> int: + return hash(self.invalidity_date) + + @property + def invalidity_date(self) -> datetime.datetime: + return self._invalidity_date + + @property + def invalidity_date_utc(self) -> datetime.datetime: + if self._invalidity_date.tzinfo is None: + return self._invalidity_date.replace(tzinfo=datetime.timezone.utc) + else: + return self._invalidity_date.astimezone(tz=datetime.timezone.utc) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PrecertificateSignedCertificateTimestamps(ExtensionType): + oid = ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS + + def __init__( + self, + signed_certificate_timestamps: Iterable[SignedCertificateTimestamp], + ) -> None: + signed_certificate_timestamps = list(signed_certificate_timestamps) + if not all( + isinstance(sct, SignedCertificateTimestamp) + for sct in signed_certificate_timestamps + ): + raise TypeError( + "Every item in the signed_certificate_timestamps list must be " + "a SignedCertificateTimestamp" + ) + self._signed_certificate_timestamps = signed_certificate_timestamps + + __len__, __iter__, __getitem__ = _make_sequence_methods( + "_signed_certificate_timestamps" + ) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash(tuple(self._signed_certificate_timestamps)) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PrecertificateSignedCertificateTimestamps): + return NotImplemented + + return ( + self._signed_certificate_timestamps + == other._signed_certificate_timestamps + ) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class SignedCertificateTimestamps(ExtensionType): + oid = ExtensionOID.SIGNED_CERTIFICATE_TIMESTAMPS + + def __init__( + self, + signed_certificate_timestamps: Iterable[SignedCertificateTimestamp], + ) -> None: + signed_certificate_timestamps = list(signed_certificate_timestamps) + if not all( + isinstance(sct, SignedCertificateTimestamp) + for sct in signed_certificate_timestamps + ): + raise TypeError( + "Every item in the signed_certificate_timestamps list must be " + "a SignedCertificateTimestamp" + ) + self._signed_certificate_timestamps = signed_certificate_timestamps + + __len__, __iter__, __getitem__ = _make_sequence_methods( + "_signed_certificate_timestamps" + ) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash(tuple(self._signed_certificate_timestamps)) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SignedCertificateTimestamps): + return NotImplemented + + return ( + self._signed_certificate_timestamps + == other._signed_certificate_timestamps + ) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class OCSPNonce(ExtensionType): + oid = OCSPExtensionOID.NONCE + + def __init__(self, nonce: bytes) -> None: + if not isinstance(nonce, bytes): + raise TypeError("nonce must be bytes") + + self._nonce = nonce + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OCSPNonce): + return NotImplemented + + return self.nonce == other.nonce + + def __hash__(self) -> int: + return hash(self.nonce) + + def __repr__(self) -> str: + return f"" + + @property + def nonce(self) -> bytes: + return self._nonce + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class OCSPAcceptableResponses(ExtensionType): + oid = OCSPExtensionOID.ACCEPTABLE_RESPONSES + + def __init__(self, responses: Iterable[ObjectIdentifier]) -> None: + responses = list(responses) + if any(not isinstance(r, ObjectIdentifier) for r in responses): + raise TypeError("All responses must be ObjectIdentifiers") + + self._responses = responses + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OCSPAcceptableResponses): + return NotImplemented + + return self._responses == other._responses + + def __hash__(self) -> int: + return hash(tuple(self._responses)) + + def __repr__(self) -> str: + return f"" + + def __iter__(self) -> Iterator[ObjectIdentifier]: + return iter(self._responses) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class IssuingDistributionPoint(ExtensionType): + oid = ExtensionOID.ISSUING_DISTRIBUTION_POINT + + def __init__( + self, + full_name: Iterable[GeneralName] | None, + relative_name: RelativeDistinguishedName | None, + only_contains_user_certs: bool, + only_contains_ca_certs: bool, + only_some_reasons: frozenset[ReasonFlags] | None, + indirect_crl: bool, + only_contains_attribute_certs: bool, + ) -> None: + if full_name is not None: + full_name = list(full_name) + + if only_some_reasons and ( + not isinstance(only_some_reasons, frozenset) + or not all(isinstance(x, ReasonFlags) for x in only_some_reasons) + ): + raise TypeError( + "only_some_reasons must be None or frozenset of ReasonFlags" + ) + + if only_some_reasons and ( + ReasonFlags.unspecified in only_some_reasons + or ReasonFlags.remove_from_crl in only_some_reasons + ): + raise ValueError( + "unspecified and remove_from_crl are not valid reasons in an " + "IssuingDistributionPoint" + ) + + if not ( + isinstance(only_contains_user_certs, bool) + and isinstance(only_contains_ca_certs, bool) + and isinstance(indirect_crl, bool) + and isinstance(only_contains_attribute_certs, bool) + ): + raise TypeError( + "only_contains_user_certs, only_contains_ca_certs, " + "indirect_crl and only_contains_attribute_certs " + "must all be boolean." + ) + + # Per RFC5280 Section 5.2.5, the Issuing Distribution Point extension + # in a CRL can have only one of onlyContainsUserCerts, + # onlyContainsCACerts, onlyContainsAttributeCerts set to TRUE. + crl_constraints = [ + only_contains_user_certs, + only_contains_ca_certs, + only_contains_attribute_certs, + ] + + if len([x for x in crl_constraints if x]) > 1: + raise ValueError( + "Only one of the following can be set to True: " + "only_contains_user_certs, only_contains_ca_certs, " + "only_contains_attribute_certs" + ) + + if not any( + [ + only_contains_user_certs, + only_contains_ca_certs, + indirect_crl, + only_contains_attribute_certs, + full_name, + relative_name, + only_some_reasons, + ] + ): + raise ValueError( + "Cannot create empty extension: " + "if only_contains_user_certs, only_contains_ca_certs, " + "indirect_crl, and only_contains_attribute_certs are all False" + ", then either full_name, relative_name, or only_some_reasons " + "must have a value." + ) + + self._only_contains_user_certs = only_contains_user_certs + self._only_contains_ca_certs = only_contains_ca_certs + self._indirect_crl = indirect_crl + self._only_contains_attribute_certs = only_contains_attribute_certs + self._only_some_reasons = only_some_reasons + self._full_name = full_name + self._relative_name = relative_name + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, IssuingDistributionPoint): + return NotImplemented + + return ( + self.full_name == other.full_name + and self.relative_name == other.relative_name + and self.only_contains_user_certs == other.only_contains_user_certs + and self.only_contains_ca_certs == other.only_contains_ca_certs + and self.only_some_reasons == other.only_some_reasons + and self.indirect_crl == other.indirect_crl + and self.only_contains_attribute_certs + == other.only_contains_attribute_certs + ) + + def __hash__(self) -> int: + if self.full_name is not None: + full_name: tuple[GeneralName, ...] | None = tuple(self.full_name) + else: + full_name = None + + return hash( + ( + full_name, + self.relative_name, + self.only_contains_user_certs, + self.only_contains_ca_certs, + self.only_some_reasons, + self.indirect_crl, + self.only_contains_attribute_certs, + ) + ) + + @property + def full_name(self) -> list[GeneralName] | None: + return self._full_name + + @property + def relative_name(self) -> RelativeDistinguishedName | None: + return self._relative_name + + @property + def only_contains_user_certs(self) -> bool: + return self._only_contains_user_certs + + @property + def only_contains_ca_certs(self) -> bool: + return self._only_contains_ca_certs + + @property + def only_some_reasons( + self, + ) -> frozenset[ReasonFlags] | None: + return self._only_some_reasons + + @property + def indirect_crl(self) -> bool: + return self._indirect_crl + + @property + def only_contains_attribute_certs(self) -> bool: + return self._only_contains_attribute_certs + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class MSCertificateTemplate(ExtensionType): + oid = ExtensionOID.MS_CERTIFICATE_TEMPLATE + + def __init__( + self, + template_id: ObjectIdentifier, + major_version: int | None, + minor_version: int | None, + ) -> None: + if not isinstance(template_id, ObjectIdentifier): + raise TypeError("oid must be an ObjectIdentifier") + self._template_id = template_id + if ( + major_version is not None and not isinstance(major_version, int) + ) or ( + minor_version is not None and not isinstance(minor_version, int) + ): + raise TypeError( + "major_version and minor_version must be integers or None" + ) + self._major_version = major_version + self._minor_version = minor_version + + @property + def template_id(self) -> ObjectIdentifier: + return self._template_id + + @property + def major_version(self) -> int | None: + return self._major_version + + @property + def minor_version(self) -> int | None: + return self._minor_version + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, MSCertificateTemplate): + return NotImplemented + + return ( + self.template_id == other.template_id + and self.major_version == other.major_version + and self.minor_version == other.minor_version + ) + + def __hash__(self) -> int: + return hash((self.template_id, self.major_version, self.minor_version)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class NamingAuthority: + def __init__( + self, + id: ObjectIdentifier | None, + url: str | None, + text: str | None, + ) -> None: + if id is not None and not isinstance(id, ObjectIdentifier): + raise TypeError("id must be an ObjectIdentifier") + + if url is not None and not isinstance(url, str): + raise TypeError("url must be a str") + + if text is not None and not isinstance(text, str): + raise TypeError("text must be a str") + + self._id = id + self._url = url + self._text = text + + @property + def id(self) -> ObjectIdentifier | None: + return self._id + + @property + def url(self) -> str | None: + return self._url + + @property + def text(self) -> str | None: + return self._text + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NamingAuthority): + return NotImplemented + + return ( + self.id == other.id + and self.url == other.url + and self.text == other.text + ) + + def __hash__(self) -> int: + return hash( + ( + self.id, + self.url, + self.text, + ) + ) + + +class ProfessionInfo: + def __init__( + self, + naming_authority: NamingAuthority | None, + profession_items: Iterable[str], + profession_oids: Iterable[ObjectIdentifier] | None, + registration_number: str | None, + add_profession_info: bytes | None, + ) -> None: + if naming_authority is not None and not isinstance( + naming_authority, NamingAuthority + ): + raise TypeError("naming_authority must be a NamingAuthority") + + profession_items = list(profession_items) + if not all(isinstance(item, str) for item in profession_items): + raise TypeError( + "Every item in the profession_items list must be a str" + ) + + if profession_oids is not None: + profession_oids = list(profession_oids) + if not all( + isinstance(oid, ObjectIdentifier) for oid in profession_oids + ): + raise TypeError( + "Every item in the profession_oids list must be an " + "ObjectIdentifier" + ) + + if registration_number is not None and not isinstance( + registration_number, str + ): + raise TypeError("registration_number must be a str") + + if add_profession_info is not None and not isinstance( + add_profession_info, bytes + ): + raise TypeError("add_profession_info must be bytes") + + self._naming_authority = naming_authority + self._profession_items = profession_items + self._profession_oids = profession_oids + self._registration_number = registration_number + self._add_profession_info = add_profession_info + + @property + def naming_authority(self) -> NamingAuthority | None: + return self._naming_authority + + @property + def profession_items(self) -> list[str]: + return self._profession_items + + @property + def profession_oids(self) -> list[ObjectIdentifier] | None: + return self._profession_oids + + @property + def registration_number(self) -> str | None: + return self._registration_number + + @property + def add_profession_info(self) -> bytes | None: + return self._add_profession_info + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, ProfessionInfo): + return NotImplemented + + return ( + self.naming_authority == other.naming_authority + and self.profession_items == other.profession_items + and self.profession_oids == other.profession_oids + and self.registration_number == other.registration_number + and self.add_profession_info == other.add_profession_info + ) + + def __hash__(self) -> int: + if self.profession_oids is not None: + profession_oids = tuple(self.profession_oids) + else: + profession_oids = None + return hash( + ( + self.naming_authority, + tuple(self.profession_items), + profession_oids, + self.registration_number, + self.add_profession_info, + ) + ) + + +class Admission: + def __init__( + self, + admission_authority: GeneralName | None, + naming_authority: NamingAuthority | None, + profession_infos: Iterable[ProfessionInfo], + ) -> None: + if admission_authority is not None and not isinstance( + admission_authority, GeneralName + ): + raise TypeError("admission_authority must be a GeneralName") + + if naming_authority is not None and not isinstance( + naming_authority, NamingAuthority + ): + raise TypeError("naming_authority must be a NamingAuthority") + + profession_infos = list(profession_infos) + if not all( + isinstance(info, ProfessionInfo) for info in profession_infos + ): + raise TypeError( + "Every item in the profession_infos list must be a " + "ProfessionInfo" + ) + + self._admission_authority = admission_authority + self._naming_authority = naming_authority + self._profession_infos = profession_infos + + @property + def admission_authority(self) -> GeneralName | None: + return self._admission_authority + + @property + def naming_authority(self) -> NamingAuthority | None: + return self._naming_authority + + @property + def profession_infos(self) -> list[ProfessionInfo]: + return self._profession_infos + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Admission): + return NotImplemented + + return ( + self.admission_authority == other.admission_authority + and self.naming_authority == other.naming_authority + and self.profession_infos == other.profession_infos + ) + + def __hash__(self) -> int: + return hash( + ( + self.admission_authority, + self.naming_authority, + tuple(self.profession_infos), + ) + ) + + +class Admissions(ExtensionType): + oid = ExtensionOID.ADMISSIONS + + def __init__( + self, + authority: GeneralName | None, + admissions: Iterable[Admission], + ) -> None: + if authority is not None and not isinstance(authority, GeneralName): + raise TypeError("authority must be a GeneralName") + + admissions = list(admissions) + if not all( + isinstance(admission, Admission) for admission in admissions + ): + raise TypeError( + "Every item in the contents_of_admissions list must be an " + "Admission" + ) + + self._authority = authority + self._admissions = admissions + + __len__, __iter__, __getitem__ = _make_sequence_methods("_admissions") + + @property + def authority(self) -> GeneralName | None: + return self._authority + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Admissions): + return NotImplemented + + return ( + self.authority == other.authority + and self._admissions == other._admissions + ) + + def __hash__(self) -> int: + return hash((self.authority, tuple(self._admissions))) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class UnrecognizedExtension(ExtensionType): + def __init__(self, oid: ObjectIdentifier, value: bytes) -> None: + if not isinstance(oid, ObjectIdentifier): + raise TypeError("oid must be an ObjectIdentifier") + self._oid = oid + self._value = value + + @property + def oid(self) -> ObjectIdentifier: # type: ignore[override] + return self._oid + + @property + def value(self) -> bytes: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, UnrecognizedExtension): + return NotImplemented + + return self.oid == other.oid and self.value == other.value + + def __hash__(self) -> int: + return hash((self.oid, self.value)) + + def public_bytes(self) -> bytes: + return self.value diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/general_name.py b/.venv/lib/python3.9/site-packages/cryptography/x509/general_name.py new file mode 100644 index 0000000..672f287 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/x509/general_name.py @@ -0,0 +1,281 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import ipaddress +import typing +from email.utils import parseaddr + +from cryptography.x509.name import Name +from cryptography.x509.oid import ObjectIdentifier + +_IPAddressTypes = typing.Union[ + ipaddress.IPv4Address, + ipaddress.IPv6Address, + ipaddress.IPv4Network, + ipaddress.IPv6Network, +] + + +class UnsupportedGeneralNameType(Exception): + pass + + +class GeneralName(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def value(self) -> typing.Any: + """ + Return the value of the object + """ + + +class RFC822Name(GeneralName): + def __init__(self, value: str) -> None: + if isinstance(value, str): + try: + value.encode("ascii") + except UnicodeEncodeError: + raise ValueError( + "RFC822Name values should be passed as an A-label string. " + "This means unicode characters should be encoded via " + "a library like idna." + ) + else: + raise TypeError("value must be string") + + name, address = parseaddr(value) + if name or not address: + # parseaddr has found a name (e.g. Name ) or the entire + # value is an empty string. + raise ValueError("Invalid rfc822name value") + + self._value = value + + @property + def value(self) -> str: + return self._value + + @classmethod + def _init_without_validation(cls, value: str) -> RFC822Name: + instance = cls.__new__(cls) + instance._value = value + return instance + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, RFC822Name): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class DNSName(GeneralName): + def __init__(self, value: str) -> None: + if isinstance(value, str): + try: + value.encode("ascii") + except UnicodeEncodeError: + raise ValueError( + "DNSName values should be passed as an A-label string. " + "This means unicode characters should be encoded via " + "a library like idna." + ) + else: + raise TypeError("value must be string") + + self._value = value + + @property + def value(self) -> str: + return self._value + + @classmethod + def _init_without_validation(cls, value: str) -> DNSName: + instance = cls.__new__(cls) + instance._value = value + return instance + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, DNSName): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class UniformResourceIdentifier(GeneralName): + def __init__(self, value: str) -> None: + if isinstance(value, str): + try: + value.encode("ascii") + except UnicodeEncodeError: + raise ValueError( + "URI values should be passed as an A-label string. " + "This means unicode characters should be encoded via " + "a library like idna." + ) + else: + raise TypeError("value must be string") + + self._value = value + + @property + def value(self) -> str: + return self._value + + @classmethod + def _init_without_validation(cls, value: str) -> UniformResourceIdentifier: + instance = cls.__new__(cls) + instance._value = value + return instance + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, UniformResourceIdentifier): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class DirectoryName(GeneralName): + def __init__(self, value: Name) -> None: + if not isinstance(value, Name): + raise TypeError("value must be a Name") + + self._value = value + + @property + def value(self) -> Name: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, DirectoryName): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class RegisteredID(GeneralName): + def __init__(self, value: ObjectIdentifier) -> None: + if not isinstance(value, ObjectIdentifier): + raise TypeError("value must be an ObjectIdentifier") + + self._value = value + + @property + def value(self) -> ObjectIdentifier: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, RegisteredID): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class IPAddress(GeneralName): + def __init__(self, value: _IPAddressTypes) -> None: + if not isinstance( + value, + ( + ipaddress.IPv4Address, + ipaddress.IPv6Address, + ipaddress.IPv4Network, + ipaddress.IPv6Network, + ), + ): + raise TypeError( + "value must be an instance of ipaddress.IPv4Address, " + "ipaddress.IPv6Address, ipaddress.IPv4Network, or " + "ipaddress.IPv6Network" + ) + + self._value = value + + @property + def value(self) -> _IPAddressTypes: + return self._value + + def _packed(self) -> bytes: + if isinstance( + self.value, (ipaddress.IPv4Address, ipaddress.IPv6Address) + ): + return self.value.packed + else: + return ( + self.value.network_address.packed + self.value.netmask.packed + ) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, IPAddress): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class OtherName(GeneralName): + def __init__(self, type_id: ObjectIdentifier, value: bytes) -> None: + if not isinstance(type_id, ObjectIdentifier): + raise TypeError("type_id must be an ObjectIdentifier") + if not isinstance(value, bytes): + raise TypeError("value must be a binary string") + + self._type_id = type_id + self._value = value + + @property + def type_id(self) -> ObjectIdentifier: + return self._type_id + + @property + def value(self) -> bytes: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OtherName): + return NotImplemented + + return self.type_id == other.type_id and self.value == other.value + + def __hash__(self) -> int: + return hash((self.type_id, self.value)) diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/name.py b/.venv/lib/python3.9/site-packages/cryptography/x509/name.py new file mode 100644 index 0000000..2e54edc --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/x509/name.py @@ -0,0 +1,489 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import binascii +import re +import sys +import typing +import warnings +from collections.abc import Iterable, Iterator + +from cryptography import utils +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.x509.oid import NameOID, ObjectIdentifier + + +class _ASN1Type(utils.Enum): + BitString = 3 + OctetString = 4 + UTF8String = 12 + NumericString = 18 + PrintableString = 19 + T61String = 20 + IA5String = 22 + UTCTime = 23 + GeneralizedTime = 24 + VisibleString = 26 + UniversalString = 28 + BMPString = 30 + + +_ASN1_TYPE_TO_ENUM = {i.value: i for i in _ASN1Type} +_NAMEOID_DEFAULT_TYPE: dict[ObjectIdentifier, _ASN1Type] = { + NameOID.COUNTRY_NAME: _ASN1Type.PrintableString, + NameOID.JURISDICTION_COUNTRY_NAME: _ASN1Type.PrintableString, + NameOID.SERIAL_NUMBER: _ASN1Type.PrintableString, + NameOID.DN_QUALIFIER: _ASN1Type.PrintableString, + NameOID.EMAIL_ADDRESS: _ASN1Type.IA5String, + NameOID.DOMAIN_COMPONENT: _ASN1Type.IA5String, +} + +# Type alias +_OidNameMap = typing.Mapping[ObjectIdentifier, str] +_NameOidMap = typing.Mapping[str, ObjectIdentifier] + +#: Short attribute names from RFC 4514: +#: https://tools.ietf.org/html/rfc4514#page-7 +_NAMEOID_TO_NAME: _OidNameMap = { + NameOID.COMMON_NAME: "CN", + NameOID.LOCALITY_NAME: "L", + NameOID.STATE_OR_PROVINCE_NAME: "ST", + NameOID.ORGANIZATION_NAME: "O", + NameOID.ORGANIZATIONAL_UNIT_NAME: "OU", + NameOID.COUNTRY_NAME: "C", + NameOID.STREET_ADDRESS: "STREET", + NameOID.DOMAIN_COMPONENT: "DC", + NameOID.USER_ID: "UID", +} +_NAME_TO_NAMEOID = {v: k for k, v in _NAMEOID_TO_NAME.items()} + +_NAMEOID_LENGTH_LIMIT = { + NameOID.COUNTRY_NAME: (2, 2), + NameOID.JURISDICTION_COUNTRY_NAME: (2, 2), + NameOID.COMMON_NAME: (1, 64), +} + + +def _escape_dn_value(val: str | bytes) -> str: + """Escape special characters in RFC4514 Distinguished Name value.""" + + if not val: + return "" + + # RFC 4514 Section 2.4 defines the value as being the # (U+0023) character + # followed by the hexadecimal encoding of the octets. + if isinstance(val, bytes): + return "#" + binascii.hexlify(val).decode("utf8") + + # See https://tools.ietf.org/html/rfc4514#section-2.4 + val = val.replace("\\", "\\\\") + val = val.replace('"', '\\"') + val = val.replace("+", "\\+") + val = val.replace(",", "\\,") + val = val.replace(";", "\\;") + val = val.replace("<", "\\<") + val = val.replace(">", "\\>") + val = val.replace("\0", "\\00") + + if val[0] == "#" or (val[0] == " " and len(val) > 1): + val = "\\" + val + if val[-1] == " ": + val = val[:-1] + "\\ " + + return val + + +def _unescape_dn_value(val: str) -> str: + if not val: + return "" + + # See https://tools.ietf.org/html/rfc4514#section-3 + + # special = escaped / SPACE / SHARP / EQUALS + # escaped = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE + def sub(m): + val = m.group(0) + # Special character escape + if len(val) == 2: + return val[1:] + + # Unicode string of hex + return binascii.unhexlify(val.replace("\\", "")).decode() + + return _RFC4514NameParser._PAIR_MULTI_RE.sub(sub, val) + + +NameAttributeValueType = typing.TypeVar( + "NameAttributeValueType", + typing.Union[str, bytes], + str, + bytes, + covariant=True, +) + + +class NameAttribute(typing.Generic[NameAttributeValueType]): + def __init__( + self, + oid: ObjectIdentifier, + value: NameAttributeValueType, + _type: _ASN1Type | None = None, + *, + _validate: bool = True, + ) -> None: + if not isinstance(oid, ObjectIdentifier): + raise TypeError( + "oid argument must be an ObjectIdentifier instance." + ) + if _type == _ASN1Type.BitString: + if oid != NameOID.X500_UNIQUE_IDENTIFIER: + raise TypeError( + "oid must be X500_UNIQUE_IDENTIFIER for BitString type." + ) + if not isinstance(value, bytes): + raise TypeError("value must be bytes for BitString") + elif not isinstance(value, str): + raise TypeError("value argument must be a str") + + length_limits = _NAMEOID_LENGTH_LIMIT.get(oid) + if length_limits is not None: + min_length, max_length = length_limits + assert isinstance(value, str) + c_len = len(value.encode("utf8")) + if c_len < min_length or c_len > max_length: + msg = ( + f"Attribute's length must be >= {min_length} and " + f"<= {max_length}, but it was {c_len}" + ) + if _validate is True: + raise ValueError(msg) + else: + warnings.warn(msg, stacklevel=2) + + # The appropriate ASN1 string type varies by OID and is defined across + # multiple RFCs including 2459, 3280, and 5280. In general UTF8String + # is preferred (2459), but 3280 and 5280 specify several OIDs with + # alternate types. This means when we see the sentinel value we need + # to look up whether the OID has a non-UTF8 type. If it does, set it + # to that. Otherwise, UTF8! + if _type is None: + _type = _NAMEOID_DEFAULT_TYPE.get(oid, _ASN1Type.UTF8String) + + if not isinstance(_type, _ASN1Type): + raise TypeError("_type must be from the _ASN1Type enum") + + self._oid = oid + self._value: NameAttributeValueType = value + self._type: _ASN1Type = _type + + @property + def oid(self) -> ObjectIdentifier: + return self._oid + + @property + def value(self) -> NameAttributeValueType: + return self._value + + @property + def rfc4514_attribute_name(self) -> str: + """ + The short attribute name (for example "CN") if available, + otherwise the OID dotted string. + """ + return _NAMEOID_TO_NAME.get(self.oid, self.oid.dotted_string) + + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: + """ + Format as RFC4514 Distinguished Name string. + + Use short attribute name if available, otherwise fall back to OID + dotted string. + """ + attr_name = ( + attr_name_overrides.get(self.oid) if attr_name_overrides else None + ) + if attr_name is None: + attr_name = self.rfc4514_attribute_name + + return f"{attr_name}={_escape_dn_value(self.value)}" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NameAttribute): + return NotImplemented + + return self.oid == other.oid and self.value == other.value + + def __hash__(self) -> int: + return hash((self.oid, self.value)) + + def __repr__(self) -> str: + return f"" + + +class RelativeDistinguishedName: + def __init__(self, attributes: Iterable[NameAttribute[str | bytes]]): + attributes = list(attributes) + if not attributes: + raise ValueError("a relative distinguished name cannot be empty") + if not all(isinstance(x, NameAttribute) for x in attributes): + raise TypeError("attributes must be an iterable of NameAttribute") + + # Keep list and frozenset to preserve attribute order where it matters + self._attributes = attributes + self._attribute_set = frozenset(attributes) + + if len(self._attribute_set) != len(attributes): + raise ValueError("duplicate attributes are not allowed") + + def get_attributes_for_oid( + self, + oid: ObjectIdentifier, + ) -> list[NameAttribute[str | bytes]]: + return [i for i in self if i.oid == oid] + + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: + """ + Format as RFC4514 Distinguished Name string. + + Within each RDN, attributes are joined by '+', although that is rarely + used in certificates. + """ + return "+".join( + attr.rfc4514_string(attr_name_overrides) + for attr in self._attributes + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, RelativeDistinguishedName): + return NotImplemented + + return self._attribute_set == other._attribute_set + + def __hash__(self) -> int: + return hash(self._attribute_set) + + def __iter__(self) -> Iterator[NameAttribute[str | bytes]]: + return iter(self._attributes) + + def __len__(self) -> int: + return len(self._attributes) + + def __repr__(self) -> str: + return f"" + + +class Name: + @typing.overload + def __init__( + self, attributes: Iterable[NameAttribute[str | bytes]] + ) -> None: ... + + @typing.overload + def __init__( + self, attributes: Iterable[RelativeDistinguishedName] + ) -> None: ... + + def __init__( + self, + attributes: Iterable[ + NameAttribute[str | bytes] | RelativeDistinguishedName + ], + ) -> None: + attributes = list(attributes) + if all(isinstance(x, NameAttribute) for x in attributes): + self._attributes = [ + RelativeDistinguishedName([typing.cast(NameAttribute, x)]) + for x in attributes + ] + elif all(isinstance(x, RelativeDistinguishedName) for x in attributes): + self._attributes = typing.cast( + list[RelativeDistinguishedName], attributes + ) + else: + raise TypeError( + "attributes must be a list of NameAttribute" + " or a list RelativeDistinguishedName" + ) + + @classmethod + def from_rfc4514_string( + cls, + data: str, + attr_name_overrides: _NameOidMap | None = None, + ) -> Name: + return _RFC4514NameParser(data, attr_name_overrides or {}).parse() + + @classmethod + def from_bytes(cls, data: bytes) -> Name: + """ + Parse a DER encoded X.509 name (the inverse of ``public_bytes``). + """ + return rust_x509.parse_name_bytes(data) + + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: + """ + Format as RFC4514 Distinguished Name string. + For example 'CN=foobar.com,O=Foo Corp,C=US' + + An X.509 name is a two-level structure: a list of sets of attributes. + Each list element is separated by ',' and within each list element, set + elements are separated by '+'. The latter is almost never used in + real world certificates. According to RFC4514 section 2.1 the + RDNSequence must be reversed when converting to string representation. + """ + return ",".join( + attr.rfc4514_string(attr_name_overrides) + for attr in reversed(self._attributes) + ) + + def get_attributes_for_oid( + self, + oid: ObjectIdentifier, + ) -> list[NameAttribute[str | bytes]]: + return [i for i in self if i.oid == oid] + + @property + def rdns(self) -> list[RelativeDistinguishedName]: + return self._attributes + + def public_bytes(self, backend: typing.Any = None) -> bytes: + return rust_x509.encode_name_bytes(self) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Name): + return NotImplemented + + return self._attributes == other._attributes + + def __hash__(self) -> int: + # TODO: this is relatively expensive, if this looks like a bottleneck + # for you, consider optimizing! + return hash(tuple(self._attributes)) + + def __iter__(self) -> Iterator[NameAttribute[str | bytes]]: + for rdn in self._attributes: + yield from rdn + + def __len__(self) -> int: + return sum(len(rdn) for rdn in self._attributes) + + def __repr__(self) -> str: + return f"" + + +class _RFC4514NameParser: + _OID_RE = re.compile(r"(0|([1-9]\d*))(\.(0|([1-9]\d*)))+") + _DESCR_RE = re.compile(r"[a-zA-Z][a-zA-Z\d-]*") + + _ESCAPE_SPECIAL = r"[\\ #=\"\+,;<>]" + _ESCAPE_HEX = r"[\da-zA-Z]{2}" + _PAIR = rf"\\({_ESCAPE_SPECIAL}|{_ESCAPE_HEX})" + _PAIR_MULTI_RE = re.compile(rf"(\\{_ESCAPE_SPECIAL})|((\\{_ESCAPE_HEX})+)") + _LUTF1 = r"[\x01-\x1f\x21\x24-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _SUTF1 = r"[\x01-\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _TUTF1 = r"[\x01-\x1F\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _UTFMB = rf"[\x80-{chr(sys.maxunicode)}]" + _LEADCHAR = rf"{_LUTF1}|{_UTFMB}" + _STRINGCHAR = rf"{_SUTF1}|{_UTFMB}" + _TRAILCHAR = rf"{_TUTF1}|{_UTFMB}" + _STRING_RE = re.compile( + rf""" + ( + ({_LEADCHAR}|{_PAIR}) + ( + ({_STRINGCHAR}|{_PAIR})* + ({_TRAILCHAR}|{_PAIR}) + )? + )? + """, + re.VERBOSE, + ) + _HEXSTRING_RE = re.compile(r"#([\da-zA-Z]{2})+") + + def __init__(self, data: str, attr_name_overrides: _NameOidMap) -> None: + self._data = data + self._idx = 0 + + self._attr_name_overrides = attr_name_overrides + + def _has_data(self) -> bool: + return self._idx < len(self._data) + + def _peek(self) -> str | None: + if self._has_data(): + return self._data[self._idx] + return None + + def _read_char(self, ch: str) -> None: + if self._peek() != ch: + raise ValueError + self._idx += 1 + + def _read_re(self, pat) -> str: + match = pat.match(self._data, pos=self._idx) + if match is None: + raise ValueError + val = match.group() + self._idx += len(val) + return val + + def parse(self) -> Name: + """ + Parses the `data` string and converts it to a Name. + + According to RFC4514 section 2.1 the RDNSequence must be + reversed when converting to string representation. So, when + we parse it, we need to reverse again to get the RDNs on the + correct order. + """ + + if not self._has_data(): + return Name([]) + + rdns = [self._parse_rdn()] + + while self._has_data(): + self._read_char(",") + rdns.append(self._parse_rdn()) + + return Name(reversed(rdns)) + + def _parse_rdn(self) -> RelativeDistinguishedName: + nas = [self._parse_na()] + while self._peek() == "+": + self._read_char("+") + nas.append(self._parse_na()) + + return RelativeDistinguishedName(nas) + + def _parse_na(self) -> NameAttribute[str]: + try: + oid_value = self._read_re(self._OID_RE) + except ValueError: + name = self._read_re(self._DESCR_RE) + oid = self._attr_name_overrides.get( + name, _NAME_TO_NAMEOID.get(name) + ) + if oid is None: + raise ValueError + else: + oid = ObjectIdentifier(oid_value) + + self._read_char("=") + if self._peek() == "#": + value = self._read_re(self._HEXSTRING_RE) + value = binascii.unhexlify(value[1:]).decode() + else: + raw_value = self._read_re(self._STRING_RE) + value = _unescape_dn_value(raw_value) + + return NameAttribute(oid, value) diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/ocsp.py b/.venv/lib/python3.9/site-packages/cryptography/x509/ocsp.py new file mode 100644 index 0000000..f61ed80 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/x509/ocsp.py @@ -0,0 +1,379 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import datetime +from collections.abc import Iterable + +from cryptography import utils, x509 +from cryptography.hazmat.bindings._rust import ocsp +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPrivateKeyTypes, +) +from cryptography.x509.base import _reject_duplicate_extension + + +class OCSPResponderEncoding(utils.Enum): + HASH = "By Hash" + NAME = "By Name" + + +class OCSPResponseStatus(utils.Enum): + SUCCESSFUL = 0 + MALFORMED_REQUEST = 1 + INTERNAL_ERROR = 2 + TRY_LATER = 3 + SIG_REQUIRED = 5 + UNAUTHORIZED = 6 + + +_ALLOWED_HASHES = ( + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, +) + + +def _verify_algorithm(algorithm: hashes.HashAlgorithm) -> None: + if not isinstance(algorithm, _ALLOWED_HASHES): + raise ValueError( + "Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512" + ) + + +class OCSPCertStatus(utils.Enum): + GOOD = 0 + REVOKED = 1 + UNKNOWN = 2 + + +class _SingleResponse: + def __init__( + self, + resp: tuple[x509.Certificate, x509.Certificate] | None, + resp_hash: tuple[bytes, bytes, int] | None, + algorithm: hashes.HashAlgorithm, + cert_status: OCSPCertStatus, + this_update: datetime.datetime, + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, + ): + _verify_algorithm(algorithm) + if not isinstance(this_update, datetime.datetime): + raise TypeError("this_update must be a datetime object") + if next_update is not None and not isinstance( + next_update, datetime.datetime + ): + raise TypeError("next_update must be a datetime object or None") + + self._resp = resp + self._resp_hash = resp_hash + self._algorithm = algorithm + self._this_update = this_update + self._next_update = next_update + + if not isinstance(cert_status, OCSPCertStatus): + raise TypeError( + "cert_status must be an item from the OCSPCertStatus enum" + ) + if cert_status is not OCSPCertStatus.REVOKED: + if revocation_time is not None: + raise ValueError( + "revocation_time can only be provided if the certificate " + "is revoked" + ) + if revocation_reason is not None: + raise ValueError( + "revocation_reason can only be provided if the certificate" + " is revoked" + ) + else: + if not isinstance(revocation_time, datetime.datetime): + raise TypeError("revocation_time must be a datetime object") + + if revocation_reason is not None and not isinstance( + revocation_reason, x509.ReasonFlags + ): + raise TypeError( + "revocation_reason must be an item from the ReasonFlags " + "enum or None" + ) + + self._cert_status = cert_status + self._revocation_time = revocation_time + self._revocation_reason = revocation_reason + + +OCSPRequest = ocsp.OCSPRequest +OCSPResponse = ocsp.OCSPResponse +OCSPSingleResponse = ocsp.OCSPSingleResponse + + +class OCSPRequestBuilder: + def __init__( + self, + request: tuple[ + x509.Certificate, x509.Certificate, hashes.HashAlgorithm + ] + | None = None, + request_hash: tuple[bytes, bytes, int, hashes.HashAlgorithm] + | None = None, + extensions: list[x509.Extension[x509.ExtensionType]] = [], + ) -> None: + self._request = request + self._request_hash = request_hash + self._extensions = extensions + + def add_certificate( + self, + cert: x509.Certificate, + issuer: x509.Certificate, + algorithm: hashes.HashAlgorithm, + ) -> OCSPRequestBuilder: + if self._request is not None or self._request_hash is not None: + raise ValueError("Only one certificate can be added to a request") + + _verify_algorithm(algorithm) + if not isinstance(cert, x509.Certificate) or not isinstance( + issuer, x509.Certificate + ): + raise TypeError("cert and issuer must be a Certificate") + + return OCSPRequestBuilder( + (cert, issuer, algorithm), self._request_hash, self._extensions + ) + + def add_certificate_by_hash( + self, + issuer_name_hash: bytes, + issuer_key_hash: bytes, + serial_number: int, + algorithm: hashes.HashAlgorithm, + ) -> OCSPRequestBuilder: + if self._request is not None or self._request_hash is not None: + raise ValueError("Only one certificate can be added to a request") + + if not isinstance(serial_number, int): + raise TypeError("serial_number must be an integer") + + _verify_algorithm(algorithm) + utils._check_bytes("issuer_name_hash", issuer_name_hash) + utils._check_bytes("issuer_key_hash", issuer_key_hash) + if algorithm.digest_size != len( + issuer_name_hash + ) or algorithm.digest_size != len(issuer_key_hash): + raise ValueError( + "issuer_name_hash and issuer_key_hash must be the same length " + "as the digest size of the algorithm" + ) + + return OCSPRequestBuilder( + self._request, + (issuer_name_hash, issuer_key_hash, serial_number, algorithm), + self._extensions, + ) + + def add_extension( + self, extval: x509.ExtensionType, critical: bool + ) -> OCSPRequestBuilder: + if not isinstance(extval, x509.ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = x509.Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + + return OCSPRequestBuilder( + self._request, self._request_hash, [*self._extensions, extension] + ) + + def build(self) -> OCSPRequest: + if self._request is None and self._request_hash is None: + raise ValueError("You must add a certificate before building") + + return ocsp.create_ocsp_request(self) + + +class OCSPResponseBuilder: + def __init__( + self, + response: _SingleResponse | None = None, + responder_id: tuple[x509.Certificate, OCSPResponderEncoding] + | None = None, + certs: list[x509.Certificate] | None = None, + extensions: list[x509.Extension[x509.ExtensionType]] = [], + ): + self._response = response + self._responder_id = responder_id + self._certs = certs + self._extensions = extensions + + def add_response( + self, + cert: x509.Certificate, + issuer: x509.Certificate, + algorithm: hashes.HashAlgorithm, + cert_status: OCSPCertStatus, + this_update: datetime.datetime, + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, + ) -> OCSPResponseBuilder: + if self._response is not None: + raise ValueError("Only one response per OCSPResponse.") + + if not isinstance(cert, x509.Certificate) or not isinstance( + issuer, x509.Certificate + ): + raise TypeError("cert and issuer must be a Certificate") + + singleresp = _SingleResponse( + (cert, issuer), + None, + algorithm, + cert_status, + this_update, + next_update, + revocation_time, + revocation_reason, + ) + return OCSPResponseBuilder( + singleresp, + self._responder_id, + self._certs, + self._extensions, + ) + + def add_response_by_hash( + self, + issuer_name_hash: bytes, + issuer_key_hash: bytes, + serial_number: int, + algorithm: hashes.HashAlgorithm, + cert_status: OCSPCertStatus, + this_update: datetime.datetime, + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, + ) -> OCSPResponseBuilder: + if self._response is not None: + raise ValueError("Only one response per OCSPResponse.") + + if not isinstance(serial_number, int): + raise TypeError("serial_number must be an integer") + + utils._check_bytes("issuer_name_hash", issuer_name_hash) + utils._check_bytes("issuer_key_hash", issuer_key_hash) + _verify_algorithm(algorithm) + if algorithm.digest_size != len( + issuer_name_hash + ) or algorithm.digest_size != len(issuer_key_hash): + raise ValueError( + "issuer_name_hash and issuer_key_hash must be the same length " + "as the digest size of the algorithm" + ) + + singleresp = _SingleResponse( + None, + (issuer_name_hash, issuer_key_hash, serial_number), + algorithm, + cert_status, + this_update, + next_update, + revocation_time, + revocation_reason, + ) + return OCSPResponseBuilder( + singleresp, + self._responder_id, + self._certs, + self._extensions, + ) + + def responder_id( + self, encoding: OCSPResponderEncoding, responder_cert: x509.Certificate + ) -> OCSPResponseBuilder: + if self._responder_id is not None: + raise ValueError("responder_id can only be set once") + if not isinstance(responder_cert, x509.Certificate): + raise TypeError("responder_cert must be a Certificate") + if not isinstance(encoding, OCSPResponderEncoding): + raise TypeError( + "encoding must be an element from OCSPResponderEncoding" + ) + + return OCSPResponseBuilder( + self._response, + (responder_cert, encoding), + self._certs, + self._extensions, + ) + + def certificates( + self, certs: Iterable[x509.Certificate] + ) -> OCSPResponseBuilder: + if self._certs is not None: + raise ValueError("certificates may only be set once") + certs = list(certs) + if len(certs) == 0: + raise ValueError("certs must not be an empty list") + if not all(isinstance(x, x509.Certificate) for x in certs): + raise TypeError("certs must be a list of Certificates") + return OCSPResponseBuilder( + self._response, + self._responder_id, + certs, + self._extensions, + ) + + def add_extension( + self, extval: x509.ExtensionType, critical: bool + ) -> OCSPResponseBuilder: + if not isinstance(extval, x509.ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = x509.Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + + return OCSPResponseBuilder( + self._response, + self._responder_id, + self._certs, + [*self._extensions, extension], + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: hashes.HashAlgorithm | None, + ) -> OCSPResponse: + if self._response is None: + raise ValueError("You must add a response before signing") + if self._responder_id is None: + raise ValueError("You must add a responder_id before signing") + + return ocsp.create_ocsp_response( + OCSPResponseStatus.SUCCESSFUL, self, private_key, algorithm + ) + + @classmethod + def build_unsuccessful( + cls, response_status: OCSPResponseStatus + ) -> OCSPResponse: + if not isinstance(response_status, OCSPResponseStatus): + raise TypeError( + "response_status must be an item from OCSPResponseStatus" + ) + if response_status is OCSPResponseStatus.SUCCESSFUL: + raise ValueError("response_status cannot be SUCCESSFUL") + + return ocsp.create_ocsp_response(response_status, None, None, None) + + +load_der_ocsp_request = ocsp.load_der_ocsp_request +load_der_ocsp_response = ocsp.load_der_ocsp_response diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/oid.py b/.venv/lib/python3.9/site-packages/cryptography/x509/oid.py new file mode 100644 index 0000000..520fc7a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/x509/oid.py @@ -0,0 +1,37 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat._oid import ( + AttributeOID, + AuthorityInformationAccessOID, + CertificatePoliciesOID, + CRLEntryExtensionOID, + ExtendedKeyUsageOID, + ExtensionOID, + NameOID, + ObjectIdentifier, + OCSPExtensionOID, + OtherNameFormOID, + PublicKeyAlgorithmOID, + SignatureAlgorithmOID, + SubjectInformationAccessOID, +) + +__all__ = [ + "AttributeOID", + "AuthorityInformationAccessOID", + "CRLEntryExtensionOID", + "CertificatePoliciesOID", + "ExtendedKeyUsageOID", + "ExtensionOID", + "NameOID", + "OCSPExtensionOID", + "ObjectIdentifier", + "OtherNameFormOID", + "PublicKeyAlgorithmOID", + "SignatureAlgorithmOID", + "SubjectInformationAccessOID", +] diff --git a/.venv/lib/python3.9/site-packages/cryptography/x509/verification.py b/.venv/lib/python3.9/site-packages/cryptography/x509/verification.py new file mode 100644 index 0000000..2db4324 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/x509/verification.py @@ -0,0 +1,34 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.x509.general_name import DNSName, IPAddress + +__all__ = [ + "ClientVerifier", + "Criticality", + "ExtensionPolicy", + "Policy", + "PolicyBuilder", + "ServerVerifier", + "Store", + "Subject", + "VerificationError", + "VerifiedClient", +] + +Store = rust_x509.Store +Subject = typing.Union[DNSName, IPAddress] +VerifiedClient = rust_x509.VerifiedClient +ClientVerifier = rust_x509.ClientVerifier +ServerVerifier = rust_x509.ServerVerifier +PolicyBuilder = rust_x509.PolicyBuilder +Policy = rust_x509.Policy +ExtensionPolicy = rust_x509.ExtensionPolicy +Criticality = rust_x509.Criticality +VerificationError = rust_x509.VerificationError diff --git a/.venv/lib/python3.9/site-packages/distutils-precedence.pth b/.venv/lib/python3.9/site-packages/distutils-precedence.pth new file mode 100644 index 0000000..6de4198 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/distutils-precedence.pth @@ -0,0 +1 @@ +import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'stdlib') == 'local'; enabled and __import__('_distutils_hack').add_shim(); diff --git a/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/INSTALLER b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/METADATA b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/METADATA new file mode 100644 index 0000000..1966b38 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/METADATA @@ -0,0 +1,74 @@ +Metadata-Version: 2.4 +Name: invoke +Version: 3.0.3 +Summary: Pythonic task execution +Author-email: Jeff Forcier +License-Expression: BSD-2-Clause +Project-URL: Docs, https://docs.pyinvoke.org +Project-URL: Source, https://github.com/pyinvoke/invoke +Project-URL: Changelog, https://www.pyinvoke.org/changelog.html +Project-URL: CI, https://app.circleci.com/pipelines/github/pyinvoke/invoke +Project-URL: Issues, https://github.com/pyinvoke/invoke/issues +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: Operating System :: POSIX +Classifier: Operating System :: Unix +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: Microsoft :: Windows +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +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 :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Topic :: Software Development +Classifier: Topic :: Software Development :: Build Tools +Classifier: Topic :: Software Development :: Libraries +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: System :: Software Distribution +Classifier: Topic :: System :: Systems Administration +Requires-Python: >=3.9 +Description-Content-Type: text/x-rst +License-File: LICENSE +Dynamic: license-file + +|version| |python| |license| |ci| |coverage| + +.. |version| image:: https://img.shields.io/pypi/v/invoke + :target: https://pypi.org/project/invoke/ + :alt: PyPI - Package Version +.. |python| image:: https://img.shields.io/pypi/pyversions/invoke + :target: https://pypi.org/project/invoke/ + :alt: PyPI - Python Version +.. |license| image:: https://img.shields.io/pypi/l/invoke + :target: https://github.com/pyinvoke/invoke/blob/main/LICENSE + :alt: PyPI - License +.. |ci| image:: https://img.shields.io/circleci/build/github/pyinvoke/invoke/main + :target: https://app.circleci.com/pipelines/github/pyinvoke/invoke + :alt: CircleCI +.. |coverage| image:: https://img.shields.io/codecov/c/gh/pyinvoke/invoke + :target: https://app.codecov.io/gh/pyinvoke/invoke + :alt: Codecov + +Welcome to Invoke! +================== + +Invoke is a Python library for managing shell-oriented subprocesses and +organizing executable Python code into CLI-invokable tasks. It draws +inspiration from various sources (``make``/``rake``, Fabric 1.x, etc) to arrive +at a powerful & clean feature set. + +To find out what's new in this version of Invoke, please see `the changelog +`_. + +For a high level introduction, including example code, please see `our main +project website `_; or for detailed API docs, see `the +versioned API website `_. + +The project maintainer keeps a `roadmap +`_ on his website. diff --git a/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/RECORD b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/RECORD new file mode 100644 index 0000000..aeab6e2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/RECORD @@ -0,0 +1,107 @@ +../../../bin/inv,sha256=VV4iDzH36J2DoAkAkmyxI_X1kP158XCJK4c7FoUktkE,272 +../../../bin/invoke,sha256=VV4iDzH36J2DoAkAkmyxI_X1kP158XCJK4c7FoUktkE,272 +invoke-3.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +invoke-3.0.3.dist-info/METADATA,sha256=OqfmvFg8BLYvd0VfUZtJvmUpv47xZetSAisNp_rJ1Ks,3246 +invoke-3.0.3.dist-info/RECORD,, +invoke-3.0.3.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91 +invoke-3.0.3.dist-info/entry_points.txt,sha256=fz7lDPipw_V1nnuk41CNxa739dBpJ8TO9cpKuUXVDPs,81 +invoke-3.0.3.dist-info/licenses/LICENSE,sha256=eSL5f4lvHRYeHr9HCD4wSiNjg2GyVcaQK15PNO7aDa0,1314 +invoke-3.0.3.dist-info/top_level.txt,sha256=ZlTlAVMd8lzn3sXyAhCRi0LNslCasA7rlucRHq9w79w,7 +invoke/__init__.py,sha256=7wp0e6LQ_yf1uTu-a-1TF9TdyPuulp-rkXcNE6zcD9s,2212 +invoke/__main__.py,sha256=nwyePAl8dedcetg1CiEQNC0-CHESN0DJy5tK2YEqGeo,47 +invoke/__pycache__/__init__.cpython-39.pyc,, +invoke/__pycache__/__main__.cpython-39.pyc,, +invoke/__pycache__/collection.cpython-39.pyc,, +invoke/__pycache__/config.cpython-39.pyc,, +invoke/__pycache__/context.cpython-39.pyc,, +invoke/__pycache__/env.cpython-39.pyc,, +invoke/__pycache__/exceptions.cpython-39.pyc,, +invoke/__pycache__/executor.cpython-39.pyc,, +invoke/__pycache__/loader.cpython-39.pyc,, +invoke/__pycache__/main.cpython-39.pyc,, +invoke/__pycache__/program.cpython-39.pyc,, +invoke/__pycache__/runners.cpython-39.pyc,, +invoke/__pycache__/tasks.cpython-39.pyc,, +invoke/__pycache__/terminals.cpython-39.pyc,, +invoke/__pycache__/util.cpython-39.pyc,, +invoke/__pycache__/watchers.cpython-39.pyc,, +invoke/collection.py,sha256=0Qv9bnfKeUbkAaTLINxrzG9MBrhjwrhd7Rv6v6WgdKI,23060 +invoke/completion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +invoke/completion/__pycache__/__init__.cpython-39.pyc,, +invoke/completion/__pycache__/complete.cpython-39.pyc,, +invoke/completion/bash.completion,sha256=OvJRVRvoW7aMDf5qMKidi8x-ND-KkIM5JS5-6iJ3eHE,1356 +invoke/completion/complete.py,sha256=j3Tv2oNrKyuQHPi5tavAUYN5vo8v4vABNl_T9t_0YOY,5222 +invoke/completion/fish.completion,sha256=G28g1dpA-Q9-Q6KmlcGd_6XMw8h7ExHjAJ6ny04ufr8,382 +invoke/completion/zsh.completion,sha256=YiekKS7ZDCIqLmlC31Ht9H95S2n8aNsfnn4bjBcFRLQ,1429 +invoke/config.py,sha256=l_LFq5urG8JkZrNe8yt2R_qr2Wz6cuqeuJGz-K5q9w4,49648 +invoke/context.py,sha256=vrdX3clzYKLR6Bj8aCNe234QUvdQid3QjbMBabXYDVw,25925 +invoke/env.py,sha256=T_ejssb-lmdZwPHFjJGH62KnhQKim-ziiWBxM-8ejW8,4394 +invoke/exceptions.py,sha256=e5vwp9cJS8teQK30WLY4ICKU8ateSUexU6BuFnEllDA,12227 +invoke/executor.py,sha256=Sh0SB_O5T0SmpaAYKtv1tIPBH9vm-BwlEPWLvvXzXEU,9045 +invoke/loader.py,sha256=6ValeQYS38H5kGEkM6TLwbsVlIrLRgKt3rmX-Z9l-lE,6010 +invoke/main.py,sha256=njYYo2anK4krAE4mCV9Z9I1bRJFaOCp-UBL1vRE-Wq4,235 +invoke/parser/__init__.py,sha256=HpSB_sx2aZrCOUy5Cl_LMyfCBuGwrB9-d1OS4821Dzs,181 +invoke/parser/__pycache__/__init__.cpython-39.pyc,, +invoke/parser/__pycache__/argument.cpython-39.pyc,, +invoke/parser/__pycache__/context.cpython-39.pyc,, +invoke/parser/__pycache__/parser.cpython-39.pyc,, +invoke/parser/argument.py,sha256=eyIGaOtjyEz2M2BMiIz0cvn8J6zinpUhgxoXexJzHpk,6045 +invoke/parser/context.py,sha256=NaqvcN4E9W-7Ems48tJzIedBqcrZnbR41TA_rSE5JGo,9815 +invoke/parser/parser.py,sha256=g99NcgzHGfEjsNzwyFmAo_MRhqlGf82SXXBzOZXr6Rw,19809 +invoke/program.py,sha256=a73_feecdZP8Em6VYkFusMH_OcQRXTOA3Ge4x37zpes,38177 +invoke/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +invoke/runners.py,sha256=dM6P9kgR-0bi7q5uXH5voY3M4enKmQfy_sZJKehsWyg,67359 +invoke/tasks.py,sha256=7O_Eh_2Ol5FkDbjtS-APlVgt1KFdqKdgqRDjpjM_3O4,20144 +invoke/terminals.py,sha256=COszJimzGyA7FcPo8kgOmVDl4v5kciU2w3-Ts3LOo4g,8148 +invoke/util.py,sha256=NKjJoZA4Tb8VzAvr58gIAWvQBaTFDKRg3bjRSxdeMcs,10018 +invoke/vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +invoke/vendor/__pycache__/__init__.cpython-39.pyc,, +invoke/vendor/fluidity/__init__.py,sha256=f5SF3sMYo71808nX-9bJt0pb5-BCZ2srikX1aCqczpw,196 +invoke/vendor/fluidity/__pycache__/__init__.cpython-39.pyc,, +invoke/vendor/fluidity/__pycache__/backwardscompat.cpython-39.pyc,, +invoke/vendor/fluidity/__pycache__/machine.cpython-39.pyc,, +invoke/vendor/fluidity/backwardscompat.py,sha256=P_qC1dIhIHq6LQYDGxWed-V8o3viMcPOYv4mx0NY52U,135 +invoke/vendor/fluidity/machine.py,sha256=9ZhzmAg-3Q_5jCWHOih1WtoTMAKhkgT2EePkXW-258M,8686 +invoke/vendor/lexicon/__init__.py,sha256=iFssP2WfLyW5pmp4EDFvd_63zvAyZ_7YKh2nrfbvlHY,1133 +invoke/vendor/lexicon/__pycache__/__init__.cpython-39.pyc,, +invoke/vendor/lexicon/__pycache__/_version.cpython-39.pyc,, +invoke/vendor/lexicon/__pycache__/alias_dict.cpython-39.pyc,, +invoke/vendor/lexicon/__pycache__/attribute_dict.cpython-39.pyc,, +invoke/vendor/lexicon/_version.py,sha256=GFgEreRHgT-8UlwM974VYEId1Wj19fqMAk-hpObAjeI,80 +invoke/vendor/lexicon/alias_dict.py,sha256=gsSlVPy3wt5HGJSzjhdBiMVcPnIuVLU3Sl1VbybVs5w,3223 +invoke/vendor/lexicon/attribute_dict.py,sha256=j2myombp3ZH3fTOy4RhVAyZXrP_-1iwVqdenEvY2u-Q,407 +invoke/vendor/yaml/__init__.py,sha256=gfp2CbRVhzknghkiiJD2l6Z0pI-mv_iZHPSJ4aj0-nY,13170 +invoke/vendor/yaml/__pycache__/__init__.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/composer.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/constructor.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/cyaml.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/dumper.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/emitter.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/error.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/events.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/loader.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/nodes.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/parser.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/reader.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/representer.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/resolver.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/scanner.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/serializer.cpython-39.pyc,, +invoke/vendor/yaml/__pycache__/tokens.cpython-39.pyc,, +invoke/vendor/yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883 +invoke/vendor/yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639 +invoke/vendor/yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851 +invoke/vendor/yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837 +invoke/vendor/yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006 +invoke/vendor/yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533 +invoke/vendor/yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445 +invoke/vendor/yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061 +invoke/vendor/yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440 +invoke/vendor/yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495 +invoke/vendor/yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794 +invoke/vendor/yaml/representer.py,sha256=82UM3ZxUQKqsKAF4ltWOxCS6jGPIFtXpGs7mvqyv4Xs,14184 +invoke/vendor/yaml/resolver.py,sha256=Z1W8AOMA6Proy4gIO2OhUO4IPS_bFNAl0Ca3rwChpPg,8999 +invoke/vendor/yaml/scanner.py,sha256=KeQIKGNlSyPE8QDwionHxy9CgbqE5teJEz05FR9-nAg,51277 +invoke/vendor/yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165 +invoke/vendor/yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573 +invoke/watchers.py,sha256=E8CB8ikiXFw-15snsFnbZjwq-exFMqNqFOqkGgcsqLs,5097 diff --git a/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/WHEEL b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/WHEEL new file mode 100644 index 0000000..14a883f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/entry_points.txt b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/entry_points.txt new file mode 100644 index 0000000..56faa37 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +inv = invoke.main:program.run +invoke = invoke.main:program.run diff --git a/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/licenses/LICENSE b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/licenses/LICENSE new file mode 100644 index 0000000..10e0dce --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/licenses/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2020 Jeff Forcier. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +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.9/site-packages/invoke-3.0.3.dist-info/top_level.txt b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/top_level.txt new file mode 100644 index 0000000..460820d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke-3.0.3.dist-info/top_level.txt @@ -0,0 +1 @@ +invoke diff --git a/.venv/lib/python3.9/site-packages/invoke/__init__.py b/.venv/lib/python3.9/site-packages/invoke/__init__.py new file mode 100644 index 0000000..92658cf --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/__init__.py @@ -0,0 +1,72 @@ +from importlib import metadata +from typing import Any + +from .collection import Collection # noqa +from .config import Config # noqa +from .context import Context, MockContext # noqa +from .exceptions import ( # noqa + AmbiguousEnvVar, + AuthFailure, + CollectionNotFound, + CommandTimedOut, + Exit, + ParseError, + PlatformError, + ResponseNotAccepted, + SubprocessPipeError, + ThreadException, + UncastableEnvVar, + UnexpectedExit, + UnknownFileType, + UnpicklableConfigMember, + WatcherError, +) +from .executor import Executor # noqa +from .loader import FilesystemLoader # noqa +from .parser import Argument, Parser, ParserContext, ParseResult # noqa +from .program import Program # noqa +from .runners import Failure, Local, Promise, Result, Runner # noqa +from .tasks import Call, Task, call, task # noqa +from .terminals import pty_size # noqa +from .watchers import FailingResponder, Responder, StreamWatcher # noqa + +__version__ = metadata.version("invoke") + + +def run(command: str, **kwargs: Any) -> Result: + """ + Run ``command`` in a subprocess and return a `.Result` object. + + See `.Runner.run` for API details. + + .. note:: + This function is a convenience wrapper around Invoke's `.Context` and + `.Runner` APIs. + + Specifically, it creates an anonymous `.Context` instance and calls its + `~.Context.run` method, which in turn defaults to using a `.Local` + runner subclass for command execution. + + .. versionadded:: 1.0 + """ + return Context().run(command, **kwargs) + + +def sudo(command: str, **kwargs: Any) -> Result: + """ + Run ``command`` in a ``sudo`` subprocess and return a `.Result` object. + + See `.Context.sudo` for API details, such as the ``password`` kwarg. + + .. note:: + This function is a convenience wrapper around Invoke's `.Context` and + `.Runner` APIs. + + Specifically, it creates an anonymous `.Context` instance and calls its + `~.Context.sudo` method, which in turn defaults to using a `.Local` + runner subclass for command execution (plus sudo-related bits & + pieces). + + .. versionadded:: 1.4 + """ + return Context().sudo(command, **kwargs) diff --git a/.venv/lib/python3.9/site-packages/invoke/__main__.py b/.venv/lib/python3.9/site-packages/invoke/__main__.py new file mode 100644 index 0000000..2c8118c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/__main__.py @@ -0,0 +1,3 @@ +from invoke.main import program + +program.run() diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..32e8701996896aa727cbfccdb35c7d78a2eab76f GIT binary patch literal 2732 zcmds3OK%%D5Z<+9NtP{3emjYiY@W6pTXNow8x%EM8wi@DMs2qMFA}v&OSG1|3zBPF zMbJxo?y1Kf8X%Yami_}?d&*zvsWX)PXmbnDOBdKrGhA|pGxL!nS}GMCc;5b6JA7Ag zoIg>y_+&x(5?;0KI!@pOZs-V?xGu^=;gHCX49J-v8)n5Y8Mg9pm=k%Dw{k8lh!HX( zilk`ud^jq`$e1XRk{BoBqD;!7LMmc{Oo&M`DW=Gjm?qO=hRldrGAriDoR}x`;u5(e zE|bgFMj^Z+7RZ8?N5ZS(8o6fWVt8G6#1l8j4RMp)6t~DNJ3boT7I(-UE02YD#Ufc0 zOJqq@NmVS9WpR((v)@YLidZG9qDE?>PU>Qftl9DL@VqftK5hqXXWq4w*binw@Af`YQIj1EpFvtheJd3QT!37J^2>9v3Y5CeR5tY!R4x_G!rjl8ZcSSn!<)`r-DV=hQfXBPE)6x<$nVIwEvcvu zoBU}4hhN4%4eckv6*Ia1Z1_#1$a=|c(l9jHJ*v7U3v)r%AmjcL-D@cR1FL3We^3z~ zwfmWb{h5(-v9zlpYhn-{$?@nY?&7Mv-!GNPb&siRE0dEa#qz8@HG*7^}Q zy|{G!YCSkfe6(xVc|>b2hm1x)Dv)IE?VUg&=hxo;o~v|tJJxpA5S;X4;PMaCk|G;;|}*bm_n=z z1b;w*Ov=--mnx{Y&7kE_^UM^a3#fw`_d}{68IZX_H9Tf14JYS3e@9Fz7@$GGg7tOp zer?TKst(CK6x(FL-1{N90X%GWlKZ&UW^3<%2e{*#OY(fz!l&u4_ZYEHb z<5&jZ%$~dRTKw<0+|S2r;D!GJu;ke&+m8{~NWrTYGCO;^V8ErHMVxwU) zN=thO*u-Bb4&F)>adaOLS9$)m?*?0M2|08rjUo6rV9lvL=snSZV_?PZ zprcXm+>@$xB7<@wH(}2;hU3tBw~>#Sc%X-%-#Xn;!apu5wUCvP;W%GES#QRko<(M- I<(a$U2W7BCIRF3v literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/collection.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/collection.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f9c5fdf257198cdc0cdf68e36ff1d6f130e1150 GIT binary patch literal 20306 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/config.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/config.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..650116ac39a68ee176f201c8b5e17b0a569b8b77 GIT binary patch literal 35169 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 Vsrr&h|F}v&`AfV+{matg{{w}aLUaHC literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/env.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/env.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00f8c931980279daeac247f9f63285baff729977 GIT binary patch literal 3972 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/executor.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/executor.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75bc61c99da0404b361a24f4a7042059a8271e80 GIT binary patch literal 6804 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/loader.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..079ae645e642aafdb7bc6dc73db9fca735caa9db GIT binary patch literal 4966 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/runners.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/runners.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a372810e2fb33cab785848b399f362baf1a6203 GIT binary patch literal 50672 zcmdVDYm{79cHdX8u704=Xf&E2NP?Uq$RW@ay1^kini=pRf_RY7a2gPS8Hg>7s;c|m z1`6n|YTl|M*gXwe7AZ?sG}a_b*0Lqa3y>u_OcW)SofSuk<5NiCt?b*JUYWMfm5u$IGb=N8KDKdSb9QBR^We(C&AFAi%|k1P zHs@F7Hy>DeVDs?G;mrqE9^5>#a%A(Nm4}LjooRc+!z&M8E3^++3gIK$zg{fpUr=0m z_^m>_^h|uu(UqggJ^wJd=VZ#=g7iIq=m)>dkp zkFPwwd2Hp_<`XMVY(Ba2B=4*S6C0o0d}`&X&EqS_H&3jb*j!jy*nE2BY5Q(+HcMm?UI+BmiO%*r!%*S?KUZ9cp5Y_afKA(#&Ke^3bazh7E; zj!!ee0X`iFpL@T&@;sksgM)lN$hV*7(_Chl2+{7+d))*N%Kx3?2#|{-Cn*xuAHZuyFM2!h+?6;^6R^)ow3p zuJz7#+P(1I-WQtf=JhaIC=Du?FJ3-B7`xor3ftVc|0;KdtIf4rSGTvqg{eX5;w3J= zb@_b#?Ca;xe*WU}YlHHc_V!@nY;$9yxw;V!D(6~jy}{&bVLObPy-qZ!ywU3R1{0UI zdaX{oxiJ{K+TYTBYVqq}U}2#;IB>SJx!G(7S6iE5aH-!Lj9+NBHu_OGICQ1Ix)pWS z!fy9+Yb!h-MKpQf>WwID2It>h3$4|`%op3?yIbK}FXUpYH<-TG?5*7hBfEWJY%qT9 z;_|sm*RBlquWt9kZoSv3tAWAX+Kr~*5JvUY{`z_tg~4EAtG8Y6wsyk7LEW=mU++YA zcdLDUp*(mndF$(Rc!P_sGlQuc&2D|YwGp;EgKDeW?De*R;J62|fO(}ygPXo688Lmu+W886oJA_)5mHl?dxZNT2s;tapo|z9G;K~7^5-4;e zc!*E4w5LxG2aoXSAnlI_M``cT;4wbWg@?j<5O81c39i+G$GP@Eco+md!qsD3dm?y} zYY&AFGnT{QBQ};p;TR*b<9eC<)cz-fr?~H^^#JoVvN@J#S2zB!hD!}VubEYAhcbNz{t>z@w3o9j=~ z!h`B#@EP9s+2C_r`()7LYAu|gg%@by#o#5D+f)A9%k<)Vf>*fjxNDQU&hYH3!C9`I z$jswJdLEqPsq?`F?pUDL{0m;=%Im>Jt~?!n7oP>0?+rfxLFN78%1PSP=Qn~c@cp8V zewlY%3NG_`DLlm$eg3}SO+G)9Jbxv)YR`X)nI6l$eLVOgi=jk})>kI?$}^YmN6 z3ZI_~j{t#FK;Q?s_JhHfx%PbS+7AVFu6;T@#dCUVBWUvZyL}&5gEc;Vh90TMK@jrk zv%xywUgzE$L5t6y^H`!gZU(owa@s$=5p4451^=lXbolgQGM=sAZ5z)^ndhUR%RMg# z~?FMv^%|8zbi6VTivd;dfjkiy#^JiZT7pp+G<$q_E+uZFgRIjZ9?WY!*)+C zHm$XGe{(gAYMu4kX4t#Y3A#M6cB9tp)*9U&eQTVoHEuUsy@oZ~h{9e!YOi&Iu(4FT z(1~izPV`VqVM52kDIUQ*(M2n#z)F*4p9inkEnc-){AQYVC#ybXWs4-Ogsn z@I5V#0iefEZ@~aIfsrx7(@C@Xu9Y4y3y(O+Re?-cfAw! zx=Rag0SFHI0a?KQ@N^zR`sON_mV&l+z4cDm))>?7#h~lfo_<;@<>{ww=*?C;*9$ck zgOd4JZ(Xmw)71>YOCVRHb}QVz-HC!)GrHc_;?6ALM!0sP)9`DTbsV)DIZTV1tuBN4 zlE!3$NgkH1b)zqkCswkPW#T@?U2a0F);oO&PODvOG(6JkErOkXE-WuhN1tS|4JLag zBQfiPvGYtxZ!il^UI*C`QrfNV4Md&Edffn7uMZAL)~T=E=(le<;b&i~z18p4yBlG+ zHF!v)34^+!jtD}1oqkF#98BDHqE>fMt@jY$qQU-pv%B41yAgHTojz2g9<;ih+dK}% zsEA}*2R|xA&(qIute?8U;yl&by4CIWx3<8&Q>*mucJpQ!_D=P;TJ=_&w+AL#)mNJ= zzEew#=bcjTo{2IaAc^bk7*;_BR3cICWEdIITH3-|yV)q2cl8$%F_t0prpyAl{SL`}Rcl{ZJ zKL}o_`M|Rof_MJiaIFu;)BIbH8n6vVe~r_$6H+D2Znyz7pn}E<#36d2=K#W(SGQv< zOBRV(lh|Em7HcPdOk2+M`(m%Q)^uY9b78(WnlzckJUV+Kg-h6sxbPJH zf4kp`fK>9vC|hpgAyg?_}yqD`calXkzx5`%1GJ86xjgY3~+Yl+9@VNqL;I-9kN zhUmuy?{+WhY}8H|pw)3^tk+3e+7hcrN@0))E;SZpt+~!z)Gpf+g642}L2^yExvj?= z4YzKSK3@sb$yQfranaU7E$FOunE@u)NOchQ(B6b1wN*HsC$QZt*6qzs&OrOz>S7`| zkGX-EEiX*Cfv12*(_`jxyqgSF)6jU&bH}BaO4iWGqSh))2MNh$2Sh^_6fG4*9LwpW zw8Bn?TWg5;H#GI=aAD1{=Z3B>d8+RjKI}c^C9cPUNv?0YqY-lp&rnX*!rt1#l5tZJ zxn%5q&?5ao*j-};Lt+5kx7m;!!_tmGN)twzjm&cKat><0&`i4aX?quZ06_aoLh{g& zm(fR8J78B9ne*)H+6~x#H?)P)XgEBtorq_!(YVmu=z{uCgRm_L8d)PlUvluVwcP4N z5DxKvBOIsm;>cp{YzI*fIwFC~EYaL6YYyQg z;3v{^O3#p&;DtuUSX73Zx)U0))qxpjR+&(*rq-i`x`AJMc(K-PZMHU=NHWMqjT;Du zer2iMq0TfKt#+Nc!d&o@2VCt0WVwI+hJ=HS)>^9v=9;WE^5_Y=yBkK)ZmYfE8v%7? znONLt-9jEVg4T88KzL&QQC(o85ToIaFaccNY;G*1GKNODh%BZhk+6f-CYBpfDZ1t8 zifJ@96`*@c!W}nY!437>QEI+*beWQg0xw_F=yVb4r z(e*ZlskG76+KF`XhgwR+G-;g>V5yTK`U?x$frN#^4*?Jo_{TkFC}r+t9r2rOH2_QcO?$jeP== zF-m5ayNF5-6ni4T$r`K|Nr4#??L>HxwhOv%*Q7^Wk4&#Yx4M;UD+)ItDo)?N0i04o zVj?LslS)ms)^(#{#zy(ZiJZCS(#PqCnKwWValo_>B3bC0F}nBQ@9mb?KWG6`r;(K(Fwng zI)2gQ&*Lnxe%sdB?HkydpeB+^%|u{glgvSlEC*KiN4a8+)z(>sd1`&I=7yhnJVi2L z?3IjMC1~U%NK*^wif8E>Tg>UZBkcVu_vKiE^bzA#SY{kDkNBxM~ZyM8A|}0KE)q6wefbSOCq6~>?}|@HDstQ6F^|u;U=0m zElHc{B3PN&L5mDFkx{sfbtVNG@n@)=Mq_VLA#UF!y6L{@hzc z!#B32+{WNUTSEMXw1z=rn6bxWZ#0%WZRAxqcqlq72OAtZGz$Wx>9ss4YK_ha3lP4L2G%zE zC??Rm4l19wXAgBJA&Vlc$gxb9Bf9<82IldFgi_=TW+EtiGd6t_|D<=|%WGdZJN9$l zjve2lzgKPgWl;ArCUj9ov^TDO**>w^$jRD z3hshQwHc*cH{^yCli|#8^p+H~se|CTl;CGaEG0NUWb`xHBaqKL|M3a~BDbuj8f1(} zj)I9}B1eOmjyC3c$WyWb$LguT)aotO&N<8bY39+ZNuxu!51-7dV7BZ#u#gD7jMg-s zcs)X4%#0!0Z}XCQhlhb~m!BBfE)Rt>o;=5zf+5`&CLJfzIF=7RYPDCj7I?Fk9L+#T zy^fKCgZ0xPse#bl9E*rvPxY7$mc_;iqXIc|kmeV>%i3gg>1-cT(}vWX1cN}zM&m1f zmhR9aHREiwbl*f>^PWiR&cH2EjHcD1%ZtxQi5jwMc<>Dgdjpi0Dui~x9 zv^R`r=(Mo7Je;q2Bm+ZkM-X=7?tT?F5?z`hNX`=;H5vdb(T+23Q|~Xfy@y7oev}pEn}#c zspVGd--wyxS%?DGsd!nN{t~sW6XGH0qUH=K8_veU6b*@Cg2mHFLh^cQ0^uGA96(P5 zOe+|66ffcvt)*}Yu!@l-ww~ND)EZ8;t{OoJKn;3F0-M&3mOMbFWw-W4zGxpc9Ifqz zkyf6rok1bBF*`b9q$Y3o!S?N;jjcg`+7o*7p6X%7+9F=p+}greY^ZA-6AN4m1tc~o z1>rj_!~n?A)vIsi8MzzbiM$l-rsh2(@8MD(8FtAqBMu06oHE(7OD;GTaBn1Xep z(_xmV32xT}3x)^KV_`E-O#F*uw$u~3kO^TCX6|gCxlYJR!;9pj2GZW>nT#R>0Z&mO zzZhc?!x>|qoL-7wnSY!3jFU9t$6_h~_{_Hr9E?=t`bD42!tT~~tn=`8%$sP{u0?Mt zHayg#&MJSo*5uUkH`n8CG_vy>^W-S<^gTbeE11beh4LH#Fqz@ZWF=V~15_rbaX1yg zzj7FDLG(tWyWL%4a7Yh10oHdUARrDnzmxAqO1)8f5>qpRG@`!Kc#w~_wgqyxAhf)2 z+R#u7&#HXSIk3d^x6@tnw?NB~9O2gx*(T^fFIdB7cn{MOaiFD+j_bM^J(`4JyKr7(237wb7XeK}Ni0LV!jiZHe!>JvZKWnrMqzcU@{I(|~{$PasfsZfON0)uHrA zxMad;J=YY>n{S7P3JJv%z?$w57{gG*tqnpU!MJzmj4;}yFtvT$LG!qp#_nSG9nZ9u zm0utd<~GkmCXtnGxyAP+))7$RvFN8GvOzgaCOP7He4|Kp6+mBvUR||%k|5VI2poRV-SdZWA4IGW3J1h;km}*M#Q($ zRvgUJ7L2QT(wdnGE#9j@DTb(d6(tv@tS5Gj0VD1Xb zF7Cn15*21>9cA2lZqhU13KplvYerXx<8HYQnv-&=hFlb5gfrB5gh8c9*c{$4Z`DG! z(MyJaX>E8FKqML*@v?{)^PT!5Dk7q6R@>OQIVxtxRxoF_b+Uq~c!{JiwDMaBntPd{ zL|d_6%45r`eaDlWROjeFU0pJ%Pli5i_eg{(v#vwd0Og?JdL2T%M&n$AU9;LJ)81yfqqynf$S)bVu2IH zr}bT26Z0sE!+cs^uSU&TlTegvEzvkZf~{`Y53t<&poSB`MP4rFlyriC9Ocd>K0+d6 zsvjE!K)@tCN&5N-;}%VYYAfoGrLafP=efSgk)RDaI;uQ$8efX^dKZSpaNE}vd+Q=6 zVnzt3*o%BOSMj1b%K`xe8-6xW#EFS^MjXcz#ju`!S{l<<2bB_e=;^0(AXC3h!^{go zXPjXgL7v8amuxbfst*qzX(g{6V0b6$$0D4ZhaRj=*pq3yT0qbN<7XpIg+z-_96Yj= z!2A;fl<_!w-js-#(HI|G9p!h<^D{cqRLRXQqKxdCUrY#xGJ(74Kgo!o=EM9#Qf;h~ zXpqt)Q0ALa8l)zuJLbl{jLSr17>^c~qwwC|&o{B|BBNT2uQ}kGFfIBkj_C9s<|3oi z#0n$0VEysI*D-Dn1*)9;I18}{64>cFI1C-dc6d((0T_{)z5r29=p|aUeTs;!8zv>T zYhP@)-W`^g&R+V$mCNVPa)*hLYn#CmVOILsu3c-9*l;@+Z|%D!KQYLf@6=h%kqz9j z0Zk7KP+{m64GD>e`db!-CFrEQ(J;({Msna*_#yfAU-*_hw-2-(2x*TK0W zJ%ZOX8oqBsnBFC9$D5MkFtVH_I2J9^I4rCszNrj56FxzG5I^(D3HR|mh)U&wlqfw| zgZa{iF44c$mQ^Q3JPV=$*M=aHPbLE(w$KC;KdK;sjl76H1SKDQ4%6QWBiS<{j@=x_ zc+qHdz!0{*1MI~agQd}duNPqUZ}De{Y6?cJ71!8Phl%e9NcZu6m`>ai;>7*39c#!@z04^2Og zV8RxnASaouM~2Z@x{}SNa}i<6&+u&8gmmY?24_0?@j@IV&_g}6D=fq3a!h_Dka7}#}>L%ivjbAQ8Ulqn-Df`G^&e{7^J2SgEDpt!!# z%xZU@QpMi?{3<--B2lG%eavK80G*SpoHk(;P2tc0FV`6_hhY~;8LcCzPC9^|N>h|q z-1&fvF>8I={Zd>BcE$U+JpdQ!%uh8EMEbn|S?A-x*ps8D{naUvA`+ODtE6I2ye* z{)x3>vj-Ce=(E!V*(mI+XIejPD{c7kr4dRv#2P#n#l&t{zE)g_vS6UXnuJlpcc0hB zt8Ii81+Acc9Aheiw@2AHy2J9N=v{s-j3AyTC_^OYTLWT*ES~U?NaMyVTquqcl3|)~ zP&wRkGm@cghDBP*BD*;Xm?aQ<@j;iQr%7I3sE}WSBv4=N1l!RwWS&Hy;y|8Fue0@0 zIeJc4KC8p$bWp~PJA9h6L76AtO0~qRiMUDIgGCRALgHznu=R2zFYh_xAe{`PH%scN{Uycvp3)ALoLCA-O5S>&dn%T&s5He=POPcbVMNN0a#NI5e7g~j$WugWp{*{BuS1U@?x}s;s zY-)>sYOD9khA`tohMSe3`l9|$MDOj^&9_e-G;K!qoDhOyJL;5CN^i zN994)X`c2M4Pa1plsVFDGtsT!>Ov*@K0ZWm>TpGuCtTu`F7`47f@sv><)>3|5?pz7Kg!lCFi-~D?+pp%>wO4A_DgrU&k(hT{16QEFq zU;FpZE8nb6%@*g2GsUUW&TNcM&^aTfgYnC*7f>i8c!G5NqjQlRBPpUSB6#mBS+BU0 zy5-(9o?OGd@0&tEk>kU(TZQDCM5v@KWF(1-0NT7*Nm^NkG3~_&o=>RBLNRL64f<+; z$}g?xhxqF62`ok`t2>AMV6(tp%Z^X0XPRFdpNQdt~6}Mk0 z7Vd!4J0vjPh13hbuNB^c)ZZz-SA4tV{ytN9hWjn~u`FU*EL<<#De-3#C;FW`p2Go-dkb+DV1?W-K(BqpN1{I*PA=rrh7*K|3MxEP!Pm4o|!G#h((20q$ znc|ZZQ)6N`bH!O*DOQV9#p%+_|22GdT34%3m(oc=er>(|IGt&+KA3a3#?6wFf#C}$z}WJg%5L#)Ww#s@@0GMxf?~fAJ-b_J zmv+Z?OS|P43vbW)=f-YUSvA~E9fc}F4g3v`1$G5x*3bCv_}z)#B;Uh}-Y-h5xrdMj zzIjmw-c$-qh!KanxsR1rxH%pDaxl)*tT=z~1o%8jAAUWU;{JWSp%hH}Yrhpt`fGar zckR=J-LW6xs1(dR1QES6ac7b>QwnHFSpR-m=iD`+v9TKFdIxUKvWln#VV{rj`5>#N z6dYjnOzlz|!meLXFS-AfV5(i=o;kiN+&#p7v-Y-wUbLI%%A8hGwB^p=zYhSrLjADb zPkVJNX0I;&Id&`d#k&^NcXp2qaNENi+^AWASGDL=) zUkQ8JqzCfpO#WL^;SGeqMYSe}##+iwl6#yr-QBj?+!FV2m$1YuYmN^1&u%%mfaf&i zciGm#j>3>nEYz-JPDcmnCl!=NY8=##f91|`BQq=0*_08gfLUh$&dX<;ZCT}I1a@&% z$FuhxH@*D0yO|G`?L?X}z7?(b$4v;mdclOoNULx#1r6}F@xc_!JwBgI{Gicmx^E(m zm57%3h!Rm2Nh(VMDiK$H#Fav*x(SM2;-2WHo-1#4wpJ#*)YCP=crdAgROdxnqE~cJ zMR~M?3i-L+jAAwQrKEhrV8#W7QoN%s2^+e}t%;B&DG3iEB-S$D>ey{nIl<&%>#ieu z<9;?5_BqyV1i}QcGOv!>bY*3nnNnw0X52_(;v3!J+ej)+w5`LA4nw^Eb*?=E-|tGu zFHBa7hapaf%hSc#vWVNmlC8OdR4u*Fej#P$xuT?Qkvxe_QSCDHd>a1W(Z{AX4S-c#0YdTp4qJgV@|9W$#hKf5^vur?VlPHr@m3#A6@3-!en%d zKj{oc5Aty^?iH-TlnY6dl`OiZ8xw&T-O9u+8+C#JCS^yrb?4BWyv?<1nv)}(6qpO( zU!5<`S7*x-QK!C%XgaoYIEHhcVFKO0+8lvynX3};47#s!V(LrbRwUD+jDG<^j-(k*n9*IHWS$qrwa2OL!6!ZYUvJac(=04eQ*CH ze__7sW$<&~&cB&3ow&XcmQ5cL>0>S@S<`!CU~?(JlwoN^wr|x)Jt46_g+Y zK9Z$rWy)+nhD6+0bwy^PKd*<+=wRxp$Xbl%qK69;(Z8xMkLmDdb@(YAp3vcII*6!8 zM>%k(t;A#zuI%$DV>MfZm~Qo`*+H>4jD|nJ<@be#;wPe(6{uv1^*Ql}m2Xz|O_d}F zPW<8YSQRl*SEsAkC^(xc?i}$*I->RFFqFp4Rwm-no#D_ch+6Fyov~n{*nA%OF9EKf ze$_3p+@&T~+*VIHWJwZ|IkY5gJ6E~pEDjWRQcBKJd?hYX=JLmGQ)@>8LlVzqX8w$G zLs`tNt-d67&;g{72|VduY$K?pS(&Ms*;UCPjn0Z|P!q&TFOW;rG7s{GGF+One*#==|PPw#>t8 z{C1CVa8&kv(biIT_U*^uLoziLzl56mc3i>d_jzG5%8QV{IQzlYEy<{OP6;M7FNB*$ zO>|sP=eU9vPSG1L*JW0=_rSQ`=B@wozvxXHW=X_T6^A*UQd|WYfH(}bw&R8F{6zj0 zNoTdl9YK*xBrdlV`x>2ZnBr?mWji+nFiKq-^|m=Q)(j&Cf?BxSRFTsMSh_Iy?3C;E zioVrkAQz{xM@?R!f}O&9-sYp~>`vK_*2JiQ8Xlb#Tdgs*mD~YL&A%&8zYo(lqUT^i zNDFu`TeONzMZ+-)p5q`=;`Y4o#G!(c(%U`+O1Zt&iF^?`aR39 zc{xycW7~i6Zc(NvQ}aqqS-BFRU9%iAxeYZj;2judpU7CqQPVRDepLvw{98-w8~yH$ z6N+Yc27U8TyQf2!jBjYqK!`*4v0TYJy&gb`1i82z2hCta8mmGdhH)w_?&4ZWqF_-E z-TJn`EBXkKy)va<4lRv*ND@@SRTP5ab zqMuf4Cd`;nBFuGYC9yL8ks_0bnKC*<^b4|BVyAf;C8N}>Ni0MN#6t5`c^#;FxjQDy zBzK~+n2mDEi`XBPqGTYLx_^%LqPse5aghFDL94Nnu~!FwR(B79V5aV6bO(TcDgel? zTbP(ZW|_gevhzSJR_E@d3q$WPRl|U%=lRjOU|`EiN(`eFBb2fwak%(ZN^JXTozuKH zLGm|6aYUX8Z;j*hiAE$c7c7Fou+Exsh~-n<$Q8a2!%{$D24Q5vBw*GOo)m=a(oww} z?93iZ)OI22!7ns18H?j#vGPLkhNM>(CLy^gC4rVJu^K8_jV@cKyWdsH&E%2d9%%4LF00DaJzKKh)=wi_llbVm4RXyS z4Y^s)6NXFK=*!xPlu9^;Zdn7i1TwEM81eq3eZ6NStUqCH-}z$3N1;WvjGXqD`J3ec zZdyL_-ku>O%%is{1l2M)Ej%n7s-QLR%zJ!Jl~bUy_QyoroqwEwU<7Ls8~%7$n@vM% z0OyPPo0sOxE0G_9r;Gfa+Mm-<`$&V&Pl;|wKT^YCngl9Zx*q@`DJ9E&=Vh=;b z`(_rRZ2z-(n#$Xk@idk3G(EgqzFFx}IrvsNdhth`w+Z$Ay>c5%u>Q*1v|Ea9_Nu$3 z-Z(y@o6uYgK{7J!s)BH-IWWyeW^?lU#fBN)2S|)x<%jBp6eBj_{zh z4bpIfQxHk&!34GQmo6;4Fe;!p!9fq32|ZOsr%(%qH}G{3=++^7ja6 zXwIS_5uI=({l+ZS)s8k3G{u^g-3G*P|{UhE~mB zMjbPG#5#Ub3uvDEM7d=1n=8(YPZy7rXUd2tF<;Ibvn{P( z;e;hoaZBr`e$s@GqJ$6GL8E1sMJ$w*gAz`h(@r>1poD@Dq79gN1*Se0lqJNpALFcq z6IR#9x*NL{eu;!JDY{~oSDZ@sFazz5b$8$XiQeR0TrfBHnXof+4S}G7O`Z%GQ*!W?V$Q4w$(DG+ogUM=s>_^+gFA z04rDfS;ahZjp6f!kc23^ELNwRNc74;Qe7vq+5$7<&a0lA7NAUoO)JpCT6a;WaVwY^ zjGduN480KbUm=s0j6K8)6&Zz87vKoX@IuB%SvK;Sa}7E3fT>;fW>=NHj`kbcDn*NwRUtfy`|E2_&=&%h5eZ$5l#+Kg8eYS2@HQRcuwZ0%~^t=lLedbYhVoK~!2b?P5eU zl~SK5_G;a{k|u~U?^5p{v+z6wNmKS`#Pv|Ex>_l>+y@WE)CdX}r= zXP$$^?gJT?@^Rlt_OvmSS4(A9s5|KtM!DW;g?p5uc4N!S%^KT~G7Up=oXsiFz|E}J zYj`9gWtuq5{g*@dB6)?0sdj!~xqz@NT5?tNZ}S1`ka-pib!4#_jQfzJ!9+X>LvmmA z3*7dLLP;}e9+tCxCXEY_arHsyU^WHX0$$0wKqN`DECU)`A_6WcugjKr>q~4?V zvY7Ygh|?&Of@jesN-uE|2ke$IEk+HVLJ%O2lagy$xSBoCJwz*~$yuR>gzAB9SiShz zgJdZZR_2SlP9obV_RAy*2@v|pnm#ho%Xw5l(f}zVu##pVm9EGJNlxGca)1d3tP!iW z0iHS`!x%iD5`5I_ve|>#@npzSn$#$icPW2aNKtGgYn}fVB&%$Z0fSPfI~ez^#H8z0 z&9F`L5b3(e7k^85B3@HCkT9ymGetuml`ZNe`idIalTk7E4o!qFLJ{1F8(D<7;;Jya zJT~PdiI5;0iTeQ38mYvVX}lPlr@tqajkD86Aj{s7Dlqpl*?E3PaYM!E!$?RlX zj3asWZdTt)WQxnTk#Vv}Q;5mh3_}C)tW*lHVr*>(rgris;X#stZH7QdWj09|+Z|G@ zx`&dXLe(2!suJRzKf>v*awT(da?EI|1zr7IBOB2ZYa( z%e9h3osz&9XEwRaFkI@{vWg#%Ex8%i+SjiP2xcAFRXPB2=FNh6lS^_Kd{kr$$LL?< z7TnaOrDq1kcZZnHVDd$gjd!=Am;Wg!_J4D0Vdv?@HtNE1;*k8M7tP4keR(N)NO5!k z#=>}_FY|D;rb8Zs2eVjhEWjsj>Gu+JK9D$AhVRJ@m-|!a+zCENv}U-VGnTqy_emJt z;kTdc5dq6JCt`u}vf%CfXfheE8up~M_wiF%oI#ue>890eZHC}3Gh$Ch@W*gWjSUWY z)^i2k+!_Sbay>pGZ*#0$fVD`R*_x>?JULG8*JI9?t(!^*IUR1~~wCp1wVshGE>Z0Vh zZzhO3ognIPgSmtvK{BDdirFzQGH9wWY(vL-0)lfclEdvd7sJmCgV|l0yt6a|l8+}7 z(N}pZT8nIsHpb{b)meT?+PC}Zs1qV4k{l`LjL)q-F%$is<=14>Ug1X=jt0~Gp<(8c zS7$|&ha6=o)5wo#4_lf<{Gp8t5xKIqtCW+&*HyC|-yQhw}P zYmvumd(7%@aP7flRuAkv>?!#kbO+bjXVt=a9bVPJsDf}e{?YmUCjKUfo{a1wyQSH- zQ>l!lFo1@qt5Ag#DqBTZglc)q4Pk83%j?+~9s;XB7DthHt@$S(!f5A5FU3B9Sdlu$OLTru-tsn>yrEt)bwcHe@l()qYXv2DT`@ z*(%#DChh@8mM-hmTHnrBta{)=Nh#pp@Uz|%phhsE@|#5B(luOw4)gEDG%h(T&(+PIKR$HVN&`@+rJ=gFUg>fw#%Fysv`2Kq|{3<7f z3OS9%ow+OsT*f6EEKU-MS9ks?TlxY){G;>xEd8B-kPO(oE>!G~+hL(6CL&J=V|hG| z;Ml_maVgdn|ATCmt-;7Th5$RydkvOUW{dI;j|0CNdmjo8@&hepKaw&ATt}K z-BV=zO=hj0%-a6MWIiHcf4kD-PP%{7S-JFM;VDNma`Tif^lwuccrKw;j)m-{o<@I_ zfwhx?O(ctY*e`Yeaf#OU3h$$Glhys3$vfXnY^shylXGW$8Wc#9D{OLgRo28*uyMBP ztR>NK)J?44mL!#abNC=}37fvdno~Yp+zTKXB>8w!h~40O8PuNe(iiV0@Jfl`NPUOv z+=%6YR6L}9B@yqbzn)#&SN5o1)}`!_obAqO60h|XmYFdl z=ruP?)MIU@3)hM*n&8L!8Y&Ve3$ks#;0q5WlS}del!3i5d6R0YH5z63pYKKbcCY!? z6uq)kdmVElN9?^)&T;wG;=~`ypVaI#78N77*kt}dVsQ88$i+vwODKk+1j#p_K75?t@(A^_6|}E}no}|d zA&8TFfis5qCPBgEo!EYqs2h6$Bbg{k?l@n2s6pPW2$?4x-!gUl0=Ks~>oS~3K_8}A zlO-_{h#ki{sc0CrV6lu!i;)Re;Tg)EP)Q}(sN+hQncjUo5%?II`R9P(&m=Q2wR6ym zn6Cfo{s{CXQ`$10=S23qh&mBB5wA0$^XyLrmh$bySznyQdU%qlZ}JrVY|1 zNu^c}j{KI+Vuu~yGV|oW4Md>8nN$lj216)PPg}<^ed#u}uywW$V<$R-cCt)hbZMm) zwQn((C=F5|2GunsfNkta*U(l@bOIZ&xcw_USibRdfD3i6PRp?4~7B8^P1oc-l z(bX~Vyj3EDj;Z=@TMC)>=-ty&st~M`%%rBuz-Awn2*-aH_}Hu+BSEaUNby6qi9Z(m zuGn~B>H1P)2T0g0>&2c+*6618Lq+57kvwM-pT!cP!S-EkMQssk!!VkOzX&`s+Z05@ zO=r?nI<3<7**rJNqVnblXqJ^JlM~#P-c!yKIH>@&>zNJUK4v-o7tF+8%`C@w+N3v* zOk2WlW$AVGw>l~XVVFQ76bM-1fTr zhshZ6A>$$TrGi<#tI9zf9_8hW=W-aAN()0~N=F5|HPL2*vGaM9p2UOPxW1DPh%Zw$ zHERTLW8Q1@Z!v_wlZ<{mDIVerEG-l-EPT&kqFz^#hkAW5Rj+S$f<7tP^}%$#{x*o_ zzZtLB2@S8;BY6#|O3;fU@kUCo)U8f~lZ^QOceolUU&|a6(Rb_YB^}P_V5Oi=>rC~7 zBGpNWUe{q-2ccP{MD|D-{n367gEHfdHuO{iErpXQv;2eC}|S_+I<>jp>J`ilslAK4QlM z^Ct`cLgi*$IjZSb=Vs=Ql1cnW(+B4cl!~*nGY4j8W~X#^^ugJQ`RV!T*#k3EGt;wk zbJH^iW~TXO%K9a2%KeP_Pu+jUNmy7Z28ESUP+TF*S2fN)Ed5wvow{a0^@Hh^O7LVj zrhmcYhvi@@*!RKMN;Mo0CqkvNPk&en_6IW`RLI=UUON!Xa&2EYNqYymXD&Fz=V?C8 ze^?A22oCdUe>lUx1N_delXA~@4}Mq)jsy?!-NA6&?tD0Sgimw+xue0Od^!})(;Kz( zSn!DtD(@Fp9-uelw4iIX;BoFb?4Gc391EUc91s2&KAM#ykhxC|#@^6Ig3Sv^C$<*P zyG`wD3QaPTYs~FEr8nC#!7tp93i+NYz=4O{7)Dn7E>+}XXmc@ml#>&oj*?Eq)GQ84 zdm!dFCbO*QghH5k78`mR&R=7n88#Dd%0jL!$tB}#gzXL?zLH6>R%FFKbd#hl?6H({ z(u-YqqXsE6<>jkyNrmxa&G1JG_Y*kLSC#9yI(;|IJZKmY{Z>Xg zK%_#v=NpN5uAI++^bCbI@1F~~~VN@QvQZWWF!(<+^2Xv9q--NG~}w2r{5a`60( zGr^LvHW7fWIK4WA3lLQ_OU2V2Ns!L;3Kz~q(hd?G5T$*ElEl4Er+TF5v{PfEPq2`d zqbE6z*ssc5)UV~2%3vVdvgx{5nCs4GPaO@hDwyFI5mR(lv{q@Wstz4J%Lme;p5~9E zJw|bK%kPUH@QdMgy0kN6GqO}i8*26H^$S;{U+0@Oy*&QW%Gc+!{B}jJloLaVl+ytr z{Vrha{bKhto^^u#Zqyh6~gjyv-XRQYh4=)dId-24e#;*vIhKh24$FgJGQ zdP>+-MHCg)mF>VMAwAz4Q<=9vEAUo&RU<=?)(U!^CtPtf*w^piSLLh>j5+c;OTJNM3ZMbBHpQiWu>ojHrtJq2YUc-ZYs zwlk?Ms=+3taiLfIBc)6ul0U&^Jr}+_qd1Zur|wA_NfP}Bd~cvdjrb2aw`7-2^igqz zI*#%_wblu!$)Mza#7z}o7X2+wb`~6rht1@BMU+grDBi!J7yj#d(_-SQDs03@oFUAiu-~X)c?Q&R|q_m_Bzw0{rkM)f$o?qhZ{}F~f%t@i7 zavh}DP`;y5JzOkRjuM4=xCEXY-g^u=BoR2Z25n6}#fc%wF&%HpndIVABx+aO{iyP!nTI57X6 zV$|@-cZS_0-`QVbx1}|gmv>Hm(V0J>&}KFlsiv-{8JbcyE6bLVmB)AXy&83HNo2>Y zM&Z9F7(w*=Iv5CzY#87U>6!skv?E2J*q0~-8I(XRA;~a=f0Jtu3c^P?DOgp|888DO z?3;&-X zt{7ysv#yewGa@)@Ya)VJtQ57KlPOT$O&AU;y6?!u_4^RTM zTrBiv?;ZqqsnWb#yiNw2uCff|qSL2vQ&r zqZWhO$!~*fy5w;lI8LmAbg{=>nY_yD{Opt#*RI0&&I16d*qI0_ zbD#^%_&%;Wsvx{xc)(4R@jo%iK}CkiNYrak!B}xCx~d1X8m!tye~l!XEkqb9BCN5| z5T!ahY<=WvF=>%dYFFk(VvwhKmLLHGvP{;Hm1-#Ezrl#hKhsO@bx=ySQ z{l7c=Je!u2ePmT>Wf=<1b7Cko%@IQe$CCa!3R`xdGx!*euW|cu=cLztS)J2TEfjb5 zyBB-idgRr@V0-lvCp(8NUVv;#aE;_+PZ{Ts2*$Qg#5s)ZlB0aCQ&mTwOtI9vnKbig z492fqeC_iW-*{s%ciELec!Mn}`&;Ml8~&pv8tS?FL{WAX@GI|3x&Dusf^xh{5~RWH z$yl6`q<62xa+7FEee0lj3n`C#Ao}+p+t~i^q8BD1 z##ZLnCPv+`vAquCDaPZwSBx}P6#*=h=2}D-fvC7o(K*f`Ebbdh!4>BfZR+p|(JLu= z_w{e`Lr!oy_{nP*FP#7Wi&xK|vjGqGUDKy4SI=Di;uStzyuhR`pLyf_xxvJ>tLNYR z0v{dEl8M2?L~95&<$12SgUKnn;kE!W#|evOToSA}&@>5bmGaK41I@=+;Dr`~N>}UF zsUNbvGtN@X{+1M?v1qL(LbaOXA(&UAN?=7_WK+Lljq~DSsd^9 zNBYJFWMh#jt^1^SiXS; zES-&ir2A|bzsuS0R2arlPMCz*`LX%^^N-Ar&(6x-{5AB=@CK0c4F?=$;LHKh2UKO5)oglr~UnGB~w?g*;-99CtO38yGU zxG$IpCb88_hx@U@Oko+>7fhSAWQOnc+1YIl@T@*Li_NV6bTF7RE6jd>@1bDco}HsL z_q5q?u)Q1#9-%jrJa+{9&_lt)ymLN~Zg|w{tu;Th&s$l}$lD#a6NwsEjL zlU12SWMFn~HW}8Ni8Us%2Y5yN3|hYhO<)JX;e}sa#Q|gp$mctn!CG}>W%)Eqe2*fo zzL9K@oMp+T&e5yR(c=k@yt!EMwc)eVuJ&vIi92l|-9#E0jfWbP)M9*o{PH0tO`3jE zJJE03UZm==e{EvRkSj0Vs!$=7mWG0@hg=HV9mib7_?zNgax9tI%7G+JG?rplovJh~ zIR8-w0C7Mo61S31EY11|9mGEg8OMDwj-pWTU+SsfKpME7D`d;nSPMq_R0T_uiYL_Rj7BhCR z##inryj5nmI6_6JNIhef=K*A~Q$ZYFTOkfj09JAOPA$G59p#xePnmOo1>p^MLK}4= z)s2qZa}>p}+K=KN9yRecYm2lY!=$b{kE!!pCcUMDsf91`B4^*kXk5+{-q8fB)E+t; zlj)Otu%F3V$ly&WvF)mT4x>81-b7hv5h({WcI|=Ox%RLYsK7^liCMloVsr*R)RFFJ zb07TV-LYP@Oj6piF1432TDT7%*&mh^P(rI%_c z%xK~TzPDz*Q3B-#@QAbmv5Xr@WLUb*U1pm>6r@&63ANllW|l^YeF7Ty zddlhbqCUI%g-U{ULKl4_kD|o|@jr$I#M!U6vDCShB7QOfc$V}i0c~I_#Z}3uJV{DT zYwgw|($OLzvk+Bf6%xXLNXM3-ty>molK^oY4bX3I!%B}G?`$8O+@Vq8G7=#Jp2X=9qhT2ywZ;l0 z7+kx|zKZy*o_IF7_r)8%-qz_;r*^{jVrPAE%WhbbL`%fj7JH(P{k@i%%nP1qaM#bYY1d08*pSIh2RtT%IesW)`9gI=iaF z7dfn%zQu`tbS_2tEWh0b2jw}`DTv0Af|O=~d$?D6A8W0OHIn;)dRV6hIY(6`mxb=L ztpXd0$Oc!XKDjJ$R5`C}a}0Je+oh&ceQH-*SM4)XfxHNmib?zaylPG=l>D~b>L0Mh+=oz-lpBe2vwyq6loU@{JjaH zAjq+bk%&ZZDAeHuyL$-A;(a^K}%1enu$V>dm7WJZdPP&q{zHf$?{ z8HQaOWNNvNA0jB9D}4F0I3vMGJPB<2#7+-jVe}?e+w#v9u+&y$9_Ot3^JDFaV4QX^ z=E#8Y_ESL>a}KpvP(LS@cOE-BkoU)BeVC>YO&8OJhf&X1$ux5q4Cm>i_-g)Fj*Gi2|sbBiagxlH8PN7(a9<&?4Ne@;@6TPND@TZCn(H<3n|fbE7#$ROW~4a?R-=o+)U-${Ny-1 zm)P$%na=2k`HJg*lF9^8nZfKyCaO-)`*Z@5DKd>6F1l~NE|VPC^C5q5HfbkRmn5Kh zj(>Dc3vS+zaiU@tcMFu&f@Qs5lCgcav=0l}k7D<_SA0-_tTd0(sRWj9I=vXFhM*Z@ zJC)qXyBZBd6YV-+I+;`4B#muRp1X!lX$2xt#i*c#2PLagXRQ*Z@8!jdWm%bM)Fc;Q zr-;l|rx_-46!ECavpnW3L&r3`qVxLk?aLrwJsoO3Nsn{gM_@C{06R(N)&7wnl{DOP zr!?j0)H3kD1yrLd5F1Qks%Z7B*|;=`CMTNJ9H&N5@lR^AAv2#zCU=H#VK=$D4!1hM zGx)3au;32HOc`>{e6!pN5u9z-thv9Vk6Po-)@ue@+{}e&Oox3s?AJjnE}GF{PKUIE zc4l1uGqm!v;_??b!Ag6@$I->UC4xY>@&_)y&PCu+0giv#(WvwX(?_x4PGHMDI5Vy@ ze)pLLPR#`qx z1O@wK*4Y(j&1Hu)thm!ycG(GyXZI5qHxnG-ZsO(a?%CiVpJsy!SU+cbJ2sz(s2e7o zkt(STG80@}@5}6zXiF#E)&jBqpWTZK3gRo~c$B&-HOoxm$7!~;DT|wO*t~=+9Zb9J zpqa;;`niomY=d>u7|c57Z9Fo6vcWl;R+|{-h~yh@@E~BhCS#F|!HVIh$PP!}a%%Ok zWPcl?$T@1;MIWAK*$=M7)6hHINTsH`?Q{L8vO8{)=Iso~+J-QKJ&~wT$=apM zaTd6`X?;O80MtH!&GvOO6}RzTR^{~j!6_JAc0!S)$X1Q!$g4MgWHJ1QttK#<#I|`nhl(RZaX_IctCZ{8b3W|)@7l{m<>D=ih?>70qiTkLc_QdKm8XDa6KqfCMPv-#RNi-$d<)vcDtQ5 z)pE#{S+F&hDN1rmo1;7U#>kt2uF(m$MZw?}7cp1*hs)1XwgY(H#5j_eqOx+fnGRvW z35v*!s>iW7$BmS%vcJ}ydJ^KHF26vY_75CnR-x4t%1G}A_~=GW;dO&DQUh| z6U_>P)K0U#PpzTpI%9*arFN0%8mJ)1GDzl)nhq8^F z6jFh1SO(PlOvf5aSM5^bN<}bfETuc%5AOwUoyOLMS*M*=&BFK*zstJH%rUv56qzZr zgykHSl3`3)Of)K*#*{fi0&VOZjNg%byHH`1^mo_l@)O$LwTe>chuScki>r<-n&P4s_|dsqv(Cu4qFh!j zyVUkkbc&wew%|cg*CRSSq(h!8NW~V~)$3nPx>?QA1^49$ILdJkBs|$Jc7>nAk^J*= z!xCw?|3yDgQ{%o-d^viV`}Uj;$ya|qd3TN`Ipu8O;9jDgF^}jUs8w^*OZ;;3}|scs$S1XUM_jAVzyY*T{BhQRjE zrzcDbT7vpcskwL6@U{+5aaa?8;vbqxIoU7p0p(X5t4z>h4MT(qqE}>`z^q`=ce_Y% zY=OAMMuB7P&+@6lr&p98ah(nO+D~z1oG`S@!59XNu{IPrnBa4R@AVl&nf~r7ysa4h zFb0en{Ai9W3e*q5vC=j}uS}|O+Y7yvtz#r4=wa3|} zs&*dYZmb!3u&zw%by^)=x6SAUJ(o_M&DxK0?JsK9p5&y!wlWCfM0{wkWEm`MvpfQP zs-;;z={M37j_c`(_=gS*+W_ton}q4e);>0XuN&F93qiI;5q1TV1G*k=Yzl}aSwjkrf|BW_5Tkf-3vr7xU!srO=!5J&4wzkREX z+h7sL|DyD?{wC3V+f>d(0`>*JBxQ)g(nw^x9B8V%fC;^BI@d^CIn_xY%-^7Dg9!)o zn3ZUnea=Wqk4J+Fb`E$A&&Bt0?cdd0h+-8cfVHlG5X%dvqkn_b=o4Bue?w<~pu_*B z!=KUNxDJ1f!(hsb*V^t(R1d{5$rp*V#v-+jo(K8t+Tv!f&QMd{PJHb-3MlYdU*ehu_t~2wYQV zMz{=b1<(xG6Y4dXc+rJ_zAQxU-sIp>KVAX^bZM8!XUOZ)Zm%M0>E9VxVr}B+_&mGo kD)4JY`DFQjkIw$7!bPrsZtfzi=MSaF%9=g(FQ$+Fe+c6kQ~&?~ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/tasks.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/tasks.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..963837d02d1062ef2b36ee91d1c7e081547e4bc8 GIT binary patch literal 15852 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 T_}J9Rle05Z(+@4P^xb~|(O)H` literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/__pycache__/watchers.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/__pycache__/watchers.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4c1757bddb0d77205efa9380fd394910bd0edbfc GIT binary patch literal 5131 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 None: + """ + Create a new task collection/namespace. + + `.Collection` offers a set of methods for building a collection of + tasks from scratch, plus a convenient constructor wrapping said API. + + In either case: + + * The first positional argument may be a string, which (if given) is + used as the collection's default name when performing namespace + lookups; + * A ``loaded_from`` keyword argument may be given, which sets metadata + indicating the filesystem path the collection was loaded from. This + is used as a guide when loading per-project :ref:`configuration files + `. + * An ``auto_dash_names`` kwarg may be given, controlling whether task + and collection names have underscores turned to dashes in most cases; + it defaults to ``True`` but may be set to ``False`` to disable. + + The CLI machinery will pass in the value of the + ``tasks.auto_dash_names`` config value to this kwarg. + + **The method approach** + + May initialize with no arguments and use methods (e.g. + `.add_task`/`.add_collection`) to insert objects:: + + c = Collection() + c.add_task(some_task) + + If an initial string argument is given, it is used as the default name + for this collection, should it be inserted into another collection as a + sub-namespace:: + + docs = Collection('docs') + docs.add_task(doc_task) + ns = Collection() + ns.add_task(top_level_task) + ns.add_collection(docs) + # Valid identifiers are now 'top_level_task' and 'docs.doc_task' + # (assuming the task objects were actually named the same as the + # variables we're using :)) + + For details, see the API docs for the rest of the class. + + **The constructor approach** + + All ``*args`` given to `.Collection` (besides the abovementioned + optional positional 'name' argument and ``loaded_from`` kwarg) are + expected to be `.Task` or `.Collection` instances which will be passed + to `.add_task`/`.add_collection` as appropriate. Module objects are + also valid (as they are for `.add_collection`). For example, the below + snippet results in the same two task identifiers as the one above:: + + ns = Collection(top_level_task, Collection('docs', doc_task)) + + If any ``**kwargs`` are given, the keywords are used as the initial + name arguments for the respective values:: + + ns = Collection( + top_level_task=some_other_task, + docs=Collection(doc_task) + ) + + That's exactly equivalent to:: + + docs = Collection(doc_task) + ns = Collection() + ns.add_task(some_other_task, 'top_level_task') + ns.add_collection(docs, 'docs') + + See individual methods' API docs for details. + """ + # Initialize + self.tasks = Lexicon() + self.collections = Lexicon() + self.default: Optional[str] = None + self.name = None + self._configuration: Dict[str, Any] = {} + # Specific kwargs if applicable + self.loaded_from = kwargs.pop("loaded_from", None) + self.auto_dash_names = kwargs.pop("auto_dash_names", None) + # splat-kwargs version of default value (auto_dash_names=True) + if self.auto_dash_names is None: + self.auto_dash_names = True + # Name if applicable + _args = list(args) + if _args and isinstance(args[0], str): + self.name = self.transform(_args.pop(0)) + # Dispatch args/kwargs + for arg in _args: + self._add_object(arg) + # Dispatch kwargs + for name, obj in kwargs.items(): + self._add_object(obj, name) + + def _add_object(self, obj: Any, name: Optional[str] = None) -> None: + method: Callable + if isinstance(obj, Task): + method = self.add_task + elif isinstance(obj, (Collection, ModuleType)): + method = self.add_collection + else: + raise TypeError("No idea how to insert {!r}!".format(type(obj))) + method(obj, name=name) + + def __repr__(self) -> str: + task_names = list(self.tasks.keys()) + collections = ["{}...".format(x) for x in self.collections.keys()] + return "".format( + self.name, ", ".join(sorted(task_names) + sorted(collections)) + ) + + def __eq__(self, other: object) -> bool: + if isinstance(other, Collection): + return ( + self.name == other.name + and self.tasks == other.tasks + and self.collections == other.collections + ) + return False + + def __bool__(self) -> bool: + return bool(self.task_names) + + @classmethod + def from_module( + cls, + module: ModuleType, + name: Optional[str] = None, + config: Optional[Dict[str, Any]] = None, + loaded_from: Optional[str] = None, + auto_dash_names: Optional[bool] = None, + ) -> "Collection": + """ + Return a new `.Collection` created from ``module``. + + Inspects ``module`` for any `.Task` instances and adds them to a new + `.Collection`, returning it. If any explicit namespace collections + exist (named ``ns`` or ``namespace``) a copy of that collection object + is preferentially loaded instead. + + When the implicit/default collection is generated, it will be named + after the module's ``__name__`` attribute, or its last dotted section + if it's a submodule. (I.e. it should usually map to the actual ``.py`` + filename.) + + Explicitly given collections will only be given that module-derived + name if they don't already have a valid ``.name`` attribute. + + If the module has a docstring (``__doc__``) it is copied onto the + resulting `.Collection` (and used for display in help, list etc + output.) + + :param str name: + A string, which if given will override any automatically derived + collection name (or name set on the module's root namespace, if it + has one.) + + :param dict config: + Used to set config options on the newly created `.Collection` + before returning it (saving you a call to `.configure`.) + + If the imported module had a root namespace object, ``config`` is + merged on top of it (i.e. overriding any conflicts.) + + :param str loaded_from: + Identical to the same-named kwarg from the regular class + constructor - should be the path where the module was + found. + + :param bool auto_dash_names: + Identical to the same-named kwarg from the regular class + constructor - determines whether emitted names are auto-dashed. + + .. versionadded:: 1.0 + """ + module_name = module.__name__.split(".")[-1] + + def instantiate(obj_name: Optional[str] = None) -> "Collection": + # Explicitly given name wins over root ns name (if applicable), + # which wins over actual module name. + args = [name or obj_name or module_name] + kwargs = dict( + loaded_from=loaded_from, auto_dash_names=auto_dash_names + ) + instance = cls(*args, **kwargs) + instance.__doc__ = module.__doc__ + return instance + + # See if the module provides a default NS to use in lieu of creating + # our own collection. + for candidate in ("ns", "namespace"): + obj = getattr(module, candidate, None) + if obj and isinstance(obj, Collection): + # TODO: make this into Collection.clone() or similar? + ret = instantiate(obj_name=obj.name) + ret.tasks = ret._transform_lexicon(obj.tasks) + ret.collections = ret._transform_lexicon(obj.collections) + ret.default = ( + ret.transform(obj.default) if obj.default else None + ) + # Explicitly given config wins over root ns config + obj_config = copy_dict(obj._configuration) + if config: + merge_dicts(obj_config, config) + ret._configuration = obj_config + return ret + # Failing that, make our own collection from the module's tasks. + tasks = filter(lambda x: isinstance(x, Task), vars(module).values()) + # Again, explicit name wins over implicit one from module path + collection = instantiate() + for task in tasks: + collection.add_task(task) + if config: + collection.configure(config) + return collection + + def add_task( + self, + task: "Task", + name: Optional[str] = None, + aliases: Optional[Tuple[str, ...]] = None, + default: Optional[bool] = None, + ) -> None: + """ + Add `.Task` ``task`` to this collection. + + :param task: The `.Task` object to add to this collection. + + :param name: + Optional string name to bind to (overrides the task's own + self-defined ``name`` attribute and/or any Python identifier (i.e. + ``.func_name``.) + + :param aliases: + Optional iterable of additional names to bind the task as, on top + of the primary name. These will be used in addition to any aliases + the task itself declares internally. + + :param default: Whether this task should be the collection default. + + .. versionadded:: 1.0 + """ + if name is None: + if task.name: + name = task.name + # XXX https://github.com/python/mypy/issues/1424 + elif hasattr(task.body, "func_name"): + name = task.body.func_name # type: ignore + elif hasattr(task.body, "__name__"): + name = task.__name__ + else: + raise ValueError("Could not obtain a name for this task!") + name = self.transform(name) + if name in self.collections: + err = "Name conflict: this collection has a sub-collection named {!r} already" # noqa + raise ValueError(err.format(name)) + self.tasks[name] = task + for alias in list(task.aliases) + list(aliases or []): + self.tasks.alias(self.transform(alias), to=name) + if default is True or (default is None and task.is_default): + self._check_default_collision(name) + self.default = name + + def add_collection( + self, + coll: "Collection", + name: Optional[str] = None, + default: Optional[bool] = None, + ) -> None: + """ + Add `.Collection` ``coll`` as a sub-collection of this one. + + :param coll: The `.Collection` to add. + + :param str name: + The name to attach the collection as. Defaults to the collection's + own internal name. + + :param default: + Whether this sub-collection('s default task-or-collection) should + be the default invocation of the parent collection. + + .. versionadded:: 1.0 + .. versionchanged:: 1.5 + Added the ``default`` parameter. + """ + # Handle module-as-collection + if isinstance(coll, ModuleType): + coll = Collection.from_module(coll) + # Ensure we have a name, or die trying + name = name or coll.name + if not name: + raise ValueError("Non-root collections must have a name!") + name = self.transform(name) + # Test for conflict + if name in self.tasks: + err = "Name conflict: this collection has a task named {!r} already" # noqa + raise ValueError(err.format(name)) + # Insert + self.collections[name] = coll + if default: + self._check_default_collision(name) + self.default = name + + def _check_default_collision(self, name: str) -> None: + if self.default: + msg = "'{}' cannot be the default because '{}' already is!" + raise ValueError(msg.format(name, self.default)) + + def _split_path(self, path: str) -> Tuple[str, str]: + """ + Obtain first collection + remainder, of a task path. + + E.g. for ``"subcollection.taskname"``, return ``("subcollection", + "taskname")``; for ``"subcollection.nested.taskname"`` return + ``("subcollection", "nested.taskname")``, etc. + + An empty path becomes simply ``('', '')``. + """ + parts = path.split(".") + coll = parts.pop(0) + rest = ".".join(parts) + return coll, rest + + def subcollection_from_path(self, path: str) -> "Collection": + """ + Given a ``path`` to a subcollection, return that subcollection. + + .. versionadded:: 1.0 + """ + parts = path.split(".") + collection = self + while parts: + collection = collection.collections[parts.pop(0)] + return collection + + def __getitem__(self, name: Optional[str] = None) -> Any: + """ + Returns task named ``name``. Honors aliases and subcollections. + + If this collection has a default task, it is returned when ``name`` is + empty or ``None``. If empty input is given and no task has been + selected as the default, ValueError will be raised. + + Tasks within subcollections should be given in dotted form, e.g. + 'foo.bar'. Subcollection default tasks will be returned on the + subcollection's name. + + .. versionadded:: 1.0 + """ + return self.task_with_config(name)[0] + + def _task_with_merged_config( + self, coll: str, rest: str, ours: Dict[str, Any] + ) -> Tuple[str, Dict[str, Any]]: + task, config = self.collections[coll].task_with_config(rest) + return task, dict(config, **ours) + + def task_with_config( + self, name: Optional[str] + ) -> Tuple[str, Dict[str, Any]]: + """ + Return task named ``name`` plus its configuration dict. + + E.g. in a deeply nested tree, this method returns the `.Task`, and a + configuration dict created by merging that of this `.Collection` and + any nested `Collections <.Collection>`, up through the one actually + holding the `.Task`. + + See `~.Collection.__getitem__` for semantics of the ``name`` argument. + + :returns: Two-tuple of (`.Task`, `dict`). + + .. versionadded:: 1.0 + """ + # Our top level configuration + ours = self.configuration() + # Default task for this collection itself + if not name: + if not self.default: + raise ValueError("This collection has no default task.") + return self[self.default], ours + # Normalize name to the format we're expecting + name = self.transform(name) + # Non-default tasks within subcollections -> recurse (sorta) + if "." in name: + coll, rest = self._split_path(name) + return self._task_with_merged_config(coll, rest, ours) + # Default task for subcollections (via empty-name lookup) + if name in self.collections: + return self._task_with_merged_config(name, "", ours) + # Regular task lookup + return self.tasks[name], ours + + def __contains__(self, name: str) -> bool: + try: + self[name] + return True + except KeyError: + return False + + def to_contexts( + self, ignore_unknown_help: Optional[bool] = None + ) -> List[ParserContext]: + """ + Returns all contained tasks and subtasks as a list of parser contexts. + + :param bool ignore_unknown_help: + Passed on to each task's ``get_arguments()`` method. See the config + option by the same name for details. + + .. versionadded:: 1.0 + .. versionchanged:: 1.7 + Added the ``ignore_unknown_help`` kwarg. + """ + result = [] + for primary, aliases in self.task_names.items(): + task = self[primary] + result.append( + ParserContext( + name=primary, + aliases=aliases, + args=task.get_arguments( + ignore_unknown_help=ignore_unknown_help + ), + ) + ) + return result + + def subtask_name(self, collection_name: str, task_name: str) -> str: + return ".".join( + [self.transform(collection_name), self.transform(task_name)] + ) + + def transform(self, name: str) -> str: + """ + Transform ``name`` with the configured auto-dashes behavior. + + If the collection's ``auto_dash_names`` attribute is ``True`` + (default), all non leading/trailing underscores are turned into dashes. + (Leading/trailing underscores tend to get stripped elsewhere in the + stack.) + + If it is ``False``, the inverse is applied - all dashes are turned into + underscores. + + .. versionadded:: 1.0 + """ + # Short-circuit on anything non-applicable, e.g. empty strings, bools, + # None, etc. + if not name: + return name + from_, to = "_", "-" + if not self.auto_dash_names: + from_, to = "-", "_" + replaced = [] + end = len(name) - 1 + for i, char in enumerate(name): + # Don't replace leading or trailing underscores (+ taking dotted + # names into account) + # TODO: not 100% convinced of this / it may be exposing a + # discrepancy between this level & higher levels which tend to + # strip out leading/trailing underscores entirely. + if ( + i not in (0, end) + and char == from_ + and name[i - 1] != "." + and name[i + 1] != "." + ): + char = to + replaced.append(char) + return "".join(replaced) + + def _transform_lexicon(self, old: Lexicon) -> Lexicon: + """ + Take a Lexicon and apply `.transform` to its keys and aliases. + + :returns: A new Lexicon. + """ + new = Lexicon() + # Lexicons exhibit only their real keys in most places, so this will + # only grab those, not aliases. + for key, value in old.items(): + # Deepcopy the value so we're not just copying a reference + new[self.transform(key)] = copy.deepcopy(value) + # Also copy all aliases, which are string-to-string key mappings + for key, value in old.aliases.items(): + new.alias(from_=self.transform(key), to=self.transform(value)) + return new + + @property + def task_names(self) -> Dict[str, List[str]]: + """ + Return all task identifiers for this collection as a one-level dict. + + Specifically, a dict with the primary/"real" task names as the key, and + any aliases as a list value. + + It basically collapses the namespace tree into a single + easily-scannable collection of invocation strings, and is thus suitable + for things like flat-style task listings or transformation into parser + contexts. + + .. versionadded:: 1.0 + """ + ret = {} + # Our own tasks get no prefix, just go in as-is: {name: [aliases]} + for name, task in self.tasks.items(): + ret[name] = list(map(self.transform, task.aliases)) + # Subcollection tasks get both name + aliases prefixed + for coll_name, coll in self.collections.items(): + for task_name, aliases in coll.task_names.items(): + aliases = list( + map(lambda x: self.subtask_name(coll_name, x), aliases) + ) + # Tack on collection name to alias list if this task is the + # collection's default. + if coll.default == task_name: + aliases += (coll_name,) + ret[self.subtask_name(coll_name, task_name)] = aliases + return ret + + def configuration(self, taskpath: Optional[str] = None) -> Dict[str, Any]: + """ + Obtain merged configuration values from collection & children. + + :param taskpath: + (Optional) Task name/path, identical to that used for + `~.Collection.__getitem__` (e.g. may be dotted for nested tasks, + etc.) Used to decide which path to follow in the collection tree + when merging config values. + + :returns: A `dict` containing configuration values. + + .. versionadded:: 1.0 + """ + if taskpath is None: + return copy_dict(self._configuration) + return self.task_with_config(taskpath)[1] + + def configure(self, options: Dict[str, Any]) -> None: + """ + (Recursively) merge ``options`` into the current `.configuration`. + + Options configured this way will be available to all tasks. It is + recommended to use unique keys to avoid potential clashes with other + config options + + For example, if you were configuring a Sphinx docs build target + directory, it's better to use a key like ``'sphinx.target'`` than + simply ``'target'``. + + :param options: An object implementing the dictionary protocol. + :returns: ``None``. + + .. versionadded:: 1.0 + """ + merge_dicts(self._configuration, options) + + def serialized(self) -> Dict[str, Any]: + """ + Return an appropriate-for-serialization version of this object. + + See the documentation for `.Program` and its ``json`` task listing + format; this method is the driver for that functionality. + + .. versionadded:: 1.0 + """ + return { + "name": self.name, + "help": helpline(self), + "default": self.default, + "tasks": [ + { + "name": self.transform(x.name), + "help": helpline(x), + "aliases": [self.transform(y) for y in x.aliases], + } + for x in sorted(self.tasks.values(), key=lambda x: x.name) + ], + "collections": [ + x.serialized() + for x in sorted( + self.collections.values(), key=lambda x: x.name or "" + ) + ], + } diff --git a/.venv/lib/python3.9/site-packages/invoke/completion/__init__.py b/.venv/lib/python3.9/site-packages/invoke/completion/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/invoke/completion/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/completion/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b5029b11fc8886301c9ba06b5267d37a440cfa6 GIT binary patch literal 205 zcmYk0u?@m75Jeq{0wHA(3Va0>5<*Ns!vK~OALJ6pwrnR+_Fw@@R-$DDIx6f6zVzSM z|HbKKS*}>p{l?pzuZ({csT`BTB0;e;TNkGX^LhT^S1@FAKK9m5&PbgWfKE|WNcV=#gNT9FMaj1UDdG=Q@jZa2wU z&STZxOOdPDz_5HZVjwx>pab`oeU`LL4AU}~zntE#)Y ztG?>6+4KlJlRvEWcNPfwJ2oyqRcO2ipZXdICjsGPwgSui?Z7twN>DL> zCvf0zgKRaZf^3C5v76L_TH*zsX;RD7WTbJ=`CQIzkYcCPIvQzJDVSUxOMjh!(mp~cMc<6 zc=to8#2qO!34IkVwuigLybjfVHw_cfRhiV?eQ^Y4V3~0&dbqN-RX9db7IpLgl~BW2 z7tOMBGfTBN)UpmU$p(@d5G0Q6x`ixSdo#QI< zV<&gMr1CGh!z)YV*yYZIUbM$m(5iw~wbUBD25lGGAca@%?Nr&8*_Wa5;hH*wCqxv%t+Gr{{9(yywd09zFjVxCGA@A^-#%khg-cuwf*=#3B0N8VDt4x`wN`;js^0g1IQM#~R`*pI-}G}L^IL$K-V zY+t0RG&$P1n`ys{J6~X0_&0H?_KLqN!|iR~& zfzEcM_MU`&A#`Urh`LewB$T|n6UCyt9V)>)YX>4d=)}=>XKfj0Pi_V!BS$f8bwZT#0Zp2}-&BNR8!3zEb9~r%R25)N{F`Rv@ZUa*ajaGkN z?g>CAoCzHJzEFPXAB6ExtoSPP)9ie|vUGH7DqhOL*i>*Jqg3O$BI=cUIePmZoNpNz z5Jc%)u>XLqCXQD8{t(9ghgSPa!2r@MHQX*7IK?E?h277hw5Umugi*>Npsin?*BYy2r@O<(sM z!j(kWY&Rt$rfeaZK{AVE4oKi#I@q7nB?7&T zF@s(M&5xHKw+sX^ESMG+JiBnP_z50(m-f;HE?orbV^%Fus#Bq5j#vd%pXAcGm7Ej~PH^9KW8!EGJ83Y(Z&ShtgC%>QjO*x5u`2P3eM55ZLk1f6xc|8GT4n2BoLY9Vl(q zwDeF8pbjOpkz3q-#(uXlc62j$uw3+Od4<=Y++wlyzA!uaF%&Z!-e(qq{||`z+q#*V zLYag45$5Y#-#R>W933_|^*vxBIHXTrha-cdI%bBNDPR(CDyP3^k8LnRB_bT06U*Q> zF$ncu;hKbkt4HA?B4L=qt%j|w%Owzf>3j-rgGW7$VS77)VTBRoFm^inewjiSDAiRx z84dI$3_8~wHEyk42#(&}oB}jl-w?>nDf>5`j&A@OX@3f(0RA_#0TwaGljhyXWR0}==M*L zTnAEAc_eXD3Rj9SF1M^(B6zoOKN3ggB53eO`l$6oBnGnVY#>q-`GpP2yj_)V;~=6+ zP`_BLGSd|nK%M*y6r|gvd+i?LO;I*j_nBfA) z=;Eoo3v%siMYY@IS+Cm#_&OQ@luL{$c^iq@f!C3H0|_EU;fceZD7W8$V+pwSP)D(G zR+=m~0BJ6+h?3^^dU2x#l-JULl1XT@kV`IN36&)*ZX_8W#^N>xt3u?kZ2-LK+hDVF U7Tj#m1=|6arteAP7qhkh0KqnP9RL6T literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/completion/bash.completion b/.venv/lib/python3.9/site-packages/invoke/completion/bash.completion new file mode 100644 index 0000000..55f7c39 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/completion/bash.completion @@ -0,0 +1,32 @@ +# Invoke tab-completion script to be sourced with Bash shell. +# Known to work on Bash 3.x, untested on 4.x. + +_complete_{binary}() {{ + local candidates + + # COMP_WORDS contains the entire command string up til now (including + # program name). + # We hand it to Invoke so it can figure out the current context: spit back + # core options, task names, the current task's options, or some combo. + candidates=`{binary} --complete -- ${{COMP_WORDS[*]}}` + + # `compgen -W` takes list of valid options & a partial word & spits back + # possible matches. Necessary for any partial word completions (vs + # completions performed when no partial words are present). + # + # $2 is the current word or token being tabbed on, either empty string or a + # partial word, and thus wants to be compgen'd to arrive at some subset of + # our candidate list which actually matches. + # + # COMPREPLY is the list of valid completions handed back to `complete`. + COMPREPLY=( $(compgen -W "${{candidates}}" -- $2) ) +}} + + +# Tell shell builtin to use the above for completing our invocations. +# * -F: use given function name to generate completions. +# * -o default: when function generates no results, use filenames. +# * positional args: program names to complete for. +complete -F _complete_{binary} -o default {spaced_names} + +# vim: set ft=sh : diff --git a/.venv/lib/python3.9/site-packages/invoke/completion/complete.py b/.venv/lib/python3.9/site-packages/invoke/completion/complete.py new file mode 100644 index 0000000..97e9a95 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/completion/complete.py @@ -0,0 +1,129 @@ +""" +Command-line completion mechanisms, executed by the core ``--complete`` flag. +""" + +from typing import List +import glob +import os +import re +import shlex +from typing import TYPE_CHECKING + +from ..exceptions import Exit, ParseError +from ..util import debug, task_name_sort_key + +if TYPE_CHECKING: + from ..collection import Collection + from ..parser import Parser, ParseResult, ParserContext + + +def complete( + names: List[str], + core: "ParseResult", + initial_context: "ParserContext", + collection: "Collection", + parser: "Parser", +) -> Exit: + # Strip out program name (scripts give us full command line) + # TODO: this may not handle path/to/script though? + invocation = re.sub(r"^({}) ".format("|".join(names)), "", core.remainder) + debug("Completing for invocation: {!r}".format(invocation)) + # Tokenize (shlex will have to do) + tokens = shlex.split(invocation) + # Handle flags (partial or otherwise) + if tokens and tokens[-1].startswith("-"): + tail = tokens[-1] + debug("Invocation's tail {!r} is flag-like".format(tail)) + # Gently parse invocation to obtain 'current' context. + # Use last seen context in case of failure (required for + # otherwise-invalid partial invocations being completed). + + contexts: List[ParserContext] + try: + debug("Seeking context name in tokens: {!r}".format(tokens)) + contexts = parser.parse_argv(tokens) + except ParseError as e: + msg = "Got parser error ({!r}), grabbing its last-seen context {!r}" # noqa + debug(msg.format(e, e.context)) + contexts = [e.context] if e.context is not None else [] + # Fall back to core context if no context seen. + debug("Parsed invocation, contexts: {!r}".format(contexts)) + if not contexts or not contexts[-1]: + context = initial_context + else: + context = contexts[-1] + debug("Selected context: {!r}".format(context)) + # Unknown flags (could be e.g. only partially typed out; could be + # wholly invalid; doesn't matter) complete with flags. + debug("Looking for {!r} in {!r}".format(tail, context.flags)) + if tail not in context.flags: + debug("Not found, completing with flag names") + # Long flags - partial or just the dashes - complete w/ long flags + if tail.startswith("--"): + for name in filter( + lambda x: x.startswith("--"), context.flag_names() + ): + print(name) + # Just a dash, completes with all flags + elif tail == "-": + for name in context.flag_names(): + print(name) + # Otherwise, it's something entirely invalid (a shortflag not + # recognized, or a java style flag like -foo) so return nothing + # (the shell will still try completing with files, but that doesn't + # hurt really.) + else: + pass + # Known flags complete w/ nothing or tasks, depending + else: + # Flags expecting values: do nothing, to let default (usually + # file) shell completion occur (which we actively want in this + # case.) + if context.flags[tail].takes_value: + debug("Found, and it takes a value, so no completion") + pass + # Not taking values (eg bools): print task names + else: + debug("Found, takes no value, printing task names") + print_task_names(collection) + # If not a flag, is either task name or a flag value, so just complete + # task names. + else: + debug("Last token isn't flag-like, just printing task names") + print_task_names(collection) + raise Exit + + +def print_task_names(collection: "Collection") -> None: + for name in sorted(collection.task_names, key=task_name_sort_key): + print(name) + # Just stick aliases after the thing they're aliased to. Sorting isn't + # so important that it's worth bending over backwards here. + for alias in collection.task_names[name]: + print(alias) + + +def print_completion_script(shell: str, names: List[str]) -> None: + # Grab all .completion files in invoke/completion/. (These used to have no + # suffix, but surprise, that's super fragile. + completions = { + os.path.splitext(os.path.basename(x))[0]: x + for x in glob.glob( + os.path.join( + os.path.dirname(os.path.realpath(__file__)), "*.completion" + ) + ) + } + try: + path = completions[shell] + except KeyError: + err = 'Completion for shell "{}" not supported (options are: {}).' + raise ParseError(err.format(shell, ", ".join(sorted(completions)))) + debug("Printing completion script from {}".format(path)) + # Choose one arbitrary program name for script's own internal invocation + # (also used to construct completion function names when necessary) + binary = names[0] + with open(path, "r") as script: + print( + script.read().format(binary=binary, spaced_names=" ".join(names)) + ) diff --git a/.venv/lib/python3.9/site-packages/invoke/completion/fish.completion b/.venv/lib/python3.9/site-packages/invoke/completion/fish.completion new file mode 100644 index 0000000..5f479a1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/completion/fish.completion @@ -0,0 +1,10 @@ +# Invoke tab-completion script for the fish shell +# Copy it to the ~/.config/fish/completions directory + +function __complete_{binary} + {binary} --complete -- (commandline --tokenize) +end + +# --no-files: Don't complete files unless invoke gives an empty result +# TODO: find a way to honor all binary_names +complete --command {binary} --no-files --arguments '(__complete_{binary})' diff --git a/.venv/lib/python3.9/site-packages/invoke/completion/zsh.completion b/.venv/lib/python3.9/site-packages/invoke/completion/zsh.completion new file mode 100644 index 0000000..2fb7d12 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/completion/zsh.completion @@ -0,0 +1,33 @@ +# Invoke tab-completion script to be sourced with the Z shell. +# Known to work on zsh 5.0.x, probably works on later 4.x releases as well (as +# it uses the older compctl completion system). + +_complete_{binary}() {{ + # `words` contains the entire command string up til now (including + # program name). + # + # We hand it to Invoke so it can figure out the current context: spit back + # core options, task names, the current task's options, or some combo. + # + # Before doing so, we attempt to tease out any collection flag+arg so we + # can ensure it is applied correctly. + collection_arg='' + if [[ "${{words}}" =~ "(-c|--collection) [^ ]+" ]]; then + collection_arg=$MATCH + fi + # `reply` is the array of valid completions handed back to `compctl`. + # Use ${{=...}} to force whitespace splitting in expansion of + # $collection_arg + reply=( $({binary} ${{=collection_arg}} --complete -- ${{words}}) ) +}} + + +# Tell shell builtin to use the above for completing our given binary name(s). +# * -K: use given function name to generate completions. +# * +: specifies 'alternative' completion, where options after the '+' are only +# used if the completion from the options before the '+' result in no matches. +# * -f: when function generates no results, use filenames. +# * positional args: program names to complete for. +compctl -K _complete_{binary} + -f {spaced_names} + +# vim: set ft=sh : diff --git a/.venv/lib/python3.9/site-packages/invoke/config.py b/.venv/lib/python3.9/site-packages/invoke/config.py new file mode 100644 index 0000000..5496262 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/config.py @@ -0,0 +1,1283 @@ +import copy +import json +import os +import types +from importlib.util import spec_from_loader +from os import PathLike +from os.path import join, splitext, expanduser +from types import ModuleType +from typing import Any, Dict, Iterator, Optional, Tuple, Type, Union + +from .env import Environment +from .exceptions import UnknownFileType, UnpicklableConfigMember +from .runners import Local +from .terminals import WINDOWS +from .util import debug, yaml + + +try: + from importlib.machinery import SourceFileLoader +except ImportError: # PyPy3 + from importlib._bootstrap import ( # type: ignore[no-redef] + _SourceFileLoader as SourceFileLoader, + ) + + +def load_source(name: str, path: str) -> Dict[str, Any]: + if not os.path.exists(path): + return {} + loader = SourceFileLoader("mod", path) + mod = ModuleType("mod") + mod.__spec__ = spec_from_loader("mod", loader) + loader.exec_module(mod) + return vars(mod) + + +class DataProxy: + """ + Helper class implementing nested dict+attr access for `.Config`. + + Specifically, is used both for `.Config` itself, and to wrap any other + dicts assigned as config values (recursively). + + .. warning:: + All methods (of this object or in subclasses) must take care to + initialize new attributes via ``self._set(name='value')``, or they'll + run into recursion errors! + + .. versionadded:: 1.0 + """ + + # Attributes which get proxied through to inner merged-dict config obj. + _proxies = ( + tuple( + """ + get + has_key + items + iteritems + iterkeys + itervalues + keys + values + """.split() + ) + + tuple( + "__{}__".format(x) + for x in """ + cmp + contains + iter + sizeof + """.split() + ) + ) + + @classmethod + def from_data( + cls, + data: Dict[str, Any], + root: Optional["DataProxy"] = None, + keypath: Tuple[str, ...] = tuple(), + ) -> "DataProxy": + """ + Alternate constructor for 'baby' DataProxies used as sub-dict values. + + Allows creating standalone DataProxy objects while also letting + subclasses like `.Config` define their own ``__init__`` without + muddling the two. + + :param dict data: + This particular DataProxy's personal data. Required, it's the Data + being Proxied. + + :param root: + Optional handle on a root DataProxy/Config which needs notification + on data updates. + + :param tuple keypath: + Optional tuple describing the path of keys leading to this + DataProxy's location inside the ``root`` structure. Required if + ``root`` was given (and vice versa.) + + .. versionadded:: 1.0 + """ + obj = cls() + obj._set(_config=data) + obj._set(_root=root) + obj._set(_keypath=keypath) + return obj + + def __getattr__(self, key: str) -> Any: + # NOTE: due to default Python attribute-lookup semantics, "real" + # attributes will always be yielded on attribute access and this method + # is skipped. That behavior is good for us (it's more intuitive than + # having a config key accidentally shadow a real attribute or method). + try: + return self._get(key) + except KeyError: + # Proxy most special vars to config for dict procotol. + if key in self._proxies: + return getattr(self._config, key) + # Otherwise, raise useful AttributeError to follow getattr proto. + err = "No attribute or config key found for {!r}".format(key) + attrs = [x for x in dir(self.__class__) if not x.startswith("_")] + err += "\n\nValid keys: {!r}".format( + sorted(list(self._config.keys())) + ) + err += "\n\nValid real attributes: {!r}".format(attrs) + raise AttributeError(err) + + def __setattr__(self, key: str, value: Any) -> None: + # Turn attribute-sets into config updates anytime we don't have a real + # attribute with the given name/key. + has_real_attr = key in dir(self) + if not has_real_attr: + # Make sure to trigger our own __setitem__ instead of going direct + # to our internal dict/cache + self[key] = value + else: + super().__setattr__(key, value) + + def __iter__(self) -> Iterator[Dict[str, Any]]: + # For some reason Python is ignoring our __hasattr__ when determining + # whether we support __iter__. BOO + return iter(self._config) + + def __eq__(self, other: object) -> bool: + # NOTE: Can't proxy __eq__ because the RHS will always be an obj of the + # current class, not the proxied-to class, and that causes + # NotImplemented. + # Try comparing to other objects like ourselves, falling back to a not + # very comparable value (None) so comparison fails. + other_val = getattr(other, "_config", None) + # But we can compare to vanilla dicts just fine, since our _config is + # itself just a dict. + if isinstance(other, dict): + other_val = other + return bool(self._config == other_val) + + def __len__(self) -> int: + return len(self._config) + + def __setitem__(self, key: str, value: str) -> None: + self._config[key] = value + self._track_modification_of(key, value) + + def __getitem__(self, key: str) -> Any: + return self._get(key) + + def _get(self, key: str) -> Any: + # Short-circuit if pickling/copying mechanisms are asking if we've got + # __setstate__ etc; they'll ask this w/o calling our __init__ first, so + # we'd be in a RecursionError-causing catch-22 otherwise. + if key in ("__setstate__",): + raise AttributeError(key) + # At this point we should be able to assume a self._config... + value = self._config[key] + if isinstance(value, dict): + # New object's keypath is simply the key, prepended with our own + # keypath if we've got one. + keypath = (key,) + if hasattr(self, "_keypath"): + keypath = self._keypath + keypath + # If we have no _root, we must be the root, so it's us. Otherwise, + # pass along our handle on the root. + root = getattr(self, "_root", self) + value = DataProxy.from_data(data=value, root=root, keypath=keypath) + return value + + def _set(self, *args: Any, **kwargs: Any) -> None: + """ + Convenience workaround of default 'attrs are config keys' behavior. + + Uses `object.__setattr__` to work around the class' normal proxying + behavior, but is less verbose than using that directly. + + Has two modes (which may be combined if you really want): + + - ``self._set('attrname', value)``, just like ``__setattr__`` + - ``self._set(attname=value)`` (i.e. kwargs), even less typing. + """ + if args: + object.__setattr__(self, *args) + for key, value in kwargs.items(): + object.__setattr__(self, key, value) + + def __repr__(self) -> str: + return "<{}: {}>".format(self.__class__.__name__, self._config) + + def __contains__(self, key: str) -> bool: + return key in self._config + + @property + def _is_leaf(self) -> bool: + return hasattr(self, "_root") + + @property + def _is_root(self) -> bool: + return hasattr(self, "_modify") + + def _track_removal_of(self, key: str) -> None: + # Grab the root object responsible for tracking removals; either the + # referenced root (if we're a leaf) or ourselves (if we're not). + # (Intermediate nodes never have anything but __getitem__ called on + # them, otherwise they're by definition being treated as a leaf.) + target = None + if self._is_leaf: + target = self._root + elif self._is_root: + target = self + if target is not None: + target._remove(getattr(self, "_keypath", tuple()), key) + + def _track_modification_of(self, key: str, value: str) -> None: + target = None + if self._is_leaf: + target = self._root + elif self._is_root: + target = self + if target is not None: + target._modify(getattr(self, "_keypath", tuple()), key, value) + + def __delitem__(self, key: str) -> None: + del self._config[key] + self._track_removal_of(key) + + def __delattr__(self, name: str) -> None: + # Make sure we don't screw up true attribute deletion for the + # situations that actually want it. (Uncommon, but not rare.) + if name in self: + del self[name] + else: + object.__delattr__(self, name) + + def clear(self) -> None: + keys = list(self.keys()) + for key in keys: + del self[key] + + def pop(self, *args: Any) -> Any: + # Must test this up front before (possibly) mutating self._config + key_existed = args and args[0] in self._config + # We always have a _config (whether it's a real dict or a cache of + # merged levels) so we can fall back to it for all the corner case + # handling re: args (arity, handling a default, raising KeyError, etc) + ret = self._config.pop(*args) + # If it looks like no popping occurred (key wasn't there), presumably + # user gave default, so we can short-circuit return here - no need to + # track a deletion that did not happen. + if not key_existed: + return ret + # Here, we can assume at least the 1st posarg (key) existed. + self._track_removal_of(args[0]) + # In all cases, return the popped value. + return ret + + def popitem(self) -> Any: + ret = self._config.popitem() + self._track_removal_of(ret[0]) + return ret + + def setdefault(self, *args: Any) -> Any: + # Must test up front whether the key existed beforehand + key_existed = args and args[0] in self._config + # Run locally + ret = self._config.setdefault(*args) + # Key already existed -> nothing was mutated, short-circuit + if key_existed: + return ret + # Here, we can assume the key did not exist and thus user must have + # supplied a 'default' (if they did not, the real setdefault() above + # would have excepted.) + key, default = args + self._track_modification_of(key, default) + return ret + + def update(self, *args: Any, **kwargs: Any) -> None: + if kwargs: + for key, value in kwargs.items(): + self[key] = value + elif args: + # TODO: complain if arity>1 + arg = args[0] + if isinstance(arg, dict): + for key in arg: + self[key] = arg[key] + else: + # TODO: be stricter about input in this case + for pair in arg: + self[pair[0]] = pair[1] + + +class Config(DataProxy): + """ + Invoke's primary configuration handling class. + + See :doc:`/concepts/configuration` for details on the configuration system + this class implements, including the :ref:`configuration hierarchy + `. The rest of this class' documentation assumes + familiarity with that document. + + **Access** + + Configuration values may be accessed and/or updated using dict syntax:: + + config['foo'] + + or attribute syntax:: + + config.foo + + Nesting works the same way - dict config values are turned into objects + which honor both the dictionary protocol and the attribute-access method:: + + config['foo']['bar'] + config.foo.bar + + **A note about attribute access and methods** + + This class implements the entire dictionary protocol: methods such as + ``keys``, ``values``, ``items``, ``pop`` and so forth should all function + as they do on regular dicts. It also implements new config-specific methods + such as `load_system`, `load_collection`, `merge`, `clone`, etc. + + .. warning:: + Accordingly, this means that if you have configuration options sharing + names with these methods, you **must** use dictionary syntax (e.g. + ``myconfig['keys']``) to access the configuration data. + + **Lifecycle** + + At initialization time, `.Config`: + + - creates per-level data structures; + - stores any levels supplied to `__init__`, such as defaults or overrides, + as well as the various config file paths/filename patterns; + - and loads config files, if found (though typically this just means system + and user-level files, as project and runtime files need more info before + they can be found and loaded.) + + - This step can be skipped by specifying ``lazy=True``. + + At this point, `.Config` is fully usable - and because it pre-emptively + loads some config files, those config files can affect anything that + comes after, like CLI parsing or loading of task collections. + + In the CLI use case, further processing is done after instantiation, using + the ``load_*`` methods such as `load_overrides`, `load_project`, etc: + + - the result of argument/option parsing is applied to the overrides level; + - a project-level config file is loaded, as it's dependent on a loaded + tasks collection; + - a runtime config file is loaded, if its flag was supplied; + - then, for each task being executed: + + - per-collection data is loaded (only possible now that we have + collection & task in hand); + - shell environment data is loaded (must be done at end of process due + to using the rest of the config as a guide for interpreting env var + names.) + + At this point, the config object is handed to the task being executed, as + part of its execution `.Context`. + + Any modifications made directly to the `.Config` itself after this point + end up stored in their own (topmost) config level, making it easier to + debug final values. + + Finally, any *deletions* made to the `.Config` (e.g. applications of + dict-style mutators like ``pop``, ``clear`` etc) are also tracked in their + own structure, allowing the config object to honor such method calls + without mutating the underlying source data. + + **Special class attributes** + + The following class-level attributes are used for low-level configuration + of the config system itself, such as which file paths to load. They are + primarily intended for overriding by subclasses. + + - ``prefix``: Supplies the default value for ``file_prefix`` (directly) and + ``env_prefix`` (uppercased). See their descriptions for details. Its + default value is ``"invoke"``. + - ``file_prefix``: The config file 'basename' default (though it is not a + literal basename; it can contain path parts if desired) which is appended + to the configured values of ``system_prefix``, ``user_prefix``, etc, to + arrive at the final (pre-extension) file paths. + + Thus, by default, a system-level config file path concatenates the + ``system_prefix`` of ``/etc/`` with the ``file_prefix`` of ``invoke`` to + arrive at paths like ``/etc/invoke.json``. + + Defaults to ``None``, meaning to use the value of ``prefix``. + + - ``env_prefix``: A prefix used (along with a joining underscore) to + determine which environment variables are loaded as the env var + configuration level. Since its default is the value of ``prefix`` + capitalized, this means env vars like ``INVOKE_RUN_ECHO`` are sought by + default. + + Defaults to ``None``, meaning to use the value of ``prefix``. + + .. versionadded:: 1.0 + """ + + prefix = "invoke" + file_prefix = None + env_prefix = None + + @staticmethod + def global_defaults() -> Dict[str, Any]: + """ + Return the core default settings for Invoke. + + Generally only for use by `.Config` internals. For descriptions of + these values, see :ref:`default-values`. + + Subclasses may choose to override this method, calling + ``Config.global_defaults`` and applying `.merge_dicts` to the result, + to add to or modify these values. + + .. versionadded:: 1.0 + """ + # On Windows, which won't have /bin/bash, check for a set COMSPEC env + # var (https://en.wikipedia.org/wiki/COMSPEC) or fallback to an + # unqualified cmd.exe otherwise. + if WINDOWS: + shell = os.environ.get("COMSPEC", "cmd.exe") + # Else, assume Unix, most distros of which have /bin/bash available. + # TODO: consider an automatic fallback to /bin/sh for systems lacking + # /bin/bash; however users may configure run.shell quite easily, so... + else: + shell = "bash" + + return { + # TODO: we document 'debug' but it's not truly implemented outside + # of env var and CLI flag. If we honor it, we have to go around and + # figure out at what points we might want to call + # `util.enable_logging`: + # - just using it as a fallback default for arg parsing isn't much + # use, as at that point the config holds nothing but defaults & CLI + # flag values + # - doing it at file load time might be somewhat useful, though + # where this happens may be subject to change soon + # - doing it at env var load time seems a bit silly given the + # existing support for at-startup testing for INVOKE_DEBUG + # 'debug': False, + # TODO: I feel like we want these to be more consistent re: default + # values stored here vs 'stored' as logic where they are + # referenced, there are probably some bits that are all "if None -> + # default" that could go here. Alternately, make _more_ of these + # default to None? + "run": { + "asynchronous": False, + "disown": False, + "dry": False, + "echo": False, + "echo_stdin": None, + "encoding": None, + "env": {}, + "err_stream": None, + "fallback": True, + "hide": None, + "in_stream": None, + "out_stream": None, + "echo_format": "\033[1;37m{command}\033[0m", + "pty": False, + "replace_env": False, + "shell": shell, + "warn": False, + "watchers": [], + }, + # This doesn't live inside the 'run' tree; otherwise it'd make it + # somewhat harder to extend/override in Fabric 2 which has a split + # local/remote runner situation. + "runners": {"local": Local}, + "sudo": { + "password": None, + "prompt": "[sudo] password: ", + "user": None, + }, + "tasks": { + "auto_dash_names": True, + "collection_name": "tasks", + "dedupe": True, + "executor_class": None, + "ignore_unknown_help": False, + "search_root": None, + }, + "timeouts": {"command": None}, + } + + def __init__( + self, + overrides: Optional[Dict[str, Any]] = None, + defaults: Optional[Dict[str, Any]] = None, + system_prefix: Optional[str] = None, + user_prefix: Optional[str] = None, + project_location: Optional[PathLike] = None, + runtime_path: Optional[PathLike] = None, + lazy: bool = False, + ): + """ + Creates a new config object. + + :param dict defaults: + A dict containing default (lowest level) config data. Default: + `global_defaults`. + + :param dict overrides: + A dict containing override-level config data. Default: ``{}``. + + :param str system_prefix: + Base path for the global config file location; combined with the + prefix and file suffixes to arrive at final file path candidates. + + Default: ``/etc/`` (thus e.g. ``/etc/invoke.yaml`` or + ``/etc/invoke.json``). + + :param str user_prefix: + Like ``system_prefix`` but for the per-user config file. These + variables are joined as strings, not via path-style joins, so they + may contain partial file paths; for the per-user config file this + often means a leading dot, to make the final result a hidden file + on most systems. + + Default: ``~/.`` (e.g. ``~/.invoke.yaml``). + + :param str project_location: + Optional directory path of the currently loaded `.Collection` (as + loaded by `.Loader`). When non-empty, will trigger seeking of + per-project config files in this directory. + + :param str runtime_path: + Optional file path to a runtime configuration file. + + Used to fill the penultimate slot in the config hierarchy. Should + be a full file path to an existing file, not a directory path or a + prefix. + + :param bool lazy: + Whether to automatically load some of the lower config levels. + + By default (``lazy=False``), ``__init__`` automatically calls + `load_system` and `load_user` to load system and user config files, + respectively. + + For more control over what is loaded when, you can say + ``lazy=True``, and no automatic loading is done. + + .. note:: + If you give ``defaults`` and/or ``overrides`` as ``__init__`` + kwargs instead of waiting to use `load_defaults` or + `load_overrides` afterwards, those *will* still end up 'loaded' + immediately. + """ + # Technically an implementation detail - do not expose in public API. + # Stores merged configs and is accessed via DataProxy. + self._set(_config={}) + + # Config file suffixes to search, in preference order. + self._set(_file_suffixes=("yaml", "yml", "json", "py")) + + # Default configuration values, typically a copy of `global_defaults`. + if defaults is None: + defaults = copy_dict(self.global_defaults()) + self._set(_defaults=defaults) + + # Collection-driven config data, gathered from the collection tree + # containing the currently executing task. + self._set(_collection={}) + + # Path prefix searched for the system config file. + # NOTE: There is no default system prefix on Windows. + if system_prefix is None and not WINDOWS: + system_prefix = "/etc/" + self._set(_system_prefix=system_prefix) + # Path to loaded system config file, if any. + self._set(_system_path=None) + # Whether the system config file has been loaded or not (or ``None`` if + # no loading has been attempted yet.) + self._set(_system_found=None) + # Data loaded from the system config file. + self._set(_system={}) + + # Path prefix searched for per-user config files. + if user_prefix is None: + user_prefix = "~/." + self._set(_user_prefix=user_prefix) + # Path to loaded user config file, if any. + self._set(_user_path=None) + # Whether the user config file has been loaded or not (or ``None`` if + # no loading has been attempted yet.) + self._set(_user_found=None) + # Data loaded from the per-user config file. + self._set(_user={}) + + # As it may want to be set post-init, project conf file related attrs + # get initialized or overwritten via a specific method. + self.set_project_location(project_location) + + # Environment variable name prefix + env_prefix = self.env_prefix + if env_prefix is None: + env_prefix = self.prefix + env_prefix = "{}_".format(env_prefix.upper()) + self._set(_env_prefix=env_prefix) + # Config data loaded from the shell environment. + self._set(_env={}) + + # As it may want to be set post-init, runtime conf file related attrs + # get initialized or overwritten via a specific method. + self.set_runtime_path(runtime_path) + + # Overrides - highest normal config level. Typically filled in from + # command-line flags. + if overrides is None: + overrides = {} + self._set(_overrides=overrides) + + # Absolute highest level: user modifications. + self._set(_modifications={}) + # And its sibling: user deletions. (stored as a flat dict of keypath + # keys and dummy values, for constant-time membership testing/removal + # w/ no messy recursion. TODO: maybe redo _everything_ that way? in + # _modifications and other levels, the values would of course be + # valuable and not just None) + self._set(_deletions={}) + + # Convenience loading of user and system files, since those require no + # other levels in order to function. + if not lazy: + self.load_base_conf_files() + # Always merge, otherwise defaults, etc are not usable until creator or + # a subroutine does so. + self.merge() + + def load_base_conf_files(self) -> None: + # Just a refactor of something done in unlazy init or in clone() + self.load_system(merge=False) + self.load_user(merge=False) + + def load_defaults(self, data: Dict[str, Any], merge: bool = True) -> None: + """ + Set or replace the 'defaults' configuration level, from ``data``. + + :param dict data: The config data to load as the defaults level. + + :param bool merge: + Whether to merge the loaded data into the central config. Default: + ``True``. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + self._set(_defaults=data) + if merge: + self.merge() + + def load_overrides(self, data: Dict[str, Any], merge: bool = True) -> None: + """ + Set or replace the 'overrides' configuration level, from ``data``. + + :param dict data: The config data to load as the overrides level. + + :param bool merge: + Whether to merge the loaded data into the central config. Default: + ``True``. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + self._set(_overrides=data) + if merge: + self.merge() + + def load_system(self, merge: bool = True) -> None: + """ + Load a system-level config file, if possible. + + Checks the configured ``_system_prefix`` path, which defaults to + ``/etc``, and will thus load files like ``/etc/invoke.yml``. + + :param bool merge: + Whether to merge the loaded data into the central config. Default: + ``True``. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + self._load_file(prefix="system", merge=merge) + + def load_user(self, merge: bool = True) -> None: + """ + Load a user-level config file, if possible. + + Checks the configured ``_user_prefix`` path, which defaults to ``~/.``, + and will thus load files like ``~/.invoke.yml``. + + :param bool merge: + Whether to merge the loaded data into the central config. Default: + ``True``. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + self._load_file(prefix="user", merge=merge) + + def load_project(self, merge: bool = True) -> None: + """ + Load a project-level config file, if possible. + + Checks the configured ``_project_prefix`` value derived from the path + given to `set_project_location`, which is typically set to the + directory containing the loaded task collection. + + Thus, if one were to run the CLI tool against a tasks collection + ``/home/myuser/code/tasks.py``, `load_project` would seek out files + like ``/home/myuser/code/invoke.yml``. + + :param bool merge: + Whether to merge the loaded data into the central config. Default: + ``True``. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + self._load_file(prefix="project", merge=merge) + + def set_runtime_path(self, path: Optional[PathLike]) -> None: + """ + Set the runtime config file path. + + .. versionadded:: 1.0 + """ + # Path to the user-specified runtime config file. + self._set(_runtime_path=path) + # Data loaded from the runtime config file. + self._set(_runtime={}) + # Whether the runtime config file has been loaded or not (or ``None`` + # if no loading has been attempted yet.) + self._set(_runtime_found=None) + + def load_runtime(self, merge: bool = True) -> None: + """ + Load a runtime-level config file, if one was specified. + + When the CLI framework creates a `Config`, it sets ``_runtime_path``, + which is a full path to the requested config file. This method attempts + to load that file. + + :param bool merge: + Whether to merge the loaded data into the central config. Default: + ``True``. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + self._load_file(prefix="runtime", absolute=True, merge=merge) + + def load_shell_env(self) -> None: + """ + Load values from the shell environment. + + `.load_shell_env` is intended for execution late in a `.Config` + object's lifecycle, once all other sources (such as a runtime config + file or per-collection configurations) have been loaded. Loading from + the shell is not terrifically expensive, but must be done at a specific + point in time to ensure the "only known config keys are loaded from the + env" behavior works correctly. + + See :ref:`env-vars` for details on this design decision and other info + re: how environment variables are scanned and loaded. + + .. versionadded:: 1.0 + """ + # Force merge of existing data to ensure we have an up to date picture + debug("Running pre-merge for shell env loading...") + self.merge() + debug("Done with pre-merge.") + loader = Environment(config=self._config, prefix=self._env_prefix) + self._set(_env=loader.load()) + debug("Loaded shell environment, triggering final merge") + self.merge() + + def load_collection( + self, data: Dict[str, Any], merge: bool = True + ) -> None: + """ + Update collection-driven config data. + + `.load_collection` is intended for use by the core task execution + machinery, which is responsible for obtaining collection-driven data. + See :ref:`collection-configuration` for details. + + .. versionadded:: 1.0 + """ + debug("Loading collection configuration") + self._set(_collection=data) + if merge: + self.merge() + + def set_project_location(self, path: Union[PathLike, str, None]) -> None: + """ + Set the directory path where a project-level config file may be found. + + Does not do any file loading on its own; for that, see `load_project`. + + .. versionadded:: 1.0 + """ + # 'Prefix' to match the other sets of attrs + project_prefix = None + if path is not None: + # Ensure the prefix is normalized to a directory-like path string + project_prefix = join(path, "") + self._set(_project_prefix=project_prefix) + # Path to loaded per-project config file, if any. + self._set(_project_path=None) + # Whether the project config file has been loaded or not (or ``None`` + # if no loading has been attempted yet.) + self._set(_project_found=None) + # Data loaded from the per-project config file. + self._set(_project={}) + + def _load_file( + self, prefix: str, absolute: bool = False, merge: bool = True + ) -> None: + # Setup + found = "_{}_found".format(prefix) + path = "_{}_path".format(prefix) + data = "_{}".format(prefix) + midfix = self.file_prefix + if midfix is None: + midfix = self.prefix + # Short-circuit if loading appears to have occurred already + if getattr(self, found) is not None: + return + # Moar setup + if absolute: + absolute_path = getattr(self, path) + # None -> expected absolute path but none set, short circuit + if absolute_path is None: + return + paths = [absolute_path] + else: + path_prefix = getattr(self, "_{}_prefix".format(prefix)) + # Short circuit if loading seems unnecessary (eg for project config + # files when not running out of a project) + if path_prefix is None: + return + paths = [ + ".".join((path_prefix + midfix, x)) + for x in self._file_suffixes + ] + # Poke 'em + for filepath in paths: + # Normalize + filepath = expanduser(filepath) + try: + try: + type_ = splitext(filepath)[1].lstrip(".") + loader = getattr(self, "_load_{}".format(type_)) + except AttributeError: + msg = "Config files of type {!r} (from file {!r}) are not supported! Please use one of: {!r}" # noqa + raise UnknownFileType( + msg.format(type_, filepath, self._file_suffixes) + ) + # Store data, the path it was found at, and fact that it was + # found + self._set(data, loader(filepath)) + self._set(path, filepath) + self._set(found, True) + break + # Typically means 'no such file', so just note & skip past. + except IOError as e: + if e.errno == 2: + err = "Didn't see any {}, skipping." + debug(err.format(filepath)) + else: + raise + # Still None -> no suffixed paths were found, record this fact + if getattr(self, path) is None: + self._set(found, False) + # Merge loaded data in if any was found + elif merge: + self.merge() + + def _load_yaml(self, path: PathLike) -> Any: + with open(path) as fd: + return yaml.safe_load(fd) + + _load_yml = _load_yaml + + def _load_json(self, path: PathLike) -> Any: + with open(path) as fd: + return json.load(fd) + + def _load_py(self, path: str) -> Dict[str, Any]: + data = {} + for key, value in (load_source("mod", path)).items(): + # Strip special members, as these are always going to be builtins + # and other special things a user will not want in their config. + if key.startswith("__"): + continue + # Raise exceptions on module values; they are unpicklable. + # TODO: suck it up and reimplement copy() without pickling? Then + # again, a user trying to stuff a module into their config is + # probably doing something better done in runtime/library level + # code and not in a "config file"...right? + if isinstance(value, types.ModuleType): + err = "'{}' is a module, which can't be used as a config value. (Are you perhaps giving a tasks file instead of a config file by mistake?)" # noqa + raise UnpicklableConfigMember(err.format(key)) + data[key] = value + return data + + def merge(self) -> None: + """ + Merge all config sources, in order. + + .. versionadded:: 1.0 + """ + debug("Merging config sources in order onto new empty _config...") + self._set(_config={}) + debug("Defaults: {!r}".format(self._defaults)) + merge_dicts(self._config, self._defaults) + debug("Collection-driven: {!r}".format(self._collection)) + merge_dicts(self._config, self._collection) + self._merge_file("system", "System-wide") + self._merge_file("user", "Per-user") + self._merge_file("project", "Per-project") + debug("Environment variable config: {!r}".format(self._env)) + merge_dicts(self._config, self._env) + self._merge_file("runtime", "Runtime") + debug("Overrides: {!r}".format(self._overrides)) + merge_dicts(self._config, self._overrides) + debug("Modifications: {!r}".format(self._modifications)) + merge_dicts(self._config, self._modifications) + debug("Deletions: {!r}".format(self._deletions)) + obliterate(self._config, self._deletions) + + def _merge_file(self, name: str, desc: str) -> None: + # Setup + desc += " config file" # yup + found = getattr(self, "_{}_found".format(name)) + path = getattr(self, "_{}_path".format(name)) + data = getattr(self, "_{}".format(name)) + # None -> no loading occurred yet + if found is None: + debug("{} has not been loaded yet, skipping".format(desc)) + # True -> hooray + elif found: + debug("{} ({}): {!r}".format(desc, path, data)) + merge_dicts(self._config, data) + # False -> did try, did not succeed + else: + # TODO: how to preserve what was tried for each case but only for + # the negative? Just a branch here based on 'name'? + debug("{} not found, skipping".format(desc)) + + def clone(self, into: Optional[Type["Config"]] = None) -> "Config": + """ + Return a copy of this configuration object. + + The new object will be identical in terms of configured sources and any + loaded (or user-manipulated) data, but will be a distinct object with + as little shared mutable state as possible. + + Specifically, all `dict` values within the config are recursively + recreated, with non-dict leaf values subjected to `copy.copy` (note: + *not* `copy.deepcopy`, as this can cause issues with various objects + such as compiled regexen or threading locks, often found buried deep + within rich aggregates like API or DB clients). + + The only remaining config values that may end up shared between a + config and its clone are thus those 'rich' objects that do not + `copy.copy` cleanly, or compound non-dict objects (such as lists or + tuples). + + :param into: + A `.Config` subclass that the new clone should be "upgraded" to. + + Used by client libraries which have their own `.Config` subclasses + that e.g. define additional defaults; cloning "into" one of these + subclasses ensures that any new keys/subtrees are added gracefully, + without overwriting anything that may have been pre-defined. + + Default: ``None`` (just clone into another regular `.Config`). + + :returns: + A `.Config`, or an instance of the class given to ``into``. + + .. versionadded:: 1.0 + """ + # Construct new object + klass = self.__class__ if into is None else into + # Also allow arbitrary constructor kwargs, for subclasses where passing + # (some) data in at init time is desired (vs post-init copying) + # TODO: probably want to pivot the whole class this way eventually...? + # No longer recall exactly why we went with the 'fresh init + attribute + # setting' approach originally...tho there's clearly some impedance + # mismatch going on between "I want stuff to happen in my config's + # instantiation" and "I want cloning to not trigger certain things like + # external data source loading". + # NOTE: this will include lazy=True, see end of method + new = klass(**self._clone_init_kwargs(into=into)) + # Copy/merge/etc all 'private' data sources and attributes + for name in """ + collection + system_prefix + system_path + system_found + system + user_prefix + user_path + user_found + user + project_prefix + project_path + project_found + project + env_prefix + env + runtime_path + runtime_found + runtime + overrides + modifications + """.split(): + name = "_{}".format(name) + my_data = getattr(self, name) + # Non-dict data gets carried over straight (via a copy()) + # NOTE: presumably someone could really screw up and change these + # values' types, but at that point it's on them... + if not isinstance(my_data, dict): + new._set(name, copy.copy(my_data)) + # Dict data gets merged (which also involves a copy.copy + # eventually) + else: + merge_dicts(getattr(new, name), my_data) + # Do what __init__ would've done if not lazy, i.e. load user/system + # conf files. + new.load_base_conf_files() + # Finally, merge() for reals (_load_base_conf_files doesn't do so + # internally, so that data wouldn't otherwise show up.) + new.merge() + return new + + def _clone_init_kwargs( + self, into: Optional[Type["Config"]] = None + ) -> Dict[str, Any]: + """ + Supply kwargs suitable for initializing a new clone of this object. + + Note that most of the `.clone` process involves copying data between + two instances instead of passing init kwargs; however, sometimes you + really do want init kwargs, which is why this method exists. + + :param into: The value of ``into`` as passed to the calling `.clone`. + + :returns: A `dict`. + """ + # NOTE: must pass in defaults fresh or otherwise global_defaults() gets + # used instead. Except when 'into' is in play, in which case we truly + # want the union of the two. + new_defaults = copy_dict(self._defaults) + if into is not None: + merge_dicts(new_defaults, into.global_defaults()) + # The kwargs. + return dict( + defaults=new_defaults, + # TODO: consider making this 'hardcoded' on the calling end (ie + # inside clone()) to make sure nobody accidentally nukes it via + # subclassing? + lazy=True, + ) + + def _modify(self, keypath: Tuple[str, ...], key: str, value: str) -> None: + """ + Update our user-modifications config level with new data. + + :param tuple keypath: + The key path identifying the sub-dict being updated. May be an + empty tuple if the update is occurring at the topmost level. + + :param str key: + The actual key receiving an update. + + :param value: + The value being written. + """ + # First, ensure we wipe the keypath from _deletions, in case it was + # previously deleted. + excise(self._deletions, keypath + (key,)) + # Now we can add it to the modifications structure. + data = self._modifications + keypath_list = list(keypath) + while keypath_list: + subkey = keypath_list.pop(0) + # TODO: could use defaultdict here, but...meh? + if subkey not in data: + # TODO: generify this and the subsequent 3 lines... + data[subkey] = {} + data = data[subkey] + data[key] = value + self.merge() + + def _remove(self, keypath: Tuple[str, ...], key: str) -> None: + """ + Like `._modify`, but for removal. + """ + # NOTE: because deletions are processed in merge() last, we do not need + # to remove things from _modifications on removal; but we *do* do the + # inverse - remove from _deletions on modification. + # TODO: may be sane to push this step up to callers? + data = self._deletions + keypath_list = list(keypath) + while keypath_list: + subkey = keypath_list.pop(0) + if subkey in data: + data = data[subkey] + # If we encounter None, it means something higher up than our + # requested keypath is already marked as deleted; so we don't + # have to do anything or go further. + if data is None: + return + # Otherwise it's presumably another dict, so keep looping... + else: + # Key not found -> nobody's marked anything along this part of + # the path for deletion, so we'll start building it out. + data[subkey] = {} + # Then prep for next iteration + data = data[subkey] + # Exited loop -> data must be the leafmost dict, so we can now set our + # deleted key to None + data[key] = None + self.merge() + + +class AmbiguousMergeError(ValueError): + pass + + +def merge_dicts( + base: Dict[str, Any], updates: Dict[str, Any] +) -> Dict[str, Any]: + """ + Recursively merge dict ``updates`` into dict ``base`` (mutating ``base``.) + + * Values which are themselves dicts will be recursed into. + * Values which are a dict in one input and *not* a dict in the other input + (e.g. if our inputs were ``{'foo': 5}`` and ``{'foo': {'bar': 5}}``) are + irreconciliable and will generate an exception. + * Non-dict leaf values are run through `copy.copy` to avoid state bleed. + + .. note:: + This is effectively a lightweight `copy.deepcopy` which offers + protection from mismatched types (dict vs non-dict) and avoids some + core deepcopy problems (such as how it explodes on certain object + types). + + :returns: + The value of ``base``, which is mostly useful for wrapper functions + like `copy_dict`. + + .. versionadded:: 1.0 + """ + # TODO: for chrissakes just make it return instead of mutating? + for key, value in (updates or {}).items(): + # Dict values whose keys also exist in 'base' -> recurse + # (But only if both types are dicts.) + if key in base: + if isinstance(value, dict): + if isinstance(base[key], dict): + merge_dicts(base[key], value) + else: + raise _merge_error(base[key], value) + else: + if isinstance(base[key], dict): + raise _merge_error(base[key], value) + # Fileno-bearing objects are probably 'real' files which do not + # copy well & must be passed by reference. Meh. + elif hasattr(value, "fileno"): + base[key] = value + else: + base[key] = copy.copy(value) + # New values get set anew + else: + # Dict values get reconstructed to avoid being references to the + # updates dict, which can lead to nasty state-bleed bugs otherwise + if isinstance(value, dict): + base[key] = copy_dict(value) + # Fileno-bearing objects are probably 'real' files which do not + # copy well & must be passed by reference. Meh. + elif hasattr(value, "fileno"): + base[key] = value + # Non-dict values just get set straight + else: + base[key] = copy.copy(value) + return base + + +def _merge_error(orig: object, new: object) -> AmbiguousMergeError: + return AmbiguousMergeError( + "Can't cleanly merge {} with {}".format( + _format_mismatch(orig), _format_mismatch(new) + ) + ) + + +def _format_mismatch(x: object) -> str: + return "{} ({!r})".format(type(x), x) + + +def copy_dict(source: Dict[str, Any]) -> Dict[str, Any]: + """ + Return a fresh copy of ``source`` with as little shared state as possible. + + Uses `merge_dicts` under the hood, with an empty ``base`` dict; see its + documentation for details on behavior. + + .. versionadded:: 1.0 + """ + return merge_dicts({}, source) + + +def excise(dict_: Dict[str, Any], keypath: Tuple[str, ...]) -> None: + """ + Remove key pointed at by ``keypath`` from nested dict ``dict_``, if exists. + + .. versionadded:: 1.0 + """ + data = dict_ + keypath_list = list(keypath) + leaf_key = keypath_list.pop() + while keypath_list: + key = keypath_list.pop(0) + if key not in data: + # Not there, nothing to excise + return + data = data[key] + if leaf_key in data: + del data[leaf_key] + + +def obliterate(base: Dict[str, Any], deletions: Dict[str, Any]) -> None: + """ + Remove all (nested) keys mentioned in ``deletions``, from ``base``. + + .. versionadded:: 1.0 + """ + for key, value in deletions.items(): + if isinstance(value, dict): + # NOTE: not testing for whether base[key] exists; if something's + # listed in a deletions structure, it must exist in some source + # somewhere, and thus also in the cache being obliterated. + obliterate(base[key], deletions[key]) + else: # implicitly None + del base[key] diff --git a/.venv/lib/python3.9/site-packages/invoke/context.py b/.venv/lib/python3.9/site-packages/invoke/context.py new file mode 100644 index 0000000..00fb351 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/context.py @@ -0,0 +1,616 @@ +import os +import re +from contextlib import contextmanager +from itertools import cycle +from os import PathLike +from typing import ( + Any, + Generator, + Iterator, + List, + Optional, + Union, +) +from unittest.mock import Mock + +from .config import Config, DataProxy +from .exceptions import AuthFailure, Failure, ResponseNotAccepted +from .runners import Result, Runner +from .watchers import FailingResponder + + +class Context(DataProxy): + """ + Context-aware API wrapper & state-passing object. + + `.Context` objects are created during command-line parsing (or, if desired, + by hand) and used to share parser and configuration state with executed + tasks (see :ref:`why-context`). + + Specifically, the class offers wrappers for core API calls (such as `.run`) + which take into account CLI parser flags, configuration files, and/or + changes made at runtime. It also acts as a proxy for its `~.Context.config` + attribute - see that attribute's documentation for details. + + Instances of `.Context` may be shared between tasks when executing + sub-tasks - either the same context the caller was given, or an altered + copy thereof (or, theoretically, a brand new one). + + .. versionadded:: 1.0 + """ + + # NOTE: sometime after Sphinx 1.7, autodoc stopped being able to see + # doc-comments inside __init__ (or something equivalent, anyway). Moving + # the type definitions up here seems to work better and /shouldn't/ mess up + # the DataProxy magic going on... + + #: A list of commands to run (via "&&") before the main argument to any + #: `run` or `sudo` calls. Note that the primary API for manipulating + #: this list is `prefix`; see its docs for details. + command_prefixes: List[str] + #: A list of directories to 'cd' into before running commands with + #: `run` or `sudo`; intended for management via `cd`, please see its + #: docs for details. + command_cwds: List[str] + #: The CLI parser's 'remainder' value (text given after a standalone + #: ``--`` in the command line), or the empty string if not given. + remainder: str + + def __init__( + self, + config: Optional[Config] = None, + remainder: str = "", + ) -> None: + """ + :param config: + `.Config` object to use as the base configuration. + + Defaults to an anonymous/default `.Config` instance. + + :param remainder: + The invoking program's :ref:`parser remainder ` value, + if any was obtained. + """ + config = config if config is not None else Config() + self._set( + _config=config, + command_prefixes=[], + command_cwds=[], + remainder=remainder, + ) + + @property + def config(self) -> Config: + """ + The fully merged `.Config` object appropriate for this context. + + `.Config` settings (see their documentation for details) may be + accessed like dictionary keys (``c.config['foo']``) or object + attributes (``c.config.foo``). + + As a convenience shorthand, the `.Context` object proxies to its + ``config`` attribute in the same way - e.g. ``c['foo']`` or + ``c.foo`` returns the same value as ``c.config['foo']``. + """ + # Allows Context to expose a .config attribute even though DataProxy + # otherwise considers it a config key. + return self._config + + @config.setter + def config(self, value: Config) -> None: + # NOTE: mostly used by client libraries needing to tweak a Context's + # config at execution time; i.e. a Context subclass that bears its own + # unique data may want to be stood up when parameterizing/expanding a + # call list at start of a session, with the final config filled in at + # runtime. + self._set(_config=value) + + def run(self, command: str, **kwargs: Any) -> Result: + """ + Execute a local shell command, honoring config options. + + Specifically, this method instantiates a `.Runner` subclass (according + to the ``runner`` config option; default is `.Local`) and calls its + ``.run`` method with ``command`` and ``kwargs``. + + See `.Runner.run` for details on ``command`` and the available keyword + arguments. + + .. versionadded:: 1.0 + """ + runner = self.config.runners.local(self) + return self._run(runner, command, **kwargs) + + # NOTE: broken out of run() to allow for runner class injection in + # Fabric/etc, which needs to juggle multiple runner class types (local and + # remote). + def _run(self, runner: "Runner", command: str, **kwargs: Any) -> Result: + command = self._prefix_commands(command) + return runner.run(command, **kwargs) + + def sudo(self, command: str, **kwargs: Any) -> Result: + """ + Execute a shell command via ``sudo`` with password auto-response. + + **Basics** + + This method is identical to `run` but adds a handful of + convenient behaviors around invoking the ``sudo`` program. It doesn't + do anything users could not do themselves by wrapping `run`, but the + use case is too common to make users reinvent these wheels themselves. + + .. note:: + If you intend to respond to sudo's password prompt by hand, just + use ``run("sudo command")`` instead! The autoresponding features in + this method will just get in your way. + + Specifically, `sudo`: + + * Places a `.FailingResponder` into the ``watchers`` kwarg (see + :doc:`/concepts/watchers`) which: + + * searches for the configured ``sudo`` password prompt; + * responds with the configured sudo password (``sudo.password`` + from the :doc:`configuration `); + * can tell when that response causes an authentication failure + (e.g. if the system requires a password and one was not + configured), and raises `.AuthFailure` if so. + + * Builds a ``sudo`` command string using the supplied ``command`` + argument, prefixed by various flags (see below); + * Executes that command via a call to `run`, returning the result. + + **Flags used** + + ``sudo`` flags used under the hood include: + + - ``-S`` to allow auto-responding of password via stdin; + - ``-p `` to explicitly state the prompt to use, so we can be + sure our auto-responder knows what to look for; + - ``-u `` if ``user`` is not ``None``, to execute the command as + a user other than ``root``; + - When ``-u`` is present, ``-H`` is also added, to ensure the + subprocess has the requested user's ``$HOME`` set properly. + + **Configuring behavior** + + There are a couple of ways to change how this method behaves: + + - Because it wraps `run`, it honors all `run` config parameters and + keyword arguments, in the same way that `run` does. + + - Thus, invocations such as ``c.sudo('command', echo=True)`` are + possible, and if a config layer (such as a config file or env + var) specifies that e.g. ``run.warn = True``, that too will take + effect under `sudo`. + + - `sudo` has its own set of keyword arguments (see below) and they are + also all controllable via the configuration system, under the + ``sudo.*`` tree. + + - Thus you could, for example, pre-set a sudo user in a config + file; such as an ``invoke.json`` containing ``{"sudo": {"user": + "someuser"}}``. + + :param str password: Runtime override for ``sudo.password``. + :param str user: Runtime override for ``sudo.user``. + + .. versionadded:: 1.0 + """ + runner = self.config.runners.local(self) + return self._sudo(runner, command, **kwargs) + + # NOTE: this is for runner injection; see NOTE above _run(). + def _sudo(self, runner: "Runner", command: str, **kwargs: Any) -> Result: + prompt = self.config.sudo.prompt + password = kwargs.pop("password", self.config.sudo.password) + user = kwargs.pop("user", self.config.sudo.user) + env = kwargs.get("env", {}) + # TODO: allow subclassing for 'get the password' so users who REALLY + # want lazy runtime prompting can have it easily implemented. + # TODO: want to print a "cleaner" echo with just 'sudo '; but + # hard to do as-is, obtaining config data from outside a Runner one + # holds is currently messy (could fix that), if instead we manually + # inspect the config ourselves that duplicates logic. NOTE: once we + # figure that out, there is an existing, would-fail-if-not-skipped test + # for this behavior in test/context.py. + # TODO: once that is done, though: how to handle "full debug" output + # exactly (display of actual, real full sudo command w/ -S and -p), in + # terms of API/config? Impl is easy, just go back to passing echo + # through to 'run'... + user_flags = "" + if user is not None: + user_flags = "-H -u {} ".format(user) + env_flags = "" + if env: + env_flags = "--preserve-env='{}' ".format(",".join(env.keys())) + command = self._prefix_commands(command) + cmd_str = "sudo -S -p '{}' {}{}{}".format( + prompt, env_flags, user_flags, command + ) + watcher = FailingResponder( + pattern=re.escape(prompt), + response="{}\n".format(password), + sentinel="Sorry, try again.\n", + ) + # Ensure we merge any user-specified watchers with our own. + # NOTE: If there are config-driven watchers, we pull those up to the + # kwarg level; that lets us merge cleanly without needing complex + # config-driven "override vs merge" semantics. + # TODO: if/when those semantics are implemented, use them instead. + # NOTE: config value for watchers defaults to an empty list; and we + # want to clone it to avoid actually mutating the config. + watchers = kwargs.pop("watchers", list(self.config.run.watchers)) + watchers.append(watcher) + try: + return runner.run(cmd_str, watchers=watchers, **kwargs) + except Failure as failure: + # Transmute failures driven by our FailingResponder, into auth + # failures - the command never even ran. + # TODO: wants to be a hook here for users that desire "override a + # bad config value for sudo.password" manual input + # NOTE: as noted in #294 comments, we MAY in future want to update + # this so run() is given ability to raise AuthFailure on its own. + # For now that has been judged unnecessary complexity. + if isinstance(failure.reason, ResponseNotAccepted): + # NOTE: not bothering with 'reason' here, it's pointless. + error = AuthFailure(result=failure.result, prompt=prompt) + raise error + # Reraise for any other error so it bubbles up normally. + else: + raise + + # TODO: wonder if it makes sense to move this part of things inside Runner, + # which would grow a `prefixes` and `cwd` init kwargs or similar. The less + # that's stuffed into Context, probably the better. + def _prefix_commands(self, command: str) -> str: + """ + Prefixes ``command`` with all prefixes found in ``command_prefixes``. + + ``command_prefixes`` is a list of strings which is modified by the + `prefix` context manager. + """ + prefixes = list(self.command_prefixes) + current_directory = self.cwd + if current_directory: + prefixes.insert(0, "cd {}".format(current_directory)) + + return " && ".join(prefixes + [command]) + + @contextmanager + def prefix(self, command: str) -> Generator[None, None, None]: + """ + Prefix all nested `run`/`sudo` commands with given command plus ``&&``. + + Most of the time, you'll want to be using this alongside a shell script + which alters shell state, such as ones which export or alter shell + environment variables. + + For example, one of the most common uses of this tool is with the + ``workon`` command from `virtualenvwrapper + `_:: + + with c.prefix('workon myvenv'): + c.run('./manage.py migrate') + + In the above snippet, the actual shell command run would be this:: + + $ workon myvenv && ./manage.py migrate + + This context manager is compatible with `cd`, so if your virtualenv + doesn't ``cd`` in its ``postactivate`` script, you could do the + following:: + + with c.cd('/path/to/app'): + with c.prefix('workon myvenv'): + c.run('./manage.py migrate') + c.run('./manage.py loaddata fixture') + + Which would result in executions like so:: + + $ cd /path/to/app && workon myvenv && ./manage.py migrate + $ cd /path/to/app && workon myvenv && ./manage.py loaddata fixture + + Finally, as alluded to above, `prefix` may be nested if desired, e.g.:: + + with c.prefix('workon myenv'): + c.run('ls') + with c.prefix('source /some/script'): + c.run('touch a_file') + + The result:: + + $ workon myenv && ls + $ workon myenv && source /some/script && touch a_file + + Contrived, but hopefully illustrative. + + .. versionadded:: 1.0 + """ + self.command_prefixes.append(command) + try: + yield + finally: + self.command_prefixes.pop() + + @property + def cwd(self) -> str: + """ + Return the current working directory, accounting for uses of `cd`. + + .. versionadded:: 1.0 + """ + if not self.command_cwds: + # TODO: should this be None? Feels cleaner, though there may be + # benefits to it being an empty string, such as relying on a no-arg + # `cd` typically being shorthand for "go to user's $HOME". + return "" + + # get the index for the subset of paths starting with the last / or ~ + for i, path in reversed(list(enumerate(self.command_cwds))): + if path.startswith("~") or path.startswith("/"): + break + + # TODO: see if there's a stronger "escape this path" function somewhere + # we can reuse. e.g., escaping tildes or slashes in filenames. + paths = [path.replace(" ", r"\ ") for path in self.command_cwds[i:]] + return str(os.path.join(*paths)) + + @contextmanager + def cd(self, path: Union[PathLike, str]) -> Generator[None, None, None]: + """ + Context manager that keeps directory state when executing commands. + + Any calls to `run`, `sudo`, within the wrapped block will implicitly + have a string similar to ``"cd && "`` prefixed in order to give + the sense that there is actually statefulness involved. + + Because use of `cd` affects all such invocations, any code making use + of the `cwd` property will also be affected by use of `cd`. + + Like the actual 'cd' shell builtin, `cd` may be called with relative + paths (keep in mind that your default starting directory is your user's + ``$HOME``) and may be nested as well. + + Below is a "normal" attempt at using the shell 'cd', which doesn't work + since all commands are executed in individual subprocesses -- state is + **not** kept between invocations of `run` or `sudo`:: + + c.run('cd /var/www') + c.run('ls') + + The above snippet will list the contents of the user's ``$HOME`` + instead of ``/var/www``. With `cd`, however, it will work as expected:: + + with c.cd('/var/www'): + c.run('ls') # Turns into "cd /var/www && ls" + + Finally, a demonstration (see inline comments) of nesting:: + + with c.cd('/var/www'): + c.run('ls') # cd /var/www && ls + with c.cd('website1'): + c.run('ls') # cd /var/www/website1 && ls + + .. note:: + Space characters will be escaped automatically to make dealing with + such directory names easier. + + .. versionadded:: 1.0 + .. versionchanged:: 1.5 + Explicitly cast the ``path`` argument (the only argument) to a + string; this allows any object defining ``__str__`` to be handed in + (such as the various ``Path`` objects out there), and not just + string literals. + """ + path = str(path) + self.command_cwds.append(path) + try: + yield + finally: + self.command_cwds.pop() + + +class MockContext(Context): + """ + A `.Context` whose methods' return values can be predetermined. + + Primarily useful for testing Invoke-using codebases. + + .. note:: + This class wraps its ``run``, etc methods in `unittest.mock.Mock` + objects. This allows you to easily assert that the methods (still + returning the values you prepare them with) were actually called. + + .. note:: + Methods not given `Results <.Result>` to yield will raise + ``NotImplementedError`` if called (since the alternative is to call the + real underlying method - typically undesirable when mocking.) + + .. versionadded:: 1.0 + .. versionchanged:: 1.5 + Added ``Mock`` wrapping of ``run`` and ``sudo``. + """ + + def __init__(self, config: Optional[Config] = None, **kwargs: Any) -> None: + """ + Create a ``Context``-like object whose methods yield `.Result` objects. + + :param config: + A Configuration object to use. Identical in behavior to `.Context`. + + :param run: + A data structure indicating what `.Result` objects to return from + calls to the instantiated object's `~.Context.run` method (instead + of actually executing the requested shell command). + + Specifically, this kwarg accepts: + + - A single `.Result` object. + - A boolean; if True, yields a `.Result` whose ``exited`` is ``0``, + and if False, ``1``. + - An iterable of the above values, which will be returned on each + subsequent call to ``.run`` (the first item on the first call, + the second on the second call, etc). + - A dict mapping command strings or compiled regexen to the above + values (including an iterable), allowing specific + call-and-response semantics instead of assuming a call order. + + :param sudo: + Identical to ``run``, but whose values are yielded from calls to + `~.Context.sudo`. + + :param bool repeat: + A flag determining whether results yielded by this class' methods + repeat or are consumed. + + For example, when a single result is indicated, it will normally + only be returned once, causing ``NotImplementedError`` afterwards. + But when ``repeat=True`` is given, that result is returned on + every call, forever. + + Similarly, iterable results are normally exhausted once, but when + this setting is enabled, they are wrapped in `itertools.cycle`. + + Default: ``True``. + + :raises: + ``TypeError``, if the values given to ``run`` or other kwargs + aren't of the expected types. + + .. versionchanged:: 1.5 + Added support for boolean and string result values. + .. versionchanged:: 1.5 + Added support for regex dict keys. + .. versionchanged:: 1.5 + Added the ``repeat`` keyword argument. + .. versionchanged:: 2.0 + Changed ``repeat`` default value from ``False`` to ``True``. + """ + # Set up like any other Context would, with the config + super().__init__(config) + # Pull out behavioral kwargs + self._set("__repeat", kwargs.pop("repeat", True)) + # The rest must be things like run/sudo - mock Context method info + for method, results in kwargs.items(): + # For each possible value type, normalize to iterable of Result + # objects (possibly repeating). + singletons = (Result, bool, str) + if isinstance(results, dict): + for key, value in results.items(): + results[key] = self._normalize(value) + elif isinstance(results, singletons) or hasattr( + results, "__iter__" + ): + results = self._normalize(results) + # Unknown input value: cry + else: + err = "Not sure how to yield results from a {!r}" + raise TypeError(err.format(type(results))) + # Save results for use by the method + self._set("__{}".format(method), results) + # Wrap the method in a Mock + self._set(method, Mock(wraps=getattr(self, method))) + + def _normalize(self, value: Any) -> Iterator[Any]: + # First turn everything into an iterable + if not hasattr(value, "__iter__") or isinstance(value, str): + value = [value] + # Then turn everything within into a Result + results = [] + for obj in value: + if isinstance(obj, bool): + obj = Result(exited=0 if obj else 1) + elif isinstance(obj, str): + obj = Result(obj) + results.append(obj) + # Finally, turn that iterable into an iteratOR, depending on repeat + return cycle(results) if getattr(self, "__repeat") else iter(results) + + # TODO: _maybe_ make this more metaprogrammy/flexible (using __call__ etc)? + # Pretty worried it'd cause more hard-to-debug issues than it's presently + # worth. Maybe in situations where Context grows a _lot_ of methods (e.g. + # in Fabric 2; though Fabric could do its own sub-subclass in that case...) + + def _yield_result(self, attname: str, command: str) -> Result: + try: + obj = getattr(self, attname) + # Dicts need to try direct lookup or regex matching + if isinstance(obj, dict): + try: + obj = obj[command] + except KeyError: + # TODO: could optimize by skipping this if not any regex + # objects in keys()? + for key, value in obj.items(): + if hasattr(key, "match") and key.match(command): + obj = value + break + else: + # Nope, nothing did match. + raise KeyError + # Here, the value was either never a dict or has been extracted + # from one, so we can assume it's an iterable of Result objects due + # to work done by __init__. + result: Result = next(obj) + # Populate Result's command string with what matched unless + # explicitly given + if not result.command: + result.command = command + return result + except (AttributeError, IndexError, KeyError, StopIteration): + # raise_from(NotImplementedError(command), None) + raise NotImplementedError(command) + + def run(self, command: str, *args: Any, **kwargs: Any) -> Result: + # TODO: perform more convenience stuff associating args/kwargs with the + # result? E.g. filling in .command, etc? Possibly useful for debugging + # if one hits unexpected-order problems with what they passed in to + # __init__. + return self._yield_result("__run", command) + + def sudo(self, command: str, *args: Any, **kwargs: Any) -> Result: + # TODO: this completely nukes the top-level behavior of sudo(), which + # could be good or bad, depending. Most of the time I think it's good. + # No need to supply dummy password config, etc. + # TODO: see the TODO from run() re: injecting arg/kwarg values + return self._yield_result("__sudo", command) + + def set_result_for( + self, attname: str, command: str, result: Result + ) -> None: + """ + Modify the stored mock results for given ``attname`` (e.g. ``run``). + + This is similar to how one instantiates `MockContext` with a ``run`` or + ``sudo`` dict kwarg. For example, this:: + + mc = MockContext(run={'mycommand': Result("mystdout")}) + assert mc.run('mycommand').stdout == "mystdout" + + is functionally equivalent to this:: + + mc = MockContext() + mc.set_result_for('run', 'mycommand', Result("mystdout")) + assert mc.run('mycommand').stdout == "mystdout" + + `set_result_for` is mostly useful for modifying an already-instantiated + `MockContext`, such as one created by test setup or helper methods. + + .. versionadded:: 1.0 + """ + attname = "__{}".format(attname) + heck = TypeError( + "Can't update results for non-dict or nonexistent mock results!" + ) + # Get value & complain if it's not a dict. + # TODO: should we allow this to set non-dict values too? Seems vaguely + # pointless, at that point, just make a new MockContext eh? + try: + value = getattr(self, attname) + except AttributeError: + raise heck + if not isinstance(value, dict): + raise heck + # OK, we're good to modify, so do so. + value[command] = self._normalize(result) diff --git a/.venv/lib/python3.9/site-packages/invoke/env.py b/.venv/lib/python3.9/site-packages/invoke/env.py new file mode 100644 index 0000000..2c7aaa6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/env.py @@ -0,0 +1,123 @@ +""" +Environment variable configuration loading class. + +Using a class here doesn't really model anything but makes state passing (in a +situation requiring it) more convenient. + +This module is currently considered private/an implementation detail and should +not be included in the Sphinx API documentation. +""" + +import os +from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Mapping, Sequence + +from .exceptions import UncastableEnvVar, AmbiguousEnvVar +from .util import debug + +if TYPE_CHECKING: + from .config import Config + + +class Environment: + def __init__(self, config: "Config", prefix: str) -> None: + self._config = config + self._prefix = prefix + self.data: Dict[str, Any] = {} # Accumulator + + def load(self) -> Dict[str, Any]: + """ + Return a nested dict containing values from `os.environ`. + + Specifically, values whose keys map to already-known configuration + settings, allowing us to perform basic typecasting. + + See :ref:`env-vars` for details. + """ + # Obtain allowed env var -> existing value map + env_vars = self._crawl(key_path=[], env_vars={}) + m = "Scanning for env vars according to prefix: {!r}, mapping: {!r}" + debug(m.format(self._prefix, env_vars)) + # Check for actual env var (honoring prefix) and try to set + for env_var, key_path in env_vars.items(): + real_var = (self._prefix or "") + env_var + if real_var in os.environ: + self._path_set(key_path, os.environ[real_var]) + debug("Obtained env var config: {!r}".format(self.data)) + return self.data + + def _crawl( + self, key_path: List[str], env_vars: Mapping[str, Sequence[str]] + ) -> Dict[str, Any]: + """ + Examine config at location ``key_path`` & return potential env vars. + + Uses ``env_vars`` dict to determine if a conflict exists, and raises an + exception if so. This dict is of the following form:: + + { + 'EXPECTED_ENV_VAR_HERE': ['actual', 'nested', 'key_path'], + ... + } + + Returns another dictionary of new keypairs as per above. + """ + new_vars: Dict[str, List[str]] = {} + obj = self._path_get(key_path) + # Sub-dict -> recurse + if ( + hasattr(obj, "keys") + and callable(obj.keys) + and hasattr(obj, "__getitem__") + ): + for key in obj.keys(): + merged_vars = dict(env_vars, **new_vars) + merged_path = key_path + [key] + crawled = self._crawl(merged_path, merged_vars) + # Handle conflicts + for key in crawled: + if key in new_vars: + err = "Found >1 source for {}" + raise AmbiguousEnvVar(err.format(key)) + # Merge and continue + new_vars.update(crawled) + # Other -> is leaf, no recursion + else: + new_vars[self._to_env_var(key_path)] = key_path + return new_vars + + def _to_env_var(self, key_path: Iterable[str]) -> str: + return "_".join(key_path).upper() + + def _path_get(self, key_path: Iterable[str]) -> "Config": + # Gets are from self._config because that's what determines valid env + # vars and/or values for typecasting. + obj = self._config + for key in key_path: + obj = obj[key] + return obj + + def _path_set(self, key_path: Sequence[str], value: str) -> None: + # Sets are to self.data since that's what we are presenting to the + # outer config object and debugging. + obj = self.data + for key in key_path[:-1]: + if key not in obj: + obj[key] = {} + obj = obj[key] + old = self._path_get(key_path) + new = self._cast(old, value) + obj[key_path[-1]] = new + + def _cast(self, old: Any, new: Any) -> Any: + if isinstance(old, bool): + return new not in ("0", "") + elif isinstance(old, str): + return new + elif old is None: + return new + elif isinstance(old, (list, tuple)): + err = "Can't adapt an environment string into a {}!" + err = err.format(type(old)) + raise UncastableEnvVar(err) + else: + return old.__class__(new) diff --git a/.venv/lib/python3.9/site-packages/invoke/exceptions.py b/.venv/lib/python3.9/site-packages/invoke/exceptions.py new file mode 100644 index 0000000..19ca563 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/exceptions.py @@ -0,0 +1,425 @@ +""" +Custom exception classes. + +These vary in use case from "we needed a specific data structure layout in +exceptions used for message-passing" to simply "we needed to express an error +condition in a way easily told apart from other, truly unexpected errors". +""" + +from pprint import pformat +from traceback import format_exception +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple + +if TYPE_CHECKING: + from .parser import ParserContext + from .runners import Result + from .util import ExceptionWrapper + + +class CollectionNotFound(Exception): + def __init__(self, name: str, start: str) -> None: + self.name = name + self.start = start + + +class Failure(Exception): + """ + Exception subclass representing failure of a command execution. + + "Failure" may mean the command executed and the shell indicated an unusual + result (usually, a non-zero exit code), or it may mean something else, like + a ``sudo`` command which was aborted when the supplied password failed + authentication. + + Two attributes allow introspection to determine the nature of the problem: + + * ``result``: a `.Result` instance with info about the command being + executed and, if it ran to completion, how it exited. + * ``reason``: a wrapped exception instance if applicable (e.g. a + `.StreamWatcher` raised `WatcherError`) or ``None`` otherwise, in which + case, it's probably a `Failure` subclass indicating its own specific + nature, such as `UnexpectedExit` or `CommandTimedOut`. + + This class is only rarely raised by itself; most of the time `.Runner.run` + (or a wrapper of same, such as `.Context.sudo`) will raise a specific + subclass like `UnexpectedExit` or `AuthFailure`. + + .. versionadded:: 1.0 + """ + + def __init__( + self, result: "Result", reason: Optional["WatcherError"] = None + ) -> None: + self.result = result + self.reason = reason + + def streams_for_display(self) -> Tuple[str, str]: + """ + Return stdout/err streams as necessary for error display. + + Subject to the following rules: + + - If a given stream was *not* hidden during execution, a placeholder is + used instead, to avoid printing it twice. + - Only the last 10 lines of stream text is included. + - PTY-driven execution will lack stderr, and a specific message to this + effect is returned instead of a stderr dump. + + :returns: Two-tuple of stdout, stderr strings. + + .. versionadded:: 1.3 + """ + already_printed = " already printed" + if "stdout" not in self.result.hide: + stdout = already_printed + else: + stdout = self.result.tail("stdout") + if self.result.pty: + stderr = " n/a (PTYs have no stderr)" + else: + if "stderr" not in self.result.hide: + stderr = already_printed + else: + stderr = self.result.tail("stderr") + return stdout, stderr + + def __repr__(self) -> str: + return self._repr() + + def _repr(self, **kwargs: Any) -> str: + """ + Return ``__repr__``-like value from inner result + any kwargs. + """ + # TODO: expand? + # TODO: truncate command? + template = "<{}: cmd={!r}{}>" + rest = "" + if kwargs: + rest = " " + " ".join( + "{}={}".format(key, value) for key, value in kwargs.items() + ) + return template.format( + self.__class__.__name__, self.result.command, rest + ) + + +class UnexpectedExit(Failure): + """ + A shell command ran to completion but exited with an unexpected exit code. + + Its string representation displays the following: + + - Command executed; + - Exit code; + - The last 10 lines of stdout, if it was hidden; + - The last 10 lines of stderr, if it was hidden and non-empty (e.g. + pty=False; when pty=True, stderr never happens.) + + .. versionadded:: 1.0 + """ + + def __str__(self) -> str: + stdout, stderr = self.streams_for_display() + command = self.result.command + exited = self.result.exited + template = """Encountered a bad command exit code! + +Command: {!r} + +Exit code: {} + +Stdout:{} + +Stderr:{} + +""" + return template.format(command, exited, stdout, stderr) + + def _repr(self, **kwargs: Any) -> str: + kwargs.setdefault("exited", self.result.exited) + return super()._repr(**kwargs) + + +class CommandTimedOut(Failure): + """ + Raised when a subprocess did not exit within a desired timeframe. + """ + + def __init__(self, result: "Result", timeout: int) -> None: + super().__init__(result) + self.timeout = timeout + + def __repr__(self) -> str: + return self._repr(timeout=self.timeout) + + def __str__(self) -> str: + stdout, stderr = self.streams_for_display() + command = self.result.command + template = """Command did not complete within {} seconds! + +Command: {!r} + +Stdout:{} + +Stderr:{} + +""" + return template.format(self.timeout, command, stdout, stderr) + + +class AuthFailure(Failure): + """ + An authentication failure, e.g. due to an incorrect ``sudo`` password. + + .. note:: + `.Result` objects attached to these exceptions typically lack exit code + information, since the command was never fully executed - the exception + was raised instead. + + .. versionadded:: 1.0 + """ + + def __init__(self, result: "Result", prompt: str) -> None: + self.result = result + self.prompt = prompt + + def __str__(self) -> str: + err = "The password submitted to prompt {!r} was rejected." + return err.format(self.prompt) + + +class ParseError(Exception): + """ + An error arising from the parsing of command-line flags/arguments. + + Ambiguous input, invalid task names, invalid flags, etc. + + .. versionadded:: 1.0 + """ + + def __init__( + self, msg: str, context: Optional["ParserContext"] = None + ) -> None: + super().__init__(msg) + self.context = context + + +class Exit(Exception): + """ + Simple custom stand-in for SystemExit. + + Replaces scattered sys.exit calls, improves testability, allows one to + catch an exit request without intercepting real SystemExits (typically an + unfriendly thing to do, as most users calling `sys.exit` rather expect it + to truly exit.) + + Defaults to a non-printing, exit-0 friendly termination behavior if the + exception is uncaught. + + If ``code`` (an int) given, that code is used to exit. + + If ``message`` (a string) given, it is printed to standard error, and the + program exits with code ``1`` by default (unless overridden by also giving + ``code`` explicitly.) + + .. versionadded:: 1.0 + """ + + def __init__( + self, message: Optional[str] = None, code: Optional[int] = None + ) -> None: + self.message = message + self._code = code + + @property + def code(self) -> int: + if self._code is not None: + return self._code + return 1 if self.message else 0 + + +class PlatformError(Exception): + """ + Raised when an illegal operation occurs for the current platform. + + E.g. Windows users trying to use functionality requiring the ``pty`` + module. + + Typically used to present a clearer error message to the user. + + .. versionadded:: 1.0 + """ + + pass + + +class AmbiguousEnvVar(Exception): + """ + Raised when loading env var config keys has an ambiguous target. + + .. versionadded:: 1.0 + """ + + pass + + +class UncastableEnvVar(Exception): + """ + Raised on attempted env var loads whose default values are too rich. + + E.g. trying to stuff ``MY_VAR="foo"`` into ``{'my_var': ['uh', 'oh']}`` + doesn't make any sense until/if we implement some sort of transform option. + + .. versionadded:: 1.0 + """ + + pass + + +class UnknownFileType(Exception): + """ + A config file of an unknown type was specified and cannot be loaded. + + .. versionadded:: 1.0 + """ + + pass + + +class UnpicklableConfigMember(Exception): + """ + A config file contained module objects, which can't be pickled/copied. + + We raise this more easily catchable exception instead of letting the + (unclearly phrased) TypeError bubble out of the pickle module. (However, to + avoid our own fragile catching of that error, we head it off by explicitly + testing for module members.) + + .. versionadded:: 1.0.2 + """ + + pass + + +def _printable_kwargs(kwargs: Any) -> Dict[str, Any]: + """ + Return print-friendly version of a thread-related ``kwargs`` dict. + + Extra care is taken with ``args`` members which are very long iterables - + those need truncating to be useful. + """ + printable = {} + for key, value in kwargs.items(): + item = value + if key == "args": + item = [] + for arg in value: + new_arg = arg + if hasattr(arg, "__len__") and len(arg) > 10: + msg = "<... remainder truncated during error display ...>" + new_arg = arg[:10] + [msg] + item.append(new_arg) + printable[key] = item + return printable + + +class ThreadException(Exception): + """ + One or more exceptions were raised within background threads. + + The real underlying exceptions are stored in the `exceptions` attribute; + see its documentation for data structure details. + + .. note:: + Threads which did not encounter an exception, do not contribute to this + exception object and thus are not present inside `exceptions`. + + .. versionadded:: 1.0 + """ + + #: A tuple of `ExceptionWrappers ` containing + #: the initial thread constructor kwargs (because `threading.Thread` + #: subclasses should always be called with kwargs) and the caught exception + #: for that thread as seen by `sys.exc_info` (so: type, value, traceback). + #: + #: .. note:: + #: The ordering of this attribute is not well-defined. + #: + #: .. note:: + #: Thread kwargs which appear to be very long (e.g. IO + #: buffers) will be truncated when printed, to avoid huge + #: unreadable error display. + exceptions: Tuple["ExceptionWrapper", ...] = tuple() + + def __init__(self, exceptions: List["ExceptionWrapper"]) -> None: + self.exceptions = tuple(exceptions) + + def __str__(self) -> str: + details = [] + for x in self.exceptions: + # Build useful display + detail = "Thread args: {}\n\n{}" + details.append( + detail.format( + pformat(_printable_kwargs(x.kwargs)), + "\n".join(format_exception(x.type, x.value, x.traceback)), + ) + ) + args = ( + len(self.exceptions), + ", ".join(x.type.__name__ for x in self.exceptions), + "\n\n".join(details), + ) + return """ +Saw {} exceptions within threads ({}): + + +{} +""".format( + *args + ) + + +class WatcherError(Exception): + """ + Generic parent exception class for `.StreamWatcher`-related errors. + + Typically, one of these exceptions indicates a `.StreamWatcher` noticed + something anomalous in an output stream, such as an authentication response + failure. + + `.Runner` catches these and attaches them to `.Failure` exceptions so they + can be referenced by intermediate code and/or act as extra info for end + users. + + .. versionadded:: 1.0 + """ + + pass + + +class ResponseNotAccepted(WatcherError): + """ + A responder/watcher class noticed a 'bad' response to its submission. + + Mostly used by `.FailingResponder` and subclasses, e.g. "oh dear I + autosubmitted a sudo password and it was incorrect." + + .. versionadded:: 1.0 + """ + + pass + + +class SubprocessPipeError(Exception): + """ + Some problem was encountered handling subprocess pipes (stdout/err/in). + + Typically only for corner cases; most of the time, errors in this area are + raised by the interpreter or the operating system, and end up wrapped in a + `.ThreadException`. + + .. versionadded:: 1.3 + """ + + pass diff --git a/.venv/lib/python3.9/site-packages/invoke/executor.py b/.venv/lib/python3.9/site-packages/invoke/executor.py new file mode 100644 index 0000000..1b3acbc --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/executor.py @@ -0,0 +1,232 @@ +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union + +from .config import Config +from .parser import ParserContext, ParseResult +from .tasks import Call, Task +from .util import debug + +if TYPE_CHECKING: + from .collection import Collection + from .runners import Result + + +class Executor: + """ + An execution strategy for Task objects. + + Subclasses may override various extension points to change, add or remove + behavior. + + .. versionadded:: 1.0 + """ + + def __init__( + self, + collection: "Collection", + config: Optional["Config"] = None, + core: Optional["ParseResult"] = None, + ) -> None: + """ + Initialize executor with handles to necessary data structures. + + :param collection: + A `.Collection` used to look up requested tasks (and their default + config data, if any) by name during execution. + + :param config: + An optional `.Config` holding configuration state. Defaults to an + empty `.Config` if not given. + + :param core: + An optional `.ParseResult` holding parsed core program arguments. + Defaults to ``None``. + + .. versionchanged:: 3.0 + The ``core`` attribute now defaults to an 'empty' `.ParseResult` if + ``None`` was given. + """ + self.collection = collection + self.config = config if config is not None else Config() + self.core = core if core is not None else ParseResult() + + def execute( + self, *tasks: Union[str, Tuple[str, Dict[str, Any]], ParserContext] + ) -> Dict["Task", "Result"]: + """ + Execute one or more ``tasks`` in sequence. + + :param tasks: + An all-purpose iterable of "tasks to execute", each member of which + may take one of the following forms: + + **A string** naming a task from the Executor's `.Collection`. This + name may contain dotted syntax appropriate for calling namespaced + tasks, e.g. ``subcollection.taskname``. Such tasks are executed + without arguments. + + **A two-tuple** whose first element is a task name string (as + above) and whose second element is a dict suitable for use as + ``**kwargs`` when calling the named task. E.g.:: + + [ + ('task1', {}), + ('task2', {'arg1': 'val1'}), + ... + ] + + is equivalent, roughly, to:: + + task1() + task2(arg1='val1') + + **A `.ParserContext`** instance, whose ``.name`` attribute is used + as the task name and whose ``.as_kwargs`` attribute is used as the + task kwargs (again following the above specifications). + + .. note:: + When called without any arguments at all (i.e. when ``*tasks`` + is empty), the default task from ``self.collection`` is used + instead, if defined. + + :returns: + A dict mapping task objects to their return values. + + This dict may include pre- and post-tasks if any were executed. For + example, in a collection with a ``build`` task depending on another + task named ``setup``, executing ``build`` will result in a dict + with two keys, one for ``build`` and one for ``setup``. + + .. versionadded:: 1.0 + """ + # Normalize input + debug("Examining top level tasks {!r}".format([x for x in tasks])) + calls = self.normalize(tasks) + debug("Tasks (now Calls) with kwargs: {!r}".format(calls)) + # Obtain copy of directly-given tasks since they should sometimes + # behave differently + direct = list(calls) + # Expand pre/post tasks + # TODO: may make sense to bundle expansion & deduping now eh? + expanded = self.expand_calls(calls) + # Get some good value for dedupe option, even if config doesn't have + # the tree we expect. (This is a concession to testing.) + try: + dedupe = self.config.tasks.dedupe + except AttributeError: + dedupe = True + # Dedupe across entire run now that we know about all calls in order + calls = self.dedupe(expanded) if dedupe else expanded + # Execute + results = {} + # TODO: maybe clone initial config here? Probably not necessary, + # especially given Executor is not designed to execute() >1 time at the + # moment... + for call in calls: + autoprint = call in direct and call.autoprint + debug("Executing {!r}".format(call)) + # Hand in reference to our config, which will preserve user + # modifications across the lifetime of the session. + config = self.config + # But make sure we reset its task-sensitive levels each time + # (collection & shell env) + # TODO: load_collection needs to be skipped if task is anonymous + # (Fabric 2 or other subclassing libs only) + collection_config = self.collection.configuration(call.called_as) + config.load_collection(collection_config) + config.load_shell_env() + debug("Finished loading collection & shell env configs") + # Get final context from the Call (which will know how to generate + # an appropriate one; e.g. subclasses might use extra data from + # being parameterized), handing in this config for use there. + context = call.make_context(config, core_parse_result=self.core) + args = (context, *call.args) + result = call.task(*args, **call.kwargs) + if autoprint: + print(result) + # TODO: handle the non-dedupe case / the same-task-different-args + # case, wherein one task obj maps to >1 result. + results[call.task] = result + return results + + def normalize( + self, + tasks: Tuple[ + Union[str, Tuple[str, Dict[str, Any]], ParserContext], ... + ], + ) -> List["Call"]: + """ + Transform arbitrary task list w/ various types, into `.Call` objects. + + See docstring for `~.Executor.execute` for details. + + .. versionadded:: 1.0 + """ + calls = [] + for task in tasks: + name: Optional[str] + if isinstance(task, str): + name = task + kwargs = {} + elif isinstance(task, ParserContext): + name = task.name + kwargs = task.as_kwargs + else: + name, kwargs = task + c = Call(self.collection[name], kwargs=kwargs, called_as=name) + calls.append(c) + if not tasks and self.collection.default is not None: + calls = [Call(self.collection[self.collection.default])] + return calls + + def dedupe(self, calls: List["Call"]) -> List["Call"]: + """ + Deduplicate a list of `tasks <.Call>`. + + :param calls: An iterable of `.Call` objects representing tasks. + + :returns: A list of `.Call` objects. + + .. versionadded:: 1.0 + """ + deduped = [] + debug("Deduplicating tasks...") + for call in calls: + if call not in deduped: + debug("{!r}: no duplicates found, ok".format(call)) + deduped.append(call) + else: + debug("{!r}: found in list already, skipping".format(call)) + return deduped + + def expand_calls(self, calls: List["Call"]) -> List["Call"]: + """ + Expand a list of `.Call` objects into a near-final list of same. + + The default implementation of this method simply adds a task's + pre/post-task list before/after the task itself, as necessary. + + Subclasses may wish to do other things in addition (or instead of) the + above, such as multiplying the `calls <.Call>` by argument vectors or + similar. + + .. versionadded:: 1.0 + """ + ret = [] + for call in calls: + # Normalize to Call (this method is sometimes called with pre/post + # task lists, which may contain 'raw' Task objects) + if isinstance(call, Task): + call = Call(call) + debug("Expanding task-call {!r}".format(call)) + # TODO: this is where we _used_ to call Executor.config_for(call, + # config)... + # TODO: now we may need to preserve more info like where the call + # came from, etc, but I feel like that shit should go _on the call + # itself_ right??? + # TODO: we _probably_ don't even want the config in here anymore, + # we want this to _just_ be about the recursion across pre/post + # tasks or parameterization...? + ret.extend(self.expand_calls(call.pre)) + ret.append(call) + ret.extend(self.expand_calls(call.post)) + return ret diff --git a/.venv/lib/python3.9/site-packages/invoke/loader.py b/.venv/lib/python3.9/site-packages/invoke/loader.py new file mode 100644 index 0000000..6c923a3 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/loader.py @@ -0,0 +1,154 @@ +import os +import sys +from importlib.machinery import ModuleSpec +from importlib.util import module_from_spec, spec_from_file_location +from pathlib import Path +from types import ModuleType +from typing import Any, Optional, Tuple + +from . import Config +from .exceptions import CollectionNotFound +from .util import debug + + +class Loader: + """ + Abstract class defining how to find/import a session's base `.Collection`. + + .. versionadded:: 1.0 + """ + + def __init__(self, config: Optional["Config"] = None) -> None: + """ + Set up a new loader with some `.Config`. + + :param config: + An explicit `.Config` to use; it is referenced for loading-related + config options. Defaults to an anonymous ``Config()`` if none is + given. + """ + if config is None: + config = Config() + self.config = config + + def find(self, name: str) -> Optional[ModuleSpec]: + """ + Implementation-specific finder method seeking collection ``name``. + + Must return a ModuleSpec valid for use by `importlib`, which is + typically a name string followed by the contents of the 3-tuple + returned by `importlib.util.module_from_spec` (``name``, ``loader``, + ``origin``.) + + For a sample implementation, see `.FilesystemLoader`. + + .. versionadded:: 1.0 + """ + raise NotImplementedError + + def load(self, name: Optional[str] = None) -> Tuple[ModuleType, str]: + """ + Load and return collection module identified by ``name``. + + This method requires a working implementation of `.find` in order to + function. + + In addition to importing the named module, it will add the module's + parent directory to the front of `sys.path` to provide normal Python + import behavior (i.e. so the loaded module may load local-to-it modules + or packages.) + + :returns: + Two-tuple of ``(module, directory)`` where ``module`` is the + collection-containing Python module object, and ``directory`` is + the string path to the directory the module was found in. + + .. versionadded:: 1.0 + """ + if name is None: + name = self.config.tasks.collection_name + spec = self.find(name) + if spec and spec.loader and spec.origin: + # Typically either tasks.py or tasks/__init__.py + source_file = Path(spec.origin) + # Will be 'the dir tasks.py is in', or 'tasks/', in both cases this + # is what wants to be in sys.path for "from . import sibling" + enclosing_dir = source_file.parent + # Will be "the directory above the spot that 'import tasks' found", + # namely the parent of "your task tree", i.e. "where project level + # config files are looked for". So, same as enclosing_dir for + # tasks.py, but one more level up for tasks/__init__.py... + module_parent = enclosing_dir + if spec.parent: # it's a package, so we have to go up again + module_parent = module_parent.parent + # Get the enclosing dir on the path + enclosing_str = str(enclosing_dir) + if enclosing_str not in sys.path: + sys.path.insert(0, enclosing_str) + # Actual import + module = module_from_spec(spec) + sys.modules[spec.name] = module # so 'from . import xxx' works + spec.loader.exec_module(module) + # Return the module and the folder it was found in + return module, str(module_parent) + msg = "ImportError loading {!r}, raising ImportError" + debug(msg.format(name)) + raise ImportError + + +class FilesystemLoader(Loader): + """ + Loads Python files from the filesystem (e.g. ``tasks.py``.) + + Searches recursively towards filesystem root from a given start point. + + .. versionadded:: 1.0 + """ + + # TODO: could introduce config obj here for transmission to Collection + # TODO: otherwise Loader has to know about specific bits to transmit, such + # as auto-dashes, and has to grow one of those for every bit Collection + # ever needs to know + def __init__(self, start: Optional[str] = None, **kwargs: Any) -> None: + super().__init__(**kwargs) + if start is None: + start = self.config.tasks.search_root + self._start = start + + @property + def start(self) -> str: + # Lazily determine default CWD if configured value is falsey + return self._start or os.getcwd() + + def find(self, name: str) -> Optional[ModuleSpec]: + debug("FilesystemLoader find starting at {!r}".format(self.start)) + spec = None + module = "{}.py".format(name) + paths = self.start.split(os.sep) + try: + # walk the path upwards to check for dynamic import + for x in reversed(range(len(paths) + 1)): + path = os.sep.join(paths[0:x]) + if module in os.listdir(path): + spec = spec_from_file_location( + name, os.path.join(path, module) + ) + break + elif name in os.listdir(path) and os.path.exists( + os.path.join(path, name, "__init__.py") + ): + basepath = os.path.join(path, name) + spec = spec_from_file_location( + name, + os.path.join(basepath, "__init__.py"), + submodule_search_locations=[basepath], + ) + break + if spec: + debug("Found module: {!r}".format(spec)) + return spec + except (FileNotFoundError, ModuleNotFoundError): + msg = "ImportError loading {!r}, raising CollectionNotFound" + debug(msg.format(name)) + raise CollectionNotFound(name=name, start=self.start) + return None diff --git a/.venv/lib/python3.9/site-packages/invoke/main.py b/.venv/lib/python3.9/site-packages/invoke/main.py new file mode 100644 index 0000000..3576b5a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/main.py @@ -0,0 +1,14 @@ +""" +Invoke's own 'binary' entrypoint. + +Dogfoods the `program` module. +""" + +from . import __version__, Program + +program = Program( + name="Invoke", + binary="inv[oke]", + binary_names=["invoke", "inv"], + version=__version__, +) diff --git a/.venv/lib/python3.9/site-packages/invoke/parser/__init__.py b/.venv/lib/python3.9/site-packages/invoke/parser/__init__.py new file mode 100644 index 0000000..02aa026 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/parser/__init__.py @@ -0,0 +1,5 @@ +# flake8: noqa +from .parser import * +from .context import ParserContext +from .context import ParserContext as Context, to_flag, translate_underscores +from .argument import Argument diff --git a/.venv/lib/python3.9/site-packages/invoke/parser/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/parser/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15fc208930a80acd7e9e442fae20e6e18ed3f171 GIT binary patch literal 390 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 O3c5~EWRmIG^8Ww{KbH6a literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/parser/__pycache__/context.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/parser/__pycache__/context.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f25830b1d44738d5ac6695a63ae4bfb17941b135 GIT binary patch literal 8622 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 EUr$zxegFUf literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/parser/__pycache__/parser.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/parser/__pycache__/parser.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b5f50081e5513192d89d7cd806ababcd7aab0c92 GIT binary patch literal 11984 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]``. Giving both ``name`` and + ``names`` is invalid. + :param names: + List of valid identifiers for this argument. For example, a "help" + argument may be defined with a name list of ``['-h', '--help']``. + :param kind: + Type factory & parser hint. E.g. ``int`` will turn the default text + value parsed, into a Python integer; and ``bool`` will tell the + parser not to expect an actual value but to treat the argument as a + toggle/flag. + :param default: + Default value made available to the parser if no value is given on the + command line. + :param help: + Help text, intended for use with ``--help``. + :param positional: + Whether or not this argument's value may be given positionally. When + ``False`` (default) arguments must be explicitly named. + :param optional: + Whether or not this (non-``bool``) argument requires a value. + :param incrementable: + Whether or not this (``int``) argument is to be incremented instead of + overwritten/assigned to. + :param attr_name: + A Python identifier/attribute friendly name, typically filled in with + the underscored version when ``name``/``names`` contain dashes. + + .. versionadded:: 1.0 + """ + + def __init__( + self, + name: Optional[str] = None, + names: Iterable[str] = (), + kind: Any = str, + default: Optional[Any] = None, + help: Optional[str] = None, + positional: bool = False, + optional: bool = False, + incrementable: bool = False, + attr_name: Optional[str] = None, + ) -> None: + if name and names: + raise TypeError( + "Cannot give both 'name' and 'names' arguments! Pick one." + ) + if not (name or names): + raise TypeError("An Argument must have at least one name.") + if names: + self.names = tuple(names) + elif name and not names: + self.names = (name,) + self.kind = kind + initial_value: Optional[Any] = None + # Special case: list-type args start out as empty list, not None. + if kind is list: + initial_value = [] + # Another: incrementable args start out as their default value. + if incrementable: + initial_value = default + self.raw_value = self._value = initial_value + self.default = default + self.help = help + self.positional = positional + self.optional = optional + self.incrementable = incrementable + self.attr_name = attr_name + + def __repr__(self) -> str: + nicks = "" + if self.nicknames: + nicks = " ({})".format(", ".join(self.nicknames)) + flags = "" + if self.positional or self.optional: + flags = " " + if self.positional: + flags += "*" + if self.optional: + flags += "?" + # TODO: store this default value somewhere other than signature of + # Argument.__init__? + kind = "" + if self.kind != str: + kind = " [{}]".format(self.kind.__name__) + return "<{}: {}{}{}{}>".format( + self.__class__.__name__, self.name, nicks, kind, flags + ) + + @property + def name(self) -> Optional[str]: + """ + The canonical attribute-friendly name for this argument. + + Will be ``attr_name`` (if given to constructor) or the first name in + ``names`` otherwise. + + .. versionadded:: 1.0 + """ + return self.attr_name or self.names[0] + + @property + def nicknames(self) -> Tuple[str, ...]: + return self.names[1:] + + @property + def takes_value(self) -> bool: + if self.kind is bool: + return False + if self.incrementable: + return False + return True + + @property + def value(self) -> Any: + # TODO: should probably be optional instead + return self._value if self._value is not None else self.default + + @value.setter + def value(self, arg: str) -> None: + self.set_value(arg, cast=True) + + def set_value(self, value: Any, cast: bool = True) -> None: + """ + Actual explicit value-setting API call. + + Sets ``self.raw_value`` to ``value`` directly. + + Sets ``self.value`` to ``self.kind(value)``, unless: + + - ``cast=False``, in which case the raw value is also used. + - ``self.kind==list``, in which case the value is appended to + ``self.value`` instead of cast & overwritten. + - ``self.incrementable==True``, in which case the value is ignored and + the current (assumed int) value is simply incremented. + + .. versionadded:: 1.0 + """ + self.raw_value = value + # Default to do-nothing/identity function + func = lambda x: x + # If cast, set to self.kind, which should be str/int/etc + if cast: + func = self.kind + # If self.kind is a list, append instead of using cast func. + if self.kind is list: + func = lambda x: self.value + [x] + # If incrementable, just increment. + if self.incrementable: + # TODO: explode nicely if self.value was not an int to start + # with + func = lambda x: self.value + 1 + self._value = func(value) + + @property + def got_value(self) -> bool: + """ + Returns whether the argument was ever given a (non-default) value. + + For most argument kinds, this simply checks whether the internally + stored value is non-``None``; for others, such as ``list`` kinds, + different checks may be used. + + .. versionadded:: 1.3 + """ + if self.kind is list: + return bool(self._value) + return self._value is not None diff --git a/.venv/lib/python3.9/site-packages/invoke/parser/context.py b/.venv/lib/python3.9/site-packages/invoke/parser/context.py new file mode 100644 index 0000000..359e9f9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/parser/context.py @@ -0,0 +1,266 @@ +import itertools +from typing import Any, Dict, List, Iterable, Optional, Tuple, Union + +try: + from ..vendor.lexicon import Lexicon +except ImportError: + from lexicon import Lexicon # type: ignore[no-redef] + +from .argument import Argument + + +def translate_underscores(name: str) -> str: + return name.lstrip("_").rstrip("_").replace("_", "-") + + +def to_flag(name: str) -> str: + name = translate_underscores(name) + if len(name) == 1: + return "-" + name + return "--" + name + + +def sort_candidate(arg: Argument) -> str: + names = arg.names + # TODO: is there no "split into two buckets on predicate" builtin? + shorts = {x for x in names if len(x.strip("-")) == 1} + longs = {x for x in names if x not in shorts} + return str(sorted(shorts if shorts else longs)[0]) + + +def flag_key(arg: Argument) -> List[Union[int, str]]: + """ + Obtain useful key list-of-ints for sorting CLI flags. + + .. versionadded:: 1.0 + """ + # Setup + ret: List[Union[int, str]] = [] + x = sort_candidate(arg) + # Long-style flags win over short-style ones, so the first item of + # comparison is simply whether the flag is a single character long (with + # non-length-1 flags coming "first" [lower number]) + ret.append(1 if len(x) == 1 else 0) + # Next item of comparison is simply the strings themselves, + # case-insensitive. They will compare alphabetically if compared at this + # stage. + ret.append(x.lower()) + # Finally, if the case-insensitive test also matched, compare + # case-sensitive, but inverse (with lowercase letters coming first) + inversed = "" + for char in x: + inversed += char.lower() if char.isupper() else char.upper() + ret.append(inversed) + return ret + + +# Named slightly more verbose so Sphinx references can be unambiguous. +# Got real sick of fully qualified paths. +class ParserContext: + """ + Parsing context with knowledge of flags & their format. + + Generally associated with the core program or a task. + + When run through a parser, will also hold runtime values filled in by the + parser. + + .. versionadded:: 1.0 + """ + + def __init__( + self, + name: Optional[str] = None, + aliases: Iterable[str] = (), + args: Iterable[Argument] = (), + ) -> None: + """ + Create a new ``ParserContext`` named ``name``, with ``aliases``. + + ``name`` is optional, and should be a string if given. It's used to + tell ParserContext objects apart, and for use in a Parser when + determining what chunk of input might belong to a given ParserContext. + + ``aliases`` is also optional and should be an iterable containing + strings. Parsing will honor any aliases when trying to "find" a given + context in its input. + + May give one or more ``args``, which is a quick alternative to calling + ``for arg in args: self.add_arg(arg)`` after initialization. + """ + self.args = Lexicon() + self.positional_args: List[Argument] = [] + self.flags = Lexicon() + self.inverse_flags: Dict[str, str] = {} # No need for Lexicon here + self.name = name + self.aliases = aliases + for arg in args: + self.add_arg(arg) + + def __repr__(self) -> str: + aliases = "" + if self.aliases: + aliases = " ({})".format(", ".join(self.aliases)) + name = (" {!r}{}".format(self.name, aliases)) if self.name else "" + args = (": {!r}".format(self.args)) if self.args else "" + return "".format(name, args) + + def add_arg(self, *args: Any, **kwargs: Any) -> None: + """ + Adds given ``Argument`` (or constructor args for one) to this context. + + The Argument in question is added to the following dict attributes: + + * ``args``: "normal" access, i.e. the given names are directly exposed + as keys. + * ``flags``: "flaglike" access, i.e. the given names are translated + into CLI flags, e.g. ``"foo"`` is accessible via ``flags['--foo']``. + * ``inverse_flags``: similar to ``flags`` but containing only the + "inverse" versions of boolean flags which default to True. This + allows the parser to track e.g. ``--no-myflag`` and turn it into a + False value for the ``myflag`` Argument. + + .. versionadded:: 1.0 + """ + # Normalize + if len(args) == 1 and isinstance(args[0], Argument): + arg = args[0] + else: + arg = Argument(*args, **kwargs) + # Uniqueness constraint: no name collisions + for name in arg.names: + if name in self.args: + msg = "Tried to add an argument named {!r} but one already exists!" # noqa + raise ValueError(msg.format(name)) + # First name used as "main" name for purposes of aliasing + main = arg.names[0] # NOT arg.name + self.args[main] = arg + # Note positionals in distinct, ordered list attribute + if arg.positional: + self.positional_args.append(arg) + # Add names & nicknames to flags, args + self.flags[to_flag(main)] = arg + for name in arg.nicknames: + self.args.alias(name, to=main) + self.flags.alias(to_flag(name), to=to_flag(main)) + # Add attr_name to args, but not flags + if arg.attr_name: + self.args.alias(arg.attr_name, to=main) + # Add to inverse_flags if required + if arg.kind == bool and arg.default is True: + # Invert the 'main' flag name here, which will be a dashed version + # of the primary argument name if underscore-to-dash transformation + # occurred. + inverse_name = to_flag("no-{}".format(main)) + self.inverse_flags[inverse_name] = to_flag(main) + + @property + def missing_positional_args(self) -> List[Argument]: + return [x for x in self.positional_args if x.value is None] + + @property + def as_kwargs(self) -> Dict[str, Any]: + """ + This context's arguments' values keyed by their ``.name`` attribute. + + Results in a dict suitable for use in Python contexts, where e.g. an + arg named ``foo-bar`` becomes accessible as ``foo_bar``. + + .. versionadded:: 1.0 + """ + ret = {} + for arg in self.args.values(): + ret[arg.name] = arg.value + return ret + + def names_for(self, flag: str) -> List[str]: + # TODO: should probably be a method on Lexicon/AliasDict + return list(set([flag] + self.flags.aliases_of(flag))) + + def help_for(self, flag: str) -> Tuple[str, str]: + """ + Return 2-tuple of ``(flag-spec, help-string)`` for given ``flag``. + + .. versionadded:: 1.0 + """ + # Obtain arg obj + if flag not in self.flags: + err = "{!r} is not a valid flag for this context! Valid flags are: {!r}" # noqa + raise ValueError(err.format(flag, self.flags.keys())) + arg = self.flags[flag] + # Determine expected value type, if any + value = {str: "STRING", int: "INT"}.get(arg.kind) + # Format & go + full_names = [] + for name in self.names_for(flag): + if value: + # Short flags are -f VAL, long are --foo=VAL + # When optional, also, -f [VAL] and --foo[=VAL] + if len(name.strip("-")) == 1: + value_ = ("[{}]".format(value)) if arg.optional else value + valuestr = " {}".format(value_) + else: + valuestr = "={}".format(value) + if arg.optional: + valuestr = "[{}]".format(valuestr) + else: + # no value => boolean + # check for inverse + if name in self.inverse_flags.values(): + name = "--[no-]{}".format(name[2:]) + + valuestr = "" + # Tack together + full_names.append(name + valuestr) + namestr = ", ".join(sorted(full_names, key=len)) + helpstr = arg.help or "" + return namestr, helpstr + + def help_tuples(self) -> List[Tuple[str, Optional[str]]]: + """ + Return sorted iterable of help tuples for all member Arguments. + + Sorts like so: + + * General sort is alphanumerically + * Short flags win over long flags + * Arguments with *only* long flags and *no* short flags will come + first. + * When an Argument has multiple long or short flags, it will sort using + the most favorable (lowest alphabetically) candidate. + + This will result in a help list like so:: + + --alpha, --zeta # 'alpha' wins + --beta + -a, --query # short flag wins + -b, --argh + -c + + .. versionadded:: 1.0 + """ + # TODO: argument/flag API must change :( + # having to call to_flag on 1st name of an Argument is just dumb. + # To pass in an Argument object to help_for may require moderate + # changes? + return list( + map( + lambda x: self.help_for(to_flag(x.name)), + sorted(self.flags.values(), key=flag_key), + ) + ) + + def flag_names(self) -> Tuple[str, ...]: + """ + Similar to `help_tuples` but returns flag names only, no helpstrs. + + Specifically, all flag names, flattened, in rough order. + + .. versionadded:: 1.0 + """ + # Regular flag names + flags = sorted(self.flags.values(), key=flag_key) + names = [self.names_for(to_flag(x.name)) for x in flags] + # Inverse flag names sold separately + names.append(list(self.inverse_flags.keys())) + return tuple(itertools.chain.from_iterable(names)) diff --git a/.venv/lib/python3.9/site-packages/invoke/parser/parser.py b/.venv/lib/python3.9/site-packages/invoke/parser/parser.py new file mode 100644 index 0000000..43e95df --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/parser/parser.py @@ -0,0 +1,455 @@ +import copy +from typing import TYPE_CHECKING, Any, Iterable, List, Optional + +try: + from ..vendor.lexicon import Lexicon + from ..vendor.fluidity import StateMachine, state, transition +except ImportError: + from lexicon import Lexicon # type: ignore[no-redef] + from fluidity import ( # type: ignore[no-redef] + StateMachine, + state, + transition, + ) + +from ..exceptions import ParseError +from ..util import debug + +if TYPE_CHECKING: + from .context import ParserContext + + +def is_flag(value: str) -> bool: + return value.startswith("-") + + +def is_long_flag(value: str) -> bool: + return value.startswith("--") + + +class ParseResult(List["ParserContext"]): + """ + List-like object with some extra parse-related attributes. + + Specifically, a ``.remainder`` attribute, which is the string found after a + ``--`` in any parsed argv list; and an ``.unparsed`` attribute, a list of + tokens that were unable to be parsed. + + .. versionadded:: 1.0 + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.remainder = "" + self.unparsed: List[str] = [] + + +class Parser: + """ + Create parser conscious of ``contexts`` and optional ``initial`` context. + + ``contexts`` should be an iterable of ``Context`` instances which will be + searched when new context names are encountered during a parse. These + Contexts determine what flags may follow them, as well as whether given + flags take values. + + ``initial`` is optional and will be used to determine validity of "core" + options/flags at the start of the parse run, if any are encountered. + + ``ignore_unknown`` determines what to do when contexts are found which do + not map to any members of ``contexts``. By default it is ``False``, meaning + any unknown contexts result in a parse error exception. If ``True``, + encountering an unknown context halts parsing and populates the return + value's ``.unparsed`` attribute with the remaining parse tokens. + + .. versionadded:: 1.0 + """ + + def __init__( + self, + contexts: Iterable["ParserContext"] = (), + initial: Optional["ParserContext"] = None, + ignore_unknown: bool = False, + ) -> None: + self.initial = initial + self.contexts = Lexicon() + self.ignore_unknown = ignore_unknown + for context in contexts: + debug("Adding {}".format(context)) + if not context.name: + raise ValueError("Non-initial contexts must have names.") + exists = "A context named/aliased {!r} is already in this parser!" + if context.name in self.contexts: + raise ValueError(exists.format(context.name)) + self.contexts[context.name] = context + for alias in context.aliases: + if alias in self.contexts: + raise ValueError(exists.format(alias)) + self.contexts.alias(alias, to=context.name) + + def parse_argv(self, argv: List[str]) -> ParseResult: + """ + Parse an argv-style token list ``argv``. + + Returns a list (actually a subclass, `.ParseResult`) of + `.ParserContext` objects matching the order they were found in the + ``argv`` and containing `.Argument` objects with updated values based + on any flags given. + + Assumes any program name has already been stripped out. Good:: + + Parser(...).parse_argv(['--core-opt', 'task', '--task-opt']) + + Bad:: + + Parser(...).parse_argv(['invoke', '--core-opt', ...]) + + :param argv: List of argument string tokens. + :returns: + A `.ParseResult` (a ``list`` subclass containing some number of + `.ParserContext` objects). + + .. versionadded:: 1.0 + """ + machine = ParseMachine( + # FIXME: initial should not be none + initial=self.initial, # type: ignore[arg-type] + contexts=self.contexts, + ignore_unknown=self.ignore_unknown, + ) + # FIXME: Why isn't there str.partition for lists? There must be a + # better way to do this. Split argv around the double-dash remainder + # sentinel. + debug("Starting argv: {!r}".format(argv)) + try: + ddash = argv.index("--") + except ValueError: + ddash = len(argv) # No remainder == body gets all + body = argv[:ddash] + remainder = argv[ddash:][1:] # [1:] to strip off remainder itself + if remainder: + debug( + "Remainder: argv[{!r}:][1:] => {!r}".format(ddash, remainder) + ) + for index, token in enumerate(body): + # Handle non-space-delimited forms, if not currently expecting a + # flag value and still in valid parsing territory (i.e. not in + # "unknown" state which implies store-only) + # NOTE: we do this in a few steps so we can + # split-then-check-validity; necessary for things like when the + # previously seen flag optionally takes a value. + mutations = [] + orig = token + if is_flag(token) and not machine.result.unparsed: + # Equals-sign-delimited flags, eg --foo=bar or -f=bar + if "=" in token: + token, _, value = token.partition("=") + msg = "Splitting x=y expr {!r} into tokens {!r} and {!r}" + debug(msg.format(orig, token, value)) + mutations.append((index + 1, value)) + # Contiguous boolean short flags, e.g. -qv + elif not is_long_flag(token) and len(token) > 2: + full_token = token[:] + rest, token = token[2:], token[:2] + err = "Splitting {!r} into token {!r} and rest {!r}" + debug(err.format(full_token, token, rest)) + # Handle boolean flag block vs short-flag + value. Make + # sure not to test the token as a context flag if we've + # passed into 'storing unknown stuff' territory (e.g. on a + # core-args pass, handling what are going to be task args) + have_flag = ( + token in machine.context.flags + and machine.current_state != "unknown" + ) + if have_flag and machine.context.flags[token].takes_value: + msg = "{!r} is a flag for current context & it takes a value, giving it {!r}" # noqa + debug(msg.format(token, rest)) + mutations.append((index + 1, rest)) + else: + _rest = ["-{}".format(x) for x in rest] + msg = "Splitting multi-flag glob {!r} into {!r} and {!r}" # noqa + debug(msg.format(orig, token, _rest)) + for item in reversed(_rest): + mutations.append((index + 1, item)) + # Here, we've got some possible mutations queued up, and 'token' + # may have been overwritten as well. Whether we apply those and + # continue as-is, or roll it back, depends: + # - If the parser wasn't waiting for a flag value, we're already on + # the right track, so apply mutations and move along to the + # handle() step. + # - If we ARE waiting for a value, and the flag expecting it ALWAYS + # wants a value (it's not optional), we go back to using the + # original token. (TODO: could reorganize this to avoid the + # sub-parsing in this case, but optimizing for human-facing + # execution isn't critical.) + # - Finally, if we are waiting for a value AND it's optional, we + # inspect the first sub-token/mutation to see if it would otherwise + # have been a valid flag, and let that determine what we do (if + # valid, we apply the mutations; if invalid, we reinstate the + # original token.) + if machine.waiting_for_flag_value: + optional = machine.flag and machine.flag.optional + subtoken_is_valid_flag = token in machine.context.flags + if not (optional and subtoken_is_valid_flag): + token = orig + mutations = [] + for index, value in mutations: + body.insert(index, value) + machine.handle(token) + machine.finish() + result = machine.result + result.remainder = " ".join(remainder) + return result + + +class ParseMachine(StateMachine): + initial_state = "context" + + state("context", enter=["complete_flag", "complete_context"]) + state("unknown", enter=["complete_flag", "complete_context"]) + state("end", enter=["complete_flag", "complete_context"]) + + transition(from_=("context", "unknown"), event="finish", to="end") + transition( + from_="context", + event="see_context", + action="switch_to_context", + to="context", + ) + transition( + from_=("context", "unknown"), + event="see_unknown", + action="store_only", + to="unknown", + ) + + def changing_state(self, from_: str, to: str) -> None: + debug("ParseMachine: {!r} => {!r}".format(from_, to)) + + def __init__( + self, + initial: "ParserContext", + contexts: Lexicon, + ignore_unknown: bool, + ) -> None: + # Initialize + self.ignore_unknown = ignore_unknown + self.initial = self.context = copy.deepcopy(initial) + debug("Initialized with context: {!r}".format(self.context)) + self.flag = None + self.flag_got_value = False + self.result = ParseResult() + self.contexts = copy.deepcopy(contexts) + debug("Available contexts: {!r}".format(self.contexts)) + # In case StateMachine does anything in __init__ + super().__init__() + + @property + def waiting_for_flag_value(self) -> bool: + # Do we have a current flag, and does it expect a value (vs being a + # bool/toggle)? + takes_value = self.flag and self.flag.takes_value + if not takes_value: + return False + # OK, this flag is one that takes values. + # Is it a list type (which has only just been switched to)? Then it'll + # always accept more values. + # TODO: how to handle somebody wanting it to be some other iterable + # like tuple or custom class? Or do we just say unsupported? + if self.flag.kind is list and not self.flag_got_value: + return True + # Not a list, okay. Does it already have a value? + has_value = self.flag.raw_value is not None + # If it doesn't have one, we're waiting for one (which tells the parser + # how to proceed and typically to store the next token.) + # TODO: in the negative case here, we should do something else instead: + # - Except, "hey you screwed up, you already gave that flag!" + # - Overwrite, "oh you changed your mind?" - which requires more work + # elsewhere too, unfortunately. (Perhaps additional properties on + # Argument that can be queried, e.g. "arg.is_iterable"?) + return not has_value + + def handle(self, token: str) -> None: + debug("Handling token: {!r}".format(token)) + # Handle unknown state at the top: we don't care about even + # possibly-valid input if we've encountered unknown input. + if self.current_state == "unknown": + debug("Top-of-handle() see_unknown({!r})".format(token)) + self.see_unknown(token) + return + # Flag + if self.context and token in self.context.flags: + debug("Saw flag {!r}".format(token)) + self.switch_to_flag(token) + elif self.context and token in self.context.inverse_flags: + debug("Saw inverse flag {!r}".format(token)) + self.switch_to_flag(token, inverse=True) + # Value for current flag + elif self.waiting_for_flag_value: + debug( + "We're waiting for a flag value so {!r} must be it?".format( + token + ) + ) # noqa + self.see_value(token) + # Positional args (must come above context-name check in case we still + # need a posarg and the user legitimately wants to give it a value that + # just happens to be a valid context name.) + elif self.context and self.context.missing_positional_args: + msg = "Context {!r} requires positional args, eating {!r}" + debug(msg.format(self.context, token)) + self.see_positional_arg(token) + # New context + elif token in self.contexts: + self.see_context(token) + # Initial-context flag being given as per-task flag (e.g. --help) + elif self.initial and token in self.initial.flags: + debug("Saw (initial-context) flag {!r}".format(token)) + flag = self.initial.flags[token] + # Special-case for core --help flag: context name is used as value. + if flag.name == "help": + flag.value = self.context.name + msg = "Saw --help in a per-task context, setting task name ({!r}) as its value" # noqa + debug(msg.format(flag.value)) + # All others: just enter the 'switch to flag' parser state + else: + # TODO: handle inverse core flags too? There are none at the + # moment (e.g. --no-dedupe is actually 'no_dedupe', not a + # default-False 'dedupe') and it's up to us whether we actually + # put any in place. + self.switch_to_flag(token) + # Unknown + else: + if not self.ignore_unknown: + debug("Can't find context named {!r}, erroring".format(token)) + self.error("No idea what {!r} is!".format(token)) + else: + debug("Bottom-of-handle() see_unknown({!r})".format(token)) + self.see_unknown(token) + + def store_only(self, token: str) -> None: + # Start off the unparsed list + debug("Storing unknown token {!r}".format(token)) + self.result.unparsed.append(token) + + def complete_context(self) -> None: + debug( + "Wrapping up context {!r}".format( + self.context.name if self.context else self.context + ) + ) + # Ensure all of context's positional args have been given. + if self.context and self.context.missing_positional_args: + err = "'{}' did not receive required positional arguments: {}" + names = ", ".join( + "'{}'".format(x.name) + for x in self.context.missing_positional_args + ) + self.error(err.format(self.context.name, names)) + if self.context and self.context not in self.result: + self.result.append(self.context) + + def switch_to_context(self, name: str) -> None: + self.context = copy.deepcopy(self.contexts[name]) + debug("Moving to context {!r}".format(name)) + debug("Context args: {!r}".format(self.context.args)) + debug("Context flags: {!r}".format(self.context.flags)) + debug("Context inverse_flags: {!r}".format(self.context.inverse_flags)) + + def complete_flag(self) -> None: + if self.flag: + msg = "Completing current flag {} before moving on" + debug(msg.format(self.flag)) + # Barf if we needed a value and didn't get one + if ( + self.flag + and self.flag.takes_value + and self.flag.raw_value is None + and not self.flag.optional + ): + err = "Flag {!r} needed value and was not given one!" + self.error(err.format(self.flag)) + # Handle optional-value flags; at this point they were not given an + # explicit value, but they were seen, ergo they should get treated like + # bools. + if self.flag and self.flag.raw_value is None and self.flag.optional: + msg = "Saw optional flag {!r} go by w/ no value; setting to True" + debug(msg.format(self.flag.name)) + # Skip casting so the bool gets preserved + self.flag.set_value(True, cast=False) + + def check_ambiguity(self, value: Any) -> bool: + """ + Guard against ambiguity when current flag takes an optional value. + + .. versionadded:: 1.0 + """ + # No flag is currently being examined, or one is but it doesn't take an + # optional value? Ambiguity isn't possible. + if not (self.flag and self.flag.optional): + return False + # We *are* dealing with an optional-value flag, but it's already + # received a value? There can't be ambiguity here either. + if self.flag.raw_value is not None: + return False + # Otherwise, there *may* be ambiguity if 1 or more of the below tests + # fail. + tests = [] + # Unfilled posargs still exist? + tests.append(self.context and self.context.missing_positional_args) + # Value matches another valid task/context name? + tests.append(value in self.contexts) + if any(tests): + msg = "{!r} is ambiguous when given after an optional-value flag" + raise ParseError(msg.format(value)) + + def switch_to_flag(self, flag: str, inverse: bool = False) -> None: + # Sanity check for ambiguity w/ prior optional-value flag + self.check_ambiguity(flag) + # Also tie it off, in case prior had optional value or etc. Seems to be + # harmless for other kinds of flags. (TODO: this is a serious indicator + # that we need to move some of this flag-by-flag bookkeeping into the + # state machine bits, if possible - as-is it was REAL confusing re: why + # this was manually required!) + self.complete_flag() + # Set flag/arg obj + flag = self.context.inverse_flags[flag] if inverse else flag + # Update state + try: + self.flag = self.context.flags[flag] + except KeyError as e: + # Try fallback to initial/core flag + try: + self.flag = self.initial.flags[flag] + except KeyError: + # If it wasn't in either, raise the original context's + # exception, as that's more useful / correct. + raise e + debug("Moving to flag {!r}".format(self.flag)) + # Bookkeeping for iterable-type flags (where the typical 'value + # non-empty/nondefault -> clearly it got its value already' test is + # insufficient) + self.flag_got_value = False + # Handle boolean flags (which can immediately be updated) + if self.flag and not self.flag.takes_value: + val = not inverse + debug("Marking seen flag {!r} as {}".format(self.flag, val)) + self.flag.value = val + + def see_value(self, value: Any) -> None: + self.check_ambiguity(value) + if self.flag and self.flag.takes_value: + debug("Setting flag {!r} to value {!r}".format(self.flag, value)) + self.flag.value = value + self.flag_got_value = True + else: + self.error("Flag {!r} doesn't take any value!".format(self.flag)) + + def see_positional_arg(self, value: Any) -> None: + for arg in self.context.positional_args: + if arg.value is None: + arg.value = value + break + + def error(self, msg: str) -> None: + raise ParseError(msg, self.context) diff --git a/.venv/lib/python3.9/site-packages/invoke/program.py b/.venv/lib/python3.9/site-packages/invoke/program.py new file mode 100644 index 0000000..67b879b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/program.py @@ -0,0 +1,987 @@ +import getpass +import inspect +import json +import os +import sys +import textwrap +from importlib import import_module # buffalo buffalo +from typing import ( + TYPE_CHECKING, + Any, + Dict, + List, + Optional, + Sequence, + Tuple, + Type, +) + +from . import Collection, Config, Executor, FilesystemLoader +from .completion.complete import complete, print_completion_script +from .exceptions import CollectionNotFound, Exit, ParseError, UnexpectedExit +from .parser import Argument, Parser, ParserContext +from .terminals import pty_size +from .util import debug, enable_logging, helpline + +if TYPE_CHECKING: + from .loader import Loader + from .parser import ParseResult + from .util import Lexicon + + +class Program: + """ + Manages top-level CLI invocation, typically via ``setup.py`` entrypoints. + + Designed for distributing Invoke task collections as standalone programs, + but also used internally to implement the ``invoke`` program itself. + + .. seealso:: + :ref:`reusing-as-a-binary` for a tutorial/walkthrough of this + functionality. + + .. versionadded:: 1.0 + """ + + core: "ParseResult" + + def core_args(self) -> List["Argument"]: + """ + Return default core `.Argument` objects, as a list. + + .. versionadded:: 1.0 + """ + # Arguments present always, even when wrapped as a different binary + return [ + Argument( + names=("command-timeout", "T"), + kind=int, + help="Specify a global command execution timeout, in seconds.", + ), + Argument( + names=("complete",), + kind=bool, + default=False, + help="Print tab-completion candidates for given parse remainder.", # noqa + ), + Argument( + names=("config", "f"), + help="Runtime configuration file to use.", + ), + Argument( + names=("debug", "d"), + kind=bool, + default=False, + help="Enable debug output.", + ), + Argument( + names=("dry", "R"), + kind=bool, + default=False, + help="Echo commands instead of running.", + ), + Argument( + names=("echo", "e"), + kind=bool, + default=False, + help="Echo executed commands before running.", + ), + Argument( + names=("help", "h"), + optional=True, + help="Show core or per-task help and exit.", + ), + Argument( + names=("hide",), + help="Set default value of run()'s 'hide' kwarg.", + ), + Argument( + names=("list", "l"), + optional=True, + help="List available tasks, optionally limited to a namespace.", # noqa + ), + Argument( + names=("list-depth", "D"), + kind=int, + default=0, + help="When listing tasks, only show the first INT levels.", + ), + Argument( + names=("list-format", "F"), + help="Change the display format used when listing tasks. Should be one of: flat (default), nested, json.", # noqa + default="flat", + ), + Argument( + names=("print-completion-script",), + kind=str, + default="", + help="Print the tab-completion script for your preferred shell (bash|zsh|fish).", # noqa + ), + Argument( + names=("prompt-for-sudo-password",), + kind=bool, + default=False, + help="Prompt user at start of session for the sudo.password config value.", # noqa + ), + Argument( + names=("pty", "p"), + kind=bool, + default=False, + help="Use a pty when executing shell commands.", + ), + Argument( + names=("version", "V"), + kind=bool, + default=False, + help="Show version and exit.", + ), + Argument( + names=("warn-only", "w"), + kind=bool, + default=False, + help="Warn, instead of failing, when shell commands fail.", + ), + Argument( + names=("write-pyc",), + kind=bool, + default=False, + help="Enable creation of .pyc files.", + ), + ] + + def task_args(self) -> List["Argument"]: + """ + Return default task-related `.Argument` objects, as a list. + + These are only added to the core args in "task runner" mode (the + default for ``invoke`` itself) - they are omitted when the constructor + is given a non-empty ``namespace`` argument ("bundled namespace" mode). + + .. versionadded:: 1.0 + """ + # Arguments pertaining specifically to invocation as 'invoke' itself + # (or as other arbitrary-task-executing programs, like 'fab') + return [ + Argument( + names=("collection", "c"), + help="Specify collection name to load.", + ), + Argument( + names=("no-dedupe",), + kind=bool, + default=False, + help="Disable task deduplication.", + ), + Argument( + names=("search-root", "r"), + help="Change root directory used for finding task modules.", + ), + ] + + argv: List[str] + # Other class-level global variables a subclass might override sometime + # maybe? + leading_indent_width = 2 + leading_indent = " " * leading_indent_width + indent_width = 4 + indent = " " * indent_width + col_padding = 3 + + def __init__( + self, + version: Optional[str] = None, + namespace: Optional["Collection"] = None, + name: Optional[str] = None, + binary: Optional[str] = None, + loader_class: Optional[Type["Loader"]] = None, + executor_class: Optional[Type["Executor"]] = None, + config_class: Optional[Type["Config"]] = None, + binary_names: Optional[List[str]] = None, + ) -> None: + """ + Create a new, parameterized `.Program` instance. + + :param str version: + The program's version, e.g. ``"0.1.0"``. Defaults to ``"unknown"``. + + :param namespace: + A `.Collection` to use as this program's subcommands. + + If ``None`` (the default), the program will behave like ``invoke``, + seeking a nearby task namespace with a `.Loader` and exposing + arguments such as :option:`--list` and :option:`--collection` for + inspecting or selecting specific namespaces. + + If given a `.Collection` object, will use it as if it had been + handed to :option:`--collection`. Will also update the parser to + remove references to tasks and task-related options, and display + the subcommands in ``--help`` output. The result will be a program + that has a static set of subcommands. + + :param str name: + The program's name, as displayed in ``--version`` output. + + If ``None`` (default), is a capitalized version of the first word + in the ``argv`` handed to `.run`. For example, when invoked from a + binstub installed as ``foobar``, it will default to ``Foobar``. + + :param str binary: + Descriptive lowercase binary name string used in help text. + + For example, Invoke's own internal value for this is ``inv[oke]``, + denoting that it is installed as both ``inv`` and ``invoke``. As + this is purely text intended for help display, it may be in any + format you wish, though it should match whatever you've put into + your ``setup.py``'s ``console_scripts`` entry. + + If ``None`` (default), uses the first word in ``argv`` verbatim (as + with ``name`` above, except not capitalized). + + :param binary_names: + List of binary name strings, for use in completion scripts. + + This list ensures that the shell completion scripts generated by + :option:`--print-completion-script` instruct the shell to use + that completion for all of this program's installed names. + + For example, Invoke's internal default for this is ``["inv", + "invoke"]``. + + If ``None`` (the default), the first word in ``argv`` (in the + invocation of :option:`--print-completion-script`) is used in a + single-item list. + + :param loader_class: + The `.Loader` subclass to use when loading task collections. + + Defaults to `.FilesystemLoader`. + + :param executor_class: + The `.Executor` subclass to use when executing tasks. + + Defaults to `.Executor`; may also be overridden at runtime by the + :ref:`configuration system ` and its + ``tasks.executor_class`` setting (anytime that setting is not + ``None``). + + :param config_class: + The `.Config` subclass to use for the base config object. + + Defaults to `.Config`. + + .. versionchanged:: 1.2 + Added the ``binary_names`` argument. + """ + self.version = "unknown" if version is None else version + self.namespace = namespace + self._name = name + # TODO 3.0: rename binary to binary_help_name or similar. (Or write + # code to autogenerate it from binary_names.) + self._binary = binary + self._binary_names = binary_names + self.argv = [] + self.loader_class = loader_class or FilesystemLoader + self.executor_class = executor_class or Executor + self.config_class = config_class or Config + + def create_config(self) -> None: + """ + Instantiate a `.Config` (or subclass, depending) for use in task exec. + + This Config is fully usable but will lack runtime-derived data like + project & runtime config files, CLI arg overrides, etc. That data is + added later in `update_config`. See `.Config` docstring for lifecycle + details. + + :returns: ``None``; sets ``self.config`` instead. + + .. versionadded:: 1.0 + """ + self.config = self.config_class() + + def update_config(self, merge: bool = True) -> None: + """ + Update the previously instantiated `.Config` with parsed data. + + For example, this is how ``--echo`` is able to override the default + config value for ``run.echo``. + + :param bool merge: + Whether to merge at the end, or defer. Primarily useful for + subclassers. Default: ``True``. + + .. versionadded:: 1.0 + """ + # Now that we have parse results handy, we can grab the remaining + # config bits: + # - runtime config, as it is dependent on the runtime flag/env var + # - the overrides config level, as it is composed of runtime flag data + # NOTE: only fill in values that would alter behavior, otherwise we + # want the defaults to come through. + run = {} + if self.args["warn-only"].value: + run["warn"] = True + if self.args.pty.value: + run["pty"] = True + if self.args.hide.value: + run["hide"] = self.args.hide.value + if self.args.echo.value: + run["echo"] = True + if self.args.dry.value: + run["dry"] = True + tasks = {} + if "no-dedupe" in self.args and self.args["no-dedupe"].value: + tasks["dedupe"] = False + timeouts = {} + command = self.args["command-timeout"].value + if command: + timeouts["command"] = command + # Handle "fill in config values at start of runtime", which for now is + # just sudo password + sudo = {} + if self.args["prompt-for-sudo-password"].value: + prompt = "Desired 'sudo.password' config value: " + sudo["password"] = getpass.getpass(prompt) + overrides = dict(run=run, tasks=tasks, sudo=sudo, timeouts=timeouts) + self.config.load_overrides(overrides, merge=False) + runtime_path = self.args.config.value + if runtime_path is None: + runtime_path = os.environ.get("INVOKE_RUNTIME_CONFIG", None) + self.config.set_runtime_path(runtime_path) + self.config.load_runtime(merge=False) + if merge: + self.config.merge() + + def run(self, argv: Optional[List[str]] = None, exit: bool = True) -> None: + """ + Execute main CLI logic, based on ``argv``. + + :param argv: + The arguments to execute against. May be ``None``, a list of + strings, or a string. See `.normalize_argv` for details. + + :param bool exit: + When ``False`` (default: ``True``), will ignore `.ParseError`, + `.Exit` and `.Failure` exceptions, which otherwise trigger calls to + `sys.exit`. + + .. note:: + This is mostly a concession to testing. If you're setting this + to ``False`` in a production setting, you should probably be + using `.Executor` and friends directly instead! + + .. versionadded:: 1.0 + """ + try: + # Create an initial config, which will hold defaults & values from + # most config file locations (all but runtime.) Used to inform + # loading & parsing behavior. + self.create_config() + # Parse the given ARGV with our CLI parsing machinery, resulting in + # things like self.args (core args/flags), self.collection (the + # loaded namespace, which may be affected by the core flags) and + # self.tasks (the tasks requested for exec and their own + # args/flags) + self.parse_core(argv) + # Handle collection concerns including project config + self.parse_collection() + # Parse remainder of argv as task-related input + self.parse_tasks() + # End of parsing (typically bailout stuff like --list, --help) + self.parse_cleanup() + # Update the earlier Config with new values from the parse step - + # runtime config file contents and flag-derived overrides (e.g. for + # run()'s echo, warn, etc options.) + self.update_config() + # Create an Executor, passing in the data resulting from the prior + # steps, then tell it to execute the tasks. + self.execute() + except (UnexpectedExit, Exit, ParseError) as e: + debug("Received a possibly-skippable exception: {!r}".format(e)) + # Print error messages from parser, runner, etc if necessary; + # prevents messy traceback but still clues interactive user into + # problems. + if isinstance(e, ParseError): + print(e, file=sys.stderr) + if isinstance(e, Exit) and e.message: + print(e.message, file=sys.stderr) + if isinstance(e, UnexpectedExit) and e.result.hide: + print(e, file=sys.stderr, end="") + # Terminate execution unless we were told not to. + if exit: + if isinstance(e, UnexpectedExit): + code = e.result.exited + elif isinstance(e, Exit): + code = e.code + elif isinstance(e, ParseError): + code = 1 + sys.exit(code) + else: + debug("Invoked as run(..., exit=False), ignoring exception") + except KeyboardInterrupt: + sys.exit(1) # Same behavior as Python itself outside of REPL + + def parse_core(self, argv: Optional[List[str]]) -> None: + debug("argv given to Program.run: {!r}".format(argv)) + self.normalize_argv(argv) + + # Obtain core args (sets self.core) + self.parse_core_args() + debug("Finished parsing core args") + + # Set interpreter bytecode-writing flag + sys.dont_write_bytecode = not self.args["write-pyc"].value + + # Enable debugging from here on out, if debug flag was given. + # (Prior to this point, debugging requires setting INVOKE_DEBUG). + if self.args.debug.value: + enable_logging() + + # Short-circuit if --version + if self.args.version.value: + debug("Saw --version, printing version & exiting") + self.print_version() + raise Exit + + # Print (dynamic, no tasks required) completion script if requested + if self.args["print-completion-script"].value: + print_completion_script( + shell=self.args["print-completion-script"].value, + names=self.binary_names, + ) + raise Exit + + def parse_collection(self) -> None: + """ + Load a tasks collection & project-level config. + + .. versionadded:: 1.0 + """ + # Load a collection of tasks unless one was already set. + if self.namespace is not None: + debug( + "Program was given default namespace, not loading collection" + ) + self.collection = self.namespace + else: + debug( + "No default namespace provided, trying to load one from disk" + ) # noqa + # If no bundled namespace & --help was given, just print it and + # exit. (If we did have a bundled namespace, core --help will be + # handled *after* the collection is loaded & parsing is done.) + if self.args.help.value is True: + debug( + "No bundled namespace & bare --help given; printing help." + ) + self.print_help() + raise Exit + self.load_collection() + # Set these up for potential use later when listing tasks + # TODO: be nice if these came from the config...! Users would love to + # say they default to nested for example. Easy 2.x feature-add. + self.list_root: Optional[str] = None + self.list_depth: Optional[int] = None + self.list_format = "flat" + self.scoped_collection = self.collection + + # TODO: load project conf, if possible, gracefully + + def parse_cleanup(self) -> None: + """ + Post-parsing, pre-execution steps such as --help, --list, etc. + + .. versionadded:: 1.0 + """ + halp = self.args.help.value + + # Core (no value given) --help output (only when bundled namespace) + if halp is True: + debug("Saw bare --help, printing help & exiting") + self.print_help() + raise Exit + + # Print per-task help, if necessary + if halp: + if halp in self.parser.contexts: + msg = "Saw --help , printing per-task help & exiting" + debug(msg) + self.print_task_help(halp) + raise Exit + else: + # TODO: feels real dumb to factor this out of Parser, but...we + # should? + raise ParseError("No idea what '{}' is!".format(halp)) + + # Print discovered tasks if necessary + list_root = self.args.list.value # will be True or string + self.list_format = self.args["list-format"].value + self.list_depth = self.args["list-depth"].value + if list_root: + # Not just --list, but --list some-root - do moar work + if isinstance(list_root, str): + self.list_root = list_root + try: + sub = self.collection.subcollection_from_path(list_root) + self.scoped_collection = sub + except KeyError: + msg = "Sub-collection '{}' not found!" + raise Exit(msg.format(list_root)) + self.list_tasks() + raise Exit + + # Print completion helpers if necessary + if self.args.complete.value: + complete( + names=self.binary_names, + core=self.core, + initial_context=self.initial_context, + collection=self.collection, + # NOTE: can't reuse self.parser as it has likely been mutated + # between when it was set and now. + parser=self._make_parser(), + ) + + # Fallback behavior if no tasks were given & no default specified + # (mostly a subroutine for overriding purposes) + # NOTE: when there is a default task, Executor will select it when no + # tasks were found in CLI parsing. + if not self.tasks and not self.collection.default: + self.no_tasks_given() + + def no_tasks_given(self) -> None: + debug( + "No tasks specified for execution and no default task; printing global help as fallback" # noqa + ) + self.print_help() + raise Exit + + def execute(self) -> None: + """ + Hand off data & tasks-to-execute specification to an `.Executor`. + + .. note:: + Client code just wanting a different `.Executor` subclass can just + set ``executor_class`` in `.__init__`, or override + ``tasks.executor_class`` anywhere in the :ref:`config system + ` (which may allow you to avoid using a custom + Program entirely). + + .. versionadded:: 1.0 + """ + klass = self.executor_class + config_path = self.config.tasks.executor_class + if config_path is not None: + # TODO: why the heck is this not builtin to importlib? + module_path, _, class_name = config_path.rpartition(".") + # TODO: worth trying to wrap both of these and raising ImportError + # for cases where module exists but class name does not? More + # "normal" but also its own possible source of bugs/confusion... + module = import_module(module_path) + klass = getattr(module, class_name) + executor = klass(self.collection, self.config, self.core) + executor.execute(*self.tasks) + + def normalize_argv(self, argv: Optional[List[str]]) -> None: + """ + Massages ``argv`` into a useful list of strings. + + **If None** (the default), uses `sys.argv`. + + **If a non-string iterable**, uses that in place of `sys.argv`. + + **If a string**, performs a `str.split` and then executes with the + result. (This is mostly a convenience; when in doubt, use a list.) + + Sets ``self.argv`` to the result. + + .. versionadded:: 1.0 + """ + if argv is None: + argv = sys.argv + debug("argv was None; using sys.argv: {!r}".format(argv)) + elif isinstance(argv, str): + argv = argv.split() + debug("argv was string-like; splitting: {!r}".format(argv)) + self.argv = argv + + @property + def name(self) -> str: + """ + Derive program's human-readable name based on `.binary`. + + .. versionadded:: 1.0 + """ + return self._name or self.binary.capitalize() + + @property + def called_as(self) -> str: + """ + Returns the program name we were actually called as. + + Specifically, this is the (Python's os module's concept of a) basename + of the first argument in the parsed argument vector. + + .. versionadded:: 1.2 + """ + # XXX: defaults to empty string if 'argv' is '[]' or 'None' + return os.path.basename(self.argv[0]) if self.argv else "" + + @property + def binary(self) -> str: + """ + Derive program's help-oriented binary name(s) from init args & argv. + + .. versionadded:: 1.0 + """ + return self._binary or self.called_as + + @property + def binary_names(self) -> List[str]: + """ + Derive program's completion-oriented binary name(s) from args & argv. + + .. versionadded:: 1.2 + """ + return self._binary_names or [self.called_as] + + # TODO 3.0: ugh rename this or core_args, they are too confusing + @property + def args(self) -> "Lexicon": + """ + Obtain core program args from ``self.core`` parse result. + + .. versionadded:: 1.0 + """ + return self.core[0].args + + @property + def initial_context(self) -> ParserContext: + """ + The initial parser context, aka core program flags. + + The specific arguments contained therein will differ depending on + whether a bundled namespace was specified in `.__init__`. + + .. versionadded:: 1.0 + """ + args = self.core_args() + if self.namespace is None: + args += self.task_args() + return ParserContext(args=args) + + def print_version(self) -> None: + print("{} {}".format(self.name, self.version or "unknown")) + + def print_help(self) -> None: + usage_suffix = "task1 [--task1-opts] ... taskN [--taskN-opts]" + if self.namespace is not None: + usage_suffix = " [--subcommand-opts] ..." + print("Usage: {} [--core-opts] {}".format(self.binary, usage_suffix)) + print("") + print("Core options:") + print("") + self.print_columns(self.initial_context.help_tuples()) + if self.namespace is not None: + self.list_tasks() + + def parse_core_args(self) -> None: + """ + Filter out core args, leaving any tasks or their args for later. + + Sets ``self.core`` to the `.ParseResult` from this step. + + .. versionadded:: 1.0 + """ + debug("Parsing initial context (core args)") + parser = Parser(initial=self.initial_context, ignore_unknown=True) + self.core = parser.parse_argv(self.argv[1:]) + msg = "Core-args parse result: {!r} & unparsed: {!r}" + debug(msg.format(self.core, self.core.unparsed)) + + def load_collection(self) -> None: + """ + Load a task collection based on parsed core args, or die trying. + + .. versionadded:: 1.0 + """ + # NOTE: start, coll_name both fall back to configuration values within + # Loader (which may, however, get them from our config.) + start = self.args["search-root"].value + loader = self.loader_class( # type: ignore + config=self.config, start=start + ) + coll_name = self.args.collection.value + try: + module, parent = loader.load(coll_name) + # This is the earliest we can load project config, so we should - + # allows project config to affect the task parsing step! + # TODO: is it worth merging these set- and load- methods? May + # require more tweaking of how things behave in/after __init__. + self.config.set_project_location(parent) + self.config.load_project() + self.collection = Collection.from_module( + module, + loaded_from=parent, + auto_dash_names=self.config.tasks.auto_dash_names, + ) + except CollectionNotFound as e: + raise Exit("Can't find any collection named {!r}!".format(e.name)) + + def _update_core_context( + self, context: ParserContext, new_args: Dict[str, Any] + ) -> None: + # Update core context w/ core_via_task args, if and only if the + # via-task version of the arg was truly given a value. + # TODO: push this into an Argument-aware Lexicon subclass and + # .update()? + for key, arg in new_args.items(): + if arg.got_value: + context.args[key]._value = arg._value + + def _make_parser(self) -> Parser: + return Parser( + initial=self.initial_context, + contexts=self.collection.to_contexts( + ignore_unknown_help=self.config.tasks.ignore_unknown_help + ), + ) + + def parse_tasks(self) -> None: + """ + Parse leftover args, which are typically tasks & per-task args. + + Sets ``self.parser`` to the parser used, ``self.tasks`` to the + parsed per-task contexts, and ``self.core_via_tasks`` to a context + holding any core flags seen within the task contexts. + + Also modifies ``self.core`` to include the data from ``core_via_tasks`` + (so that it correctly reflects any supplied core flags regardless of + where they appeared). + + .. versionadded:: 1.0 + """ + self.parser = self._make_parser() + debug("Parsing tasks against {!r}".format(self.collection)) + result = self.parser.parse_argv(self.core.unparsed) + self.core_via_tasks = result.pop(0) + self._update_core_context( + context=self.core[0], new_args=self.core_via_tasks.args + ) + self.tasks = result + debug("Resulting task contexts: {!r}".format(self.tasks)) + + def print_task_help(self, name: str) -> None: + """ + Print help for a specific task, e.g. ``inv --help ``. + + .. versionadded:: 1.0 + """ + # Setup + ctx = self.parser.contexts[name] + tuples = ctx.help_tuples() + docstring = inspect.getdoc(self.collection[name]) + header = "Usage: {} [--core-opts] {} {}[other tasks here ...]" + opts = "[--options] " if tuples else "" + print(header.format(self.binary, name, opts)) + print("") + print("Docstring:") + if docstring: + # Really wish textwrap worked better for this. + for line in docstring.splitlines(): + if line.strip(): + print(self.leading_indent + line) + else: + print("") + print("") + else: + print(self.leading_indent + "none") + print("") + print("Options:") + if tuples: + self.print_columns(tuples) + else: + print(self.leading_indent + "none") + print("") + + def list_tasks(self) -> None: + # Short circuit if no tasks to show (Collection now implements bool) + focus = self.scoped_collection + if not focus: + msg = "No tasks found in collection '{}'!" + raise Exit(msg.format(focus.name)) + # TODO: now that flat/nested are almost 100% unified, maybe rethink + # this a bit? + getattr(self, "list_{}".format(self.list_format))() + + def list_flat(self) -> None: + pairs = self._make_pairs(self.scoped_collection) + self.display_with_columns(pairs=pairs) + + def list_nested(self) -> None: + pairs = self._make_pairs(self.scoped_collection) + extra = "'*' denotes collection defaults" + self.display_with_columns(pairs=pairs, extra=extra) + + def _make_pairs( + self, + coll: "Collection", + ancestors: Optional[List[str]] = None, + ) -> List[Tuple[str, Optional[str]]]: + if ancestors is None: + ancestors = [] + pairs = [] + indent = len(ancestors) * self.indent + ancestor_path = ".".join(x for x in ancestors) + for name, task in sorted(coll.tasks.items()): + is_default = name == coll.default + # Start with just the name and just the aliases, no prefixes or + # dots. + displayname = name + aliases = list(map(coll.transform, sorted(task.aliases))) + # If displaying a sub-collection (or if we are displaying a given + # namespace/root), tack on some dots to make it clear these names + # require dotted paths to invoke. + if ancestors or self.list_root: + displayname = ".{}".format(displayname) + aliases = [".{}".format(x) for x in aliases] + # Nested? Indent, and add asterisks to default-tasks. + if self.list_format == "nested": + prefix = indent + if is_default: + displayname += "*" + # Flat? Prefix names and aliases with ancestor names to get full + # dotted path; and give default-tasks their collection name as the + # first alias. + if self.list_format == "flat": + prefix = ancestor_path + # Make sure leading dots are present for subcollections if + # scoped display + if prefix and self.list_root: + prefix = "." + prefix + aliases = [prefix + alias for alias in aliases] + if is_default and ancestors: + aliases.insert(0, prefix) + # Generate full name and help columns and add to pairs. + alias_str = " ({})".format(", ".join(aliases)) if aliases else "" + full = prefix + displayname + alias_str + pairs.append((full, helpline(task))) + # Determine whether we're at max-depth or not + truncate = self.list_depth and (len(ancestors) + 1) >= self.list_depth + for name, subcoll in sorted(coll.collections.items()): + displayname = name + if ancestors or self.list_root: + displayname = ".{}".format(displayname) + if truncate: + tallies = [ + "{} {}".format(len(getattr(subcoll, attr)), attr) + for attr in ("tasks", "collections") + if getattr(subcoll, attr) + ] + displayname += " [{}]".format(", ".join(tallies)) + if self.list_format == "nested": + pairs.append((indent + displayname, helpline(subcoll))) + elif self.list_format == "flat" and truncate: + # NOTE: only adding coll-oriented pair if limiting by depth + pairs.append((ancestor_path + displayname, helpline(subcoll))) + # Recurse, if not already at max depth + if not truncate: + recursed_pairs = self._make_pairs( + coll=subcoll, ancestors=ancestors + [name] + ) + pairs.extend(recursed_pairs) + return pairs + + def list_json(self) -> None: + # Sanity: we can't cleanly honor the --list-depth argument without + # changing the data schema or otherwise acting strangely; and it also + # doesn't make a ton of sense to limit depth when the output is for a + # script to handle. So we just refuse, for now. TODO: find better way + if self.list_depth: + raise Exit( + "The --list-depth option is not supported with JSON format!" + ) # noqa + # TODO: consider using something more formal re: the format this emits, + # eg json-schema or whatever. Would simplify the + # relatively-concise-but-only-human docs that currently describe this. + coll = self.scoped_collection + data = coll.serialized() + print(json.dumps(data)) + + def task_list_opener(self, extra: str = "") -> str: + root = self.list_root + depth = self.list_depth + specifier = " '{}'".format(root) if root else "" + tail = "" + if depth or extra: + depthstr = "depth={}".format(depth) if depth else "" + joiner = "; " if (depth and extra) else "" + tail = " ({}{}{})".format(depthstr, joiner, extra) + text = "Available{} tasks{}".format(specifier, tail) + # TODO: do use cases w/ bundled namespace want to display things like + # root and depth too? Leaving off for now... + if self.namespace is not None: + text = "Subcommands" + return text + + def display_with_columns( + self, pairs: Sequence[Tuple[str, Optional[str]]], extra: str = "" + ) -> None: + root = self.list_root + print("{}:\n".format(self.task_list_opener(extra=extra))) + self.print_columns(pairs) + # TODO: worth stripping this out for nested? since it's signified with + # asterisk there? ugggh + default = self.scoped_collection.default + if default: + specific = "" + if root: + specific = " '{}'".format(root) + default = ".{}".format(default) + # TODO: trim/prefix dots + print("Default{} task: {}\n".format(specific, default)) + + def print_columns( + self, tuples: Sequence[Tuple[str, Optional[str]]] + ) -> None: + """ + Print tabbed columns from (name, help) ``tuples``. + + Useful for listing tasks + docstrings, flags + help strings, etc. + + .. versionadded:: 1.0 + """ + # Calculate column sizes: don't wrap flag specs, give what's left over + # to the descriptions. + name_width = max(len(x[0]) for x in tuples) + desc_width = ( + pty_size()[0] + - name_width + - self.leading_indent_width + - self.col_padding + - 1 + ) + wrapper = textwrap.TextWrapper(width=desc_width) + for name, help_str in tuples: + if help_str is None: + help_str = "" + # Wrap descriptions/help text + help_chunks = wrapper.wrap(help_str) + # Print flag spec + padding + name_padding = name_width - len(name) + spec = "".join( + ( + self.leading_indent, + name, + name_padding * " ", + self.col_padding * " ", + ) + ) + # Print help text as needed + if help_chunks: + print(spec + help_chunks[0]) + for chunk in help_chunks[1:]: + print((" " * len(spec)) + chunk) + else: + print(spec.rstrip()) + print("") diff --git a/.venv/lib/python3.9/site-packages/invoke/py.typed b/.venv/lib/python3.9/site-packages/invoke/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/invoke/runners.py b/.venv/lib/python3.9/site-packages/invoke/runners.py new file mode 100644 index 0000000..d13ccb2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/runners.py @@ -0,0 +1,1726 @@ +import errno +import locale +import os +import signal +import struct +import sys +import threading +import time +from contextlib import AbstractContextManager +from subprocess import PIPE, Popen +from types import TracebackType +from typing import ( + IO, + TYPE_CHECKING, + Any, + Callable, + Dict, + Generator, + List, + Optional, + Tuple, + Type, +) + +# Import some platform-specific things at top level so they can be mocked for +# tests. +try: + import pty +except ImportError: + pty = None # type: ignore[assignment] +try: + import fcntl +except ImportError: + fcntl = None # type: ignore[assignment] +try: + import termios +except ImportError: + termios = None # type: ignore[assignment] + +from .exceptions import ( + CommandTimedOut, + Failure, + SubprocessPipeError, + ThreadException, + UnexpectedExit, + WatcherError, +) +from .terminals import ( + WINDOWS, + bytes_to_read, + character_buffered, + pty_size, + ready_for_reading, +) +from .util import ExceptionHandlingThread, has_fileno, isatty + +if TYPE_CHECKING: + from .context import Context + from .watchers import StreamWatcher + + +class Runner: + """ + Partially-abstract core command-running API. + + This class is not usable by itself and must be subclassed, implementing a + number of methods such as `start`, `wait` and `returncode`. For a subclass + implementation example, see the source code for `.Local`. + + .. versionadded:: 1.0 + """ + + opts: Dict[str, Any] + using_pty: bool + read_chunk_size = 1000 + input_sleep = 0.01 + + def __init__(self, context: "Context") -> None: + """ + Create a new runner with a handle on some `.Context`. + + :param context: + a `.Context` instance, used to transmit default options and provide + access to other contextualized information (e.g. a remote-oriented + `.Runner` might want a `.Context` subclass holding info about + hostnames and ports.) + + .. note:: + The `.Context` given to `.Runner` instances **must** contain + default config values for the `.Runner` class in question. At a + minimum, this means values for each of the default + `.Runner.run` keyword arguments such as ``echo`` and ``warn``. + + :raises ValueError: + if not all expected default values are found in ``context``. + """ + #: The `.Context` given to the same-named argument of `__init__`. + self.context = context + #: A `threading.Event` signaling program completion. + #: + #: Typically set after `wait` returns. Some IO mechanisms rely on this + #: to know when to exit an infinite read loop. + self.program_finished = threading.Event() + # I wish Sphinx would organize all class/instance attrs in the same + # place. If I don't do this here, it goes 'class vars -> __init__ + # docstring -> instance vars' :( TODO: consider just merging class and + # __init__ docstrings, though that's annoying too. + #: How many bytes (at maximum) to read per iteration of stream reads. + self.read_chunk_size = self.__class__.read_chunk_size + # Ditto re: declaring this in 2 places for doc reasons. + #: How many seconds to sleep on each iteration of the stdin read loop + #: and other otherwise-fast loops. + self.input_sleep = self.__class__.input_sleep + #: Whether pty fallback warning has been emitted. + self.warned_about_pty_fallback = False + #: A list of `.StreamWatcher` instances for use by `respond`. Is filled + #: in at runtime by `run`. + self.watchers: List["StreamWatcher"] = [] + # Optional timeout timer placeholder + self._timer: Optional[threading.Timer] = None + # Async flags (initialized for 'finally' referencing in case something + # goes REAL bad during options parsing) + self._asynchronous = False + self._disowned = False + + def run(self, command: str, **kwargs: Any) -> "Result": + """ + Execute ``command``, returning an instance of `Result` once complete. + + By default, this method is synchronous (it only returns once the + subprocess has completed), and allows interactive keyboard + communication with the subprocess. + + It can instead behave asynchronously (returning early & requiring + interaction with the resulting object to manage subprocess lifecycle) + if you specify ``asynchronous=True``. Furthermore, you can completely + disassociate the subprocess from Invoke's control (allowing it to + persist on its own after Python exits) by saying ``disown=True``. See + the per-kwarg docs below for details on both of these. + + .. note:: + All kwargs will default to the values found in this instance's + `~.Runner.context` attribute, specifically in its configuration's + ``run`` subtree (e.g. ``run.echo`` provides the default value for + the ``echo`` keyword, etc). The base default values are described + in the parameter list below. + + :param str command: The shell command to execute. + + :param bool asynchronous: + When set to ``True`` (default ``False``), enables asynchronous + behavior, as follows: + + - Connections to the controlling terminal are disabled, meaning you + will not see the subprocess output and it will not respond to + your keyboard input - similar to ``hide=True`` and + ``in_stream=False`` (though explicitly given + ``(out|err|in)_stream`` file-like objects will still be honored + as normal). + - `.run` returns immediately after starting the subprocess, and its + return value becomes an instance of `Promise` instead of + `Result`. + - `Promise` objects are primarily useful for their `~Promise.join` + method, which blocks until the subprocess exits (similar to + threading APIs) and either returns a final `~Result` or raises an + exception, just as a synchronous ``run`` would. + + - As with threading and similar APIs, users of + ``asynchronous=True`` should make sure to ``join`` their + `Promise` objects to prevent issues with interpreter + shutdown. + - One easy way to handle such cleanup is to use the `Promise` + as a context manager - it will automatically ``join`` at the + exit of the context block. + + .. versionadded:: 1.4 + + :param bool disown: + When set to ``True`` (default ``False``), returns immediately like + ``asynchronous=True``, but does not perform any background work + related to that subprocess (it is completely ignored). This allows + subprocesses using shell backgrounding or similar techniques (e.g. + trailing ``&``, ``nohup``) to persist beyond the lifetime of the + Python process running Invoke. + + .. note:: + If you're unsure whether you want this or ``asynchronous``, you + probably want ``asynchronous``! + + Specifically, ``disown=True`` has the following behaviors: + + - The return value is still a `Result`, but it is severely limited + in functionality & data, per below. + - No I/O worker threads are spun up, so you will have no access to + the subprocess' stdout/stderr (those attributes on the result + will be empty strings), your stdin will not be forwarded, + ``(out|err|in)_stream`` will be ignored, and features like + ``watchers`` will not function. + - No exit code is checked for, so you will not receive any errors + if the subprocess fails to exit cleanly, the result's ``exited`` + will be ``None``, and convenience properties like `ok` and + `failed` will not be reliable. + - ``pty=True`` may not function correctly (subprocesses may not run + at all; this seems to be a potential bug in Python's + ``pty.fork``) unless your command line includes tools such as + ``nohup`` or (the shell builtin) ``disown``. + + .. versionadded:: 1.4 + .. versionchanged:: 3.0 + The return value when ``disown=True`` changed from `None` to + `Result`. + + :param bool dry: + Whether to dry-run instead of truly invoking the given command. See + :option:`--dry` (which flips this on globally) for details on this + behavior. + + .. versionadded:: 1.3 + + :param bool echo: + Controls whether `.run` prints the command string to local stdout + prior to executing it. Default: ``False``. + + .. note:: + ``hide=True`` will override ``echo=True`` if both are given. + + :param echo_format: + A string, which when passed to Python's inbuilt ``.format`` method, + will change the format of the output when ``run.echo`` is set to + true. + + Currently, only ``{command}`` is supported as a parameter. + + Defaults to printing the full command string in ANSI-escaped bold. + + :param bool echo_stdin: + Whether to write data from ``in_stream`` back to ``out_stream``. + + In other words, in normal interactive usage, this parameter + controls whether Invoke mirrors what you type back to your + terminal. + + By default (when ``None``), this behavior is triggered by the + following: + + * Not using a pty to run the subcommand (i.e. ``pty=False``), + as ptys natively echo stdin to stdout on their own; + * And when the controlling terminal of Invoke itself (as per + ``in_stream``) appears to be a valid terminal device or TTY. + (Specifically, when `~invoke.util.isatty` yields a ``True`` + result when given ``in_stream``.) + + .. note:: + This property tends to be ``False`` when piping another + program's output into an Invoke session, or when running + Invoke within another program (e.g. running Invoke from + itself). + + If both of those properties are true, echoing will occur; if either + is false, no echoing will be performed. + + When not ``None``, this parameter will override that auto-detection + and force, or disable, echoing. + + :param str encoding: + Override auto-detection of which encoding the subprocess is using + for its stdout/stderr streams (which defaults to the return value + of `default_encoding`). + + :param err_stream: + Same as ``out_stream``, except for standard error, and defaulting + to ``sys.stderr``. + + :param dict env: + By default, subprocesses receive a copy of Invoke's own environment + (i.e. ``os.environ``). Supply a dict here to update that child + environment. + + For example, ``run('command', env={'PYTHONPATH': + '/some/virtual/env/maybe'})`` would modify the ``PYTHONPATH`` env + var, with the rest of the child's env looking identical to the + parent. + + .. seealso:: ``replace_env`` for changing 'update' to 'replace'. + + :param bool fallback: + Controls auto-fallback behavior re: problems offering a pty when + ``pty=True``. Whether this has any effect depends on the specific + `Runner` subclass being invoked. Default: ``True``. + + :param hide: + Allows the caller to disable ``run``'s default behavior of copying + the subprocess' stdout and stderr to the controlling terminal. + Specify ``hide='out'`` (or ``'stdout'``) to hide only the stdout + stream, ``hide='err'`` (or ``'stderr'``) to hide only stderr, or + ``hide='both'`` (or ``True``) to hide both streams. + + The default value is ``None``, meaning to print everything; + ``False`` will also disable hiding. + + .. note:: + Stdout and stderr are always captured and stored in the + ``Result`` object, regardless of ``hide``'s value. + + .. note:: + ``hide=True`` will also override ``echo=True`` if both are + given (either as kwargs or via config/CLI). + + :param in_stream: + A file-like stream object to used as the subprocess' standard + input. If ``None`` (the default), ``sys.stdin`` will be used. + + If ``False``, will disable stdin mirroring entirely (though other + functionality which writes to the subprocess' stdin, such as + autoresponding, will still function.) Disabling stdin mirroring can + help when ``sys.stdin`` is a misbehaving non-stream object, such as + under test harnesses or headless command runners. + + :param out_stream: + A file-like stream object to which the subprocess' standard output + should be written. If ``None`` (the default), ``sys.stdout`` will + be used. + + :param bool pty: + By default, ``run`` connects directly to the invoked process and + reads its stdout/stderr streams. Some programs will buffer (or even + behave) differently in this situation compared to using an actual + terminal or pseudoterminal (pty). To use a pty instead of the + default behavior, specify ``pty=True``. + + .. warning:: + Due to their nature, ptys have a single output stream, so the + ability to tell stdout apart from stderr is **not possible** + when ``pty=True``. As such, all output will appear on + ``out_stream`` (see below) and be captured into the ``stdout`` + result attribute. ``err_stream`` and ``stderr`` will always be + empty when ``pty=True``. + + :param bool replace_env: + When ``True``, causes the subprocess to receive the dictionary + given to ``env`` as its entire shell environment, instead of + updating a copy of ``os.environ`` (which is the default behavior). + Default: ``False``. + + :param str shell: + Which shell binary to use. Default: ``/bin/bash`` (on Unix; + ``COMSPEC`` or ``cmd.exe`` on Windows.) + + :param timeout: + Cause the runner to submit an interrupt to the subprocess and raise + `.CommandTimedOut`, if the command takes longer than ``timeout`` + seconds to execute. Defaults to ``None``, meaning no timeout. + + .. versionadded:: 1.3 + + :param bool warn: + Whether to warn and continue, instead of raising + `.UnexpectedExit`, when the executed command exits with a + nonzero status. Default: ``False``. + + .. note:: + This setting has no effect on exceptions, which will still be + raised, typically bundled in `.ThreadException` objects if they + were raised by the IO worker threads. + + Similarly, `.WatcherError` exceptions raised by + `.StreamWatcher` instances will also ignore this setting, and + will usually be bundled inside `.Failure` objects (in order to + preserve the execution context). + + Ditto `.CommandTimedOut` - basically, anything that prevents a + command from actually getting to "exited with an exit code" + ignores this flag. + + :param watchers: + A list of `.StreamWatcher` instances which will be used to scan the + program's ``stdout`` or ``stderr`` and may write into its ``stdin`` + (typically ``bytes`` objects) in response to patterns or other + heuristics. + + See :doc:`/concepts/watchers` for details on this functionality. + + Default: ``[]``. + + :returns: + `Result`, or a subclass thereof. + + :raises: + `.UnexpectedExit`, if the command exited nonzero and + ``warn`` was ``False``. + + :raises: + `.Failure`, if the command didn't even exit cleanly, e.g. if a + `.StreamWatcher` raised `.WatcherError`. + + :raises: + `.ThreadException` (if the background I/O threads encountered + exceptions other than `.WatcherError`). + + .. versionadded:: 1.0 + """ + try: + return self._run_body(command, **kwargs) + finally: + if not (self._asynchronous or self._disowned): + self.stop() + + def echo(self, command: str) -> None: + print(self.opts["echo_format"].format(command=command)) + + def _setup(self, command: str, kwargs: Any) -> None: + """ + Prepare data on ``self`` so we're ready to start running. + """ + # Normalize kwargs w/ config; sets self.opts, self.streams + self._unify_kwargs_with_config(kwargs) + # Environment setup + self.env = self.generate_env( + self.opts["env"], self.opts["replace_env"] + ) + # Arrive at final encoding if neither config nor kwargs had one + self.encoding = self.opts["encoding"] or self.default_encoding() + # Echo running command (wants to be early to be included in dry-run) + if self.opts["echo"]: + self.echo(command) + # Prepare common result args. + # TODO: I hate this. Needs a deeper separate think about tweaking + # Runner.generate_result in a way that isn't literally just this same + # two-step process, and which also works w/ downstream. + self.result_kwargs = dict( + command=command, + shell=self.opts["shell"], + env=self.env, + pty=self.using_pty, + hide=self.opts["hide"], + encoding=self.encoding, + ) + + def _run_body(self, command: str, **kwargs: Any) -> "Result": + # Prepare all the bits n bobs. + self._setup(command, kwargs) + # If dry-run, stop here. + if self.opts["dry"]: + return self.generate_result( + **dict(self.result_kwargs, stdout="", stderr="", exited=0) + ) + # Start executing the actual command (runs in background) + self.start(command, self.opts["shell"], self.env) + # Update result data with anything only obtainable post-start. + self.result_kwargs["pid"] = self.get_pid() + # If disowned, we just stop here - no threads, no timer, no error + # checking, nada. + if self._disowned: + return self.generate_result( + **dict( + self.result_kwargs, + stdout="", + stderr="", + exited=None, + disowned=True, + ) + ) + # Stand up & kick off IO, timer threads + self.start_timer(self.opts["timeout"]) + self.threads, self.stdout, self.stderr = self.create_io_threads() + for thread in self.threads.values(): + thread.start() + # Wrap up or promise that we will, depending + return self.make_promise() if self._asynchronous else self._finish() + + def make_promise(self) -> "Promise": + """ + Return a `Promise` allowing async control of the rest of lifecycle. + + .. versionadded:: 1.4 + """ + return Promise(self) + + def _finish(self) -> "Result": + # Wait for subprocess to run, forwarding signals as we get them. + try: + while True: + try: + self.wait() + break # done waiting! + # Don't locally stop on ^C, only forward it: + # - if remote end really stops, we'll naturally stop after + # - if remote end does not stop (eg REPL, editor) we don't want + # to stop prematurely + except KeyboardInterrupt as e: + self.send_interrupt(e) + # TODO: honor other signals sent to our own process and + # transmit them to the subprocess before handling 'normally'. + # Make sure we tie off our worker threads, even if something exploded. + # Any exceptions that raised during self.wait() above will appear after + # this block. + finally: + # Inform stdin-mirroring worker to stop its eternal looping + self.program_finished.set() + # Join threads, storing inner exceptions, & set a timeout if + # necessary. (Segregate WatcherErrors as they are "anticipated + # errors" that want to show up at the end during creation of + # Failure objects.) + watcher_errors = [] + thread_exceptions = [] + for target, thread in self.threads.items(): + thread.join(self._thread_join_timeout(target)) + exception = thread.exception() + if exception is not None: + real = exception.value + if isinstance(real, WatcherError): + watcher_errors.append(real) + else: + thread_exceptions.append(exception) + # If any exceptions appeared inside the threads, raise them now as an + # aggregate exception object. + # NOTE: this is kept outside the 'finally' so that main-thread + # exceptions are raised before worker-thread exceptions; they're more + # likely to be Big Serious Problems. + if thread_exceptions: + raise ThreadException(thread_exceptions) + # Collate stdout/err, calculate exited, and get final result obj + result = self._collate_result(watcher_errors) + # Any presence of WatcherError from the threads indicates a watcher was + # upset and aborted execution; make a generic Failure out of it and + # raise that. + if watcher_errors: + # TODO: ambiguity exists if we somehow get WatcherError in *both* + # threads...as unlikely as that would normally be. + raise Failure(result, reason=watcher_errors[0]) + # If a timeout was requested and the subprocess did time out, shout. + timeout = self.opts["timeout"] + if timeout is not None and self.timed_out: + raise CommandTimedOut(result, timeout=timeout) + if not (result or self.opts["warn"]): + raise UnexpectedExit(result) + return result + + def _unify_kwargs_with_config(self, kwargs: Any) -> None: + """ + Unify `run` kwargs with config options to arrive at local options. + + Sets: + + - ``self.opts`` - opts dict + - ``self.streams`` - map of stream names to stream target values + """ + opts = {} + for key, value in self.context.config.run.items(): + runtime = kwargs.pop(key, None) + opts[key] = value if runtime is None else runtime + # Pull in command execution timeout, which stores config elsewhere, + # but only use it if it's actually set (backwards compat) + config_timeout = self.context.config.timeouts.command + opts["timeout"] = kwargs.pop("timeout", config_timeout) + # Handle invalid kwarg keys (anything left in kwargs). + # Act like a normal function would, i.e. TypeError + if kwargs: + err = "run() got an unexpected keyword argument '{}'" + raise TypeError(err.format(list(kwargs.keys())[0])) + # Update disowned, async flags + self._asynchronous = opts["asynchronous"] + self._disowned = opts["disown"] + if self._asynchronous and self._disowned: + err = "Cannot give both 'asynchronous' and 'disown' at the same time!" # noqa + raise ValueError(err) + # If hide was True, turn off echoing + if opts["hide"] is True: + opts["echo"] = False + # Conversely, ensure echoing is always on when dry-running + if opts["dry"] is True: + opts["echo"] = True + # Always hide if async + if self._asynchronous: + opts["hide"] = True + # Then normalize 'hide' from one of the various valid input values, + # into a stream-names tuple. Also account for the streams. + out_stream, err_stream = opts["out_stream"], opts["err_stream"] + opts["hide"] = normalize_hide(opts["hide"], out_stream, err_stream) + # Derive stream objects + if out_stream is None: + out_stream = sys.stdout + if err_stream is None: + err_stream = sys.stderr + in_stream = opts["in_stream"] + if in_stream is None: + # If in_stream hasn't been overridden, and we're async, we don't + # want to read from sys.stdin (otherwise the default) - so set + # False instead. + in_stream = False if self._asynchronous else sys.stdin + # Determine pty or no + self.using_pty = self.should_use_pty(opts["pty"], opts["fallback"]) + if opts["watchers"]: + self.watchers = opts["watchers"] + # Set data + self.opts = opts + self.streams = {"out": out_stream, "err": err_stream, "in": in_stream} + + def _collate_result(self, watcher_errors: List[WatcherError]) -> "Result": + # At this point, we had enough success that we want to be returning or + # raising detailed info about our execution; so we generate a Result. + stdout = "".join(self.stdout) + stderr = "".join(self.stderr) + if WINDOWS: + # "Universal newlines" - replace all standard forms of + # newline with \n. This is not technically Windows related + # (\r as newline is an old Mac convention) but we only apply + # the translation for Windows as that's the only platform + # it is likely to matter for these days. + stdout = stdout.replace("\r\n", "\n").replace("\r", "\n") + stderr = stderr.replace("\r\n", "\n").replace("\r", "\n") + # Get return/exit code, unless there were WatcherErrors to handle. + # NOTE: In that case, returncode() may block waiting on the process + # (which may be waiting for user input). Since most WatcherError + # situations lack a useful exit code anyways, skipping this doesn't + # really hurt any. + exited = None if watcher_errors else self.returncode() + # TODO: as noted elsewhere, I kinda hate this. Consider changing + # generate_result()'s API in next major rev so we can tidy up. + result = self.generate_result( + **dict( + self.result_kwargs, stdout=stdout, stderr=stderr, exited=exited + ) + ) + return result + + def _thread_join_timeout(self, target: Callable) -> Optional[int]: + # Add a timeout to out/err thread joins when it looks like they're not + # dead but their counterpart is dead; this indicates issue #351 (fixed + # by #432) where the subproc may hang because its stdout (or stderr) is + # no longer being consumed by the dead thread (and a pipe is filling + # up.) In that case, the non-dead thread is likely to block forever on + # a `recv` unless we add this timeout. + if target == self.handle_stdin: + return None + opposite = self.handle_stderr + if target == self.handle_stderr: + opposite = self.handle_stdout + if opposite in self.threads and self.threads[opposite].is_dead: + return 1 + return None + + def create_io_threads( + self, + ) -> Tuple[Dict[Callable, ExceptionHandlingThread], List[str], List[str]]: + """ + Create and return a dictionary of IO thread worker objects. + + Caller is expected to handle persisting and/or starting the wrapped + threads. + """ + stdout: List[str] = [] + stderr: List[str] = [] + # Set up IO thread parameters (format - body_func: {kwargs}) + thread_args: Dict[Callable, Any] = { + self.handle_stdout: { + "buffer_": stdout, + "hide": "stdout" in self.opts["hide"], + "output": self.streams["out"], + } + } + # After opt processing above, in_stream will be a real stream obj or + # False, so we can truth-test it. We don't even create a stdin-handling + # thread if it's False, meaning user indicated stdin is nonexistent or + # problematic. + if self.streams["in"]: + thread_args[self.handle_stdin] = { + "input_": self.streams["in"], + "output": self.streams["out"], + "echo": self.opts["echo_stdin"], + } + if not self.using_pty: + thread_args[self.handle_stderr] = { + "buffer_": stderr, + "hide": "stderr" in self.opts["hide"], + "output": self.streams["err"], + } + # Kick off IO threads + threads = {} + for target, kwargs in thread_args.items(): + t = ExceptionHandlingThread(target=target, kwargs=kwargs) + threads[target] = t + return threads, stdout, stderr + + def generate_result(self, **kwargs: Any) -> "Result": + """ + Create & return a suitable `Result` instance from the given ``kwargs``. + + Subclasses may wish to override this in order to manipulate things or + generate a `Result` subclass (e.g. ones containing additional metadata + besides the default). + + .. versionadded:: 1.0 + """ + return Result(**kwargs) + + def read_proc_output(self, reader: Callable) -> Generator[str, None, None]: + """ + Iteratively read & decode bytes from a subprocess' out/err stream. + + :param reader: + A literal reader function/partial, wrapping the actual stream + object in question, which takes a number of bytes to read, and + returns that many bytes (or ``None``). + + ``reader`` should be a reference to either `read_proc_stdout` or + `read_proc_stderr`, which perform the actual, platform/library + specific read calls. + + :returns: + A generator yielding strings. + + Specifically, each resulting string is the result of decoding + `read_chunk_size` bytes read from the subprocess' out/err stream. + + .. versionadded:: 1.0 + """ + # NOTE: Typically, reading from any stdout/err (local, remote or + # otherwise) can be thought of as "read until you get nothing back". + # This is preferable over "wait until an out-of-band signal claims the + # process is done running" because sometimes that signal will appear + # before we've actually read all the data in the stream (i.e.: a race + # condition). + while True: + data = reader(self.read_chunk_size) + if not data: + break + yield self.decode(data) + + def write_our_output(self, stream: IO, string: str) -> None: + """ + Write ``string`` to ``stream``. + + Also calls ``.flush()`` on ``stream`` to ensure that real terminal + streams don't buffer. + + :param stream: + A file-like stream object, mapping to the ``out_stream`` or + ``err_stream`` parameters of `run`. + + :param string: A Unicode string object. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + stream.write(string) + stream.flush() + + def _handle_output( + self, + buffer_: List[str], + hide: bool, + output: IO, + reader: Callable, + ) -> None: + # TODO: store un-decoded/raw bytes somewhere as well... + for data in self.read_proc_output(reader): + # Echo to local stdout if necessary + # TODO: should we rephrase this as "if you want to hide, give me a + # dummy output stream, e.g. something like /dev/null"? Otherwise, a + # combo of 'hide=stdout' + 'here is an explicit out_stream' means + # out_stream is never written to, and that seems...odd. + if not hide: + self.write_our_output(stream=output, string=data) + # Store in shared buffer so main thread can do things with the + # result after execution completes. + # NOTE: this is threadsafe insofar as no reading occurs until after + # the thread is join()'d. + buffer_.append(data) + # Run our specific buffer through the autoresponder framework + self.respond(buffer_) + + def handle_stdout( + self, buffer_: List[str], hide: bool, output: IO + ) -> None: + """ + Read process' stdout, storing into a buffer & printing/parsing. + + Intended for use as a thread target. Only terminates when all stdout + from the subprocess has been read. + + :param buffer_: The capture buffer shared with the main thread. + :param bool hide: Whether or not to replay data into ``output``. + :param output: + Output stream (file-like object) to write data into when not + hiding. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + self._handle_output( + buffer_, hide, output, reader=self.read_proc_stdout + ) + + def handle_stderr( + self, buffer_: List[str], hide: bool, output: IO + ) -> None: + """ + Read process' stderr, storing into a buffer & printing/parsing. + + Identical to `handle_stdout` except for the stream read from; see its + docstring for API details. + + .. versionadded:: 1.0 + """ + self._handle_output( + buffer_, hide, output, reader=self.read_proc_stderr + ) + + def read_our_stdin(self, input_: IO) -> Optional[str]: + """ + Read & decode bytes from a local stdin stream. + + :param input_: + Actual stream object to read from. Maps to ``in_stream`` in `run`, + so will often be ``sys.stdin``, but might be any stream-like + object. + + :returns: + A Unicode string, the result of decoding the read bytes (this might + be the empty string if the pipe has closed/reached EOF); or + ``None`` if stdin wasn't ready for reading yet. + + .. versionadded:: 1.0 + """ + # TODO: consider moving the character_buffered contextmanager call in + # here? Downside is it would be flipping those switches for every byte + # read instead of once per session, which could be costly (?). + bytes_ = None + if ready_for_reading(input_): + try: + bytes_ = input_.read(bytes_to_read(input_)) + except OSError as e: + # Assume EBADF in this situation implies running under nohup or + # similar, where: + # - we cannot reliably detect a bad FD up front + # - trying to read it would explode + # - user almost surely doesn't care about stdin anyways + # and ignore it (but not other OSErrors!) + if e.errno != errno.EBADF: + raise + # Decode if it appears to be binary-type. (From real terminal + # streams, usually yes; from file-like objects, often no.) + if bytes_ and isinstance(bytes_, bytes): + # TODO: will decoding 1 byte at a time break multibyte + # character encodings? How to square interactivity with that? + bytes_ = self.decode(bytes_) + return bytes_ + + def handle_stdin( + self, + input_: IO, + output: IO, + echo: bool = False, + ) -> None: + """ + Read local stdin, copying into process' stdin as necessary. + + Intended for use as a thread target. + + .. note:: + Because real terminal stdin streams have no well-defined "end", if + such a stream is detected (based on existence of a callable + ``.fileno()``) this method will wait until `program_finished` is + set, before terminating. + + When the stream doesn't appear to be from a terminal, the same + semantics as `handle_stdout` are used - the stream is simply + ``read()`` from until it returns an empty value. + + :param input_: Stream (file-like object) from which to read. + :param output: Stream (file-like object) to which echoing may occur. + :param bool echo: User override option for stdin-stdout echoing. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + # TODO: reinstate lock/whatever thread logic from fab v1 which prevents + # reading from stdin while other parts of the code are prompting for + # runtime passwords? (search for 'input_enabled') + # TODO: fabric#1339 is strongly related to this, if it's not literally + # exposing some regression in Fabric 1.x itself. + closed_stdin = False + with character_buffered(input_): + while True: + data = self.read_our_stdin(input_) + if data: + # Mirror what we just read to process' stdin. + # We encode to ensure bytes, but skip the decode step since + # there's presumably no need (nobody's interacting with + # this data programmatically). + self.write_proc_stdin(data) + # Also echo it back to local stdout (or whatever + # out_stream is set to) when necessary. + if echo is None: + echo = self.should_echo_stdin(input_, output) + if echo: + self.write_our_output(stream=output, string=data) + # Empty string/char/byte != None. Can't just use 'else' here. + elif data is not None: + # When reading from file-like objects that aren't "real" + # terminal streams, an empty byte signals EOF. + if not self.using_pty and not closed_stdin: + self.close_proc_stdin() + closed_stdin = True + # Dual all-done signals: program being executed is done + # running, *and* we don't seem to be reading anything out of + # stdin. (NOTE: If we only test the former, we may encounter + # race conditions re: unread stdin.) + if self.program_finished.is_set() and not data: + break + # Take a nap so we're not chewing CPU. + time.sleep(self.input_sleep) + + def should_echo_stdin(self, input_: IO, output: IO) -> bool: + """ + Determine whether data read from ``input_`` should echo to ``output``. + + Used by `handle_stdin`; tests attributes of ``input_`` and ``output``. + + :param input_: Input stream (file-like object). + :param output: Output stream (file-like object). + :returns: A ``bool``. + + .. versionadded:: 1.0 + """ + return (not self.using_pty) and isatty(input_) + + def respond(self, buffer_: List[str]) -> None: + """ + Write to the program's stdin in response to patterns in ``buffer_``. + + The patterns and responses are driven by the `.StreamWatcher` instances + from the ``watchers`` kwarg of `run` - see :doc:`/concepts/watchers` + for a conceptual overview. + + :param buffer: + The capture buffer for this thread's particular IO stream. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + # Join buffer contents into a single string; without this, + # StreamWatcher subclasses can't do things like iteratively scan for + # pattern matches. + # NOTE: using string.join should be "efficient enough" for now, re: + # speed and memory use. Should that become false, consider using + # StringIO or cStringIO (tho the latter doesn't do Unicode well?) which + # is apparently even more efficient. + stream = "".join(buffer_) + for watcher in self.watchers: + for response in watcher.submit(stream): + self.write_proc_stdin(response) + + def generate_env( + self, env: Dict[str, Any], replace_env: bool + ) -> Dict[str, Any]: + """ + Return a suitable environment dict based on user input & behavior. + + :param dict env: Dict supplying overrides or full env, depending. + :param bool replace_env: + Whether ``env`` updates, or is used in place of, the value of + `os.environ`. + + :returns: A dictionary of shell environment vars. + + .. versionadded:: 1.0 + """ + return env if replace_env else dict(os.environ, **env) + + def should_use_pty(self, pty: bool, fallback: bool) -> bool: + """ + Should execution attempt to use a pseudo-terminal? + + :param bool pty: + Whether the user explicitly asked for a pty. + :param bool fallback: + Whether falling back to non-pty execution should be allowed, in + situations where ``pty=True`` but a pty could not be allocated. + + .. versionadded:: 1.0 + """ + # NOTE: fallback not used: no falling back implemented by default. + return pty + + @property + def has_dead_threads(self) -> bool: + """ + Detect whether any IO threads appear to have terminated unexpectedly. + + Used during process-completion waiting (in `wait`) to ensure we don't + deadlock our child process if our IO processing threads have + errored/died. + + :returns: + ``True`` if any threads appear to have terminated with an + exception, ``False`` otherwise. + + .. versionadded:: 1.0 + """ + return any(x.is_dead for x in self.threads.values()) + + def wait(self) -> None: + """ + Block until the running command appears to have exited. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + while True: + proc_finished = self.process_is_finished + dead_threads = self.has_dead_threads + if proc_finished or dead_threads: + break + time.sleep(self.input_sleep) + + def write_proc_stdin(self, data: str) -> None: + """ + Write encoded ``data`` to the running process' stdin. + + :param data: A Unicode string. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + # Encode always, then request implementing subclass to perform the + # actual write to subprocess' stdin. + self._write_proc_stdin(data.encode(self.encoding)) + + def decode(self, data: bytes) -> str: + """ + Decode some ``data`` bytes, returning Unicode. + + .. versionadded:: 1.0 + """ + # NOTE: yes, this is a 1-liner. The point is to make it much harder to + # forget to use 'replace' when decoding :) + return data.decode(self.encoding, "replace") + + @property + def process_is_finished(self) -> bool: + """ + Determine whether our subprocess has terminated. + + .. note:: + The implementation of this method should be nonblocking, as it is + used within a query/poll loop. + + :returns: + ``True`` if the subprocess has finished running, ``False`` + otherwise. + + .. versionadded:: 1.0 + """ + raise NotImplementedError + + def start(self, command: str, shell: str, env: Dict[str, Any]) -> None: + """ + Initiate execution of ``command`` (via ``shell``, with ``env``). + + Typically this means use of a forked subprocess or requesting start of + execution on a remote system. + + In most cases, this method will also set subclass-specific member + variables used in other methods such as `.wait` and/or `returncode`. + + :param str command: + Command string to execute. + + :param str shell: + Shell to use when executing ``command``. + + :param dict env: + Environment dict used to prep shell environment. + + .. versionadded:: 1.0 + """ + raise NotImplementedError + + def start_timer(self, timeout: int) -> None: + """ + Start a timer to `kill` our subprocess after ``timeout`` seconds. + """ + if timeout is not None: + self._timer = threading.Timer(timeout, self.kill) + self._timer.start() + + def read_proc_stdout(self, num_bytes: int) -> Optional[bytes]: + """ + Read ``num_bytes`` from the running process' stdout stream. + + :param int num_bytes: Number of bytes to read at maximum. + + :returns: A string/bytes object. + + .. versionadded:: 1.0 + """ + raise NotImplementedError + + def read_proc_stderr(self, num_bytes: int) -> Optional[bytes]: + """ + Read ``num_bytes`` from the running process' stderr stream. + + :param int num_bytes: Number of bytes to read at maximum. + + :returns: A string/bytes object. + + .. versionadded:: 1.0 + """ + raise NotImplementedError + + def _write_proc_stdin(self, data: bytes) -> None: + """ + Write ``data`` to running process' stdin. + + This should never be called directly; it's for subclasses to implement. + See `write_proc_stdin` for the public API call. + + :param data: Already-encoded byte data suitable for writing. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + raise NotImplementedError + + def close_proc_stdin(self) -> None: + """ + Close running process' stdin. + + :returns: ``None``. + + .. versionadded:: 1.3 + """ + raise NotImplementedError + + def default_encoding(self) -> str: + """ + Return a string naming the expected encoding of subprocess streams. + + This return value should be suitable for use by encode/decode methods. + + .. versionadded:: 1.0 + """ + # TODO: probably wants to be 2 methods, one for local and one for + # subprocess. For now, good enough to assume both are the same. + return default_encoding() + + def send_interrupt(self, interrupt: "KeyboardInterrupt") -> None: + """ + Submit an interrupt signal to the running subprocess. + + In almost all implementations, the default behavior is what will be + desired: submit ``\x03`` to the subprocess' stdin pipe. However, we + leave this as a public method in case this default needs to be + augmented or replaced. + + :param interrupt: + The locally-sourced ``KeyboardInterrupt`` causing the method call. + + :returns: ``None``. + + .. versionadded:: 1.0 + """ + self.write_proc_stdin("\x03") + + def returncode(self) -> Optional[int]: + """ + Return the numeric return/exit code resulting from command execution. + + :returns: + `int`, if any reasonable return code could be determined, or + ``None`` in corner cases where that was not possible. + + .. versionadded:: 1.0 + """ + raise NotImplementedError + + def stop(self) -> None: + """ + Perform final cleanup, if necessary. + + This method is called within a ``finally`` clause inside the main + `~.Runner.run` method. Depending on the subclass, it may be a no-op, or + it may do things such as close network connections or open files. + + :returns: ``None`` + + .. versionadded:: 1.0 + """ + if self._timer: + self._timer.cancel() + + def kill(self) -> None: + """ + Forcibly terminate the subprocess. + + Typically only used by the timeout functionality. + + This is often a "best-effort" attempt, e.g. remote subprocesses often + must settle for simply shutting down the local side of the network + connection and hoping the remote end eventually gets the message. + """ + raise NotImplementedError + + @property + def timed_out(self) -> bool: + """ + Returns ``True`` if the subprocess stopped because it timed out. + + .. versionadded:: 1.3 + """ + # Timer expiry implies we did time out. (The timer itself will have + # killed the subprocess, allowing us to even get to this point.) + return bool(self._timer and not self._timer.is_alive()) + + def get_pid(self) -> Optional[int]: + """ + When possible, obtain the subprocess PID. + + The default implementation returns None; subclasses may return useful + integers. + """ + return None + + +class Local(Runner): + """ + Execute a command on the local system in a subprocess. + + .. note:: + When Invoke itself is executed without a controlling terminal (e.g. + when ``sys.stdin`` lacks a useful ``fileno``), it's not possible to + present a handle on our PTY to local subprocesses. In such situations, + `Local` will fallback to behaving as if ``pty=False`` (on the theory + that degraded execution is better than none at all) as well as printing + a warning to stderr. + + To disable this behavior, say ``fallback=False``. + + .. versionadded:: 1.0 + """ + + def __init__(self, context: "Context") -> None: + super().__init__(context) + # Bookkeeping var for pty use case + self.status = 0 + + def should_use_pty(self, pty: bool = False, fallback: bool = True) -> bool: + use_pty = False + if pty: + use_pty = True + # TODO: pass in & test in_stream, not sys.stdin + if not has_fileno(sys.stdin) and fallback: + if not self.warned_about_pty_fallback: + err = "WARNING: stdin has no fileno; falling back to non-pty execution!\n" # noqa + sys.stderr.write(err) + self.warned_about_pty_fallback = True + use_pty = False + return use_pty + + def read_proc_stdout(self, num_bytes: int) -> Optional[bytes]: + # Obtain useful read-some-bytes function + if self.using_pty: + # Need to handle spurious OSErrors on some Linux platforms. + try: + data = os.read(self.parent_fd, num_bytes) + except OSError as e: + # Only eat I/O specific OSErrors so we don't hide others + stringified = str(e) + io_errors = ( + # The typical default + "Input/output error", + # Some less common platforms phrase it this way + "I/O error", + ) + if not any(error in stringified for error in io_errors): + raise + # The bad OSErrors happen after all expected output has + # appeared, so we return a falsey value, which triggers the + # "end of output" logic in code using reader functions. + data = None + elif self.process and self.process.stdout: + data = os.read(self.process.stdout.fileno(), num_bytes) + else: + data = None + return data + + def read_proc_stderr(self, num_bytes: int) -> Optional[bytes]: + # NOTE: when using a pty, this will never be called. + # TODO: do we ever get those OSErrors on stderr? Feels like we could? + if self.process and self.process.stderr: + return os.read(self.process.stderr.fileno(), num_bytes) + return None + + def _write_proc_stdin(self, data: bytes) -> None: + # NOTE: parent_fd from os.fork() is a read/write pipe attached to our + # forked process' stdout/stdin, respectively. + if self.using_pty: + fd = self.parent_fd + elif self.process and self.process.stdin: + fd = self.process.stdin.fileno() + else: + raise SubprocessPipeError( + "Unable to write to missing subprocess or stdin!" + ) + # Try to write, ignoring broken pipes if encountered (implies child + # process exited before the process piping stdin to us finished; + # there's nothing we can do about that!) + try: + os.write(fd, data) + except OSError as e: + if "Broken pipe" not in str(e): + raise + + def close_proc_stdin(self) -> None: + if self.using_pty: + # there is no working scenario to tell the process that stdin + # closed when using pty + raise SubprocessPipeError("Cannot close stdin when pty=True") + elif self.process and self.process.stdin: + self.process.stdin.close() + else: + raise SubprocessPipeError( + "Unable to close missing subprocess or stdin!" + ) + + def start(self, command: str, shell: str, env: Dict[str, Any]) -> None: + if self.using_pty: + if pty is None: # Encountered ImportError + err = "You indicated pty=True, but your platform doesn't support the 'pty' module!" # noqa + sys.exit(err) + cols, rows = pty_size() + self.pid, self.parent_fd = pty.fork() + # If we're the child process, load up the actual command in a + # shell, just as subprocess does; this replaces our process - whose + # pipes are all hooked up to the PTY - with the "real" one. + if self.pid == 0: + # TODO: both pty.spawn() and pexpect.spawn() do a lot of + # setup/teardown involving tty.setraw, getrlimit, signal. + # Ostensibly we'll want some of that eventually, but if + # possible write tests - integration-level if necessary - + # before adding it! + # + # Set pty window size based on what our own controlling + # terminal's window size appears to be. + # TODO: make subroutine? + winsize = struct.pack("HHHH", rows, cols, 0, 0) + fcntl.ioctl(sys.stdout.fileno(), termios.TIOCSWINSZ, winsize) + # Use execvpe for bare-minimum "exec w/ variable # args + env" + # behavior. + # NOTE: stdlib subprocess (actually its posix flavor, which is + # written in C) uses either execve or execv, depending. + os.execvpe(shell, [shell, "-c", command], env) + else: + self.process = Popen( + command, + shell=True, + executable=shell, + env=env, + stdout=PIPE, + stderr=PIPE, + stdin=PIPE, + ) + + def get_pid(self) -> int: + return self.pid if self.using_pty else self.process.pid + + def kill(self) -> None: + try: + os.kill(self.get_pid(), signal.SIGKILL) + except ProcessLookupError: + # In odd situations where our subprocess is already dead, don't + # throw this upwards. + pass + + @property + def process_is_finished(self) -> bool: + if self.using_pty: + # NOTE: + # https://github.com/pexpect/ptyprocess/blob/4058faa05e2940662ab6da1330aa0586c6f9cd9c/ptyprocess/ptyprocess.py#L680-L687 + # implies that Linux "requires" use of the blocking, non-WNOHANG + # version of this call. Our testing doesn't verify this, however, + # so... + # NOTE: It does appear to be totally blocking on Windows, so our + # issue #351 may be totally unsolvable there. Unclear. + pid_val, self.status = os.waitpid(self.pid, os.WNOHANG) + return pid_val != 0 + else: + return self.process.poll() is not None + + def returncode(self) -> Optional[int]: + if self.using_pty: + # No subprocess.returncode available; use WIFEXITED/WIFSIGNALED to + # determine whch of WEXITSTATUS / WTERMSIG to use. + # TODO: is it safe to just say "call all WEXITSTATUS/WTERMSIG and + # return whichever one of them is nondefault"? Probably not? + # NOTE: doing this in an arbitrary order should be safe since only + # one of the WIF* methods ought to ever return True. + code = None + if os.WIFEXITED(self.status): + code = os.WEXITSTATUS(self.status) + elif os.WIFSIGNALED(self.status): + code = os.WTERMSIG(self.status) + # Match subprocess.returncode by turning signals into negative + # 'exit code' integers. + code = -1 * code + return code + # TODO: do we care about WIFSTOPPED? Maybe someday? + else: + return self.process.returncode + + def stop(self) -> None: + super().stop() + # If we opened a PTY for child communications, make sure to close() it, + # otherwise long-running Invoke-using processes exhaust their file + # descriptors eventually. + if self.using_pty: + try: + os.close(self.parent_fd) + except Exception: + # If something weird happened preventing the close, there's + # nothing to be done about it now... + pass + + +class Result: + """ + A container for information about the result of a command execution. + + All params are exposed as attributes of the same name and type. + + :param str stdout: + The subprocess' standard output. + + :param str stderr: + Same as ``stdout`` but containing standard error (unless the process + was invoked via a pty, in which case it will be empty; see + `.Runner.run`.) + + :param str encoding: + The string encoding used by the local shell environment. + + :param str command: + The command which was executed. + + :param str shell: + The shell binary used for execution. + + :param dict env: + The shell environment used for execution. (Default is the empty dict, + ``{}``, not ``None`` as displayed in the signature.) + + :param int exited: + An integer representing the subprocess' exit/return code. + + .. note:: + This may be ``None`` in situations where the subprocess did not run + to completion, such as when auto-responding failed or a timeout was + reached. + + :param bool pty: + A boolean describing whether the subprocess was invoked with a pty or + not; see `.Runner.run`. + + :param tuple hide: + A tuple of stream names (none, one or both of ``('stdout', 'stderr')``) + which were hidden from the user when the generating command executed; + this is a normalized value derived from the ``hide`` parameter of + `.Runner.run`. + + For example, ``run('command', hide='stdout')`` will yield a `Result` + where ``result.hide == ('stdout',)``; ``hide=True`` or ``hide='both'`` + results in ``result.hide == ('stdout', 'stderr')``; and ``hide=False`` + (the default) generates ``result.hide == ()`` (the empty tuple.) + + :param int pid: + The process ID of the subprocess that was executed (normally) or is + executing (when asynchronous or disowned). + + .. versionadded:: 3.0 + + :param bool disowned: + Whether the subprocess was 'disowned' or detached from ourselves; in + this mode may other attributes or methods of this `Result` will be + unreliable, see `Runner.run` docs for details. You may want to use your + own methods to interrogate your operating system about this object's + ``pid``, however, which will usually be valid. + + .. versionadded:: 3.0 + + .. note:: + `Result` objects' truth evaluation is equivalent to their `.ok` + attribute's value. Therefore, quick-and-dirty expressions like the + following are possible:: + + if run("some shell command"): + do_something() + else: + handle_problem() + + However, remember `Zen of Python #2 + `_. + + .. versionadded:: 1.0 + """ + + # TODO: inherit from namedtuple instead? heh (or: use attrs from pypi) + def __init__( + self, + stdout: str = "", + stderr: str = "", + encoding: Optional[str] = None, + command: str = "", + shell: str = "", + env: Optional[Dict[str, Any]] = None, + exited: int = 0, + pty: bool = False, + hide: Tuple[str, ...] = tuple(), + pid: Optional[int] = None, + disowned: bool = False, + ): + self.stdout = stdout + self.stderr = stderr + if encoding is None: + encoding = default_encoding() + self.encoding = encoding + self.command = command + self.shell = shell + self.env = {} if env is None else env + self.exited = exited + self.pty = pty + self.hide = hide + self.pid = pid + self.disowned = disowned + + @property + def return_code(self) -> int: + """ + An alias for ``.exited``. + + .. versionadded:: 1.0 + """ + return self.exited + + def __bool__(self) -> bool: + return self.ok + + def __str__(self) -> str: + if self.exited is not None: + desc = "Command exited with status {}.".format(self.exited) + else: + desc = "Command was not fully executed due to watcher error." + ret = [desc] + for x in ("stdout", "stderr"): + val = getattr(self, x) + ret.append( + f"""=== {x} === +{val.rstrip()} +""" + if val + else "(no {})".format(x) + ) + return "\n".join(ret) + + def __repr__(self) -> str: + # TODO: more? e.g. len of stdout/err? (how to represent cleanly in a + # 'x=y' format like this? e.g. '4b' is ambiguous as to what it + # represents + template = "" + return template.format(self.command, self.exited) + + @property + def ok(self) -> bool: + """ + A boolean equivalent to ``exited == 0``. + + .. versionadded:: 1.0 + """ + return bool(self.exited == 0) + + @property + def failed(self) -> bool: + """ + The inverse of ``ok``. + + I.e., ``True`` if the program exited with a nonzero return code, and + ``False`` otherwise. + + .. versionadded:: 1.0 + """ + return not self.ok + + def tail(self, stream: str, count: int = 10) -> str: + """ + Return the last ``count`` lines of ``stream``, plus leading whitespace. + + :param str stream: + Name of some captured stream attribute, eg ``"stdout"``. + :param int count: + Number of lines to preserve. + + .. versionadded:: 1.3 + """ + # TODO: preserve alternate line endings? Mehhhh + # NOTE: no trailing \n preservation; easier for below display if + # normalized + return "\n\n" + "\n".join(getattr(self, stream).splitlines()[-count:]) + + +class Promise(Result, AbstractContextManager): + """ + A promise of some future `Result`, yielded from asynchronous execution. + + This class' primary API member is `join`; instances may also be used as + context managers, which will automatically call `join` when the block + exits. In such cases, the context manager yields ``self``. + + `Promise` also exposes copies of many `Result` attributes, specifically + those that derive from `~Runner.run` kwargs and not the result of command + execution. For example, ``command`` is replicated here, but ``stdout`` is + not. + + .. versionadded:: 1.4 + """ + + #: The `.Runner` instance which made this `.Promise`. + runner: Runner + + def __init__(self, runner: "Runner") -> None: + """ + Create a new promise. + + :param runner: + An in-flight `Runner` instance making this promise. + + Must already have started the subprocess and spun up IO threads. + """ + self.runner = runner + # Basically just want exactly this (recently refactored) kwargs dict. + # TODO: consider proxying vs copying, but prob wait for refactor + for key, value in self.runner.result_kwargs.items(): + setattr(self, key, value) + + def join(self) -> Result: + """ + Block until associated subprocess exits, returning/raising the result. + + This acts identically to the end of a synchronously executed ``run``, + namely that: + + - various background threads (such as IO workers) are themselves + joined; + - if the subprocess exited normally, a `Result` is returned; + - in any other case (unforeseen exceptions, IO sub-thread + `.ThreadException`, `.Failure`, `.WatcherError`) the relevant + exception is raised here. + + See `~Runner.run` docs, or those of the relevant classes, for further + details. + """ + try: + return self.runner._finish() + finally: + self.runner.stop() + + def __enter__(self) -> "Promise": + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_value: BaseException, + exc_tb: Optional[TracebackType], + ) -> None: + self.join() + + def __repr__(self) -> str: + return f"" + + +def normalize_hide( + val: Any, + out_stream: Optional[str] = None, + err_stream: Optional[str] = None, +) -> Tuple[str, ...]: + # Normalize to list-of-stream-names + hide_vals = (None, False, "out", "stdout", "err", "stderr", "both", True) + if val not in hide_vals: + err = "'hide' got {!r} which is not in {!r}" + raise ValueError(err.format(val, hide_vals)) + if val in (None, False): + hide = [] + elif val in ("both", True): + hide = ["stdout", "stderr"] + elif val == "out": + hide = ["stdout"] + elif val == "err": + hide = ["stderr"] + else: + hide = [val] + # Revert any streams that have been overridden from the default value + if out_stream is not None and "stdout" in hide: + hide.remove("stdout") + if err_stream is not None and "stderr" in hide: + hide.remove("stderr") + return tuple(hide) + + +def default_encoding() -> str: + """ + Obtain apparent interpreter-local default text encoding. + + Often used as a baseline in situations where we must use SOME encoding for + unknown-but-presumably-text bytes, and the user has not specified an + override. + """ + encoding = locale.getpreferredencoding(False) + return encoding diff --git a/.venv/lib/python3.9/site-packages/invoke/tasks.py b/.venv/lib/python3.9/site-packages/invoke/tasks.py new file mode 100644 index 0000000..97ed8a2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/tasks.py @@ -0,0 +1,525 @@ +""" +This module contains the core `.Task` class & convenience decorators used to +generate new tasks. +""" + +import inspect +import types +from copy import deepcopy +from functools import update_wrapper +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + Generic, + Iterable, + List, + Optional, + Set, + Tuple, + Type, + TypeVar, + Union, +) + +from .context import Context +from .parser import Argument, ParseResult, translate_underscores + +if TYPE_CHECKING: + from inspect import Signature + + from .config import Config + +T = TypeVar("T", bound=Callable) + + +class Task(Generic[T]): + """ + Core object representing an executable task & its argument specification. + + For the most part, this object is a clearinghouse for all of the data that + may be supplied to the `@task ` decorator, such as + ``name``, ``aliases``, ``positional`` etc, which appear as attributes. + + In addition, instantiation copies some introspection/documentation friendly + metadata off of the supplied ``body`` object, such as ``__doc__``, + ``__name__`` and ``__module__``, allowing it to "appear as" ``body`` for + most intents and purposes. + + .. versionadded:: 1.0 + """ + + # TODO: store these kwarg defaults central, refer to those values both here + # and in @task. + # TODO: allow central per-session / per-taskmodule control over some of + # them, e.g. (auto_)positional, auto_shortflags. + # NOTE: we shadow __builtins__.help here on purpose - obfuscating to avoid + # it feels bad, given the builtin will never actually be in play anywhere + # except a debug shell whose frame is exactly inside this class. + def __init__( + self, + body: Callable, + name: Optional[str] = None, + aliases: Iterable[str] = (), + positional: Optional[Iterable[str]] = None, + optional: Iterable[str] = (), + default: bool = False, + auto_shortflags: bool = True, + help: Optional[Dict[str, Any]] = None, + pre: Optional[Union[List[str], str]] = None, + post: Optional[Union[List[str], str]] = None, + autoprint: bool = False, + iterable: Optional[Iterable[str]] = None, + incrementable: Optional[Iterable[str]] = None, + ) -> None: + # Real callable + self.body = body + update_wrapper(self, self.body) + # Copy a bunch of special properties from the body for the benefit of + # Sphinx autodoc or other introspectors. + self.__doc__ = getattr(body, "__doc__", "") + self.__name__ = getattr(body, "__name__", "") + self.__module__ = getattr(body, "__module__", "") + # Default name, alternate names, and whether it should act as the + # default for its parent collection + self._name = name + self.aliases = aliases + self.is_default = default + # Arg/flag/parser hints + self.positional = self.fill_implicit_positionals(positional) + self.optional = tuple(optional) + self.iterable = iterable or [] + self.incrementable = incrementable or [] + self.auto_shortflags = auto_shortflags + self.help = (help or {}).copy() + # Call chain bidness + self.pre = pre or [] + self.post = post or [] + self.times_called = 0 + # Whether to print return value post-execution + self.autoprint = autoprint + + @property + def name(self) -> str: + return self._name or self.__name__ + + def __repr__(self) -> str: + aliases = "" + if self.aliases: + aliases = " ({})".format(", ".join(self.aliases)) + return "".format(self.name, aliases) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Task) or self.name != other.name: + return False + # Functions do not define __eq__ but func_code objects apparently do. + # (If we're wrapping some other callable, they will be responsible for + # defining equality on their end.) + if self.body == other.body: + return True + else: + try: + return self.body.__code__ == other.body.__code__ + except AttributeError: + return False + + def __hash__(self) -> int: + # Presumes name and body will never be changed. Hrm. + # Potentially cleaner to just not use Tasks as hash keys, but let's do + # this for now. + return hash(self.name) + hash(self.body) + + def __call__(self, *args: Any, **kwargs: Any) -> T: + # Guard against calling tasks with no context. + if not isinstance(args[0], Context): + err = "Task expected a Context as its first arg, got {} instead!" + # TODO: raise a custom subclass _of_ TypeError instead + raise TypeError(err.format(type(args[0]))) + result = self.body(*args, **kwargs) + self.times_called += 1 + return result + + @property + def called(self) -> bool: + return self.times_called > 0 + + def argspec(self, body: Callable) -> "Signature": + """ + Returns a modified `inspect.Signature` based on that of ``body``. + + :returns: + an `inspect.Signature` matching that of ``body``, but with the + initial context argument removed. + :raises TypeError: + if the task lacks an initial positional `.Context` argument. + + .. versionadded:: 1.0 + .. versionchanged:: 2.0 + Changed from returning a two-tuple of ``(arg_names, spec_dict)`` to + returning an `inspect.Signature`. + """ + # Handle callable-but-not-function objects + if isinstance(body, types.FunctionType): + func = body + else: + func = body.__call__ # type: ignore + # Rebuild signature with first arg dropped, or die usefully(ish trying + sig = inspect.signature(func) + params = list(sig.parameters.values()) + # TODO: this ought to also check if an extant 1st param _was_ a Context + # arg, and yell similarly if not. + if not len(params): + # TODO: see TODO under __call__, this should be same type + raise TypeError("Tasks must have an initial Context argument!") + return sig.replace(parameters=params[1:]) + + def fill_implicit_positionals( + self, positional: Optional[Iterable[str]] + ) -> Iterable[str]: + # If positionals is None, everything lacking a default + # value will be automatically considered positional. + if positional is None: + positional = [ + x.name + for x in self.argspec(self.body).parameters.values() + if x.default is inspect.Signature.empty + ] + return positional + + def arg_opts( + self, name: str, default: str, taken_names: Set[str] + ) -> Dict[str, Any]: + opts: Dict[str, Any] = {} + # Whether it's positional or not + opts["positional"] = name in self.positional + # Whether it is a value-optional flag + opts["optional"] = name in self.optional + # Whether it should be of an iterable (list) kind + if name in self.iterable: + opts["kind"] = list + # If user gave a non-None default, hopefully they know better + # than us what they want here (and hopefully it offers the list + # protocol...) - otherwise supply useful default + opts["default"] = default if default is not None else [] + # Whether it should increment its value or not + if name in self.incrementable: + opts["incrementable"] = True + # Argument name(s) (replace w/ dashed version if underscores present, + # and move the underscored version to be the attr_name instead.) + original_name = name # For reference in eg help= + if "_" in name: + opts["attr_name"] = name + name = translate_underscores(name) + names = [name] + if self.auto_shortflags: + # Must know what short names are available + for char in name: + if not (char == name or char in taken_names): + names.append(char) + break + opts["names"] = names + # Handle default value & kind if possible + if default not in (None, inspect.Signature.empty): + # TODO: allow setting 'kind' explicitly. + # NOTE: skip setting 'kind' if optional is True + type(default) is + # bool; that results in a nonsensical Argument which gives the + # parser grief in a few ways. + kind = type(default) + if not (opts["optional"] and kind is bool): + opts["kind"] = kind + opts["default"] = default + # Help + for possibility in name, original_name: + if possibility in self.help: + opts["help"] = self.help.pop(possibility) + break + return opts + + def get_arguments( + self, ignore_unknown_help: Optional[bool] = None + ) -> List[Argument]: + """ + Return a list of Argument objects representing this task's signature. + + :param bool ignore_unknown_help: + Controls whether unknown help flags cause errors. See the config + option by the same name for details. + + .. versionadded:: 1.0 + .. versionchanged:: 1.7 + Added the ``ignore_unknown_help`` kwarg. + """ + # Core argspec + sig = self.argspec(self.body) + # Prime the list of all already-taken names (mostly for help in + # choosing auto shortflags) + taken_names = set(sig.parameters.keys()) + # Build arg list (arg_opts will take care of setting up shortnames, + # etc) + args = [] + for param in sig.parameters.values(): + new_arg = Argument( + **self.arg_opts(param.name, param.default, taken_names) + ) + args.append(new_arg) + # Update taken_names list with new argument's full name list + # (which may include new shortflags) so subsequent Argument + # creation knows what's taken. + taken_names.update(set(new_arg.names)) + # If any values were leftover after consuming a 'help' dict, it implies + # the user messed up & had a typo or similar. Let's explode. + if self.help and not ignore_unknown_help: + raise ValueError( + "Help field was set for param(s) that don't exist: {}".format( + list(self.help.keys()) + ) + ) + # Now we need to ensure positionals end up in the front of the list, in + # order given in self.positionals, so that when Context consumes them, + # this order is preserved. + for posarg in reversed(list(self.positional)): + for i, arg in enumerate(args): + if arg.name == posarg: + args.insert(0, args.pop(i)) + break + return args + + +def task(*args: Any, **kwargs: Any) -> Callable: + """ + Marks wrapped callable object as a valid Invoke task. + + May be called without any parentheses if no extra options need to be + specified. Otherwise, the following keyword arguments are allowed in the + parenthese'd form: + + * ``name``: Default name to use when binding to a `.Collection`. Useful for + avoiding Python namespace issues (i.e. when the desired CLI level name + can't or shouldn't be used as the Python level name.) + * ``aliases``: Specify one or more aliases for this task, allowing it to be + invoked as multiple different names. For example, a task named ``mytask`` + with a simple ``@task`` wrapper may only be invoked as ``"mytask"``. + Changing the decorator to be ``@task(aliases=['myothertask'])`` allows + invocation as ``"mytask"`` *or* ``"myothertask"``. + * ``positional``: Iterable overriding the parser's automatic "args with no + default value are considered positional" behavior. If a list of arg + names, no args besides those named in this iterable will be considered + positional. (This means that an empty list will force all arguments to be + given as explicit flags.) + * ``optional``: Iterable of argument names, declaring those args to + have :ref:`optional values `. Such arguments may be + given as value-taking options (e.g. ``--my-arg=myvalue``, wherein the + task is given ``"myvalue"``) or as Boolean flags (``--my-arg``, resulting + in ``True``). + * ``iterable``: Iterable of argument names, declaring them to :ref:`build + iterable values `. + * ``incrementable``: Iterable of argument names, declaring them to + :ref:`increment their values `. + * ``default``: Boolean option specifying whether this task should be its + collection's default task (i.e. called if the collection's own name is + given.) + * ``auto_shortflags``: Whether or not to automatically create short + flags from task options; defaults to True. + * ``help``: Dict mapping argument names to their help strings. Will be + displayed in ``--help`` output. For arguments containing underscores + (which are transformed into dashes on the CLI by default), either the + dashed or underscored version may be supplied here. + * ``pre``, ``post``: Lists of task objects to execute prior to, or after, + the wrapped task whenever it is executed. + * ``autoprint``: Boolean determining whether to automatically print this + task's return value to standard output when invoked directly via the CLI. + Defaults to False. + * ``klass``: Class to instantiate/return. Defaults to `.Task`. + + If any non-keyword arguments are given, they are taken as the value of the + ``pre`` kwarg for convenience's sake. (It is an error to give both + ``*args`` and ``pre`` at the same time.) + + .. versionadded:: 1.0 + .. versionchanged:: 1.1 + Added the ``klass`` keyword argument. + """ + klass: Type[Task] = kwargs.pop("klass", Task) + # @task -- no options were (probably) given. + if len(args) == 1 and callable(args[0]) and not isinstance(args[0], Task): + return klass(args[0], **kwargs) + # @task(pre, tasks, here) + if args: + if "pre" in kwargs: + raise TypeError( + "May not give *args and 'pre' kwarg simultaneously!" + ) + kwargs["pre"] = args + + def inner(body: Callable) -> Task[T]: + _task = klass(body, **kwargs) + return _task + + # update_wrapper(inner, klass) + return inner + + +class Call: + """ + Represents a call/execution of a `.Task` with given (kw)args. + + Similar to `~functools.partial` with some added functionality (such as the + delegation to the inner task, and optional tracking of the name it's being + called by.) + + .. versionadded:: 1.0 + """ + + def __init__( + self, + task: "Task", + called_as: Optional[str] = None, + args: Optional[Tuple[str, ...]] = None, + kwargs: Optional[Dict[str, Any]] = None, + ) -> None: + """ + Create a new `.Call` object. + + :param task: The `.Task` object to be executed. + + :param str called_as: + The name the task is being called as, e.g. if it was called by an + alias or other rebinding. Defaults to ``None``, aka, the task was + referred to by its default name. + + :param tuple args: + Positional arguments to call with, if any. Default: ``None``. + + :param dict kwargs: + Keyword arguments to call with, if any. Default: ``None``. + """ + self.task = task + self.called_as = called_as + self.args = args or tuple() + self.kwargs = kwargs or dict() + + # TODO: just how useful is this? feels like maybe overkill magic + def __getattr__(self, name: str) -> Any: + return getattr(self.task, name) + + def __deepcopy__(self, memo: object) -> "Call": + return self.clone() + + def __repr__(self) -> str: + aka = "" + if self.called_as is not None and self.called_as != self.task.name: + aka = " (called as: {!r})".format(self.called_as) + return "<{} {!r}{}, args: {!r}, kwargs: {!r}>".format( + self.__class__.__name__, + self.task.name, + aka, + self.args, + self.kwargs, + ) + + def __eq__(self, other: object) -> bool: + # NOTE: Not comparing 'called_as'; a named call of a given Task with + # same args/kwargs should be considered same as an unnamed call of the + # same Task with the same args/kwargs (e.g. pre/post task specified w/o + # name). Ditto tasks with multiple aliases. + for attr in "task args kwargs".split(): + if getattr(self, attr) != getattr(other, attr): + return False + return True + + def make_context( + self, + config: "Config", + core_parse_result: "ParseResult", + ) -> Context: + """ + Generate a `.Context` appropriate for this call, with given config. + + .. versionadded:: 1.0 + .. versionchanged:: 3.0 + Added the ``core_parse_result`` parameter. + """ + return Context(config=config, remainder=core_parse_result.remainder) + + def clone_data(self) -> Dict[str, Any]: + """ + Return keyword args suitable for cloning this call into another. + + .. versionadded:: 1.1 + """ + return dict( + task=self.task, + called_as=self.called_as, + args=deepcopy(self.args), + kwargs=deepcopy(self.kwargs), + ) + + def clone( + self, + into: Optional[Type["Call"]] = None, + with_: Optional[Dict[str, Any]] = None, + ) -> "Call": + """ + Return a standalone copy of this Call. + + Useful when parameterizing task executions. + + :param into: + A subclass to generate instead of the current class. Optional. + + :param dict with_: + A dict of additional keyword arguments to use when creating the new + clone; typically used when cloning ``into`` a subclass that has + extra args on top of the base class. Optional. + + .. note:: + This dict is used to ``.update()`` the original object's data + (the return value from its `clone_data`), so in the event of + a conflict, values in ``with_`` will win out. + + .. versionadded:: 1.0 + .. versionchanged:: 1.1 + Added the ``with_`` kwarg. + """ + klass = into if into is not None else self.__class__ + data = self.clone_data() + if with_ is not None: + data.update(with_) + return klass(**data) + + +def call(task: "Task", *args: Any, **kwargs: Any) -> "Call": + """ + Describes execution of a `.Task`, typically with pre-supplied arguments. + + Useful for setting up :ref:`pre/post task invocations + `. It's actually just a convenient wrapper + around the `.Call` class, which may be used directly instead if desired. + + For example, here's two build-like tasks that both refer to a ``setup`` + pre-task, one with no baked-in argument values (and thus no need to use + `.call`), and one that toggles a boolean flag:: + + @task + def setup(c, clean=False): + if clean: + c.run("rm -rf target") + # ... setup things here ... + c.run("tar czvf target.tgz target") + + @task(pre=[setup]) + def build(c): + c.run("build, accounting for leftover files...") + + @task(pre=[call(setup, clean=True)]) + def clean_build(c): + c.run("build, assuming clean slate...") + + Please see the constructor docs for `.Call` for details - this function's + ``args`` and ``kwargs`` map directly to the same arguments as in that + method. + + .. versionadded:: 1.0 + """ + return Call(task, args=args, kwargs=kwargs) diff --git a/.venv/lib/python3.9/site-packages/invoke/terminals.py b/.venv/lib/python3.9/site-packages/invoke/terminals.py new file mode 100644 index 0000000..4151ba5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/terminals.py @@ -0,0 +1,248 @@ +""" +Utility functions surrounding terminal devices & I/O. + +Much of this code performs platform-sensitive branching, e.g. Windows support. + +This is its own module to abstract away what would otherwise be distracting +logic-flow interruptions. +""" + +from contextlib import contextmanager +from typing import Generator, IO, Optional, Tuple +import os +import select +import sys + +# TODO: move in here? They're currently platform-agnostic... +from .util import has_fileno, isatty + + +WINDOWS = sys.platform == "win32" +""" +Whether or not the current platform appears to be Windows in nature. + +Note that Cygwin's Python is actually close enough to "real" UNIXes that it +doesn't need (or want!) to use PyWin32 -- so we only test for literal Win32 +setups (vanilla Python, ActiveState etc) here. + +.. versionadded:: 1.0 +""" + +if sys.platform == "win32": + import msvcrt + from ctypes import ( + Structure, + c_ushort, + windll, + POINTER, + byref, + ) + from ctypes.wintypes import HANDLE, _COORD, _SMALL_RECT +else: + import fcntl + import struct + import termios + import tty + + +if sys.platform == "win32": + + def _pty_size() -> Tuple[Optional[int], Optional[int]]: + class CONSOLE_SCREEN_BUFFER_INFO(Structure): + _fields_ = [ + ("dwSize", _COORD), + ("dwCursorPosition", _COORD), + ("wAttributes", c_ushort), + ("srWindow", _SMALL_RECT), + ("dwMaximumWindowSize", _COORD), + ] + + GetStdHandle = windll.kernel32.GetStdHandle + GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo + GetStdHandle.restype = HANDLE + GetConsoleScreenBufferInfo.argtypes = [ + HANDLE, + POINTER(CONSOLE_SCREEN_BUFFER_INFO), + ] + + hstd = GetStdHandle(-11) # STD_OUTPUT_HANDLE = -11 + csbi = CONSOLE_SCREEN_BUFFER_INFO() + ret = GetConsoleScreenBufferInfo(hstd, byref(csbi)) + + if ret: + sizex = csbi.srWindow.Right - csbi.srWindow.Left + 1 + sizey = csbi.srWindow.Bottom - csbi.srWindow.Top + 1 + return sizex, sizey + else: + return (None, None) + +else: + + def _pty_size() -> Tuple[Optional[int], Optional[int]]: + """ + Suitable for most POSIX platforms. + + .. versionadded:: 1.0 + """ + # Sentinel values to be replaced w/ defaults by caller + size = (None, None) + # We want two short unsigned integers (rows, cols) + # Note: TIOCGWINSZ struct contains 4 unsigned shorts, 2 unused + fmt = "HHHH" + # Create an empty (zeroed) buffer for ioctl to map onto. Yay for C! + buf = struct.pack(fmt, 0, 0, 0, 0) + # Call TIOCGWINSZ to get window size of stdout, returns our filled + # buffer + try: + result = fcntl.ioctl(sys.stdout, termios.TIOCGWINSZ, buf) + # Unpack buffer back into Python data types + # NOTE: this unpack gives us rows x cols, but we return the + # inverse. + rows, cols, *_ = struct.unpack(fmt, result) + return (cols, rows) + # Fallback to emptyish return value in various failure cases: + # * sys.stdout being monkeypatched, such as in testing, and lacking + # * .fileno + # * sys.stdout having a .fileno but not actually being attached to a + # * TTY + # * termios not having a TIOCGWINSZ attribute (happens sometimes...) + # * other situations where ioctl doesn't explode but the result isn't + # something unpack can deal with + except (struct.error, TypeError, IOError, AttributeError): + pass + return size + + +def pty_size() -> Tuple[int, int]: + """ + Determine current local pseudoterminal dimensions. + + :returns: + A ``(num_cols, num_rows)`` two-tuple describing PTY size. Defaults to + ``(80, 24)`` if unable to get a sensible result dynamically. + + .. versionadded:: 1.0 + """ + cols, rows = _pty_size() + # TODO: make defaults configurable? + return (cols or 80, rows or 24) + + +def stdin_is_foregrounded_tty(stream: IO) -> bool: + """ + Detect if given stdin ``stream`` seems to be in the foreground of a TTY. + + Specifically, compares the current Python process group ID to that of the + stream's file descriptor to see if they match; if they do not match, it is + likely that the process has been placed in the background. + + This is used as a test to determine whether we should manipulate an active + stdin so it runs in a character-buffered mode; touching the terminal in + this way when the process is backgrounded, causes most shells to pause + execution. + + .. note:: + Processes that aren't attached to a terminal to begin with, will always + fail this test, as it starts with "do you have a real ``fileno``?". + + .. versionadded:: 1.0 + """ + if not has_fileno(stream): + return False + return os.getpgrp() == os.tcgetpgrp(stream.fileno()) + + +def cbreak_already_set(stream: IO) -> bool: + # Explicitly not docstringed to remain private, for now. Eh. + # Checks whether tty.setcbreak appears to have already been run against + # ``stream`` (or if it would otherwise just not do anything). + # Used to effect idempotency for character-buffering a stream, which also + # lets us avoid multiple capture-then-restore cycles. + attrs = termios.tcgetattr(stream) + lflags, cc = attrs[3], attrs[6] + echo = bool(lflags & termios.ECHO) + icanon = bool(lflags & termios.ICANON) + # setcbreak sets ECHO and ICANON to 0/off, CC[VMIN] to 1-ish, and CC[VTIME] + # to 0-ish. If any of that is not true we can reasonably assume it has not + # yet been executed against this stream. + sentinels = ( + not echo, + not icanon, + cc[termios.VMIN] in [1, b"\x01"], + cc[termios.VTIME] in [0, b"\x00"], + ) + return all(sentinels) + + +@contextmanager +def character_buffered( + stream: IO, +) -> Generator[None, None, None]: + """ + Force local terminal ``stream`` be character, not line, buffered. + + Only applies to Unix-based systems; on Windows this is a no-op. + + .. versionadded:: 1.0 + """ + if ( + WINDOWS + or not isatty(stream) + or not stdin_is_foregrounded_tty(stream) + or cbreak_already_set(stream) + ): + yield + else: + old_settings = termios.tcgetattr(stream) + tty.setcbreak(stream) + try: + yield + finally: + termios.tcsetattr(stream, termios.TCSADRAIN, old_settings) + + +def ready_for_reading(input_: IO) -> bool: + """ + Test ``input_`` to determine whether a read action will succeed. + + :param input_: Input stream object (file-like). + + :returns: ``True`` if a read should succeed, ``False`` otherwise. + + .. versionadded:: 1.0 + """ + # A "real" terminal stdin needs select/kbhit to tell us when it's ready for + # a nonblocking read(). + # Otherwise, assume a "safer" file-like object that can be read from in a + # nonblocking fashion (e.g. a StringIO or regular file). + if not has_fileno(input_): + return True + if sys.platform == "win32": + return msvcrt.kbhit() + else: + reads, _, _ = select.select([input_], [], [], 0.0) + return bool(reads and reads[0] is input_) + + +def bytes_to_read(input_: IO) -> int: + """ + Query stream ``input_`` to see how many bytes may be readable. + + .. note:: + If we are unable to tell (e.g. if ``input_`` isn't a true file + descriptor or isn't a valid TTY) we fall back to suggesting reading 1 + byte only. + + :param input: Input stream object (file-like). + + :returns: `int` number of bytes to read. + + .. versionadded:: 1.0 + """ + # NOTE: we have to check both possibilities here; situations exist where + # it's not a tty but has a fileno, or vice versa; neither is typically + # going to work re: ioctl(). + if not WINDOWS and isatty(input_) and has_fileno(input_): + fionread = fcntl.ioctl(input_, termios.FIONREAD, b" ") + return int(struct.unpack("h", fionread)[0]) + return 1 diff --git a/.venv/lib/python3.9/site-packages/invoke/util.py b/.venv/lib/python3.9/site-packages/invoke/util.py new file mode 100644 index 0000000..df29c84 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/util.py @@ -0,0 +1,268 @@ +from collections import namedtuple +from contextlib import contextmanager +from types import TracebackType +from typing import Any, Generator, List, IO, Optional, Tuple, Type, Union +import io +import logging +import os +import threading +import sys + +# NOTE: This is the canonical location for commonly-used vendored modules, +# which is the only spot that performs this try/except to allow repackaged +# Invoke to function (e.g. distro packages which unvendor the vendored bits and +# thus must import our 'vendored' stuff from the overall environment.) +# All other uses of Lexicon, etc should do 'from .util import lexicon' etc. +# Saves us from having to update the same logic in a dozen places. +# TODO: would this make more sense to put _into_ invoke.vendor? That way, the +# import lines which now read 'from .util import ' would be +# more obvious. Requires packagers to leave invoke/vendor/__init__.py alone tho +try: + from .vendor.lexicon import Lexicon # noqa + from .vendor import yaml # noqa +except ImportError: + from lexicon import Lexicon # type: ignore[no-redef] # noqa + import yaml # type: ignore[no-redef] # noqa + + +LOG_FORMAT = "%(name)s.%(module)s.%(funcName)s: %(message)s" + + +def enable_logging() -> None: + logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT) + + +# Allow from-the-start debugging (vs toggled during load of tasks module) via +# shell env var. +if os.environ.get("INVOKE_DEBUG"): + enable_logging() + +# Add top level logger functions to global namespace. Meh. +log = logging.getLogger("invoke") +debug = log.debug + + +def task_name_sort_key(name: str) -> Tuple[List[str], str]: + """ + Return key tuple for use sorting dotted task names, via e.g. `sorted`. + + .. versionadded:: 1.0 + """ + parts = name.split(".") + return ( + # First group/sort by non-leaf path components. This keeps everything + # grouped in its hierarchy, and incidentally puts top-level tasks + # (whose non-leaf path set is the empty list) first, where we want them + parts[:-1], + # Then we sort lexicographically by the actual task name + parts[-1], + ) + + +# TODO: Make part of public API sometime +@contextmanager +def cd(where: str) -> Generator[None, None, None]: + cwd = os.getcwd() + os.chdir(where) + try: + yield + finally: + os.chdir(cwd) + + +def has_fileno(stream: IO) -> bool: + """ + Cleanly determine whether ``stream`` has a useful ``.fileno()``. + + .. note:: + This function helps determine if a given file-like object can be used + with various terminal-oriented modules and functions such as `select`, + `termios`, and `tty`. For most of those, a fileno is all that is + required; they'll function even if ``stream.isatty()`` is ``False``. + + :param stream: A file-like object. + + :returns: + ``True`` if ``stream.fileno()`` returns an integer, ``False`` otherwise + (this includes when ``stream`` lacks a ``fileno`` method). + + .. versionadded:: 1.0 + """ + try: + return isinstance(stream.fileno(), int) + except (AttributeError, io.UnsupportedOperation): + return False + + +def isatty(stream: IO) -> Union[bool, Any]: + """ + Cleanly determine whether ``stream`` is a TTY. + + Specifically, first try calling ``stream.isatty()``, and if that fails + (e.g. due to lacking the method entirely) fallback to `os.isatty`. + + .. note:: + Most of the time, we don't actually care about true TTY-ness, but + merely whether the stream seems to have a fileno (per `has_fileno`). + However, in some cases (notably the use of `pty.fork` to present a + local pseudoterminal) we need to tell if a given stream has a valid + fileno but *isn't* tied to an actual terminal. Thus, this function. + + :param stream: A file-like object. + + :returns: + A boolean depending on the result of calling ``.isatty()`` and/or + `os.isatty`. + + .. versionadded:: 1.0 + """ + # If there *is* an .isatty, ask it. + if hasattr(stream, "isatty") and callable(stream.isatty): + return stream.isatty() + # If there wasn't, see if it has a fileno, and if so, ask os.isatty + elif has_fileno(stream): + return os.isatty(stream.fileno()) + # If we got here, none of the above worked, so it's reasonable to assume + # the darn thing isn't a real TTY. + return False + + +def helpline(obj: object) -> Optional[str]: + """ + Yield an object's first docstring line, or None if there was no docstring. + + .. versionadded:: 1.0 + """ + docstring = obj.__doc__ + if ( + not docstring + or not docstring.strip() + or docstring == type(obj).__doc__ + ): + return None + return docstring.lstrip().splitlines()[0] + + +class ExceptionHandlingThread(threading.Thread): + """ + Thread handler making it easier for parent to handle thread exceptions. + + Based in part on Fabric 1's ThreadHandler. See also Fabric GH issue #204. + + When used directly, can be used in place of a regular ``threading.Thread``. + If subclassed, the subclass must do one of: + + - supply ``target`` to ``__init__`` + - define ``_run()`` instead of ``run()`` + + This is because this thread's entire point is to wrap behavior around the + thread's execution; subclasses could not redefine ``run()`` without + breaking that functionality. + + .. versionadded:: 1.0 + """ + + def __init__(self, **kwargs: Any) -> None: + """ + Create a new exception-handling thread instance. + + Takes all regular `threading.Thread` keyword arguments, via + ``**kwargs`` for easier display of thread identity when raising + captured exceptions. + """ + super().__init__(**kwargs) + # No record of why, but Fabric used daemon threads ever since the + # switch from select.select, so let's keep doing that. + self.daemon = True + # Track exceptions raised in run() + self.kwargs = kwargs + # TODO: legacy cruft that needs to be removed + self.exc_info: Optional[ + Union[ + Tuple[Type[BaseException], BaseException, TracebackType], + Tuple[None, None, None], + ] + ] = None + + def run(self) -> None: + try: + # Allow subclasses implemented using the "override run()'s body" + # approach to work, by using _run() instead of run(). If that + # doesn't appear to be the case, then assume we're being used + # directly and just use super() ourselves. + # XXX https://github.com/python/mypy/issues/1424 + if hasattr(self, "_run") and callable(self._run): # type: ignore + # TODO: this could be: + # - io worker with no 'result' (always local) + # - tunnel worker, also with no 'result' (also always local) + # - threaded concurrent run(), sudo(), put(), etc, with a + # result (not necessarily local; might want to be a subproc or + # whatever eventually) + # TODO: so how best to conditionally add a "capture result + # value of some kind"? + # - update so all use cases use subclassing, add functionality + # alongside self.exception() that is for the result of _run() + # - split out class that does not care about result of _run() + # and let it continue acting like a normal thread (meh) + # - assume the run/sudo/etc case will use a queue inside its + # worker body, orthogonal to how exception handling works + self._run() # type: ignore + else: + super().run() + except BaseException: + # Store for actual reraising later + self.exc_info = sys.exc_info() + # And log now, in case we never get to later (e.g. if executing + # program is hung waiting for us to do something) + msg = "Encountered exception {!r} in thread for {!r}" + # Name is either target function's dunder-name, or just "_run" if + # we were run subclass-wise. + name = "_run" + if "target" in self.kwargs: + name = self.kwargs["target"].__name__ + debug(msg.format(self.exc_info[1], name)) # noqa + + def exception(self) -> Optional["ExceptionWrapper"]: + """ + If an exception occurred, return an `.ExceptionWrapper` around it. + + :returns: + An `.ExceptionWrapper` managing the result of `sys.exc_info`, if an + exception was raised during thread execution. If no exception + occurred, returns ``None`` instead. + + .. versionadded:: 1.0 + """ + if self.exc_info is None: + return None + return ExceptionWrapper(self.kwargs, *self.exc_info) + + @property + def is_dead(self) -> bool: + """ + Returns ``True`` if not alive and has a stored exception. + + Used to detect threads that have excepted & shut down. + + .. versionadded:: 1.0 + """ + # NOTE: it seems highly unlikely that a thread could still be + # is_alive() but also have encountered an exception. But hey. Why not + # be thorough? + return (not self.is_alive()) and self.exc_info is not None + + def __repr__(self) -> str: + # TODO: beef this up more + return str(self.kwargs["target"].__name__) + + +# NOTE: ExceptionWrapper defined here, not in exceptions.py, to avoid circular +# dependency issues (e.g. Failure subclasses need to use some bits from this +# module...) +#: A namedtuple wrapping a thread-borne exception & that thread's arguments. +#: Mostly used as an intermediate between `.ExceptionHandlingThread` (which +#: preserves initial exceptions) and `.ThreadException` (which holds 1..N such +#: exceptions, as typically multiple threads are involved.) +ExceptionWrapper = namedtuple( + "ExceptionWrapper", "kwargs type value traceback" +) diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/__init__.py b/.venv/lib/python3.9/site-packages/invoke/vendor/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec59542e35a0b29ecff30209e70ee226cc9f704f GIT binary patch literal 201 zcmYk0F%H5o3`J9k0U`Au48#Ky5<;ASg#$z>G1P5IqBw2UdvF0puEfd_*qBHr_|kut zzpO9ovRsIy`%N}^zB2w*q-CGXvjiiKVp$v>BINjokA>P@5y-d9z4tCesEF%PH;55> zPm1iQgHdPdP*s}IfE>^c&`||`inX(AxdEn#E3Z$jz90kH!L4F`sq2} OUY+SX+~q&s$>IzA(>Hbi literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__init__.py b/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__init__.py new file mode 100644 index 0000000..3339fef --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__init__.py @@ -0,0 +1,4 @@ +from .machine import (StateMachine, state, transition, + InvalidConfiguration, InvalidTransition, + GuardNotSatisfied, ForkedTransition) + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5e6b41536865c8cadac060115b6d3a23c747143 GIT binary patch literal 405 zcmYk2zfQw25XPOPX{w4!RN^7%Ks+!ZA%uhkVxUWyvP5p}G}pv`WIL()9=re}@4-`e zWnyMy!Y)YVr2Cz|(uMIOg!F@ z4$B|#y~B;<41;Qo>6Mb&;uV-?N4AVv+$*R+?EC~(4IQgi#4w8Ufr$Zku)=C@8!0aH yEA01T7mBP~vS9{;7-Y+^_fe^F-St4h?s4TG16x(O+Pld$m$dKLO*q+?PxJ#kTzHiL literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__pycache__/backwardscompat.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/__pycache__/backwardscompat.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..792dc32998eb55c5f5b143d55f7108b43644530b GIT binary patch literal 400 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 NYmL>$xrS$c{{sz7KVAR; literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/backwardscompat.py b/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/backwardscompat.py new file mode 100644 index 0000000..88eac4f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/backwardscompat.py @@ -0,0 +1,8 @@ +import sys + +if sys.version_info >= (3,): + def callable(obj): + return hasattr(obj, '__call__') +else: + callable = callable + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/machine.py b/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/machine.py new file mode 100644 index 0000000..da9fdda --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/fluidity/machine.py @@ -0,0 +1,270 @@ +import re +import inspect +from .backwardscompat import callable + +# metaclass implementation idea from +# http://blog.ianbicking.org/more-on-python-metaprogramming-comment-14.html +_transition_gatherer = [] + +def transition(event, from_, to, action=None, guard=None): + _transition_gatherer.append([event, from_, to, action, guard]) + +_state_gatherer = [] + +def state(name, enter=None, exit=None): + _state_gatherer.append([name, enter, exit]) + + +class MetaStateMachine(type): + + def __new__(cls, name, bases, dictionary): + global _transition_gatherer, _state_gatherer + Machine = super(MetaStateMachine, cls).__new__(cls, name, bases, dictionary) + Machine._class_transitions = [] + Machine._class_states = {} + for s in _state_gatherer: + Machine._add_class_state(*s) + for i in _transition_gatherer: + Machine._add_class_transition(*i) + _transition_gatherer = [] + _state_gatherer = [] + return Machine + + +StateMachineBase = MetaStateMachine('StateMachineBase', (object, ), {}) + + +class StateMachine(StateMachineBase): + + def __init__(self): + self._bring_definitions_to_object_level() + self._inject_into_parts() + self._validate_machine_definitions() + if callable(self.initial_state): + self.initial_state = self.initial_state() + self._current_state_object = self._state_by_name(self.initial_state) + self._current_state_object.run_enter(self) + self._create_state_getters() + + def __new__(cls, *args, **kwargs): + obj = super(StateMachine, cls).__new__(cls) + obj._states = {} + obj._transitions = [] + return obj + + def _bring_definitions_to_object_level(self): + self._states.update(self.__class__._class_states) + self._transitions.extend(self.__class__._class_transitions) + + def _inject_into_parts(self): + for collection in [self._states.values(), self._transitions]: + for component in collection: + component.machine = self + + def _validate_machine_definitions(self): + if len(self._states) < 2: + raise InvalidConfiguration('There must be at least two states') + if not getattr(self, 'initial_state', None): + raise InvalidConfiguration('There must exist an initial state') + + @classmethod + def _add_class_state(cls, name, enter, exit): + cls._class_states[name] = _State(name, enter, exit) + + def add_state(self, name, enter=None, exit=None): + state = _State(name, enter, exit) + setattr(self, state.getter_name(), state.getter_method().__get__(self, self.__class__)) + self._states[name] = state + + def _current_state_name(self): + return self._current_state_object.name + + current_state = property(_current_state_name) + + def changing_state(self, from_, to): + """ + This method is called whenever a state change is executed + """ + pass + + def _new_state(self, state): + self.changing_state(self._current_state_object.name, state.name) + self._current_state_object = state + + def _state_objects(self): + return list(self._states.values()) + + def states(self): + return [s.name for s in self._state_objects()] + + @classmethod + def _add_class_transition(cls, event, from_, to, action, guard): + transition = _Transition(event, [cls._class_states[s] for s in _listize(from_)], + cls._class_states[to], action, guard) + cls._class_transitions.append(transition) + setattr(cls, event, transition.event_method()) + + def add_transition(self, event, from_, to, action=None, guard=None): + transition = _Transition(event, [self._state_by_name(s) for s in _listize(from_)], + self._state_by_name(to), action, guard) + self._transitions.append(transition) + setattr(self, event, transition.event_method().__get__(self, self.__class__)) + + def _process_transitions(self, event_name, *args, **kwargs): + transitions = self._transitions_by_name(event_name) + transitions = self._ensure_from_validity(transitions) + this_transition = self._check_guards(transitions) + this_transition.run(self, *args, **kwargs) + + def _create_state_getters(self): + for state in self._state_objects(): + setattr(self, state.getter_name(), state.getter_method().__get__(self, self.__class__)) + + def _state_by_name(self, name): + for state in self._state_objects(): + if state.name == name: + return state + + def _transitions_by_name(self, name): + return list(filter(lambda transition: transition.event == name, self._transitions)) + + def _ensure_from_validity(self, transitions): + valid_transitions = list(filter( + lambda transition: transition.is_valid_from(self._current_state_object), + transitions)) + if len(valid_transitions) == 0: + raise InvalidTransition("Cannot %s from %s" % ( + transitions[0].event, self.current_state)) + return valid_transitions + + def _check_guards(self, transitions): + allowed_transitions = [] + for transition in transitions: + if transition.check_guard(self): + allowed_transitions.append(transition) + if len(allowed_transitions) == 0: + raise GuardNotSatisfied("Guard is not satisfied for this transition") + elif len(allowed_transitions) > 1: + raise ForkedTransition("More than one transition was allowed for this event") + return allowed_transitions[0] + + +class _Transition(object): + + def __init__(self, event, from_, to, action, guard): + self.event = event + self.from_ = from_ + self.to = to + self.action = action + self.guard = _Guard(guard) + + def event_method(self): + def generated_event(machine, *args, **kwargs): + these_transitions = machine._process_transitions(self.event, *args, **kwargs) + generated_event.__doc__ = 'event %s' % self.event + generated_event.__name__ = self.event + return generated_event + + def is_valid_from(self, from_): + return from_ in _listize(self.from_) + + def check_guard(self, machine): + return self.guard.check(machine) + + def run(self, machine, *args, **kwargs): + machine._current_state_object.run_exit(machine) + machine._new_state(self.to) + self.to.run_enter(machine) + _ActionRunner(machine).run(self.action, *args, **kwargs) + + +class _Guard(object): + + def __init__(self, action): + self.action = action + + def check(self, machine): + if self.action is None: + return True + items = _listize(self.action) + result = True + for item in items: + result = result and self._evaluate(machine, item) + return result + + def _evaluate(self, machine, item): + if callable(item): + return item(machine) + else: + guard = getattr(machine, item) + if callable(guard): + guard = guard() + return guard + + +class _State(object): + + def __init__(self, name, enter, exit): + self.name = name + self.enter = enter + self.exit = exit + + def getter_name(self): + return 'is_%s' % self.name + + def getter_method(self): + def state_getter(self_machine): + return self_machine.current_state == self.name + return state_getter + + def run_enter(self, machine): + _ActionRunner(machine).run(self.enter) + + def run_exit(self, machine): + _ActionRunner(machine).run(self.exit) + + +class _ActionRunner(object): + + def __init__(self, machine): + self.machine = machine + + def run(self, action_param, *args, **kwargs): + if not action_param: + return + action_items = _listize(action_param) + for action_item in action_items: + self._run_action(action_item, *args, **kwargs) + + def _run_action(self, action, *args, **kwargs): + if callable(action): + self._try_to_run_with_args(action, self.machine, *args, **kwargs) + else: + self._try_to_run_with_args(getattr(self.machine, action), *args, **kwargs) + + def _try_to_run_with_args(self, action, *args, **kwargs): + try: + action(*args, **kwargs) + except TypeError: + action() + + +class InvalidConfiguration(Exception): + pass + + +class InvalidTransition(Exception): + pass + + +class GuardNotSatisfied(Exception): + pass + + +class ForkedTransition(Exception): + pass + + +def _listize(value): + return type(value) in [list, tuple] and value or [value] + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__init__.py b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__init__.py new file mode 100644 index 0000000..c7f65d3 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__init__.py @@ -0,0 +1,24 @@ +from ._version import __version_info__, __version__ # noqa +from .attribute_dict import AttributeDict +from .alias_dict import AliasDict + + +class Lexicon(AttributeDict, AliasDict): + def __init__(self, *args, **kwargs): + # Need to avoid combining AliasDict's initial attribute write on + # self.aliases, with AttributeDict's __setattr__. Doing so results in + # an infinite loop. Instead, just skip straight to dict() for both + # explicitly (i.e. we override AliasDict.__init__ instead of extending + # it.) + # NOTE: could tickle AttributeDict.__init__ instead, in case it ever + # grows one. + dict.__init__(self, *args, **kwargs) + dict.__setattr__(self, "aliases", {}) + + def __getattr__(self, key): + # Intercept deepcopy/etc driven access to self.aliases when not + # actually set. (Only a problem for us, due to abovementioned combo of + # Alias and Attribute Dicts, so not solvable in a parent alone.) + if key == "aliases" and key not in self.__dict__: + self.__dict__[key] = {} + return super(Lexicon, self).__getattr__(key) diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6bb6b676189b935616a8062d45762d36c6776490 GIT binary patch literal 964 zcmY*XJ#Q015S_UX`*3Wq5+PBfq%i_tL4_1WL_(rLK_cBXtMl#JS^K`&Jv$`2E|Jnv z@dIK+lfQH=6@P(>nX^q`q?y~9y_+}h-Nb`I56ITv#`DYr_{qt?=2P;P+#XYqATfmu zBg~x0LC&4j&AiBK&u;2xov4HG9;7Gz8<4*8ROi}@y0UWyqwX)HCL^aA3b9hg>LM39 zpB6$idk+;c!e($%RYp&im3pU>iVBZTQXN}P5^C|Ex!cS>r-OnBB}9%y>D)l%-og~6 zE4`Z_@@~O{$fr5{ru#vC(MgdfJkZX#5!3xhZeLKSV2(A+u*UEB2{hEs5B!Qq^*g5~ zDKxBICVmF@&S}$)c|>JLZsSQBvU)76HZRaH!!gy3td(rM$xW@ekt;)0*|V4e`- z?^SqSWGd9yli_%!@>Q7XNmyQ1=SBW{ z{3f)zQm@K5S;RACL!GaRg$n6CS(q^0a1VFmjmt~JOVDNBv;zRaGrSsZB^vKuOB}x1 z8lPD&cKeb-jS?4*Ijl*sIjqnel3sMG@dzrcNUv+>&aH8cXJ8m<bwfGzhXJ2&oy_UF7IgzghXx@*t)pJMHk$%(U)y0ruLWxZgEhg?X5?dD+LrAQ``CB?0CTwQNB{r; literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/_version.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/_version.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..78cf391d20e97d91da32689a41329fdc19872ece GIT binary patch literal 295 zcmYjMOG*SW6ihljAj*JCuh0woEnEpAoe3R?!nH8cC zbCv>gBAa=V$jirK6)&Zn&UBz4BV_s6$z)fEvmP%>*4);0{A=%}sd=fd;&GYTK$83_xbG hEkep^>!HI}+FApDB};dRXLr5TV~6+4jIgZA`44HoR>1%O literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/alias_dict.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/__pycache__/alias_dict.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..79b79d0db472b6410b5d136ab5afda29e821a790 GIT binary patch literal 4349 zcmcIn&u`qu6`movKeS%ivXi(K5EN{iIA&|_21xo7s_Qmxiv*3(Rz;8s3216LD^a4z z^>9|U7u-u_z?(~f0tI@NfL`=3@!CHjw_e)s&Fqp(Wd$dP?qbLxXXd>(?|tuk!(e^A z!|*%*NAK{TUB>=R56eFX4-e6@*KzqB3t7ltpb2(r@AA;vVV*s}NbP6OpRyPo!7z{Q zS})m-7k2t z=KF&<$THu*VE=j6KS+;7KN=lnkTy!C>hDF_!PDSS2-P2tB8bJp&>u#z@b@4%?DtMY za?+2Zz5eLAI!KfEdOz!DkrMYu!Qd#^7g;|_PSPXM$Gk9={a8GU25HjQhWR0O-y1!b zv|$S^qYmS@`Q%pVo!(+MgGIDx4)v*hfROe?0364eP4pZswM~I>; zMG(73;<<}AdK2#B$28~h<6fr}@!@bjJ1FPhL(j;KRAyF+Y~_-~j8+R^M=8dQlsihJ z1Ts{5&mF~M2uolM8C&YthQaJ~=&FN2m8*O1-9JN^*@>|p)*v<9D07okxluBR$Ds(( zDTNvJWV?G3#ADI(%Au9H`x=GlEghnqeg5WW)|5}J+?uf?OFB89@gtk=f481EfNBXw zWU1AAx8O$wKe@098$K=^^6U~+J6my-sX=-?dhlH+_!5mx?pDZ|@7qs@y{$MM1abBN zoy8K*(HT)RgV6~2STw~mMfV0W_82T-0Q)V-EE+oOM)MnZA$6v7D*5!B-NJ=+9PZd1 z-myBi!@vDs$DX{t%Af%y*y7hlhtRBZ=m4FZE96lKiaWJ|%>dz~!gOsX`_dE4&V zlQ&lSrN-;Exc0Dq9#?Y?F>$rc`C}1Z#MT1#Z5`j%SK~`T(eb4$qv&ofN}}XQ}FHe7=vh6+ZQ;Vvf+47EaA{N(Kwf_!*la zdx27W&O)z5DGo6wUk{}p(=O(`b7$FAI9I9w9R5v+=S>JxbUd0L`DgqP2d7PaJURtr zJ$t)W;z=)I{5>*)SO*3E`V^IF2J=5*s5w@7{?w7iDUgb!dqOSK zSL>@~gM(G8s&I|1O%*2mqZyW7QH4vErtex}>E#ay4UwyO`Y&Yq+)1_Ig(CjH@pLKs z%GiCjWLAx*%cT`)FNMxosb_9lB7_msH9nF{UJ>NK#y^&p(w1ClBSmmCneSev!mxY_J(ZEwm}Igx$> z5?6Z6FZs$RaO1>`LqcfFtY$njp7qSUnY7pI5TMJi{gZE$kRNDlQv}8Vu(=1~JrP9E z3t&kW;gE`8K$0+nn|~+(>j2n10U-&*kzpVp`hpBY5sC=TNVLQboGsB7F`PSM7vAc) z-fL^M8r4?5RhiB3sWqV<1HS<_k3pPw=44Ly$VW0D5wWCsL$w#S?g7s&zn6X@qSk>5ZSv>E*U`AQ_v`Vu{dMpi7#jKo2263X) zESH~ERu(K>H_Zif-LD#Vi}Pb?(a$+HZm=do1KOe8;CydWKcdv%ip@fd`$MQBd&Ih+ z%mYMh-(#ZjS>I|B>K)YEAY5yf=C$= zF0xG}U6df8o5Q?dKzG2sF6{o*(fEkNr0rtPi*zbEcOA~BrKn+T zxa)F$TBrHyMk6*F`_w%YcTxOJ>NSL4V_(RAEn*tC<1h}r7Z*LkE%Me)Kf8E;mHidI I@DrH)1|FN`QUCw| literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/_version.py b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/_version.py new file mode 100644 index 0000000..f55a4f1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/_version.py @@ -0,0 +1,2 @@ +__version_info__ = (2, 0, 1) +__version__ = ".".join(map(str, __version_info__)) diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/alias_dict.py b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/alias_dict.py new file mode 100644 index 0000000..f2191fb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/alias_dict.py @@ -0,0 +1,95 @@ +class AliasDict(dict): + def __init__(self, *args, **kwargs): + super(AliasDict, self).__init__(*args, **kwargs) + self.aliases = {} + + def alias(self, from_, to): + self.aliases[from_] = to + + def unalias(self, from_): + del self.aliases[from_] + + def aliases_of(self, name): + """ + Returns other names for given real key or alias ``name``. + + If given a real key, returns its aliases. + + If given an alias, returns the real key it points to, plus any other + aliases of that real key. (The given alias itself is not included in + the return value.) + """ + names = [] + key = name + # self.aliases keys are aliases, not realkeys. Easy test to see if we + # should flip around to the POV of a realkey when given an alias. + if name in self.aliases: + key = self.aliases[name] + # Ensure the real key shows up in output. + names.append(key) + # 'key' is now a realkey, whose aliases are all keys whose value is + # itself. Filter out the original name given. + names.extend( + [k for k, v in self.aliases.items() if v == key and k != name] + ) + return names + + def _handle(self, key, value, single, multi, unaliased): + # Attribute existence test required to not blow up when deepcopy'd + if key in getattr(self, "aliases", {}): + target = self.aliases[key] + # Single-string targets + if isinstance(target, str): + return single(self, target, value) + # Multi-string targets + else: + if multi: + return multi(self, target, value) + else: + for subkey in target: + single(self, subkey, value) + else: + return unaliased(self, key, value) + + def __setitem__(self, key, value): + def single(d, target, value): + d[target] = value + + def unaliased(d, key, value): + super(AliasDict, d).__setitem__(key, value) + + return self._handle(key, value, single, None, unaliased) + + def __getitem__(self, key): + def single(d, target, value): + return d[target] + + def unaliased(d, key, value): + return super(AliasDict, d).__getitem__(key) + + def multi(d, target, value): + msg = "Multi-target aliases have no well-defined value and can't be read." # noqa + raise ValueError(msg) + + return self._handle(key, None, single, multi, unaliased) + + def __contains__(self, key): + def single(d, target, value): + return target in d + + def multi(d, target, value): + return all(subkey in self for subkey in self.aliases[key]) + + def unaliased(d, key, value): + return super(AliasDict, d).__contains__(key) + + return self._handle(key, None, single, multi, unaliased) + + def __delitem__(self, key): + def single(d, target, value): + del d[target] + + def unaliased(d, key, value): + return super(AliasDict, d).__delitem__(key) + + return self._handle(key, None, single, None, unaliased) diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/attribute_dict.py b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/attribute_dict.py new file mode 100644 index 0000000..5d09f13 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/lexicon/attribute_dict.py @@ -0,0 +1,16 @@ +class AttributeDict(dict): + def __getattr__(self, key): + try: + return self[key] + except KeyError: + # to conform with __getattr__ spec + raise AttributeError(key) + + def __setattr__(self, key, value): + self[key] = value + + def __delattr__(self, key): + del self[key] + + def __dir__(self): + return dir(type(self)) + list(self.keys()) diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__init__.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__init__.py new file mode 100644 index 0000000..86d07b5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__init__.py @@ -0,0 +1,427 @@ + +from .error import * + +from .tokens import * +from .events import * +from .nodes import * + +from .loader import * +from .dumper import * + +__version__ = '5.4.1' +try: + from .cyaml import * + __with_libyaml__ = True +except ImportError: + __with_libyaml__ = False + +import io + +#------------------------------------------------------------------------------ +# Warnings control +#------------------------------------------------------------------------------ + +# 'Global' warnings state: +_warnings_enabled = { + 'YAMLLoadWarning': True, +} + +# Get or set global warnings' state +def warnings(settings=None): + if settings is None: + return _warnings_enabled + + if type(settings) is dict: + for key in settings: + if key in _warnings_enabled: + _warnings_enabled[key] = settings[key] + +# Warn when load() is called without Loader=... +class YAMLLoadWarning(RuntimeWarning): + pass + +def load_warning(method): + if _warnings_enabled['YAMLLoadWarning'] is False: + return + + import warnings + + message = ( + "calling yaml.%s() without Loader=... is deprecated, as the " + "default Loader is unsafe. Please read " + "https://msg.pyyaml.org/load for full details." + ) % method + + warnings.warn(message, YAMLLoadWarning, stacklevel=3) + +#------------------------------------------------------------------------------ +def scan(stream, Loader=Loader): + """ + Scan a YAML stream and produce scanning tokens. + """ + loader = Loader(stream) + try: + while loader.check_token(): + yield loader.get_token() + finally: + loader.dispose() + +def parse(stream, Loader=Loader): + """ + Parse a YAML stream and produce parsing events. + """ + loader = Loader(stream) + try: + while loader.check_event(): + yield loader.get_event() + finally: + loader.dispose() + +def compose(stream, Loader=Loader): + """ + Parse the first YAML document in a stream + and produce the corresponding representation tree. + """ + loader = Loader(stream) + try: + return loader.get_single_node() + finally: + loader.dispose() + +def compose_all(stream, Loader=Loader): + """ + Parse all YAML documents in a stream + and produce corresponding representation trees. + """ + loader = Loader(stream) + try: + while loader.check_node(): + yield loader.get_node() + finally: + loader.dispose() + +def load(stream, Loader=None): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + """ + if Loader is None: + load_warning('load') + Loader = FullLoader + + loader = Loader(stream) + try: + return loader.get_single_data() + finally: + loader.dispose() + +def load_all(stream, Loader=None): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + """ + if Loader is None: + load_warning('load_all') + Loader = FullLoader + + loader = Loader(stream) + try: + while loader.check_data(): + yield loader.get_data() + finally: + loader.dispose() + +def full_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve all tags except those known to be + unsafe on untrusted input. + """ + return load(stream, FullLoader) + +def full_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve all tags except those known to be + unsafe on untrusted input. + """ + return load_all(stream, FullLoader) + +def safe_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve only basic YAML tags. This is known + to be safe for untrusted input. + """ + return load(stream, SafeLoader) + +def safe_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve only basic YAML tags. This is known + to be safe for untrusted input. + """ + return load_all(stream, SafeLoader) + +def unsafe_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve all tags, even those known to be + unsafe on untrusted input. + """ + return load(stream, UnsafeLoader) + +def unsafe_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve all tags, even those known to be + unsafe on untrusted input. + """ + return load_all(stream, UnsafeLoader) + +def emit(events, stream=None, Dumper=Dumper, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None): + """ + Emit YAML parsing events into a stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + stream = io.StringIO() + getvalue = stream.getvalue + dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + try: + for event in events: + dumper.emit(event) + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def serialize_all(nodes, stream=None, Dumper=Dumper, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + """ + Serialize a sequence of representation trees into a YAML stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + if encoding is None: + stream = io.StringIO() + else: + stream = io.BytesIO() + getvalue = stream.getvalue + dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break, + encoding=encoding, version=version, tags=tags, + explicit_start=explicit_start, explicit_end=explicit_end) + try: + dumper.open() + for node in nodes: + dumper.serialize(node) + dumper.close() + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def serialize(node, stream=None, Dumper=Dumper, **kwds): + """ + Serialize a representation tree into a YAML stream. + If stream is None, return the produced string instead. + """ + return serialize_all([node], stream, Dumper=Dumper, **kwds) + +def dump_all(documents, stream=None, Dumper=Dumper, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + """ + Serialize a sequence of Python objects into a YAML stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + if encoding is None: + stream = io.StringIO() + else: + stream = io.BytesIO() + getvalue = stream.getvalue + dumper = Dumper(stream, default_style=default_style, + default_flow_style=default_flow_style, + canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break, + encoding=encoding, version=version, tags=tags, + explicit_start=explicit_start, explicit_end=explicit_end, sort_keys=sort_keys) + try: + dumper.open() + for data in documents: + dumper.represent(data) + dumper.close() + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def dump(data, stream=None, Dumper=Dumper, **kwds): + """ + Serialize a Python object into a YAML stream. + If stream is None, return the produced string instead. + """ + return dump_all([data], stream, Dumper=Dumper, **kwds) + +def safe_dump_all(documents, stream=None, **kwds): + """ + Serialize a sequence of Python objects into a YAML stream. + Produce only basic YAML tags. + If stream is None, return the produced string instead. + """ + return dump_all(documents, stream, Dumper=SafeDumper, **kwds) + +def safe_dump(data, stream=None, **kwds): + """ + Serialize a Python object into a YAML stream. + Produce only basic YAML tags. + If stream is None, return the produced string instead. + """ + return dump_all([data], stream, Dumper=SafeDumper, **kwds) + +def add_implicit_resolver(tag, regexp, first=None, + Loader=None, Dumper=Dumper): + """ + Add an implicit scalar detector. + If an implicit scalar value matches the given regexp, + the corresponding tag is assigned to the scalar. + first is a sequence of possible initial characters or None. + """ + if Loader is None: + loader.Loader.add_implicit_resolver(tag, regexp, first) + loader.FullLoader.add_implicit_resolver(tag, regexp, first) + loader.UnsafeLoader.add_implicit_resolver(tag, regexp, first) + else: + Loader.add_implicit_resolver(tag, regexp, first) + Dumper.add_implicit_resolver(tag, regexp, first) + +def add_path_resolver(tag, path, kind=None, Loader=None, Dumper=Dumper): + """ + Add a path based resolver for the given tag. + A path is a list of keys that forms a path + to a node in the representation tree. + Keys can be string values, integers, or None. + """ + if Loader is None: + loader.Loader.add_path_resolver(tag, path, kind) + loader.FullLoader.add_path_resolver(tag, path, kind) + loader.UnsafeLoader.add_path_resolver(tag, path, kind) + else: + Loader.add_path_resolver(tag, path, kind) + Dumper.add_path_resolver(tag, path, kind) + +def add_constructor(tag, constructor, Loader=None): + """ + Add a constructor for the given tag. + Constructor is a function that accepts a Loader instance + and a node object and produces the corresponding Python object. + """ + if Loader is None: + loader.Loader.add_constructor(tag, constructor) + loader.FullLoader.add_constructor(tag, constructor) + loader.UnsafeLoader.add_constructor(tag, constructor) + else: + Loader.add_constructor(tag, constructor) + +def add_multi_constructor(tag_prefix, multi_constructor, Loader=None): + """ + Add a multi-constructor for the given tag prefix. + Multi-constructor is called for a node if its tag starts with tag_prefix. + Multi-constructor accepts a Loader instance, a tag suffix, + and a node object and produces the corresponding Python object. + """ + if Loader is None: + loader.Loader.add_multi_constructor(tag_prefix, multi_constructor) + loader.FullLoader.add_multi_constructor(tag_prefix, multi_constructor) + loader.UnsafeLoader.add_multi_constructor(tag_prefix, multi_constructor) + else: + Loader.add_multi_constructor(tag_prefix, multi_constructor) + +def add_representer(data_type, representer, Dumper=Dumper): + """ + Add a representer for the given type. + Representer is a function accepting a Dumper instance + and an instance of the given data type + and producing the corresponding representation node. + """ + Dumper.add_representer(data_type, representer) + +def add_multi_representer(data_type, multi_representer, Dumper=Dumper): + """ + Add a representer for the given type. + Multi-representer is a function accepting a Dumper instance + and an instance of the given data type or subtype + and producing the corresponding representation node. + """ + Dumper.add_multi_representer(data_type, multi_representer) + +class YAMLObjectMetaclass(type): + """ + The metaclass for YAMLObject. + """ + def __init__(cls, name, bases, kwds): + super(YAMLObjectMetaclass, cls).__init__(name, bases, kwds) + if 'yaml_tag' in kwds and kwds['yaml_tag'] is not None: + if isinstance(cls.yaml_loader, list): + for loader in cls.yaml_loader: + loader.add_constructor(cls.yaml_tag, cls.from_yaml) + else: + cls.yaml_loader.add_constructor(cls.yaml_tag, cls.from_yaml) + + cls.yaml_dumper.add_representer(cls, cls.to_yaml) + +class YAMLObject(metaclass=YAMLObjectMetaclass): + """ + An object that can dump itself to a YAML stream + and load itself from a YAML stream. + """ + + __slots__ = () # no direct instantiation, so allow immutable subclasses + + yaml_loader = [Loader, FullLoader, UnsafeLoader] + yaml_dumper = Dumper + + yaml_tag = None + yaml_flow_style = None + + @classmethod + def from_yaml(cls, loader, node): + """ + Convert a representation node to a Python object. + """ + return loader.construct_yaml_object(node, cls) + + @classmethod + def to_yaml(cls, dumper, data): + """ + Convert a Python object to a representation node. + """ + return dumper.represent_yaml_object(cls.yaml_tag, data, cls, + flow_style=cls.yaml_flow_style) + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5d5ebfc53d3090563984cd2e48d8f5fc0096fbf GIT binary patch literal 11929 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 mGyhff&+3c_}9>s z)^j^_(f0&HpFOuiPc#l$*Dw7C*=Uk!smjf|^-!ryearEcE-$wq#p+awzkK}Y6C;O+ z-%Bud=^^F&D7uA8vXBcFT7u&Xma-t~ckR-TqH#QuQB(#|G|I$uNbOb>J)OqGYUCwT z8_+h@ce;0yjbtyKoN7ItOfr@Co}~KZSv-(3?@cFZl#ZXpN<>E~R(cX^DS8KIa(vbs zrcZj4^ZXZ0k((ze#Dtpiqnd+U#qhT*uB5*J{H^%z35whCn z*EUMx`!xO-)x}1I^)(A^VG9Ru2e5m1yP_d{ygjiY0=yfdDOz~@VpDA4y&<+m8}C5u zh+Vv!Vh@1rD*`j2s(z?VAAW$M$w^XHun0UJvX{IMMjG)rImwiM$xBDe;n4+(iqr}E zbe!fLg#;P;0?^HH=vgrI5Y@WhTDqPSG%an_R=9DktNd+tiI7SpLRlq-NqbE!AXX# zp<0h$GKvs&Q4FemG{`8zQm{Eko9EVo>$_;#i*?B#E4{guJAxN{;0mj-2JUm`E1G3i zC@9?Q{_F$!xVpebssH+)!Z)Z zfjxH$r(gr;jH_SeF6{)gJ8v+Ic@^mcXxu^IVOC>(mS9t^isfvk3e2|5OsqyT2A-fV zELVBq7rd|*I6aIV8wl@j&h8f{gIM78=grOHV>0{7^^Bf z?bXz2BQ&lW?jFjgQ?g|(jon%)F2^d>ok#Ixf{Mhje>u~3dba}@Ax}7+FYHV4`nwn>8P~x__%B= z$qR#uyFRQf-LrT&m8GAK$g9%aa9{ewH6<$b9*nMn+ci*Euo{4WL_;?LOj+tP6ivC0 z88F*?7w^_9&mvf7Z(W0K&2ugxNa(E){0BO(Mev|PP%y%<#_yPV$OWjqOW1vCuxk)@ z!k)XB>*t7M{Z-)%f)`En5xIrCz|n#@cZKt7Hg}(fOAEZh8*CO%gaX{%zIqqd;U*Cr z4YOyFf&W`bn4&b+-Kx$7gW3BKgsnO}hz9i&Qlzj`_o$+5T19KSR$HC-l&(t;Q2~w= z`Lg-|Rkv|LPuZ+an(9copy?f&xk1$4bl51mtRyI!Hd52pMkLVT;@MR^1biO^`sDw2 zuameQ)t6|byWxt)Z_rtScyl29-!!f${3}{W#^xX+V$mid=N_nSf>yWijts3&KV4eV zC>m>Y+7+Fu3sbLi*IeeS*HedI0F%{L%o(zXKJ_!I3~l}eZR$gkuILJVT);=ssXPw@ z(=w5&4oK-rM*AUTQ*7g#N)Wl<1?PIRrm=_958QT2QDdrHCPp5a?9+OgHP{|l-oKobA} literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/constructor.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/constructor.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..66a4e533b8dcc48640296cc44b56a7b5aa6692f0 GIT binary patch literal 20870 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 Ir!gh}AFCOXH~;_u literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/cyaml.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/cyaml.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..768ed667e658906045c1ed1465d2d60d275deaab GIT binary patch literal 3413 zcmcguOK;mo5Z)yzlBV9a>@-Oq>AOlBu|?2Bfub;?)V&l!5IZQK3qf<&Hf@Sjmy}%x zyw%s-`UC3T^q2O~OHcU=ZGm=X^^RjhP2sGtqup;G-1%m9X8m&6AyCeLX&n};g#3Y> z`C>t56KeW9h<(DyZ?sDoWm-ggT374oU7Zr9Gb1u~M*oHJzd8Q5cF1>x6_|NOn8`J6 z^Oc_qT?a6W*?`%A6?qA;GGHsr0n7ocqOdApMOFf=1XxXBb->E30$2sGRfVkqR%JE7 zYFy_H^^JAF>TDITRlqjXyc>Y6u?Aobz~10D0X4g~*!nhUZZvIKY(MZ*{(a&zE}*mR z@69?}gD4u0l-p0@bT($Srz>#z!$GeaU$&%;&IPjy)+K7B;E)*QwgnE_LaL)g?nyA1wW4ozC%PM;Ayvgi|xdbxwqCUvnO{j~^&Aflc zoVc;L98E10C#VVzPB>AjL4TnjxC!+tPIMT*7EbU2&v7E&gb!Ux#~nQ7f+NlD|1xx- z7H{Jos4}>S(h8ajWf?l~4qpcy^-&00nvjp-9P@;1EX2TNC_zm=#9hXeD9xb1P?n*j z04uJ8lH$^2wBQ8uWYoqPU>O?l^q=ASF%3!^=r5Eq^fsZUc(e-UdYXSCAV@rck*Ih%FB#CD`7TJGqhaKD@=Q4 zT*wM~r|HO*z>kwS4E#u%Va#}($-+sc~QV)hiDqCon^yC~j6@jeRlOz{y4OqK%O zU3`L~iQ+Dbdni=In}t23`%9=Qq7l=fCN=Q)w^^{M@sFvEQ_v{=PyM4=?re3YW#{s+ ziYC5~`%brkr*6}M5S z#EsEYyoEwXfw@*-MiK9zz@XYy57&8b!^!Hd&)(ljb3)Oacoy|c1g!K zdfgj8fO5-U(v=f`p`9tbXJ>cQb_zoeAdjA;Pm-VXy-!aL1_{IR{Fm|B?H*&l(_ptm zICy~7=4eisV!!bzQ(So&KWbZV+xpu!IAT9C<*VQsQvq}!gb3oF!)X`MjtUVC8#I9) zqJ2ao6(brq=%7LORQHgLl9BI{@1%tvR?8BMOAh7ysvox49~_T0;*Nhg!_I4EfTIUk z?ExBKQ?A(5Q=tk}=NX^+ilc|f(EiDzquCJKt3v%Q*6*>}37U$X@tW1V4(d)F)=?cR zei?CAc@5sJle$;;>w)qvLqz=s^=iM~Q~qUuNboD}f6h7bcgQxuWYlrpnaqn^&t&F8 zoh!&I*SXNDI&}k?WyOV9;bft}C7I4a92<}e+!jNQsLoH^9{f~hdZsI3D`_g%zaB%b zTyze`>LPbRB~L68IZ!Z{tBh8!GjRJ?!#VkCv92vlB^I!@n~sYfE_GEQ>#-0zM=t{T z2cu=CpCa0O45a~!$EGEZ!4?^M+zee{A)C9!7N zP%|nWpF@70X8JfS*VSo}e>MI(wYq})rJOC~3D{KU=fwh2T&D_?uH`aIRU@@=xi%yl zI-tFShJ^_ac)wRubJQ`nv1xDnG4|Y$UiFTe z%w3xQgbangH4PCI5rY09A~#v$T@f)~T>tnD7evda6#fTsuvp9@lny z>>MAQSnT)RdGGBH7OayR)ZRC5X5PG+JNMqXbMKv}LU(s2hQG_dw5#;mXJWDM@TU3C z!ObXs-Vp#5Q`TvFGNx=5pS8}~leWdQGaH|Xy*Z{5%6bAdiuT3$q=WmUO5r|r(Vk4; z&Q&qo#c-EY>0_~xjGsDucBWb_YCjt!4r^V}uUdH1h~=l>dGP)tl7ky-`xJ6p{#b1k zKQ9YVj7?f9HfbvhE!)~g*7!)=ck}sj;cPLV_cQtY*@{}2WjdSB&o2~aP05v*PNTMf zWxad4a<;g8X6}sVEzHeTbanU18E^X0LaA7+?p~Oi$ zaW8(}9RPK!9?Qq-HlS6H1KM>5FkVjpI`t%AqMiaw)?L7qiXDqxvBs~se$tcI_=)1# zx$0wn`s~7Nb!K*^T=a8=+1bjY`BMaQvxS+m-)C}8&Q_+*1X*iLmN!#A4eZS?RH{Yg z2brp}aI%rv)%5U4+IPI->?uto>0W{yK_5Xs!5RW$N3SJ_rc;x&Ndq(GnQA`Ix*i{m zIZ3PeUu|70`gVm+jE^`viTXN4;1aAOXuLsEe2wk`V3&evl=~HP$+wTP(k+;g=DAey zXKc*oN5DhLC#*?FrId^LO{lcW;F?rjDvN7Mb*mm+UG-6wQ+=qJR{d%Xax!W_t;MxV z4XSmxX4S{kdbI&Hy47{+dgSz|jp_zmd(|a%qq+$tIW?pJ~ME>sqy4y$;twwL|U1b)DL!cH_EU?NPVlxP}oY zs$Wq1)En@o8`OUFM&#V64yZTbdXxINx=Y=Sk|8y!4kBlhx<}oM>t=OG9me%$HKyK- z>lSsNdJC?@>aFVMaNVkosQYo(qnl9k}jL z$JIM=-Ki$kL%8lz535IT-L2lG^0@9%CsYB~Th&Q5h3jofsUohot6x;7)M@na4mGW2 zkn?)=ORA*KAZM?dRcDcNrvgLcx=(#V%`1(PHz-e4)q*;w9#!YnW2&a!t?Ft~J+9uP zE~xja_dU})xnF%!T~tq?_8Zlc>iu~Bfckm$6s~VlA5b5}^)B_x>O<{xT&}X{~YwVrPQ8{Gg&VT35&F zaW1C6E^=y}^mDzy4Fazdc)h@llw2d3@mGnGv58kH1vOFfDmnJmqX52@8Hq1j-TDUH z)a>re$PJKkRb4Ec_1$85s-hsQm{X`0J%3H{{9JLWnl}}2Dd?)7kU~FMgnX}hkd3_h zshP5p`=m+u8Ig^%D4q4Qx>Bj;rz+)Y@qE?KdByn!ysH@H^qwuu&EdsSM!z?6b`Ik4 zO!2WO&k@0!oT|(&oGtsAN2jsocvy3ae%icprh@FsT(O+T!UIX0o+^|p99s(eFB0^s11O?6IGbn@49QipL{A!^Rw~G~8 zFxfJi<9LWY_cGMgm{RtJ*rHX%=&JTbTi=3_K(D!sQpt0WcR=!-C@+D$qmq|ko=W0J zUQdlr$bf~*^>ujFt3=~ih=9xtln?MLn9c7$RGC^h3yMERHa;v|+a-tzaMFJ);LD~8 zefJyAY-H(s@q%_*J&3&X_=(OI1LZkZrum;;TOUq;`&6{h0jVW{AK&4f15nl?r8c$h z*ptB9q1Yow7vsQFylPkDr-;8@bz9kY#un}JR>^m&3CSO0{yygSNPZG^CsZ8mL2HI2 z?g#B)wVCg)LJF5+7cn2oUI$4Hye14C8R2;qe`6!Akdz)nr}Ucv{DFHbv$K$n5IYU* z__+|vhs#QEJlWr<7v@2K6_Fd=$7hRW=w6f-eqyS!0I`%1(P?P3l_d3jsP-g&9_z<| z>wZvVMt&LGxuniDE%-JwJT^t*2>+PoPjJm)5ewkCSjjeAR|3u#V!*GZw<1?G=lOeN z{j~OXuZ^7i z-kI_g#IIKjWc0`Jut#+`CW8cV*)9fJTNe(pt$qtPQm#eg9LG(SBQ?ASJ}X(JxZYmn z`iuSCMcdnM@*q_(;-w^I405(*TCd}C5 zwT%%{%9ZLgmiQK2n2oEU@eY0UdxBmB&pyv?%d%nB2HQFsR9U@`T)faf^itU$fegJ8 zAD_TRJ0U1UVr}rQHe`0_mVO7C`dm|AZf@&Kr&(zcbL8hp%u(5GkmMyxZ!rYu-6&T_ z@541gxRhk)FT)6dbSfZBlJ9ZcLs=v#UlxJ6l&*(NoLTC+jQaU((ApQP-6plva~VXu z7_Y}6RQE5E0j!c!cd$4mL>F{!12%du>1(XG3eEbltB6N~~Qi-#jCtpN_2%1Ud|`@!;C101cp zXrufD-k8939Bp*K%F_A(I~(NLp6Yc}$yzWvBVe&XPp^G6>zJoc93hmZNrR0VdFJNc%h2b&FaT?d-7=l2KdXr5Z@bfK(f zvFtbJAq`E|Ut`|KT8($PK*8+H)J#=WRexY=x(G{#SUw^N;}5iR2{n5oaVT2-oM}1O zFhKXx)PF=8jiil|HOYF}aID-BOhVwXub!U_I-LwU+GXzZvTx`zndZjj20?n;wm3e7 z=6?%6G2n5%7!;L_N?S%!IY_%~pq#MOy=wDkyRX?$lv&0Fl*?(9HnQ=CHa2gS6e}bT zbs1S(Cy;0`xW=lv6pxtK(R*-@l_w!Md2O(F&)kI4{)=Zz0v3xRqCO;LeW?LQjqIb)1tM$f)eZ$f_)D}w-pO(;JH&M z%`$KPyFqR@a-Rimdc2PU_6kgta=b3}U53>G*M528n@Fu`d3FHLepjCTnmkL$XK`Ix zi)X)%>!5i8sdY?216ogeM=8;?&d0}>t*x~iBM~|dG>h)rLVX+b2#}+<6TFUK2Z89* z!$|p=gR?UQPoDF$!Gsl<<#!o#r4;EStlKlED^pM$!+khJgSqE6ygPW<7;p7k_?lY? zxCNgyb_v;^x5~KCDiO&zFmU(#)wD zsLH1*dPpW&lZ{|75mHE+>PCrOM1f)GdziYJpp#biZWO?_7V~JgHv9C9RU2sIV|m%? z!y^Vcyim4aSQhCXc{U|81|>U%ARP{H0;Z4$@F)gAY2TpFfCgnVB;A+Ikcg*M2l5`Y zkZB!A)~c;-8;EIn#Yl)oS#|az5srlZtB=Gv3hdV`<;ZSLc6umDP==x=_jis=SQ7mF z5QnrIZ5Y$S2ay^{$TDGgNrrh-Kr%+*ZQ++Z_AF;tpRD(yJ#4_k$;v_GVvOxVx244u zLyd$k>Az`#9pzw_9GNV*cravWi2Jxfr4E}SGK>yga)Vmw@*Q|4<2?Y_gOpRAK;1dz7^DTr5)3U{kBkvz?Hc0T~@9hwFwReVK?&ycOD~UA|?N0?_1uAS}C~wok*UrW`9%7R78NTAwb_+gq*PT&lAN@0W4d0Lu~MNWKEOU z=)K<`4R619fT__42w~CvvnknzJ1b+feA803W z61O4k9xDejhr}6fC-IKNv^oKBkI_T`KU;YN>C!Bnt|4zy-e&_c!4=Y{l}r-!ZAWC{ z!o!^i$i&oakV!(h5t*b7ndo1{5XbZ<0Vnh?1L~&?(}lnTZsOJz8=5p4RG&{i0_>CJA!16)w{jEPh7W6c-Cw0=W%!Gd?~Bui^uE zL>~iynkn1EJ`;3$0=k1eoI#9XWck*zk`7E>}Gj+XxuxT#y-_9od#Z$^_c zTuKIdRjLes>XI8MxM>m}H8QhHK&=d(>k0@E@ed8=f^Tfu+DTPcCg>7gInv!&xH@W4 zn^4K91_h>05R4K$OF+Sc6;URS#=-W0f=3X~PwoR-E`@9t`Z zx4wn&n)}p=>^_Z7JjLz=WVf{qgR6{hb)w^r=cgt*@l*urKGb%4E>;kmC7W;RS0vtU zNOtBpEu`5Kk*3wM7i(TDe-j-uOF(ZEeRf(gH?gK@^aZA(h0)*C5w*<{-z+32@K~Dw z2>!5mKUSAd-mE%8|MSzdqs^Bn5k2 zkV?tDtKw&Xb|_V25=Z05;H4VlV1^0aOd!LmGxY%gKMoVKt}>M{tj+0dXYEOO1><-!!GNN4&F)>!t_zz+HaJ6D&mS!3@JVb5m1qZ?S zWn98ywX~{KDxHfKVr9bTQ&m^I4o^wVw6wu=M%t*M4VuHOQd(lJGQcU@$h5WrFT$6Q ziwG>d_XRv-9Lx~WcyBg%CR^$?Pch2oOze_Xaf31B=+K=D?+`t&f6UfOec4!$f@7IA z&@%iNK?;s!@%qTLy?O!o8Clzyxyf|ogOFL%`%r;aSqa|@yaxJh$kZ~kbSmh7N$>_% zq^FT_e)Oa2{mki+(7qbNFeD;ef0lKrkLVgfFF}sr0s(0~P)GeFLVHeEr`sunYs~ME zLby?549|M8)n-z*NCTT-`}rTs3Y2;h7HVOK4qo` zC2~$;c93ggedvp%bVVJRJ#MjVeIIfidbLW3kAiOsOLODd5gTz73BxaB5J9zmfvFP! zAsQH?X`JEhm{>%uKOrWFKk7#&dMt-)e^Z=C=;1N0fz>(W2WZ5M094NY$EtDA)Q6EW zoN)_AW84$8C0a+%-4qK*-L^IW`d#63nHb5M*%EpeVJAHBMm#}JRt2G(0hz-Uj4)QS z#iYm+?l4}N&++yIK)CIa*3!%sz|Ew79N<53YRP_FM~&Ydo^=p2$s9g+J0pH~2jUT- zYxbZ_zwyA66rkfrp===uU{o#hk2f?{hi~GBSQZ>|gDrH+z!=O2OKi{qX4%_;bVBb5 z)(zx(kas9ea^5x5DLMf#=dP5*N@=-f^t9x5dFOD=1Z7!Wp@guk#Mzm0 zMYoUlBx+pG@rK$z_5Vh!X{Z|nFKbzEsiQ{wm?hj`W1MAVq)2vXJ{w}tIOEV~O(Gxegdo!SU5hqOh}d#|#6s+{d&cq(l)3sMyf4TtsZ5mH73E$~*)SI< z?LHUt4&W_4K%y0*bpAk{(xewLnp`DJpw-aX1+OYD`jf>W3H>sHhO3GGIe^;s_R1ck z$%hcXHH6@wp+{$`(?i=fZNn63nI+%a<6Cd=t%JTb>01Tgsx8|)^R?|bBM4W#8k(9e z=)x385)TZ`l!vO*#i7P4q?s?_y+P=(oxXMcGW)d-;gNW-yebtT7A*dRIG1i~|O4QnqSGJ~l zu!%raM-!m{bqFE6CZUiE^uHx|iQo?jzC!Rv1b+-rTf6g(yYJq#e{}1cUbkgOe%IsM zx7{-G&?C!S3*|F7m?V_x$3d3*t1NI-0kqntqRgOVCkbae5{7U{JXw$sJ+p><7;fG#%8Sc@ zLF%O)Ny*@*g_N>rHIfJ)ZX+d<4;GO1mpD%Rd?mBgY_gF9C6-L(h1q3mXIxbn1)l8WSgmHF#3VTH0!JGdfJfeC2M|9Q)_Bv zYam;lWIYPe2EFS)VflXqfZ{Gja#6KK z5+=QcQw->J4doR*O%~99O7Ld{e@;N^*M9*p*=6cW2yHtjP@_LYPN03oZ~_lm@E=2A zGZdsSEpcy3y^m(fkUyaFiQdQ9vXD=BtbpnPA{?4x%$fvm3!AhooZM=(E}S3(E{4zv z0wTQyOQ+@Kgh-tz_bwq_lbeikCxmn*7ewiTNOM>Wv4l1)hB;XbGvl@OL8RJBinyjg z)Bg^Au5G>6s%9Eqv7&td51JWjlT6$~Pjfzu4T%^J@$H!9tVz{swrjK?mUNuKPnNP> zKr;}#5tf(Gs>&;*5IjFFcmqlpez2h}LLpv+q=DS97qJswgcA}{!d}F=Sa6lK1pVc* zZ+^=O`DqBgesAj>rrIFV@hfsdcq3ZA?o1r-`wIHf59y9HdSWdm z${bAs<$ZXwtuqE^sQE4ACquld<)cF4Izlfbq7s~Ws61r%FvR@*03$yu1UHAO%*|}p%0=#J)Kkaul%+{Rp_{YFtEKYgMwbA}bGHF&x2YJ!IIL%qeiNoY|6_${= z1FHvC%(yE@7sIEiWkQ(p6$t~#*D1pm-4`zm^W)v;yZ!x1*{#EdSq`>STmk zK*0bwqTx)B0=%0KudL`!q=Hk;M;8z@MTlh#23AQ!UUaOamgJt~*1h@_ zJPAYh5H5zbc&s0X`FT3i=xCif{2(f=k2;J%xW>+*<*1Zsek;07NpLTI^35NZmBc4X zyqUB3mL@(rBC3pn8~9!}f#{Ox{B_G)u{UZt%fd}>WSCL7Av(Ma&iX<@!pg%hWLWEX zK#<`(EVU|Iydk1Tlq;yM zNw6h@am{BF5Tp^EEj9>?BxB1Qp@jyepT`aHH3uw7z!UTc+(Q>S8#j`1Tr&=&6n1d`-1@*y~4V`wLkptbbyu-HF`y(@u$Y8{CF4%!b*XceSoH`vY- zQz#fiZ-PKT!w;CoC~VVAV|a2iIyu_%RRKy5v|&a>WOGDyn|p6);2hPB^>{QY=5SQ- z&M+vjbyQu$!#MVeGxPXQ|23KlO}H9q?GbdEnGy=_Zw!M@Bp!KacpS_yX!?tWFwrsw z?w2AdI0PD{JyB0Wj(-Chv8C?{di1|=O`XG@MnA`vp`&vT_8Q)2 zPF6&3I~03l3w8o&mZSFOutph<5jai|C17FqG|xLD+xV`Mc?)(g4sgRO#?jJTQ^sq+n{sM`OCL^Twt`!##pHu+u)z6WuF zb!4RzLG*gwQpk3a&W4jSvhd-=ISx7i=`I;TxrP}05;X>*Q+9A`9Imhg^i zgK_J&b7G6r%9z{!h-0!&`c~Dq%D#2Zw@&$%_N}7$&6cf)eQVse^1gM%w~mhVE?d|- zrIsys*-8txm#wa4E30orGt1WX#@Y6FxY7TGzz0~Mkiy0-xL#=y0JQ%{0^s8-1OOPH zw*S!9Phxo=7$09vh^+tn!ARyy3KD$eJxzv&<>~1rZ@>w91HcS*F(g0$;1gjDufXH< z3WTMwR)s!I)!|!sTi^rWcN(}*q9@5fAW+CU5I0E)2y(EPaJfvv3knk{ z#I6GpXD=xL>imFN2{tmM@ew|zDGSL)4Vo^_i?QTo^Z=|1tb9Q*LL?WCk%X{NanWrs{0++~$~uXzc1`79qu!?|wk{w+ zvDFY+*gRi#gAFqS5!|@_lZ@m1gX`G;kV#M!QNs_#Q&z;6d^{;QfM-P2KC3_298=U5-BM2J01xO_hyXEG(ZFb8NEr(L^6DQ7D z_yCM8>yHg5De_@oO~DUz6gA+%Q3*VI95vD)7nsRGAerWvp#Ooli33;5iu4=2r38HS zHGJG^*?Jwm9UI3-JM3MUboS4>N+>~fm3GrT0XL~=qSkRCVj~Mq} zK$@|Zyt>fQUO;_XxYN*?82xAt^stP&1Ip^Dz@I-Px)bXm#>do~e~BrhIU#LY{vq-b zvNudYynb7BwW@g=MASE-hh!kqF#EXM1JOoto`QIjJM(1uuEv|;N25SXV$2e`X%0e{ z@ChD$vYwHE7ifm8g)?kj^^7bEeDk#Qhx*!6NWldyZ;wWFjdp);)pj{Twi98XjyIWc zBlqu-qOO&|mH2a@du2e;sre(Jp7pyRj0r=^up!}$oM>D^)uMJ$*)qBpX&x@KIBFT$ zbt{X$Lm=9g=vWPvYlsD{`=*gDV_^{C#5e%`SFH3u3I3Mg&j=bmwpV%k7X)p-oZmy< zUy(5s5@yfLV42Xr)(~IRxZpXHh$-q;(3&8as5epYWT1^1EzF3cq|NxMP&iS)qRz$I z?R#$%1JuG{>|(@WcVKX!I_$sysT>B*axia+h_gVA;H+en6VoNoBt6tvZuLu`Vsh5w z)T+T*Uq%@`+!3dMM=9U*Qp71A6i$&taq}OPr!D=(h*QAf7xW+Oivr5bg>S5*P4gbKwAHjJs*($eOw1n=io|)%e+5J~QDhTA zMzjbm|Jr0Ygf`lVFZfFch`k4L z9*R|3cHeP$C%FS}m*$9LZjt7fKmkUYQ$7wtt{^G_saG(c2_r=rY0Kk?R1uN3CGys& zb9`U$))tA1d{MI7`j2*z(|H7xbLFqXKV`w&i3ncVZ!<_pyrUw^@ijv8bsy$NtA^Qe z8)<(ctRXw@Y_#LP5BV#4EN^@e?-GgYJwur)Tp@2Y?XNZy=;fbYYb4Stw*oh^G` z6pqR4pA#anO96ivlVl*LsdE?=M0i6)bhr61kVt3I3q>Z2h#q3~R+(&!nhi~o@*M0n z$eIl$QiSle<#d~f{vsOKM}C<_f}b!AT`JV|8k^qM4YCo*6wYpw{%AxsH@;1qW472L zt|L($#Wx%7G7*`HasG|iV`C%M*oZTRKPK>>WQ~tl_c11e*zt6TE}qA%b%RX9;M?*6${G55ap0K1%R$f+q+*LGUSpX9#|c;C%#_37#c* zlHk(>pCNdT;0nP7f{O%1wK;9K$kgKmzfJHVf|CT(1TzGmBY1(}^8^b74-%9KP7o9b zNDz98fR;c_6Ni3{fV&1GhPfPT3P{aaZ(6K{CMe4IQN|cO4IcZAO@w8?mP|n5xSBcS zCfu~!?RIB++zit3%oaE6CZ%knn{-|LvTi?MpSxD-vQE}@0DExnBIUR#cMwl+K#lcM zf1SGp_wR|_jIxC5;5|KfLl^3$Gj~S*x6lvQeEqv*e`c@SL&_VLbb> z-u``#vEN9T9TLJCW_}Z7iz)UKUuR!4#g%x>lsFLU9FnIbB&o%Lx9&mqRRB5A9%QL1 z_gEB0o|ShK)3I~keRcQSJI3^lJx2>#O&415acX#w)-dz;K{Q+Eimi*W?{!aAogYpf zRQQ;!`)UrJ<_(8(s{(R7h!>c*G4l^WN?x*(HP9;hfKs8{-+vJ60d#qO~eycq>n zW=T(5Kh2chv$C6J+6JwDci78purb`+)W%i@{WL4Ii7Hm+y1Qw7crgJHa&AH*z?T_< z`vo%#c)T7ow);KZNC%xf9}Wh6Q#3ZxeEUJt*1Bj62WgyU4-%u|&9tlIjU?BqQQy_s zZljxSGzJfg?SA%I{fkDP7W(=iX?2nu-vqYFFz7Is(d|#GQ ziHFb~#oc-C)pwUMW`*3FW_uG+JfQUsVAtAgG^1W9RL6==~MFatn^k` zS;6#In3}`HD%rvcz7d|i1Mue=cB(5lX*A!o?2uqNq?8-Z6T4Xb<;kl@&tE-yaY!jQ z@@w^ay>>`|z2-H`tFQU@k#~{{*6Zpl3Jtw%1In?iu+?6&7h`>^*tT+8C(8PHk(k2D zB1yZ}LuhR!&(gs_7cP~?WRYylZ|NeQ>@8s-{{)2bDwp^L{1OlO1#sa+errZv!p`cE z;Nobs>@s1-REv&yJSZKeDR2uy$)2)jY@aI!7(f$B05;b4=(*`#VEdv(^$xkYfna+j zfJCrFDFCBvj^3`-(yVs*YJT}zjS8%GRb8u%YYeP;11?75W;K%LU9jWonidw|B=k%T z#QG1mwb5rmsl;(!m^i))m7GvvIJV#yj-&|r0v|0*65lB`BVo=##VmuM{!uj40pi$J z`u^iVJlVgEnO_F^|JF(k!Vn0NZ!4`nTIOD17bZ;Hqx+#UF#V0L z?%9P2GhUWiztB-Ij`RnxV5pIsh{#7oJ|=R4yMutD@+oHSE;(`B=|-y*?wN~c+VW0i zIh~8X)t&8EFk8rQY8)<)FO~eMlb&%-nJ(Pwp38YO!+aZ@q_*fd(WVwA+kVHJ$ke7} zJDAE9Cs#V2*(1wE2w5EPiFMCe|6$_Oo2-(3Zk|u|3vcN!A(#FX{_Uo))o`51l!I}cbh~lv3enEp*=y-Rk@hoJEKcjcjN0(lxD9+sDKe?&rD)mv2b3o2 ADF6Tf literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/events.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/events.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b98f2e4fe7283055216fe1f0ce6d092bc46b830c GIT binary patch literal 4036 zcmb_fTW=dh6yB?ExjAl|lBR`H2y~&fD&CxW*O;FDP6hyvUXaFDYCmyv$YzuP9t0TxY9#gk!k5_=a`cBEtWwf>wqex)7g2gb#I!v8Ro+ zpBm5gSbIejzc7R~(tk6KtgVzWM^DQ8p7i2aoEnMIyqB1V{Nz*@P@*^$Wf~>5`(Yqs zKkD`$Qca|OR`lAN;jM|Eg7<~%Ht&a#?}hRq4JI!*R#NhM{(dA9Gxqk9O3>|xfgi+) zee8t;J~Zy!oN)qHl@rJ?<-{7XLM}`kf&Zx^jy|+E<%3NDXZCmuX9Q|kEI}YKloMi^ zMhnzcluEksW?0&kw>PDOggS_VUQ%^kKlG$@UBtELb-C+0rXnM$L2s}#h`CIvp4c07 zkpiiDWk?Z4ucb^>U`U-Ldc#;IV-+J$igbx%bUKbL)@Wr?bKP#l29%Xa`oR3d5T#FbLwz=BwXK+x3jmeh8`=$R|ylaM>*0-fiq6(8WOoQ#ZJ#7!=e&6FsyGD)v0J@E-fpF*Ib3*Kji)uj3Kq|XX#xH0QR9yXhbYF=3(1MWg8TpgDc=4Keh zF5A@SGg_bQB@3kgf8@4eW;U%AU)Xp`RmRd+*eB-G<7c>jc2_w+^A8<|RD3y6Hf9HN zGwjSu?b@R-@ML<}ygjXv(hpz?`9>84JY(i!L0H(L&mvEZZw*{nlZJ7Y&&Z|u`JCPw zqcYtcr98LGXYY;%DJtZx;HR0!|l8fHn#ZDfR0yQI4Is8O4QSLFgOk+@H?5SPt0Xi^mb#2Vy9pX_??Wc ze(&}BbZcD5wH9grpt&J))amaZfRVe( literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/loader.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..689f29833b6afef3dda473fc138e2a5183ae93d0 GIT binary patch literal 2257 zcmc&#PjAyO6t~kf&C+xo>twkul2mH=C!d)-V;_~`UPP+uW^$vaEsTu{l)Ax0I4zq z5TisEc@vN&Kx)hc#4M3}3b_x+0FRf~68HL42myGFltCku&TzO}@ zt{?h|>!!7C-wQ)<*!buP3AMQu4dMu`CepDLg)$MteiDh)#*Q5>qhQ3vSW9)ugZY5zDaC-zUytG~kXOA4@rm<47dVo-Yqiy(7*OXBhji@~J17yYC0w-GdpK(;o3~ zFJrHN>>Y6F_~9rz<_?Twk#NquLEr=`Q0@3k;3;h&RW>L> zZEEG;=jBO6+l9;9V?71`LvO&rf6H|T5gWo*+|+j6lc5)6h?-ToG^H?zDqMA34#Q+> zS@^)55yU!BZi_pP`PXq5aB)eiCh)FiF5%V%G9{3+w223OI?84dVX=gRFsPYQ&Lh_k zp!|jF$&HzCEmq6luS|r_BUrGg$bj~YU}p!)Z7fy*|NksvikMv}-|>Cu2Rk56Mw z7Eea3o{XN^FP@Bgf9km~MgCM|$!9k2h((xQG*RL6Cmy0wmj;&?k5J)>7Ee%Nhy-qE fDjlhOf;lNQ-()HLE&eLkK$)6J%THUk)VKHt>vgdL literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/nodes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/nodes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d5a45a7635931709322964eb658ea44f3f3f3ef GIT binary patch literal 1789 zcmcJPO>fgk7{_P)k~)DvcwZI{h}}w9g80B`r3FRez-e^pPX=V$;TP=wP&g(UocYLZrF0RtPGskP9t@BNlsR1Bq7Ps7^=B^s%Cobh8k& zZwV-x7)E^E!s_Z2sfKiZAjG0nOCS{ORUzIkWqz88glw*n=~B2A-zr%FegYH77JPze~PI-f^ROZqU=vmLM)~Tx>chaCWW$ZxzK!{BUIR+$0 zL+8;cRdGRPZD{MGT*ti?%1cg|n{-##yK9@EJixT>HTPEX=<(xQUG;03#Qt=8#@Sq_ zU?Z5;%an0!yU-oh8#r;F;#0Q~4?On8&|ZppZcxD!OnVn*4Hhu*0pY;Q0X1x|y(;ru zr*&2q1a|s=0v+t+<)Qc~)jO#7GOB-4GZ(1dJ74|BGB%8a-n|Cj5y z@{g>ltk`vBY%ES4^BZDanv?{UV4fuKzbq5uE@ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/parser.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/parser.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a0fabb23b3065bed5943b69a5f2c31318d24e25 GIT binary patch literal 11928 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/reader.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/reader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5586d80f117aea595b822ce9ff4244e79844b7fa GIT binary patch literal 4595 zcmaJ_&2JmW6`$EJE>|Qa%U`nNI;>NFu(d=daT7N+jMzyWr?8d4c4~xevsmqnBvRy( znqAr!K^aD614U4@LD6$7U5Xg!rPmgP0sj#_>@mH>hc-R*je=s)WB6_ScBb*!QO5pGgY7>HgSYX-*Fgjme8H$OVFjzzJGG*qCDVMk7^omja00i}j_XOi z9i^^}!nUYK3#p@I5Vxa>lUlKC&MOxmP^4^?Co)E)0P=*X5}Fsw)x~y8R_mRmIPP{j zZIx8#>ha>epdn>a?RM&ZJ-Qbt;m_Bb(w_@rDXKGfWpuaNtj|?DE6HLzdVS^xRcu5~ zcY<&!SdekG9^Gv($tvVTTUA$rR+=Og!Ng2C&rqg&I;(VVJ6UDgRfB^I&3(2a`W~fXi`AGjh*wBo(HdD z&h{>yJ{g}bLzglvhe32YDWiu`d2S_<XJonoDx5_7DuUxK2nvysS z>mF0&IU$AK@JD^xqjse~qa)x-envUDl5dd1_=ss8iZo+u8AnsV3uas`nb*|QbSx?K zc~XQ!MuI{aQtPEY-{2gXr-mB^*il)L_lN8_I&Ehb?4_X$PH&b72NX&le(XUO6IS2JreSMYBlSTOr5aZ z?6xAc4;xHPygVHb7iGBQcd$JjDr%BglS1NiEiCazfRS>nAxikl(6{>q*+jlBOnmg^H?#|Z(XvBsBdbv!%A z;0y$wBdN#65$s>(un?Qq`!<_0%8v0}n$0YhI+$HZ7I*L3=_om0zyB%in>?5C1F%f5 zIIu;=-LYZP(`dtg#9+8#QuDS=pW3B-uD+lHk@OL^iq=9;@Hdf$DKs&%1|zGFfWOOP zh1Og$)GxNy32VuuF{JH*v@Iw@JJBIXJK+9Kb5VonH#=nh3v87ypVEfTWrprj9`>F+ z{_^1$Up{>Df)`WnX@Bd|@xK1c(@IV&Q=P?dOPNX={uP@04oJn!qG1~S)Cl(|H#gr_ zl(s|g<1z^2Q}75&`$dVn+}SjEY11&M?~<>S26`VZ+?{gC&hOxfuY!;&1?w_(CR01c zK&J+!-BH3_b8ZccvYm@!juD4clKGCSbV%EHZI;`1o^&fL)BzINN;o>(xqt`1g;Gt? z-iXQIMUzNzmO06-%~5O*<@VGPq;`FisrxV9mbauoofZGALsJR5@V^Im?k{(l<7{mL=g-yYx zJ;s@RP8q6~??2{9zR>3{>Sg1 z{`29(>93#u^zm{f!dSC^4oA_YW11Tz-QJ0~Bg1;o+$#U#a-d{6 zYA5BO*=*mFqB52iXFr_vKf3wB?Cr}}pm-;ifeIH>dqK6koh;h75J01=t*xi4t1M9V z<0KVZ13_vbNd&3g3KD>UF7Ls!3eTHM@5=cTh)3i*d*gqg|cVh!hBJ~zk&R#vL%a;qLDita&`i7a|YML>rC zI;_7Bz9O$rCqK>#yLa`aL>CC^GI2G8(rt8`dyMXS+U!Ux`nEtBLtO!><->M#SE@t` z6nOW;|Lrvt%D=%AzXd|@Y5`y!K7q%@$N+UV3rHnYT1}y>@&Lcb%#2&oa#U!IQhSC? z&l$?L9o|JqJj(CaF(B=Z!W0=?d)o2rj!YJUmJz;M%UM>Z;Dx>P3@jI4)BcB&T^Cxn zaUCZ`rIx~FG}E`%nGQ5k^&qX{?p*Ilt)*T0Mv*Q4gl7~%I4e$$RKt7w1`)J{y|Wdr zb2}P3+*b2Gjm8yS&(vWe1cuqQ>U-3iAwt!xdYuSiW@;#z=E8QXgPL7kqG<|eMb^>V z+O}04_WCY{7-eMgn3AVka*ugA&-TV$*B!^sUH9cmo^Fi5C0z1sN&gH{WCNx1@tf59 l5fMs6snecoNH{FL^qanxx)-wx#V&3vDRwWvK?5HV8tZZf!CAfRFj(F zu!pQ}O3OiyBUp0a0CBLnAjrc8pp3i-@k5ZOyd}RNK%N400t85c1e=E-K;HDS`M&Cz zo(nH>oD9{~b*fHPpE`Bw+)Ccml&j(Q{Erq}55J~q|3YB&X92i_C;Tg2)7CYi{Zy}M zLKj9`UrFBv-lnkHX3bP@t7fUUU9;6YSIen)zLx)%CTx*=riq;IJT+?tzScAgqF z7f?aCfLz~2Z_zLAmHa7TJ=OhUYx=pNYpP`iP&tE+0h-OAjLlOAkAn{!(*m zBMf)8wmLFeT5X08AA2p|kCt|}n)PPz*ps5Z*2GM!SfN;2eB=j@mfFqLrLEoQVJCQd z@!h4c8ToH*d5sNk-4Bl~9j72C^3OD!0!I|^&ijsVMe&*TRIe3KFNrBtcf~0&EoLyH zC{ByAIEGqDoDs9)IBHYkggA-O(~6;IC7E5lx6&YE2S3(H?+19ot0-bU*6LbpqSRvp zrP0(-n(Hhr!O|Am1MP)gt>ls^;jei+?Wi6`yKO%ygy434!`}^)*+I`*yYsl;eSF9< zQSYp_{6-WeQ)vaG{4GdW!D~0YkaIx(tk7?-$!U-!%PeMCWIHV>G!&0!(2VN!SwKpT zG(DI7bx%)-@Ztcy!DSDA+!j8H4cAbKwLP%nx!wZ{_P~hex~?fk7>W_5Vg%UnK$BBI zuh_|Swz#_RA`iUqWfP0(`tlesB*~Mp0PhLku{Ffe zweA1denQGr|KIQ}v|)d6P4)2`|A;WgYrH2vCc=y#${9l_gs6V%Q?LDJ>xm{Ayoj727MVu zJmu&-a8sQunhhK}$%e#gbhdV1n2FhFhjIZewc-fRCKi~?ctVV_?tKghb0{<{r=)jZ zn_S2Q{{PQP$YLDDD|kuP<(n+10w?J`$?xym@NWTglJ0H*8p~QtQ*BgV=!vaVaK%d1tiDVeHONu6J_S*is9aBU|b- z0P9-MifC=D{sL_Zo?775m~|-L76s4fTqbTaYzATEp<5~*D>hyr8Q6PcQM9fO9wn3i zhRXkDqarglgo$l=hz&CK?B{S;XhE?>54)u(9~*>!LkngtEpm3(bd7%>Yk_f7Q=9zJ z_l#b?=U}4?YNHFPhE46cksBAHBIf>+xX>!e&xO^?q0LooKZ{+o{RP_~22*h%cGr~6 z-fs6r;h#apv=Rkck7^@XG&HG9%w6#-YMe91)iMX8OemS&_el8EOs*qhnNa zRZSh^nxlk9wW?ZrxF>w1V?+7re_|;=-ZV8dGFJb|MC$d!MXEph zm>)tvOUI)miVjKY-&gM`DSu&%Sjlm+WODe&Gbp-G(V^tiP+(3fs#nOn_NdL4t-Lfgyr65+clr zQ-Eg>Mx4RBEM61m#CZe}$HWD35iPUgEEMLvEl_Udi~-^p6-blQp8 z45Gw_^7bP64fKxejoKFO*N^dJrptn_Wa%d$M-x%(;d!+U zob=QQ?w;IFAk>zm|8fxDlBwaxfcJ+ZWL-F%EMV@VDzo>?m?P36T~HFvM{qA0LhPAf zqTbVkGFq(B7AR=sfgmvu{GXU$bFP{cVUb}TQvtBOu+eOGPw!vZYBTWU?n^zEH}KI) zPQHs*l3PWT|ISzCFDpR!oGB@#GlFvH_`|np#2rc}|6@!NQnk=GpEb&Qcm8m`q(jD7 zV`5|`QB)bRE?oh;7+7$2U@akEu%l}GtSTZBx#L65y>{pyBy2njYBOJ?ab+5BC_iId zosJ3|2mL8N-Cu`=NWwZ&>^NX-6_nI$gX#LD=Yl@#)1yQWhZeaVrCNEUUnPM+|1;9r zKNv?yATZZI-_d@&{I6g8!5F3FcSh+WQVJS3%OovLk*jG&#;Y1q2cbNcbX=q=B zH(>V&DZRo55Pwev7X}UrcnrYcAgOCCTod+Arlw=^^J(0DfIr{KVp^O>87v zkVMG?XnSx`6`vnqmI>vU%nT2?n(WVk6EZEK>8D})nQ4FzV3eFPoXhTOhYPqGJ;rZt zRVLp}^0%QXm92e+s-(~L*CbX+gmaXtBvsIm|EkfV|`EK5dqOSXc^Hj&+V7zsJV$?$lKg{VL+zC z&RR!q!m1xCz2mty|L;jR*{31yIZ7gsa~U_DV?@vOi56MjPau=jxAQOcc`1M(eHI5D zsgWR!-{G460l0m_z|2dBpQ6ElYJ*39@MBJd@CSH8Mw4)-3}r-5K+ou4t{p(Tw4ifX zhu(r2MeqzeqRggQWtx25kHFgqNplt9AQwQJC|fL4_Tx>~DB&=dN@n<}RB$S+F-%~3 z0dq{s&&i=0QE9O>m-|l`kXc9Bw(_h{e7Wx9+qPhc=mKvQ+L>ZqVwP`gsktBmT_1cF!g(CrV zf8;De+^`G^=oK<_=A*pB3m=W#6J?@W?~gm2bqATwi-#^Cjgr2P?;j}hBlcclULd&? z14J9=4kl3HjgiN#&USVl01sq~`>U%xqN+EjGf%;T?fb7U?S*i0A?zMbIj`_;C(OmF zP+bM>)cpN>5~YX`O#y4CSu$#yXOxkJ4GHNoGFLQI{XaNFxXc4 zHY3to^hPi79UHhqVY?Z875O=wIRs%}hjE6LK=@?_7gZ~>cJO`oY*-Q#H$yoATS8@v zteyE3DtBEM_6ZFv!G-*fFemSQzGwHWp54naX9qkRU$Nty3jhBA9!xIItBl)E(U(Ub z(z6Qw%gBixz)o!8jwc7rki^JsU``8f;Hdd+QRpGh(Q^Yw6j3YnTrq_aE=MVOE5`O` zdUz$ytI}bKJD^;I{~GX_F0aI{Dz&|mn2w95v^YnZRM;yqu~$a0SK=I7u=&g$65A#= zR#DNGXog!} z)Oc8ryj7%fl>6~1m(gXx!zXWZgvB{VjOyF$QLZ;5gUZy1M@z>f$)&7HoVA?*AMXUR z#}On={(!}Av7k3o%ccCQO$|`h|0zh*@k2AKw93d4O_zL?M|2glXvfk7d#c>&*qlXl zBg6q0UVS_&G%tuR&&4xhI+Gp*zr#Z89V+Ij7)Da z2|YOe^tE9);TEbxf-H+LpFsuCN&Jurd0ZtS-(tqrdTKhYYWMojCnHLgH^7eUH!ulw zh(q3V@_PJ}GSc`={DX>hjzT_BQjdsY90M9j&71+R~O z5Z4#||zk&ce%oHKkSD5Gf0x44%qOZ<7GYf*A_=n8lA+{0@sDJ*q}AReo1_ zKmi=VBAhi& zl!22J)(RiLfB(DbErvRw+;!zmrWta@R^{uy!H(~+xXVI$y&tfqT;C5_Q~vKaSyQer z4}0qWzR%hZS$HULZI0-*!5aT_gg@dGD}R{6Mzx|`H95|*r1&eTEPO~ELarsHdwsRQ z`2XUp-~iqy&T?vx-!p(7{w@kIANTZEjj}nt gTW+|z^`&LzexVY|1Y^@OouT~w{WFbXjn;|zKbFcdI{*Lx literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/resolver.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/resolver.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f2e714e1fc9698bebce06f1260b3285a2b24b2f7 GIT binary patch literal 5566 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/scanner.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/scanner.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ded3fbd8404df91e4be75a9ea62edbee96076f31 GIT binary patch literal 25313 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/serializer.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/serializer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..707445e3e363dac0c42dcbdacc068b4da62283e9 GIT binary patch literal 3384 zcmZu!&2QVt6`$dkC`y)O$D1Z;+NRsxv`Tla1-8JVMNlNzI9(Kpx>y?pO0*yt&Dfz# zk@Apo)&d0-wGTZsKn^|iv_9rv;;BG^0{buIlKs7*Buh>x@XgGd$C-H_zxPJr#)il6 zT>N`yxZ7due>7NqEDRpt%^rgYCitP@Ghqlb<|D&5IQ6aA+^$;`4Csh>2(NwCkec9htDplWe?9}CD{VxxnKG7Tu_`LzRYY&M% zz?(HeB=fmoz9Bf)HX3{iH2yRb;X8gp{B1#U+Ej{{n97lsF53)Q|dD&Ux!DMBFI44qNQJR!44f60XD?3XY ziXcga%*tAr44$VdD_e1xgQ0TY&;Fe zVn9KQchxVzy?V~O z;87XO$bSrHo8DSE)fJl!v=9m6q2Q)urJepS#aAqb+A|P+g zT=CFWAgH{;xhkr^=zpiQaEh@AvoRew**?xAngL=6l^mXxC?+-mgwc zYM!Fn1vDt?GGrQe%IK4+%+EWFiVm%m-E8&>2K0bMIjsg_%y|eg}7f0m^rvWR}J#;p&(0y6^1`!Z=hKFtx=LA)z!; z-Tg*2UDX20GU`|K)z$)NE4i;nvmeqdsz3$9WoEla?9Dj_FTe5IbJjx8Z-?uL>^4@g z>Wo8$d|TR4BILKFjjM8)`As2nImo4;3sBh*@*teVISqU_8dbL_^=mrZCq&+dayoS% zZ}t^Pl|l*SO(493-!@XH_0}_*+~TdbmeIny{21t zJ-3CQg&bPef*_1z-1cn*K&ljFg3^(6hsjEticD5r2IvCzzHLhPe)W&x_mt9f{dZv) Jm%B#C`~eYI95(;} literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/tokens.cpython-39.pyc b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/__pycache__/tokens.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..74a536bc8990080ee9ca32487fca9bed4e22925e GIT binary patch literal 5005 zcmcInTW{1x81?wFaW=_jLvGv&mjI@aMWw0=U6zzUTM4lb4XV^2~R_%!ge!Xv;ld=_|C;Zfk@ z`~>g`g~xzT@>9U46fOXt=4XJ~JQ2BdPi)3^(BP`& z7_ljX+H*ld1Om+LUsu)oO~Uv>M9wm)=GYM5V1(=!T7#p5X5D zuok$ho(yj1vgrrzv-<7vJ^J9p??YUcvF;iyn3w^ zkwJ2ywG-PeWQLLJk}{H%(O8b{7L>^g>7b9q>^wBnLQ!ulqLH}mt+t^(&|b4wtj*rB z_ZmaWzSIBIo--t@{>E-I8hy`R>DQZ8M75^1wP(ka zV62Y!Oqy->m;S=Ut8B$eoXV7g<;yTy-_v7#;bv@X20O~HNi_sPalTv&W#l*OtqNgf zu+8!xcQ2#{i=ZW3ccENs`d&>|&`4j{)vwR>=t)v0Nzz$VO3#^BNPsqrw6~~VD-%;) zcddDOcV0Lw9$E_`FN%bqonem&GPkRy7z3mcrC*NeA9r)}^6I>F9E&2xLmv@C79m4o zbE6qH;$heIYo3(o#)O7f4_wzVl-xK^OyTNQ6v%kk6Kh-bpb^Q0Zk&jfYw%iPJEfu= zMWwN#ZnFaDZM~Zj$)u`di78Bp^R8QO@-5_}8;`o~i!HB~unQZ*VwNhBn5l?PP)1Rp z_d{SCs>esqfrq9nqR8W@y6Y5cRPBmbqm%_!TzC+Qz>mW1Km~Glq|DQficj86A8M1( zB^0&zvn#i4VEyWC6SYCBSkO$zj7>5rwzj?6R?uCxaDj^3DNGWyk93C)TT8xBX+jNJ zVf5RbJ*aeNxmEWP=L#}foIn-pAx|9oDPPhWnLye1rO5>K^!SoozDUz(!#e0o_|S-t zJ!twWH0(=HVkmm?8)^^AK8 zWvRMS=lE&|g&caQO_ndA$Qe|Z~K8b_pz3P|~Oo9+-UgK6dcU<>18@oEc<7Hd9`ukvX|Pl!orVvuGat*E0GL9$23l zrO#up)k0h|>P+veQ%^>Y*5)$UZ)CI~Jg_!nN}En(M)s9BA}|z`n;B}t15?lZSZluQ zjmro2w9i7m3Z`2bX2JtAPZM)b1Y-6_A7YC8w;5u>0~1eWO-`Nufj#TPdmTKtGrWWc z=AFzKoYKbZRUg^~(3CT@ga@Xz9|b#Vr~bh1_2HsSx|iW1JTO=OS2~mT+3xgV`x?^k zXV?f2%r?HiY$A~wc%u*HH=uZ!p(H#oWr1S&u+e3_-iMJg_2&#D;T}dhk``&w5m&1G z54F&f$&ou$_6StI_9bSJ#BIr1# z15HrR7kg#ohlao26p35xvZv6O`$fiJ^Z?I+$^Vz^a~ytV(!>ZgaSo=9mw$7I^Qemh_?_4Jr*pmUL?9eL>+S;mK;*9o{( zs8aP+MnVET)TU*%gd#7X>b>bD9~Es2pB85K)@P|z5nHXA7dA3CKubnDwZO?`)<^|n zyE6psoS#aWRZ@Yz9n-H2d}mB$Oz8N~VSN_OUA+H0N;h$+r|Qhax#sEyKD5-=n)=L8 zw|YVMPjyQabXya2MG}{(qC0}1<66+sDd-#%bgBs2?gj0_g7!s0Ta{Xwf>Kma&;)U2 hZ0xL!*e)mEoE37qB[0-9][0-9][0-9][0-9]) + -(?P[0-9][0-9]?) + -(?P[0-9][0-9]?) + (?:(?:[Tt]|[ \t]+) + (?P[0-9][0-9]?) + :(?P[0-9][0-9]) + :(?P[0-9][0-9]) + (?:\.(?P[0-9]*))? + (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) + (?::(?P[0-9][0-9]))?))?)?$''', re.X) + + def construct_yaml_timestamp(self, node): + value = self.construct_scalar(node) + match = self.timestamp_regexp.match(node.value) + values = match.groupdict() + year = int(values['year']) + month = int(values['month']) + day = int(values['day']) + if not values['hour']: + return datetime.date(year, month, day) + hour = int(values['hour']) + minute = int(values['minute']) + second = int(values['second']) + fraction = 0 + tzinfo = None + if values['fraction']: + fraction = values['fraction'][:6] + while len(fraction) < 6: + fraction += '0' + fraction = int(fraction) + if values['tz_sign']: + tz_hour = int(values['tz_hour']) + tz_minute = int(values['tz_minute'] or 0) + delta = datetime.timedelta(hours=tz_hour, minutes=tz_minute) + if values['tz_sign'] == '-': + delta = -delta + tzinfo = datetime.timezone(delta) + elif values['tz']: + tzinfo = datetime.timezone.utc + return datetime.datetime(year, month, day, hour, minute, second, fraction, + tzinfo=tzinfo) + + def construct_yaml_omap(self, node): + # Note: we do not check for duplicate keys, because it's too + # CPU-expensive. + omap = [] + yield omap + if not isinstance(node, SequenceNode): + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a sequence, but found %s" % node.id, node.start_mark) + for subnode in node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a mapping of length 1, but found %s" % subnode.id, + subnode.start_mark) + if len(subnode.value) != 1: + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a single mapping item, but found %d items" % len(subnode.value), + subnode.start_mark) + key_node, value_node = subnode.value[0] + key = self.construct_object(key_node) + value = self.construct_object(value_node) + omap.append((key, value)) + + def construct_yaml_pairs(self, node): + # Note: the same code as `construct_yaml_omap`. + pairs = [] + yield pairs + if not isinstance(node, SequenceNode): + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a sequence, but found %s" % node.id, node.start_mark) + for subnode in node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a mapping of length 1, but found %s" % subnode.id, + subnode.start_mark) + if len(subnode.value) != 1: + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a single mapping item, but found %d items" % len(subnode.value), + subnode.start_mark) + key_node, value_node = subnode.value[0] + key = self.construct_object(key_node) + value = self.construct_object(value_node) + pairs.append((key, value)) + + def construct_yaml_set(self, node): + data = set() + yield data + value = self.construct_mapping(node) + data.update(value) + + def construct_yaml_str(self, node): + return self.construct_scalar(node) + + def construct_yaml_seq(self, node): + data = [] + yield data + data.extend(self.construct_sequence(node)) + + def construct_yaml_map(self, node): + data = {} + yield data + value = self.construct_mapping(node) + data.update(value) + + def construct_yaml_object(self, node, cls): + data = cls.__new__(cls) + yield data + if hasattr(data, '__setstate__'): + state = self.construct_mapping(node, deep=True) + data.__setstate__(state) + else: + state = self.construct_mapping(node) + data.__dict__.update(state) + + def construct_undefined(self, node): + raise ConstructorError(None, None, + "could not determine a constructor for the tag %r" % node.tag, + node.start_mark) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:null', + SafeConstructor.construct_yaml_null) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:bool', + SafeConstructor.construct_yaml_bool) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:int', + SafeConstructor.construct_yaml_int) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:float', + SafeConstructor.construct_yaml_float) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:binary', + SafeConstructor.construct_yaml_binary) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:timestamp', + SafeConstructor.construct_yaml_timestamp) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:omap', + SafeConstructor.construct_yaml_omap) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:pairs', + SafeConstructor.construct_yaml_pairs) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:set', + SafeConstructor.construct_yaml_set) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:str', + SafeConstructor.construct_yaml_str) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:seq', + SafeConstructor.construct_yaml_seq) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:map', + SafeConstructor.construct_yaml_map) + +SafeConstructor.add_constructor(None, + SafeConstructor.construct_undefined) + +class FullConstructor(SafeConstructor): + # 'extend' is blacklisted because it is used by + # construct_python_object_apply to add `listitems` to a newly generate + # python instance + def get_state_keys_blacklist(self): + return ['^extend$', '^__.*__$'] + + def get_state_keys_blacklist_regexp(self): + if not hasattr(self, 'state_keys_blacklist_regexp'): + self.state_keys_blacklist_regexp = re.compile('(' + '|'.join(self.get_state_keys_blacklist()) + ')') + return self.state_keys_blacklist_regexp + + def construct_python_str(self, node): + return self.construct_scalar(node) + + def construct_python_unicode(self, node): + return self.construct_scalar(node) + + def construct_python_bytes(self, node): + try: + value = self.construct_scalar(node).encode('ascii') + except UnicodeEncodeError as exc: + raise ConstructorError(None, None, + "failed to convert base64 data into ascii: %s" % exc, + node.start_mark) + try: + if hasattr(base64, 'decodebytes'): + return base64.decodebytes(value) + else: + return base64.decodestring(value) + except binascii.Error as exc: + raise ConstructorError(None, None, + "failed to decode base64 data: %s" % exc, node.start_mark) + + def construct_python_long(self, node): + return self.construct_yaml_int(node) + + def construct_python_complex(self, node): + return complex(self.construct_scalar(node)) + + def construct_python_tuple(self, node): + return tuple(self.construct_sequence(node)) + + def find_python_module(self, name, mark, unsafe=False): + if not name: + raise ConstructorError("while constructing a Python module", mark, + "expected non-empty name appended to the tag", mark) + if unsafe: + try: + __import__(name) + except ImportError as exc: + raise ConstructorError("while constructing a Python module", mark, + "cannot find module %r (%s)" % (name, exc), mark) + if name not in sys.modules: + raise ConstructorError("while constructing a Python module", mark, + "module %r is not imported" % name, mark) + return sys.modules[name] + + def find_python_name(self, name, mark, unsafe=False): + if not name: + raise ConstructorError("while constructing a Python object", mark, + "expected non-empty name appended to the tag", mark) + if '.' in name: + module_name, object_name = name.rsplit('.', 1) + else: + module_name = 'builtins' + object_name = name + if unsafe: + try: + __import__(module_name) + except ImportError as exc: + raise ConstructorError("while constructing a Python object", mark, + "cannot find module %r (%s)" % (module_name, exc), mark) + if module_name not in sys.modules: + raise ConstructorError("while constructing a Python object", mark, + "module %r is not imported" % module_name, mark) + module = sys.modules[module_name] + if not hasattr(module, object_name): + raise ConstructorError("while constructing a Python object", mark, + "cannot find %r in the module %r" + % (object_name, module.__name__), mark) + return getattr(module, object_name) + + def construct_python_name(self, suffix, node): + value = self.construct_scalar(node) + if value: + raise ConstructorError("while constructing a Python name", node.start_mark, + "expected the empty value, but found %r" % value, node.start_mark) + return self.find_python_name(suffix, node.start_mark) + + def construct_python_module(self, suffix, node): + value = self.construct_scalar(node) + if value: + raise ConstructorError("while constructing a Python module", node.start_mark, + "expected the empty value, but found %r" % value, node.start_mark) + return self.find_python_module(suffix, node.start_mark) + + def make_python_instance(self, suffix, node, + args=None, kwds=None, newobj=False, unsafe=False): + if not args: + args = [] + if not kwds: + kwds = {} + cls = self.find_python_name(suffix, node.start_mark) + if not (unsafe or isinstance(cls, type)): + raise ConstructorError("while constructing a Python instance", node.start_mark, + "expected a class, but found %r" % type(cls), + node.start_mark) + if newobj and isinstance(cls, type): + return cls.__new__(cls, *args, **kwds) + else: + return cls(*args, **kwds) + + def set_python_instance_state(self, instance, state, unsafe=False): + if hasattr(instance, '__setstate__'): + instance.__setstate__(state) + else: + slotstate = {} + if isinstance(state, tuple) and len(state) == 2: + state, slotstate = state + if hasattr(instance, '__dict__'): + if not unsafe and state: + for key in state.keys(): + self.check_state_key(key) + instance.__dict__.update(state) + elif state: + slotstate.update(state) + for key, value in slotstate.items(): + if not unsafe: + self.check_state_key(key) + setattr(instance, key, value) + + def construct_python_object(self, suffix, node): + # Format: + # !!python/object:module.name { ... state ... } + instance = self.make_python_instance(suffix, node, newobj=True) + yield instance + deep = hasattr(instance, '__setstate__') + state = self.construct_mapping(node, deep=deep) + self.set_python_instance_state(instance, state) + + def construct_python_object_apply(self, suffix, node, newobj=False): + # Format: + # !!python/object/apply # (or !!python/object/new) + # args: [ ... arguments ... ] + # kwds: { ... keywords ... } + # state: ... state ... + # listitems: [ ... listitems ... ] + # dictitems: { ... dictitems ... } + # or short format: + # !!python/object/apply [ ... arguments ... ] + # The difference between !!python/object/apply and !!python/object/new + # is how an object is created, check make_python_instance for details. + if isinstance(node, SequenceNode): + args = self.construct_sequence(node, deep=True) + kwds = {} + state = {} + listitems = [] + dictitems = {} + else: + value = self.construct_mapping(node, deep=True) + args = value.get('args', []) + kwds = value.get('kwds', {}) + state = value.get('state', {}) + listitems = value.get('listitems', []) + dictitems = value.get('dictitems', {}) + instance = self.make_python_instance(suffix, node, args, kwds, newobj) + if state: + self.set_python_instance_state(instance, state) + if listitems: + instance.extend(listitems) + if dictitems: + for key in dictitems: + instance[key] = dictitems[key] + return instance + + def construct_python_object_new(self, suffix, node): + return self.construct_python_object_apply(suffix, node, newobj=True) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/none', + FullConstructor.construct_yaml_null) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/bool', + FullConstructor.construct_yaml_bool) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/str', + FullConstructor.construct_python_str) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/unicode', + FullConstructor.construct_python_unicode) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/bytes', + FullConstructor.construct_python_bytes) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/int', + FullConstructor.construct_yaml_int) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/long', + FullConstructor.construct_python_long) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/float', + FullConstructor.construct_yaml_float) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/complex', + FullConstructor.construct_python_complex) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/list', + FullConstructor.construct_yaml_seq) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/tuple', + FullConstructor.construct_python_tuple) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/dict', + FullConstructor.construct_yaml_map) + +FullConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/name:', + FullConstructor.construct_python_name) + +class UnsafeConstructor(FullConstructor): + + def find_python_module(self, name, mark): + return super(UnsafeConstructor, self).find_python_module(name, mark, unsafe=True) + + def find_python_name(self, name, mark): + return super(UnsafeConstructor, self).find_python_name(name, mark, unsafe=True) + + def make_python_instance(self, suffix, node, args=None, kwds=None, newobj=False): + return super(UnsafeConstructor, self).make_python_instance( + suffix, node, args, kwds, newobj, unsafe=True) + + def set_python_instance_state(self, instance, state): + return super(UnsafeConstructor, self).set_python_instance_state( + instance, state, unsafe=True) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/module:', + UnsafeConstructor.construct_python_module) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object:', + UnsafeConstructor.construct_python_object) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object/new:', + UnsafeConstructor.construct_python_object_new) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object/apply:', + UnsafeConstructor.construct_python_object_apply) + +# Constructor is same as UnsafeConstructor. Need to leave this in place in case +# people have extended it directly. +class Constructor(UnsafeConstructor): + pass diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/cyaml.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/cyaml.py new file mode 100644 index 0000000..0c21345 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/cyaml.py @@ -0,0 +1,101 @@ + +__all__ = [ + 'CBaseLoader', 'CSafeLoader', 'CFullLoader', 'CUnsafeLoader', 'CLoader', + 'CBaseDumper', 'CSafeDumper', 'CDumper' +] + +from yaml._yaml import CParser, CEmitter + +from .constructor import * + +from .serializer import * +from .representer import * + +from .resolver import * + +class CBaseLoader(CParser, BaseConstructor, BaseResolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class CSafeLoader(CParser, SafeConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class CFullLoader(CParser, FullConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + FullConstructor.__init__(self) + Resolver.__init__(self) + +class CUnsafeLoader(CParser, UnsafeConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + UnsafeConstructor.__init__(self) + Resolver.__init__(self) + +class CLoader(CParser, Constructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + Constructor.__init__(self) + Resolver.__init__(self) + +class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class CSafeDumper(CEmitter, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class CDumper(CEmitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/dumper.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/dumper.py new file mode 100644 index 0000000..6aadba5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/dumper.py @@ -0,0 +1,62 @@ + +__all__ = ['BaseDumper', 'SafeDumper', 'Dumper'] + +from .emitter import * +from .serializer import * +from .representer import * +from .resolver import * + +class BaseDumper(Emitter, Serializer, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class Dumper(Emitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/emitter.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/emitter.py new file mode 100644 index 0000000..a664d01 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/emitter.py @@ -0,0 +1,1137 @@ + +# Emitter expects events obeying the following grammar: +# stream ::= STREAM-START document* STREAM-END +# document ::= DOCUMENT-START node DOCUMENT-END +# node ::= SCALAR | sequence | mapping +# sequence ::= SEQUENCE-START node* SEQUENCE-END +# mapping ::= MAPPING-START (node node)* MAPPING-END + +__all__ = ['Emitter', 'EmitterError'] + +from .error import YAMLError +from .events import * + +class EmitterError(YAMLError): + pass + +class ScalarAnalysis: + def __init__(self, scalar, empty, multiline, + allow_flow_plain, allow_block_plain, + allow_single_quoted, allow_double_quoted, + allow_block): + self.scalar = scalar + self.empty = empty + self.multiline = multiline + self.allow_flow_plain = allow_flow_plain + self.allow_block_plain = allow_block_plain + self.allow_single_quoted = allow_single_quoted + self.allow_double_quoted = allow_double_quoted + self.allow_block = allow_block + +class Emitter: + + DEFAULT_TAG_PREFIXES = { + '!' : '!', + 'tag:yaml.org,2002:' : '!!', + } + + def __init__(self, stream, canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None): + + # The stream should have the methods `write` and possibly `flush`. + self.stream = stream + + # Encoding can be overridden by STREAM-START. + self.encoding = None + + # Emitter is a state machine with a stack of states to handle nested + # structures. + self.states = [] + self.state = self.expect_stream_start + + # Current event and the event queue. + self.events = [] + self.event = None + + # The current indentation level and the stack of previous indents. + self.indents = [] + self.indent = None + + # Flow level. + self.flow_level = 0 + + # Contexts. + self.root_context = False + self.sequence_context = False + self.mapping_context = False + self.simple_key_context = False + + # Characteristics of the last emitted character: + # - current position. + # - is it a whitespace? + # - is it an indention character + # (indentation space, '-', '?', or ':')? + self.line = 0 + self.column = 0 + self.whitespace = True + self.indention = True + + # Whether the document requires an explicit document indicator + self.open_ended = False + + # Formatting details. + self.canonical = canonical + self.allow_unicode = allow_unicode + self.best_indent = 2 + if indent and 1 < indent < 10: + self.best_indent = indent + self.best_width = 80 + if width and width > self.best_indent*2: + self.best_width = width + self.best_line_break = '\n' + if line_break in ['\r', '\n', '\r\n']: + self.best_line_break = line_break + + # Tag prefixes. + self.tag_prefixes = None + + # Prepared anchor and tag. + self.prepared_anchor = None + self.prepared_tag = None + + # Scalar analysis and style. + self.analysis = None + self.style = None + + def dispose(self): + # Reset the state attributes (to clear self-references) + self.states = [] + self.state = None + + def emit(self, event): + self.events.append(event) + while not self.need_more_events(): + self.event = self.events.pop(0) + self.state() + self.event = None + + # In some cases, we wait for a few next events before emitting. + + def need_more_events(self): + if not self.events: + return True + event = self.events[0] + if isinstance(event, DocumentStartEvent): + return self.need_events(1) + elif isinstance(event, SequenceStartEvent): + return self.need_events(2) + elif isinstance(event, MappingStartEvent): + return self.need_events(3) + else: + return False + + def need_events(self, count): + level = 0 + for event in self.events[1:]: + if isinstance(event, (DocumentStartEvent, CollectionStartEvent)): + level += 1 + elif isinstance(event, (DocumentEndEvent, CollectionEndEvent)): + level -= 1 + elif isinstance(event, StreamEndEvent): + level = -1 + if level < 0: + return False + return (len(self.events) < count+1) + + def increase_indent(self, flow=False, indentless=False): + self.indents.append(self.indent) + if self.indent is None: + if flow: + self.indent = self.best_indent + else: + self.indent = 0 + elif not indentless: + self.indent += self.best_indent + + # States. + + # Stream handlers. + + def expect_stream_start(self): + if isinstance(self.event, StreamStartEvent): + if self.event.encoding and not hasattr(self.stream, 'encoding'): + self.encoding = self.event.encoding + self.write_stream_start() + self.state = self.expect_first_document_start + else: + raise EmitterError("expected StreamStartEvent, but got %s" + % self.event) + + def expect_nothing(self): + raise EmitterError("expected nothing, but got %s" % self.event) + + # Document handlers. + + def expect_first_document_start(self): + return self.expect_document_start(first=True) + + def expect_document_start(self, first=False): + if isinstance(self.event, DocumentStartEvent): + if (self.event.version or self.event.tags) and self.open_ended: + self.write_indicator('...', True) + self.write_indent() + if self.event.version: + version_text = self.prepare_version(self.event.version) + self.write_version_directive(version_text) + self.tag_prefixes = self.DEFAULT_TAG_PREFIXES.copy() + if self.event.tags: + handles = sorted(self.event.tags.keys()) + for handle in handles: + prefix = self.event.tags[handle] + self.tag_prefixes[prefix] = handle + handle_text = self.prepare_tag_handle(handle) + prefix_text = self.prepare_tag_prefix(prefix) + self.write_tag_directive(handle_text, prefix_text) + implicit = (first and not self.event.explicit and not self.canonical + and not self.event.version and not self.event.tags + and not self.check_empty_document()) + if not implicit: + self.write_indent() + self.write_indicator('---', True) + if self.canonical: + self.write_indent() + self.state = self.expect_document_root + elif isinstance(self.event, StreamEndEvent): + if self.open_ended: + self.write_indicator('...', True) + self.write_indent() + self.write_stream_end() + self.state = self.expect_nothing + else: + raise EmitterError("expected DocumentStartEvent, but got %s" + % self.event) + + def expect_document_end(self): + if isinstance(self.event, DocumentEndEvent): + self.write_indent() + if self.event.explicit: + self.write_indicator('...', True) + self.write_indent() + self.flush_stream() + self.state = self.expect_document_start + else: + raise EmitterError("expected DocumentEndEvent, but got %s" + % self.event) + + def expect_document_root(self): + self.states.append(self.expect_document_end) + self.expect_node(root=True) + + # Node handlers. + + def expect_node(self, root=False, sequence=False, mapping=False, + simple_key=False): + self.root_context = root + self.sequence_context = sequence + self.mapping_context = mapping + self.simple_key_context = simple_key + if isinstance(self.event, AliasEvent): + self.expect_alias() + elif isinstance(self.event, (ScalarEvent, CollectionStartEvent)): + self.process_anchor('&') + self.process_tag() + if isinstance(self.event, ScalarEvent): + self.expect_scalar() + elif isinstance(self.event, SequenceStartEvent): + if self.flow_level or self.canonical or self.event.flow_style \ + or self.check_empty_sequence(): + self.expect_flow_sequence() + else: + self.expect_block_sequence() + elif isinstance(self.event, MappingStartEvent): + if self.flow_level or self.canonical or self.event.flow_style \ + or self.check_empty_mapping(): + self.expect_flow_mapping() + else: + self.expect_block_mapping() + else: + raise EmitterError("expected NodeEvent, but got %s" % self.event) + + def expect_alias(self): + if self.event.anchor is None: + raise EmitterError("anchor is not specified for alias") + self.process_anchor('*') + self.state = self.states.pop() + + def expect_scalar(self): + self.increase_indent(flow=True) + self.process_scalar() + self.indent = self.indents.pop() + self.state = self.states.pop() + + # Flow sequence handlers. + + def expect_flow_sequence(self): + self.write_indicator('[', True, whitespace=True) + self.flow_level += 1 + self.increase_indent(flow=True) + self.state = self.expect_first_flow_sequence_item + + def expect_first_flow_sequence_item(self): + if isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + self.write_indicator(']', False) + self.state = self.states.pop() + else: + if self.canonical or self.column > self.best_width: + self.write_indent() + self.states.append(self.expect_flow_sequence_item) + self.expect_node(sequence=True) + + def expect_flow_sequence_item(self): + if isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + if self.canonical: + self.write_indicator(',', False) + self.write_indent() + self.write_indicator(']', False) + self.state = self.states.pop() + else: + self.write_indicator(',', False) + if self.canonical or self.column > self.best_width: + self.write_indent() + self.states.append(self.expect_flow_sequence_item) + self.expect_node(sequence=True) + + # Flow mapping handlers. + + def expect_flow_mapping(self): + self.write_indicator('{', True, whitespace=True) + self.flow_level += 1 + self.increase_indent(flow=True) + self.state = self.expect_first_flow_mapping_key + + def expect_first_flow_mapping_key(self): + if isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + self.write_indicator('}', False) + self.state = self.states.pop() + else: + if self.canonical or self.column > self.best_width: + self.write_indent() + if not self.canonical and self.check_simple_key(): + self.states.append(self.expect_flow_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True) + self.states.append(self.expect_flow_mapping_value) + self.expect_node(mapping=True) + + def expect_flow_mapping_key(self): + if isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + if self.canonical: + self.write_indicator(',', False) + self.write_indent() + self.write_indicator('}', False) + self.state = self.states.pop() + else: + self.write_indicator(',', False) + if self.canonical or self.column > self.best_width: + self.write_indent() + if not self.canonical and self.check_simple_key(): + self.states.append(self.expect_flow_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True) + self.states.append(self.expect_flow_mapping_value) + self.expect_node(mapping=True) + + def expect_flow_mapping_simple_value(self): + self.write_indicator(':', False) + self.states.append(self.expect_flow_mapping_key) + self.expect_node(mapping=True) + + def expect_flow_mapping_value(self): + if self.canonical or self.column > self.best_width: + self.write_indent() + self.write_indicator(':', True) + self.states.append(self.expect_flow_mapping_key) + self.expect_node(mapping=True) + + # Block sequence handlers. + + def expect_block_sequence(self): + indentless = (self.mapping_context and not self.indention) + self.increase_indent(flow=False, indentless=indentless) + self.state = self.expect_first_block_sequence_item + + def expect_first_block_sequence_item(self): + return self.expect_block_sequence_item(first=True) + + def expect_block_sequence_item(self, first=False): + if not first and isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.state = self.states.pop() + else: + self.write_indent() + self.write_indicator('-', True, indention=True) + self.states.append(self.expect_block_sequence_item) + self.expect_node(sequence=True) + + # Block mapping handlers. + + def expect_block_mapping(self): + self.increase_indent(flow=False) + self.state = self.expect_first_block_mapping_key + + def expect_first_block_mapping_key(self): + return self.expect_block_mapping_key(first=True) + + def expect_block_mapping_key(self, first=False): + if not first and isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.state = self.states.pop() + else: + self.write_indent() + if self.check_simple_key(): + self.states.append(self.expect_block_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True, indention=True) + self.states.append(self.expect_block_mapping_value) + self.expect_node(mapping=True) + + def expect_block_mapping_simple_value(self): + self.write_indicator(':', False) + self.states.append(self.expect_block_mapping_key) + self.expect_node(mapping=True) + + def expect_block_mapping_value(self): + self.write_indent() + self.write_indicator(':', True, indention=True) + self.states.append(self.expect_block_mapping_key) + self.expect_node(mapping=True) + + # Checkers. + + def check_empty_sequence(self): + return (isinstance(self.event, SequenceStartEvent) and self.events + and isinstance(self.events[0], SequenceEndEvent)) + + def check_empty_mapping(self): + return (isinstance(self.event, MappingStartEvent) and self.events + and isinstance(self.events[0], MappingEndEvent)) + + def check_empty_document(self): + if not isinstance(self.event, DocumentStartEvent) or not self.events: + return False + event = self.events[0] + return (isinstance(event, ScalarEvent) and event.anchor is None + and event.tag is None and event.implicit and event.value == '') + + def check_simple_key(self): + length = 0 + if isinstance(self.event, NodeEvent) and self.event.anchor is not None: + if self.prepared_anchor is None: + self.prepared_anchor = self.prepare_anchor(self.event.anchor) + length += len(self.prepared_anchor) + if isinstance(self.event, (ScalarEvent, CollectionStartEvent)) \ + and self.event.tag is not None: + if self.prepared_tag is None: + self.prepared_tag = self.prepare_tag(self.event.tag) + length += len(self.prepared_tag) + if isinstance(self.event, ScalarEvent): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + length += len(self.analysis.scalar) + return (length < 128 and (isinstance(self.event, AliasEvent) + or (isinstance(self.event, ScalarEvent) + and not self.analysis.empty and not self.analysis.multiline) + or self.check_empty_sequence() or self.check_empty_mapping())) + + # Anchor, Tag, and Scalar processors. + + def process_anchor(self, indicator): + if self.event.anchor is None: + self.prepared_anchor = None + return + if self.prepared_anchor is None: + self.prepared_anchor = self.prepare_anchor(self.event.anchor) + if self.prepared_anchor: + self.write_indicator(indicator+self.prepared_anchor, True) + self.prepared_anchor = None + + def process_tag(self): + tag = self.event.tag + if isinstance(self.event, ScalarEvent): + if self.style is None: + self.style = self.choose_scalar_style() + if ((not self.canonical or tag is None) and + ((self.style == '' and self.event.implicit[0]) + or (self.style != '' and self.event.implicit[1]))): + self.prepared_tag = None + return + if self.event.implicit[0] and tag is None: + tag = '!' + self.prepared_tag = None + else: + if (not self.canonical or tag is None) and self.event.implicit: + self.prepared_tag = None + return + if tag is None: + raise EmitterError("tag is not specified") + if self.prepared_tag is None: + self.prepared_tag = self.prepare_tag(tag) + if self.prepared_tag: + self.write_indicator(self.prepared_tag, True) + self.prepared_tag = None + + def choose_scalar_style(self): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + if self.event.style == '"' or self.canonical: + return '"' + if not self.event.style and self.event.implicit[0]: + if (not (self.simple_key_context and + (self.analysis.empty or self.analysis.multiline)) + and (self.flow_level and self.analysis.allow_flow_plain + or (not self.flow_level and self.analysis.allow_block_plain))): + return '' + if self.event.style and self.event.style in '|>': + if (not self.flow_level and not self.simple_key_context + and self.analysis.allow_block): + return self.event.style + if not self.event.style or self.event.style == '\'': + if (self.analysis.allow_single_quoted and + not (self.simple_key_context and self.analysis.multiline)): + return '\'' + return '"' + + def process_scalar(self): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + if self.style is None: + self.style = self.choose_scalar_style() + split = (not self.simple_key_context) + #if self.analysis.multiline and split \ + # and (not self.style or self.style in '\'\"'): + # self.write_indent() + if self.style == '"': + self.write_double_quoted(self.analysis.scalar, split) + elif self.style == '\'': + self.write_single_quoted(self.analysis.scalar, split) + elif self.style == '>': + self.write_folded(self.analysis.scalar) + elif self.style == '|': + self.write_literal(self.analysis.scalar) + else: + self.write_plain(self.analysis.scalar, split) + self.analysis = None + self.style = None + + # Analyzers. + + def prepare_version(self, version): + major, minor = version + if major != 1: + raise EmitterError("unsupported YAML version: %d.%d" % (major, minor)) + return '%d.%d' % (major, minor) + + def prepare_tag_handle(self, handle): + if not handle: + raise EmitterError("tag handle must not be empty") + if handle[0] != '!' or handle[-1] != '!': + raise EmitterError("tag handle must start and end with '!': %r" % handle) + for ch in handle[1:-1]: + if not ('0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_'): + raise EmitterError("invalid character %r in the tag handle: %r" + % (ch, handle)) + return handle + + def prepare_tag_prefix(self, prefix): + if not prefix: + raise EmitterError("tag prefix must not be empty") + chunks = [] + start = end = 0 + if prefix[0] == '!': + end = 1 + while end < len(prefix): + ch = prefix[end] + if '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?!:@&=+$,_.~*\'()[]': + end += 1 + else: + if start < end: + chunks.append(prefix[start:end]) + start = end = end+1 + data = ch.encode('utf-8') + for ch in data: + chunks.append('%%%02X' % ord(ch)) + if start < end: + chunks.append(prefix[start:end]) + return ''.join(chunks) + + def prepare_tag(self, tag): + if not tag: + raise EmitterError("tag must not be empty") + if tag == '!': + return tag + handle = None + suffix = tag + prefixes = sorted(self.tag_prefixes.keys()) + for prefix in prefixes: + if tag.startswith(prefix) \ + and (prefix == '!' or len(prefix) < len(tag)): + handle = self.tag_prefixes[prefix] + suffix = tag[len(prefix):] + chunks = [] + start = end = 0 + while end < len(suffix): + ch = suffix[end] + if '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?:@&=+$,_.~*\'()[]' \ + or (ch == '!' and handle != '!'): + end += 1 + else: + if start < end: + chunks.append(suffix[start:end]) + start = end = end+1 + data = ch.encode('utf-8') + for ch in data: + chunks.append('%%%02X' % ch) + if start < end: + chunks.append(suffix[start:end]) + suffix_text = ''.join(chunks) + if handle: + return '%s%s' % (handle, suffix_text) + else: + return '!<%s>' % suffix_text + + def prepare_anchor(self, anchor): + if not anchor: + raise EmitterError("anchor must not be empty") + for ch in anchor: + if not ('0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_'): + raise EmitterError("invalid character %r in the anchor: %r" + % (ch, anchor)) + return anchor + + def analyze_scalar(self, scalar): + + # Empty scalar is a special case. + if not scalar: + return ScalarAnalysis(scalar=scalar, empty=True, multiline=False, + allow_flow_plain=False, allow_block_plain=True, + allow_single_quoted=True, allow_double_quoted=True, + allow_block=False) + + # Indicators and special characters. + block_indicators = False + flow_indicators = False + line_breaks = False + special_characters = False + + # Important whitespace combinations. + leading_space = False + leading_break = False + trailing_space = False + trailing_break = False + break_space = False + space_break = False + + # Check document indicators. + if scalar.startswith('---') or scalar.startswith('...'): + block_indicators = True + flow_indicators = True + + # First character or preceded by a whitespace. + preceded_by_whitespace = True + + # Last character or followed by a whitespace. + followed_by_whitespace = (len(scalar) == 1 or + scalar[1] in '\0 \t\r\n\x85\u2028\u2029') + + # The previous character is a space. + previous_space = False + + # The previous character is a break. + previous_break = False + + index = 0 + while index < len(scalar): + ch = scalar[index] + + # Check for indicators. + if index == 0: + # Leading indicators are special characters. + if ch in '#,[]{}&*!|>\'\"%@`': + flow_indicators = True + block_indicators = True + if ch in '?:': + flow_indicators = True + if followed_by_whitespace: + block_indicators = True + if ch == '-' and followed_by_whitespace: + flow_indicators = True + block_indicators = True + else: + # Some indicators cannot appear within a scalar as well. + if ch in ',?[]{}': + flow_indicators = True + if ch == ':': + flow_indicators = True + if followed_by_whitespace: + block_indicators = True + if ch == '#' and preceded_by_whitespace: + flow_indicators = True + block_indicators = True + + # Check for line breaks, special, and unicode characters. + if ch in '\n\x85\u2028\u2029': + line_breaks = True + if not (ch == '\n' or '\x20' <= ch <= '\x7E'): + if (ch == '\x85' or '\xA0' <= ch <= '\uD7FF' + or '\uE000' <= ch <= '\uFFFD' + or '\U00010000' <= ch < '\U0010ffff') and ch != '\uFEFF': + unicode_characters = True + if not self.allow_unicode: + special_characters = True + else: + special_characters = True + + # Detect important whitespace combinations. + if ch == ' ': + if index == 0: + leading_space = True + if index == len(scalar)-1: + trailing_space = True + if previous_break: + break_space = True + previous_space = True + previous_break = False + elif ch in '\n\x85\u2028\u2029': + if index == 0: + leading_break = True + if index == len(scalar)-1: + trailing_break = True + if previous_space: + space_break = True + previous_space = False + previous_break = True + else: + previous_space = False + previous_break = False + + # Prepare for the next character. + index += 1 + preceded_by_whitespace = (ch in '\0 \t\r\n\x85\u2028\u2029') + followed_by_whitespace = (index+1 >= len(scalar) or + scalar[index+1] in '\0 \t\r\n\x85\u2028\u2029') + + # Let's decide what styles are allowed. + allow_flow_plain = True + allow_block_plain = True + allow_single_quoted = True + allow_double_quoted = True + allow_block = True + + # Leading and trailing whitespaces are bad for plain scalars. + if (leading_space or leading_break + or trailing_space or trailing_break): + allow_flow_plain = allow_block_plain = False + + # We do not permit trailing spaces for block scalars. + if trailing_space: + allow_block = False + + # Spaces at the beginning of a new line are only acceptable for block + # scalars. + if break_space: + allow_flow_plain = allow_block_plain = allow_single_quoted = False + + # Spaces followed by breaks, as well as special character are only + # allowed for double quoted scalars. + if space_break or special_characters: + allow_flow_plain = allow_block_plain = \ + allow_single_quoted = allow_block = False + + # Although the plain scalar writer supports breaks, we never emit + # multiline plain scalars. + if line_breaks: + allow_flow_plain = allow_block_plain = False + + # Flow indicators are forbidden for flow plain scalars. + if flow_indicators: + allow_flow_plain = False + + # Block indicators are forbidden for block plain scalars. + if block_indicators: + allow_block_plain = False + + return ScalarAnalysis(scalar=scalar, + empty=False, multiline=line_breaks, + allow_flow_plain=allow_flow_plain, + allow_block_plain=allow_block_plain, + allow_single_quoted=allow_single_quoted, + allow_double_quoted=allow_double_quoted, + allow_block=allow_block) + + # Writers. + + def flush_stream(self): + if hasattr(self.stream, 'flush'): + self.stream.flush() + + def write_stream_start(self): + # Write BOM if needed. + if self.encoding and self.encoding.startswith('utf-16'): + self.stream.write('\uFEFF'.encode(self.encoding)) + + def write_stream_end(self): + self.flush_stream() + + def write_indicator(self, indicator, need_whitespace, + whitespace=False, indention=False): + if self.whitespace or not need_whitespace: + data = indicator + else: + data = ' '+indicator + self.whitespace = whitespace + self.indention = self.indention and indention + self.column += len(data) + self.open_ended = False + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_indent(self): + indent = self.indent or 0 + if not self.indention or self.column > indent \ + or (self.column == indent and not self.whitespace): + self.write_line_break() + if self.column < indent: + self.whitespace = True + data = ' '*(indent-self.column) + self.column = indent + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_line_break(self, data=None): + if data is None: + data = self.best_line_break + self.whitespace = True + self.indention = True + self.line += 1 + self.column = 0 + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_version_directive(self, version_text): + data = '%%YAML %s' % version_text + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_line_break() + + def write_tag_directive(self, handle_text, prefix_text): + data = '%%TAG %s %s' % (handle_text, prefix_text) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_line_break() + + # Scalar streams. + + def write_single_quoted(self, text, split=True): + self.write_indicator('\'', True) + spaces = False + breaks = False + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if spaces: + if ch is None or ch != ' ': + if start+1 == end and self.column > self.best_width and split \ + and start != 0 and end != len(text): + self.write_indent() + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + elif breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + if text[start] == '\n': + self.write_line_break() + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + self.write_indent() + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029' or ch == '\'': + if start < end: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch == '\'': + data = '\'\'' + self.column += 2 + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + 1 + if ch is not None: + spaces = (ch == ' ') + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + self.write_indicator('\'', False) + + ESCAPE_REPLACEMENTS = { + '\0': '0', + '\x07': 'a', + '\x08': 'b', + '\x09': 't', + '\x0A': 'n', + '\x0B': 'v', + '\x0C': 'f', + '\x0D': 'r', + '\x1B': 'e', + '\"': '\"', + '\\': '\\', + '\x85': 'N', + '\xA0': '_', + '\u2028': 'L', + '\u2029': 'P', + } + + def write_double_quoted(self, text, split=True): + self.write_indicator('"', True) + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if ch is None or ch in '"\\\x85\u2028\u2029\uFEFF' \ + or not ('\x20' <= ch <= '\x7E' + or (self.allow_unicode + and ('\xA0' <= ch <= '\uD7FF' + or '\uE000' <= ch <= '\uFFFD'))): + if start < end: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch is not None: + if ch in self.ESCAPE_REPLACEMENTS: + data = '\\'+self.ESCAPE_REPLACEMENTS[ch] + elif ch <= '\xFF': + data = '\\x%02X' % ord(ch) + elif ch <= '\uFFFF': + data = '\\u%04X' % ord(ch) + else: + data = '\\U%08X' % ord(ch) + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end+1 + if 0 < end < len(text)-1 and (ch == ' ' or start >= end) \ + and self.column+(end-start) > self.best_width and split: + data = text[start:end]+'\\' + if start < end: + start = end + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_indent() + self.whitespace = False + self.indention = False + if text[start] == ' ': + data = '\\' + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + end += 1 + self.write_indicator('"', False) + + def determine_block_hints(self, text): + hints = '' + if text: + if text[0] in ' \n\x85\u2028\u2029': + hints += str(self.best_indent) + if text[-1] not in '\n\x85\u2028\u2029': + hints += '-' + elif len(text) == 1 or text[-2] in '\n\x85\u2028\u2029': + hints += '+' + return hints + + def write_folded(self, text): + hints = self.determine_block_hints(text) + self.write_indicator('>'+hints, True) + if hints[-1:] == '+': + self.open_ended = True + self.write_line_break() + leading_space = True + spaces = False + breaks = True + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + if not leading_space and ch is not None and ch != ' ' \ + and text[start] == '\n': + self.write_line_break() + leading_space = (ch == ' ') + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + if ch is not None: + self.write_indent() + start = end + elif spaces: + if ch != ' ': + if start+1 == end and self.column > self.best_width: + self.write_indent() + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029': + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + if ch is None: + self.write_line_break() + start = end + if ch is not None: + breaks = (ch in '\n\x85\u2028\u2029') + spaces = (ch == ' ') + end += 1 + + def write_literal(self, text): + hints = self.determine_block_hints(text) + self.write_indicator('|'+hints, True) + if hints[-1:] == '+': + self.open_ended = True + self.write_line_break() + breaks = True + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + if ch is not None: + self.write_indent() + start = end + else: + if ch is None or ch in '\n\x85\u2028\u2029': + data = text[start:end] + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + if ch is None: + self.write_line_break() + start = end + if ch is not None: + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + + def write_plain(self, text, split=True): + if self.root_context: + self.open_ended = True + if not text: + return + if not self.whitespace: + data = ' ' + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.whitespace = False + self.indention = False + spaces = False + breaks = False + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if spaces: + if ch != ' ': + if start+1 == end and self.column > self.best_width and split: + self.write_indent() + self.whitespace = False + self.indention = False + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + elif breaks: + if ch not in '\n\x85\u2028\u2029': + if text[start] == '\n': + self.write_line_break() + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + self.write_indent() + self.whitespace = False + self.indention = False + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029': + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch is not None: + spaces = (ch == ' ') + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/error.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/error.py new file mode 100644 index 0000000..b796b4d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/error.py @@ -0,0 +1,75 @@ + +__all__ = ['Mark', 'YAMLError', 'MarkedYAMLError'] + +class Mark: + + def __init__(self, name, index, line, column, buffer, pointer): + self.name = name + self.index = index + self.line = line + self.column = column + self.buffer = buffer + self.pointer = pointer + + def get_snippet(self, indent=4, max_length=75): + if self.buffer is None: + return None + head = '' + start = self.pointer + while start > 0 and self.buffer[start-1] not in '\0\r\n\x85\u2028\u2029': + start -= 1 + if self.pointer-start > max_length/2-1: + head = ' ... ' + start += 5 + break + tail = '' + end = self.pointer + while end < len(self.buffer) and self.buffer[end] not in '\0\r\n\x85\u2028\u2029': + end += 1 + if end-self.pointer > max_length/2-1: + tail = ' ... ' + end -= 5 + break + snippet = self.buffer[start:end] + return ' '*indent + head + snippet + tail + '\n' \ + + ' '*(indent+self.pointer-start+len(head)) + '^' + + def __str__(self): + snippet = self.get_snippet() + where = " in \"%s\", line %d, column %d" \ + % (self.name, self.line+1, self.column+1) + if snippet is not None: + where += ":\n"+snippet + return where + +class YAMLError(Exception): + pass + +class MarkedYAMLError(YAMLError): + + def __init__(self, context=None, context_mark=None, + problem=None, problem_mark=None, note=None): + self.context = context + self.context_mark = context_mark + self.problem = problem + self.problem_mark = problem_mark + self.note = note + + def __str__(self): + lines = [] + if self.context is not None: + lines.append(self.context) + if self.context_mark is not None \ + and (self.problem is None or self.problem_mark is None + or self.context_mark.name != self.problem_mark.name + or self.context_mark.line != self.problem_mark.line + or self.context_mark.column != self.problem_mark.column): + lines.append(str(self.context_mark)) + if self.problem is not None: + lines.append(self.problem) + if self.problem_mark is not None: + lines.append(str(self.problem_mark)) + if self.note is not None: + lines.append(self.note) + return '\n'.join(lines) + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/events.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/events.py new file mode 100644 index 0000000..f79ad38 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/events.py @@ -0,0 +1,86 @@ + +# Abstract classes. + +class Event(object): + def __init__(self, start_mark=None, end_mark=None): + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + attributes = [key for key in ['anchor', 'tag', 'implicit', 'value'] + if hasattr(self, key)] + arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) + for key in attributes]) + return '%s(%s)' % (self.__class__.__name__, arguments) + +class NodeEvent(Event): + def __init__(self, anchor, start_mark=None, end_mark=None): + self.anchor = anchor + self.start_mark = start_mark + self.end_mark = end_mark + +class CollectionStartEvent(NodeEvent): + def __init__(self, anchor, tag, implicit, start_mark=None, end_mark=None, + flow_style=None): + self.anchor = anchor + self.tag = tag + self.implicit = implicit + self.start_mark = start_mark + self.end_mark = end_mark + self.flow_style = flow_style + +class CollectionEndEvent(Event): + pass + +# Implementations. + +class StreamStartEvent(Event): + def __init__(self, start_mark=None, end_mark=None, encoding=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.encoding = encoding + +class StreamEndEvent(Event): + pass + +class DocumentStartEvent(Event): + def __init__(self, start_mark=None, end_mark=None, + explicit=None, version=None, tags=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.explicit = explicit + self.version = version + self.tags = tags + +class DocumentEndEvent(Event): + def __init__(self, start_mark=None, end_mark=None, + explicit=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.explicit = explicit + +class AliasEvent(NodeEvent): + pass + +class ScalarEvent(NodeEvent): + def __init__(self, anchor, tag, implicit, value, + start_mark=None, end_mark=None, style=None): + self.anchor = anchor + self.tag = tag + self.implicit = implicit + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + +class SequenceStartEvent(CollectionStartEvent): + pass + +class SequenceEndEvent(CollectionEndEvent): + pass + +class MappingStartEvent(CollectionStartEvent): + pass + +class MappingEndEvent(CollectionEndEvent): + pass + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/loader.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/loader.py new file mode 100644 index 0000000..e90c112 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/loader.py @@ -0,0 +1,63 @@ + +__all__ = ['BaseLoader', 'FullLoader', 'SafeLoader', 'Loader', 'UnsafeLoader'] + +from .reader import * +from .scanner import * +from .parser import * +from .composer import * +from .constructor import * +from .resolver import * + +class BaseLoader(Reader, Scanner, Parser, Composer, BaseConstructor, BaseResolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class FullLoader(Reader, Scanner, Parser, Composer, FullConstructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + FullConstructor.__init__(self) + Resolver.__init__(self) + +class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + Constructor.__init__(self) + Resolver.__init__(self) + +# UnsafeLoader is the same as Loader (which is and was always unsafe on +# untrusted input). Use of either Loader or UnsafeLoader should be rare, since +# FullLoad should be able to load almost all YAML safely. Loader is left intact +# to ensure backwards compatibility. +class UnsafeLoader(Reader, Scanner, Parser, Composer, Constructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + Constructor.__init__(self) + Resolver.__init__(self) diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/nodes.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/nodes.py new file mode 100644 index 0000000..c4f070c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/nodes.py @@ -0,0 +1,49 @@ + +class Node(object): + def __init__(self, tag, value, start_mark, end_mark): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + value = self.value + #if isinstance(value, list): + # if len(value) == 0: + # value = '' + # elif len(value) == 1: + # value = '<1 item>' + # else: + # value = '<%d items>' % len(value) + #else: + # if len(value) > 75: + # value = repr(value[:70]+u' ... ') + # else: + # value = repr(value) + value = repr(value) + return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value) + +class ScalarNode(Node): + id = 'scalar' + def __init__(self, tag, value, + start_mark=None, end_mark=None, style=None): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + +class CollectionNode(Node): + def __init__(self, tag, value, + start_mark=None, end_mark=None, flow_style=None): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.flow_style = flow_style + +class SequenceNode(CollectionNode): + id = 'sequence' + +class MappingNode(CollectionNode): + id = 'mapping' + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/parser.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/parser.py new file mode 100644 index 0000000..13a5995 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/parser.py @@ -0,0 +1,589 @@ + +# The following YAML grammar is LL(1) and is parsed by a recursive descent +# parser. +# +# stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +# implicit_document ::= block_node DOCUMENT-END* +# explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +# block_node_or_indentless_sequence ::= +# ALIAS +# | properties (block_content | indentless_block_sequence)? +# | block_content +# | indentless_block_sequence +# block_node ::= ALIAS +# | properties block_content? +# | block_content +# flow_node ::= ALIAS +# | properties flow_content? +# | flow_content +# properties ::= TAG ANCHOR? | ANCHOR TAG? +# block_content ::= block_collection | flow_collection | SCALAR +# flow_content ::= flow_collection | SCALAR +# block_collection ::= block_sequence | block_mapping +# flow_collection ::= flow_sequence | flow_mapping +# block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +# indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +# block_mapping ::= BLOCK-MAPPING_START +# ((KEY block_node_or_indentless_sequence?)? +# (VALUE block_node_or_indentless_sequence?)?)* +# BLOCK-END +# flow_sequence ::= FLOW-SEQUENCE-START +# (flow_sequence_entry FLOW-ENTRY)* +# flow_sequence_entry? +# FLOW-SEQUENCE-END +# flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +# flow_mapping ::= FLOW-MAPPING-START +# (flow_mapping_entry FLOW-ENTRY)* +# flow_mapping_entry? +# FLOW-MAPPING-END +# flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +# +# FIRST sets: +# +# stream: { STREAM-START } +# explicit_document: { DIRECTIVE DOCUMENT-START } +# implicit_document: FIRST(block_node) +# block_node: { ALIAS TAG ANCHOR SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START } +# flow_node: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START } +# block_content: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR } +# flow_content: { FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR } +# block_collection: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START } +# flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START } +# block_sequence: { BLOCK-SEQUENCE-START } +# block_mapping: { BLOCK-MAPPING-START } +# block_node_or_indentless_sequence: { ALIAS ANCHOR TAG SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START BLOCK-ENTRY } +# indentless_sequence: { ENTRY } +# flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START } +# flow_sequence: { FLOW-SEQUENCE-START } +# flow_mapping: { FLOW-MAPPING-START } +# flow_sequence_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY } +# flow_mapping_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY } + +__all__ = ['Parser', 'ParserError'] + +from .error import MarkedYAMLError +from .tokens import * +from .events import * +from .scanner import * + +class ParserError(MarkedYAMLError): + pass + +class Parser: + # Since writing a recursive-descendant parser is a straightforward task, we + # do not give many comments here. + + DEFAULT_TAGS = { + '!': '!', + '!!': 'tag:yaml.org,2002:', + } + + def __init__(self): + self.current_event = None + self.yaml_version = None + self.tag_handles = {} + self.states = [] + self.marks = [] + self.state = self.parse_stream_start + + def dispose(self): + # Reset the state attributes (to clear self-references) + self.states = [] + self.state = None + + def check_event(self, *choices): + # Check the type of the next event. + if self.current_event is None: + if self.state: + self.current_event = self.state() + if self.current_event is not None: + if not choices: + return True + for choice in choices: + if isinstance(self.current_event, choice): + return True + return False + + def peek_event(self): + # Get the next event. + if self.current_event is None: + if self.state: + self.current_event = self.state() + return self.current_event + + def get_event(self): + # Get the next event and proceed further. + if self.current_event is None: + if self.state: + self.current_event = self.state() + value = self.current_event + self.current_event = None + return value + + # stream ::= STREAM-START implicit_document? explicit_document* STREAM-END + # implicit_document ::= block_node DOCUMENT-END* + # explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* + + def parse_stream_start(self): + + # Parse the stream start. + token = self.get_token() + event = StreamStartEvent(token.start_mark, token.end_mark, + encoding=token.encoding) + + # Prepare the next state. + self.state = self.parse_implicit_document_start + + return event + + def parse_implicit_document_start(self): + + # Parse an implicit document. + if not self.check_token(DirectiveToken, DocumentStartToken, + StreamEndToken): + self.tag_handles = self.DEFAULT_TAGS + token = self.peek_token() + start_mark = end_mark = token.start_mark + event = DocumentStartEvent(start_mark, end_mark, + explicit=False) + + # Prepare the next state. + self.states.append(self.parse_document_end) + self.state = self.parse_block_node + + return event + + else: + return self.parse_document_start() + + def parse_document_start(self): + + # Parse any extra document end indicators. + while self.check_token(DocumentEndToken): + self.get_token() + + # Parse an explicit document. + if not self.check_token(StreamEndToken): + token = self.peek_token() + start_mark = token.start_mark + version, tags = self.process_directives() + if not self.check_token(DocumentStartToken): + raise ParserError(None, None, + "expected '', but found %r" + % self.peek_token().id, + self.peek_token().start_mark) + token = self.get_token() + end_mark = token.end_mark + event = DocumentStartEvent(start_mark, end_mark, + explicit=True, version=version, tags=tags) + self.states.append(self.parse_document_end) + self.state = self.parse_document_content + else: + # Parse the end of the stream. + token = self.get_token() + event = StreamEndEvent(token.start_mark, token.end_mark) + assert not self.states + assert not self.marks + self.state = None + return event + + def parse_document_end(self): + + # Parse the document end. + token = self.peek_token() + start_mark = end_mark = token.start_mark + explicit = False + if self.check_token(DocumentEndToken): + token = self.get_token() + end_mark = token.end_mark + explicit = True + event = DocumentEndEvent(start_mark, end_mark, + explicit=explicit) + + # Prepare the next state. + self.state = self.parse_document_start + + return event + + def parse_document_content(self): + if self.check_token(DirectiveToken, + DocumentStartToken, DocumentEndToken, StreamEndToken): + event = self.process_empty_scalar(self.peek_token().start_mark) + self.state = self.states.pop() + return event + else: + return self.parse_block_node() + + def process_directives(self): + self.yaml_version = None + self.tag_handles = {} + while self.check_token(DirectiveToken): + token = self.get_token() + if token.name == 'YAML': + if self.yaml_version is not None: + raise ParserError(None, None, + "found duplicate YAML directive", token.start_mark) + major, minor = token.value + if major != 1: + raise ParserError(None, None, + "found incompatible YAML document (version 1.* is required)", + token.start_mark) + self.yaml_version = token.value + elif token.name == 'TAG': + handle, prefix = token.value + if handle in self.tag_handles: + raise ParserError(None, None, + "duplicate tag handle %r" % handle, + token.start_mark) + self.tag_handles[handle] = prefix + if self.tag_handles: + value = self.yaml_version, self.tag_handles.copy() + else: + value = self.yaml_version, None + for key in self.DEFAULT_TAGS: + if key not in self.tag_handles: + self.tag_handles[key] = self.DEFAULT_TAGS[key] + return value + + # block_node_or_indentless_sequence ::= ALIAS + # | properties (block_content | indentless_block_sequence)? + # | block_content + # | indentless_block_sequence + # block_node ::= ALIAS + # | properties block_content? + # | block_content + # flow_node ::= ALIAS + # | properties flow_content? + # | flow_content + # properties ::= TAG ANCHOR? | ANCHOR TAG? + # block_content ::= block_collection | flow_collection | SCALAR + # flow_content ::= flow_collection | SCALAR + # block_collection ::= block_sequence | block_mapping + # flow_collection ::= flow_sequence | flow_mapping + + def parse_block_node(self): + return self.parse_node(block=True) + + def parse_flow_node(self): + return self.parse_node() + + def parse_block_node_or_indentless_sequence(self): + return self.parse_node(block=True, indentless_sequence=True) + + def parse_node(self, block=False, indentless_sequence=False): + if self.check_token(AliasToken): + token = self.get_token() + event = AliasEvent(token.value, token.start_mark, token.end_mark) + self.state = self.states.pop() + else: + anchor = None + tag = None + start_mark = end_mark = tag_mark = None + if self.check_token(AnchorToken): + token = self.get_token() + start_mark = token.start_mark + end_mark = token.end_mark + anchor = token.value + if self.check_token(TagToken): + token = self.get_token() + tag_mark = token.start_mark + end_mark = token.end_mark + tag = token.value + elif self.check_token(TagToken): + token = self.get_token() + start_mark = tag_mark = token.start_mark + end_mark = token.end_mark + tag = token.value + if self.check_token(AnchorToken): + token = self.get_token() + end_mark = token.end_mark + anchor = token.value + if tag is not None: + handle, suffix = tag + if handle is not None: + if handle not in self.tag_handles: + raise ParserError("while parsing a node", start_mark, + "found undefined tag handle %r" % handle, + tag_mark) + tag = self.tag_handles[handle]+suffix + else: + tag = suffix + #if tag == '!': + # raise ParserError("while parsing a node", start_mark, + # "found non-specific tag '!'", tag_mark, + # "Please check 'http://pyyaml.org/wiki/YAMLNonSpecificTag' and share your opinion.") + if start_mark is None: + start_mark = end_mark = self.peek_token().start_mark + event = None + implicit = (tag is None or tag == '!') + if indentless_sequence and self.check_token(BlockEntryToken): + end_mark = self.peek_token().end_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark) + self.state = self.parse_indentless_sequence_entry + else: + if self.check_token(ScalarToken): + token = self.get_token() + end_mark = token.end_mark + if (token.plain and tag is None) or tag == '!': + implicit = (True, False) + elif tag is None: + implicit = (False, True) + else: + implicit = (False, False) + event = ScalarEvent(anchor, tag, implicit, token.value, + start_mark, end_mark, style=token.style) + self.state = self.states.pop() + elif self.check_token(FlowSequenceStartToken): + end_mark = self.peek_token().end_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=True) + self.state = self.parse_flow_sequence_first_entry + elif self.check_token(FlowMappingStartToken): + end_mark = self.peek_token().end_mark + event = MappingStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=True) + self.state = self.parse_flow_mapping_first_key + elif block and self.check_token(BlockSequenceStartToken): + end_mark = self.peek_token().start_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=False) + self.state = self.parse_block_sequence_first_entry + elif block and self.check_token(BlockMappingStartToken): + end_mark = self.peek_token().start_mark + event = MappingStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=False) + self.state = self.parse_block_mapping_first_key + elif anchor is not None or tag is not None: + # Empty scalars are allowed even if a tag or an anchor is + # specified. + event = ScalarEvent(anchor, tag, (implicit, False), '', + start_mark, end_mark) + self.state = self.states.pop() + else: + if block: + node = 'block' + else: + node = 'flow' + token = self.peek_token() + raise ParserError("while parsing a %s node" % node, start_mark, + "expected the node content, but found %r" % token.id, + token.start_mark) + return event + + # block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END + + def parse_block_sequence_first_entry(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_block_sequence_entry() + + def parse_block_sequence_entry(self): + if self.check_token(BlockEntryToken): + token = self.get_token() + if not self.check_token(BlockEntryToken, BlockEndToken): + self.states.append(self.parse_block_sequence_entry) + return self.parse_block_node() + else: + self.state = self.parse_block_sequence_entry + return self.process_empty_scalar(token.end_mark) + if not self.check_token(BlockEndToken): + token = self.peek_token() + raise ParserError("while parsing a block collection", self.marks[-1], + "expected , but found %r" % token.id, token.start_mark) + token = self.get_token() + event = SequenceEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + # indentless_sequence ::= (BLOCK-ENTRY block_node?)+ + + def parse_indentless_sequence_entry(self): + if self.check_token(BlockEntryToken): + token = self.get_token() + if not self.check_token(BlockEntryToken, + KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_indentless_sequence_entry) + return self.parse_block_node() + else: + self.state = self.parse_indentless_sequence_entry + return self.process_empty_scalar(token.end_mark) + token = self.peek_token() + event = SequenceEndEvent(token.start_mark, token.start_mark) + self.state = self.states.pop() + return event + + # block_mapping ::= BLOCK-MAPPING_START + # ((KEY block_node_or_indentless_sequence?)? + # (VALUE block_node_or_indentless_sequence?)?)* + # BLOCK-END + + def parse_block_mapping_first_key(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_block_mapping_key() + + def parse_block_mapping_key(self): + if self.check_token(KeyToken): + token = self.get_token() + if not self.check_token(KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_block_mapping_value) + return self.parse_block_node_or_indentless_sequence() + else: + self.state = self.parse_block_mapping_value + return self.process_empty_scalar(token.end_mark) + if not self.check_token(BlockEndToken): + token = self.peek_token() + raise ParserError("while parsing a block mapping", self.marks[-1], + "expected , but found %r" % token.id, token.start_mark) + token = self.get_token() + event = MappingEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_block_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_block_mapping_key) + return self.parse_block_node_or_indentless_sequence() + else: + self.state = self.parse_block_mapping_key + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_block_mapping_key + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + # flow_sequence ::= FLOW-SEQUENCE-START + # (flow_sequence_entry FLOW-ENTRY)* + # flow_sequence_entry? + # FLOW-SEQUENCE-END + # flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + # + # Note that while production rules for both flow_sequence_entry and + # flow_mapping_entry are equal, their interpretations are different. + # For `flow_sequence_entry`, the part `KEY flow_node? (VALUE flow_node?)?` + # generate an inline mapping (set syntax). + + def parse_flow_sequence_first_entry(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_flow_sequence_entry(first=True) + + def parse_flow_sequence_entry(self, first=False): + if not self.check_token(FlowSequenceEndToken): + if not first: + if self.check_token(FlowEntryToken): + self.get_token() + else: + token = self.peek_token() + raise ParserError("while parsing a flow sequence", self.marks[-1], + "expected ',' or ']', but got %r" % token.id, token.start_mark) + + if self.check_token(KeyToken): + token = self.peek_token() + event = MappingStartEvent(None, None, True, + token.start_mark, token.end_mark, + flow_style=True) + self.state = self.parse_flow_sequence_entry_mapping_key + return event + elif not self.check_token(FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry) + return self.parse_flow_node() + token = self.get_token() + event = SequenceEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_flow_sequence_entry_mapping_key(self): + token = self.get_token() + if not self.check_token(ValueToken, + FlowEntryToken, FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry_mapping_value) + return self.parse_flow_node() + else: + self.state = self.parse_flow_sequence_entry_mapping_value + return self.process_empty_scalar(token.end_mark) + + def parse_flow_sequence_entry_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(FlowEntryToken, FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry_mapping_end) + return self.parse_flow_node() + else: + self.state = self.parse_flow_sequence_entry_mapping_end + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_flow_sequence_entry_mapping_end + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + def parse_flow_sequence_entry_mapping_end(self): + self.state = self.parse_flow_sequence_entry + token = self.peek_token() + return MappingEndEvent(token.start_mark, token.start_mark) + + # flow_mapping ::= FLOW-MAPPING-START + # (flow_mapping_entry FLOW-ENTRY)* + # flow_mapping_entry? + # FLOW-MAPPING-END + # flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + + def parse_flow_mapping_first_key(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_flow_mapping_key(first=True) + + def parse_flow_mapping_key(self, first=False): + if not self.check_token(FlowMappingEndToken): + if not first: + if self.check_token(FlowEntryToken): + self.get_token() + else: + token = self.peek_token() + raise ParserError("while parsing a flow mapping", self.marks[-1], + "expected ',' or '}', but got %r" % token.id, token.start_mark) + if self.check_token(KeyToken): + token = self.get_token() + if not self.check_token(ValueToken, + FlowEntryToken, FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_value) + return self.parse_flow_node() + else: + self.state = self.parse_flow_mapping_value + return self.process_empty_scalar(token.end_mark) + elif not self.check_token(FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_empty_value) + return self.parse_flow_node() + token = self.get_token() + event = MappingEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_flow_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(FlowEntryToken, FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_key) + return self.parse_flow_node() + else: + self.state = self.parse_flow_mapping_key + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_flow_mapping_key + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + def parse_flow_mapping_empty_value(self): + self.state = self.parse_flow_mapping_key + return self.process_empty_scalar(self.peek_token().start_mark) + + def process_empty_scalar(self, mark): + return ScalarEvent(None, None, (True, False), '', mark, mark) + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/reader.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/reader.py new file mode 100644 index 0000000..774b021 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/reader.py @@ -0,0 +1,185 @@ +# This module contains abstractions for the input stream. You don't have to +# looks further, there are no pretty code. +# +# We define two classes here. +# +# Mark(source, line, column) +# It's just a record and its only use is producing nice error messages. +# Parser does not use it for any other purposes. +# +# Reader(source, data) +# Reader determines the encoding of `data` and converts it to unicode. +# Reader provides the following methods and attributes: +# reader.peek(length=1) - return the next `length` characters +# reader.forward(length=1) - move the current position to `length` characters. +# reader.index - the number of the current character. +# reader.line, stream.column - the line and the column of the current character. + +__all__ = ['Reader', 'ReaderError'] + +from .error import YAMLError, Mark + +import codecs, re + +class ReaderError(YAMLError): + + def __init__(self, name, position, character, encoding, reason): + self.name = name + self.character = character + self.position = position + self.encoding = encoding + self.reason = reason + + def __str__(self): + if isinstance(self.character, bytes): + return "'%s' codec can't decode byte #x%02x: %s\n" \ + " in \"%s\", position %d" \ + % (self.encoding, ord(self.character), self.reason, + self.name, self.position) + else: + return "unacceptable character #x%04x: %s\n" \ + " in \"%s\", position %d" \ + % (self.character, self.reason, + self.name, self.position) + +class Reader(object): + # Reader: + # - determines the data encoding and converts it to a unicode string, + # - checks if characters are in allowed range, + # - adds '\0' to the end. + + # Reader accepts + # - a `bytes` object, + # - a `str` object, + # - a file-like object with its `read` method returning `str`, + # - a file-like object with its `read` method returning `unicode`. + + # Yeah, it's ugly and slow. + + def __init__(self, stream): + self.name = None + self.stream = None + self.stream_pointer = 0 + self.eof = True + self.buffer = '' + self.pointer = 0 + self.raw_buffer = None + self.raw_decode = None + self.encoding = None + self.index = 0 + self.line = 0 + self.column = 0 + if isinstance(stream, str): + self.name = "" + self.check_printable(stream) + self.buffer = stream+'\0' + elif isinstance(stream, bytes): + self.name = "" + self.raw_buffer = stream + self.determine_encoding() + else: + self.stream = stream + self.name = getattr(stream, 'name', "") + self.eof = False + self.raw_buffer = None + self.determine_encoding() + + def peek(self, index=0): + try: + return self.buffer[self.pointer+index] + except IndexError: + self.update(index+1) + return self.buffer[self.pointer+index] + + def prefix(self, length=1): + if self.pointer+length >= len(self.buffer): + self.update(length) + return self.buffer[self.pointer:self.pointer+length] + + def forward(self, length=1): + if self.pointer+length+1 >= len(self.buffer): + self.update(length+1) + while length: + ch = self.buffer[self.pointer] + self.pointer += 1 + self.index += 1 + if ch in '\n\x85\u2028\u2029' \ + or (ch == '\r' and self.buffer[self.pointer] != '\n'): + self.line += 1 + self.column = 0 + elif ch != '\uFEFF': + self.column += 1 + length -= 1 + + def get_mark(self): + if self.stream is None: + return Mark(self.name, self.index, self.line, self.column, + self.buffer, self.pointer) + else: + return Mark(self.name, self.index, self.line, self.column, + None, None) + + def determine_encoding(self): + while not self.eof and (self.raw_buffer is None or len(self.raw_buffer) < 2): + self.update_raw() + if isinstance(self.raw_buffer, bytes): + if self.raw_buffer.startswith(codecs.BOM_UTF16_LE): + self.raw_decode = codecs.utf_16_le_decode + self.encoding = 'utf-16-le' + elif self.raw_buffer.startswith(codecs.BOM_UTF16_BE): + self.raw_decode = codecs.utf_16_be_decode + self.encoding = 'utf-16-be' + else: + self.raw_decode = codecs.utf_8_decode + self.encoding = 'utf-8' + self.update(1) + + NON_PRINTABLE = re.compile('[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD\U00010000-\U0010ffff]') + def check_printable(self, data): + match = self.NON_PRINTABLE.search(data) + if match: + character = match.group() + position = self.index+(len(self.buffer)-self.pointer)+match.start() + raise ReaderError(self.name, position, ord(character), + 'unicode', "special characters are not allowed") + + def update(self, length): + if self.raw_buffer is None: + return + self.buffer = self.buffer[self.pointer:] + self.pointer = 0 + while len(self.buffer) < length: + if not self.eof: + self.update_raw() + if self.raw_decode is not None: + try: + data, converted = self.raw_decode(self.raw_buffer, + 'strict', self.eof) + except UnicodeDecodeError as exc: + character = self.raw_buffer[exc.start] + if self.stream is not None: + position = self.stream_pointer-len(self.raw_buffer)+exc.start + else: + position = exc.start + raise ReaderError(self.name, position, character, + exc.encoding, exc.reason) + else: + data = self.raw_buffer + converted = len(data) + self.check_printable(data) + self.buffer += data + self.raw_buffer = self.raw_buffer[converted:] + if self.eof: + self.buffer += '\0' + self.raw_buffer = None + break + + def update_raw(self, size=4096): + data = self.stream.read(size) + if self.raw_buffer is None: + self.raw_buffer = data + else: + self.raw_buffer += data + self.stream_pointer += len(data) + if not data: + self.eof = True diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/representer.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/representer.py new file mode 100644 index 0000000..3b0b192 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/representer.py @@ -0,0 +1,389 @@ + +__all__ = ['BaseRepresenter', 'SafeRepresenter', 'Representer', + 'RepresenterError'] + +from .error import * +from .nodes import * + +import datetime, copyreg, types, base64, collections + +class RepresenterError(YAMLError): + pass + +class BaseRepresenter: + + yaml_representers = {} + yaml_multi_representers = {} + + def __init__(self, default_style=None, default_flow_style=False, sort_keys=True): + self.default_style = default_style + self.sort_keys = sort_keys + self.default_flow_style = default_flow_style + self.represented_objects = {} + self.object_keeper = [] + self.alias_key = None + + def represent(self, data): + node = self.represent_data(data) + self.serialize(node) + self.represented_objects = {} + self.object_keeper = [] + self.alias_key = None + + def represent_data(self, data): + if self.ignore_aliases(data): + self.alias_key = None + else: + self.alias_key = id(data) + if self.alias_key is not None: + if self.alias_key in self.represented_objects: + node = self.represented_objects[self.alias_key] + #if node is None: + # raise RepresenterError("recursive objects are not allowed: %r" % data) + return node + #self.represented_objects[alias_key] = None + self.object_keeper.append(data) + data_types = type(data).__mro__ + if data_types[0] in self.yaml_representers: + node = self.yaml_representers[data_types[0]](self, data) + else: + for data_type in data_types: + if data_type in self.yaml_multi_representers: + node = self.yaml_multi_representers[data_type](self, data) + break + else: + if None in self.yaml_multi_representers: + node = self.yaml_multi_representers[None](self, data) + elif None in self.yaml_representers: + node = self.yaml_representers[None](self, data) + else: + node = ScalarNode(None, str(data)) + #if alias_key is not None: + # self.represented_objects[alias_key] = node + return node + + @classmethod + def add_representer(cls, data_type, representer): + if not 'yaml_representers' in cls.__dict__: + cls.yaml_representers = cls.yaml_representers.copy() + cls.yaml_representers[data_type] = representer + + @classmethod + def add_multi_representer(cls, data_type, representer): + if not 'yaml_multi_representers' in cls.__dict__: + cls.yaml_multi_representers = cls.yaml_multi_representers.copy() + cls.yaml_multi_representers[data_type] = representer + + def represent_scalar(self, tag, value, style=None): + if style is None: + style = self.default_style + node = ScalarNode(tag, value, style=style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + return node + + def represent_sequence(self, tag, sequence, flow_style=None): + value = [] + node = SequenceNode(tag, value, flow_style=flow_style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + best_style = True + for item in sequence: + node_item = self.represent_data(item) + if not (isinstance(node_item, ScalarNode) and not node_item.style): + best_style = False + value.append(node_item) + if flow_style is None: + if self.default_flow_style is not None: + node.flow_style = self.default_flow_style + else: + node.flow_style = best_style + return node + + def represent_mapping(self, tag, mapping, flow_style=None): + value = [] + node = MappingNode(tag, value, flow_style=flow_style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + best_style = True + if hasattr(mapping, 'items'): + mapping = list(mapping.items()) + if self.sort_keys: + try: + mapping = sorted(mapping) + except TypeError: + pass + for item_key, item_value in mapping: + node_key = self.represent_data(item_key) + node_value = self.represent_data(item_value) + if not (isinstance(node_key, ScalarNode) and not node_key.style): + best_style = False + if not (isinstance(node_value, ScalarNode) and not node_value.style): + best_style = False + value.append((node_key, node_value)) + if flow_style is None: + if self.default_flow_style is not None: + node.flow_style = self.default_flow_style + else: + node.flow_style = best_style + return node + + def ignore_aliases(self, data): + return False + +class SafeRepresenter(BaseRepresenter): + + def ignore_aliases(self, data): + if data is None: + return True + if isinstance(data, tuple) and data == (): + return True + if isinstance(data, (str, bytes, bool, int, float)): + return True + + def represent_none(self, data): + return self.represent_scalar('tag:yaml.org,2002:null', 'null') + + def represent_str(self, data): + return self.represent_scalar('tag:yaml.org,2002:str', data) + + def represent_binary(self, data): + if hasattr(base64, 'encodebytes'): + data = base64.encodebytes(data).decode('ascii') + else: + data = base64.encodestring(data).decode('ascii') + return self.represent_scalar('tag:yaml.org,2002:binary', data, style='|') + + def represent_bool(self, data): + if data: + value = 'true' + else: + value = 'false' + return self.represent_scalar('tag:yaml.org,2002:bool', value) + + def represent_int(self, data): + return self.represent_scalar('tag:yaml.org,2002:int', str(data)) + + inf_value = 1e300 + while repr(inf_value) != repr(inf_value*inf_value): + inf_value *= inf_value + + def represent_float(self, data): + if data != data or (data == 0.0 and data == 1.0): + value = '.nan' + elif data == self.inf_value: + value = '.inf' + elif data == -self.inf_value: + value = '-.inf' + else: + value = repr(data).lower() + # Note that in some cases `repr(data)` represents a float number + # without the decimal parts. For instance: + # >>> repr(1e17) + # '1e17' + # Unfortunately, this is not a valid float representation according + # to the definition of the `!!float` tag. We fix this by adding + # '.0' before the 'e' symbol. + if '.' not in value and 'e' in value: + value = value.replace('e', '.0e', 1) + return self.represent_scalar('tag:yaml.org,2002:float', value) + + def represent_list(self, data): + #pairs = (len(data) > 0 and isinstance(data, list)) + #if pairs: + # for item in data: + # if not isinstance(item, tuple) or len(item) != 2: + # pairs = False + # break + #if not pairs: + return self.represent_sequence('tag:yaml.org,2002:seq', data) + #value = [] + #for item_key, item_value in data: + # value.append(self.represent_mapping(u'tag:yaml.org,2002:map', + # [(item_key, item_value)])) + #return SequenceNode(u'tag:yaml.org,2002:pairs', value) + + def represent_dict(self, data): + return self.represent_mapping('tag:yaml.org,2002:map', data) + + def represent_set(self, data): + value = {} + for key in data: + value[key] = None + return self.represent_mapping('tag:yaml.org,2002:set', value) + + def represent_date(self, data): + value = data.isoformat() + return self.represent_scalar('tag:yaml.org,2002:timestamp', value) + + def represent_datetime(self, data): + value = data.isoformat(' ') + return self.represent_scalar('tag:yaml.org,2002:timestamp', value) + + def represent_yaml_object(self, tag, data, cls, flow_style=None): + if hasattr(data, '__getstate__'): + state = data.__getstate__() + else: + state = data.__dict__.copy() + return self.represent_mapping(tag, state, flow_style=flow_style) + + def represent_undefined(self, data): + raise RepresenterError("cannot represent an object", data) + +SafeRepresenter.add_representer(type(None), + SafeRepresenter.represent_none) + +SafeRepresenter.add_representer(str, + SafeRepresenter.represent_str) + +SafeRepresenter.add_representer(bytes, + SafeRepresenter.represent_binary) + +SafeRepresenter.add_representer(bool, + SafeRepresenter.represent_bool) + +SafeRepresenter.add_representer(int, + SafeRepresenter.represent_int) + +SafeRepresenter.add_representer(float, + SafeRepresenter.represent_float) + +SafeRepresenter.add_representer(list, + SafeRepresenter.represent_list) + +SafeRepresenter.add_representer(tuple, + SafeRepresenter.represent_list) + +SafeRepresenter.add_representer(dict, + SafeRepresenter.represent_dict) + +SafeRepresenter.add_representer(set, + SafeRepresenter.represent_set) + +SafeRepresenter.add_representer(datetime.date, + SafeRepresenter.represent_date) + +SafeRepresenter.add_representer(datetime.datetime, + SafeRepresenter.represent_datetime) + +SafeRepresenter.add_representer(None, + SafeRepresenter.represent_undefined) + +class Representer(SafeRepresenter): + + def represent_complex(self, data): + if data.imag == 0.0: + data = '%r' % data.real + elif data.real == 0.0: + data = '%rj' % data.imag + elif data.imag > 0: + data = '%r+%rj' % (data.real, data.imag) + else: + data = '%r%rj' % (data.real, data.imag) + return self.represent_scalar('tag:yaml.org,2002:python/complex', data) + + def represent_tuple(self, data): + return self.represent_sequence('tag:yaml.org,2002:python/tuple', data) + + def represent_name(self, data): + name = '%s.%s' % (data.__module__, data.__name__) + return self.represent_scalar('tag:yaml.org,2002:python/name:'+name, '') + + def represent_module(self, data): + return self.represent_scalar( + 'tag:yaml.org,2002:python/module:'+data.__name__, '') + + def represent_object(self, data): + # We use __reduce__ API to save the data. data.__reduce__ returns + # a tuple of length 2-5: + # (function, args, state, listitems, dictitems) + + # For reconstructing, we calls function(*args), then set its state, + # listitems, and dictitems if they are not None. + + # A special case is when function.__name__ == '__newobj__'. In this + # case we create the object with args[0].__new__(*args). + + # Another special case is when __reduce__ returns a string - we don't + # support it. + + # We produce a !!python/object, !!python/object/new or + # !!python/object/apply node. + + cls = type(data) + if cls in copyreg.dispatch_table: + reduce = copyreg.dispatch_table[cls](data) + elif hasattr(data, '__reduce_ex__'): + reduce = data.__reduce_ex__(2) + elif hasattr(data, '__reduce__'): + reduce = data.__reduce__() + else: + raise RepresenterError("cannot represent an object", data) + reduce = (list(reduce)+[None]*5)[:5] + function, args, state, listitems, dictitems = reduce + args = list(args) + if state is None: + state = {} + if listitems is not None: + listitems = list(listitems) + if dictitems is not None: + dictitems = dict(dictitems) + if function.__name__ == '__newobj__': + function = args[0] + args = args[1:] + tag = 'tag:yaml.org,2002:python/object/new:' + newobj = True + else: + tag = 'tag:yaml.org,2002:python/object/apply:' + newobj = False + function_name = '%s.%s' % (function.__module__, function.__name__) + if not args and not listitems and not dictitems \ + and isinstance(state, dict) and newobj: + return self.represent_mapping( + 'tag:yaml.org,2002:python/object:'+function_name, state) + if not listitems and not dictitems \ + and isinstance(state, dict) and not state: + return self.represent_sequence(tag+function_name, args) + value = {} + if args: + value['args'] = args + if state or not isinstance(state, dict): + value['state'] = state + if listitems: + value['listitems'] = listitems + if dictitems: + value['dictitems'] = dictitems + return self.represent_mapping(tag+function_name, value) + + def represent_ordered_dict(self, data): + # Provide uniform representation across different Python versions. + data_type = type(data) + tag = 'tag:yaml.org,2002:python/object/apply:%s.%s' \ + % (data_type.__module__, data_type.__name__) + items = [[key, value] for key, value in data.items()] + return self.represent_sequence(tag, [items]) + +Representer.add_representer(complex, + Representer.represent_complex) + +Representer.add_representer(tuple, + Representer.represent_tuple) + +Representer.add_representer(type, + Representer.represent_name) + +Representer.add_representer(collections.OrderedDict, + Representer.represent_ordered_dict) + +Representer.add_representer(types.FunctionType, + Representer.represent_name) + +Representer.add_representer(types.BuiltinFunctionType, + Representer.represent_name) + +Representer.add_representer(types.ModuleType, + Representer.represent_module) + +Representer.add_multi_representer(object, + Representer.represent_object) + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/resolver.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/resolver.py new file mode 100644 index 0000000..013896d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/resolver.py @@ -0,0 +1,227 @@ + +__all__ = ['BaseResolver', 'Resolver'] + +from .error import * +from .nodes import * + +import re + +class ResolverError(YAMLError): + pass + +class BaseResolver: + + DEFAULT_SCALAR_TAG = 'tag:yaml.org,2002:str' + DEFAULT_SEQUENCE_TAG = 'tag:yaml.org,2002:seq' + DEFAULT_MAPPING_TAG = 'tag:yaml.org,2002:map' + + yaml_implicit_resolvers = {} + yaml_path_resolvers = {} + + def __init__(self): + self.resolver_exact_paths = [] + self.resolver_prefix_paths = [] + + @classmethod + def add_implicit_resolver(cls, tag, regexp, first): + if not 'yaml_implicit_resolvers' in cls.__dict__: + implicit_resolvers = {} + for key in cls.yaml_implicit_resolvers: + implicit_resolvers[key] = cls.yaml_implicit_resolvers[key][:] + cls.yaml_implicit_resolvers = implicit_resolvers + if first is None: + first = [None] + for ch in first: + cls.yaml_implicit_resolvers.setdefault(ch, []).append((tag, regexp)) + + @classmethod + def add_path_resolver(cls, tag, path, kind=None): + # Note: `add_path_resolver` is experimental. The API could be changed. + # `new_path` is a pattern that is matched against the path from the + # root to the node that is being considered. `node_path` elements are + # tuples `(node_check, index_check)`. `node_check` is a node class: + # `ScalarNode`, `SequenceNode`, `MappingNode` or `None`. `None` + # matches any kind of a node. `index_check` could be `None`, a boolean + # value, a string value, or a number. `None` and `False` match against + # any _value_ of sequence and mapping nodes. `True` matches against + # any _key_ of a mapping node. A string `index_check` matches against + # a mapping value that corresponds to a scalar key which content is + # equal to the `index_check` value. An integer `index_check` matches + # against a sequence value with the index equal to `index_check`. + if not 'yaml_path_resolvers' in cls.__dict__: + cls.yaml_path_resolvers = cls.yaml_path_resolvers.copy() + new_path = [] + for element in path: + if isinstance(element, (list, tuple)): + if len(element) == 2: + node_check, index_check = element + elif len(element) == 1: + node_check = element[0] + index_check = True + else: + raise ResolverError("Invalid path element: %s" % element) + else: + node_check = None + index_check = element + if node_check is str: + node_check = ScalarNode + elif node_check is list: + node_check = SequenceNode + elif node_check is dict: + node_check = MappingNode + elif node_check not in [ScalarNode, SequenceNode, MappingNode] \ + and not isinstance(node_check, str) \ + and node_check is not None: + raise ResolverError("Invalid node checker: %s" % node_check) + if not isinstance(index_check, (str, int)) \ + and index_check is not None: + raise ResolverError("Invalid index checker: %s" % index_check) + new_path.append((node_check, index_check)) + if kind is str: + kind = ScalarNode + elif kind is list: + kind = SequenceNode + elif kind is dict: + kind = MappingNode + elif kind not in [ScalarNode, SequenceNode, MappingNode] \ + and kind is not None: + raise ResolverError("Invalid node kind: %s" % kind) + cls.yaml_path_resolvers[tuple(new_path), kind] = tag + + def descend_resolver(self, current_node, current_index): + if not self.yaml_path_resolvers: + return + exact_paths = {} + prefix_paths = [] + if current_node: + depth = len(self.resolver_prefix_paths) + for path, kind in self.resolver_prefix_paths[-1]: + if self.check_resolver_prefix(depth, path, kind, + current_node, current_index): + if len(path) > depth: + prefix_paths.append((path, kind)) + else: + exact_paths[kind] = self.yaml_path_resolvers[path, kind] + else: + for path, kind in self.yaml_path_resolvers: + if not path: + exact_paths[kind] = self.yaml_path_resolvers[path, kind] + else: + prefix_paths.append((path, kind)) + self.resolver_exact_paths.append(exact_paths) + self.resolver_prefix_paths.append(prefix_paths) + + def ascend_resolver(self): + if not self.yaml_path_resolvers: + return + self.resolver_exact_paths.pop() + self.resolver_prefix_paths.pop() + + def check_resolver_prefix(self, depth, path, kind, + current_node, current_index): + node_check, index_check = path[depth-1] + if isinstance(node_check, str): + if current_node.tag != node_check: + return + elif node_check is not None: + if not isinstance(current_node, node_check): + return + if index_check is True and current_index is not None: + return + if (index_check is False or index_check is None) \ + and current_index is None: + return + if isinstance(index_check, str): + if not (isinstance(current_index, ScalarNode) + and index_check == current_index.value): + return + elif isinstance(index_check, int) and not isinstance(index_check, bool): + if index_check != current_index: + return + return True + + def resolve(self, kind, value, implicit): + if kind is ScalarNode and implicit[0]: + if value == '': + resolvers = self.yaml_implicit_resolvers.get('', []) + else: + resolvers = self.yaml_implicit_resolvers.get(value[0], []) + wildcard_resolvers = self.yaml_implicit_resolvers.get(None, []) + for tag, regexp in resolvers + wildcard_resolvers: + if regexp.match(value): + return tag + implicit = implicit[1] + if self.yaml_path_resolvers: + exact_paths = self.resolver_exact_paths[-1] + if kind in exact_paths: + return exact_paths[kind] + if None in exact_paths: + return exact_paths[None] + if kind is ScalarNode: + return self.DEFAULT_SCALAR_TAG + elif kind is SequenceNode: + return self.DEFAULT_SEQUENCE_TAG + elif kind is MappingNode: + return self.DEFAULT_MAPPING_TAG + +class Resolver(BaseResolver): + pass + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:bool', + re.compile(r'''^(?:yes|Yes|YES|no|No|NO + |true|True|TRUE|false|False|FALSE + |on|On|ON|off|Off|OFF)$''', re.X), + list('yYnNtTfFoO')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:float', + re.compile(r'''^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)? + |\.[0-9_]+(?:[eE][-+][0-9]+)? + |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]* + |[-+]?\.(?:inf|Inf|INF) + |\.(?:nan|NaN|NAN))$''', re.X), + list('-+0123456789.')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:int', + re.compile(r'''^(?:[-+]?0b[0-1_]+ + |[-+]?0[0-7_]+ + |[-+]?(?:0|[1-9][0-9_]*) + |[-+]?0x[0-9a-fA-F_]+ + |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X), + list('-+0123456789')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:merge', + re.compile(r'^(?:<<)$'), + ['<']) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:null', + re.compile(r'''^(?: ~ + |null|Null|NULL + | )$''', re.X), + ['~', 'n', 'N', '']) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:timestamp', + re.compile(r'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] + |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]? + (?:[Tt]|[ \t]+)[0-9][0-9]? + :[0-9][0-9] :[0-9][0-9] (?:\.[0-9]*)? + (?:[ \t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X), + list('0123456789')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:value', + re.compile(r'^(?:=)$'), + ['=']) + +# The following resolver is only for documentation purposes. It cannot work +# because plain scalars cannot start with '!', '&', or '*'. +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:yaml', + re.compile(r'^(?:!|&|\*)$'), + list('!&*')) + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/scanner.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/scanner.py new file mode 100644 index 0000000..7437ede --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/scanner.py @@ -0,0 +1,1435 @@ + +# Scanner produces tokens of the following types: +# STREAM-START +# STREAM-END +# DIRECTIVE(name, value) +# DOCUMENT-START +# DOCUMENT-END +# BLOCK-SEQUENCE-START +# BLOCK-MAPPING-START +# BLOCK-END +# FLOW-SEQUENCE-START +# FLOW-MAPPING-START +# FLOW-SEQUENCE-END +# FLOW-MAPPING-END +# BLOCK-ENTRY +# FLOW-ENTRY +# KEY +# VALUE +# ALIAS(value) +# ANCHOR(value) +# TAG(value) +# SCALAR(value, plain, style) +# +# Read comments in the Scanner code for more details. +# + +__all__ = ['Scanner', 'ScannerError'] + +from .error import MarkedYAMLError +from .tokens import * + +class ScannerError(MarkedYAMLError): + pass + +class SimpleKey: + # See below simple keys treatment. + + def __init__(self, token_number, required, index, line, column, mark): + self.token_number = token_number + self.required = required + self.index = index + self.line = line + self.column = column + self.mark = mark + +class Scanner: + + def __init__(self): + """Initialize the scanner.""" + # It is assumed that Scanner and Reader will have a common descendant. + # Reader do the dirty work of checking for BOM and converting the + # input data to Unicode. It also adds NUL to the end. + # + # Reader supports the following methods + # self.peek(i=0) # peek the next i-th character + # self.prefix(l=1) # peek the next l characters + # self.forward(l=1) # read the next l characters and move the pointer. + + # Had we reached the end of the stream? + self.done = False + + # The number of unclosed '{' and '['. `flow_level == 0` means block + # context. + self.flow_level = 0 + + # List of processed tokens that are not yet emitted. + self.tokens = [] + + # Add the STREAM-START token. + self.fetch_stream_start() + + # Number of tokens that were emitted through the `get_token` method. + self.tokens_taken = 0 + + # The current indentation level. + self.indent = -1 + + # Past indentation levels. + self.indents = [] + + # Variables related to simple keys treatment. + + # A simple key is a key that is not denoted by the '?' indicator. + # Example of simple keys: + # --- + # block simple key: value + # ? not a simple key: + # : { flow simple key: value } + # We emit the KEY token before all keys, so when we find a potential + # simple key, we try to locate the corresponding ':' indicator. + # Simple keys should be limited to a single line and 1024 characters. + + # Can a simple key start at the current position? A simple key may + # start: + # - at the beginning of the line, not counting indentation spaces + # (in block context), + # - after '{', '[', ',' (in the flow context), + # - after '?', ':', '-' (in the block context). + # In the block context, this flag also signifies if a block collection + # may start at the current position. + self.allow_simple_key = True + + # Keep track of possible simple keys. This is a dictionary. The key + # is `flow_level`; there can be no more that one possible simple key + # for each level. The value is a SimpleKey record: + # (token_number, required, index, line, column, mark) + # A simple key may start with ALIAS, ANCHOR, TAG, SCALAR(flow), + # '[', or '{' tokens. + self.possible_simple_keys = {} + + # Public methods. + + def check_token(self, *choices): + # Check if the next token is one of the given types. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + if not choices: + return True + for choice in choices: + if isinstance(self.tokens[0], choice): + return True + return False + + def peek_token(self): + # Return the next token, but do not delete if from the queue. + # Return None if no more tokens. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + return self.tokens[0] + else: + return None + + def get_token(self): + # Return the next token. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + self.tokens_taken += 1 + return self.tokens.pop(0) + + # Private methods. + + def need_more_tokens(self): + if self.done: + return False + if not self.tokens: + return True + # The current token may be a potential simple key, so we + # need to look further. + self.stale_possible_simple_keys() + if self.next_possible_simple_key() == self.tokens_taken: + return True + + def fetch_more_tokens(self): + + # Eat whitespaces and comments until we reach the next token. + self.scan_to_next_token() + + # Remove obsolete possible simple keys. + self.stale_possible_simple_keys() + + # Compare the current indentation and column. It may add some tokens + # and decrease the current indentation level. + self.unwind_indent(self.column) + + # Peek the next character. + ch = self.peek() + + # Is it the end of stream? + if ch == '\0': + return self.fetch_stream_end() + + # Is it a directive? + if ch == '%' and self.check_directive(): + return self.fetch_directive() + + # Is it the document start? + if ch == '-' and self.check_document_start(): + return self.fetch_document_start() + + # Is it the document end? + if ch == '.' and self.check_document_end(): + return self.fetch_document_end() + + # TODO: support for BOM within a stream. + #if ch == '\uFEFF': + # return self.fetch_bom() <-- issue BOMToken + + # Note: the order of the following checks is NOT significant. + + # Is it the flow sequence start indicator? + if ch == '[': + return self.fetch_flow_sequence_start() + + # Is it the flow mapping start indicator? + if ch == '{': + return self.fetch_flow_mapping_start() + + # Is it the flow sequence end indicator? + if ch == ']': + return self.fetch_flow_sequence_end() + + # Is it the flow mapping end indicator? + if ch == '}': + return self.fetch_flow_mapping_end() + + # Is it the flow entry indicator? + if ch == ',': + return self.fetch_flow_entry() + + # Is it the block entry indicator? + if ch == '-' and self.check_block_entry(): + return self.fetch_block_entry() + + # Is it the key indicator? + if ch == '?' and self.check_key(): + return self.fetch_key() + + # Is it the value indicator? + if ch == ':' and self.check_value(): + return self.fetch_value() + + # Is it an alias? + if ch == '*': + return self.fetch_alias() + + # Is it an anchor? + if ch == '&': + return self.fetch_anchor() + + # Is it a tag? + if ch == '!': + return self.fetch_tag() + + # Is it a literal scalar? + if ch == '|' and not self.flow_level: + return self.fetch_literal() + + # Is it a folded scalar? + if ch == '>' and not self.flow_level: + return self.fetch_folded() + + # Is it a single quoted scalar? + if ch == '\'': + return self.fetch_single() + + # Is it a double quoted scalar? + if ch == '\"': + return self.fetch_double() + + # It must be a plain scalar then. + if self.check_plain(): + return self.fetch_plain() + + # No? It's an error. Let's produce a nice error message. + raise ScannerError("while scanning for the next token", None, + "found character %r that cannot start any token" % ch, + self.get_mark()) + + # Simple keys treatment. + + def next_possible_simple_key(self): + # Return the number of the nearest possible simple key. Actually we + # don't need to loop through the whole dictionary. We may replace it + # with the following code: + # if not self.possible_simple_keys: + # return None + # return self.possible_simple_keys[ + # min(self.possible_simple_keys.keys())].token_number + min_token_number = None + for level in self.possible_simple_keys: + key = self.possible_simple_keys[level] + if min_token_number is None or key.token_number < min_token_number: + min_token_number = key.token_number + return min_token_number + + def stale_possible_simple_keys(self): + # Remove entries that are no longer possible simple keys. According to + # the YAML specification, simple keys + # - should be limited to a single line, + # - should be no longer than 1024 characters. + # Disabling this procedure will allow simple keys of any length and + # height (may cause problems if indentation is broken though). + for level in list(self.possible_simple_keys): + key = self.possible_simple_keys[level] + if key.line != self.line \ + or self.index-key.index > 1024: + if key.required: + raise ScannerError("while scanning a simple key", key.mark, + "could not find expected ':'", self.get_mark()) + del self.possible_simple_keys[level] + + def save_possible_simple_key(self): + # The next token may start a simple key. We check if it's possible + # and save its position. This function is called for + # ALIAS, ANCHOR, TAG, SCALAR(flow), '[', and '{'. + + # Check if a simple key is required at the current position. + required = not self.flow_level and self.indent == self.column + + # The next token might be a simple key. Let's save it's number and + # position. + if self.allow_simple_key: + self.remove_possible_simple_key() + token_number = self.tokens_taken+len(self.tokens) + key = SimpleKey(token_number, required, + self.index, self.line, self.column, self.get_mark()) + self.possible_simple_keys[self.flow_level] = key + + def remove_possible_simple_key(self): + # Remove the saved possible key position at the current flow level. + if self.flow_level in self.possible_simple_keys: + key = self.possible_simple_keys[self.flow_level] + + if key.required: + raise ScannerError("while scanning a simple key", key.mark, + "could not find expected ':'", self.get_mark()) + + del self.possible_simple_keys[self.flow_level] + + # Indentation functions. + + def unwind_indent(self, column): + + ## In flow context, tokens should respect indentation. + ## Actually the condition should be `self.indent >= column` according to + ## the spec. But this condition will prohibit intuitively correct + ## constructions such as + ## key : { + ## } + #if self.flow_level and self.indent > column: + # raise ScannerError(None, None, + # "invalid indentation or unclosed '[' or '{'", + # self.get_mark()) + + # In the flow context, indentation is ignored. We make the scanner less + # restrictive then specification requires. + if self.flow_level: + return + + # In block context, we may need to issue the BLOCK-END tokens. + while self.indent > column: + mark = self.get_mark() + self.indent = self.indents.pop() + self.tokens.append(BlockEndToken(mark, mark)) + + def add_indent(self, column): + # Check if we need to increase indentation. + if self.indent < column: + self.indents.append(self.indent) + self.indent = column + return True + return False + + # Fetchers. + + def fetch_stream_start(self): + # We always add STREAM-START as the first token and STREAM-END as the + # last token. + + # Read the token. + mark = self.get_mark() + + # Add STREAM-START. + self.tokens.append(StreamStartToken(mark, mark, + encoding=self.encoding)) + + + def fetch_stream_end(self): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. + self.remove_possible_simple_key() + self.allow_simple_key = False + self.possible_simple_keys = {} + + # Read the token. + mark = self.get_mark() + + # Add STREAM-END. + self.tokens.append(StreamEndToken(mark, mark)) + + # The steam is finished. + self.done = True + + def fetch_directive(self): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. + self.remove_possible_simple_key() + self.allow_simple_key = False + + # Scan and add DIRECTIVE. + self.tokens.append(self.scan_directive()) + + def fetch_document_start(self): + self.fetch_document_indicator(DocumentStartToken) + + def fetch_document_end(self): + self.fetch_document_indicator(DocumentEndToken) + + def fetch_document_indicator(self, TokenClass): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. Note that there could not be a block collection + # after '---'. + self.remove_possible_simple_key() + self.allow_simple_key = False + + # Add DOCUMENT-START or DOCUMENT-END. + start_mark = self.get_mark() + self.forward(3) + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_sequence_start(self): + self.fetch_flow_collection_start(FlowSequenceStartToken) + + def fetch_flow_mapping_start(self): + self.fetch_flow_collection_start(FlowMappingStartToken) + + def fetch_flow_collection_start(self, TokenClass): + + # '[' and '{' may start a simple key. + self.save_possible_simple_key() + + # Increase the flow level. + self.flow_level += 1 + + # Simple keys are allowed after '[' and '{'. + self.allow_simple_key = True + + # Add FLOW-SEQUENCE-START or FLOW-MAPPING-START. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_sequence_end(self): + self.fetch_flow_collection_end(FlowSequenceEndToken) + + def fetch_flow_mapping_end(self): + self.fetch_flow_collection_end(FlowMappingEndToken) + + def fetch_flow_collection_end(self, TokenClass): + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Decrease the flow level. + self.flow_level -= 1 + + # No simple keys after ']' or '}'. + self.allow_simple_key = False + + # Add FLOW-SEQUENCE-END or FLOW-MAPPING-END. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_entry(self): + + # Simple keys are allowed after ','. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add FLOW-ENTRY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(FlowEntryToken(start_mark, end_mark)) + + def fetch_block_entry(self): + + # Block context needs additional checks. + if not self.flow_level: + + # Are we allowed to start a new entry? + if not self.allow_simple_key: + raise ScannerError(None, None, + "sequence entries are not allowed here", + self.get_mark()) + + # We may need to add BLOCK-SEQUENCE-START. + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockSequenceStartToken(mark, mark)) + + # It's an error for the block entry to occur in the flow context, + # but we let the parser detect this. + else: + pass + + # Simple keys are allowed after '-'. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add BLOCK-ENTRY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(BlockEntryToken(start_mark, end_mark)) + + def fetch_key(self): + + # Block context needs additional checks. + if not self.flow_level: + + # Are we allowed to start a key (not necessary a simple)? + if not self.allow_simple_key: + raise ScannerError(None, None, + "mapping keys are not allowed here", + self.get_mark()) + + # We may need to add BLOCK-MAPPING-START. + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockMappingStartToken(mark, mark)) + + # Simple keys are allowed after '?' in the block context. + self.allow_simple_key = not self.flow_level + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add KEY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(KeyToken(start_mark, end_mark)) + + def fetch_value(self): + + # Do we determine a simple key? + if self.flow_level in self.possible_simple_keys: + + # Add KEY. + key = self.possible_simple_keys[self.flow_level] + del self.possible_simple_keys[self.flow_level] + self.tokens.insert(key.token_number-self.tokens_taken, + KeyToken(key.mark, key.mark)) + + # If this key starts a new block mapping, we need to add + # BLOCK-MAPPING-START. + if not self.flow_level: + if self.add_indent(key.column): + self.tokens.insert(key.token_number-self.tokens_taken, + BlockMappingStartToken(key.mark, key.mark)) + + # There cannot be two simple keys one after another. + self.allow_simple_key = False + + # It must be a part of a complex key. + else: + + # Block context needs additional checks. + # (Do we really need them? They will be caught by the parser + # anyway.) + if not self.flow_level: + + # We are allowed to start a complex value if and only if + # we can start a simple key. + if not self.allow_simple_key: + raise ScannerError(None, None, + "mapping values are not allowed here", + self.get_mark()) + + # If this value starts a new block mapping, we need to add + # BLOCK-MAPPING-START. It will be detected as an error later by + # the parser. + if not self.flow_level: + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockMappingStartToken(mark, mark)) + + # Simple keys are allowed after ':' in the block context. + self.allow_simple_key = not self.flow_level + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add VALUE. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(ValueToken(start_mark, end_mark)) + + def fetch_alias(self): + + # ALIAS could be a simple key. + self.save_possible_simple_key() + + # No simple keys after ALIAS. + self.allow_simple_key = False + + # Scan and add ALIAS. + self.tokens.append(self.scan_anchor(AliasToken)) + + def fetch_anchor(self): + + # ANCHOR could start a simple key. + self.save_possible_simple_key() + + # No simple keys after ANCHOR. + self.allow_simple_key = False + + # Scan and add ANCHOR. + self.tokens.append(self.scan_anchor(AnchorToken)) + + def fetch_tag(self): + + # TAG could start a simple key. + self.save_possible_simple_key() + + # No simple keys after TAG. + self.allow_simple_key = False + + # Scan and add TAG. + self.tokens.append(self.scan_tag()) + + def fetch_literal(self): + self.fetch_block_scalar(style='|') + + def fetch_folded(self): + self.fetch_block_scalar(style='>') + + def fetch_block_scalar(self, style): + + # A simple key may follow a block scalar. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Scan and add SCALAR. + self.tokens.append(self.scan_block_scalar(style)) + + def fetch_single(self): + self.fetch_flow_scalar(style='\'') + + def fetch_double(self): + self.fetch_flow_scalar(style='"') + + def fetch_flow_scalar(self, style): + + # A flow scalar could be a simple key. + self.save_possible_simple_key() + + # No simple keys after flow scalars. + self.allow_simple_key = False + + # Scan and add SCALAR. + self.tokens.append(self.scan_flow_scalar(style)) + + def fetch_plain(self): + + # A plain scalar could be a simple key. + self.save_possible_simple_key() + + # No simple keys after plain scalars. But note that `scan_plain` will + # change this flag if the scan is finished at the beginning of the + # line. + self.allow_simple_key = False + + # Scan and add SCALAR. May change `allow_simple_key`. + self.tokens.append(self.scan_plain()) + + # Checkers. + + def check_directive(self): + + # DIRECTIVE: ^ '%' ... + # The '%' indicator is already checked. + if self.column == 0: + return True + + def check_document_start(self): + + # DOCUMENT-START: ^ '---' (' '|'\n') + if self.column == 0: + if self.prefix(3) == '---' \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return True + + def check_document_end(self): + + # DOCUMENT-END: ^ '...' (' '|'\n') + if self.column == 0: + if self.prefix(3) == '...' \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return True + + def check_block_entry(self): + + # BLOCK-ENTRY: '-' (' '|'\n') + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_key(self): + + # KEY(flow context): '?' + if self.flow_level: + return True + + # KEY(block context): '?' (' '|'\n') + else: + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_value(self): + + # VALUE(flow context): ':' + if self.flow_level: + return True + + # VALUE(block context): ':' (' '|'\n') + else: + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_plain(self): + + # A plain scalar may start with any non-space character except: + # '-', '?', ':', ',', '[', ']', '{', '}', + # '#', '&', '*', '!', '|', '>', '\'', '\"', + # '%', '@', '`'. + # + # It may also start with + # '-', '?', ':' + # if it is followed by a non-space character. + # + # Note that we limit the last rule to the block context (except the + # '-' character) because we want the flow context to be space + # independent. + ch = self.peek() + return ch not in '\0 \t\r\n\x85\u2028\u2029-?:,[]{}#&*!|>\'\"%@`' \ + or (self.peek(1) not in '\0 \t\r\n\x85\u2028\u2029' + and (ch == '-' or (not self.flow_level and ch in '?:'))) + + # Scanners. + + def scan_to_next_token(self): + # We ignore spaces, line breaks and comments. + # If we find a line break in the block context, we set the flag + # `allow_simple_key` on. + # The byte order mark is stripped if it's the first character in the + # stream. We do not yet support BOM inside the stream as the + # specification requires. Any such mark will be considered as a part + # of the document. + # + # TODO: We need to make tab handling rules more sane. A good rule is + # Tabs cannot precede tokens + # BLOCK-SEQUENCE-START, BLOCK-MAPPING-START, BLOCK-END, + # KEY(block), VALUE(block), BLOCK-ENTRY + # So the checking code is + # if : + # self.allow_simple_keys = False + # We also need to add the check for `allow_simple_keys == True` to + # `unwind_indent` before issuing BLOCK-END. + # Scanners for block, flow, and plain scalars need to be modified. + + if self.index == 0 and self.peek() == '\uFEFF': + self.forward() + found = False + while not found: + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + if self.scan_line_break(): + if not self.flow_level: + self.allow_simple_key = True + else: + found = True + + def scan_directive(self): + # See the specification for details. + start_mark = self.get_mark() + self.forward() + name = self.scan_directive_name(start_mark) + value = None + if name == 'YAML': + value = self.scan_yaml_directive_value(start_mark) + end_mark = self.get_mark() + elif name == 'TAG': + value = self.scan_tag_directive_value(start_mark) + end_mark = self.get_mark() + else: + end_mark = self.get_mark() + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + self.scan_directive_ignored_line(start_mark) + return DirectiveToken(name, value, start_mark, end_mark) + + def scan_directive_name(self, start_mark): + # See the specification for details. + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if not length: + raise ScannerError("while scanning a directive", start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + value = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + return value + + def scan_yaml_directive_value(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + major = self.scan_yaml_directive_number(start_mark) + if self.peek() != '.': + raise ScannerError("while scanning a directive", start_mark, + "expected a digit or '.', but found %r" % self.peek(), + self.get_mark()) + self.forward() + minor = self.scan_yaml_directive_number(start_mark) + if self.peek() not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected a digit or ' ', but found %r" % self.peek(), + self.get_mark()) + return (major, minor) + + def scan_yaml_directive_number(self, start_mark): + # See the specification for details. + ch = self.peek() + if not ('0' <= ch <= '9'): + raise ScannerError("while scanning a directive", start_mark, + "expected a digit, but found %r" % ch, self.get_mark()) + length = 0 + while '0' <= self.peek(length) <= '9': + length += 1 + value = int(self.prefix(length)) + self.forward(length) + return value + + def scan_tag_directive_value(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + handle = self.scan_tag_directive_handle(start_mark) + while self.peek() == ' ': + self.forward() + prefix = self.scan_tag_directive_prefix(start_mark) + return (handle, prefix) + + def scan_tag_directive_handle(self, start_mark): + # See the specification for details. + value = self.scan_tag_handle('directive', start_mark) + ch = self.peek() + if ch != ' ': + raise ScannerError("while scanning a directive", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + return value + + def scan_tag_directive_prefix(self, start_mark): + # See the specification for details. + value = self.scan_tag_uri('directive', start_mark) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + return value + + def scan_directive_ignored_line(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + ch = self.peek() + if ch not in '\0\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected a comment or a line break, but found %r" + % ch, self.get_mark()) + self.scan_line_break() + + def scan_anchor(self, TokenClass): + # The specification does not restrict characters for anchors and + # aliases. This may lead to problems, for instance, the document: + # [ *alias, value ] + # can be interpreted in two ways, as + # [ "value" ] + # and + # [ *alias , "value" ] + # Therefore we restrict aliases to numbers and ASCII letters. + start_mark = self.get_mark() + indicator = self.peek() + if indicator == '*': + name = 'alias' + else: + name = 'anchor' + self.forward() + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if not length: + raise ScannerError("while scanning an %s" % name, start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + value = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch not in '\0 \t\r\n\x85\u2028\u2029?:,]}%@`': + raise ScannerError("while scanning an %s" % name, start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + end_mark = self.get_mark() + return TokenClass(value, start_mark, end_mark) + + def scan_tag(self): + # See the specification for details. + start_mark = self.get_mark() + ch = self.peek(1) + if ch == '<': + handle = None + self.forward(2) + suffix = self.scan_tag_uri('tag', start_mark) + if self.peek() != '>': + raise ScannerError("while parsing a tag", start_mark, + "expected '>', but found %r" % self.peek(), + self.get_mark()) + self.forward() + elif ch in '\0 \t\r\n\x85\u2028\u2029': + handle = None + suffix = '!' + self.forward() + else: + length = 1 + use_handle = False + while ch not in '\0 \r\n\x85\u2028\u2029': + if ch == '!': + use_handle = True + break + length += 1 + ch = self.peek(length) + handle = '!' + if use_handle: + handle = self.scan_tag_handle('tag', start_mark) + else: + handle = '!' + self.forward() + suffix = self.scan_tag_uri('tag', start_mark) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a tag", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + value = (handle, suffix) + end_mark = self.get_mark() + return TagToken(value, start_mark, end_mark) + + def scan_block_scalar(self, style): + # See the specification for details. + + if style == '>': + folded = True + else: + folded = False + + chunks = [] + start_mark = self.get_mark() + + # Scan the header. + self.forward() + chomping, increment = self.scan_block_scalar_indicators(start_mark) + self.scan_block_scalar_ignored_line(start_mark) + + # Determine the indentation level and go to the first non-empty line. + min_indent = self.indent+1 + if min_indent < 1: + min_indent = 1 + if increment is None: + breaks, max_indent, end_mark = self.scan_block_scalar_indentation() + indent = max(min_indent, max_indent) + else: + indent = min_indent+increment-1 + breaks, end_mark = self.scan_block_scalar_breaks(indent) + line_break = '' + + # Scan the inner part of the block scalar. + while self.column == indent and self.peek() != '\0': + chunks.extend(breaks) + leading_non_space = self.peek() not in ' \t' + length = 0 + while self.peek(length) not in '\0\r\n\x85\u2028\u2029': + length += 1 + chunks.append(self.prefix(length)) + self.forward(length) + line_break = self.scan_line_break() + breaks, end_mark = self.scan_block_scalar_breaks(indent) + if self.column == indent and self.peek() != '\0': + + # Unfortunately, folding rules are ambiguous. + # + # This is the folding according to the specification: + + if folded and line_break == '\n' \ + and leading_non_space and self.peek() not in ' \t': + if not breaks: + chunks.append(' ') + else: + chunks.append(line_break) + + # This is Clark Evans's interpretation (also in the spec + # examples): + # + #if folded and line_break == '\n': + # if not breaks: + # if self.peek() not in ' \t': + # chunks.append(' ') + # else: + # chunks.append(line_break) + #else: + # chunks.append(line_break) + else: + break + + # Chomp the tail. + if chomping is not False: + chunks.append(line_break) + if chomping is True: + chunks.extend(breaks) + + # We are done. + return ScalarToken(''.join(chunks), False, start_mark, end_mark, + style) + + def scan_block_scalar_indicators(self, start_mark): + # See the specification for details. + chomping = None + increment = None + ch = self.peek() + if ch in '+-': + if ch == '+': + chomping = True + else: + chomping = False + self.forward() + ch = self.peek() + if ch in '0123456789': + increment = int(ch) + if increment == 0: + raise ScannerError("while scanning a block scalar", start_mark, + "expected indentation indicator in the range 1-9, but found 0", + self.get_mark()) + self.forward() + elif ch in '0123456789': + increment = int(ch) + if increment == 0: + raise ScannerError("while scanning a block scalar", start_mark, + "expected indentation indicator in the range 1-9, but found 0", + self.get_mark()) + self.forward() + ch = self.peek() + if ch in '+-': + if ch == '+': + chomping = True + else: + chomping = False + self.forward() + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a block scalar", start_mark, + "expected chomping or indentation indicators, but found %r" + % ch, self.get_mark()) + return chomping, increment + + def scan_block_scalar_ignored_line(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + ch = self.peek() + if ch not in '\0\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a block scalar", start_mark, + "expected a comment or a line break, but found %r" % ch, + self.get_mark()) + self.scan_line_break() + + def scan_block_scalar_indentation(self): + # See the specification for details. + chunks = [] + max_indent = 0 + end_mark = self.get_mark() + while self.peek() in ' \r\n\x85\u2028\u2029': + if self.peek() != ' ': + chunks.append(self.scan_line_break()) + end_mark = self.get_mark() + else: + self.forward() + if self.column > max_indent: + max_indent = self.column + return chunks, max_indent, end_mark + + def scan_block_scalar_breaks(self, indent): + # See the specification for details. + chunks = [] + end_mark = self.get_mark() + while self.column < indent and self.peek() == ' ': + self.forward() + while self.peek() in '\r\n\x85\u2028\u2029': + chunks.append(self.scan_line_break()) + end_mark = self.get_mark() + while self.column < indent and self.peek() == ' ': + self.forward() + return chunks, end_mark + + def scan_flow_scalar(self, style): + # See the specification for details. + # Note that we loose indentation rules for quoted scalars. Quoted + # scalars don't need to adhere indentation because " and ' clearly + # mark the beginning and the end of them. Therefore we are less + # restrictive then the specification requires. We only need to check + # that document separators are not included in scalars. + if style == '"': + double = True + else: + double = False + chunks = [] + start_mark = self.get_mark() + quote = self.peek() + self.forward() + chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark)) + while self.peek() != quote: + chunks.extend(self.scan_flow_scalar_spaces(double, start_mark)) + chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark)) + self.forward() + end_mark = self.get_mark() + return ScalarToken(''.join(chunks), False, start_mark, end_mark, + style) + + ESCAPE_REPLACEMENTS = { + '0': '\0', + 'a': '\x07', + 'b': '\x08', + 't': '\x09', + '\t': '\x09', + 'n': '\x0A', + 'v': '\x0B', + 'f': '\x0C', + 'r': '\x0D', + 'e': '\x1B', + ' ': '\x20', + '\"': '\"', + '\\': '\\', + '/': '/', + 'N': '\x85', + '_': '\xA0', + 'L': '\u2028', + 'P': '\u2029', + } + + ESCAPE_CODES = { + 'x': 2, + 'u': 4, + 'U': 8, + } + + def scan_flow_scalar_non_spaces(self, double, start_mark): + # See the specification for details. + chunks = [] + while True: + length = 0 + while self.peek(length) not in '\'\"\\\0 \t\r\n\x85\u2028\u2029': + length += 1 + if length: + chunks.append(self.prefix(length)) + self.forward(length) + ch = self.peek() + if not double and ch == '\'' and self.peek(1) == '\'': + chunks.append('\'') + self.forward(2) + elif (double and ch == '\'') or (not double and ch in '\"\\'): + chunks.append(ch) + self.forward() + elif double and ch == '\\': + self.forward() + ch = self.peek() + if ch in self.ESCAPE_REPLACEMENTS: + chunks.append(self.ESCAPE_REPLACEMENTS[ch]) + self.forward() + elif ch in self.ESCAPE_CODES: + length = self.ESCAPE_CODES[ch] + self.forward() + for k in range(length): + if self.peek(k) not in '0123456789ABCDEFabcdef': + raise ScannerError("while scanning a double-quoted scalar", start_mark, + "expected escape sequence of %d hexdecimal numbers, but found %r" % + (length, self.peek(k)), self.get_mark()) + code = int(self.prefix(length), 16) + chunks.append(chr(code)) + self.forward(length) + elif ch in '\r\n\x85\u2028\u2029': + self.scan_line_break() + chunks.extend(self.scan_flow_scalar_breaks(double, start_mark)) + else: + raise ScannerError("while scanning a double-quoted scalar", start_mark, + "found unknown escape character %r" % ch, self.get_mark()) + else: + return chunks + + def scan_flow_scalar_spaces(self, double, start_mark): + # See the specification for details. + chunks = [] + length = 0 + while self.peek(length) in ' \t': + length += 1 + whitespaces = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch == '\0': + raise ScannerError("while scanning a quoted scalar", start_mark, + "found unexpected end of stream", self.get_mark()) + elif ch in '\r\n\x85\u2028\u2029': + line_break = self.scan_line_break() + breaks = self.scan_flow_scalar_breaks(double, start_mark) + if line_break != '\n': + chunks.append(line_break) + elif not breaks: + chunks.append(' ') + chunks.extend(breaks) + else: + chunks.append(whitespaces) + return chunks + + def scan_flow_scalar_breaks(self, double, start_mark): + # See the specification for details. + chunks = [] + while True: + # Instead of checking indentation, we check for document + # separators. + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a quoted scalar", start_mark, + "found unexpected document separator", self.get_mark()) + while self.peek() in ' \t': + self.forward() + if self.peek() in '\r\n\x85\u2028\u2029': + chunks.append(self.scan_line_break()) + else: + return chunks + + def scan_plain(self): + # See the specification for details. + # We add an additional restriction for the flow context: + # plain scalars in the flow context cannot contain ',' or '?'. + # We also keep track of the `allow_simple_key` flag here. + # Indentation rules are loosed for the flow context. + chunks = [] + start_mark = self.get_mark() + end_mark = start_mark + indent = self.indent+1 + # We allow zero indentation for scalars, but then we need to check for + # document separators at the beginning of the line. + #if indent == 0: + # indent = 1 + spaces = [] + while True: + length = 0 + if self.peek() == '#': + break + while True: + ch = self.peek(length) + if ch in '\0 \t\r\n\x85\u2028\u2029' \ + or (ch == ':' and + self.peek(length+1) in '\0 \t\r\n\x85\u2028\u2029' + + (u',[]{}' if self.flow_level else u''))\ + or (self.flow_level and ch in ',?[]{}'): + break + length += 1 + if length == 0: + break + self.allow_simple_key = False + chunks.extend(spaces) + chunks.append(self.prefix(length)) + self.forward(length) + end_mark = self.get_mark() + spaces = self.scan_plain_spaces(indent, start_mark) + if not spaces or self.peek() == '#' \ + or (not self.flow_level and self.column < indent): + break + return ScalarToken(''.join(chunks), True, start_mark, end_mark) + + def scan_plain_spaces(self, indent, start_mark): + # See the specification for details. + # The specification is really confusing about tabs in plain scalars. + # We just forbid them completely. Do not use tabs in YAML! + chunks = [] + length = 0 + while self.peek(length) in ' ': + length += 1 + whitespaces = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch in '\r\n\x85\u2028\u2029': + line_break = self.scan_line_break() + self.allow_simple_key = True + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return + breaks = [] + while self.peek() in ' \r\n\x85\u2028\u2029': + if self.peek() == ' ': + self.forward() + else: + breaks.append(self.scan_line_break()) + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return + if line_break != '\n': + chunks.append(line_break) + elif not breaks: + chunks.append(' ') + chunks.extend(breaks) + elif whitespaces: + chunks.append(whitespaces) + return chunks + + def scan_tag_handle(self, name, start_mark): + # See the specification for details. + # For some strange reasons, the specification does not allow '_' in + # tag handles. I have allowed it anyway. + ch = self.peek() + if ch != '!': + raise ScannerError("while scanning a %s" % name, start_mark, + "expected '!', but found %r" % ch, self.get_mark()) + length = 1 + ch = self.peek(length) + if ch != ' ': + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if ch != '!': + self.forward(length) + raise ScannerError("while scanning a %s" % name, start_mark, + "expected '!', but found %r" % ch, self.get_mark()) + length += 1 + value = self.prefix(length) + self.forward(length) + return value + + def scan_tag_uri(self, name, start_mark): + # See the specification for details. + # Note: we do not check if URI is well-formed. + chunks = [] + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?:@&=+$,_.!~*\'()[]%': + if ch == '%': + chunks.append(self.prefix(length)) + self.forward(length) + length = 0 + chunks.append(self.scan_uri_escapes(name, start_mark)) + else: + length += 1 + ch = self.peek(length) + if length: + chunks.append(self.prefix(length)) + self.forward(length) + length = 0 + if not chunks: + raise ScannerError("while parsing a %s" % name, start_mark, + "expected URI, but found %r" % ch, self.get_mark()) + return ''.join(chunks) + + def scan_uri_escapes(self, name, start_mark): + # See the specification for details. + codes = [] + mark = self.get_mark() + while self.peek() == '%': + self.forward() + for k in range(2): + if self.peek(k) not in '0123456789ABCDEFabcdef': + raise ScannerError("while scanning a %s" % name, start_mark, + "expected URI escape sequence of 2 hexdecimal numbers, but found %r" + % self.peek(k), self.get_mark()) + codes.append(int(self.prefix(2), 16)) + self.forward(2) + try: + value = bytes(codes).decode('utf-8') + except UnicodeDecodeError as exc: + raise ScannerError("while scanning a %s" % name, start_mark, str(exc), mark) + return value + + def scan_line_break(self): + # Transforms: + # '\r\n' : '\n' + # '\r' : '\n' + # '\n' : '\n' + # '\x85' : '\n' + # '\u2028' : '\u2028' + # '\u2029 : '\u2029' + # default : '' + ch = self.peek() + if ch in '\r\n\x85': + if self.prefix(2) == '\r\n': + self.forward(2) + else: + self.forward() + return '\n' + elif ch in '\u2028\u2029': + self.forward() + return ch + return '' diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/serializer.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/serializer.py new file mode 100644 index 0000000..fe911e6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/serializer.py @@ -0,0 +1,111 @@ + +__all__ = ['Serializer', 'SerializerError'] + +from .error import YAMLError +from .events import * +from .nodes import * + +class SerializerError(YAMLError): + pass + +class Serializer: + + ANCHOR_TEMPLATE = 'id%03d' + + def __init__(self, encoding=None, + explicit_start=None, explicit_end=None, version=None, tags=None): + self.use_encoding = encoding + self.use_explicit_start = explicit_start + self.use_explicit_end = explicit_end + self.use_version = version + self.use_tags = tags + self.serialized_nodes = {} + self.anchors = {} + self.last_anchor_id = 0 + self.closed = None + + def open(self): + if self.closed is None: + self.emit(StreamStartEvent(encoding=self.use_encoding)) + self.closed = False + elif self.closed: + raise SerializerError("serializer is closed") + else: + raise SerializerError("serializer is already opened") + + def close(self): + if self.closed is None: + raise SerializerError("serializer is not opened") + elif not self.closed: + self.emit(StreamEndEvent()) + self.closed = True + + #def __del__(self): + # self.close() + + def serialize(self, node): + if self.closed is None: + raise SerializerError("serializer is not opened") + elif self.closed: + raise SerializerError("serializer is closed") + self.emit(DocumentStartEvent(explicit=self.use_explicit_start, + version=self.use_version, tags=self.use_tags)) + self.anchor_node(node) + self.serialize_node(node, None, None) + self.emit(DocumentEndEvent(explicit=self.use_explicit_end)) + self.serialized_nodes = {} + self.anchors = {} + self.last_anchor_id = 0 + + def anchor_node(self, node): + if node in self.anchors: + if self.anchors[node] is None: + self.anchors[node] = self.generate_anchor(node) + else: + self.anchors[node] = None + if isinstance(node, SequenceNode): + for item in node.value: + self.anchor_node(item) + elif isinstance(node, MappingNode): + for key, value in node.value: + self.anchor_node(key) + self.anchor_node(value) + + def generate_anchor(self, node): + self.last_anchor_id += 1 + return self.ANCHOR_TEMPLATE % self.last_anchor_id + + def serialize_node(self, node, parent, index): + alias = self.anchors[node] + if node in self.serialized_nodes: + self.emit(AliasEvent(alias)) + else: + self.serialized_nodes[node] = True + self.descend_resolver(parent, index) + if isinstance(node, ScalarNode): + detected_tag = self.resolve(ScalarNode, node.value, (True, False)) + default_tag = self.resolve(ScalarNode, node.value, (False, True)) + implicit = (node.tag == detected_tag), (node.tag == default_tag) + self.emit(ScalarEvent(alias, node.tag, implicit, node.value, + style=node.style)) + elif isinstance(node, SequenceNode): + implicit = (node.tag + == self.resolve(SequenceNode, node.value, True)) + self.emit(SequenceStartEvent(alias, node.tag, implicit, + flow_style=node.flow_style)) + index = 0 + for item in node.value: + self.serialize_node(item, node, index) + index += 1 + self.emit(SequenceEndEvent()) + elif isinstance(node, MappingNode): + implicit = (node.tag + == self.resolve(MappingNode, node.value, True)) + self.emit(MappingStartEvent(alias, node.tag, implicit, + flow_style=node.flow_style)) + for key, value in node.value: + self.serialize_node(key, node, None) + self.serialize_node(value, node, key) + self.emit(MappingEndEvent()) + self.ascend_resolver() + diff --git a/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/tokens.py b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/tokens.py new file mode 100644 index 0000000..4d0b48a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/vendor/yaml/tokens.py @@ -0,0 +1,104 @@ + +class Token(object): + def __init__(self, start_mark, end_mark): + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + attributes = [key for key in self.__dict__ + if not key.endswith('_mark')] + attributes.sort() + arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) + for key in attributes]) + return '%s(%s)' % (self.__class__.__name__, arguments) + +#class BOMToken(Token): +# id = '' + +class DirectiveToken(Token): + id = '' + def __init__(self, name, value, start_mark, end_mark): + self.name = name + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class DocumentStartToken(Token): + id = '' + +class DocumentEndToken(Token): + id = '' + +class StreamStartToken(Token): + id = '' + def __init__(self, start_mark=None, end_mark=None, + encoding=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.encoding = encoding + +class StreamEndToken(Token): + id = '' + +class BlockSequenceStartToken(Token): + id = '' + +class BlockMappingStartToken(Token): + id = '' + +class BlockEndToken(Token): + id = '' + +class FlowSequenceStartToken(Token): + id = '[' + +class FlowMappingStartToken(Token): + id = '{' + +class FlowSequenceEndToken(Token): + id = ']' + +class FlowMappingEndToken(Token): + id = '}' + +class KeyToken(Token): + id = '?' + +class ValueToken(Token): + id = ':' + +class BlockEntryToken(Token): + id = '-' + +class FlowEntryToken(Token): + id = ',' + +class AliasToken(Token): + id = '' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class AnchorToken(Token): + id = '' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class TagToken(Token): + id = '' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class ScalarToken(Token): + id = '' + def __init__(self, value, plain, start_mark, end_mark, style=None): + self.value = value + self.plain = plain + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + diff --git a/.venv/lib/python3.9/site-packages/invoke/watchers.py b/.venv/lib/python3.9/site-packages/invoke/watchers.py new file mode 100644 index 0000000..eb813df --- /dev/null +++ b/.venv/lib/python3.9/site-packages/invoke/watchers.py @@ -0,0 +1,145 @@ +import re +import threading +from typing import Generator, Iterable + +from .exceptions import ResponseNotAccepted + + +class StreamWatcher(threading.local): + """ + A class whose subclasses may act on seen stream data from subprocesses. + + Subclasses must exhibit the following API; see `Responder` for a concrete + example. + + * ``__init__`` is completely up to each subclass, though as usual, + subclasses *of* subclasses should be careful to make use of `super` where + appropriate. + * `submit` must accept the entire current contents of the stream being + watched, as a string, and may optionally return an iterable of strings + (or act as a generator iterator, i.e. multiple calls to ``yield + ``), which will each be written to the subprocess' standard + input. + + .. note:: + `StreamWatcher` subclasses exist in part to enable state tracking, such + as detecting when a submitted password didn't work & erroring (or + prompting a user, or etc). Such bookkeeping isn't easily achievable + with simple callback functions. + + .. note:: + `StreamWatcher` subclasses `threading.local` so that its instances can + be used to 'watch' both subprocess stdout and stderr in separate + threads. + + .. versionadded:: 1.0 + """ + + def submit(self, stream: str) -> Iterable[str]: + """ + Act on ``stream`` data, potentially returning responses. + + :param str stream: + All data read on this stream since the beginning of the session. + + :returns: + An iterable of ``str`` (which may be empty). + + .. versionadded:: 1.0 + """ + raise NotImplementedError + + +class Responder(StreamWatcher): + """ + A parameterizable object that submits responses to specific patterns. + + Commonly used to implement password auto-responds for things like ``sudo``. + + .. versionadded:: 1.0 + """ + + def __init__(self, pattern: str, response: str) -> None: + r""" + Imprint this `Responder` with necessary parameters. + + :param pattern: + A raw string (e.g. ``r"\[sudo\] password for .*:"``) which will be + turned into a regular expression. + + :param response: + The string to submit to the subprocess' stdin when ``pattern`` is + detected. + """ + # TODO: precompile the keys into regex objects + self.pattern = pattern + self.response = response + self.index = 0 + + def pattern_matches( + self, stream: str, pattern: str, index_attr: str + ) -> Iterable[str]: + """ + Generic "search for pattern in stream, using index" behavior. + + Used here and in some subclasses that want to track multiple patterns + concurrently. + + :param str stream: The same data passed to ``submit``. + :param str pattern: The pattern to search for. + :param str index_attr: The name of the index attribute to use. + :returns: An iterable of string matches. + + .. versionadded:: 1.0 + """ + # NOTE: generifies scanning so it can be used to scan for >1 pattern at + # once, e.g. in FailingResponder. + # Only look at stream contents we haven't seen yet, to avoid dupes. + index = getattr(self, index_attr) + new = stream[index:] + # Search, across lines if necessary + matches = re.findall(pattern, new, re.S) + # Update seek index if we've matched + if matches: + setattr(self, index_attr, index + len(new)) + return matches + + def submit(self, stream: str) -> Generator[str, None, None]: + # Iterate over findall() response in case >1 match occurred. + for _ in self.pattern_matches(stream, self.pattern, "index"): + yield self.response + + +class FailingResponder(Responder): + """ + Variant of `Responder` which is capable of detecting incorrect responses. + + This class adds a ``sentinel`` parameter to ``__init__``, and its + ``submit`` will raise `.ResponseNotAccepted` if it detects that sentinel + value in the stream. + + .. versionadded:: 1.0 + """ + + def __init__(self, pattern: str, response: str, sentinel: str) -> None: + super().__init__(pattern, response) + self.sentinel = sentinel + self.failure_index = 0 + self.tried = False + + def submit(self, stream: str) -> Generator[str, None, None]: + # Behave like regular Responder initially + response = super().submit(stream) + # Also check stream for our failure sentinel + failed = self.pattern_matches(stream, self.sentinel, "failure_index") + # Error out if we seem to have failed after a previous response. + if self.tried and failed: + err = 'Auto-response to r"{}" failed with {!r}!'.format( + self.pattern, self.sentinel + ) + raise ResponseNotAccepted(err) + # Once we see that we had a response, take note + if response: + self.tried = True + # Again, behave regularly by default. + return response diff --git a/.venv/lib/python3.9/site-packages/nacl/__init__.py b/.venv/lib/python3.9/site-packages/nacl/__init__.py new file mode 100644 index 0000000..83aaacf --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/__init__.py @@ -0,0 +1,25 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +__all__ = [ + "__uri__", + "__version__", + "__email__", +] + +__uri__ = "https://github.com/pyca/pynacl/" + +# Must be kept in sync with `pyproject.toml` +__version__ = "1.6.2" diff --git a/.venv/lib/python3.9/site-packages/nacl/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..51183a2f92fa57d83d643a4d910bd832c1fccd27 GIT binary patch literal 305 zcmYk0Jx;_h5QUweg#{Fef}VN{Z1JO&KnQUHn(fkzoY*9@>%^ArWVL$^E&v@@+Ll{T zF@c6B&C|T%%{Q_rP8sR_jjxN0v9BroS4!cTCR~s;OtFuoWGX2Wm6oZ>R&0?kvcoaJ z;1S?(1~6(L(DoEg0CXqO0PHW@7+rV}qQTe>6|Ze4+^&{ny{wJc&#w8B-@N?Yl7>1y zA)=r7pUlsueX{RHw6@a%-6n*=IqRdSFtl5_);fy8Az;6iUcoCG4V4U92|nt66b7s1 u9RXu&`&)i50!Dr1WWAA%4&wI>pfW}P?skXyV`tT1^wT+ELryk7%CjGOuvWDI literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/__pycache__/encoding.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/__pycache__/encoding.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..61d666c52fb53ae9d7c6bc53c19c06ed210fb029 GIT binary patch literal 3888 zcmcIn&2QsG6!%wbCr#Qk+XYsDWKjuiU^ijg5DBykrQH=Df*!U-LYBZg&P*EbI!+in z+otNRy>jEoVfWbofxpC8PW%g;cyH{cPMg##N*&FM-%Q@;@6F5$sZ>f5Jg z(qG7Ap8_x&Fv359P>IUEWGCOUEd#IkN?*0rzGiDO&Z~Z*uiJXxunk%ITA~^)oJh35 zRI2}`+9orYc}KE~uwqaXR!n9dt9A+aA}s-568r-23$zS;S@31xD|8X~MZs5qU!qmu ztAbwyewo&QuL*t$_*--Z_?2VDu2OkNs^9(_B9ON0N^E?!x%C5!NW4hgFyf>W^;y&# zP*|$$jE2JjkHXDy#KKtH9S>Ot<+9HtCl6tkNtg#)VJg#DffcCyhe8#qo@mGNv25#8 z^O%if-k>`8WW=WPB(_8P-+ ztS7#_jgBioB=vCVEaXPA_C}GOoJX3C&T_#rhI|%&qg1le=P`rCf*Tg;MvNy(K{o6S zMn1J%W)UkG+#d|@Szd!RtY;Jj*xf|`-Gh4Fdi2OTc-EL`+)gqG`y`V~UIsSS6XEyZ z{c@bi+IHOpxSfFXnd8JI$LSB~2(s(MWykq-MErE697ZJaI!R4(6}1;!EJt2J!;45J zNG5OS0@s1O1tUbxloj}_s7S?1U5<;O67V5mc&VhZrZ!Nv1!StEwQND#u#ut6lex5* zZ9OgJ(o?ekBq?TYfSRjuJ(6~yF6U=d1bYu%5@n+tE}yG^qryQ09P=?3G?B_r=9ow^ zJ2m(c>Zl@FMp8p^3(3`R+=icg3?sy?hj7#Y434umll^bl!Ijy^LfS%quy!Kpm3$<< zhI3J*2u?oJ^#T%hJTEqS?7;WBV?LwKMa*r~a)!#e*?Fj3ZJ6HyZEW6_RX{q^adaG$C>bFZkd)c5?zJJgAT4S5gF*{jr?6?vvgHyO_GdKY}lg ztxD$l6dfftI6W8%Nb+HI;z)`Nw6qu7BW!RuIuIM;*NkVHC9Io^M(QxP2SXS!WsZD( zSrk*!8>qzXa11Nyh4pAWgf?E-;FwI&-g0aeMR&#VX6JaBa0|&Q5=261&R7@DV4Sh} aFloiVz`21RNFMVd5ypnw}BPEqKxqL!3IdzZT* zxmJ`qJtR5z)MF3vG1uPvA9~(vPyGu$b%uI)fx<9MVd$=s(-`|3Y%Drc|l zmcjls=P^pv;ev1<9^Hb8J3W^k=)7)f_l*-i0I}HNk0o9!F7ctL` z$RrtNiqIq>lEw*9JfVg&!g0U0+xOlFWj%@{O?ecRjVMYpRwVe|jH2fSP39}LC}LS0 zMeiL2*EE~{72R=`@~+4awJ!2JQ>Hr*dOV>AoSSZui%7@`RV*3`FgXCvShsV; zF$6V{nITJPA|&9YLW-0oWKf6%QgdhxKvmHh6Ge)-$_kFA#!!Et262*zR2XUvo}0Co zfS-HF7v^={4MK&Qc2EX!CRrI!HPU5pIAOXB6^CjfV=UE+fhmd^`U5=rYnYh(%0Kqr zLEAF!iT5fv_Eg7s$NoFt!27$E6KG=BoHy=?`^J6k9z!!L9JR|KB?nFSv|3L7HY?!CR4XX}~}GRSuy7B^3lL zx62T@K5I(Y$NoP6S;OgKlPQa~4_{_7nGzafw*zz7s~E}AZEmo^!C+gh?PCi2$f=_W>x9C(rLdmZ6e$A?mom%-2S9Y~=mAm{DCE1c=C643PlR9n8#v)@z30k@hN*fAfM0SnHEtKhDx!fI@D=&AM znWZcVOfM}^AV6+C8i;-LpXd+SYY#!rIixkxrtiJkT~Q<@pe|YzSz`Ci$9pqx-uKX6 zT&(8cdHU!2?l%{5xxZp({F#H!ui#a8ja<&n@tkY8rf+bQV4j=8+%4=Dd5K_|R|wAW zD#3ZaKyZhPCjx;4Zpn0IM$Qym1QFS$7Gr-geEcTy6RAv+DhxV6A@WwmO0B z`1PKxdL0J+p)Z)&AB0LM76xKf^}>jGK_ujk?Fd!f2_^Hrt_odm*k?-k!ij{-ke&^s z*Y_fC4@m96Wf5%Qgn^3eAW|$4!WAyj!-OZ*_tk_X#GcyGb0&cSD7Jjq4IuK6TC$~`rn8gM@2@XIQLX9Ji5UOJs*(eUD!fXs=VSMXaAuj1<;{xh2u5`V?^@0bA zpL68FAPOy9$WlEUPW;T2C_b5o&$FCF7klnBdSPEQyum}IhJ!&Uqejy)@V}8c%8v@J@p)Q`SvwK`yh|nSz(HuhP z84M$GHV8JK48hpNm^W(lDOVgjonA~Lslq^&EQ<%f!TLi5YYPT`+7DGk3!_I*J}nAk zt97~CaVZ4SBIQgCSt;W5NKG1RZ2J?1s{u;>|5T=-#kPT~*tUJHY(nUR$ z#)s=49|?r{Venv#WnybeL1=6(ND^=eNEo*79omr>1`Nkf*2biKw%VKbY3B~@Izty; z1QFl&Q5c6ph7g`yNJ4n_BpsoqTNKzeOH-U`hX7ugZjJF8NeHwja|;Vkn9aTQkG6h& zx4n5f&y4*WT&L_!@ttKOw8Nx>W-(L(@;cMGCi90eg=K`4#Pq}qWhQwRB7|JR&oX{6 zS=Y>X&gwS1l$9vL)ynb=&dxxlC={2p$4-X1auPm%2gC~FVD5@(RKF|br%r03)G(^g6&VRQ)951O0u2ACIDo2zTOJd#5PjsJKc{LkwV@;qcEt!C^Y z^n%E9w6DQDMF-+m^Moq1P} zv!w^6G};{K?0aZS+y9@&w5{`fYT(lL@Nz_XQ0zMboEt7V_1^^cp6&Tq?5|51$`-r5 z!yMc9A;>-gzk|q2>4Nlzai9;muWv(c8hXBqO3kiSNhGM(*&dW*usUU}R*PM)H;Ei9 zx(c$HsKX8;fv6#U60F_<%W)B@kKgKdUv3zGZ`aC z2F7&}dLg+~JP?79ofzP;JLxw+0?KZPLS?o39e z*?Z$Ol8l?>j4B(tnh=hgW>OK=YpqOId5#H1x0ZJZ&K?8Rp*?YK0=S P{*lZZ=C=zglOz8ENCB*V literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/__pycache__/hashlib.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/__pycache__/hashlib.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33f42ff00b3a231bc0833e15256b9723d55423e3 GIT binary patch literal 4609 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 I(ePjY0cGZV`v3p{ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/__pycache__/public.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/__pycache__/public.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eae73a1484aee6819d63c5e85e91e980b5443c9e GIT binary patch literal 13389 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 OTEgGu%H_W;E&LY_5HGd> literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/__pycache__/signing.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/__pycache__/signing.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ed171f0a13b3baab2d93782059d1a58c563cf15 GIT binary patch literal 7934 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/__pycache__/utils.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f795a3f15f829973280791465cb6a098f7cb4d44 GIT binary patch literal 2646 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�rfi|m*fUBNB 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/*-ywP}}3vf=?^^M{SQ!4?fPR+vg+uORk;1eLjWw z#;4mB0gK?XzthY_-tiwQfEbc zwnf-BFW$DTl#8XFvh|Tk3-Vw$Z1tO&mLHlQv2ltj9XBb^LRqIyVm6q+?0)9_ao;1{88+<=L+ZJrQK8eq^3)`eGAY&{6Haw-HS0arAcyQ;LmzM9V~LK$EIKKBDEK`3-h1w0eV9f>wtn z^@@DNw*sveZAVREjtADD`OpeQBgIuF)9f9sNi)Qc=1OVec!=ZkV#k-6^5s3&S#pM% zc~(cBHD{XDS!lJNp`DVv)~dzTgOWnLtT_A$i7L!ZbJF#=Dne(iU zxz-%AZ?@Gwf5)M~WNJlAXLc_AHGJt(#?pDYM5TR7_`i_jr5ry`GK*_+n`xdkZI#(& zwXd|ywr19hn_+bnrCca)vrsEr4H1t ztpk&4?8|rSS6`QcFl3)UWS_?%yTvv_P(Tfs~(lQhrX7@^g}0^Z8b9g4rSEbov&>adz^OG0Q@J z@{+O3o0Q#(6S@Dh*~d@X(~c?75Zj^!KUXY`)DlW_Viqq)avwUQy}ja^Hqlh^8<1ooFtDT?DPbpjoC;pBS_> zv^=z-dqJ`y3(bi(RA(b;=O=rR=b*b15Ju{u8FDRW$hFkxSI}&pG`K}8*9B4ryYbD&w>i$Vlx-s|vcG%7 zW!s+?DZl0TcHpb;U&y}j>kXRh5g$S`<0BvO4WP9f>|_u5HngF#Dt5A;d@I^eSrtw8 zmJb?yW%G`;22J*yZ$UHTBOme2L~AzK$)5B9w4t_N>|}rXCbXe=wfi5f5v_GN@3nS% zq#S7Xzg9oZvPR72x^3jW>~WuY`Ty+xkp1ur@cr$-re)?}pTTP}2ey$G*+)O>`Ja^o z*>m4<#prV2L(4K~vL}Bgn*Mso{`?sRJK3w>j;6mJvTuJn+R*ioYt)ODX7H7L{ZkE^ z?D20iXb!X#gC@TLkYv#0_W&#gtqe^uX!3gjl7ERDl8>ZMemkHKO@AJZXuSqaep?`d zHcs;#^p)Qk=rL$rXx#=)eutpTpvi9%gbkV{NHzZAAju&%$D32sfy=X;f|3A{?B)}%Z;?ausku(*ewV`SKI1-d^wVypSK*;2{ z{3b&;$L|ymt$oX%kT`9XdA2-kKADH*mq|}|YH}8b{n!>?*{|{w<|F-LeLs3H?FoW5 zHgRGS!oKV(_Ce;mTK#O z!bp@bVjl<0LieMWi$>TrvX9U**+;0#GRvx6JUa?!#OQ?DEkrUhou9!m!Vw|NXxRL(*147;S_xl%Jx>Zwt2? zv>LRaLGz=nHE7LfEe5R(t=XV;q6G|E1g%M@$@R9(<$9wf@qOq+GohrT`_WTP{6YTR zW*WJ7weh9auhYht=1*xSj04!2G|1Zd6HWzt`j0w)v~q)1gXS@4ezY>3Ch2NMD@9v4 zoG#`8wiv4prYnnasxe(uC))gGlyH0%{pttOuxMp-=7hw;p)n^z&gabBhl946G~{`e z{pv564%*J+o?U4!sIknc8fW^KX2>Bq-$HDYt{;8ArDzs|R*9w1bht=0NMzX;Oaj&^pj|h+IIh1gezY>Qp=&DnEx#R8sigaNP z`KO#r|JC4cM=Q{2g&1d}<)ba*J{qhSwEIu%&ua5qBjZ`~zR6qOe>0QIx40)Ml1dHX zdaL`@dn5x!>KiTG{NZtAY(C3tHkXY(2SqC}m>->l7h2h`?#JKqk#mor^`O~BD74z< zlKWDpB)P~JbZ@Lq*`nQ~uB%F%V-1Lc`*^}&9I<(uxx?da zUH+fP+=Q|Io0(j>g(mr*atir#Z@+r0Bw!@}>Au9q@h1<@TQVn;XwEQ?Igc`ZDF2HI z&(YAYGDWR@B>z2V#b|a>V)-v|SEHAp-z#;o7PmG=8kxfx86(Y+xUZLMzvW!i@O9`Q zyyl1bT@i_Atn0vxsL6El7S|yI^VCzRAMw@tlv=w$C$7rO#PUd=MeK61QyTw!-zE!_ z66}(&yIpCd6lx2QC{kLFkFtZk{039?Bm4$P9QHQsTd_}jY;?KlKua}fJ!m$A zrkuug*J*N%QqhvohUy$7t$xWuSI~D5fse%PM2kK;y1pz#>oaJjXuSrl5-noTd}uvr z`g@=Ot=pirpmiBE`7NrjF1$3-7e?zub4Y?2A6y#ih&%Z+$}x%mi{Y`bHa}x1b36&4 zEAT?X7Prjc`Ex_oH1(_3Nceo5{3}H3Lz_MvuA$$gyFVuqF5{rnbiHux`9vLISf1!t zcaPOav3i6aYOEfi?`rl^6G^9axE`64EZ1*6zTHpqnWnespDFi&>C>U;wY;sz-udk4vJgPaHE8miVL1k^11%d(KWET`<}lbPG}c)L zEfp=(pk<4IGH8v;YG@WD3pJR2+wH7gQ znr(G5JR4&&eReW+YtGCqZklPFa1qf|5NA1Q+jICH8L98JIP-OL_HI*+wKU)ADX><| z;6X&b)y?2_j7S-9$UVQFuyda4SLxm<3S-RE=x51TB%eR!ci_r6_M03tv@?eJ2x+OW z8?%+6g_HXumlLr+|Gy7QlA>LI!V3}J(6tfGkJfI`n$g+}S{qs`n!dbuq6H0h5wx`i z&B8=`i$P06Yev(Tclj;6fWgj*)@0BM(Had}DOv-XzPwkW`3-hHw0eWqfL3SFTF`0@ zT05H0poP(Dbefd+UbJeoILrIl@s#&D+bHj)XL6sl#9iKRjjOyfME#0Y-4%n zkXEj`INrx`eYuj~A?!71DQ9ti7&JRtk3q{u>o#clXkBRf@>h%&HrRR4It|)Vv<`z- zhqfL~U;diVLI%4aTDw7$-%gbL(4TKNS}U5q{6*1%20L3Z_lH5tKx;8*IcUuWtpF`x z(B$_Tn{=9;Yf_HZh{p7k);`NPa87a_{}&|Z(N@cSUx$sHzkV#(geK>|zxbVFwK+i$ zO|H-NqEVmKnC8ly9CM&mmW6{8XN)gqC(jxFJ~#Q4p*cESocyz#O?&sx|9Kda-h9F+ zAq@TXDn@e~G!I%an*O|&q7@mmIF+F}XNsm5Xo6#gadaVtu7EPb8ooGITCco!dgEo{8(vHb*dsd_U zRc_vqHc=aQkIeIF?LPxxv-zX3p9yJWFF6nSEzr8PBlGkUhx{&RGg@SHd#}YY((cZZ zzIK5%lwdwn;$X~eSQ8^lU$pDlLU@HQkIcVhqPL@Y(5CTS+WloFZLXQZaM92jo~f_D zIoJ>A!?qUN=frm8oDF?{ZLT4YsqK|xrY2Ul^4#>tUKxEYi_k0vtqe^uXkN4^>Cl&h zTC_fc)`-@NHgwIUT&_inpbcG1BrR{&qj&3c$(wGpE;Ob;V)X=h6RRgGb@hQZ{ylH- zeEuS~gY%-Xbyno#^ualMJBMyXfCuGG)b>~BkhJSvh+d7Zzo$#lmKwB5G_OIE-y5zpX!6^`6$VXyhqxSVC|@N#@|(mS zwA~~jTyGcGTJ)}%{~j^DFs4V*C4RXkL-PdkJ@vxD_=c`U4q7If#0RwcV~qI-Z-Ok> z95o*?H8~se5}f4v(A|pFJ=$|aCN2h_8!{UzQyA1VgU=1cOyaD^Ps-=@B2Y)i;-qgA zn*(vtQkYH~J^z5IgMS_Prv587*RJ)8v^ceAmGbnH(W!m9E>5YdQWnsD}4cWkgG)mAPI)@?P|+uC^snlLJU zZB5+BdQNSf$Vt|~IP=lcMpAzo+DI8kDhsuZ(J%W~nR?BzE(^c|JPyc*a zo98yo8oZF4KQ>$y?VQ9#@;3V-$~R$*v=8K@whs5C!Cofau9@^?c@l5Sr>sfdmf};3 z&oZft2s4(qhW0E~7J&{ENc+IESf3C)J4oil%n7L0|bw_6_zPp@^y!rK=g<;=mg5m7Wr z-_fF7F{s%trYxdmigv-EmVs7kNJ|b{iB6ODrU1>2#^WXJnp~I>t&?h{z;k$Cm@Y+0ipnv|*?Im{do8*}t z{pxjF+7%DkN&4lt%DvdV6tk25jLY;7t8Kb9Nsec6-2N$Lc=-5yju&gke0MtJLV$SQ8`@AlND}25bfG61 z{QJ->1}&uwV}oW#i*mkKN??2>ylk{m?4Hz=K`kH6!tc-@EOj>@u`5QicaEe-%8&;w z9gU$UH-y!85%d?k%%HV$zP8qrn{S}c&EAMyEU?fdTmWK$;fXs}YYb|z} zU&g|u?4E-zX=*}uq8}*!d?c(VMbK-oFXj7S zelZ@YlJ-H`E*8PlcFj({dT6|;#hbB^{x3drbk{Zq%@Xccr7Dw;q^|%?F=%eI=vSld z%F+4^S~Xg)L90iL7_o#Z|Xk7-a2Q6&Sl*_rFb(-W|Dq4q5L(rL{wonGU+ zbQ{-k+Hz#sxEjk!^D2`KcMoCZcEz5pdj{*3rD&ySTHSWlpjL-gtJCcGHlYR4{>69t zFm}^wGBz){fZnE6j%V^OgiYDE{pz!PAIx7ad6n7p(D1B;93Tz+i(;#M*RQUR7J{f`0(gGRysJ>!MpydQaftj$Gea~mV;y4NI()m#muM5wFy_YuC34+Yq+(!?s%4p2hokrsX5@gO-g}YS8l0N_1K(;T5B~b($oFWGUq_ z|L>)ovku|EjI$Z7nODkCaLZxt)MQp>Y`Fqx*6VM!zq{_e=~ide_+^PT<5pT$nQt>G zZldZT-f-H0dV+KY40Ywm{Tds8kf$$NTM|y==9yt_<6kIYzGU=oTS*K-N}b@M0b9H0 zfO?d~!I)%~l%17k)==r!Uz>YkmCEn{dusBjqt_qfUc^5?;WecX4E8lg(roB&$Lbi* zW!4H856I_Ps}rX2#^)(k551Z(GHLMr@TfGldk+k*SJcWbbxM_)wJ0USrAgW?Y11>W zq2G(`k$jhOT4lO~%6F>PXOps%&+$Tz?;^+fh)*$^`@i^9a@@;teR=btRiY8C_K~m~ z&??Z(I;{n*98KG)ccceGar@gO-O@gr-k( z5t`(O-nR_RWzf861qQ7aEnlYx{riyq(f0-OY_a!<=M1mK;C;sg)AQDD)?h>uir`ccE*`Ux zX>;~Y!Y?8GB>RBc&v#v0Lm7^(!`Iq1X{JnVTedY*lck<)B#c(Vm>}n`mDO0i?~vGI z6+g53P7bffwsF#cx?%Wys3*ss$1}H^wwOQD`aEe&78GU-=-w&S@|$r2I~vMb)RFZm zQb%31wWhs{^pp@*%K-!GdlvpE*hYO9PGEs48G8{KY`UE{=}C#c|iSptgPtg__X&PwEo&jR+i9Cp&pX?L;5_!Rgo-@*Tzcei@84!8Bq6$ zg;OK_k!A9}eHD2SN-%vkx)qUo(1lM~*1+%>T(lCjQZ)TosRFIUU{{0YHrV;miqVGd zBWYKf(Ta2$(%}7%?$YTJcNncer%AokigW;rBlHMsJbxRs% znP??wr}JH*Z(OQ%JqP=3c^qrx*onjW#Cz1SJs7mcxrclr>jqof>B*(KspouxTPpsJ z0rl;e{}$~b*DLlOe;zY4cW>p=Ykl|-VPzdLpr%VYnbA3&^K$UD8$BESMbSt41KJ!s z0|S-{jPwVF-rGpOp8hsI^JAGW;W*GzjwNr7=MU{Z?&sP`9dq;P12(v37g(`-LvkBUDn%l8{0MEhi1mSp@N^|8qc{gum3~ z#oVM$zILEDqo+$9ua(=sZnX~(8SDda&kVPLT3woc6Z4h*u|6$f%bPq>F0;|=(Chd< zT+T+;QL|YIo#R*`6Z;bElLiLV#;x05H)NlIO)d7-*oUOCBi?1QrmMX8`*7_sqL{U;jejOE6-<0w-%Nk5HS5YI%%B;aT zv85c(&x@*F{{C;zahkC6V@LPKXgBIP&U)bsQO*P zP*`Klb!uUm-%HrCUoT-q2&4Y`sG2sMo{=y{(lhwZ$DdmXBYPS5&ka%a-Qh5_Hc{)( z6v)_s@l0&L8Mf5hG97Z;RS<^drl|S{-{m8DRf85m`=^CJw7fE;O>4_z>+pF#y4o^! zW=Xr$L0BcrqpCK?LRhi7S!)xt_s~wZy3MW3B%&}8G+05z(viBHIkH>0W~1}j(5J|k zwR*e=V19dRV;}AM6IT0*sCvXs1Wp~LU;j0-ra>FGp2YRH>@@Z%Y5CJcSi!$VRhQI@ zBVlR#6={10G20yLC!b`kFz=MQm9QlL`v|M`@u({8n0%z3N~z|*C!*@5B5?o6I#Q?1 z?bGuUyDW~oI6iHR>oamL+8Rb}on+eB>qE49Pr|E|@SdhTC-H~jdXIz`8`DP;&2J=a zt*16ve%c8y@kaj1O$3{N$6Iv|E^8c_pguFkHq*%A%InT3EwnpmS?w zK+dy-u>K!=UmliK_5FKZkQWe9aKM4VS43noal*N9LL5>uHA^cjBP%O%N=uW{)MhL* zODobc%LbarW|~aPlB~#VqKT}`Xwd4L$o;IfKN~o&z_)v!-+i9@$34%pSbOcY_S$>x zv)9_gIqzY>t4C{Yt8JIxbN_L2-*RL;O=yV|_p#D%_(mGmF7PSTYer{nzda3otKU3Y z^Kq>{ZCl;=RR7a{!+s(#u)5*jDXKoPwb}Ks_wA!K>4Ek>;LNW6d4bwGLfR+WxxhaW zq_D(CH`H&Qxd%DWb#(X9ni2m}R~Wu)HU2nL%|2rzbU9^5YhDhu?W(&6b>qW+t0gpW zeQ4w3L&o<(=zC^@eI{BETK|C52Y!niFdjcSYJQWW^M^j03T*B%?|jO=Ooz<){YPtF zueDFxRJZr3>wD}kux9x$eO~~5yFWi#@9fEMY`DkS7fp?`-OyF|<9peXnGkbpXrrX!zCfxtP>YCu%{=>H<>-$0ddka7P zMBc4MUSobb1NtJo)iv9~ZTsrRug%gT=^q<7+N1!jiO?Ay+q~*#4lp=2< z@-D4yv-ZK*+H*Rc6DEo821W(8OdqXIi!})Dr~KAJ{r_e>-;b)UIVS69z0Y;$g>`EJ zZRbdwtOtJCt|7DO|IoE0t-9uw_EuNjdZ*53sSDqtD{9}cF1f!Op{r^{wfQcrU%UKt z!PkNV`v*0CKQf{3AoMw7s%uKZfa~;W+(f_dyOd__(>F}-EBqSw?9!GI@@|H#_0n&F zeUqze-=Dx*FHhEbG9`}(uME89NMqlUDUaJ^pE3*i*;A@(e&l+B=ZN|)=4g4@{~hcH zWfg*$!^ctjEM+6gIj2?E1bBh9y?(Kw{&*}13M_BJe(BGH&{sO6y5{0w5W4TlX?%Pa zg#`8uZoEH5-;hH1-?`N_^P7y%dauW}EDjBv658;+hAKT@xDomyF0QT_DE)*>`nw2u zLoTVVxlc0WYdCAo&PjMLf>#FK&zAQBcsRV1w(SG&{!6QCQbbqXGd90Ct!GrS$T`x` zQzHCWLLQ~*o*`)s&Z+XN&6zUp({g-g7UvS3ap&aqI5{#@xg5wHy{x(>MAi)|r{@=W zl+*V}hk&&Ra^KFYuK9ywqW=0+&n!mD7bnk>gM#`iRDHKK4du6^{QV26-Fs@BLynez z>VacO9Q6d`$*u>dBqDzR@(By8YqldT?b7|)NcjzZ?a>e(xI!MAc&{sbHsr8_Pk^y%CP*Kr1D=MSt&6H_&Y&KilR#G9r!J1b=Qv&7B>jB= zWjYA1kdu^ZA|9;Mj zx^HMpKh1%B#8plA=@Q7Th1_h&UFcrl>HbRNv91XiLvsV3Y0yhYg#}&}&~o;vE%V2< zoIMQ3=9w*Lk7}7eNr|Nm7LmazzSDLso-bTeUGr#doUEI-{NgU2(+B2Am_U>Kra^sG zS?8Bo(6{}j>YB%E=Y7BRrN%McH;it%IwJ7ekcQ)g%vHtE6|=6orgLq~X+qcfh`_^5 z=sF5rRrgez_u4eRV!e0Ve9!ernJ?h^277H-n6xYVcAP8STV1oHfqQmbpXCPLgYn(K z(qU}a0O(o^T}k&>*L;Yy#QplQLHDj%cst@LLo6# z3=e=y@UF#htOiO`I>e}ayZISmG^2+Mv zAxq=dAIRT{{5_nbbS|hDw*q#{M4(fZ`ftK|%vXddnwKCLi~CU>ul(C@cc=} zlhhG|{6gekRU6ale6?=u(!R{Vak3pcejXU9@o_eEy|K5tW@GJI)~~&FYgw67z7)4d zmfxH*CQN+(X=(3ISZ~O@``^y*u`X_EpVk2?nr*=O?V;+L^JQH;y5;)dz_Wv8O+O8! z54?kit81Q?J*KWBb-vLtQ`ZOd--@KbO^uyF1bo~wgzHIY(pbF&x^tXkHLu9wgpQv^ z_e!G?4g&9vX{b*`n>oMR4Sl6C$7;HDLdNKpTLS`PJBb}~NfigdugW-9QyBz8*DIrN zuK#6_oMy`!sl`T=A9Aebu*|J^w{m5`$+h3d(eKj)-V|yM(gQ}IOg(Fi{_!YZkaeu) ztrqq5m$nf7QvV$A(@#BC^RP@VTK^c-e{Yzr|3<0*tYbAhTGgxHu4zxv4@Kqbll5U? z^Ze_VF}oY(b1pen`>urKRUmJ?U)~?c%l69)xf|J;`vVxS{?8}%{U3?Lv!G|u++(hHJkycC1o`>M&qrGBfBkjrIBa$BuNPcVYyiZH zQRWepS;R6o$@_KnpSL#hT`!572T`^PW$_dE(fW6D>M zpU?V>NL&4dqzlQ<@#ANb-cG*b$FCa0`pGXQZS@zC{*>*{_2cJ|ZcBdg7`J_yA$S~e*8kxzN=0D<@oV4NoSIee^{#>YxP%+HgvlMrhGAJ z%P%5*g!d?c2+{uObqpZ(+yp#Drh{pq9^ zQGaQMTfdKdhx&_Wxb;VnKb!i?M!Ng2l=OP?3;g)`q|3-p_v8CWJIjsz75cG8$FcoW zMmnARLO*^1>1pI=`tj3AuO`1rUt+7%UqQN<{31VoA?bbO=lJn6NoTWv^V8k^n@)Zi z`8iYF{p%w?WCiUX=I-Az(gVmZ^y3$h&L=<9kDpGui2SNdxBd#!@6!K@BH6y##(&Dl zA54C}emDs6b*AB$lK=Z6ci4dbqoN z4*6ZlFFR=Lv+b+Wmw_GU+I-W#s=4G3HSMb)|6JBzMB28mko4u`=lJn6Nk7W^OZC7V z_Ot)e$q%#b|H0ipANlLa&uQkiFM|9-b4~jTzjK#&$iIp0D?QQhZTpK!PiFb5H(7qV zvA>A?Pb~i{xBf!%AGG%S>CYtnBKeLVze@jMg5!M3@lo|G^$%nJlV8sAMWk)}3rYWE z>-Xbll75}~GoPV;j=yyBorS#rLk!>QuOL0`O2eu$EL1(tFk7-{f`LkKx@he|7z}Q=C z$Ioiozt@znAiop+qlmO^Um@vK8{b#5{8UrEfcy^R=dW<{^T{7T{po)CeWZh||6b!R zA3^>pEML~&@NN4_NzbwI^)HssGVLoSe;(t1seaT4&N>T za;201Hp^G_GyINRA6JmBB)`ayUr0Leax;E&{P>xq3+?!`eD2Sx`kMMm?f55MYd`4& zcKrMCb4W+5GWAFJ@g33w$S>_f`&fT5>DlDx`|)#0uP5K<$B!UgN`6^yxBgPn2gon* z{H`01p#lV6qYZhr;o3i6Bm z_=Th+uH*gp<7bl2B;WDlSM@aY<&$4by7vB)UQd3mA3uk5Dftn8e1~)u`K2eg?JFkj zyWX@v-}2eNxujz`zI~R@{*55rkNmP8ZvCaCv#GzpkDpKaWR_3&IAW^qJ zDI=Xv{e^z~0@8)#XZrEeNpB~=D%IWo3ewA2e~}-*kn}y|=lJn6Nmo$6pYKS%w!e*7HLd&!UR<2$5(BEK}*ZC^3zB-Wqr$Im4_jeMUUKZ0~2=idnZ zM*xV=NgP1ruV(quB)|Gem)iRM__?I3Z2f-x2-3bAP5+g3ck3@DJ&pVVKYl*xLh{r7 z_&(C5;tho%~MJ zU)9y{t^Nwqv#Gz}VYmJ=@*~*4MYG-dOUXaL{X=1%n_ox)}M@-M%WHp|2)C{{uI_g8Y}M zzlgMLUm@w$Y+sHaKa=!!@*O{ZRcBLQ1^w6e0PBC(^nV5U#pLI2B7ckFmyusZ{e`4$ z`wB?=ZZYGlY`iHS{k18dPks*h>3-#Xq&x6@t~i1Ft8J!y1o_)JJ_|dM|AOH=AH%PTGxT=yi%Hw|7m=OcKp0<%D3nFP!9RqZT+@9*GCTN3R`~+>nFdMbS(9!m%8;Aksq>#@z1Y(4(W9A zBmDRd=>^nZwukz!WdBDS`V;Gaq-*=1bSdLk!7P?%{46AYJ^A_PxcLR-53uoTC;88q z`t!+O&GB7&FZmqbx#a)E_W33lel*@Kkt>J%Y1V$yw*3z2J^7~pim#-8?(eHQ89JN% z++6bQ`6v0a?ETqIKKrkXd@tv>LejSW0@7W`&-CM`lb*==CE{-CA7 zY4{Q3uebaKCwfw`!YA%(mToXmf?)=G4MGQ)gnb|88MaSe-H}UP1(C}>13%EpEX=6Z zDe7wY^8SllruA6A8`3$j+azrM&gF)-cKF5^n#;Y~`i|9@_D`cco`$PEwjZlVXW&~1 za{W!(Ya42^|DXF?5pFGYH!Z_4mSqu7CC(#WNW7AG9q|_865<`i<;0c5M~J;1Q%@9e zB5?+B7V%W#JmQ7KD~Z<;Zy_!r-a%YWTuFR{*vq&QMVv^SL7YWAl{k-hA@NG$b;MhU zONe(6mlIbKA0hSz(thGZ;tb*};;F=W#0!a660alPLR><;gSecylK2R*w;AgvP9)AC z&LW;loJYKncqQ>V;w{7_#5;(~i7SbZ5PO4IKXD>)25}bgRN_41g~Tg~*AZ_aE+O7Q zTuxj`e1zERW&Om7#2Lg{#8Zj$h!+yCBwk0ng}8)x2XQ%ZCGinrZ!qg8P9)AC&LW;l zoJYKncqQ>V;w{7_#5;(~i7SbZ5PL&dKXD>)25}bgRN_41g~Tg~*AZ_aE+O7QTuxj` ze1zB=%KC{Di8F|^h^G?g5icZONxY7D3vmhY4&rj+O5!8L-sY^IIFUGmIE#2HaUStP z;+4efh_?`z5bq!^C$1zuLhKD={ltmH8N^w{Q;GA47ZR@|UPruzxP*8IaXE1%@eyKg z3)WAZNSr~OMLd-_k9Z;RO5%0ITZl`DcMz8oR}vo~_J*^5;zZ&M;w<8+#CgOEiB}S@ zBi=$>LcD{xoVb$s2(h;%>nBbm&LGYro=TiYypVV$@jBuy#3jT#h|7s9iH{I_Td{uP zMB)tMEaIuedBh8eR}!xy-a=eLyo0!$xRUq?u{VPC6DJa95N8ojCC(#WNW7AG9q|_8 z65<`i<;0c5M~J=MgU?UP-);cnfg}@ebm0;!5Hp#NIZnpE!{?gE)(LDsdk1LgJOg>xj1ymk{qD zE+?)eK0@qm%le5Ei8F|^h^G?g5icZONxY7D3vmhY4&rj+O5!8L-gc~?IFUGmIE#2H zaUStP;+4efh_?`z5bq!^C$1zuLhOxV{ltmH8N^w{Q;GA47ZR@|UPruzxP*8IaXE1% z@eyKgd)7~!NSr~OMLd-_k9Z;RO5%0ITZl`DcMz8oR}zQIZwqkAPafn7XCjd60*gJ| z7}jEL?EK3`a-S1Py|wbTJj;2w@j9+N%lVgYOs-acBkc)fJ%O(q`#iROKYW~i@*6AX zFCWNtjMX2R>{lN*tR6leu-Lzxzuw4Lx1PuZ((KP#n(ei;#f|B+djA{$-|De){t`%v$(PHfjkhg_s7ax`x>Kdeq(wg=bCY2<^1*i zpO*92WA$6ynBLlQesRKc#!(>G^~cq}!R=3t@ooRx`v04pZTEkbv-g31 zZOd7E{po+LuaSO;q`lUj|27V6J3PEEjn>clZ2wqn+i&rIEB|lhY`gsR+4~&1uj%_* zTh4#p;k;1G=eV)`)mXl@w=upg|6k?&@0(x!wtp;ctiI#=$LitzKdxM3e&AQmw%@;g z4-Z;Bt=aDeIhhIWbHv;=MzEm3;9Ng`x_-nD&pWo;lUphx+Hvl=5B#-c$%;dlUw-G2 zE3dq%=C|L%%P+d{uiLdN^FK?MuKMLa|7rK+>8Jm6^XSpL{;8@88}{g<2cP=z z!}HJHw5fX3qfYPQCyBKfj$jcio24(&-DHefG7ls;gs$-get#;}a7voRg7p z##JYsH0}Y`}WN{r&q62Q`)sV zDWqAm7Pr6k)}*YiUC+Dw_1Diz@6aKs|GIVeH4h4E)$^{qo@p5z9GcL&bw+eS!G{NaTczI@X=?_{0-^2?vh9XN2@+OcE5SU-OJ zhsD#T9k_PSp0O{Km0k4aFTbQreE8w-e*Wj5sFfo|ym{BjCx4vRr_YqgYp-2<{isoU ze)#+Eh-Lu+-eb#_U0sxuQ?+QwkdfW)z4!TXTep6*>6BA`KXdcuV+EO+r9rpca{WoS z-uh^lyYGH6f53q3Uk@K{cJ7NWetCIG$*Yg=-@jmZmoDe}A|leitEuT!{rm4NU)j6& z;;Y|%cYKEyE!rlwY18lZg9m%QeD>L2^}FMaO{+(a+gwwWc`E}mYPrr4?jvc4GbKpSN`#%4C$$|OvH=fwJbC-4F#(h5XrI$Vn zzu|_Jt**cR+KT-A!X+o3IQ+6_o_S+;Uf#on+1dNNfq_AP9y#KPY1y*%YcpqVzOY}v zvmZO{w7)NS?zyt|D_5?$^VL_U4T_EJ-u<3?p8MphuLk_|*I#W?*ROvnJ~Fb;-U}{x z;h|4H$q&By=Ii>bUHf2<4I4^^#Kpz8Tea%eT|fNbTlL<1V;-I|r6wmSY0(2;etAXU zjW^zM`hEBP6?)xu1)ajf+n@K!EBimLtn9U7`0yQNvuAI=X4tUTlkdE<_>3MsE{|)~ zD)P$W;&--Ao_zG;7hWh&i;5all;n;l?&yH$Q2L=i{N8W0*?6R%WN_|CgMH*@rW!pJ ze){tDNBk(i%*YpCZEzLyBa&_XW`CCXqUlAKgJ* zpC{>xA58z`{%mjov6Udj2&Ub@ZcobY?aL(NZ7v5p8EoX813nsseID)w736o#? zY{TVj`C_kGaHkVj1(PN&?92r@aiP!95yVA<44pgJ;G&6Ufl)NijFX7F46eG~;L#&S z4Duz7o-ifZ*Q@Udy-(=n>z&@aUwW@z>As{%=gsnE&zw(2k6yi#@f~C|R3C-nE{-0S z;OR57m(!fjZY^#|#^H0dDB^}>>@(dKe74(=Oa$xNMcj}~0Lxqae=1|!8r?*jZCfK* zXBzs)_>|O&@6E8C!_TrFrrEWBjQl42`*I`iyWEuiwPA6`$bYrJR(`RO5A0W~(v>js zCq@NQfBIwpM*oGewerPAzIT6@+FHWsFPLQI^S?Lp7uHI+6GpzzWGi1m`Rk4OZedVH z{+~HkKEKN7|4$=sWaRrJdK!iKhmAZRt2Ltk{cEj!!4V_RpQkn=f6C2PzVt66pJz}b z@^fyt^6CE=!2?aoPrk>>`;Hkw{#>&W{drGW`2xOya7mN;`|PyxRRJd6>HnfRPP^^@ z$oH&#seTO9ao%n~RjQq=ASosRd&$2IW_?0m76GNMEyybK@?P*$nRC6m|K=}&$ z0!f4VXZNx4xdUi#ljA>Tu$3E>G8SXUMpWr`6W&E|38mf`SjUFf79{y#S$x@d4Z9?p-FplU$XLL z7aI8lvwZP4m*Z#JE-UX`X5`y8+5Vs3xAMMuMt-hAjp&d4!pavdG=eWT+5Wi)tbFbw zBVTS8)P6OX`{i^Dvg7|6BVX(%XGtS}POO!$qWl?6w&&t_E1$E%=)bPX{&^?W%2%v3 z@(UV~AA*JjILCTf`P}P_`~lk@u7?_N2j0JS18n)68%%lqA28PFdf3>1%1|p`aFdb$ zsFC%AJeCM>E}miK>#5SD(RbiX%eVWf4{iJX3K;pvXIlBp^``#ko0PvV&&oS@8Tt2` zl<#(tm9N-fq#qLP)Yd)rEU9{ zJ!R#KD4*G+{ZPjr=tGqHTlnfdfO>o`M&R{Juecf+UUpJ}W~hpZlkg zkK*s7{7V`67k;zy1tBJK+}`ARY3g0gso&Sd$a|vwH5=N*tKag&D4#jR$Un`~g`j^G zuXcXZg5{kdW?D=>#iZkZa^O z+82%e3K;pvue9>MMMnNV_C@Cg<*RP1m0xb;_1md_vO*gD&)sF^os~wuRg?Gc>SwHc z#63nnrpfj96R%i#dma|oq(AJhmCt>{=;!g;aTb{NKk=s3@9Z@42~FyMJ*y?}Z~A^C zuivyhPP^@&5kajeUvo+SKl`q|8cE$_G=`CXee zJJ3z)Xm%6=T_b|NOA-|Pa%Ys8i}InZJ6r_4Dff=V*clqocI+8cA*{G79%6`?D_K?pJ?!%jX%RO#-QZNfG8ol zMl|~qEr@@<9Zmy>w~}5-884mh*%;CV)y4gZpyRnaQf`A27l!Wf+!H2JA#p3vWY4{A zKY*5qxIYl0Jw?jt;B@&Cc`12_<2j!9LOvHY70tlk(=GzYiOa*l^_0c80}&E83blFO z@6riGMBMU`AoeD82GJpILJo)zdWebVL>Xm^r4 z4~OIg+J4x^ez*pM$n%Jn2rX>vx{uoyhMIh&xv4X(RsJ<3{+-_nx-7l0GsF|0}`M`Z`JfjF|s}r;TXs zvEoF>`O(us9JWU#yz3`V*a)<&$82al=xH%l(&u$`oS!|ByODNAY(fP-Pn9R+S5(*k zqGgWrt0zX%PJg*|zj?Zz4kE(wNpn(s7&B$fJ49gL<;3*?(Y#|zNjq_UQL=fbmU6tG z+54OYc~0}_mg7L=I7ywMNAlI~U_%Q_X^)d6!DG6mmpSoLN%NS%BdBoXATNIN znwlhI@l7il;BD+@8-Rh=BSnHhXkadXrIxiP6k+poPwP+^ z9;$oE*z!(})AF?rLZsN-(DPxS{u$`RR>$DA$x~DyQv}2foY+D%CE^6lohrFf!ik!X zNE;a&BB3L;0vaRJgR+n=5()kDaBT`(2Pd==%uv6Skd9AoRTnAZ6B*wMA%zqBRXo&o zQ?-AJiaND^dg^p5L)AvDMROt}wSiGTpfe)lP5SxnNOv^pXEE(WwlnEj*^bki2Bo38 z*2bXALR>X#8=9=%iN(>f)7rHAad+t^3u^B;QRfavX|_8v0%^8;9qw;ywtEt8d26=& z)>y}B(?@NHtxQ0AqV||P<*nCa|EAr~c0uV8TKar<>3`Gi<(NR*bk)*PH==!Qx|@C- ziQ&^`ph;(<@7we=>D5@swMjMU*GAxfq|DKDY*{kW1*+#~cPsvl4U;>g^n5LyiV<3` z2mXx>?_qJ#wzFx+e9WkA`>Lh|ZcYED9c>Xk+9qk~r`)CgO*w2YdhPdKf!*w?JSf26T!J%jHY8BgA2Da zWBp87g{gJ_)_G&!!))I!LG9e&F8y!pT%C>55vEPcyCL1hq|*_I+I2ALMTp7m+M2e$ z>Om_ZEb!PDJg%P*!`m+zFEZ+&_l+w2E?7%Ubxv&XRG8$x1?%{nudW9H6v7_ zUDTOayhg3nbnFt`kf@@%YvY2reDQ<7AS zCn-+U1*#aE_Qu=cL2TX~~P)`?BY1k0zaO~Nvx>oY6?+MB5-VJKXp{RHpZu7XA`;Wi(5W4&Lw zcus6M7FF$stJ0%xR>CmRJk8qyqp99_&{`9^qAS{Gd3(BePC~{|WY6?w`DK@kLH4QM zb6nYMf3Jz)nW-uEK6G09WNpmN4ax3L#KMnLKz|IZFirvcacjfOlo9(dmX%?bsE)m& zL;vVa(lbHd?FehJe~3`73V9=}klqmy3e`XLZqQ-$eAr+!Aj&XhhV?h;)6w=YGkr$& zMgNA4FgI}o22fazs=rj!YxO6HW>s3}-gSA}tx;!;M8T7ck}J@Pu-U3)gS(AV-ii9H z6ShBn%m|A{u<972vTxN^SX-A9n-JwVof4J*eFOZcL+GhaT}{2+x?{CyWZTGAyLN!< zG7OG47JSNnjvE`@Q}vFim8~mK*M+e^Au30wsN^h{q!TqA8?h~TmYr5TZ@ns2+y!} z{CpWBTQD`nu?>Hpj5OO2d8ME~fxs7uK{IJ8aepGhJoB95;m zGJUcQj=BVEw9cbUd;Y+^?mX0_@!-+vJiw&U%}(c&P5LU>*m;;qXP`ej_ciI{K1ipV zbR6vJJjSG3z^=|dlkS1aJDc@d6dnvYof9-a_OtOwpP^$l2rH4$k5FG|-MH7mukDVV zhv?Dy9F^=Qk}|aFB%P>lU}EPaQ`^Ou7&@ov=!@-)=_uw3EjOpB8uWz4iA_UbiCL-Q zH`Z2DuNh$&z%gcV|41#rw!u!+`^bzj12c9iI@M=_*glbU$0R3q4+gidlh*aSi|<4Q zq=MDT#MMmrUY9r(>x@n~PR$bdb(bXN4|4IH*jI21x}+&-AcAgJM4raIZy1ShASY70e!ow~ne!MBw7XB1(c9(xQ zUFuKl!s1(Nsi>BS-SM4F`pYn+xvTsLHzYpFXzn>0>B(yDsqI}o<=39r3q*sN36?e~ z88vGZB(qJu`S8vbW+flh24TAe1AoY1q^D}VuZlMPQ)j(T&T(Q-9RZ=yDpXl3R68WF z)QZ*h#)yPgr<$7F^*FH?!|hv4(1O=A zP*7W3*HfBWik3JDEnz^5^So@tR4%))aFyByHN(wl!J2SyDBd)}c zCI5;re2&)jsj&1<-Cff1J~_dQeFV-CK2Ieb#7`rs4KkJdG7)?e`l2k~iP{aj!p&fe zy|X#ed8%Q!m8k1cCw3iV69y^&OyO%Y$Hab% z@s%{Qt?>H`Uu}pT1aEH@p`CcLJ>}}wXG@O!aeVj7VxXuyvI}A*C(4JA zmuh-Hc4BXwR(Fleg5V}8B4@8=?(Hur`Ga%U6A{}IA5;t95-GJ%M{uo$&gc>hV^7Ny zJfb3fA-n_E*ZLRv8;fD%pu6`5)UpDcQxP0I5hpYccof+fd=A2|6Yv~}fk>QNKld@%g zW#>uRn0k!}be=%j=RHBg(IEjT;M|CEs{w~cAXMA78T@-ie*|Biw`~*s zPH;YJ&4kO(gkH2dH1JmbA15bx1=%TJFE(uSjpKcg`Emp=hR(y^$)SPMmVw6Q@thJG zSVS!z&m`>#oQZDBM31NGZN3R@!o~lTgxh=|9uFZ03>E>ONC=bwLVnpOdFeuz1Ihrc z7NtASq_vR26u72nS*u08oRYMTGOPmEY+cr2QE%tjwB|CvY9M?V&|y&@XS>Pjhw;?| z5coO9%5!NgWuVFn;b%zRjuTOFS|@q*Bo7^SNnX(lj`KoVunhE*;ID%Lf&E+IKgy?t zOPi*FmiKU*cSYHkOkUuc;$_W~K)-D1?aP|?0R4)g(TB}@gDkaVcFd-mp$iwhO0T{? zR8s@fzf21h-;-A(=L3Qsq~I)M2ER^1Jg_rLpyLCU;P0e>t8mLdBv+hV?$T0dZkden zUCQ3~IQJsR?@9}e?1CXR5S&|3g}hZ5Fbc$DNIWdWBoJ>Q@wyOafshxyDulQYgcrRP z00p^;hyoD3ZZVeiRJ-t>hSAPuR|^9YJptZ9l#mc6?OXzv4t|?$T!*p! zx0*KDlWy#DT6|&+@JxnPk_&rjTn4T7IFF${d(%P>S>sMZWqA497kdP-sY8+n1b)E!-i!wFtV^ALe)VRT{3@z8|In<@b{S1kp0N#<5a2Yp~nPOZy ziokp7jLWwMxQ*)=fQD9)CqYlH@6$%dqoomG{f*lG1ayk2Cx_LnUd>{W861Q$1qk|w zT7H28p{wVxHVvE^ zBx^Fr96&!J-vMToiG{(&{F>W;IK9VOfZoY|eC7?G+p2WBXCdPF@rER5RiE#@}fa(c4 z6`(QhavRgun;5sq(nTi5Ew=R5Wg6tJury*~f7E@YrMEAO8FME(0hdhKa;0}e#S-=I zF;OoIl@134O`xDgy^Bf6aw-}n>PJ0{&VXgG{wm5G7yHJnH&uF^kysnANDB>5gab+J zI};V14$#;qp8}T8{c3o)9f>tUNbHj%x5tE#*!Lk4Wq@!|rs3gtP`?5+JbcAg*x0uZ zt<~@#KisSacz>jXD?FUaHcEIntOnK#59e3|+~Gk3`wq)8pMdV=>q}P_T5#7;JiG6ROwl@J9`>dQR_Q^Z% z?*oFiQ43?=?{}CACH7qnb@gMP{a&xczJ3z>@CUJPy@`Di<|3>uS`x8uH8SsI<~EyI zh}gH1)k^H!W$LLH`(7efV_(0!Op}y2xgO!P9e_DE&jiA%4n``7z2Vt-f07A=d1*-! z2oJ*A0{{txd1*r=m>dK7AI<8GtkDwnA~3DV8EY5BOOYuA{DW6gIPwnn<<8s z^3DQ14Im-%#I)wGp*1q^bbwVSnP|5R+{*zP?J`ZY+X{N4Jm-r4!$Ut8LSBYkR{dlFLKAj9Z2FomQ33}~MQ&{1#YT%$e@+;ady zgQ>-gdW{uJndNaF_Bzglw9qJ6qJeNRO2~@=8Y|W!Q7DAOimgc8FNDO3*O7Qh2#FP+ zBk>6!T$E|7_zTn#fX0f?Ss8+vUSFj!Rs=|U0p3bVxMIaBW=gC$h9a(5vCbOcjupXA zvcJWpC&8xrE^R;2EiT<#TpE9-;pSpB6R;-RiQL1o=W97QG*&plU0IR%?zKi?ecvTl z+|_A&F8CS7L+xk3>pb)?FlDKdk(MIkxMdgy89+QVBdwn}nh#_QAUddH-8gYO8hmP@ z4^FE-Wj{q;=TqN9jrvpzvybWxZ6^TKr&^eO)L76X0pe3F-9FXI_|!$S0qn-szAs85}T5;FnnQw2yY5kh=w zEfR%7h)+F^#6v=ePwhhDO+dIPQ=j@4)Yky@sf$^e^(h%ZI{zMm#6f^}AthWs)t;H+ zQxfl8K9y(<@bjtRv{ig+ix#TeBG}L3H|A4kv+N66jz0AiGsUMqF$(MX)X8jy@u|;n zxaKuJWk0oF=Tqacwi2K6rs=zi|AE~{0OC{Lv_8=6vZ?>ej5rP4 zi2(JfuT%Bpp#b!J$rGRYCRI-!o&&uNpuX~Ls-7~~`R6-JX2;~SnMr1BI=Siel|NJU z#NaomI0Ohq*Gr<~WqFzOtVA$N5ST8P->hrOIp2>MMaQQ66AcU6gbAN-J=~ z072WxHNMhq62@LJv+7c|Xie(3s3I{JLgu`pnxY=(I(WjN)X-OPkgIML59M(Hb*rIB z3=~4#>J%hS7DC)=4ib4nh+C~h;u=7>C{wq(57fN?b*m|p%zck%zut(t)UCEb;vs z9cQ!pOu=H)X>zhA7q;aY^qI}6UBs(Cg|?3Y>NA^Ddr97(pnnC3&pePC@f!-t0iK-a zZLwsrZhs#%E+oIqivp+%Z8a`*8t4&{Coc4maiJZcpOieAmL5*k!@DGm-~@n9OWTYe z4Ff$Gpsx0a$&-%MwcexF*E03&?lDVd$9#H)v9_n$3fuZXtxQw9jO)#W$}<5$6%1@;Bn*^aL=ZOZpX6?9rlZ$d_F*j{T)c$CWH+8 zVk90BLWcbwBz6fQ!~Pc}egcGxG9C6UBM}?{I_zh%71pNZs7r@^CrESvcrT=cYuLAA z8)euRp@?hPCs+gA!(NSBX?ac&+EbbudOHpQ)VL&6mH<%WMk6so2r=$#B&G`?#$AQP zA|b@Mdyu#b5H8BpxK}{E08ry@U}bPKy>d~P8ut+-J^*;vQo?226U-FjmZFHuxKe9? z+c;gc``A_JZoS@5JtWr2R`n~?_9Z}rrj@giPZt=!fcq05D3w~cRehE|Ccz>V-c^5H zYyY*41dBehuEig0RkzDl6?2CZxtE1AwIHGe4&)-wrU_GQW-(T~ty!zg%=1h&^=9T# z+n>_5?|i!x4s6J_pB?J1t^ZH*oPNR+udHB+)WfNZN-y^%HU1Z1Uv zOaw&tW8e{QaR(j=b~uH@I{2R9j&q&HpBze~O1(TAUq@2s?CVlHKM!{u0;K~0A)jIk zcwK5w$(sav0zkvW4JJ%n2znNvot%H&Xnejs78K4iP^eCRvvKkj5Gnu!O=sQW2q7Wu zJ0!joLPA;%68`|gMVW@QPHo{b01as$v9fsWC!Fn~E)8i3kcbC(zo3LGq^)A6gtQzK zafP&X)&O@%3x1NfMk3GsTBvTBV*e?ZM4kqB)GYg)mg6$z8CGPLDNA}e&Xm-`RKpyvX_XA-Q>m}N>gOPXa$qH&>nA$$iwU8uWpp?#p=kUUwY zBpDYP-46E+pe~ebe5Q8!kz#$wEI(2$nH{rvk#UYR-ug3!(514BOFaaY4*-I;Qczv$ zRT6E{MWax{EJprh3r?N7M_;P(|jf;guG{8H95-#HwGgFK^>Tld?Yk=E0 z4Tcru*cwK6EI*P_TX%p4Lo4SBhW)|q0|@$wTIvPEDrVt9BvZENgw*w@!UV(M zRqS|)7at+J{z}FElfOn+Dw|mNM=i*eN_SRQV>7W*32Mg?VWLQjzBoEdEn*<3n?zT^ z!)3D*lbSA3WCBbZ3y>%hlR8qeW`WGrtlr4d=Yv;(TnLDMfcnI1+<~QT8S)^WK!#|1 zDWx=KEWJD%$7V9Vgrp|R{96d6Hv)7S5|TPl^0t891khzja}z>d2E84i%aAbR`|UwH zL!eOS&v4`H`;hq|Am|;|t;>*4NXSc4-XBR=4_^p1t^Z=Cyk_OJ9XA%^Bej*p)M7H~ zdhiNV+4`A!8l5&DVL0wdk;XdGu2Gz%hv7diW(c_c>*h}{X1YJ)-4XT?- z$UAIzp#dNcr=czlsv&5uSKu8=xZ=)S zHeTY+d=zm7)vL)AORoa!6nWfA<2qWNK1cj2CG-M3xL4!k^~BZyHLf2Ly@U|sCLl3Z z2r=$rB+eH?jJpYm>j2^MP*RP11k}R-HO|90VP}lKs7sC84v7+gw>c$T#&xY{+$kvH zGOo8Zpn;%TN}dg>|4DgGtdpSn25Nf^ph4Bj*~qASy1n4O2MBtHTIvPWGG+xhHf4+c zlkzjFU{D>%Tcz7SxLEz5YX9@9Ur^m@o>U@MMowetOf8A1x*nOgGINT}#52vHe(W_9 zRZkm_BZL(DA6)BV!sjR=QFT|!px1Ewe}HY@0VJyKN*N__qz2?an$;UwXUmHi?GTM3 z0ntI7jI)W`G!|9=z<%RC6JjPCX*LXpOHYhuh`BFCH+QK}+8v-F=Drl&+>HP|6d)mH zbBb%HbAL)yC0aNO+!+9kDG!*KauevQB~O-VTTD#Z0eU+?W6FajX4nJSt(L@rESs4G z)pGqhiV@^_6G3XA;vYcJ0t#vbxt@f)A^RChh+iREc-J%EMi4|5v(qUe!;ZsOQ^sa- z97bTimDk~Q99lU$m~^M*!;RQ>K{P zAFsWNHhGv7_T~ ztOwA;*b9sg<$^u~pl)_y-PEj8_eIvv%x-9oC9`AxzQ+uYbPkU*$I$I=G;UV_l}i9Y z$0(=^qz>{@EUtUejoxGu^?gle>ka%**dAw9bF6eyLI=q@Nwz?DK;vxy9p@!TJSl{X z^F2tsBZQ3eLr5GDLdJQ^&M*!TF3NPA_W+d&&~bhlTVW@(Ak?Mfd>|zH1H4yI!Zpqx zU>jwe$D@dAoIh<1aF25}E{gr(an_+dSEYouABTpDaidY$2!I-whr~HTh;dgTafJ|K z+}%jrA%qzB5)#h=!bO=H_XVi^05vX}m0`f?^|dwb4@mq5@Fq~gW!x}kig7jm#^qQ8 z8Zd6HanZB3Yg;c(SHhy^(d1tU}r&s|_H!8$+qY0Cy;bojhW0 zo`Y}sYedbY^Z+zSF3-lq35=+tQ}mpu2b3lQbZ<90AP${~% zODChQ2dARS*8S>fblRLT5O2t<$%V|XGr8kLn%u*fyc(@r0Z@~B7?bY-eHTDY?rBUe z0bLAGlhbK(511SVg=%tdV{#dUb_0Soux>T^ArkUKB=7SiTqf^irZG7Wp3&WyTtG&h z$zxDu>uc+2blSvXnf;mW&(n8%~R2{S-(xz&2Ab3PHTYn^moZRvpxj+0m+l+7nRAn0WJmoB0y)>?@gZU z0CZ+OU}?U;`-7$V{_c;K=KH%pSsI(>UGI6cxBBZ}$N3iCqIa`{xtkxO(hmSZ?@>_h zX7Dd0!8{R(cp)U1k3!-kAtacehr~=kxG2+Lz5>)W01f72*ovOC=|Hv_zr zDB%j`AFz!Q%pXD#S1|wD8sHA*YFyU4#%hlv-xR4%4!vg*8Yx&U>lapNH|7T}#s372t~ zF;k3Ni6SoJ3akMQ825(dIS-*d-jvWQPent;xHC}MRDc?{7>NZ!h;g?fakCI&+!IJ_ z6GDu8ABlGX;i629`wi3~fExEMEA!E~EYzjOg(RYGfpSW?jQf+BV%)hX;xf+5v5L(4 z8wI^{GcC{Aj`p-k37s|>4He^}P?`KTT8-<6L@y!4xCuy%6+(==7>Vrw3!Q1K`rXfFkI4RL^k{0`dtHwin{EQKod>A%@c z9w#{%hkD7OY11(3#iw^d;~N0=>F<&FMhNlg8YKP^LVP+7FLieSs864W#2`SpC{v%F z2}(Yyt3DmTR$!dy^(PEbpDuvJRRC`oC0suJJTt|o+oE|cpWa1gLjmh_%X0>xJj7%qqewg?gc$cG60Zs&#(jeYwDYL>P8K zAguo^lKdYomS(sBq_at`|*Gk4ld zykPG2u+j#$KR3%MsEIih$HkoNGfd36FL{8(oLm?%10XTyzU1+ewGiZ7K=gMkETi8Y zIxutX>wrg|8YPPPdQaU0@-b&IO3X>t-{9T|ZL0wqCFUe&N|e|NdJ{mR#3jjmnqwZ2 zUusvg<^g%WS?}(F@LK>qdA-a8j*wI=?Icf5Ugw&?aXIqjjd~3n^Gx9Q1oTIeCxK(W zi3-1gJ_yjjvB2cjK1g3^BZoOUy4;f4F=0#15VcFa&C{V)-s8K~1d`T>Ff9Q=5fs$r zYch#=bmh$`f%_k@1jBg{^N))ugO`|UJdS)cvmiONUq}%SK|P5aM<- zkvLNbak~N}t`I`pt_X>ZfN)W!ZubhPmjLQ^Yy4~)hq~15-hsp}fcGv+xZG|O+bA(* zHj21n%4BPR+wC-9mRO$iGTL)pa_E_7qM>5kC#dWrfExD~5`PFG#zpkNQ6oT&>xo3N z5Mta!B*p>4MVT6x4{8oTjeCKW#i-+9?nGT`+)7BS0C?Y^gv+?Em?_4MLJ^m7Rn`Ev zaT-%{*i|;B+?8A+)=5mc6}1%tG^SX&Ft$q%T8hBk2nd=^EsQDO)5j#H{I0F3TLkT? z7gHL1k1v3&4S`$g8c5DmZeeDu%|xUL9?n`Ns0>y{{gurEa?Q$SO>?{-ZK6!oaZzR` z3d^IOyyO9|!MPiZ#bLrXOh`!{|%*w0ea#vDS4#CA356y18A6-oUG4}yMva` z-0O+M6yx*lMeR~3R3|^pIJvw?G!zgN&AN59kW4}zTzUtQu%4}lEZNL7Ck}5QPLEI4 zLl%dOpjsPVK$We7>S=V^yq1mCpPKBOU`(EE5Ef<^oI{h-lJ#6^GFq1d2$4?=q$TUQ z(p=Da013G#n2?JfFljvPY2xYQ;BE$JJWV(8^jpyTB~OmxdzpCJ2GK7Jpz*Y~>8K3Q z>45gLy^d3n%MKfAI&3l+@~exWO>DV#*wZBBLp8x~l8_F20>yFTWrrU$bfPg*OH3po zCA?>ouwA?aou~0-2~~NVGtrg-$)PXJga=A|S%5akr|vYq6e4k>5E5TDBXO?~56<=1ejS^oTKoM7b zx!oF2yU9XN@L663c{aX`N{+(4*Z2|yp9lnKe6ez__!0?jI3VaJYBBL8asUG|jF;=GmX-J8i$8h{t~>KI9xXx}Sz7i4Td%8Lz>x1T@J9 zh@L`8xxe&$tTiGKY7Qoe*Ov0ox9$i0YRlp1heyR8>hlYU3lSUz7A8Z4C-90H|O5mZS%1iM=oY0O}XNC+R`j8qhaM zo~$$eNYaC}he6*D&~?UPlUKXWIAUnou*l0Le_Ap-=Arx0a9pU>T(h87)*0=MN4*V| zI{-nCQBeJ3Cy9!V7K)qNd046k4l7coRij{xQoM;GTcgxE+?KKQ;|b4t@SSG*p~_4Jx|{pvDy=@rV#&+)gCk5JH^) zdnCRRLW~RUgKh_e%P&{exFk>s05$F%RtD$L>sr*M#+?X>Apq}(lyDjMD>KEoO(^0r z&f#sV^TVq|w;DIn@|?YBPwV8+JMz#_F>X96%Lb@%7a?)J5MtbNB$f#w#%)4kqYz@; zYe>8d2p45)+;^b91gLQ*vof5O>U9q4QsbKSg#v(gDkWUT-O5ZcZW)TWjJwYo;J$OZ za;hRPg7tMyt`h5H`H1RXW}apM0d}hiu($PdoW%eQun(C48(su%?b z%A%kK+*u^#gMHowB#sNXxw~w@l^=6Hn-n_XLJVwi+gxaz0Z_MHhQyUZh}*75VyzJ3 zw$CE*gb?DkA0zPrAY7EG+a3Y+2SDBSRkp$g+>WSA-8MiTxd6OxQ^Mu87qX4wwizhm za@)n$0Jqy}Oe(iL=Pb0RG$}OoA~aNti$G;90BT%MBvOSC8*q)_RJIeK#{GoE_dJBZ+XrVv}bQp=y%q*Rj6z^ zK#kji#3mucxR;T5UI;Pnb0j_%Lhf8O5`P22MVT7s8;F<;P~*N~W!-38G3rv|PJ+Zx zfcGFJT*jqvtcr2(qKNCx4J6a=&gpDYNS>WdzDzptVzg9dlX0kR3_xcSD;LIg=|22) zaHjx*Hc$&^lNKCYGMg-cy85%pfTf7SxMVhI__J5tS$d6@#B_qE36YO8bBoQCw=8?G zD_*df@@~Xa%q+8+n0UNP*}w+om}4088_XP&f7~3i;u15*Y%p_7K8&3MkU3_9nPXOh zyhgKnBkLl09I+APdd=#CtZQZ3c@pGffanFRLLy;<(+(drU_CGYtbLBoKKVSwtb4*R zYA$D=IY|R#?Y;?Uv0*!Z1HtTVToTn9t8OAtsIE=!r|A zM&^$j&HNEI7@J%`(AN~y`QtAV8#=-PLT4Ej$ITz1l=3*E(dDa>LT}E;P?jhZ4~=mE zb<|-<3>88g^>ier2qBKT2#L8uh@-AYVl5zCl&Pb>0O}clI%;cHmPkWRM_uZu`ysIp z;Ekq)%TeEEra0zh78oD#$5-ARRHf9lyDh0uby$I zqKM15Ypelo<1`BSsLe*9wMlP?brOYcM{TzOGzwWcR}|U|?!ADZRBB-q+C;CBDCEFj z>PMmVSHNyu5``Li!te^qw$pNa!tez%Q*5R@VTfd<4MdjGOq?W{$Wm}zWO*1$^z1Kb zj4V~3hXEx3J^M>KS7JsP$lZYGYgt%EzdL3iN?a0+)rv-m0=A?sN?f#%QKG+z5|z;Q zH9(_8e-kC-=U_*XCsAUcJ4y`lixPuPl<0>NT>u&-hL|W(1iDc2BuWf5QKAa;LCKRS zaiR$Up$II20F4qS*|1=uM5ZOPV}3r*9VI@Vhhh>XPBT#=87jH~f_|f*Mu`yl+$*jE zi4q-292X@zvWUky51l+IDfH?27;553nb0@{ppJAl64Ql{C~-Lw^MnvbT8BiT5aLKB zNIVG$7iH>5pMd%RppF#J%50QahPu>|{({62fH##AE=StWOo+)yM23L(bLKw_#8V%!oW76HOVnHskN z)SUn|ZYI0fMu{1yOO1OF5)S~p7gEAy-12(HEk+TSakp9n+{S5?NT)U%CC*OzQLK|F z@f2!%0-#aC%DJM%tKhx_2pUW+j1o`MYa~h}!e8n~iPHZPCHAoFU@gZeafq2YHdCTR z7gpLpl(-sw+sj0W!sDVu8I(wr=w+hBJ{a&JK%zu16D1CT{1Fg+I}6L`KQ2l<+!}A= zYLqCZ7?z-V;ahQ+GfKoJb(3{NvrI4m`WzrOsh{L^0v!cV|L&Zm&jEUaP6Oz30H1N* z_9Gm8$qNeATjPzlj)zb-Am|0wt=_tegnSj=yPt&hR+#OyKEO=#93URgt=cE)bATc; zf*>UqzDa;8TR%`wqtoWe;Rv7l`bF6u6Bp{%ZQiyw55MrXy?OYhx9!ct?cV0i z!-1RK)@m5IzpF;r-Yn(zW>-4B6h&^bin2FLK4eB)_GTN_@NXW@Gr!-lV`)?))j;{W zY5tOe_mat9s>Pa)0Az{yv)hv2eoASuqdbq80wizkh zQ3{8}5V+GXW;-K=JDWl^F$Asyg*GTz8dJENum&N8yU{w!GPpJLrF-rkYTSjQ!>vXL z?lE%;+>Vpsp7sDmz$MvnkQDsNc#2n#Z63`)WzS8gvj>sFy+~o17y`F}!g?`e&+VhI zOALXFwG4s?N|weH?kubVq;RFJGoKwiPG1Vwjv8%HG_|P1vWqzdZWXJ9_T1GT0JxLi zJX~YTD%r*?TfG*6P$$st^wtgO1nTRBCeVH?y&6R}S}QhzrrNo?|-}F z-aVhcgb=a5n%-ePbjqwUmuMxk@A_)`0r%0+-+^TIU0W=kiMUQjpH&E8J{Qu_Ht8OoKX?zgA7} z?-o+&927~nzI86IVaEADM4Oo5L%z=CtsygWm?6K26P;v62zjPC9kP6}^>l~a$ri+s@1o0;ZV4?0sk>`& zaiYkz*SNjBoj5IjNpl~&*O0roRAnBcn~OAk=~C?iLH-x^t4Pw9%Y6DWL7zQzi)SP9 ziw>8&d}SAvx9bXZgYLe@O!xfZ3YV|sT|ys7^OYVhUs;JQpUc!u+tcMMdAx#=g*0F3 zo24e!4eyV&rhDF zFP#YFcc)?~`jXWM&2k^w7-b@OmsLU&!FCTOj~ZMO}Rg3lSxE!ASL-_1Y;t}>lf zKnmB0LOn4At}_Mstv`huLSc{?0ymYy6qGEDDcp-#%aFn~wa$pf`gb>dDcpP1Scjq) zTa6Ih)#enqd8`tG8{z?qfZOPo1$!9J*lMvE_b^a_+d^lbB8B^v!XYsPF1an+87Z9n zAYFkN0@t2GYm_XFDcsFi1ChdgW}Tg7aDC}Z;U1*M6cpWIH9~MXwmSuG46B6T>exb@ zr%d7FY?+_JCs+GP=;RuBHoeV6I)(dsp(%VZOBbTZWNXEy@SE&VktzHvVoTx_o{=zx zC)}@}=e__z9_miCwOi<#OyM#ypJCLOd#BvQUue$3-pNh;l0$7QGFwk{oyR|=82QVV zy4iYpdtQ)ov-P}Ff@tmg+-%*xT64Lh_7@Vme>~{ouHb!2w3qt#=M&bb%JWUV^+J)2*0)YjUzm|3 z6V!e)e3;WY`ItG~1ht+EzCt%aEw=>`JE)W9=HAZ)wIZR#AhmC`AgHRyWiwnfi6if! zx*}Jtrk~=wmC@aV6uD|OeYJ1`_B}|EvmEj~?Ab_>vkjRi1i>~MRODQTyoyS%qDZ>+ z?a~l4GCk-d>7N6j&N!3*yLUP5?QQ&|;9fm9%ABf$Xoc?>gl8oLuVx zL*7=PuNHp9=srL?CvPjzR}1%H??N&se_3F+6x^J=y}<4vxF03?szC1{l;wCYh2))p z9lnOm$zK=fJ%r9Iu8(w1{-!|hA?(54BtE$tyR$&=A$0CQ_(nP>e_NpU5C&jhhjdQ< z&iUj6#yThO^0v*%-+SBU?rL+0dz z6n+pxB6~9VZ44z#WA5S%t0vOOKG85V*%FJSK*~y-8su zN|weH?rW?sk;0{0XMRquNM8!~D>aUwXr9#w!L=}_z|~`w5L_n@Pz2mkzbr_V@l=b| zn8H8>uGppAr=dfI%f`q+3fF`}12F_nesa637y>tf!Z4Jqjmhs~&Bb~YDcmd8*;y98 ze)Vu~P-7*EzG*c=aK&tQ3S2pc7lJEi3yYeQ``R)NWBn^v?Jl8{Ir%+$TZeQ`_VrG) zdio4~3rjymk-^rA&B-0@P?0%#jgBV%E_>tuIVTUawYTV+HYfjV&i&pgbMig5DgNw$#nZD=Tu-r$DcuJDn0l*Rrx)L2oX&K<4Bh0o{vaPTpM5 zLuT7zo!I~CD#SHJ=HyDa$|L#Zl+6W`q}Dl@HBovu>q272|Cp0|5RF!Av>swB`CFPv zbMJr9qV?*6izJ?3Oxw+oPEe~0x{9wS_T@;U=$e9ZTrLE+V&8ytf_mFUz>3^&3r5hO zPEhX_=ymcGDosF%tPvyjTz2HpgxvwpVPf)MX zWlFz<7K7A>xK>)I$ZLE%tSWy=b4Na8$O{WD6uc)H-5jLI3k$l4Zw2;?NRgj*$RA<9 zhZOl4LncoPZlFO$UgD5{pwccB*=T*cG{lV81$mztA>`lvP!+i+htm@ddATi!BR@-* zDJv3M%L^`(y}Ta#9i+%t6zDy#ud%lwMebq9Pt$Bm z8q~eq%OM}5(yu7;hV`w;ADAJ(&>a2Jj1cl(bGl@+73XHB0{8sN7Q~V7rpuH?2`vVx z@)l8{B9Ck54(yBFf9&OBj~H@cf!^#ntqYG}kbaJ(u;5Zb&d1I`l5Ey1(AW9>=UD1n z>d4ZTNK?lKE_IaeAQ+7*o)_go`op#%TDT3df(6S^q*!}56x|Tz&5+->E}3J7Y>3XR zPK+)#nl&CzT;qj=HKK1OtRb~;V-M&ymq6~mYp%AnR@VA!UGS>VNzTxp-mXLLS+>;+#w#jjhBNzHG|Z ztEincwN;y|&lg=-jbqek5NvieDqY4ghbrCCF!*=A&h%|DTOs$gsQG%WH5t3N_~iY# zE%|z_HKH3A-$*0N)_lFzDs?#r57KL`&-3+KD-$~%>9y82=aa9l(QBj2YbmTj$M&)%P@aS%oCwHl$bx3!H?&fek-FLd^H_W(s)&iutx!Vr`!jVas=tZ7K$-nPy%4enj~Qn;nmSc0M( ztVRfKzc~eN=gDx#JwOp~7gh0lZU*D|BR{rf76X+%x023QAcfmT;WII0&mE?4Pz-@9 zdj*F%Qn=a_psgaGMUt5h3+&|_NxY?`{f;-*LN}Q)WnIGtv1urw6vIVh+ z$lw&N4xOEi6s{A6_F@R!KnnfD5V#2x?h-@b7E@S=lBF?)`v7YlQn*{KGY{93z7*~o zYV1JKQC1@aH`km3cRQDusosdEuu1&GFTad)cfRE&cQHGQn(CTdWpCr* z^>lM~^3I(&E88yZ=bd|TE;8px?>vO_LfZrnc_$CVOV+hf%k}s&U66P^UO&^FuyQ>f z>5ypjOE7}+{g_(U=IfPukm(Y*(`{oW&E5F8o8i~yw|WO>*`8b$A-Pgto8MC|-U~2u z)K!SI*osN zYcjGt&uyn(mUk!3z36F6MtZwsWHCK1M4F8BcFD+E?A1t;kv={d*`&!xU!ROfZc-Rr z?UND7P3i{M_@$DY)C;clnTO;i^@HnN=5dggcWLVlf_}b+XQ7XR-}o@K$nQr@6DWpG!Yr(l7RNut&t`ogMDIPiO3D!wnXGc zZ(AaAleaAqx!K#6hz#+zB_g+Y+Y*smy-gxAqPp81J`s8ENd_v3$clWug>o%}?1Lg> zt)eC(ub5GmMe}#Spk_ zC|o6mz>TLcN(_OUPvLQtER8ALJ6Nlc!hLI<`9!2WeJR{FYHUT({Z=CcSGvG$6M-AZ zDj~Sawh-qj)7iCtSx}4dJdhu|>L~^)aC_+NJEU-tKD3Dxt}2BzF$As|g@$4XTyF|J zP_i_paAUDXB89ubI`fH04f;~JN2oC!MTc395Zo+t3S28z3BfJ)07bwZ@ymiHjOWq( zSknazRN$VXvnP<-Xj&(MN z=}X}{QKKV@mZ;`-QV6cPIR!44RYGtLZDCP+Zj@gZv|&6?=Eo{6WS|0f6`l1&3O9zr z2r&fiQ3}(=5V#c-UJygzwov#KB}-!p_Z!v`q;U6GXIX*!+vVZPTuqci(Fd$X2<~}v z3S7YOLU3<-fFkx>C5tpk!4-_>x%}8s50^$~XCj4bOrgFQ0@sB?M==EM77ByK5V&a+ z9ze;`n8Lk;^*mCzZ0pR!t)Va7bMI4QJ&M+}8X>rL<`lRcC&Tsh0KlD`W$m*=6uyVCG~1-hxtbDl+^2ebMEv`Nxd$!{d?3qCG|RN&eCKBl3d8U zh$TNV6iL0R>w?78Yqv#nO}+j~FoN>MdAFpy%eKl|4iiyQ8lQXKGcMce?y{}pY_y|D zvaRke+dAVKOc9Aicb9GDV`i(1H?;Eamz=CAWwD<)ddzE) zWLw?yH%l$@qfBy)?)m$qLa}M3(ks{?Wn%sRpJNZOkYETePPcK2sP@Gbsbi>F(8De-58w%GZ0fS+*d)@6KIJ z{rrR$gVX_qY+Oa&WH;U7_i7hDYsi`T`ju|m7~N+`@6~4JcM{|y*!z*>nAt9E^!I9W zT*g=RS~^9V@#VUVuPb&NRIv-2{j4RnAb=^nGQRvFryQUASyP_5R?gQi!RSKg z9Z~u)e~7d1?F8p+y@*pH;_lVj^7z@hY^fc(k$in*IDlrZLwdGG^7WD7SnQEV&(@Oe zY<(1aD$=vHl%1{rVz^Jzpq{Oz-9fsXO3$Il9P3*T(j{i>VW81fX81!+&(`CV>M ziM0RZ>DfBY7R1li9dwy;Z$gVf>XN41#>kWNZpc&a+=zcs((>hoye>~448P0h-a>js zxGqm041a_D1(LJ%y*#@;?Y=1K{k+f@C4G=*cbn~tk~ZY&edM%$JoBajJ()M=>3!rE z@XbQH9Y4&|`^ahi$tRFrzI~LZ_mS&jpN;hL?PKRV@kL3WIJ=mAQPL)Fwyx4+p(Cv= zM>T&nmf4;-l&2S4U1{=C6uHVO>Ylj6jPX!xoFrEW>u{AF+P}y@^=J-pHLujM?$(gi58)LOAr_8B|YC6&FL<`Prc z<^Su8lHReE2kVL?nDe-ac&Tlcao#EK)P7{n8Q!^^50Or@p-3u9zwx(Z`IW(o2vd1_ zYj4vjA@E!hC7BT3%4_!y+kQ1ztB@p{Z{_uoH1addP3kJdH9``^{g``D`W9 zZ0&>_a7-dI>TqgnM9o@sazrimszua$T|^BA^6?WI)`)tqi>Ouborxr(-XD&r6MP7D zUp+U`n-)T(xRr_$sU6gk~0YDBGW#(asWjmyd#F3m)}s>E`|i1zbPCOL(a>pgE`VsvNWdWWiza% zNYBghHVPk6bLmUZ%Qn=w1VtxVjZn~8VPll@vN@}S&daqPpopMT@U+`-NkPVGd}U5v zto|zuRN%VPSy!ZR!ztV!KoRCtFt5BKYfhgN05K;jQ%c8FG(ctR92bKaHs0vvenl^s=QEQM=orA`x{l z%_TAS5xi2?sDqW-`(9;^{H$a1Gk zJT1TYHH)Z&^IA$4+l)pVBTdT(=jm&0U9m4k8vJg|(~IcA*!_^E9M&@*B`DwN3&ZXstPT7J(=`!W0xuwM* zb^V3hyinv$)=nI`;p>LnIZrR5XEM4+kRo@^(~Icmv7beX+|?nk$6kXJ`7%S^Om8)4 zP?0Zp$UCX@6^it-z7=_(850G0q!}UP3FdUj1IqBFgATd5Er?%B}>*n;0=tmVCv>2p*$gPq+xq9(s zAHz0K1ydCljjw|QC?+v>tV zL-wTn9bIL6Gso@C4s_ZEMNYShvNubfYerZ0=1$h|AF*g|e!pYodPgsJVxRfRx%lZ^ zb>+r3lRWACbsdfOMLK`oP2o;4Wd52{;}Qn)Rpb*C?d8%vGRD0;Tl2*GtUr@#$ml@MHS z4**=kV+lPh=lf+rZN`(47aO>mfePFdI-7tLZYhOl#1Oc(6xN6#du|tn9byPvaqe6G zgOMzaDO>@bETnMHT4x0YSC76Ft|c`tLeZD4MhNbRIR&mWtAyZ^>_Enu2&WgSeQjAK z>#t_sJ3=RERcCs;6lq%J>xI&)J}m8pB7?0JORHYC=qhPdKwM2stHvjMex&FhgxX|l zSI{-xqmXia?C7iMo#V)>el_O>-YGA}jI>R0nRoI@laj4%fRb$8stXb>VIzOpQum>f zt6|)ktJkwTPnlKfu5sDd&RqRa$#CdzMUs8(%MF#gA1ZkY^9gm;#ibuA zc^&f=b=AYQP*(gHa|24>ZM{n1EHXzs8rA^_L00 zr;D9PC$<^6jb%CvhVrr?Q6J+ZH_l>Vw>wG zwo%mXj&x#s+)Zqah6O=Yq!Zf{Zem-3{i68fo7`v3;7WcP4ky={G3yyj9eR?GrOQaDEpi6EURv=c)j$So9Z zM9I>aMv$pk4n|zj$ar4OjZJu$fl7FMmd>6=3iknpbz(?({EoucVhCK)?LqLT7y_4#k%5w>F@?Jj z>wKhewX8DZV0P{;QD%iBH-Te%YxpF=iS^`zqJfh z;QG_qHAvy)TgS$WA#hJnm@S6Dy-DFUF$8W0g)dODG^TKWWBq{?Zmo5erD*)H0DUQ3 z`8$Fj1w}uy8X>r!%qegkSS1Aamj?*Pex2A_*zuYa+`xD~%#B^Rj)4kX4xLp+3fF={ zGcg3NCxy$!5V#Q(ZWBY`W>J`dlBF?)`xn-$Na5OAXMSQ!rZ0utPK_^6w5!z!!A&=( zz|~}x5ZrtZ5QfuUl5NZ{a_0!0Ol&{U+is*2o39s|*p9OFFp8XJt=PoY)y@N% z*uK!w#6K80_kT`oLu~DzbWNMs{xN59!n8j4mx=8W+iR7)Qzo`FqdnU@Wn$ZFPMO%+ z>4LPVk^VNxZGBFD7VQxCZjSVm?4l%Y!BsLCi7DcW>s|+ z;u^e%4ciE_p1SJd(r+8?h}l+M^>95YD_)1$7o{JyUL|n;-zK)k6?jF=O>EgN%rvt7 znKbtkMy${CN9F35=8dF_;Ycr1N9F2=lcr)%K{~^X$<(`RZJ~BXa=z2c*c?I^^ObdCHDY zk*_o4Ul_$JG^oh^9dZU0E2GF@>sygWm{CrUCz%mKo@q{p{5dC6FNfU87Q~T{&}B-u zgcgI;mF2nFtH{gEA4gvCfgxX#d-f_0f!d7jETqVn6YG|qjz6k!+u$OlBDj* z(Yr4nV{bs3r2gQ1C+@!N^|mFc`@C&Q>V9uql6t_~B<7xC5l2ZQR>Fw7pr$?akeE z`Ynodw2HDfOWth8Cv5wxSi>i&{wdWY@p3{*G*C|iV6JJoLHxim@g$8_z#UA zLz)ewkKv^sq}f0{3bnS5EBgj~S@IJx6EqwSEe>k-~do zNUHNag`HvuTyeJ3Ut$PcE=DFwmc|tBVyxy!;Wk=l><0Zi=HYr$;|di0%xZ+-4x3Zp zDlohdT=13cog(0R`DMW@##1^sR{9eLDsThn>^h`y_fxoA41t?RLB3*8;ohRKQVfCn zhQfA~ER88#a3?1o9)-KkI?FP+EsRw6+?muWkD@nPjS$>}<`lRiC&NAN0m6Bl9+uzw zWx-;`lbRd*!NcXzSr$^bizr+mhQM7(;R-Qi&yAumObmgWL*X%$ER8ALYOL3h!tJ-t z3JmTg`ck+Z)Yy)qzgUeBT%jGS0{024g!WtuTZr?NyD#%>StaW)E4Mj;P?OYs^!5XC zuL)SaP?GvPOMgL;rMA?P)L$&RN|HL3<`VC|y!1bl)UtLIKCEk6lKP}M7kj59sr77A zyy=~iq^>gOX77|Fb%G60lGH=GATdd8_O&~-U6NYnVxFAm=-rp*Hr>Q?hZjF}N$S=d zO;S%E$Kj47N!^;GNopQumb&;k?i@{0n_xCj7eB|Hqe*Hf%=YTy=eTn;N$rn$4N7lm zy-MKxza^;y+VLn{C$_$}ZajS%y4fbScXH~;)Hj+g?m#-1zmwBKeABTXL^{K)&Cw+F zS?q;K=kj%KHmF#h%Kd3j=koV*^cKZhDy>10!Pd9S*vxnri0C9Ue8?Xj1VPG7bGo^F zY%B==m7_^&CtDET>I>;IrCUOaLFx+`d|*+LJK5fg&*dAo8S*VT`grMcM)z-|bNMYf z`lVdIU>`&>m){ni%ZK`@+1+p&=H~J$;~4{zxqP^<;pXz&y=im#9d0haiP~+E&gCQA zTwd!go{l2j(j(nmz8HI<_+&00<+k)&*l!@6%SZdU*lswD@wUz7W4`JLXjxqO_r znalU>ObX=B&*c|=mRzGoM1X7!ouurf|L(5;U))&=)03V;VH& zYZS*L4VnXO6z3`#QHv33(0qs*51{C+RwEQNf3Y!2&@935LP4|GH;!0>ru&KjVRLZ( z{jy*^NIzgkjege@4K$`XP5mBLSA2weGlz(C2;n8MY^sw3WU zEFNr~`MG>8eJNZ!YP3Pop;jXVH_e;^_wC7W^E^NiaDVz`!4}5zWKL}BRt742t_PiU zLkf2Xg`r{y+%yUgh#_#xDLgBNz-^-NAxf6U6z(wAL8Ndc>>$gsJvX1e6t3jG9D*pC zY&Ak~=a^IARp-E6 z7y@?#h5lj)+!P8EP_i_pa4%pjK?*m?I`eb+So%`9kE!t?iau;LLU5bSDR6UGB?R}a z2Pk4LZ*B*d4!Z9_Vj`+A|dd@oDCN0D~cip}K@+espGd0U!GoXg+; zpL6+gTf2|0X><7nc7zS}PMOO;Gv`F_l)1d8(LUjwGM87k0m@wdFI|v0m+!EpZZ7Z5 zfi>98IN(@9yUEyRq*?I>YpEbNL+X8A#{yo^Cd%m`Q*uq(Pm_uXNFW1(jYzk&V{3&gEa2 z@cC4yHUm``mz#;#JeF!OXb3?94<$M}c~g+55TIh$89M zw<6atW4s_YF(ZWB+MEu#bOBSULk?^~9Qj(hOo=447^EJ&gsZu18T=-D3oHH>euJHc z{8zT#W0S8R%|x2M{FSZu*e<|sj3j;eC);jCxVP{FpN%ZmAJA`3t!ousP6W}%QX1{imbMZx+k`oakcD;eP;MQ!S%44l6x(7Z6^gy32WtY zVpDby`XsP#pvCn_1N%M-yTy>eUTh-oc!(i^JsTq(X<%&)jH-RVmM`wi3>grZHXMkuiNvoT6wAId7Bz&_Li6fq@l^~-{`j3+H8Ht=f(DsUs| zY&cT5Srlf7A#g8JSSE(RZKAM244JhKQTP!hOJfRGZW0z!xb4;%(N+KI(U-ziqeec8 zes48Ga7ngj1gKg_saP{e|4pO+wD0C7-;BKHW zKn#JKOyOQJ1a2vXXHc>Gw{=E<(!X-_rEmwSaR5d8Ta6IhQ|1)7b66z= z_o4>~!?|Zbb{v$o{%YquDRlA-=s3Ooj@&aKtH+@APv03WIhpeVMNYG&HYJy|?JraE zS2~*bGoZ2wU)xdS&lTs`%7=ADX5@LyvoDx4x>MM2F2;Gbaix3ba^4v|Y)+Ycna>j6 z!q3SBC|j?aJDm~&SI~$&-1$AbmCUtO!Ae6i*Z!W}SEfw)M%CKtD#SHXTx~I1q4aLn zp2UD6XHo9UJWBVwG@=f%+VM%`j&CiZ?#iw!F}E*`UWs%P*_C~f_=aQOiZuA`&em(- z2eBt0okaFz>s{80^{G6F26YnIo2}Qti>b5_MMhcQ8oDN$(M>|vY%_f58qSVRS!_-> zi7X+Y?8w$@;J&sXK8Y-*%anczE%NJkHTbNwB2Vqlp!kdb`rW|YhWvbX6Ty3f(Y=Or z5_vvbKY#i;_NPcDk>!38aleuIVz%ASw%^EnDO+z(m!1*?zp;kS8ZT$-?df6o`XSwL zuVm}(>2=s|i%%|TSGW!LHTE{7v&O5=C$oh71j1|HY+dEA>mABj3dA>!eP^5cW4EdQ zrinjLq}TvgQ8#rZGn&Yzu3?7X)F)<%8rF7Fa5sn72idWgc5yap`u_m42GUqlk3wxR zB-XU2&{_x|4m|Hjal#+r|)u@Oa^T8&Vw z*>6sXHM3bI6l;!qfN-qQYnzFFSumaPtjUf&^gRO=xb1ZIIa0VkDEuadz@h1UUkW#x8Y5A3q}2$)J)8h{JFA4?p7H=; zI1QxDtu-G=w`T7ZItio`=r+6I*PQjr4~rvv9m@3X&&cG;^V;Yf=xj4I>gv@0C zEI|@77ia5h_U~f8h0<5p%5wCF<0FBwWz8TMp;2OeAx5NKd3L6gr9_C(;Vdx(?otYE#1OcfDGWx*(wM?Mh&2T%+;|&^ zj}qhPOW|fyV1C~0l-O)%jotyFxx^?@b`;$Fku(+gOS(VXx_xv#ixQ_B!BFp%DAB?? zEh0(`yRDG_>m(~&a)?IaW>NP>`e+Q#gHJfmBMB*v1w_xY=F~VJMfY2c(0NwD#wbA~!tg@pS)K<7pJ$qC+~=1Cw=`MO?(n{1siN$cM_ z`ck+*sc{@dAF&!CxEIYSaNnH_x5fh$0awB{RZ?&txMb_hUywdUUkdj&HQqweGmF}DUCb$P zZ?Q^f&t2^S!f+ZPm)kNQA#cd8&B?71@*{fNh%`d_dJJ0sG>_WO($7)k4Qs_By%jW?T6#UC}N```G?@%sb_RbcZ>g^G>-Soo_=aB5pQfPOayZZgtIWPg@k zq%Or?ge2AcG0X01x(m{SS>X%PpR)9V^lNHwKssyuoTV3}Z60GPL%QJ(W$6X!EbJNL zlT`C?mR`xfg#8@SS>uTF`3urtyxF=+#tm+xo#oDip#Ndp)TP~~-b@o8qezZb)J@&U zjBT>1+nC`u^@$78HiKQ;Nx@qjUXkqBMMpRrCD!bt#ob6_O{tk2ib!Kk7KJKeNUXVl zLSr!`*7Tv!3nfcq8f)&t8jUp8bg|BSs(CtnX{?z~jVDpGm(>Ub($Y3~i8ZxYB@}Ba z+d`bDq?$`kz z$pz_^^wtw;AocY^fpic{`=iKUYsCWTcXrlDAYGxOiQn0~atPe~{kK%}A6s{Wu4k!c zRU`PuJ0;cZY@HSnGT-Cu_&!VT;nlWC5U~xKG`G*ME@Xb6)l@>}cmT#A37Ow#b(8q` z80Nz$y}qq1M}Igz5+&*v@_<;QMD1nn@QmQ>Y!w4OyRD;>Vg#RP3z33n#uH~ zaJN%q7>cg98X>r1wmSu`CaZ+t%GpAkiQ(TxNL%J3>^pkcASj;X;4$m87_1cQt2EN8Ek!P=o(?ha}v5Hnc+j%a7LFh z)0{5V{D69svfTTBwje(9ETqenZV4?0sf}ClGLj>@jokY52ohQDlv3ntzM7n2{y`FVt*Pp>oxx$;v^_vuWWa+#76R126={J%0bQ8(j z*vrJX{(M?<6G`nSNzagO%PZYPG9CLt@k#dC+ilCG*o%-(Bv(1#iHW3-pE=w_($|}< zt2DjS(fauN&!03a-y1&4?Tw8z`5uZiw~DeiO7<{g3R`(UYjEfk8_kXxWPZP6#;_SQ z><%95x=9K?D#b;7R_v?)aPCTE`i{oGMjDxt=J6VX7!sM%FwR68nHp25D~5#K9u&Hv zWNAzz(;ZmDkw&JsPhxt8zBDr3Lyfyobc59hMW$gkMu|*oStS&i?(qQO$fR(4{IcLH z#&c^{Y~^1JRN$u5*@H;oUZk*041xQA!a6Y|?Cz!TofraFYCfYy$+Fv3cEd6+6_e}TPqfJE7}kx>|RQ9iC6ePCM2dsUf~zo%Gc?N7Gd8q=Lqj4!j`<% zdX)(KnCm9~ggLUvmbzEFig#crF67QTC1B+J<3jGGSxw~39s<%0NJ8$VS?$DiALd=^ zD#Ufo9$a%VXQK2))}EX#|1IQ>PbJ~d_%rW{B;DYzyZ`up_;+~)!_v-GLTOEmgC z()g2^rB78hVy{CIf3gz;PMsjf1)Rey{Q=3hx#YT-TR67Bq{MZ`Y*5d z21zakHFq(n8coVKrbilDMU6q1nsEbLbtr4d!8@9NJM*E0AllcKCPpGnBZk-le>}I& z`i_6u6o-dLxYj z<0y<4L!!Ve3NyrzDDXOkm&A}Lu#LiJC|MfQDDXShQKV5Iqo>6wi^4jVP%jV6!I`d9wayE0^OK zmIOndYnB{fJ;`}_t}aM;^CR+?EtT^!(!ns?Nt)M|8%XXXU4F_*`T;FTUQ{`&xtx*Z z*b2!=PSVO*-Q|p|hMB9bLR{C#@zxBpF-l)y?aATv-%iqL+1yaiT*apE^rqYX+lwha zC+RIE?IhitsUP_3N~4z|JxMob>IeRA#vX{|B>gP2^cL2YpTLnMVN0gv3==d-*qW(H z!b~bZh$`_RfzO?56Xtq#)eE*|YHC$#5ig#ptA6lBrrw`AA6EmUXZDwwdT;A?>}$m* zXZH3?y|?u}_Ga?*twO!uk^904;avQdZ+pfWa5*7v*>C$aDOf=M`(tKo zT*OY`5p*~V=?OfO!XskH3H&03Wn#z)yotgFG2{e3MBzu2ERE?2ocatF(i3>1jiZ`z zwxcgSf$LD?Toj#dH9{xwF&m?tzynw%bOM)L?Y7-X)3`>b{(f1olJOkPjP;Hh+y!*j z6e-+Q6ncswaJN&qO$>p1l)_Xo1nyM|FQH^Mu2FNHfujRPn; z)M|v_rkPXVTCz$AZk`7SM<;h_Xq&2%^_PV;x@$;BM%C^FcV zT8=W)HnoJkUv)I`uvhZdlG>Goy$13-3;e^cSxt4nW;K&5z7@81jIf|_PhLvDz!<7} zCoiR!Y-!y}Fg#BeBnHD3wp4@R!9*jn#_ergl96BpC)8MGjcM zdLeq;j5=^cOXs_N;Ij<55ap-Ak~upvE6AqYWVIu*fWM@_aOK9Q+EPMf-fDFrFvJU1uQ!p=uZINuRgyqeK&p+Tiw z;3!*CsRfEOwZ4_IjT!ku*|P}BlmX^+m)qORlj~;c<#v`Wh$E+#201^W#UQnS_2(E#3vKtKsO;?^eo{Q>9!o?Cd5V9^Tj8r?qIhqS7X19bV9r#K7r}$ zhc`Ogzq5XmH(OU3Jl@gz%k7&^v%N9V?TxQ#@=FvMVik3In`lOaz0rd;-1Nq+QSX1^>#|BH+P~rf!qHyg&a~E& zfxRP~ws1kL0#ef*iKnS7RuKc$y3L?oGfwsSSdY^1JwL5_>sH)8ff z8l`ewlzJL_y7(kY<+&(T;d!PKq){s0MXB4dZxf$HsR9>r9>ku6G)h(TQOZ8{Tix6C zvELfrwvYYR^tOHMx0bg_(~r+_Tdh7+@^@ibi(?&K99u-E^HJn)tEh1-W3F3EW{a~~ zBc7(qS5!)x9z@TvI;X_6qqd`xf@?~Xqh!W1%h_rFFFJZ1>1n^6!slYhY5yyQLt@Bj zpZWr4InvXqksq^JEf8^yT}FWAp$HKq-v#;qti+iHYjT5+S5)4n9b z3!U~Uwh(9H!wrpT!~L@04#v|gGxi@3cNd+FMG7~c!sB8H+$svMiXm`cQ24hP64Q=T zIEs>`F@;N8&b?HmaHFg zWQSJL+*b)W67J5-yl@N7tD)_UB;1{u*;T^b?U=Wzs}R>933m@*PE=Q2T;s*H0P{(8 z)x$OA99%0gSD^HJtyekq{txLlA#yG$S}_fg^K9LCRyu+&ZqTf>n9I9Ap^J@3v(jQN z@7|65Ez%fO!o|10uzyFIl}21VsdxiHVK5D9R$9`<5BWK=R1{fieQQ>_(u_}lh;A^$ z2MT=%w9T9@D}9R`^gmTKE1hZ!;#uhux=fjo&|;7}tQ=3KtFB@^hs+;GzM+C4@2#p? zX-!5~fE0OeRn1D9W1oih$ocH`?;P^ZQ;_GYgB#v?`k*dfosehew{CWrho_A;c%pBnOAaCD|YMgF%#{)kE+ph!FGTakO1@tPnH zG9!e1hdCW`iF`hh=a6gLg7{v3h%Qs=C$t!(ets4ggo-@X{Bh(i6%F~7s`^pjos8}) zq{y#S?IFj;Z`enWBERa8Pk)IzNReMN*)BJJdmX!>7c2)i0T2n^X5GnHP zs`?{cov}M0MV{-B2V!4~6!~#Oo(Xb88dT&b9rE2&x)VhXSl^0#+>9p$xpXzw<1d6< z$(#;3n~UT}9P%bxHI6)tE>pH7v>2o=JDqC-MXqh_#E~0SHso;*`B6qU9VzlShx{D& zVx-7-Ipnq2tC1q#ZO984dQBQsa6nUT_KTqWh8dT)L4!JRv>Z8bH>syg$nQ^}$KWjz^`E_$T_JbO1$aS>KA>*o>P6xvd!? zDe@5W$B|297;+_tTHDmIryZ86o7w=5)wEwhMw3huqf|#F6X4kkT)q#US*ouTLQZP+&>MGhSDWbAv9A}1O0mvpg@26ZnNcgTyVG#^DaTHlKN zg&Ez;gS_925b`l|I^_O2e9K~nW?#!~K^(bSRghOCv>2pLA$-kNO6=z1lWY5@GxU+%QS2S!lPLU5 zhCa?4_!{>GkY3v_&d?-s9QJ6W*Y-=CPkv=t??685?Q!mr+){5(aF67k^EQw08Wh9%tmxl`N0*{UbcNL(n5K?W?hmlnA2lTV*@?O7JVz8v+WxQ8fA6hq)vP)|p&K%HI(WcQ!R@p=e3l4F(sTwq|TJR{+nl1p*jjhzb~#xyam@C8oVU zHp=}U+jZ`@fp^;SOxIy>IAg5v$<5Ek^w$vSjRIdUbfe%BmR^J+2dtHZcQXc5c6%Wy z7y#<3j94!|XQJg;4vO&}AbfkJEa(%41{Y*&44M1mzyIwV&5DxeFpc@xIZV?|P^F#QQ6D zENt^me&W64Cfm?*YvecAdBUxc5;kPLHBuqX?Ep2-PBdC38od*ZVF?Cb#M+YlKSQ5s z1~rJm{KaRJZd}vK9h65h+Dh0zoefB@s@ZTTv8gP*pMZ<{U2_>*wasb2RwbA<}8)E;mK3!Cr+lLAcw6^oqN|D@}u%Al&Oh z_?J}LiXyeFZp zC^E|Wc4?p)zo&vc+l&zMVskp=JL+?Nf;h5VET;5JXfa4Vz|7L#rGe&;BmeD@ z+h^#9{#rA-i;*I?&(IJ3U4`8fDRM`LJRExnQshew`A?7!(V)A&amZ7tGzCRATHh`W zG~<9E?>8fae9W8@1CU`Ga+*Uv3%dX*a=Iax19>YADsqNHZbhXFQDm_7t;i$H__rWWG9!dM)0__Z zvNW!59C9aH5JxVLC#9RYrNtn1DTIGlk?Wh~=8q$Pjz^LIuA<+q+k??{LyG)&m5XJq zo3RHYMGhSD{n+D?A}1Mg6_7umK}9a^kmpnBaTIyO`c`DAC4cV;@|R|WkoTI?A=j+T z^-UGMzL{qW;>aayfxIZ8#UQnE4wndu9I#OS;>a8DDDwAJ^c$sKVRXxpB7a{+Z_I7L zUXK)cPZhnQ`40Olq{u&1ad(%if&4ETROEeCH0k~im5!mvY1X$QS2p7fL9S^=2)U6t z9rCdZUesygmnz2BTSnt&t+%X~pwe|H($4x;<$EuW{jP6r;NxDe^Tgd`-iC04efy4tWXo0;I_O4EZXMN70}nU+<9L zrP5m{GROK>b_ZWlDZRi$UraT%?s(3jX4J~;sJ6*G{HC8*0d@o(5tV?K-2i^JHFjM3#YbTD}y1pUrbjTMny7Q4D?{vsl zU|)t5`8$U^1bYxt5y{q)a(xPPbEAw&Bjd z+o{WKK^(aQU8bx^Xfa65X-F=p$Yq(MgrTajy+ktxVc%m^X3Hm5@##X19xf;e(r7*e_= zw8*t$3!Y0W@^bUXk$>~ZS2^U^JB$t~@>LEw6FVI#a$kqs5W5ai zn%q222$jjE_`jl{uC+lSq}Li_76yr&o<=mit*To1{L{Shg|Yq zRz#6r*0&-LG~;JM9%)7hd4f3|a^AVzTX)FKZ9#l5mpKpQmI*BesWD!@Dyzuz%pXVo zgzAc1)`hP$Mt3Gs>THlH+ ziNE~q666hLgpjwH(;=6LF=;sDskR`F{Er~dNNADgX|;GflD3LY4w*lW{7y4N{w+X4XrxSxu(`0MsDac3YGG({9rNtn1R4%ur6uG&z6GvWgz9E0* zkT)^950N5&<&gJae}@$LYlr+d_A#W$-xzZ7;yfd#K}G)7Ay-;UK93^ptZzl`Va7&5 z9%M!c`3`eBJLm(?D8$QMvI0o#t;Y2Ni!wb0;-7vX@2<%_VY-QmpbI+${;K5GKc#y6*i#A0qa+BkDKwb;Fjh(PyP~d zgYu8T^HiGqWS-TI6Ru*&DO(a62~sn;E%cxg*0%QIJ9SJ8BYZGTldW$V&<>=852k6d z^*i=2NC~I9oqEPPZdf5DoMt;U55k*iP$?gFlr^Z7k0MR2Z>4Nw#xp|Mvk1zR0p@f& zwIt7$C%B!OWeXy@Wn?ccqsx^1gcgI;r%BF+D)Kn<$B~CzXvjm;no2x7kI^+kiaaz; zUq?ipZTi=Sj&y0rz`42Nf$fdZdmp_O6 zcnz*j9r7Bh9XWygFkPmsOK34jZO2HOD{_{#6Gy)MVnc53kdH9BpO7LqcgUsI^X3Cm z~g7Iqp^d;?vktVn1vNbN{+ zcBHcGud>_&lD|0extAF7k;)prioeJE0E|$Pk5tz1RT*Ceq{zQk)?}*=b}jMCI|4^5 zyJV|B$k{Zg$iG+CWUC#OEsyg)n9)a&o0t(oZf#D7e1He$KUUUcE3gG|G{cDr@+5!*j--i@=yCL5K za(Nn5BS3#a+MhJPPIUVwUT5$8+A$PI`apW#^nId;3_U0bjWkKkMp`io@Wc<$SvtIWl=(lL26!m&QC=S zxYH+papY2M4S8W@4PWIMVOjM5D0>rltET_|f8TOW9XWS6cdQ%Tijru!x4Dp^lr%`C zWQYt6q(Mkh5gO2-NQERshEz0|3P~c7R0^3wDM?5f{?GS&z1O{G*Zur_|JUP{^?vU) zz4qSg^2R-Gd9p#J3)Ez`BSlddu zq8ZJF@=0cdC^s>uqrCfUHp(64y+=@P0*AzJ=9U_RO!-mS@k+Uq)q_L-Qf3|Ul*d;* zMMnGe^sYZp%Hu2Qj^CZwqk&Ssr=q?|`!M!{Kq=pAl&3&>Hx=qtp6DnqA=4rd>1k~% z<-TUr70ScR2vNSDVryRI{oEZ zs&JIFCsXo$osIH=ysDC86ur9@=$q~b^7J>iXJJ18E5?CYd zGVRCS3-q=2sPoC&s_w@iz0GUv@=a6az0GUv@=a4QZ}S?vyw-lSw|R|SUTd%5ZC+!S z*V>QqHm|YEYwdAw^BVgV|F}!TK7jt!>}a>n8Sd7Jy-#QWk!viY+&blEnDGVgM5I$f z-r_EKjop0*)eF963h*-MQIj_pzr9}bZ`Wu_@Dl5`>J?*0b+Q+gE7DXp&=-}PkZ2%= zyr_IWiS}a1i^>B@^bIm2$ei+`@=uOpN^N(!ZN(<%+nei?X=@_TH`jf>3YJg5 zw&PKb&IFOIR!h>G>)rqLH^c^L=2VPjqYwJ#`pcA92=tt7B=M0La?bXU*eQnG5b<@~ zl|awgDI{uvxKyU+>^!Vu93-F7(WIqOc2ZXo)Q z>w`Rj!`@tLBIGJbGf=2;+iA5KEYfM%d{{Ow6UUqU2mABK6np~a_<^-9QYV(Gm3vE_s$u#waE*9Fp$kRF7PP(-NXf*#K zPv>mGhkRropN5I;dAk0}!#s#b^T()Aqxm;^y8bF8QymcLX>GeXn;9QN zE_#a@p=dtVoNk)h_juM*dAj~;X$ML!-j_6)Xq8lBkU1mH4x3U=-|q(NvBlARV^56AEzf_76tcub2?^&;6888 zcE8L#F;9c>vs66_XfU3Xr@?sgdcIEr=vkher!(V%k9bWDXfU4Q&T>=iBA~(ee&>^~ zwbo!f)!PJ53C7dBz0?Kc2b?Y6f+ex|L2vTw1%J5n-RwH9ao4d2O?Cy5<1C|I z$ChTy%iubmZ-&2)#2)wgucz!9qy$ycgJ5=Eto4N^m;fMc80gY7#O73(L&BYLM-AQy2L&)7kVvra@?m-gw zgSb?t5BHHJp&-yTnH9XZ|y(FT?yMDBcZ3b_h&FGQ}FCr}Exx&ByiD*aiQ z7YlkAxotGI87R3!B>oUX$YpJyvp~rekvK&RA$I|Zjvy|TDY+Z41_CAboHbTpjEpF&0E$wj3dHo6ITXemI=m4o{#Iawq-nuiSa`=aszJ=bqej8k-7~+!7Lt#1L{H zl2|K-T)90Yeh@>*rGCPg1aYZM$<@WG4U}AwHRj39qb()ZiX3NwXbZ~`B6o>7h1@EN zgs$ARoLt+(( zOJz##C#)Sn$t|LVju5#rHV}o}9Eya@I`AG1FZDbT9Vn1e3Lu@}23&h2?;$`q#sXP^m?DbDSA-Ne-y zvxB+{aSfEoOCQWD)m4ORytr<|yhU9NaLpChRLn^rf10%_;o$!;XJKx#=LGIQ4b%&) ztPembv)Wx^fqFn*O<8t7LlaK|otq5E(}(jbuwMllH3z!6$!6@2fzC|^xe%B8I&+g# zsZi%8LtISTN2Wa>@`|;sF>Q?*vmg=u%nTpXZsdMT{9sNuH`&3=qK})K%(eq1XMH$L zCZ0&DF~}_7Zmgq}x4+;nQps;4b-2PP*U8ggP>X!Zi3B<~sgu`CPD54fd?0g^dVVtE zejBO2H|1+L3xh&G`>@|eDsr=riz(a^=_Hpqhb{K)qJ{r06 zI28MOptFz0&R6`C7ESzg!hM~5Q*XAZyyiv6w4M#v)tB0p=;5x!G^(5oBI_)pUWp&f zxK*yipJwToJu@#h_cBwuXQ^=>P^DW-Vzn5ebl;NLE`}&w+0ASo ziy=x^9is|}OJ%BbXJWMks&r>8bdCAh#r3qMO4orL=YiaZboWpsq;z9E zfw0o)>|%#M7JNj1+U3PY_cC%9(^z+)DNem%(KZ%KA2)TtMo)tsLeN18YLF3(YCyT2mxMZlxy>zH%C)((OL*G3xTXCBjZVIKP$Fwg8P$J|CUd zKiz)#k)z*%NWRr#F)G*2zr?8h+MANkmQVe!-$p95!ZAdKWqjGmgp-Un%z2!5&ck`C z@hb98B3v}Zx>8Eu8PSy2`(5DKdxQjjKqc})@Dua&H|2uQSWQAr0?&zg9VPJO;7S1b z8O{^)`btPS8S_Mt|C`k(8c=FT;YMk74jaC1wb$4U&n9*VYKtgW14AaQebZs?as-}UBFw@hD?tIPCr$Xx_9P`;O| z%k+iVbHpcsa&4|I)5~mQ-(GyOXa2rBaryYNfd%vMJIuMqoWASyA)%Yxha8|+QD^EV{dp3u3SzZ<;icK(KX z({}!DbdoZHs?P^1DK|Mux#COSvIiy?l3WtYv>2rDss%sX#|*FA^7vA)|B{iJ@Z1D4kAXiWo9Vmy%cv;!>H8 z(oI+!fsWFZ)(by3uRvQmO1~k;S0MVH8LnXq0aE1j3_Kr?0L5^!hrC z{!Ge^$nY&TGH>0j{-4k)==Bu)@R$h9GHrWiu54~Z*5Tq;v?c1j>et_O749U z?}{N;?mH4+i6P{U`kJ69hLAfRgCF$@;!>HCYlU?NP;wtwV+BTT6>aI2>q(9tAo{80 z2$B24oI>vF!^uStrf6-Y1&?$6vEV`aGbcB;2`SSn*O$hw0!nTyi7{dbx!ELUi6P|P zAhApgA@?PTtspLyDY@VqqzaFcyTBUr_x#j*Qp-=g!}KR=Ss#w4J{yc54px zPTBc;*qr0NQ+EEU+xdCaJ7wqZX>%_2PTBbzX1y*Yv~Fz6J2Nh{E;u5z-agQU*1oyA z^B4b?Jy{^3wQsKO{8h)SqOL+*y7Si*v!S|*aOuupN6dEWYJf|3{;tBj9OS=btx7lu z$7ES)KF&kql+OIGvph6@Jf%B8@drX4iH z$248Em2cui#jRitan?J!70e3DU9y51N|T9INi_zUyv`O>QpzoFclDI~!p@CDjdG>j z8p}EODZTp`=-i}IuD&U{5Bnz|bCb$`G9p`j^@C&mbi@6^&T+Z=%2CDdc>V?SMW8Bf z2GSY(H1WxcKm~3FvJ(3_@yVj5s+)mS-@!crbOut*oy!*3jeyQTsykot?%(l#O5t|@ zPVi=%$}{h9Y<*x}KiIBDOLsLcrpoRhGTSoB)hM^jj9(e+uTVl>XStON^Pc(rg&Bbm zXgpqPCp9IA#n@uajXgKSgl`CyUk_CHrjWQ#3=zKhB%TsOgzr5PZ;K(qx0A#U5SPkS z_+sDFE1<$xbxfGk&9tS$mragL5IxCqgoJOS^-+Xx8bw0F_pK*TimJCZ)+qrG;ey7w zvGF$;x#~1l1t_^QNt`Bzkh_RPH!+0VFcL$=5ONQZmHRRPJMQiYoVU&6GTo ziA3xskXKcLtYd5PkCSQnT)6y2^j}1C)^8M+6;M`gV_EK`{J^d>v_z(}a?h7dv0Pl4 zK=#S9a{F*|2B%=w0{PiipNy7L1(>2W5|nUjBgpv&CYjRX_zasM%ppyGuj_xB>`Vn$KC3kI(?jw!E z9x6VO-1l>IA88l%_u`X9-v>Fm0e93+rqTFRa@RRuvE+W}Y+2OF+aBw^*{1T^JHzsH z*3EV`cID_6-tkmh03z!xqe||NW~}CF)S-lz+=J%#7p7Qp57|jg32MgRof9h(6GK#K2#M>(5LKE&;vO+Xl@^kC9>k?GRi%%xJ_M>t=ie3Pw2L09Dt%6l ztsr`l z!~`*f-18*ni6P|Hk$4Zpr7|V=GuAGkbKiWHP#v z^{4iK>CZkZe4-XK{TXQ#PW4XFpF(R@^rxq5CP{y;vZGFaGS6WT$?4CiBlPD73d@vl zOin$S@->1|ArSo;lXI?2`Od>^qpm_+m&=sz3d~DE{+(8zjF$hUKLy7y^KtrPxl5*e z^GBKf49wB(@SCah2B1^EfjPPzejoODpfWKyN1qcui9H+Wly8U|^SQq<<$IV4b;>u? z4e}LadKEgx*dJb3_r4U%D35^Zpyc_5>H~?ly8z9C{ggOG?|!|RAZ1S zpZ060l-JvpD3RQ4#2EeXQo|g5Cb)s#eF#)?8|JhU8U7jjM<9~hIOpg$Ips3_msNI? zu;ey%lAE)a1t?I-ZRRAmBX)D~iR3nSlKVRLGvX7;ZQ&%h;1}Kz1uD6xx^vkSy9lV{ zp5}bTQ@+!^#yZJu>CHBkYmX00ZX=d3dNq2wtI>lhyMjnP%czpu){NolK~R+vUUDxo zzrQfWQ@)<#Tr(*_Z-k_6PAroJkZvyyr1EQls?tOf6T}cznnz-;7@|t6Nvsq@ROx#X z-+;JOrm7U(M*^rSy?7X>FX*AFQbKZo=yJ;uQl+b`kD^M4lvEe@ahO}#iod}V2&CHDb2)`IA_mLo(i#TW~@%@heqZn_;jY(A@!JJ61CrS-3OPFse9O70d~ z+XPf{eZG+7e$UZwKxDYpVv<|Vx+s!+7u6+8?t=gN9ouSFc%~LK$$i0`3%pY#_X=xO zBzK)_CP{Lq*-aP2Z2a#-JA7PvN%Cmd=l=Qbzr?O`=m~{d})cUX-nG zp3J0o4+53kMcMkDEK9Io1R}XFW!oxyvwnE;dwoz9L%}?ya%U1ghdIov-*qlW%(4J~a83x9vld zZ+qK5G`Y&#_Myplylo$vT$o4-k3P zGHP7dV@4w`a4SlPpd9|8$$u@6zmrDNg34&G0@oz3WF~lSpB-z=nAR9^0}TxXDx>$4 zm?(zG=(8l|i6Jt&mc%MCL`HX!_#VWiGL_L|{^0%rDx-a^vFgUJ3~i~5RwG9Nhz_0IZWfSE%HoRXw?n=+Ca~SOWD?a`kBJWT50al4vJ} zkn2O@N->1o-6TefA>^JW@dSuVWlHWntapHtOS8u68@X>hx$Wfm0z|7=4kH(pAMw$T zOrB#0gy2C>FgT{0?|v!NUh~I-?eykAcI;RYcf!3?^t7XjN0q8rPpmfIi3d5Pc26=HUC>ihwOk*+ek6JcEK^J zc0XeJ-!hWlueO`=Qhzj%FVaiNiM>C;uG=d#_7YHX-;wxA47qOqkT@uYkUREIc29wl zJDo&x5SPl7TraGPfs(t%8uR34(w36DksLRG=uMX62y(ORfRI~AF(dba@BZQBG`1I1 zcQ<98oy^pn6YhbXET?X#wNXH0yU!Pj?UOiq4~W#ZT3l?`yM4O3Qi6XV`cZbQ40^72 z`%{#79Ozklhs2v=$XWZ6#8xrnto=jcfEaR19Cwg@fVfnqXYEw1=0MNddTXqnvG@QE zde+*K;~Ws(VmbU!)(^YRF{hldofIh^$}-)1(Gv(y_sVUwNF@`OmT*d*xco4Jc>sS* zhX2QhUH`PwU9}`Lm(6^xwUMbtKkt;^ZrWzfk=`jEiydz_@Ko=VkHyxuEBv%~%Ew~M zS@&h)vsw=%edHr@svVVyPvp+y-94bj!%0Sv)%<84@MY^RSWAoaC2Oc3?sHS3=d#<& zD)d6m^94YrM9*b+mpk}6%)aU>#5GuENq1n5R96wMaWYGK2y>dc8sK_da=m~#UtJAx zJuh{w!dwaD!>`X}zbm=y!>`X}f9o`cW%g-A zzjS8O%c^WbALK7(*8GV!GkM6(Ot#XiO+Y7O54oAiFW9?*M*Ep=9uYf)4RkU#%SGB; z`L>9MsZb;9BiXviUY$%;K%~F5t&_1~W}F1K=y)@H2)&V>C8nFxO~y_xU^6w_y(eo2 zO0L~jnoM*}sxioH(~v8ploy!4gz_VkjPl5A{ko+_^sW#n<&oL?bxY@Aw*g9dw4;0_ z_N726-)@w1pgf5RmGT%z`8G1$0wS+i+e&$j8OI6b&&&u>mhZcjKS%lejzKWYQJ!rF zN+_?R$;1;$HS#H<6M1V#DF@A5JtdSUPd3U|Im(mi-Mv65U*#x2h5a~C%GWr`Z(uJ2 zO1Y0wt_tNls8A{QbCkD`X(NbKu(sWl+l+)zKFN#_-u(cSa=UE(2GcTsvG~EKl-oPXmGET& zrQE?NpA6+2sZc3*a+Dj8sUC>*w6>LUUo)aY`4%%ml*gLWQQqB>simXb(hihd<;66a zXq8lBkU1SH`?HqwZ?C{9-8XDH$zRH>V;(Zf`?GZ4>KuA^7SL73{;cz*RB!A{fUGip z&$5jjng7=h{>V!Dww1!*K$b2#?jiH-Kvo%lI@jBn%e9UM!9ib0UJq>;9P;K^_Y(PE zS-OVE`J20%61s-?J4@FPoAA8`^yL4OrE7>T{{%rNplgVKvvdv7ANv}hYly&Ikg}6m zBgk9iDc)v{AW#3wc$+nXeDO+IZ?i^_4|^ZwZPp0##VZkSvqq>{)}7F1?tBI}Pqho) z$X)Q;|KU*;h@5O0<${;%WX7g6PA(ZJ?;5O>kDaAi_^-_Ybxl>ZJ zV_m1&l;RqzPjM$irWB`ABs8VSwSzd5KborKZuG~3U+7P6cC7FL zBiEM3S^*{3hs2d)2)WTDMu;KgW|Np9hLBr9;#Clr%9Pw!Sf2wWH{2TIV(8!Bp4=bg z_zgtISdI|6$IL0@D$%_Vxdom;Ddeh^ac70Wl)>k7vSaZFja($48vavq$CD@!L&%*< zqNx}{?qU+%#1L{Utb$uWTq;v?k73OOO0KpwMmW>IFX*XWxfSGi9YmX3j^Ziw54Q9f zX$OShZ=PUq%zeK5r7V3u_Q!%WdQ(3;_JgOkj;7uNN^LiZAH@)A{8(yGMj+HqAW=mO zp>__5vp`%bQ)+#%t^`VLt2O3V2g_(nsqs6Y!L1;=%W@n+E#2-`p|+l4dhLQ^s+e1D z$)p9Vt_?=nu{=AGr)8gklT@NS-Mldz8C%b#mM=$q2H3I*yM4XX)g4(h+fJ3xP%U3-@HTeUtO| z0;gg=kje3$tllzTU4^+)U4^&?$Ti)Hxk+6`xQ2=A7tG!2YJls0DOj!yA`2=IJoaQg zC$3{LD}wxK))A4`|N8`(c|m$U(-sYq0c%J3D|!0y*~1njmt{4OfLKIJb%6%SWm#v7 zuOoI_AVKmKA0*w=k5{vbKQxuc-so#CBHl>m0YLZ7UUxC?1?-vPlcyhVxR`fb*_7aD zpfPWSi+Q84Zxx@s@Uqgyyoa#w2O9IH)#MM|=0+orc4&$_q9;!?X zCdWV!mDR5Nh2(vj^-(0^PbHP~^kc3kP>Q@qt+te468-r!E4Igz8%1Nc0wwn-iJ4*u zxg{hPi6I*JDT(!B2)W-$>;rMBOv&X&Quv-wBUiy1^Ra6gZ7I1^$Wa?avq~dZ-<(43 zQ;LLQS4&SIOiopBwjCpo>fiTS=P(>p1)I`ZW1uSN^MzFK9FCp^BJ-^lQ^Ce|Hbn); zP+hVLZvL;QADyl6Lt4hBSg84IUVJ?t%%}|a$pBaD4$M~iAYk7 zLFP{K_gBij%wIye%wtBmzl$>6=v`-^l>56Vb1ilspp>t3l*eH6`}2ZNU6X1IGJkE&GajWp zX`#Ey&$$@|tIx=jM!9xY?d2SNk={KAG_cmr(yf*cuvY^Ktf%-$>b|z4j$b)SoaLdT zH|=XX>bam=zFbQ16BTGst?z>B!}#t7dL9d1P%U2`Aq5&#i`;pvik%NMs5WrE;-K2l z**>T?@@AXL!xlTH^_*k|x6Pqi398-Pl{kYcPX&?NETdkD>1GU&EAg}${z?=_()>lP z?v&tXr1tczSkK3iV~M2Qsj&;tU~?0RA!10dnMC3qF(lZ$K;mgJB-ngNVl9YEWg2Yu zVEqI%lKx`7sB1)O(3S?9gXA~>q6aNUD3YFFeUxBx7DYnArhz9A4mP?9e83+I{-Hl@ zvSLl<(orE-K1Rzx$<-uLT?`?2I*I0D2)Rp1bQeR&-A3XT5SPl7+@n}Cfs&hPjiGh= zSC+Pv+)LzG1fp{-M~K`?a|*cviiF6m_XJ8Imu07l4)J!;`B|~-C+Mht@o44&K*=>F(GbL?G9`C0RyUyJjoZKK!AWTlD2`lWFpC(+IH9*+OgOs~z?M|T61fP#9qJR2c>@OP7rBIg(_V+PP!VAsSrfgTH9`_V8#_9T|3S2(&eTK=5#@%R!4eZQw2Lv z5=3sI$;3-ZHS+27Oup|rQ$oaSHtyxGB#6{~)+letER-B=>0K+JL1aVbnc}+&`!XOw zWMif+$6OHkG}E>)T@cyiO$#EMGj%s|HigFk4I*1IbvLr%G3;Cb4Gy1W>ds?vaM z9~`!MvrXl3Y)Z=??|$gt%z1W(|H{-A*KDes1tRxZMm@vx%xEoV_+>Nv8NQW@R6lF8 z$1i^=!D}oYzRQf={4|45BxVUUE&?hspOW}k43U_hN$e6sBqlY^i32Jzbx529;!>GP zOna<$KqV%Ht!DYFtN*fZOk1j-J;-q(h#qY@Li*Xz`Y009iy|TYJlhipON^3}hcNQT zdXfI@$&7VrkYiO)DP;z&XxLph(_Xvp@VhFj{NGuUUg2U$|wt%=)rsV#?ItY~9 z{E1XY9gxgSVy^}a{%x}flmt4eQYt z;{sF6*_jPR9otiBTcC-{$j_H``Qxt*7f-ExR9|f6gTFbtj1zQq2V*@}^}}N!)BkU6I5c zW*i}je;WOi;6om4FUyQgc%EBN2G#&-><4sU-AiJe7&5S)An}+OGO*qz@wyl?u)Za+ z9mJ(F9a!ZuxGjJVtbeSrYDT0RZK-P1Ajk0_TF&|z8d%SmQwG)$ii8H%GCPR#h^Hp< zeVg*fjFJ8<$c*)QfsP8f1~gU=D7gzrbQD9#^(S$S7(#A5i7{dbxo1c`3F15p5~CjpWz>qRlKvh+NMka-Ap=BG=Co2$NIQ*lWkUYOKm!DeOcwzM{1+ zfvSejS3LBOCCASk-320ttd=Cz2&|h(gQa}YcQSvX2~&+Jb}>aYPFx@zFHwzxTS`=; zv@ia7!OEVh<(wQGv(Dd&q9T0hPf)WCQ@I(L=`GxeEzyS;C?@(aBl8^5hiC%cK=ffo z=H(&=l`-=`ezp~sQ4kgbc9lNmHID0?3K-Lat|?TYD-&FOr}jFh0)^C82dD~M=Tx8r zb{ilnaD7+>1|FsYgPaPCCiitfRba4FfuFFq0abw^e%Lz|xWSvKz$M}PYw?Sw0u!7H zw8%^ent;fgmeHwz8F{J#W*n&kMxTcX+}n3$#wIW1l*&N4fEqgj9VmlI3=l&G%6JlY zi6H~!X%df%Ap>O%iB%vjmFYnF32O&%DqxLy6}XtTbf8qo;xqOjTF&|z8Ys`0Q&eCW zMM48*nH?-u1^lt#FZwegGd5rm9TjpFX)GHkxh5nUh#}-UkvLBbA$L8AzG4Wui6ka~ zxKyU(p2vC?I2E`we3hEgmXcdej-?>l%yNXt^-LnyjUpj({XBuvRKSjT6_}E_TG)vS zyhCem1E&I(&kto?SboCM^&oP{jwY*sbrTh^lrMUJ=02M6Dqt5=RG`k{unM&KFBPz| zXK6XF0{&JkR)PFDuPbC0v^ZP^UZR+&z%@<u3Mte&o0W-3tEt)6nJF%zf?)OD+;BJ5Lus6c(M0&ewG=vBb2o{GF_ ztEUD|6b4YZGf+`z=tQAx4r39Yib5l&0>!JR#$FZNr*)cmlW*Oc>KORd)0US^B)U71 z7(liCK;$&bs3OtbjK5M5)2q!mLL|1@*%F=hVse_D8T*CGbpQ^f#z8;_ z;8YTm#1M6Pmc%?UWB{%uu}TaXfV)V158_gp4#3oWPB72`IM^DiVMJb~EuDg#LXO%X zI^1%E2H;87c^QCPC=wcgP3_=e15l-NO)O-NX=b zgGme!L&!}gF+mI=_acesKwK(Qa_h0y0T&mnBejg&L$syjwvppA5M6FLLgY4BABEh@ z6bX_0+7l>6T}D}LUR|nX*5n3Pb@_qTb^uiupU+E#s>|;j-3KBQtQMy(<;qxtA{o7@ zE?F|_B|YCSZRu3S%HFKyoEBu9X3l%PljT!%kTqJ$7JcM&o_{9Xi~Ba-OIBC$*PVXs zPqdcRRlG8@av=J#KhaB8SJg4Afc#c1+rfn?W9QxmjH;T4^e= zI?;4F-lo*n5U5J5PP7$YSL}{JRANn7CEhzsCDuBX7)$OOfU3m%P9=WD{s!pi{~)2; z(6a5U-C{vBrc(SIwqs1A@n zjXvj)leaw)`MGiF?J60kVL^Gh)a9Sx@495SPkyfc%QJ z8|VP}#~SmitL3z%10-=AIY6|W^)oa;o-wBkkWCZ`4UlDau(Z*CzCRXJqCcAwvG-Td zQ5pROG*%fXxzkBB7emNhNa6x9gxrlJ28to%9w0FV#HBJN_Y&43pycZJ3SXrMX-mni zB*z;d+RSo<$n{Jjx0oU!a{WAkQbzw?JLX6KPl*$_adq^6Kx=D(TU}Yc(CFXF(M=$7 z$c`q>EduK%t1CV=y1Lh!wz|5{iNa6{ z_W&vi6P+j=U62y&$ETt&$*Dl`>T0rA1-H7I;>|Xde|*3(@T;rFZ<$CebRsd7Y6pSH z9?PgAQT{Uj}~95ap(i3xUgm@P4_o|%Ycz0I8_c z8Asoc_*@JbM`f#~1pi{hr7|5y)$kMm9Y>d2FZ}B2ONi(=szZ*GLA0Oc2#up@)<+SE zzbFzKM{_-a@HkQh{Kp>)YS5p#iP$fmTnid&0+d`&5*Lag2A{fb7!E>5UtqYwNmxHJT@4}=tZkLBhs>BG z684N4Uc&SRhNb3oFED(<(zI_v-*p^l2TCGK6F4M>Ce;{ZUc%LFtCS~obYj`Z{g0{Q zj`xgm+e9OwH-g>`1Ldpp7I@o4Yw^v*o(LpJv~yvA9~jVg$Io+7U^7SG2O0(1yC@Jp z9$O#_$PNizK(@ecAU=6_yrVl&mtpq+x$@)9m#pESysUPSJ7FU@Fcd@*om`jogdK0j zJ)E#|4b6}fR)^wTcy=*@$aBdh-bgAD{V=J7)?_TQ-aO}eV%taj`b4=?Eu*ZD*6Puu*O;Q4l8$l-$`1+3 z7aU){fJJpywU)fi;Z{#8j<~z)uXXxxR-(O3lG@Xywjh6%<&-;u`q)Y7${OkT_SC00 z{`P_H%9iY;>|19yepaG^+~mEf<}#qOqpXB}u3{wiFd#R6j-MU5=g_%+I%GR3d2S#q zB=;jg2SP8EZnFemiJV_OEK%}!})FIQyj6tF?!_4p+Q@oQhY>*!S71P!5jGH{wX~Fs1nMEbKpc3UP5~wpo1NK_Bk{Lmz^`;UB zGft5lqp58K&>6wO44oxBhej4bE;O`9G7s(yKjNlk5)ByKyhVFc< zA=4@lIb?0?XpNof#^F^mS}U31N2|^VPBf>R5uDED+@GN{g6&6~r*mmC@twJ)#vt>9 zv-w1{Qf~Q@YpG<}cg0+H-En>wd!hJb!mu(!Ck#a=At69@@=bRh&%R3j-5^c*iWJ zi)_j8LiDNbA$KK-ULY=&DY?6`Mgt}Hfi>pei$CDWJxPwaAo{802$4(J z>IKt!AJ-XFI^f$#+uUwk*iV087_#l zv;!q)a3W16S|!yOWDer%pzc!2v&~;Zx$`EYe3zqq1HBsvl=5AU@_6jKfKndoD9^#3 z1(fnQqdW%6XH%h4p5Q3IN~WbCGT+)(%FE0+MJT^#Mu_reb2`eys_->ij`AcsP(t~3 znoLYfsxipSJf3eObW;Vp6HDS|*KJ0*wTqh{(z~@l<7R6YH+Nxw2PAH`3CGR0-gMio z=N=X}+qt+|qYiNoXxu!{#m!f+pAetK&Gs&C)~L%Y6KLG*;LhXe*iC`P&5q7j95*{T z+sDoGz1gPnmSy3%xo)#vi9zm4Tt<~WLF5a|s8`~E8F9H1F}dsc^H-ucZVq4S4zP+t zFfYo8&EJAPiTd71je~)z?=%vV#gNeQJc(z-5cU0l#A-1_eRq@i5yYi3Ro`RkK^Lg{ zo^QSIaq~vn($JDejvNrZ$Z~|#_fG4hsPFw0390W?Pav$m8aIFU$Aa$kr*}qd>}PaT z$km{+YCy@gB5{ToLhce0J;V@lx01L~3?Vm*#B>ms%9Pw|Sj&KtJ7kUdxOo9>DY*^g z_y|OgvMUlISJj+CZXiWM2l;AHh zgj^m*7Ep4HNz@lZ$X!U{0uYzVl-w;?HvlC!!W#2&vmR|JxrfN{Ac)>&IYQ*#G^dbj zPmvJ0k350!m2=y&b|3h-IV|IKVJC6(30iv`xNTX>7mAyUIQjyJ=d9{Lbxa|)K(=E~c8jlS*vA1CzdA06G{bHHG>Fu7N|rm3ATo{$HHg%A z($$4boj|05wXM=s(To(4u9M90(xq{;i8);mX(77_E{N)re+$_5Z;kTGbe$c&N$*|<8aG#_>+I+Y?9D*p=3D8u-aMe+0`_*gtv5%FlrK10 zm9AebT&{?BQ?)=*@Q%+hmQRp02v&P@lKaZ9chhx6+Jh1efkxIf>AE7#X@Gi(Pa^Ak z>AE7lAKyfvk#%jluI!(|eiCS8ec$=YPUb7V{rgaR|hvG9_2g zh*dvOauuvGABI1pr%J97IU0aymgNYMt8Y#r_s8MnT6zMdkelg`@pI3t(9&Z+d2(md zSWBSfdXu6NQ$_iIW}Kz|OT$JUTpuUycWfk}f(t_nsz zP;yO3G!R3`T}a}5F@)SrB!+;vRHo!+U`+)|?j&o>??z9hEhV>%97{m7$Z~|p4K}Bc zdyyg`a-%(gFgcxLi0sKbC<=4z2{Kz?VV3l0HUqos4;+x*Fhm zL|kWLo(A%#S*s$PrA}BlZEPBMmJ{cG5Or0@AQrNA0fCjeV=|$qZ0eb+Dz&64MHi=X9gWF2tlmxbsF0joc^Zi<&C>Z5)Om~rNw2Nfh zIJ^RAB)i>3vO!H*qydd&ceqHl4STcr0l1O&9 zw~1U5$;Nt{$o1!HcRGsP*$C3Ux5)LZi(E%HV?=?-KbBD=SN^-M)RSC*gFEE@b&>02 z^B)npZhyxWU_C{V$><;Ls6rScgYrUvzoR-j*O2k{_SP7zoEk{Tq?y)|q{!t_(5i>o3QpEjte=Mj^e`cV6 zKhRNGV|_$p9{?q{m&8wE2)S5u&M8oGCz7ZphLDpl4>}vfr7|Vg7wamZAlg!Lt;umVh(2sN zLgcWS z!1^LOKEpL$@~tG1*X*d%ae23VsMGP;N9gz&yPS>>O>ZDNeiKB80MYTG=^aFl@5LOa zu0mW_iH<*x`KY>zaE+8)%P?O8`A=9Aq8a}$(PkMkryak1t!ll(3YDz9j{3>e`to#r z()S^CuLZjDx;$N<^vOfCuYjs(?{t0A_c!(*Kv!N@It9#qf|b|r5Y?5})lTtpSp;T+ z$XaV#S6*Apm_hHOJI(Mir;E)4=5#BsL+ms6OxGuU3+zD2%Buk!5-%my7-YWKh_9Vh z%9AYCmaM!k+Gmv0)9Wo~{G3GZY5)yT>FF)S*BV=PgC#&Ee1LK*uS_3)+{!D<1*q%E ze3cd`3bK6;xAMyIrmehkUA$UJ?uUWKt2`I4ZiB>?K+kkV7q1Rs{~Sca^VT)H@wRX5>c#a0C6VqeQ?m;I+1zS>i3!o}^8Ht`^hzj0J z;s!B91s^0aSqxFZB_tMsxKySp_$k&WKvnQ*>xGYBH_?`=;Me5X4x$S!M@R*WtdF9C zQz;Ts!81L9QY8LKe=InS{?t#8jr*C73c0;B_7hNYX)PK4K*^m*;&?HH+&Lu95JSja zL!vi`OJz!KEY=vH%EE7Y>eMw>~h)ZQkuFRQC)$u5~_pC9$@=B#GC0CVP zRX}uuMFu@kK~$)IZ0g&a6KumXE2`x`4MYXg!BIu z#7kCQ{dsF=ahimvPWHvn^1`kBrOZ0}par(YX}YDjf+k)C8rT-6>6YR)>`#FNwwKdv zOYsNYQe2W|TZ()6C9=X`X`0(oJd2$lEl?CJ^Eo6EHVBq`a}+DLhQTY|v>z3CHBEOI z`%%GZK;ztNX}ZJM@ob)g0F866r|Ayk7ucVPPvYDgX}ZJs8}=_ine1d*#PqsG1a z%s7L~w~!J(?mcS$BjVlxyJl?O^9h!9X|cJ#F$6_ms#AFtpaOFyiPOXof$2%&LNP>O zZXt1l7$Pt;NIU@IQke?OGOQ&)1?DH~MFZn>J#DGLtRlx-Ao`o-2nkG?h&vS`F!xX- zBrq9vPz2`i7Y%Rp$AVMn&!)84=-=t6klR3G9|9$}kHj7^gj|Kzd{{#e%lB{$p}^KtJy+EQ|($uSZ{$5@UKxyQ^Yij_l-%q^wgExmvWP2VhFiANQ@Li$ju=!OAI0RCW+TUTq;v?-(YsQY}Op#C98*Mi7etHpx)bWMv+-N`m_IA;d5K zkUIIPgi?Ml;Z-aBww5G*%a4e4w4t@dJLN|dzBT6_@05+#es(F#63mLj|6X(Ec_-n& z+*8(TiS&*1KysviqP!chF48~OieG6@(>>PoBO*ON+(1~bM+V(v-N7mO8c3vnK27&n z|H3?=u0mY8$C_x%5)8;5>+@;4$9f{>@#<=TOZQk$!)&ImhPakW@b7}z3FK#6Mo3)fIZX2iYy}eDEO9p)q-;b8A2091mou;p`-i191 z$QD&+pB#HcZ=I=+#KKqGC!dOih@2qhg;nC^`axQN}P(p)#e;4#$ z$2S*f(7)CN{pRhMR{{P$4)nGyZU=eW7Po`FO^{!+ z%bhL1xPA678kSGpJnDjcUmCp%MAlhG4e~#mk;`RzkP<$~2kbh?-w{E6&5!OtO3xW5^aA~>U{{8pfX^C*d#Vu;`@C9zlx5u8mVJ`zI&=MNIUg1A(sf|GL|?~?!( zoVM1By4n}+F4|HxtwxRl5bbO^LTb9f`Y3`kh$11u`PvgGB@VV`6HNY4LHaW$Eq3)k zbX3UIqp_2LlIuvKoftx{4~Z+q5OQ~u7%hg7dy2&4ATE_Dxp%SN21>4-HRgkSecDoT zUyx%Ph<33YA##JvDdaj(Bt&kMCr}Ext^Qarj{Zzei=Fi^9Tjpv(bx|_$yI32qy;Fs z<4F{VA>_^?ajF*cLwj3dHsk__- z5OTFC5+Zl39mJWu{?j0Txjz<6r#~~&Vg>xLjgp&3V{?I$TTS9EG33f^C$UWoA@?td zKgAGoRXU(xATE_Dxihg^043MY8uN?WU7pk>h}=p~AWY7^ zy7ZGfD?ScBl{QS+NgTY6*7^gDg9Vl^6bFZM^d=CgZAUE*4zY0{ad3(DrX&tlNQ#4{ zFK#DU>G!pyEpDsWCH=}fWpTUMoWFagEN+__+X@J}#z9%!mbVT{$g8CXl0)8WcGQKu zK~?!&p$mBhr@OOLvbfzzVF`Jcr0JW%Q(%7|kdSvtn!Xu44|A@%3UOU0i`&;Rm#eD? z*WD7#KEYhCt_HXs6W3169Ux!!3FS|O^ZyXv2yEZ+=0rISY%45!mn?3p#w@UvOVh`S zK}YsdXhs8Dxio#OSQ%dqkiZu6fz2&$kM?oOEp98gz;+Iqn`?oh;2597EpFr9bc@?m zZ`$HE&BeKAD0~~xIG66?+{8{P!62Y1RCcOE+#d^t`9WMW%@WZ$vt$; z^0qB*v%PJL+Z=D(;x^aYwz$pnHgWHx3T`Uo7q@fy^(l>e9bDWyk504!kxwn7#=U>c z_1tNsK8uoz3_|M^Jq)eGt!x}45C+Aj*!3%wmyo$^rc8h zU`BfarG$nZ{#bA`{W*#CACp%lmq}x3K*<%7s3V4uYe(W7F@#({5?6{LBS6~MvG#tKiAMTF@chjH7 ztpAvAE4dG8Y%Nf7dr0gQL&%l8fb$HLTn!QhVhFj`B+dkJsZ7aTgVh@-xiQvQf!-`U z{-G@;H-a3)LG)hB5hC}zIfYzxiiF6$<_UyDgT}oSyN}r`p+7BI|FLdRauaCmZlL6z zA@QUbLhdaRZ-^mR?rRd;#1L|2y724L7;&jg$yLWw1t__rtuasT8&9q&IU0j#rsW8c zYhX?x7tp;BxwAZhQpnxyj|ETApSEc++0s#R=g`<$K*?QA;tDZ@+(;6`#Sn6jkeDup zkb9lPauAowl-!qCTY-|BWQ}=pvZ&N6_ZvBW1<{8rM~K{Va|*f74=1!DZgZ{I66rIkpKc~S zc+QSHsdbV50``PcT%@meM5NzCVTtr9Y5L%~2B)N&oEjp1N}4`+Zh_fEU4^*x!EX&}4zb!6yuPBzM60A4gUoqk*r1eWo4ytC$`6$ChE)B{>i{4!fbf))6s(xR` zt=KmLnd!|=4Sm_;W8So{D43I~k0D+l_e`KOwZ~KSF+`;cnSB90adT7kF+@M?tHmde zA)at2?hfn`Kxb-CI-mcFf~UOMrt&2>I4URWCFj0pl{g)U9wjkT3?a9K#3C_-+@~bgiy=|$cM|(RTq;v?**$m% z1t__XtRwy_3htsUC0CUkRY3GJ%Ml{?tMyUHJx-AjxiY1b(g3ypx*64ep-1 z(pqhxQOxHHMX}}_Z44swtrm-7)vPxX#X3=4aumCBAVSO^6ZVus*`np2?%b|uEZ<)f zWSnkguhMeFumuF6OU-$Ucgj~3OtwZP2!#R=zsJPrn4YQ|s@snk@CT_xV$Sr`#`@?K z0v&+Foaw3h&2N1$uLSwuSz)>R!*PPRcPSUJy{g1|TiTXvbQa{8O0-Yajn3Ps?G~Ua z(LPl-I%i-{1)>riy)3wm&Q7VJ&rh76st-HgBJ(mWP!x3bIow9)1>Urc&Mrue?T^-rx+bot(v}X}M&xJ!qWdgIXxI+1KFYAYh$5k3d%Gu4%9?10KgMJ7AQ+Gu z>zHZe&Ze=JK*{wcahVuG?p6{viy`D@l9(ojkb8y15)hZll-xF~%|OZRvc?!^`d5jz zl-xdY>;=*NmLo(iV~@K4Las4ILgWhUU}=Io+#d^8(VyX|v6HimTyP27Dm19%s$k>; zCD(*R12Kf$g(S`wL&)7kVhD&!WlC;3)>NS6##mzoM(z(!?s;-N3!?X0ju5%$%_-!v z=w682Yo0)O+29s@b|3Hx82uTO8jEEcxmRgyDNu4-No*2BuH1eSd&LlPnU}%^D7hjM zb;Ti-DYqe=CoHBspso%O8rOIp%4 zI^Qtod)_H4oi29OzVuGn=={u_`@K^(I_FsjCGsRt`cU+VT*6CT^5>R6cbvt$S}qjr zJt7osps<9Zb5eDq^GVpx0TPPNN!5+cS235Ws}PrNbbgGvPF+Q~bffbJ%x~4z0GDob z%9r9E1o^*Nt0J7?7>0!M%tUY+B(VJ&552{+KOTCE=eM{9ww`3}s0E6G-+d0Z(fNlr-A3mDZ`wxZ zpK+Z&zfR#PK;zuOxK5uR@5QeZ0F85p;yQgUyqpa%pmFZ6xN>ZZ-3n-&``h`7-{Sel z+qTj9ueWWZlb^?vML^lfw$Yj5ZQJN9<89*J8R_n1`i;(e^DOQ)adEE~owyi8T3beq zdjrh4n9FxFC4Af)Y5pVP-e$XI>{hZ*QXw_guc8UeO;kPvsK7ixVu~0dFfWjpFNO%r zIuh@SA?mq@#7+>G%2Z(DS8#&@6`1#}7k;C&A#JI^R3t|(h;FnTA@%&)`X~a^nIa+e z{KXR}CGK@&ZYzI01)@J$sj+h^8M&G?Rvjq0)+EjpL&#l5qNf-_?luxPiy`D5Au$8Q zr7|V=2G%P;$@R3xeB4XWmXg~@jtwAsrR4~b8*NS@SC=9oa+5rPQpoM{$AXXPPu0}e z@%cvX8yfo(D7iAd+2j*L$mL_?0wvdsL<2E|+(jh1fw)wr&(P;#%6 zST2T;+eBi67;@!)C$U!yA(wL{FV%y%RHoz_V-*1tTk7E{bn2F64ZxMU2;%=Eh(s%zR@|$ zN{`o)w$WMF?$<}XQ#Lx^Hs@mRl#R}F?Q*U0P6_|(&H06Q%0}ni)@zCMf9Zkbjm|q+ zhsd9c^f&MWi@V~w=nPuADL~0C(mx%&S9`wr*ad+xnQ*S)4F z^PHKB5E3#M5z-(kBqfoO%p^%vN(dD)G)WUuN(!YkPm=mHQqiEO)bF|0UfVfu_kJIr z-yfgzc)adiueH~E@BMlY`@QylpJ6#D7qO1W-Q)k`=AT&Te3F#$L%p|Ev?>y-ehVvD z4)9@IC$}%q(ng@Gejmnla{C^9H_*H9$8lZg`~m(A&{e-r+?}-atE~FXrb1nc+7s7> z&gd0f2_SNswXI80ryDsJEzvGU{OwN{I{TT^t@`!h>Ule^3!S-EkT@PYX)>>5QjI}= zEfj86$s^65kbHYZle{@zM{f8h)4P&DC2x+m5?_7zX+R~v=p>&FKNG0rEhhPGBu}J5 zmHe`kd?`T}fyhnPwo1O$NPCgI&`3zKe5OHOPV%|jho5zl2U|(_G^AI{Y>9$-3usw;#WP?**E; z&G3oYbM6WCEsp!IPMYZ{zqb6mQ_2@>=_^**j>IZ=B+`dc4kB|bP>;kaBUR-{Y%t=F z#PM~|(>A%f8Rm(b7ms~I<+=`9jv7k?y$`g&XevbR1Lt9!BSh{4qcE-#BKLtiG3J1{ zRHpZVb+E^Q-Um`PyT@DqiGz>})GyYSd}b6NVm23f;_+=a)+d&wih>CnmQYJ}@5aV>)03(7rh^~o4e z6 z{u-5U1$vo(gYl&hxy=8?_)Caf=H*B5ZSg=a^VS$GKwK)*%lsnP0HBxot=0=aK=-08 zz08LZF$6^Kw207Uo^O4W%lsNP30>xuy@2p#u1kwEd|B`d{plW$T~^D)jis^cfQq{Z z<4z$W?s1H@LPXq~7~6%&81@s!eh`<+RNP5dbEyCocbhfl2k82=rQ)g)Q3XWrwuq3p zb>CXFm^#ac4lo8*OxBJK)|K_D)bskmEVQ-O+G zV~zPm;qSe;RYa@=(e)M)68DQaMO>8bg~X-UiHtK@oZfu~TA80ej*O2Lb#nK4iq@V4 zdiU{hp}Wt^l)eBW!>ty(`>eOoRqj4dYi|UKtQMi+JQ0_@Jv>fZ-)ld2x?DR-oU&;#mfglp(GoTZVGyz>Ic2R^FDr$|&eXlZpd!L?Xi z4WV^Gxoy^}44g&Y$_gzCckj-(pykMIdzsC86N|zXn%IqPcTRbUIGZNU0(xWHol{SI zgW(qexv{;I6Iv90Hz%|x{9cYO3eO>Uif+(2c;833Md1%Tb&J9udTNWpALZzx@Xu_# z4d{LD;~ZTS{@_}c(}CXSKFQHV;mb#*1eXH6&wZMsH}CQA8-U*D_Bh}1Md8mpw?*N- zp4+1E=bqc5@IKFNQTPkbx$mvx@ru0sqVR+D?7mmp-S_UI6L)~fGZv`#y}d?W=kVRm z7XH3>(ENq&d!6!JGrTX2S@Hgy*u?raz^tM2l|ToW9T?k$$msbc#$F*Zz@%KqO;Cso zFqI&ug1A(s158_3YoG&6E1s3e%P$Idp)DOfyAja^L_1hSXn^TueUt%a2%Cfkm`klt z2AC7yAo{8=<0l4!;Mbhkg$+#H1vGX(P;ob6j1eN@6`@fgx{qQE?+Mh6oXHw`0h=c;Zr-ihB&U2B^5ptg(vP9U^E; z#l1qr%OEjyKop|5-!j}bg=ua#jE7i!vy+dPf0u}c&#*aco zT-F%60aRQqj4DDzTxX09ATE`uxGP~-02R028uQ}5@Zu&BF#$w>wTO^7dAchv5%rKKM8v&{@v;y(Ex*S2T!@H^T+aXx;!>H4 zs}8FSRNP2w%!_-0w)DugBBBL|-e?gaaSP2U;yz`Q(2-m11%!{B-qdsL3idbk3h{1@ zIdpPU??h`If!@@8T(D~|W zjBA`kJq}%~t|qwd7S}fDOX@1X^_aLmg?A_nyT|{>%|EdyysKdlJfk_lA*&*> zLi%`t-t^hw7=nClucV{fUhZWKX zs8Cl(H|6M}@aY57sB=bGjAMk>~Ojz8v?XEQOB8 z=QNr3wYjCnAb;{XL9kdQx3zi_k{@hpk{3J4-RNB>ppq9m$%Eh*1C_kQNgf9u4OH?{ zll(1`@1{bP{D6~uH$ihjq^q^9lKUH3FOsh`5|Vs_Ii2L1oTm3U$qlR^u_*iwP39FO z)fnUtB-5LslINN~A$fi?lRPEoY&oJ2)4PX&N}iI_SA3h{8-Pll<|Mxle+#JO=_dIX zB;P`XD)|;C`5-|DKxC1%t&&$8c~~TGG!l}$-JDMHP1X3iO(%Jh6(l5YqshGKNi_!f zzwjZjp(=Tw`4f_7HaE#bbJ~c!)EijRq=zbbXwEs}D}%2DP{~(1$qnGOfl3~3l8+&I z92KhM5l(U!f;xi80c%?&A2qT_Bxkjw5ndt5Wz6X$PwEr|gPi2uwrN80b2ORveo~EO z9F6$i=WOZxx#zpla6nYsVCnzNb|(2yc58{ah~D)Fn$I7~?jgP#;nxAl=YPqze1405 zRm-p0W!5m>q|Mt7Z4~^LZR!1PzPY7wa5!7j`v=)}fo|U<_}xc*L_|UGhl}`x(%l-- zG&tfT_EBZC;Hana@ww)~pPn9?pg(~4SGG<7I^IZ^fldJa&ejRQtZ}@x6X=mTmaP+j zGj8HH7=TUy{>jz}KyUcDKqmnII-h*^s($BY;Etwz`Hz0*W{T%C-FI%LdOp{Edvu!T zOc+{`>8E?ngyBqh#B(MLgLotp^_&UAM9MQfXTp#Uf&F+)DlFHG#TyMJd|XHO2{Aim$B8i9OTO^0O&4 zF#%`_^8m*ELL`ORi1CaNNnt+5cvpy|Fh?;CgSb?tDNLF1d?XTR3iF8d!cQ9})0U<% zRf(t!qEA~yD22(jK1vF+giS&zOa(8Xh-t%YUl#PCKPTtJ?rLS?8qruipyGOBbQdDx zuEe-Ph={utW2z7lw;E#wh)ZQEZYS(jpyK9PV|@5RUl-GsirYuTUJzYq5g~CK%_-t; zVv~@#9bP~Y;`00XBX=47shkrVd4`GmiN^K=6&JsmpHKoSt~y3#AtJ5=MjIg_?sAMv zL0l?RaWi03fQmcC8uQOHTGEz^TTH}45UpkrA#t6}DdPIENl08jFQ5o<8+=)C9sQ}F z6YJjE#I2#Rl|aSqz}O~4j@*|RdxeO&lnKmcg^0LHkW)ciDpPUoVXc9Rd)XSRXGg9K zZK=4yL|h7@uUkY&T*?0K0EoB(HVKKVYK1rp&55S_vS14RX_XVJ*~Y|OOJgH|ikpiu zTZo8Tjj=+Ah}(|wvJersALAPkm&#OJ_C($#0#w`_YmCHBUq`*TN<>ru(IpmP;-d4O zn-HzSx?;wwRv-d%>7oh@a^CmdFG5;{3;anrkKT01iKVqQY4vI9G@#OYU~~~8(uQCR z79!GSU`!Gs(pF(C2XU!PrR{)i11hbiHRh$gM<4aLeNMz@Allp_3P~Gi1tRT0LfSRH z`$b4w@5_Q^^rlBnY_FI0BTan|R9em?Zb?9;Rl}$xM5MLHXe~sfU4bzO#HBKob_;AO zP-)LwWB!zUoVHZj{X{GR(KjrjkhGtzK%~9OW_Hv98(B{{A$6)Z$;!&uIWi!p*_j+R znd+^kt%re5^?V$+7=7t))ILk;dJwtIYO$%_8cRC#{XbNfJk{Ghf$V`7t6C|i%SS}` z!}sPMnIJO}{ldMSw)HIClBwPnCUApnI9%$T+i`wx&ZoR{H_kikg5BYrAK@HeC+=SF z+=uh9Ie+y|`MRLlwhuE&lXUr)Ic3HO(ROPz{5$c%IYe>wNs*6L7RgLH#Eidl}s8_=fRr6{&6g`7Wvlx>@q2i z=9a5weZGjp{{KIjOrhSic|nx_nQ8Mf<$rG4yj(KS{M`k-(Nz=Ek*t%+tLyQ^^n-4e znBL$L(_VD82hhay2A7y#4Ic_5F&!69Om7M&rsI9-ZnDV6!OcF4lq|GKFu`S^_fpmE zT3taf(MRkfqG>S6MZ8VvHjQW&O!g5jF`eS6C8kp?F`Yt}fhMNYTw*$NDwjOa#B{n# zOj}Ol^Ho3-(-|%a?FH`vG%>y9gv4~F=a!h>>bWJRvpl!N^fu2eF`ezXC8oD~Zi(p} z&n+>%!*deTKUmC=mrqQu>R^fKr`bAxA4aDy2a&%mP!rQOOu6M%fzziiTX3b5nDW&* z<}Z|zR%Z!LUd#>h`H)w3taC@ZhfJdK@jwUKr5KBZ$UWpajHiUiK>H!a+d^cZ{R87y z5SPkype;3>sT|OOcCq!sr=%rlO9$G@L{tRP6&4Y?_cyRU${^d2O>~fzHF}cmoHkxS z5sA$szAX5h{ydN!tA4hLYd~XlfQmZ@qpJ`RHx%PCAtLS;jLAYo+`||Tfw)wr;YEQ~XRh`7NRmw>obrsAf-CIJ=K${O=2>6`RakK95c7Jz66 ziwKDuW=_5HpD6AIE0mk$iO(Qj_GQ5_`m;Vew$F=OMPti>ihB)Xs}MPI`!Mzh5pn-w z92FwsD%`>{9f(V1Dy}W86;N@nTVr0_TG~=^=M&KzMBlTBkhmk}6mi?xBy{958r#t+ zLflYa7UYx&f-Tvx&7JMYT}ERAfr^`oF;R$!Ta2+lh=|*S@w5;T_bJAQATE`uxW8dX zfQq};8uQ|2(w2(Ln@I$Sjuh|iOp1CkaMx`ei70h^kqS9dhDjH5zCTB%!k zssvP80Y-fxBCRjRc_1#8sk9qlqk&3WYmND&v^{O9v^hk~2GLCxQApZ8D-dY|*vzCI z^xY3j)1-8yjk`W6{ZIBAqD_+0g|xK*Xj1CqLP_Z=N|%GkO;(E~r8_O*kfbz=R3kYl z?et%h(*3q|1>Mq;(kV6|Ht|kLN@I=Owbt1?B`IBC&WpWMlG4_8;$G*Sl9YaB&Y9jR zN$E|tv+nm!NlGs?eUg-J(t_lqbUtgp^3tUA(IgU-SjkZw<&x3{g_6>5y1S%wluJrq zWKV7al9Y~eN$LC0x7F1M*LX=?4?w?FS7TiFNcxyEi!WPOR});1N(NdQS3byQ8E{ng zYZ6r#S_?>0Ix2gwL|IZgD*H%MQaUO-?|4#LV11UX;(wBqUeGZJE_SP>R&`>5cy$j; zN-xgVAEY>o&b9%%Kzwm_cUdj%5AOpsyBnCTPd=`N4+pwHe5uQ%N@tS$FQP(SARg>8 zr`rg+1w;l|+qytJ%t$^Oqw=lZ^784@_1Jkc&FL1153=CfFWY_ZhZQ8|86VSRUWcR_ zgZvLzcx&V^Cu+Vajr?O?Ia(icZY#WuI(hBbQ@r(BWGYn2 z^_}E12|5Er7K=VqTNN3=J+I~SyApl{P|0~t@)Y=Zppx@VaxFSGnhI5N zNhf(RK?^{ntF^6?`x`kZlI8o^k&0hN3tORwe6;2#2&d^AfRA(U=H zH-=E5O8zTLXF-1u^ec!gvbI(7Y9s#<$s3J?ByTsTlYBq#Kt7bE*YYGQNJw5mlX=sV zY7FvM^4MvQO5SJwgyf;;ndCiL`g|*EHn(b^lJ{ik^R0^TQ-Dg|>m)aaHv%g8bCcYL zZd^cxD)|d1xfek_K;(e6t&)!#`A{ThwJ+i*mocZ4e3)-U`M^ouZJQ<}FQCc1_mgVm zM}7E~;g?l%1FI(?c|dQI{IZjLIla3SsN|QOLh30&KJaj$ZgiPO1{s?iz0cAk&xu)%;_Xg;5$_wbdpC}K|=Bbn#>!MRAZ2Tb2siC zDtWj06Ozwlkx;*!YEG6u#VkkfN&}TVCrh7VHiXv&DtWGx+!=lrP|5R5@<6)Lm02CbnIt+cybL@e%I9?Wr!}S4zLvh^9e#AK@O{R`ArVk5%;4*2gMk>4V!#=5Wsh zx;|Dp%YB^x4!-3I=#i?Dr4Me;pUeA*fUb{Kbw_Fhd>GL6v1-nD{K0K?&ux9IhUd0E zR?~A^AFJiLt&i3A+}6iV^W4_Q>UeJJV|6`eeQfBZF5C9&V|TI$t!LAX?rfSyrze5P z2n&?6DdPzvV>p{`W{dEH+ih0rPp{(-Zm+n=HO9xqc!JP0D|QVF+4@1WMKp0Q(3#&x zjAw+%%I0qmq=v10~L2A z#uY+D+*FK-LPXqy7>k97xR)_r0CA~I#r+5NIZ$ywTVsBetTb(@xT8e;0iu6eL`YoO zi`_mEaZT7HB(9bf;w&WYI$sv-qCcIoVzqd%pyD#_3)+{uhj z@?zbK{`AR;MH#|W+*TTU5vaH?G4=`(aera_Aw~OvPOU>kCv| zWoyhYNW4u?^~jAUVjPH`W)UHAW6UYyemYUyG%p~$B%yDX_}Z5R2k6hBtk@S`+$j$GQ^yjL3%m&#OJRXi1eiu=hL^9xB&(w2&AK}2&9 z{l_9qTw)=q`oP4gxr5F0=<&1R=9ZK4#5J;szAX5Y-VD!*J$E_1hwFfF~2*zL` zB5e}Jcp)NfDaL(5MA}Ojn?YPEQ)yqq_5zhQ(;D;AZl^7kc7%xEL3Dvd6q2^Z3gp-= zXET%bmhXNM((-Kx<$VyPnW1FG?&bVdY0>%gSI~hzSHq|zM5MLGXdy(TU4+qBh)A1= zaTAD3Wh!kMY%x%2r&weDlpIQ1D(x8}o&wQ27EwrAPb&~<6WPq94fNd)OVc&7eO6Y+ z#^uRbheVsKk-bb?TY#>S`MA&;*=|bT0FeV$i>;Am*=Q$gWc4`3lGn(BiR317dHv3v zV9uAkQ`X3KnLb$~`&*T}xMJD0AJ9ZMoXiJY2DowM}8ZLVc>iNr07TIH?1xmi7A z_3K;qzF$kq5WOphwl!2-jp;$;!Wnv<%3HcyhBA$Wm7=Xf<^;!S$p>wSl%& zR{^da64eLV6UZ7_Zq|R?s+c~w&CNQNv__VjRr>fESxM`&WETIEHL`yzvk(;1$%U;Y zCLY}0ait}uOJbUs4yUt2fF`C(Vw#xV0-p>dF4+!E8rJ-5X43C}GtUFW$a zrcZiqiRpUJEirw{b4yI0_MF7@?3V8O@rh}*!Iqe&xWse{ot^+9-7HWO(>shb1MPiOJ|E~n`y9qoLS&$Q8)KIc8E6k->=z;f zZSF$e&;a66nGUq|VReBHv_Ducd`h~D9_m2bl8Dnm^sq&Q?){Ujk21*aS5duF8u*m- z4ljVA_QaI*Z(kO4qCc<2VxN0)ooTECP;o;sE)yc+CS%+zM8qw_SSUoqZNYdR#HBJ7 z_XX@TpyE=RyFKYs(lxZD;{G7wFom^+c=#(fJk;61Tyedgo`8khtw$KoR2dPWPwf74+xhSnR$lOx#N}wi&3neHeR$ zh`6H|hlPl^GK+a&22@;gj3yv1m8rP?us%S=m9xgYxXWlu#a%5$I#%=^EZZXCJAtLT+jCDdp+r3XvoC8^$3J zm&#OJ$@^1+;y}f{WQ}=oXVR96JB^51AiC2cLgIchr--|lO+w<1c>#z!F)6*cg+FrB z=+CdQSkIv*?sOU}04lB@MsFb^?pllyLPXqLj9EfN+>;oOfw)wr;@*Y51ytM+Ys@F5 zm1#@GeNV)BZ3nis5QMwsKUbk8-DJ^Tm zuOy{gwI7L3gWvF9AKbREtv}K&Eh&A+oIiS}B&GdrAW0>iVdPAkCrRmd<}B@bXy_Vk(FDM{(;<~-j!B`JNx^hr`WS_?u+X)AZ;yQDOU1SPJj&6}cP?%jli zlG3HaT~fLrrb+2X?8*0lB&7>tnw0(o-LI}jxNefvHGL_ol|Yix1+n>(O_qh0QdbjP zk4OgE09r>~1-M?7sE*KfK$6l0vCkyR9^5X7{gITEE{GLBo|IOzK1){dKS@e^7UN5H zH7RXtRVNmR2VG@J>9m-Bf!Bp}wja<1;%TvN8xcMVel^hSZbnQW_RNA$1G+$bi_4@+ z4=4BUO@+FocWX=^_ADo88HjYXwsnEHzme0>7`@VnPnWJ|FXi1}PPah(Y7>6UBBl>} z8dyPMo^dBl<`pE>807!jig%f*WXa3ql~^DycfCo@iRlk6KTGe{1I@#8Vx2_tyYO8= z^6+9l({`Wi;pb_RKiQM(vt;+lp5iX8{+n%o(e0ZAc|O7|5a+vyCd>F}6gY`9qlAxe z3&bTob$NIxPc08G?eg$tY&-~P9$v=f;a@$#QVP%`b+XID?|m>OxC>|=Ue+C{$KY## z=Hcah9&DfNImL6!!%y|x^6>JWTOMA)bIZdkdTx1mCC@Dnuk5+y;Z-~*58uwsPhLI` zUw^foP1m@yX&aq>2}E{TpyuJZjMnn{F~;nREy4@L)vVN?UdI=RU$s+%Z?j>gqE0L} z_Zqvy?4gN|fZk#L!uUgo+&oJ>#2o|Z9i}lxT_JLZIS=C;5SPmI4l@ci66hV~D(eL& zvc3k;mfk!k5HTJ^$5=!tGuUl?l)K9fY!b>0KKBBONPD`G-O4K^s6l@UVzCh;P26l6 zn+a6hT8xK z=mi!L5;xAABCZdcgv8zI1r#CfU0)V7r9Z7>u`bt|xK1?I9;mn>7=wj~xJek}g^0MN z821SgaW7(Q0&%HK#qERb0V-~fHRf}=lC-7bekbBL5dGRBLgHd%;PMi2jo2h4u8b8* zc5vcU<3?W=bf7<7W3d{eOkDa3h9;oms$f(QBH~(MG#4V`24M6NBI0hs7z^T3nTlHi zTL4tt6l=^UKEHTzn~B&2qPJN@NZkA86mcify^y%Cynt}(qYK0xNZsW{K1zT3F$2EN z#Jx^quK^XeALAP#A}(zuC!Y`zR~d2&P;u=s+Jd-Lrs6J#T?$lO4{OXPtnboOJ#se@ zaU+OcY!N0dk=4zx0ui|13k-7R`|cMZ?Q>ri45l}i#$um&X}8kUbfD5!VJsIS(q6*Y zEJUR3!}vsq9Jkbm`G_qfE|saYDtIaYmG+%A=A}JGTPp2zBAS8d5sN4!t)dN`B5fO+ z>9GrP>YH0m$rGm;*ZHzw6ur4J7JF{A9ksJ*>MWqruD}>1M5Il`xJigeTY|Abh)COl z@jQr2Wh(6p*k?ecjkm`9DS0bxskA?cI1Hk*EuxULbygtKma&;h+v2+)mZrIQTN`zK zE;!KPRYf)+0OdXJ0%yd zYx*P?56GVol=O8E9he`;OLOsyk_f+o%q=16a`8zW7`=EU61UUFx?DUO>nvGzP4;9} zAh~!nHb}Cp*3cH}YJ_XNWX!#x=c=nQuDc|qz7l$cx|-m6RH7z9$E&LV*DDfr5A;qT zxp*|T*JaD`%{ zm_9;hR{>2-@6Oc3bUXZIAc^TcnV|*Zdox3c=>lKs7Krc53@s2Z%+v+qpQ-9wt*#(g z4TZNK>P@N70|@=A?G{3K)l>@OH5aIZi(qi&n+>1*mFxvS9xxU>1xj{ zFZ`*&L(WsuFLd!c*(=UxCq?TLv^x7Myb zRygR-=FC`dlZl%}V>5t?TaB?oh=_X`;{_pd7x@C?Qz0TQqukmfQq{u z<5D3aZUV+QAtLU6jC+NMxXljhL? zacj(r8$??w?kXa#1kth<5fazhoFZ-_n}o!5_W}@iV&?XkFAIL8Ki_A@Molnr<7n)9 zpyKYsm@h=cJ&Ey{5E1t_#_K}l$o-0O5X7Z26<6X3gb5~5{H!(RlhU(jOU2bDq9%yG zW)UVXk#8Tg0uguto2kGc=O5qwBBZsmL6o1vqBp-}#=1{5Y0YV>2~cT$G0qbr(nexj zB}Am%fpM!4k+u%wQ4p8PRN6bRH-Sp)YK{4%v^;I8wC{-c21Ex~L?LODtU#m{u$f7_ z!*@R{O_S1G8+UzD`fuh+(I!dhZ?yFb(4^GIg_6?LbzG7}M9Nt$J}I@KS(4JPv>%BD z;#L23fq0f}eN?yfNvVx8#U_a?oSKxHvx;|0Qrf(YyU3b*rzE9&&Dq^MB`KZO)6IOL%fq3c^ zOG?LO>dzhAPiOA~xa|T_AoPz76OC@y#xiDt$e<{}?LN1>%V= zbNZT~FF<6IwXF-pJB&Pp#^@(Te7d9y#NV0IEf8-!i-!c6x3mE6%u9tOW0sN_yg@?`i;KqYrJ$+M9>fC^P| zS0{N9LHB~l0Bc(%4>NL`NFHY-BzdMeo#f^%tj(Fww~Srm7JH^PJ9*M<$y{q;UqVMHv}rVq)C2|Zk$PlD!H_i+>@a0 zAo7>Bt&(GBQ!lUUL~>apA;~q(=_F61$2m^&zCw~G(q!J(=9U_R{0;oN`jHIjd|Ruh znYPF1xVYUdCizH){NFHV+Bzdgws;sD#xTzHxOorZ(8dyQ%D37Aayn>_} zgZ!+fEODshk+$5Dc)s=5T$4O0qoM4S7wO$5pvwr8GW26?pTgelPQ$iik!)o^Q?c5$^fct)9ANgjt^2GQw>c zx{R=jjjsf{j4(Sxml1w=n$J!GJyN&3BenDy-pmbj8DWk)QqRDj1iFlHhw~j@Mwsil zEhEhH+?EmU^xT#a?(*E05$^WfmJ#NAZp#Swcy7xG_j=AULQS4d$;&Sz+;yv+P5*Ic z(=Ix_14Qatpqxz^BaPJJY?{Cp;pbb^t<;}h$DeOi=b^d0cuOHe|FVqO$XS*ke?=4f zfF{Uk&$7HOL=xmvAZ36i$SpAngh+xs0HZI6OJ$lMkAvL+G(mpDdeKCi41$)lr3vy3 zBBp`p`xX(J*fg*{N^;zfO+pi!HdctU(3JEMUlz=zKdUoh-ET8-chlHhpyJkJJT64U zy@9b^h-CiR)K5vx7h#GOlH-GGX_24lDo5jPWKnh+89FvbHyMBHl_ zTR~hZQ*qzHz5*()l{Mz4q=&t@e~9=SL_1hSNZc@Uinu(w7ZP`a6&7{mKK5n7WAx|6 zj9A9)CN5_KqZCkar(x6(BI4R(v=t)a24h?#M8r+Smw zu>ujelg;$#1v!U(_luC$W`sW}-=H_|XT&zovEw$6rfvr+?Fo!Wgov~q7~6!%ar+MA zOCcgHYZKiAaj8tD$q$Fs04lAMHRh$wp)HkmCJ}8ww4X&3k~YZ-MA`~AGii7D?iV5L zU0)V_N^kaN#1`CP($1l&u0W+-jd7(Ak#-BlR3Rcweiv++5RtYW;}sB>%2e9-u&;qi z+hdLSQ*sz>skDEIke_;r{$LS>q!qUzRHRK}Gm}=)+$Wrnx|FcY%F5{Z90Uh4eim)A zl#u;AANT;el;Gn+O9>}aS`tLoS}nGeu+x$bSxTr+y5VM_y=gy|cFt&~wY*pl_&>h6 zZoh5aUbnQRgef*0_V-R%N{HFDd9`=SQo`froa&vjlyH-sxC^{fmJ&+ZetgtBWhvni zbH41IvXpSU>64{|eOi#bl(6C&cjoI-!sa9rlz6-nQ)idBO)8YQW#8$R62@h;lSP6C z?8!PnmJ-Hg43Otr9ii>i)d<%Znebl-?WeBBxMs_Wfc)s$)#_@3Yo$cZgicde0j|vw zwFJ5l$Wp?%j1S%7fj-|Fm+^DbQo^{5?Bh!b)2+{vS^Q6y67o9+L8d0A18vDA@qBCU zB1=p&U1ItaoqYmmVw&j^)7|i$KoZleaAKMrPE2!rse8T^_gSR-07NmDg&w7HROV zQUWwFE#;EHr{GTjO-xJs#L(V&RmO8mOi%XQ64SDtTVh(yb4yH5@!S&AQ$4rDw7ln* zm{#zd#Pr*<-6`%9)9QCyVmjOwylmv#l3CC4G|~>Oeb?QU#h)ZQEt~RVXP;n1fV?HHaOIs?g zEfK8&Up3(Nbx7P!bBeg_Y@&A%{{e`Py?`RbRq5c5TrK+3g1i4ccI0}{SQnt;MqmsR zBI0IXOc5gDR$wd@BI34TyaeJ>nTq=c_9akpb*wR;lFpckD z*(4-xs25O#xF>yC(4799l@VKbuZhcgnZ|&MtA$Zbh=^;4(OQUzyA)%95D_;S<7N<- z%2eEguq8mnZL-F^xXWov#XU#FGa&kkMTEqCXHF3}g-t@@{_p~d5ZAAxKXPZ&pK~)} zV;7jXS842JpyIy9_(F(?`v>DsAtLV7t$b+&P;qBqoDSkrnTop@b^%avms(?9TszuQ zaifVC1)^74L`d8mbBef2*d!$GelGxVC+6G#__E-9`g2i6tk-=eZVHV}04nYQjQfR% zxQ!Uk2oZ4~W4tRwj@(}ue}K4Drs7U{h50a0aTzxD`J}W8ZK=3ML^J@=(iUOj68Ux; zD-eM#*h~cmIX%n`EhOzuUlv?WZ?4FQ)m>=P+R{`jpwceE7$8KX-GDJ#h)BB^W1bL^ zwgKa55SPkS+9$9NfJ$3rjrpYXA200?5kGs!e@=i%gkD4=$bmsU6AZFSHSjIagDXnKGXI<}g%17ly)Vu}ex*T~b z&3Id)>;n*~83&S*($tK|@uYOV^;xot|4CAMHIHRDZ{36Z~1A+1;V2KHqv5z6Qqwwtc8j7l?n2>H_hP1bq)8 zo2+eJAl_l*b2LUjG2+uD_k7EoZcTjFsX_2v)IHy_g2V#xT{M}uBB{n8e+9qs^PWl$ zI-!bJLh|`bO!9kCeGCx1$~q4{RLSo}^)Wyxe0e}6f8Zq7gVzKq`9qVum2PyRLY4fn zliZ1*_8^jNZL8#yjl3(8Ya0nkZf;H|xeGmh(@8#5Nb(Gt%sXsusWHg^f^WOpsFKgM zdJ>X5FEz;V(&5CwV|S9^N>~`wB_EgeLR8Hn-Fm<}`Bq-q{+{2!d zF5-JiKi7z+K`9^M9`=;>)Xk~OcxrR%lcV~ur_Xj$OrUe>vQd55bKeerT?y!sDi_tq za@}^aAPRI&eTq9$gW;C|ol~Fce8(U5l=s}`)D=9pIdw(PZBAXubDL9F_T1*wRXn#j zbyd%8PF>A&=F~GsyF0X>Q%`!x&ZcYK*))z$Uk@U;TcDgx8M}>K%dsEM7U73IUt6g^ zy^cTZnK9Be#%C8=8fN`e~5%(O%Qy?ytsko0} z?*kQA+#2&U>j-VBxPwIe2%=>zA|$SbIYnG$HVKLA>;)7d?k-;zWR~F(b~ILcrHMO6 zV@H9CJLL^#B0$9zU^EmW;(BBB5F+A6V~hlGsZ7Pqhs^^jZm~7y=VxDfachZK4WcV7 zA|!5yIYr#RCyM*X3n)U|>7)FSD@}j8M`OQvaT{ptX`tdh!gx=J9J!w{eiS0&a(8iM z0~OZ*qYj8mWh(AGSa+b}+F4_M67wQ$>5&^n#7GeBY7rrE^UW#Z_OMCl$St=*oP}m+ zk?Xv;>h$M=XzZ6Ydlq9oh)ZQE?IYNGK&7p+#=NwfXiKI2M8ppu z`kX}+lD5wZMB1HfX3`FtyC`XmZ3rbtr8ieaW7Aigw7+TU2vBL|-r|-7R9X{^20}#I zc^KV=h_o>n*MhiIrqb?#-3e4$D{IW3lIPQwN_&KeH6Yr}A__^n)(S-02sSfmlYIBX zC#24+0~>YeioR})?iFn^uYQiUo&h?q_Hm(k^{bS=3?kW9i_NQR+rTXI>QhKJ+?32c z>>2T2ANF*ytsCl=Hn0BDoE^PW=GDV&7#ZN5^04QmQSK5O>76pK{?we)y;J7ZW9*PG z^iG*q=h)7A+&g7n{i8W$UcE~TlIPVCKHelRomZclM1m6UrSWhh>fWVe8C@b*J+ju# zt23i#%8dCl_TTgcx33){4 z)t%i=OFZnk`Dsf`?}_NV`cgW35zxf+o`}w?Z-$Qrl9(=tgc8&HBB8`|p)Yk0dlp4P zA7)w{(L8k}RV~))3WEE6gnQVt#6|3*^gWGe7A*A9baC#Lz2Sz>xLqDvMx(CN`2(#irgF`a0n zF{jTzkIFdUex~Sd^A}1&2df`*jO|+#0Z9^jJgXq^55xVz}v_8rp`w^Sy zAnQ}oiC#bviOmnbESO4vUW~+cJ#OOK&{#{L;x5LxK!}JNi*cP05qA&9Tp=Rv8H^`E zTq;v>AHv=RD(+`%%%`LaXiLTYNW=jU{nH{s;>vb)2SCI<%_bpnwX6_lp*L5_Z=}eJ z8yWrC9*M1a!o>YWV}Ae@SN47K6QJT6W7HQS;(B3p6C&b9VO$O3Qkjao3w8%kapSEq zpOTKDEfu$#h=)ORx z-Vq{4?jXhiAtJ8W2Ml9C#nr>84dPOniaQ6^6{xsuYs`!5MO!NFav}zUXbFo5iED07 z5qAxngv6cg1r#A}l`jjPpg(&fvCEz`ao5qc%W;!b?n)1$jT zaxc=K1Cdyp^(L-9jhzNmTn~&cLPXpUjKM-g+zgCKLPXpujO8FMm8rNLux&ua^|i)) zQkqL!D(-V4J_FGq7GdHN`Su-FAOdT!nFbX{29iVGDM{%^=8TZzaIZ+4CrRl9 zJ8{c;rzE9SZ9mrcPDx5PnX|ojN>aMm^hr`WNDGpa()Z7CXTBz-KPHi&L{$>Rxe-lD z+ZIYnZ-2%mrE?>il)lNH+zBKpog2}l^egB-bv43uwWO|pLVs6RV_Y*Oo6P-~ubKq% z+nIACOC%ENX7oYpAC8gsd^(AfXMQ3{eT_7GG(ck_U3cn0!b~hoS4|^uT#{pd+ zp6D{E(g(@?+fkt|5KnfQ(?Wvo0g>U>wk{CgXru-jqqB_obV(ofEHI~AAil5@U$PL< zhdt+7L1LaUi6-;Le7Q;flWr7Hp-LX&Bp)W|XAs$BeNxFgjFc0}pBM>A{?43E^5b0f7dpwy ztRNxzI-1N|kyK-lUxLx3lS&S{oG7{J29w;$NzVL)#Y~`*J2}ba;bnnJ?&2gjg*N~y zxvNQzM0uYQ6{_U!PV%_~bpw%XYg;9sY~&=7T-!)Ua&vP!$xqhc{Be>G6_R`fP39do zx6~Nq-_MU%)l(NDRXg2-BHTP1HW@(1Hxbf=M!i`i_zw*1{IK|%@c?X1y3VO{_i`fwI;URie8=b1 zk9cl#>PJ1dIrU?n+noAw&uvcqgy%M=Ugx>Zsh{-R=G5ywXHLDno;zB8PCa6?olXCy z>zujWRws;Xne<6|xUym_Lh-8cNG42o|+2Yd}>p)y8(`@lQ*gHV8#jC6rer8>gwlopm zN5ozb9b*xpEPuE4Q8L9wY!b@yKlcL27f<}MiEgL4eZs>r`m-%PR^vqz_Y;ln2P!W9 zIqzNvDy}+4Wg#N214bJmBJOgGOF>*JQ*kq3Q-F%=X^r`r^)FuBVj>oT=mi!L5;xAA zBJL!*7ZP`?7f^(_cYRqfo&LO;9!uY1;?~gEN}%F)U~Cg2NA63Ey+TA>%D$A~FCikX z66916m&#OJJ6LO=;`Uf$etz~AJ=G)EkBIX@^lOURg0WDDh}(?utPm0R8OFyTE|sac;0xYyfJenm zvBvx)<`LRbaTSO<6+~~dh>*DV%_-t`uu161edPrp?!?Jwhr0f>e2D&hmmYimB|CC; zX{;7daosRF2@!FZV_Ygk#7)DPAVkEi#CQ-u#>%yZ2?2c7Ue71u8A;OWFl0tqMj3 zAtJ3EMk^sA?J|skATE`uwCS+PK&5?Wjd^K9X-lOoBH}&}Jz^1sq*b(`Q>0B~Gm}=| z+;U2uc+{@*Wx-4I=FjxlsI4Y#HBGGmDs4N)D?;R`eSz_r5Rn%AhjUJdNUIDf58_gp zN;?bI2B@_0)|fvf&!R1r)}M&JAUfM33Q1dM1tRSNHZy5keD}lBbY9)oMqM&tePu*m z7i}`HzMQrO1D#jezNBo=#%Pdj7vY+^9FRgx|-n9PxgEX-K(wwT>8nLBhcS~%&YH7PyS@j zJ?Y7x?71gB@yVXAtf9-<-v-s%l~yoa=U4;$hE~Z&_km)g`9Iz9K^dnwVB~ ziD_+kRUnCJ^>AWZBb=Dl^rh}$Pc5HCx=;4hc3J3oRMlClD+o^W5$<769T#ysrIR(H zSy0zUxWu%crEkr{lynts z=|H=eh&>=$U=g8v{}$_`46@tUL_u;(o=fT8xp#HLkG*Bzcnbw$3NvG46id#s;0ub$D z5g~C`np4C*$R;6iH+lg@h}-JRg1_j``P}_?nz&Uowj8Lq*D$sUkt4ScV~-FK_bq0{n+FAGklKUby4dcI-eD$>{~ zK*hDeXemU*^~2~bM8u87xK@aWyBFgw5SPkS+;gy}fQm~w&+TO|?iAWmac>gw28d=^ zL`YmcbBegr*(4 zdOmIS2JRh578goNFQarIh-6!-C8ZbG&@4&m5~@p1N*n&yhdtwL>-D;&C8c>bpltU} zNlNcC=V#t2Nombq?!5oSJ0&T7)0`P3KKcYmlG4$3$WQT3NlLSAXEpRrNlJe(rzEB4 zXhCvPTJ3z-q9&zhB$1#5Pi2DgE-5|K#jSfMRujkVc1dY@mz3Vbo*WA#DJ}1k(s|I^ z)zt`>ezNCb=tJsij7vY+vl+TUT}^Q5Cwtz7zNM}LT>8nL@1b7H4rIu!6)P9YK?Mk)#@fCQoy697|(WIk=O;I@bg#$I{M| zx0ltsI`}tD7f$*4t?ohay9PaLLBFT%0(>geV5kNs@iW+4c}v3J|&)-l2VJ9`mMP7m z^ObeKr=&>d=Sbj#b%i&(ODeu})Q}+M_Z0cMlc0VH#)UspsvRS+{%5?)?2nW)nu%X( zK9bUO0UJ>9pDEez6VbBX6(jjrSw(4&A9`NdDhMh{_39`{Vc=Vuk|)*XFpkwf#Qt8I zQfr7*J*0=&XG+y|29LfWNLiNB_Dl9}$s>HF*n=r2$wnow<#R<3rj$|pH}zK(yWXfv z#|96jWJ{%8PU(XF4Jm0sO;LIZuG89Jqy-I+(c{#g9_{rq*;tGL)wtNGXvv!WSJ#aYbF_SnVz&6>#e7Uz%PlLv*(vC`#$m{SW@}b#x=k z^Qlq5K5ohB5eZTYb3Ug;-(!8Fbb4gi)uV%~ z&+ex$AC%^d3NqQXK_oL{6?4HzW@JMr{r8mo}8ml!Ab1Upgd-3;*az=wTk$PvZR2Iw#uJp<&RXZwMd1o zmj83xM18K7x@?jqy^Nfcwv~D^hvCS*1V>b8?n)#dk>Hz8l=J^hr$0 z;?g*>e>3-bw#)v@$ZALs+eVEy%cc#?-4t71DT^zoakxeVH#ZYwD5KmUkiL?0;pWcb znhu=|(gp_;&ZvQ7Ddb*>8AQh?oJU~r8uUep8FA_0V4_AHgnlcoOD_v1_Lc2Q{zUo$ zGB(ZNV^J+-J3b+r(Vki+X+Y|{%$(uDWZgVUA^VzY(T1ogU=oF0#h7AzC&p;lLm>aL-mkU(y z*U---hMjWd`4V)}L3Rj8mz^?PgIYoxic5~caNRSPLoXGV?5wMF2i*)E1JZ^ESM}4w z0$Bufw_Po}t^8Z2s~O#s*{|##*;nkce!9zauat=f+3#88W;t7;a%f^KzXv^K?~Jsa ze+9O@QWjs#eT!43XFWMTo}$giK>Au__Us_L;(h2YafyPS7fRGI=wZN4?bSrOTkQ~w z_dw60UR|Wg?$8cE_Re`4GzNAJ&{O8Tt`g)=ncf=UPMO~4NR5cemtB3ngx$?nb3lnv zmyZtmii{^=kARXZOpjbM|JMnXdL2dmqU@^cg35MIu}{9J90X@bW&3P@aa++>%Holn zTZlVD_sMSBc>|>P1O9yF^XM}IACJPaz1 zvp7D4oYYQA+aQR4&*<1thT4G^<7W&hi{qoI_cSRx*UG3|Unz?#ZLC36)l#H1{w&*6 z5UYX3(YC%A=I-uD+{qf3Ql%{SNqee#PAFv$zaK#oQgWn7fNo zsoX{Lo0QrvmN-jEGg_Zi?dtnKYf04X>XR(2q1?K2qBT2V z=a)r(>dB=95cQ~{qB6b!L`X?xVHbq&v5fL{) zijMyYO35v!{M*!??aFTom)De?vsE^nG>H;kAMpM*d8I5~kjGXdg01C5_=l+62C@eS zTkDF5(|=(a1LAU_Z*3+D7eQ|Y*>XSL+D)R4K@Uij+*P;slc-C6<>O5to8jh_N)q%E z>~Rp6;pUY(5_Ix!Oq@VmZauHGlc;vk79e|g@Je5C42KK`r5lrlzFJYbyBsKpwA18IQ~A@DKRI3avxtcMK(v30L^H*MN2Qtk*k-x64y9xz zA#enEo&P6{p+yhbIFF_Dz4mO=15fg3?e zDah*>JA_n*e1P#D&{y<*I$L+LJ9+qkBQ>Oy%l(o5rG7<8>QDTMh&SyB7K4=NiCBCz z_)FqT#BOK6Q$1f$@8=*Q1qnTVgG}AP>p4K+_s4^e>+!+aLCI4RdJYr#D^NY@M_Ang zs;3x64oK*UAMamnYDg)SyP5ta=@GB#$+!|(ms>n%sKi%@rCg8qWa=ypQl~&tZ|6@$ zigOlV)y7{H=${-(hnt*##3DDS~4`5Y)B?QC6jvAW8J2I6466Euo35)Ia7my^djZ$ z*hSnWQ?H^Von1AFse(F0vnWf)&z_^KuGEqug;3N8x_d)4=2X(4a#7XsAKHA8*m( zu24Vr!uA~Rhg^65xSSq5E&b>n=|ak;*WUNUeJfihu009SYwvgbzX84W8qM(6-j9@X z?X40iiJ?op$=9BbPYsSqe1qJ5#Ot+}ag@^;xNA>J{k2zVTGACZGMTJTCf_BK)2AnG zb9FL#ESY?qL>SIxr}!S`1o2bpTAzsSkgD{ovh*&oL!?-DNE`h1f$os9GyM*!LpeKS z1N$^-hln?MhxmAYB~;=Yfz}axjVLV6=|Gq>pI|g0tyG%6qY2d=^4O@H#lJ=~G=$`!-|Ia}8tb9MZyfT7Gl(T2^sUm65 ziZ^-B`uNmfuEaOU?J7;mp1tf(7EFNKvr_8!>|#@@d-gywsdsDA{u`W3o=PU)CzD#% zW38=s60z~w@07G)5q(JMnA1o0tBlW+>D@#Sk%Gi{;5Ufq28;)qm)u6+t;d6pj|)CH zQ-l4uFrUD?fZoTKV>~EC@{-3e9szDA%ed`p$PLy?|IW_QzHK1pSr8Ft;lAZ*usln?~!$+}iqy|YA`w`Pk zHjOd_lVaEu@62TZ_iYz} zuLJGd9*j?fNZ-E4_!ii!WVzei0eGbzlPOL{uAj)nU_wxtD=2caGkUW46qJ0_B7fin zecMIymI=ZriULG6D@b$~7&EY-z>^PpV;iw8?}@nAe;G|4=mU9fd|s~oj*`Z76aOH7O#vvB+u4l1t3*s{;4wKk4VY? zInzJL_CEq0n*Ovs84b>r3#C+Uvl3L2NJqt+JT&?ElY-F_UoLk@I9|L(#g_DrQTT0}*tS$G7#|Y$VOqIKXPOVbq>eH7_ z?S3(#kzfOnECI|d$v0Rl9(nJ(gR6tNr zL=?~^PjVvWYA5F6^Ms4;d$u#3HS5_{KJVvI4C*kb#?Kj+Te=dPH1zxjV(zx#Tf zXV01WoS8H2%-p&6&VB>s6jAUBL7~_bf>+39dHn;5z_C{d;8OQ^WQWaCtpJuo<`p`? zw38sadct&v?6Ot#9>0quwmM{=zoj1pW&o6!Viavt%vOYtf~+0;oD-=RyZ4A^iusA+ zCE8J;$#w~N{sW`%1FH0h)~1*xB)M2w+7zQ$ua`a5n`o=E50b)|v!dKBra38mmlS54 zoq*kv6#kVER3}BcrC;OA#4CANk-9oRpdF^hxAdoDy)tw~k9V zB`xY(3MjO90B&MH+B>?XH&EQp0mLgPCb2bo0pM94bGW1KIotJu9t zJRRh>Dn_A$C^XqY0-nww{D7*5z*`4dNRkVbrF9U+h7Pi;?}XjSD*K0|@KaLQ@%%)e zxFjijk`%W07F%j75`v0hcM`)dj1uDJ2rE+89ryOa1G%nB$cRN_uT zb6ZFv>q?u@-KM-X%NLu1E=xwJ~t8 z?;imF4w-#F!hA15_LUa#z8hqh^~zvhN7qO8O^i00>cF&y61`H<)++}Q-UL~%oN#fJ zSh3rYczR_QS}@To6`Jgo0iSlWg&$D0n_67G_)?O*L|Iy|RBY&#m-$}OovgAyC57pn zQ?AQm)+U8oj=PRy4onJ9CWR_*z7o(?l%elkdr2fQN}4e4=6u&K{HY}7KI~gB8`~kI zdh+uQ(pykY(9B>$GNbjgt$wEQQ*;Go3n_MUrzpjFFi2-AmWuUl|1W=iQLMQnIt3Os*;`#Llr0*cRTG-v+T`xQ4 zmpcYv!fu5IyY);XcSc0m2u2ltM#q(BKXD)~=y5_&v*S7v9RLfQ`#pXTZ3e z2HL2c4F(G3EGed|LWOeHBh^86*}kC8!Pb>_U1i6D+|y0`(fr*7T$8j5?pY8U2m=Z4 z57|KY^s*?4VmF6)20~wwNEBV6q3Eirfai2b;RjUBRhFu%$t1a>vb2Gq*f0>b^k!Oj zzc?v;ofLMsG&03t>ykpbH_~GEP6}5h1Ug}|F$cPnuz|+^p=F5_8cLK)H0Ch3PWXLt zEA^+Em_?Lkp-R*Np?G-$JKV6DZn@NN2|X6f(Za0~PB$Q-gKTcN+)2?>&6Qxzgv`HP z4s)pl`M0$&Yap)Tq)p@8Ju+tBoY`|Xh`XST?HO;lV9zsPo)T^&d$uuLu;(o>Z$M_x zr!b#LkUc-a`~cZy8+i9!9!Wfkl|?t^=Xc?c_6W;M@Xe5I;5ET?l%Nf~zA(L^Xanyr zJ_Qz!N?}d@N~NG%v@u|YN=ZZd0GI_5WXEYRCqdD)TlIT5E^Jc@H|2lm${$U;mxH-f zO4`6%19JnE6RI%n+O!dpD2|fw)5hJP?}8GeMY=XxHW2<8WPNM9Dg}+?*7?O$bWKTJ~gLCcb3CiqviSG2Qs1mhFXoJs@k@K`;X(sAWgNYym|ryWXe3 zYr0C|_WW^5K`lES%mgW^Wmmzhkf4@*6y|;?n!0wn3XUu7mMDcg@^9)DCrw>%fq6qp znz}xQ`ACAMuy0|$hH_H*w^LY1x!j$pl;@R~btjv`6sFKH6==!}_&RsD@bk;JXo**7 zz^jD=zO8#F!Y>rQFm)(2*&_nJ%C%Kjm{)#bOT0n@UY;P}JG$Y*?~~iK2Y=+9ic0y| z1uA%hfNe5t@CL2HR0|h-gMjN|xZn+%z;uMHt@^|Cm7um739~uGWz)_TR~t`jZ6%u) zf_IV5?Ovb1SOv0)%xbJHqch7Z`tnB}zpjeALnx)2mrY>$K{=t49zE#iT(?Mn z6#5C*q|o4+w;%#9X)W$qQ_Cl5V=yaj6fiqMHu!gknF-n85BN&M zhrxd|(MJidj`eGplO(9_&xJV~;;L0UhU%l-z9M;eXjkf-+_wF&QyukEG%isRO7D7@ zYb7YX+hA^i+IR8lI}=Dp&92;Vj9h_rSoKuuUVSvcxD#kc;^&qBRe7ji-cKs`LODeg zZjgdP))YdAd=lW}F*v?a3Se&9NhI{d7XUs7nf33%{8@sm{{-e^$gURlRl3=-Z&mrJ z{k?tPg8LfEDPm*$s!bu-S5%FwgCg)o_SG6V*w-3hHDva6foYN;`!4mW2r>*nBwLy4JH5Sv-IA$%NUGwU|EVO^YwN<1@bR!L~4oDXEKlCYUl zvA!GEYK9#h>jf@n>5#^Ns&OHW6VN{{q!FoSXL_S;YCS3`T$B{DWcG;fluQcf^2Ygj^~y;DH#J}uYr_IgX=9I zZ%Eq)mtsSWXmIt5^&Xbqz^e0u-Z$uc73(S1>tzReJ8dBBm=qQ!g;SEk6-nWNr0`}^ z_%0#vt>S?UA3h+{W42N)%ThCKyp-Cr=$ST9Dz)lL&9o6xqvh4^HZp27B6hbCQFAPz zv!c)w#YW?#;U*C{f-j-DV+W1$n%Bj473&(( z(@Ah#M(ffj!Erqc362{RCpf;4;P}XvF0E1R)^tSF6ZXp32*FS2`MJFw(5*qQ2h_J_ zx`gcYfNtHi`0R_=Q$hMlpxe+_2pWU9g@W{gK)0tPn1fq0~X7Py|(Ls6@5!@eG5_f{Lcb$m^w2V?#7tB3GM_g3A2G(m;_nG+hH=$s(ElcncB70_F2JH$2fi1bF~^+BmE zT~`BdhHUA&4(28aTDsl`vmP3@&?|3>H?k$us$;cevXyIgBdOQFFitv3U{#JwZ@@cfp1*=pYPIkNpDRPe3=TWZ+gUEcunnsBjq4Y+c{1@HP7 zFz-X=T|a~QhXi?7SI_i^5Gwe0aTz|AO`BI9h)szZLZQhr1bm76TKFyUxy^hT%1Aj6 z70M8>r7qn_Dt^zk9!#BZaTx-RSC7GkGIRyg8L~2L3e#VL$}k#cB*bM4pbc?j2ToDC zQUfcuk$oBx+oCZ+NvPxO12a!av`8T5ej$NlLju1Ce;H(r+fuP~W5q$0_XWlKQMwnh zoL_}`8ETn8<;DpNuKYG6@CEqKpeSc^8NpB6DzsU^HM;pq!M9l(Ftx(PZ5D9t4Hw$12~0=G+N=*uF9~Y15ipxUx*8s2 zQb=V}(`ks(h4YVq@1!@kDi_aE_+aC0+RE-ASKN2*fIVIDe9%>Vh?&mhN-FBQY&LVn zUysAdJZB)bbMGtKHSyT1EaR=Yh>y4_p133Mmz7=^^%^m1cts-_IyOTDl zR4sO?s)$>_D6E%5cTJD+qvY)6wMthl8ynui-gK9Y?on;_OLyrmyGrNr--)}7Rt}}} z_^-rWrdej1Fw)&@#&C^;nPxMCHluV}O_c71&_mzgmF^8UQe4#mhaTcGLmI@p#;t|# zE4)00@O@)^-vqvYgl{-f_%0dw+EPoXO9#z_r3)4lJR(Z-3}G6Trtb8VW@FFy$xJph zju02w(B9kd58-Qs*OL=Vs-}w?C4$xZtgi)@J3gbG3R`^Sj<2<>mlE1tA6vS{M+G@h zyqvO4`ndz!T2i16X=SK>OPF*=+yY29zLmS8lO2(gTseb^hgZ{7UJ-?BQg{7YBQy#k zA04SQrfw5#52-Y!z7lULjVV*qF#AdgmE9&qoerAjL9-Ysj4oWr;xn6uRq>pQN zh!!~g5EDcb%wXHztOF`X9kXH!(zm#ua- zMMdIlidL%Gj+Es8bT);h^8fd23R#&vo1*ec0*W5QuF45;#p2pUXH)cy&Zd~0Je#5_ zKAWN{KAWPwKbxY%zd4)YA<{i#DCvHBW8{!n(%a?FrpT^|g4a=b8G=yJ6R&91RMW?rXx&G&~DcM%!iu)1oP>`KXvAa-zMSKUM7fl_k+No~GvI~mN zrr1`!XawRwNVT)Gf%Zb$9g5DTumdbYmzib&e>R0bp`ofqRc&WeEJy1|sC9fc#l=Xg zpj!R&E?rv8{JRdt8|lAvHpS~0Zf8^IpReiK(SB7Y;cN=4llA0tI~1KwVRiC6;xmxW zrr1jr@CCx(g^|sp2dV;U+w))qQU#2jB+y8tVNi57g@JZQoDM~2Q`iX>p-#po>SSzO zC-K=7N1$~mWOZU^Q=Eo$DpcFi*U5i-Hbv8Ej3LgZSnlhCX~(Wq^Ign4^v%uss`bw! zkF%i8zwx-1XH(cChq|$R#9@b1Eb*YSII%YKa07NYMVoV}`0gW#shi5m(GH>*>+xh{ z7Y9+y9fw)rAc|soa+v>aO3jd!S zL{X!)nH@w?qxIMS`5=l-HBXlp^^6aq$V3NG)M&3~fDWR_3~b70=J?6FlMbRt|KdRu zo&JY|C_4QQ2T`o0|GCMxM~>vxS_H0C^A!vOJ_=cD-;zAYpt%X+0x3yC2Ga7O>%p8>_m}2YT^i7sA_?`vq^(!NN3(mhN|Sd@3Lbk9z?tm z%2o72|IVn+IN_iNHFjVA2u5|fEitL?{M2+o70N2MXdod)qxi|y3@NB)T}e;iJC!eG zx=ME@CaZv=esIOJ62Kw@rg1` zP>TUr;uId&qJiRC44^Utg<70WVRu$N#I-mNX>Z7`V%6eL-cDYclO0oYR)YtCStL!X zLB&`N9!<~@kk#PBcZV80lXz;dr@By~1{E4=FuOj&TGi~76wXTu)jmmsosbklW>F1N zhuhK}H{27Y%0KLo?GNT#m+)sgG0hlx0hHPc;d+>Bp{!6viwLoP9JI6U8fkA+wreqe z)B<+^zD){>D6~XSC^7|FBBlQP1i;5)aNHsRoHuZ2k=Fpe0;SXtJq@pk{gq<^jkqtL)=^Q7c?W*|)fClYEQHR;aIRb6c0iRWn@p z19KmPw?X$T={^lbO{-XI+P4XM6|&r>JQSLCAL41+=9alBG&JpvJ|}Cl+=G##2{V$y zjY*-kPv2l6v#4ovvvC)pw0U=!tY2K#o`y{?A|}o9hSQ#v|8a2672lJ<*SO<^KOmQS zg3yX?OomYUMTFuJ)N4q$)^KU|9=9g6BbfHWO+m2fBH-E>PJ54#(0a7L}i8^u*I) zcR)KaODHsS*oS>i=(LYm+Nsu8^QMxfy0He`S=Bn-3XcrS#IY&87g`K z@pQX~TIQzE(Ct3+IZ;I}GvSFy(S!?cgrcd8sAu|b7j{IaOZQdOr>lc@e$NGey zRA|yq27HY>Re0|w&!ISHsid)=3^=~V1{eI~Wnfkd7yHS8Yh$?JCvOCEJ!I{*9_CI7 zYOg0@9*69zzxa-bJG#GfKVmrUO{dc8HBt_#)u{t3KRvq0)t5gU;f|yy4&<%`9J@Yx z#Z0FTaI$@LG=biUoZ(f5dX=$gPD!d{SAL@;-}CV!yEwPh;=}uDI&@&FPi5>=QO0xl zbKb_OWcoZE#eYW8T>CVFZlXF&Q}ej?y4lxFl*yHm{6diZDFvtN&T@cHW>6ynSE^ZN zaU*%U-C2G>g*^}1UE}FJb(cMf7iKqy?5^?j!MYV&i?|x%hV*nhrJ$h~uMI%ux_vv{ zPANDBaeqj6mS@gbcD5LsmAaBC59AlsOWz8_eHDH<+uB<} zs%x&wH`mhh;#BN^9PVEeZGbH8p;Y)So(bLwRy8s+7oiC>iDDnn;Xa$ zGZd9tvDSa<2&#mv^jE(WO8-0JDg8vW6Qx&ZDE-105@q~6DIE1;BF6b7t&(<23L&$o z^tSW~WzV^bWW8VdjK#dsP*#D3z7xR31`ex%DFAnh!Eql7;8FvJKD0N$IgrgR2f`d6 zL9@&8Fv}r-oA0m7W^Cgs(O3^)02wcP|^&mOt_}qcL$LlvRYa zS5BL2L7~KLLOAX9fr_gQiJbuNAO%Gf#cdW8%1j}&*&KkgA#1Y(U=~SGn=OYq2I8^| zkMi}KaU+yrUDK|5)lC_m2I^EOtB68|L7~VLLWa!%FMuq=YhkXIpbXc;+zD~js)X}= zhN+l~-)*iP{7lIFQ8XTg3i$@TtlJiQLcTA9c@eUF{{r*A1m*h;%vX?ewrjZ{&UTv0 zS-XvuF*6u6lvQ9MuK>lkxEFDybY1b;qcwR0WJH4;=i zcfs5N(E((_I^Pof_dU;rq|)7UuLTnxLE#~&U_wA=H_{6xyafIQ$V~VU<^u^b;cJ*L zA#cKqu?c~TP3U3Y5m+sxhoArzObF<#3tZ3(CbR}$4VekuV7f?<34>t0$l=Hh&p z_WaQ<$ue+9GVa|t~ZDD-xQ{bCpeOhu!UjLZLwlLO!`Ms1hR6d4z zPlD{I9h!EnplBXH@Xg2u>PacA&d=6S4w}dNf$0O;JU#+uGbk&R&EvLm3ED-Gw%K%ezCwGcS~rZ(?{VG|UTMcpGhUKJu+d(S*#~3E`Ba z@aLouGK=N~N^bjA-hz}HM_#Ev)#uVa|l2+HdwL(Bewr z%KV>|f;N!;0OkTIsrKK2c}aq5zvD1AkRWGs^|Nsb`zwX3@~3s?kLK#(V1__8S5Jc3 zPJ-s@nJ~LTS*axEYCU`j>E+#NN^f@Aemn=WT21NU%RZ>hld58q&M)Y-a!*Td&$4UK zGv{{#@Z%tJeyd?FmcCHl`B`fQ{Ti3!&KCVwL%z{NABBeew0n8XpQComxNgGF$vxY| zAMIe?P4ag^<}h;_r#E{nt1Ga0r~^4(!ra3X;2sk;zB>=ttYO2Ldw<0RaQN6uZOID1oS<$aaN^<4Ox|K#x4(JSvA14k)W)4!gPnc0}M5g zi|fMt0zXUx`!@L!4nkpoQcwxEf*A$bbP)85H_{KLtOdG8y6S`X!rU!EraS}l6vV`w zEOje4O{MnE?-c+qK^vF2%5Wi@55T+!SvFt5d?rEJq=%D*hKOKDZt?D1+di9g@w?xv?AyZZ%GLTCwtj3=$2NbYnA!U;Q3kdx)1_<|9{Q}l zH43^s6%`}Zd^FC(J^(wkvpxWO7SkSw>;tevx6oH3A0vLKAbn_j=mc%DWJmCBJ3-}o zqJHR}$CE~Pf;vEh?L*_G)$uOJqJ#H!hub^4(}~^|GDrKkw&8KXSBf zwqQL6nWOCk(@TOJ?NFG(P*nRb`xJPNr4)|J9jFvk`(we3mXbR8B$$a3RQr3w%!b;% z?UnyUp!U(CGd7c76{p5BD77&Wpgi;UN>SaB+0kXayYWXi4hNI!fsoxZ)M-T>(Ak&^ zdf|TWXz)i#N4E_&fP+r)Mmk}&`)lwgK~}bNVa}GIvaN=>7~--T-t4xht+}yK{hXLP zPqwOtuLX6r)U=Se8|E$vs^KSK9)a48^vW4F=BOV|G);U|oE;l|Q*3|9OR@INx5mI{1)lGp$xQA{s!hNC@WNQvIzRc?(#^#xOg05R<;>0g)Kq(ADDXOhP0P*xFz&4-|nHHFX_&j)y3432MP1Gw10p%-2b@KVTZ zUkkHFf^1(8b0=h%Z58b23sK}=mSLyn4!~X5R>7m-9)=<>uUPZ)&k^)2WM01HcAu8} zka)a&C$tk@UZKIuFZDT@$6l2bZb=G%N(!GOg^*d~2yx3o2Kmko#DN>lr! zw679<47g7R`OfH5yL~p3)2z0yD)!k)uCbL|VCq-VcM1*1NqLu)UJHtpcS$Jkl2G0y zp*+KsTj_&`)J&gHKP9w%M*D72&fD8Zeo@Zbk16E5gDG^?w}LxZDO|%S>5j{2O7R~E z_9$3AZgfF6`a;lk*$agp1J*=sfe(**bF=0y+mG*2ul@Lc(rTYVwjbZ4tEP&gQM4~) zJL^4$=;gi!#99SuN502+1@%SjsUTHbk3E$CM8wUZDiyky6=4P9as@4Lz3sEW{1`?o zl>0NTWpi&GZ*prQ=vy{ZyWpP@Qv;+5N_~gW2-5&%g(}L?W$|EIiLCMZ9BM56P4ku7 z+0yo77vN1$)K3*#*mRwDQ|O;%I6V62z2utcp9&5A^97%S_0P|fLX}U&V)`eAiAf=3 z7WGdXAJ@fJH_74lE1Q7Tg~fee%);^Sw0Y&HvPpID z0;uPtraJf>=2IvuR47wYzlhftOurYmS%n6!9LvYFP*$-)PjwOUEpxw<-WK`wx`|U= z^a9=kD%3^5R=A76hPoIIW|(ksT?AaEy9!*Wi-};ifvhfO!0aMHb+IqZd??gK)7ogT zWZXL0G_>;LP?qS9P@%pI_C8C%m$(OoAC@=!40T-BE;!DsgYk>@sMryQ7-_~V2>UH0>z;A%c z^@&|}kb)jVd`LlZZrMq4ZXY4O3iY-R?)s3#Mjzbuwh!(s>X$yai@vuTyd}F=kiNT% zKD(QRw3|W}4sezBA>K(yCs@cpS7jj=BQ-;<7W3g=wFR|W%!hk5#&%syL0d=c?y$AS z;&bcl%e~uByalqgN2rb>_k|j$vQz&}`J=VR13>PBvWh6IJ%U1sDTKAhQvjcc!SUK7 zfXfUV)*decd>*pqdLQOp32Lr?!2BJu%j~<~H&?MM(ekjm)6>Dee}Vf3$||B@Ur^u$ zS*<_)TZh?k^dcw%$Mywqx$6Kp*w+eRIb`;AfN3W|_VtA64n_89aDNrs*I)Lv?(_rp zB^;bW!=M)aU-1B%Bz(K7{sUUz6&moG)6(n0fSVOxe zo*gAw-<02zV;Ic(T`_TbY`tR5`n?F+GgyDnEy4P#XuYcw{u0(JG+6(aq$N48XhrFq z6h-5NjVi`2}&S!WYDS;xCAGpIe>yg1CCd z&e|8UFNmv?Ul8|cJa4$dzi&QX>B6d8&UuaThYc&Vwpm^}tI3<#&Ft)r_Gj1 zA!^!k{jcO~|8{DMz9n^M@~5+YNb7krEALBMxrWwMnk#QR7QV4|iFp0XZ~N{9^r?i)m^YkouKL;1a*F&pME7#f9St#22!dj-@0=x4ZF!+ILLf$Yw@hOWOg^$ zTBY}s+f?9uUFK_~s*U7|0t4<|6Y z5;^-Pg_i!2K~v09j(-BCnE1z4Ddo~SvMkv}(fZsmYd?m0lb{HFL*QJM3@)7`mF=a% zf3Wu|1+3u`5cJ#qU}uxzdl6c@HJ0X(r12XXO}}LOXSODy5D4 zt_$7isljG_o5!}~jKP$8z~oPf;wrIUjjeVM&=roe$ab%6&PJcHZI>7UR9P0QYkiTEYAh0;ZdF^lf_)aeEN?l&%#)5|I85Q_OQtIKlEm^(%3ei z*6|XkvG;kELZ0n!=)wsL7CHD3-K6(VrBoSXJ#wG8Ko8(!IxKSiQ=7|>yKqdmKpn3= zm=2v9quAGxpI4YZrrtEdWogpy3F|P|4M>euJM|-^8`M$X1rAJ&R%K5^o&0%0pxkzbnF5j926AiXJ5H)Es@+og z_ITaQn?%e8GfPSzBK!(w9|@l$91L?HRNvq0t|M7G9ozXS9eI^XMSJ?`zx%%Q1T8d? zbcH!qm~_clKzb)U#Xqv+4RM$L#$)B@_VHL91fW;KT{`FMWN%_m{8>sa-O0z&3EeeG zT^1HIEhFCdOAk+={**+ek0GBaMZ9$0X-uO_ZdGs+Kt#VIe%X1mE^F%`Z{bYPf?Vk;HuUB{>k%CQj*

j&c(HW0|isZUq-CUmgGQhM=LjDOBR}=V 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%0Dgyz{_5U3DZWCt<^RSGS$ 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%0D`L^Q4!T05XE?EX$(dFfKw}-G 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

6lKH(bl-rVq;No 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∈@r|NJ=CgBI)BDE|^T3xVZdi}8R&mjAX` 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

+K41qI0uFqh_= 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

rS}6EQEBL|Kto1bD(#AL>rsglw^gMp2rsgk@ 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

HHTIBrMSAo=sNR)G_{ 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

?9^O;g=`Gzr#xH2LsI)=jCgsV%9-OFcTk z+0#2$Rr6bVK>fF=8%9?8iU7s{=*bPLiYO!{`f3Wo^lIwdk$5RprMtJHGxw^R@U;Bl zcv}9g5sYS`jR+}Q-s`FaYkNV4y>WLz=D`t+7*aV=Po&0T#Ng_#nEiEae@;P?|D1Yo zM1~ht`(6d>)9TrC2QS!B?c>c^8|S$9r=LkPseUGXdu!!V?cUz{!Z6JG3&U>ifE2Ck zcw~fqm}Sw6e8ejqkPz(xM)UuPKS?%yCjvHoC$bEe_HCHsE^~gB+{$({q$f%vP%bAW z0*@b(GBAVpl-6X^!FQ0YwG9yNYa3QKV7@*h&&1nu-fSz%&&X>&*~P&H zM(*?Je}GTW)IZW|>llxRo}(_fYwLbmhnpSdxIe9XsAVDB&e1la|0|McqCyHACp$_! zt4*ktng~8Ap>9&Wm8wQwg&sryc8=GoW>p?|EV!4ou4-*MUCbnAluc15ySNH3B53{N zP{{2chyH1pH`|)a-jY1*opuP;vW|N@V071YJVRg4biCZbr1a&E2S?D>UuDLZI;A_` z{{*m8G#YW>QEI#aD&!{$=p`4{e{i)R;${2^LZK2glO4s_=K1t*>%gSHt$VEwBzUcE zah4ngcX4)U%SQGHkZyb6K89=%8(}}J5Sp}pIWNqlZ0At-s(*^ml!beR;+6CB2gkVK zj#0lpR^-wQ>n?41sD+d%)5hRG(!CG0T-MqoVUT7a#XOTlyd9#=UUe>!@K*L9)~eQ* zTU$a{tbV-49O}JoX$MsEvW~Yp!2EA@^o@i=+c$F6NPCL)S*56L?9Jje?9$A#H|H5f z{k!lS=goEJ*Ios~0MWUs_P3<1OH5_~Vzw398rWOwULCRq+PZS3Qkr2ZRm{~ga%D=4 z`XBBW6VMWzT*~4wX)J+T!Ura+{pygVEor>1p7RMVHv^1#r%A%3LGGlR&jb@CC6K+} z^|IFQw9%_t89Q}}_uaFco7>(Viur$g=%V3x6)e^qV36T=bpUi%$GlG1^?99_cCsnH zwDZ9ckFj^3R;q`>YOG(4SLu}gE7)2Z#K)clB_zG%nfE3)Wt=VB+g2Qt*xyC5=YBXiddd36XZ&8tJ+9Fl~tV#;SGX_z;m(cphQ24hEhirF)!dPq+- zNC<2gf8{jGdamsiiZ{J7d|d}xUPsCa7uIzyfpWrX;rh;d@ngjt_g-kJcL#mA>P#Q! z`}c2{Lt??Z@$c#Qa-td6XoBZiiefP07Csvvk}wC$5pt%Ow0ZU)WrPARp&h{y23??}YOwmVOP3k|Nj6}o%{ zvE8K^#Ca~wJcQuji*wwEGPh-WND1g@RQV`ZFhZu!pA#1k6j-Eo%(9@?ZQ1*C>AduF zaYZIz_tOka!VIi!MBH<2<0FkxJS2dS)FX|LAEomMO)5A=T!09YTTGG6pCMSr*DnFC#+WO{SHj|qz>Hv)8 zA!pH$pR^#hPZLS4WX4Y6{Qx@wgjCSskT)oU^Fyt}TdnEU> z+!&Pu2@x7_g}P*x*TIl~mU}6;i$qqy<6PlzXHRzQrSrcQ;`vlBY4;-Sm$p z2;e`OZf^#s-roG{c5uP3+c$!UZ1)3%<7^*^#N&*L5lKd*43;k-2E3Zccy|WUb9d&4 zbh+&hGye}3&Q%V=eV~dHYcmw zP;fUVFHHG#TPqWp3scvn6O zxOhv{PHIFd+1JuP&wxAYez9bqVX_1XJ8QL5m1TWmW-uKCF~R1{w#*x`!AUYrd&$kOf6^oo8|vM#kJWA-@vk0wxsAYz=YuFJkMhuO zdA^5j4)eo79lMPx79JMSEGg2lu^-1l_Ehd zN6KPzKWItVJ2Z*Ij3Y6VijTxpzQ9LBe9)4Vuq4ato~nDX;bYBigFahD?@QG#Mwx}q z$6V5wsULKPp}+BzA1Ux6%UHRtQ8tuCIX*;h<3sbW2i;t)b;>VnG;SFUC1WsyZf<`9 zS~V%T13T#Esue*AU)2cr@vwuA2@JZqL^yTM|2^0UvHR0cz~rgAzAScH`m$H&uyb>D zZh5_Tnso;4>0DC(`=NL)to%q3Ve49{ zGn!$|=a*;#DnI^&y*})dq|cE1B%4@}iuO*LBn-P5Y^$V`UJEStPuj89!FEL?676{e zuxJluti%$#&>Be<6Lr3pelas1+f`z}Q>=Crma1Gau{bf z5uER@X4*tK@O{-B=qlTxqL}}F@2gHW>>dkrWRb)Lb(iC9jhtvSO0D|KTU?VOL@-@; zU<+JKO%|}#h5xAy5BgZu5MJXBJj2R&7gAV_I0YDVLEZAYUVo55i(WSq)J7yvp{1=#s8;c8 z(A3EzYxG+lWn+g@jN@y;1tSZ%lw^Yt@L&6c+@RAk=(On5+tui?V%^GgQ;7SEu_#>v zDG)0jjI;zcbF?=+7-_Luh((J`Vs%b>#g;+ta`V+)wN4B5bI?+c{a2w0JW$oN zq!nALOInw;VyAXl>l5urJ<Tyx|0yLcw= z$vN(Koh#{zx+|l7^k$L1=pqmM#*4i3J*3X}9;dh8KJGp3Vaxbw@B0aM$xMl7AHSdY zIi5&cGspco_JMIxUnMUMEMT|z(zK6K9(!hy_EhVzd&wf70?KwyuS>T`Fm@ifQl)(U zTqHf2)+wGCm1wkQ%JEP$L#5}_dTV!*2%#rT@z5EIT~M8(KyU4pwWEp)n0Va^^~%~C zYC})2qNXmZQzPAgYurZ3j>!&~^#NNny{7gD;ihF#>Y_&dLG1(84eNp0$7)B*VW~RJ ze&{YgR{K(QmA_QGv34(6xg2A-5zXm1JK#yhEe5}_c4H%+mR#7hwK*~lOwzn=2rj~T zaLBS&N-k@C8sZROZY1ckBs#Sq-jm~f^A-8TWDnit>GnKpL(-nLpSQu*&)fG!@TBW~ zkqcsYc(U?$PZrz@VizaSmrE0u)7RyRO$j{5x+(E)B8f3GhMP^X`gZ}Tmyk30LyMgv z=l+_Z*x+ZpCNaRRTu(5R`)eMqX%3-aPFU{4HE-9j5xrfrsCGluFSHN2a_r`mn0_FT z-)L9DXqUJhiD(xx?IGn*xnbpgWax4ys-R+{!xnnlj+a}khk9Gh>aV<3Tn7akg!1nIMSt@5v^H^RcM* zu^g#c?pf%oESTc;Cci4x>jP0d-~K@K=_pf5Pe-rv7etA}Dm|iAtZArhHOwATU3_Lj zGC=Kwxw`+bP^bc4Z%AKIy_M>LP+zIA9&EV-CWKw0{YqRd-uY_OB3}VelTvT609%o+ zpn5AmI9JkM$m%OmOL_nUMN;X~zN`GR;yw(&$L?G_E8ZK=oWYH(00O5seoK6afWk%L z?jP_81KGF4e-y8maF}16^P~6!@pQK(0r15N?gR1l{a~+;Zy2bV4e=jk?8*GbB6^Em zv4Fkdz;SuQc_4~wt1AttqC3&E;_&Ke;N+UHv9W&k#&3_)RpsvO@inQ{>^?zh49ZP* z@$^x;n%OII6-vk>)hOe+^jiuRGgB(I%b7VO%+!5ZfPTx0f`Q>`C81K5qwbav&g$g5 zI@K3yj!Waf#>2TiyFzCffJA|M0dt)rx1uBcqBna(REWQiiNnG%FMKO6QzLB~=FfmbF)`dqV8O z#WCbaP~}CcupiYCQgNI@C2A}Ru@=ApFT{MPdEDd#k^K`Jk*1&6KeZ9{`Kf)Y%T~#iPI&>0cwr0+_zPowF?!{N+ZVeuc_s4- zwKgrcFw?D-af>Qb`z47UqA%4I0&=34XALSGnpZuH@^YeyGq86sw+s(d$y-IX#J4#i`*q7Q*9H$4MbiqIa?04`7oM}_(jx_hD6(lH|wYKV%4j2CacM2$3U z`kX3aP)|pn^>Jq6S^x2dXYqoNK~pq%2^pmE{oj?veQtKxuAsa`PpeM6I^xASZo@@R zrijf8P^d5X2<^N8mVBDMvqo#3^19DtZ(?U%c3_QF)C(>^y6``>;SvH}+&xN%q@KoW zj=$<9lpgQE#41`@eZ(GGD+G>d8a#=J;!#+Z+~>3xQL>o&1@}JZ$AtW2=M_3=@k;b3 zK6ZM30*?J#q)b_=OVfFfugv?Fiuelr8(`?-Y0!aU%VF-BF_$+ubSm)%=YAh9+WnZA z(G^uD-xSSWpur=~j(T(QC$U`pF+s7d?$S#rmxOcsKo7Zbrty zp|OO2sw|qg+rH4Qrnez?f;pxkDABp1fpu!yiIodpZDQY){Pl<1t7=G6(Kto;iGShs zNy+cguHQdW@6t=d-%ZU=M|(=l9G^pPZ^eCSa9_I7KV8mWVzn@k@6Xokr3Ca!`-trrtBjqXllBzNd7&A zgKmFMy+g|Cozz+B=u9SIXJ>jdkg(p&6LnnXw9PSod0$uRD+l$JYxR4ijJ2NU)XZ+4(NxZAl*OFSi zHoYqC&yp1WTV`tpbGH>Y^+ji~NxLBTog8@!xd-b9vN>-k#aIu;Sl_BOZR?Wc1A}w) zUgpSnBWA%}l3bod&}Dh@lBC}yr|ZqsRuZ+XsRiliY&KnenN?)hR%LF?M7tQ|#?0FK z7`;_1?CD9V^A;(QtAohZ)$11Om-{vPU30j*%3tXNWu^apUr+Ip^m1aQ<>^b(+E@Gw zZjiJmxtlXvGSO36Pp-u4HPN@5a;xh(M7D2yd(E#)=W~q%PFmxv@fvjpjF;UN+%?{+ z82YlMW&u%VLGtXRKSNUHFR9HbYCW|j6`jFazczCRQRa@!>sbylS`{xDWf1RnMGP7# zY<#z@G;;xnffpo75xT&?oKPvhi)spnJZ&hx1kQa;{0$*J=D%qv8dS2BOf;2uv} z9(^yjj;OLOcYgzi7~Mf9_Eyw*If7>!UycwNRMW--XheoJ9%@?S-Qj7jn3sHrSmomM zhIG+`XWpA?d}7v>kYz5gYbYqCX5D@}cIO8bvoB#@0_#~GWQys4>_AWY^lz|2A)ioy znG{wC$XhQNL<)6@?l;~kkepw;HF%FjE1YR%ZGU? z_vt0;z8#xS+&$l4=qsflB+Tnpvh_ncGkTfVN6!uSdDnQ#8W_UpWt72Bp~h6kpDU$0 z^S9WoECyT6mR5+Tm}3@VDk5kR?+!lANPMFnsUQkfus_Hg%n;G3aCK+AtKrv>F3@ZA zzs0taS=kx`W6Ed+*&iOFTcB8TI@S-YbiBOgmDn>ZdR3{Y7t27k3|k~W{cP=(pRWPDwaTkwZWm8r;9jX8Ci-+{!%guO+l|-?Out^O~6!Aq!8V1Gi-|VSK zsiURf9ja8Z*nd<}oy2dlPe!T}JS}2n9luH(=aPII5^mz#5Rj|m@*-D)>8o28Rw|fc zRVc}Rm!aNUXPYoXQqDMR?jwA*!uIeAWRgKuSI*u!r_pV}jS7Fn{kFqyo zd%A=$70V%?7O_Uz-MIgz$b3{MNfj%P;vqe%WXVTh95H02!ZLrXy_u;nU3Ym8#vBBZ zLzf*`sTETRR`w%9%K%Be3lxuB5=FfFlIXSBN>AtDf<4C{_j|srFx;Nxe^vapaQhx2 z47h9002$e-yxhR+vN{SHr%A!{>Lp}^VcEX_xUAdB#|oB9*MP)g2H4N@s9iy0X7fIK z^~c1KA`fk;YT9&WT)rTr1ls6QXbDze-;o`vfR(7zRXh1a!AhmmwY8ay0rvB}oY9GF zzDD+t=LLJHGLx!@VYJb@4vog|prIbh0#+j9FV{4T${uQ&_8gEVnL&*->JMbg-m5Ac$0$XmGdA~#wxUVhhLdk9SbjX7NYvCAVEa&wlFB!W>F6fSWpqQr^F!oJ1Ti{PNsW=` zN4qfzglnbib%jp8rC`-%v$>oB^hE)q;cQ--ERkpSs!eCM$zCZmt8u8=TwB2!($dn} z+SX=({X8!hXmF^YfXE9rs4|DC26+`G+UR@qzHypK!3J0 zDGHRGElrBZ3-(WCDwCqn$i^yKJF`t2tHAzjPDo=`va_Wb6?wraQ<=(mmOvY=>(FS* z#;O8j^i)@z+1ltSpg&t0Jq60nmUd0#1^cHmxyHi#(-j(-bfwaq*-+Sa%s*E%HB>71 zlQhtts(+_uOO-l@beSsHq~NoaN+k@ku{Y@2p(~Xarog@^QqY*$*-|x%JhY|o+jOSV znZ8F4JyX3fc|V=s-W?*v!w6mTB7mw+fW%<*_bewMSMp>=r+S|R_)2#T-=*(`^7r%!(;~z+!i9bS} ziN8a=@xM*IiC;9P;|#Mm7yrxjrptm6XLG~I^xc2Oj^PaP#kSea1J+PCHQ(SV00SW~ z(H-w`mfjnu8PqK9^Z^Im^?o`HKCg(oO7^=FAsL|S2TfYLUAhh_Eh8HP_kLh0A7B8J zzP4`r4q(?Y{fc*GL+DRc4KRqWO?hZL3<9cr1Z)N&VBrKE3 zQ=i&nk3IMN>}U7hd!K#2{N?@j+kgMBe)Zsk z4?T49t42sL=EFYc>^o&Aui=1+R&$ibPO!6@8;H`$lp0jq>ap<=HpNvu~7V-zd+%2g`Fh z1nBp&OZ0yk|A_wV8}wt}pdb4N{n$6?$G%aXeS`ilyMJQk|3u#?&%RNfeWN`4MtSy) z^6VSs|Ky$@jiCJbQGBC)_KouF8|B$I%AX&-EK2i#8GWNX`$l>8jq>ap<=HpNvu~7V z-zd+%OO}7#L;F_Dj}03(VZwn2o^ZmPISu%jtjyN5jC1xC9JHVK{)+hiPw~A!eS?Ar z2#Op?BSZ^d)lXM@OVvty2%c;i(t(3V9V4B*U2sQ^#a5JU`QH;5iIo3Zx5XljZ4*Z! zq(Lu^}p4*3qB!__KVT?G72&U(Q#K>@VlE#dd#L-?i`TH}7Zmi~Z)k zZ7+%RSLgMSAM~4dTeR29O~rUNPh0L!!S}rBd|WFN-%B+2E}P~779RD*wHMcVD7Jis z?b7cWS;g{Y9FUd()VX{y!S1T9GhhevR_>~OrLJW2uhea-%SwEsTbt@$&DM$T8sJy6 z*X8=}?RB~5>PxorT>WqBOSSUb`o|l>t*mc%k z8DnhJHexGe<$C9_aK;v7{KL63Q?kUJndie9C?Otj^6q|GwtT70rQlL~6G$ zq#$GYFZ_}tjdXffOt-QF0ie!;2>#fD6r=&#TE*Mq%?#8jh3L!LU=q=0)G`1LH5!Sj zep`5_+jJ{x0Nmbnc@#1rtP&&b`0WKNo;K@PH{D7a0JnD|>M$WxhnZ$|M56v%&+>s? ziHpRSO|yz2(=o$-=LU}R*(RtS5|b5q{OO}VtMO;~WGfz3NPqQMMMaQ%pt7R=vgde3 zYi+z3Z(1<~&08Rr*Q_}1aVL?XYhUqk3hrj__gNziT>np^!lUWP06y%2!KinM0J~NV z)M8C7c&6nf{5okG9-WzXmrc7tgpJ1-yfq599?!hhH^T(99*AEDo`jj99sv)s;61AF zJfL_9)Rfu{zjiwX@8y|h;mv6DiF$I3uC*`DHShaX;C*#1y&7$;jjuzdnW7CseFJmpWdgz z1kAAf-A3(0uh`jVzd#0}+ahDX{l}Xn@|4lLdYacs-)s2y85X7RB12hd|0%nbEd)+x zl^DgQbnRYovEFsOIO~1a3S##prvecqNQk4{R5PZ(xeYVXHoQiUq2LamXCr5xjS7yk zQnCWuHY*s8sUAKGWk>A*-q>O1I$Z$epv1v`Tec3whnV^~5B z9V8j17;gexstNm`wSD%(ar6E5A0B8ZMD2pRKWaPNT|t#jA~h~G><-WqOw$_xcyckT z2qOppM!Xm!2q?y2RxPIVF$_!}ly3k4Yk`hQwazhufMN`)6nbeF;h3(C*heFcM}H;6 zwJs#*^Fn)Vggc+E#{Rl}m=#DKVtG3ElgJGu53&4UZXg-V<>u7#j}#pn;`XlSqFcc< z#F>e{qxm8f6B0s^)pqM@*YRpKWag6=t5-vM2?zCRNC<~j3_`B_4cEpeJH3mU#y0@a z&cNsqR`6EteiTC(&f4dBEzd)5@oG#6>cM%Kqh8=R4*=)M>BW#WAqZxkyLDvsFu}6C zYt`YZqq;UoW?MVtYV?u#b>wNavuLR^;$3c~V+HrL8|*rgiU1TdN*~*yb&FBuXjtaa zd!V*GJ_8Bc>qz`Ma%SymR#%|PnOC4nXr=%ZVgWtuKITU$}upBq zS2Nac3HI|4q%y8mpOUG=0r1`WPuEHSUJt`SpWf3fvFA~#-X~{C98_`C@n-h%)6CSg zZk{@lHP*e==B*)l7^`}#eRiag)irCuJoY)gAoI?SERGCc?$0(d!bpoFmq*6-k93+* z7=yb!^5aO`@{Czc5yp=ruSYV=n}blxj{2Vvq+Ejq#hN)#X(kA)GpiV~aTcEl+uKde z!WeMrn4K_>JB@>%Jmb&u+2V;%EVJDcXQHv0i|Eb1i|i%#u#&Y=yKo>2W4a2*fs$5QZN4huB*Cfl1`wO4s44>gMVgOv+vVl-a+`m|$Sa2#) zLM0P)5nb)WA$+CPiCkl7r)ih6C= z=;gN)*yYb7;PGpM7JQyfbojN%|GN3BJTmaerEbe|Nb zKltcT>i(mId;}ay{}>TN`wW{5-c|nBvmTPVaw@1ebxj=8uqOU6-c-4+$MgRSF}a81 zH#fkL-P~|Xg9hHxa65pk4x@_u91!n5=k^A8G?P>W??u%_5=|uQ;6c{yhPjB5jkCF- zW0rGQg~;NSx7y#g6Em!DTWyJD5p?AH_IjD_rS!Xz^Bs!Rp6`6u!8>@q>s;$#)DQa0 z<5;`9%i}-9STNK6l!y5c4@J_kR1)hXiZsaF;v|b97}?AbaXo*HsExX4nQ7?)eN!NS z*!T31V=_|!c5~*ShzX!7%ruWNSpM~*L;|aHbWtVUIUC?YnGn%Sg&}LWPt-8c>D_pS z(2$-4x>ge|%p8wvYMO@Nb{hIIWM?$RCc!}Rd#%&399q`qHtivPU(`k&{?1Q0ML$gh zHj`|%{;tS9U##AZ^i=ZpWcnN%9287XCC66gk4APNIhFieGdGY7=E~U^`3Uc73mc!W zlLu4NI{9D0WH47&wwI{v%P=cFjI>Tb6&WsPq#UE~?Z?M$8`@ zxgfPpvfM4fT%BaOd#vYU--}O^P99=Ku<`XjJolGAR-M5#I%4KC9&!@?)uIG~w!NEY zBNS+YoVgSnG$9yIETsxrk-2d8l2GHa8rZqWT;I(uw(XP1Ifb`t4^zLJoa0ol}Jd1mF9 zIs_)w(Cy=_&-p3|qj^*?E&H<1e*4jS%lBkSuoEWS+BbDhAXv2T*Ba*YIFJd4$9Ic; zyX~XL-g!j*FYdc~ipImr>`w_P5-9_qD(7?)$aW{J?mq39!rp zD!A)s6`?FJh?$gRGGQR)r;HM8@Qn3#H=qd`D27gKIw1hZurN@9?_t3Gvn>pYpc4%! zdUzrA5DM*Kp@qJrOpzx+uGJ8o!|YGPr{LBw`=j&5!sg83_Gj!D#c$Z3gykRoIOog) zMOA|7LqK!-cx!&haa?O>cpW=Gnsj1P zEu5N1?cd4t|5Ex&=LW~|KS$Sj|I|t3nK#4`f9kvyP4%uh`eK(HBnEmby4lkpDo)n9 zVJ&YEF71&;=|iB1Kq`shTCH&OT93h^0t!k(kAbf7N}!Dc8qBjq8wWHRWN~eT20I-@ z(@AMsza)Bzc+}>ZjBgY~2AdRsqmT}jg+eH@+Nl!5?d{|7C=HRZCJkXYs8>TmII`lE zqT=bWt;Dw&xCFV@H?TVU#x(HLwCUJ~JBFqK`McaFXWj?&l!EI|g+yY8WX4oJLDvYp zTg8OwwA;JsWM(`hXgU-M^Pv=gqhMYn1W{C=m;jD~ISHbefD$OeTX{@$Zlszg1G3_q ztak>4<`M)oAjLS6pqoU+9crcw$U0uJ0ioGM#RjAphgA&f-t!|)_N&R11k!94s1}Lx zbxBSI;3%M;gdl9i$*BMw1=LdzhGGIrpa^n4D>{c!3$`~P_ngAUXg~xx4M;JLB`gJokC)qj$To7s}V4j09D=HjZ8Y)!K)n5&a4_mN<(PO{v0 zgSk4%a(91_4}5QO6o_^T0L#WdUf(SoM>rL~z!`uQr?|g}o!6$F3Ik~pOu!_Tr+o=s z#U%I=lNQqbuL~m#N%;~m7AD%k?xbU3QI0(k)t$&N4<-vKBA&8upZlKd8$Ib;a3dK+ zLo)SFes007XRq%#k2delv%g1gZ~2~cx8uylX_LF1yXzUH(P;CnvWg|PivtI^t=YZ@ z9RxLsa?xqZ!l=<{Xi!;_OjsbvcCKXZ&d7!E>m=Ko(#a#qQ_#s^uH^AAicZ2)xF^p% z1qG3AfC6w7bVxx$D6-n4bhR(?YBfZ90UFXvIH*@cLO7D2x31wtrIQG!kc>+}BLhIj z`UeOR(+EP(?Jnjz5ksBci2q_ip(5bqAW&4Lkfgk4MO7nsReamBMF3kla2#_a6_Bce ze5f?9D(YW)7a!@b;$RsZjL~T}QsE{^D4hS{IC(sAq(5==@bRPl_K|-3X#ezK&boRY z6T}*=VTWdlPnFEu;ox$`tw_Q@PFNtJ;G zI_Pf2YHHx#dlDVaGhZ1e!*c(K!FVDw;}+k>r&W8I}TFis#nEvd?m%mmVWoB9oSbYR=49jf{EUq6~1gnXv{Li&+L5*;&lM7#Zk@ zr2G?qz-NVaBLd08EZ@vM!Lk#+buUMr?Df5|9}7bmFdY8EELsVFvcR%pfOz9avZ*zI z>p2h+Dg|WcdfWhD%_&wi0O*@W0d!g9LQ;mo^kGHmsW>^I@K?Gf12sTnd$KCmO4#3U zb3OJqpj+92sc(uAxKsA#*ItM>>~%Pu&T@OU+I8nxwB2m(<>ExoNn*Jihl)0nlIA#`rci1)g=ev7Si;Ci z_A)AC+nku9#>lZxwvuM@n-uezA={XKI!hJ0 zFk+HCN7v$5p5!;zawD@W*PUA1`{F5{dE9F1iA_P!LV0+I2n%&*)^~YfJK86^JN^fz@GHPL33l=~*ulh^+2C9@7FYch`f6YjLeZ5Gy%kz6*b1zI(ol z1I2UMu2UGX3C>T`?`(u;erKQWf}q-^(zUh1rE2{ZZI1qmBf&dC2v#CsXBnyrdqNU` zoe-yMEcQVTK$N05hZ;P9PU6`9UqpYC*hN4P^x)OJ`+IwRj~^xiqY6f&jQXbulr}iQ zNcMn-Q6frBdub z3OqMi1BFNrcdgN>GXf#S(YrL50CrxBok-hdTp$CFtBdn=<0kB8mNeFF$b8 z4RyuM!*7^?>hr??gK6*%ToisEWQo$WP z0caBz+BnD)JYU03wBme?QSoSJCXT_6-UW5;G69DvC!BBNu+Eu*abi2+QZd6PFz++~ zpc%(D#QzD5rUXfdH*+khN+2qDeC7trn>miau+j$jMSv#~7%ZZ|iJ2P#UdI$T(676J z^K*=IjtP+rMgr+Qd9)N;1XB)mueP70=RNqx$c%wNvD-#rpZm5^PmT?Us;*%iM0MN| zz&wJXKv3Bt<6YIn3D5~Ae0QwVdpGeseLS7HbK^`45C0GE5)Ncb{M}()2spbtpU}*6 zurlGkC1oLjJk-{T+SubL!^8R1itWoDegfrXdlqCGZlO$Kr`+-!mE4DdypI3*|K`N8 zoNgb3F#yb8Hqy*rj%tAKbd%fd`1|Q9$i+4Qq6&>bC)!bk1o&<@?Z%+UL9!0Fn-=UQ zL{y?Mct0#vq{i)Lieo?sRe}?jvXUCP%$XtDeH@$cWLb>#5qxST#I;6(c}6~tH-~SS zL+imyzs@PQ%69YAfgq?S1d5~F#V)2F8im+GmUk@{o?nH-5I~@7E{EgTe-NVvQdo1e zgLY`+K$g77cJlLVwuNZamW8s+UWTm2HaU3`xet(KHall)AWuQ)e99_htx%_%Ebl%s zGS_MbH#fI>GjSje=b2hZAvp@?nm1b>#^;S8sD6axQB^E~?j|zcnY>tLB$6X{N};b_ z5B~FF;*g+O=x{gD;+??@wd{d2Meuou4o|6y9VlI=(L0^vH12_T6HfCH&My^?g=w2Z>)$QQCjMEb7X?9z7fe!(1)68wbd;!i5n*2}(qQ92zL@jZ)p*#Pr{tWc*ajAH zg~n)#^o(Y7qGOMPw%D7H90-&EJC125vXq>P-Myh z!g_{)wV~^`3wHdrn<5Ie9z(ttplf{s67-2K?9`KTrH`lcc7q<=ZEqm#{l!S$cfWWIEd=JWAclc;OeCLikDG89ErBK-Rb5p?r(7HqEhOX4Tkv231UmlV4}~V~!JE0F*)8%q7R4 zs=h~bj@JK&xQPiqI^>;dK^5U69rpDKDFz)J8x1uwdS@uGGs$@DyepEse!8aTNgF4; zh3R06f2zX!r79am+2{}$u_2u(dj^&59E;@GoojkF*f`Ci%5v-Q2UU`_ngEj}+EMa! zD%t)yZ6f}x5Sh9d3Y>1j8M*_w9SJ}a(!LH-v<4TS>2iQDcZnwEk7{UH&^<%ExEF#Jd`$CtBM;}a_!`$oy zNw^8$0O5o=j2_R07;^>9V2uF|JNiB5cvupslOu(>Y#>X5@PJA~=*=W$Lq$lB2*Lsh z_xC!6*ZvUQ4}pM`0f4HU6NC^7T0B|wXe6$Zpe9tBmoNZ?fHp4>1uSy0ES0>9Y(OCG z_N)Uhu(g*gL*D8^Zu2(BongU)MsqS}fAaZ^BrgmPOCtCn6?4qdg}Y>*(FJG#m4xc2 zvv(>D%@~QrEblQ*^>{wx^*l*a>sqm-OfV-IHT_B;o(uMYeh)z0o{fyP4J0(r&acQ~ zuGI<6+c_nYA4^Ou!8ji?h5RcceK;|zOwWe?qxgX*0j`C^;)l9)Slr34C)Vd5?=>}$ z7}zI9Pg>&YNOTPDKSq? zP!ah00?XSmh?CY_{W+DxxVjc;$DdkqOlf z9Zy(r9AE%UoKr~6yQfg*x;e-qrlyZKM~%D@rn7N~Tu%+@M6z>C4aO!dsXOM=DN14t z#jCQVsup@LX)GfbSeX$>j@U8PvjWA)I50jHt1`3DWH*+QE3VXDV5bP#U0jD@R19n1 zDxJvIuR&o5m2|PfVUsspPTufOV)7sXe-QbP2z?&}_1uHWgP$j{@H`b43J^!aTx)Mk z(cWxr>>m9HhzL8t%(BMlVg{gVAu?eBXp)TL_hEJrn!C@Yva8wb1Q8h1E&~?K!7}?w zV8I+Pkc>YZy-->(+9B-t#t~CIJ;6+q{+ex_w(r(X-AUym)S?6S6 zm`RQRW%)m%(LLqF*q#Kr)-W*tupQtTyF2WO9mY8{;m%2%D&0~CDuCOw*k!Y=AhJ$G ztwbr;+5?ll$3f76?m^w$yCw4J{5@f0_naKbkK@ym(%WBwC1d zEdO+of1y;N0Z`8x%nOXA#*!*jLdY~hBYi`uP*3Na$#mzL7eZ_hHiO}kSp*R((?G{2 z5b4VEZOUf4(kvkSVGVUXApBVczN^=QpN3n{U7QC0#x2l6k-BZCg=svsrm#4;q|O{4f*|* z!ef(=m6MPiMUxQmW8dJC@r-nR1E8J_d=ezq{iF(^8fE(1EH=m-1_^R49v^fsvM&cQ zq4}6v)Y*(|&w${<3HEf>^?*X%U5``S!uthB>g?%IcheUOb;k^r_XW{?TA^U+)+WtN z+vh2cM=QjLH(BAZI9^g(l_Wfp$zo{|KswZQY9-BU@gOocJ=iNYDw>2q7R(^?30kJZ zmF1=f{hgw)7{#^cFdP##d_<~eGo~FIJ>2rSzW*Chz`{*emS?1y3N-&sL(BX_jk$Zt#dUR5yO;P~q&W`_7Gm<+02z;R&Dk&^PQQyZ=d@s<1ZYT# z;hrehoS9*9`fX^=dBFmP=KPMzDbkz`Tyx$i@@2>X%G3b$Jc;Rm=F}iD$DV|^)_7>n z@n;ClsW8umY$1pMbty6F`V^@yCCs(H13ak9@7R>h)uqhT;RDiBwzpOdh0#9+DNPOc z(M7HY?%sV;L9Ipy~i`9GEF(((;Z&t^_}30lY1B^X{p z=(x(^Zu$tVH+9Y|<}c0?{vv73K*3$m^Ifh5<>5A7Yt!RGa2uKHZ&puFTf~&xc$J|? zbwhdR(fm(^9;HSOQ=`tHcbWYYe5*y$(DKez2y8Nja7S^TC%pjFu|%P;iOz!kvyBOK z*6Uf!@wiuTqrzhp_9cb=98uWwv#0Q>vT)xcIg~0b9ZCft1kY9oiqW?u|aXog+*{T~3C4LvF#l^*i z5b}hEd(z`-F*80+zl+r36~%?PTHN4iwTRz_TD&z_z)*`1s+=OVC>+Y)i2Q4`Lur6| zHep_%7Bxt!MF|lOrBaI$K3i%<2`Cs^QNp<21Fd)w-d!iPqRa#&;6%QnMiPZJgF|?@ zTMGlT$>UnFVRC|g2eo2sT0n;}qx2aBS%DYOibH~UP2k?99k^DU7n54i+f8Ay4Zm9M zIxgl2TvETFP#C#0Qc^R!lcd`IJduC7)P(_1&x#nxZGt4ZWjW$Kga!_ky3qD?4jfAa zPrq$=kgz2>dq?QP9hY-mxSaW!QWu(72Rw0Im=tC5KLXzrw~xb{R$NH}Jm>w3$lt9;NL?E;AQdb2sWzG>$o0v(J zsHEd+^&-nBHTmi12-2Mu#G58Dr{_SNpue zVQarS?Y_LLa!P4P+i(6BXQ&&bh75pumibI%HI@`v3306h;5Z(D$Rv+i+Mdoil`XkX zy#dOPmfU8|(uWMd;6eHii2mRxICCQ*< zpdi>)j%%3_I+QR99UkiL&D5TIDEV>s@HH}+SmW#g-L=P;;rV_UL85tTyGSFPj8UI_ z7Dxnl@GRyIu2WG&jn#nZY9OZ(Dv&#kSdcRY*Em<%(1BM`6;cV3Z>{K%fwN3;qkDX; ziN|1X^Am_%fV`X8ZWEgm*ZZ@9elQ;I_IuX(SZ4!$NJoNx)BY1h-MMM0%}ZN`W1CP5 z-f0$FNhg|ULk{~JpoNJu#YLCIxgKW+Y(2nH{FbQ0icDmVqDo6gQ2_`6j-pJ@6ON)z zBd~~hL#R=L=(vuVQODghLCoa7Gs9K7va#@^f!F~5f91?|$IHZ>q{SXq)788*06>&ogj!`(Q+D5Gf_fa`a zhLh5)CUKaFWLS=JsnCK!P|q47yosd=FH5@CIPmSb<46y>$6*tl4nttsEb|GncrL|e zG=!6!rcc6LYc_1lY_cuz8yC`MJU{(mltKgz{3Jf!chtz(n3*}Hz(gDZ1o}7Zhu|Yf zN!u}yHTLmtDJ}!AeLO@sj>k^s8hGo9@!+UqZr5p=^R@IZf_Pc5eYQcar5o_7T`A-* zDa0aU#G)9sA3K#Z+e!Q&BRonC>DhoufQKO=$6yYCZF>^nT8Dx44?9Uak2>dgQ1y6R zunUs{GbG_BLACg1@({iyCiCeW#T57RsFAyZ5pTHYAlt{=lWNjy3w>zRy~xjrI@ZP`cY z->Dw6(;BX;HW7#hwnF-81U4j)_SiI9^!$x%jXY~JDN%AJ3OkeVE78CIXCG~~n7Ldn zdp}jo#8#AFqh}>7|0x0eDwGeBx)OHmrDG-+z+;*DK@d>^ct6IH1S%MpK+BT=1V+g2 z)E&$0EsOW+ECi3oxt+*@yTL4y&YB1Z+?|Ll7%R3Zs`m;!S$LFE*a^J9D%Yk|DN!A)f+ zIU^$~i}Bcz_fcYI8Hj;qAo8S1lm?j!6IA8VAV!D2BS;1@Fh>j+X&j62<0M&xzb^r# z#gC`gBm9?P0%wN<>S=@JF_jg%%h_ARwfm)k3Upg~g>pFGcEObcxX&o+*u0NP#}pA^hzoN(w4CB|R&Mg8Ynj@(Rc@RWOV(<)4P% z0hBn2+R{wq0}v+z@>%JwPmMf^zb9Fy>Y#ck1&gmKC%1`6&Mv-HKA=P=is&5T&RJL|#}`F#KtSc}EE@G3 z<2?ypOnaVCp{4Soh(+KF8kS$*(SA$CND9$K5g2k70cVqK0*SEwQiLDgt3){Rq6k)@ zk3%6LHV5DF;B|S|*U^Mi+?ZyI+cd7(Hf@flSoBpbzl}OP7u#Jnq(q$Ug>`SdDmX(0 ztK}i>ok&9!bZz<7Efh_mx8?Cgf=^tvHWculiKrMQG~<~rU2HI3-z*F{;S!ZN?g~+2 z#!Gp_*c14nPgvv;eu#|lqtYV$X7jbVN`&m2UeuL`IK${rVwMG z@wTCgSB`CCBp!JCP;mn9Wz=4#D`vd=08^WrkVWEi_LvK3(omF_yV-n`w=*zsoza6A zQJ@J;@6F51bj;n?Btq2wA`aU{bud~2R&0Ong^d{y#@Or2p1;NC+%r^(wxn-bG#y zxkSl0Tbdl9a6q7Y9k@(l2v8fYs~9ge6Wk*U{AebzQT}k0KQ79znn}q2gH;sF%p(?F zMMjyv?h*=X#xj}xz&ns^$iR!YI&Ck^D>vMvhwO|c$Lqv4AD?iw;$g~-WmhAHg3+nZ zP-3|g2i`Ba6We~lm%(_ASH~ffr@JV6%`^R2hg>iFvGK~tXknT{s~7UHsuR9kWdRSN zQ&-kroM@!Jq`jA*Yw<~AO%P58Oq4qOlFqcEgW@!}l0)kleZ=X%@+xxCzaj!KDu}Z# z!HO}8u2$%;FtHNRt`k#`u`250IGTB-$j1RitW4?Q6;V7th`?8762o*IjE{<Z1cOC?Fp)6QNi3>l zERxsT5=P<>2v*cM64bU-vC}3zx>Z(7LcWBB+RM!cbj3k7vp$l4|OXnb(}5r&UdpRQG(-WjS_GwQ zfYq&1x0M>$!ezZqZ;KYBI`|oehgTJoz{A%~lJI#&>fpUqIBks(jM@~zS9vg|228qxYYOeo z^b_ZF)i8?U20_UHrsT_LY2&i1^`U&yV!**C=l(z|9DlfuH#oVA>u|~wR@vWFS)>P$ z%$|+r5l#zq@fO$s-|C2)#_-BA($JUPs!Z{@(`Gm{7#}qgjW^vz`u71o>X0!K9*tK<20ChrjgAXd7O35@d`(d3 z2rE#bV-UdTh#slXF$g#p=y)y;0Vqo|2oe7XlzJ>}dgH5X1mU zM=!)ce7JD0TKf&cD+n1Y}DtuvJ zOIjqpMueuWNtIfYnn0QyC@#e0{v~K4V8n$6K7Bbb~s0#J$uQ%cJz@Eq8hQfeizR-xNuZe;cw!|9c3rp7#&F>;ogu!!p?wCM2bYhNzsuc5*`XE zBy0-!M5F)-Ya%09NVv*`a3i9zhE2s3bzXG43J;JlpvZe+sGoqO`>&=%n~HuAU<^f` zaTC6qtTbdH5)uX+P0=Zu;xIVSaFm&PTlvsnsMkY|7};!pG-48}`(bkXNMc|Rkq^YD zXp=CdTY!OXA8p*Q4&yWi#`TpLc!dhLPLx?BeThqxdTAYMg2KQ)8Ur;QIA=gm)983E z?zL9&VknOuK?vg?&WX{oC^imt038uML|6%28e>X=fl%OkA9PQPa852y1i_4K1rphC zMGFkPJ`phRb829ygN3(IUbd17oo14VvhXScg)T5WQG-eu6p9aNhWbi{JI6&fi;s@M z{j*;+?OlE_x4u2!Z3+2D>s zwsWH+No3oru2!Z3+2FR2t#4!m3)yZkAq^wjBo$7V<)n=lP~;UbAX`Avy;4)6kqz(^ z1TnVZO6y7ZK%lYlA~+c0=$x(iQ>C5+6T}5F_|v+W;sWC6Xsw(ETN#RmxJOKRxC`&$r5O9gcfc5!i= z(kvC~V7g?5rNR{|Z)T~`mX4K17<;#nbiG1ID0qsBLp{2ONa7iA3B9-}XTT*L;>m3< z6ng$?CJsN6!{>6^N_@mMIJr<5@-H!5$$;tPEQyb}@+J{hSPWbnV4&No8|~Wot&zdC z5$wy95IDM~#7V~mM~hD#oY$I4(q^9_sDtxQsDzc-r@eUn9Xq3LIPeR;UB_mhCaUT0 zl#tm}(IGRG*%$a_bhH>vvM0dXR3=8D6>$ohpuiD}Qp)TL0vH^-8M7}4_&FxPKZiZ2 zCcr^JZLX$Tj2nA$0(?Gh{Ghc&PJlm%jwHbm*Z1TE z_@p?#$`@(&9gU78!4dcP%mf&23mg;rX~TrGW`Sd|3E@UW!w;K%@oChhabZt|WAR*p zV?e>Sm%74dn7B)uNWa6T79Rt_r8|>OM`*6&#RQ2L(~A5ZbQYBUES7xqiG0kAPZtA; z1yf_5!`Uos_u)brKyf(n9O5%jIu*+8R+dWLc!Wti=*HM^IV!JJ>ZO3`hKn^(Z#C&f z6}~8#z*;1}J%^^MNy9a`X@YRN0^GV@t-;OlgOD2l(Kp~GmAp=>>11iw;UF57!?n1J zv7}H;=lwB#UF6cOMQokW0cDG4HiCg@vk{Dp=s*9EDI>Q7J}O*>ttVdsS{W{m!fgW@ zUPkC2(RSEa%K!-aYTHi^4W}C})?P3)4hVOS$g`n?{^%ePT`1T+#+qC&PrpRdWFon>ZNc^u2FOS`L!-H-OngjQK zA1fU1edNTA#7#kUB~#99h8m7|SW@vxda9UY?aYiaJPLR9noU!}T{pZ~h0h4k#v!L*uY1IKjb)5{SD2sB;5}qbZ`AO`|JqH|1y! z6RCNbHVMo42KMRLw~r-kp_#NeeIQ;kg05(ZOz!^6jT+bgmyyET@0r?K&E!3ru1ODhWgFGKF(Rji06usznN*9bf zUAiQUT*-ISWEL6TsL1}OCK~sYL|v`&xKv)k$hEPws>(&pJ2Q#AP?kzO1xuD!%AT}{ z4?Ej_zxK4z^w>L2H*2OdfIqfZv*56Ez|!3*vb_VHV%vMAQ(}7uIHk6?zf)*?`Hb@p zl|ysJ*$`y%t>_e$p{cI!Yl3ygd82&i&k8bUoYi=51(`F>00!>hfxzI5GY@e=+C03g zGtL3KJmZ`Q8{W)qaO66P{B$H(HiJ|s8r?jIr4Kgalit+Lx&G*2GyJelR4jF@Ify0C zGAGifx~cPXtkV$-ejuERm2RucoL&xu;QJJGz&h&mvLFIa^XcW2tkcW5A7dZiHK&*B z(;GXzJk$tJggu^EWSw5dC&;byz`^O|TdXKJ-jrpXUPijnrI18Rl+3 zk=873jH3@3sRPWBQE)OTQ=ihy%!eVH-^@C|992>)!}^3(Oj5Y5>SKdV#o0u8Ml!A; zHk&Bfk}@*nMHMYmT~rwybx~#T;6^U03?6*Kiz>-Dkq@|!@$EElQKbd+)uIJ$xQiBp zQ}AQe53Y7l7jvyREdanVmFh>p6RLPd~&e(iK^0^=h{mx(9cyYOXeaaVXzI8@cA zMl1@~hH=FFvKmnv-br7m(tlP&ENY6%yTh>U?v~uW6nAehhp(C;6X=^Y+L;xed2|&1 zsUD4gCgY!31d8FmDV9tOr=XS4b8w%ieBllknN*&y33yo)>ETh)-ZY44YF_d%SWog| z()S^L7Cu~}#CF7oUhqlbR?6EN-<}EE-m4)93FvTI5xGhvwGIv6ikF4bOcEFwourh& z>(@TJm_|067R5q#d`4anB{U2+Wp-{r@N0inLo#eyJtmUkhD~vt(1=7nX|BuX;Byl! z1*gvqtsaw-qDu)W87##R{Mv4{lov=bw0cY=1v;@9a%)HfhTzxkU@0~&G$M+LqyW>q zs~Sk39qA9} zMEYSVS~8J`@FA6H2Olcq#hD?u>mF1taNP&*7w_}X4x+-E0`{Bk^Tf>RD%xlW>sa8W z8(PGTk$ahuMc=t9!Iyik#g}`&cJbY!uie!iUlAu}JRrZ-u;$=XN#!f)gGrm**`9kf ziSzu!COnLfUFBfbCqJ7;56t;Gb>V=1gP7~$(}G%MmL56)u76a7Z$}R zT*w+Fzt;kFoiQ^yIS58_;oqx(JRlal8n0F0Fwys_r&9~ zH1Ww^rLHrYC>RdV!y>skSemzj0`O*dC0=sFS8(Ll?pb0)gtlH~D!omPUHhM5lJT?7 z=|KdFmnuI(Q!gu>y~oR~Xj0rLO_Hme=5(VNkdi z_$BT|_(_qz01bdPEsBK(F6@pV__bfM6b!|NR*y+Z(M5+8IiMSYUpw+aHJ}?>JtieZYYb8_RwG?Q@N2))QVgvg z6H7s{{mZB79x+Fbbz+WJYlg!hbQ<1~z{hZF!SvE-Zs0nMNQXv�x0?A|vqpNHbTQ ze=$t|07iljuwC3OhX#rUf{;V}@d}S6IDqvgaeR$^B7GC9$q+QKA^0rb6*3b4>pyO? z!)N@{(d`TAu^_zKu#W8Kb?(zxox4LG#m9#$Up4$bVAiL>Bk3BnN;HG^ofHcumREv8sYL;j5w1D- z@Pg^tSce?#G>agt9PKoZAgmqjw1^;V98Di1y-6V*zVQkZD2hTg9LYl!OcN-9+g;U0#n~I6m6wK(E5}S~X0n~3+Jlj1LSGU2dLTK~iJe43_QI1bBUI!Q1ad_n_ zRr1j~eVc|X#x}rW)4-BO^Z!_1OTq^jF@J8^G6ABb!^KhSZUcMFmG&pfz{FF_l3s18Bf^&Py{FghU-StYs2XFa%T`P z{ru51Io^;eP8x1yvqltm3=*?LAgkkPL1K(b8l`Z-jk!q}Uztr8e2WqRw6`^7HDEk#(xV#?0Jbu9PD`fju9EMMv zV%Jp_*y8YD#fXy5$Y19!p$dG&y$fF5AbC`0`1AW+sM9-}>}q`9NQv>EG9fXs6%Lj| zP(LwoancDC6>+(m&Y~df1`{O>%4m;wqQu$fr&Tz(JI^2Q9!i&in#+9|un#fpNoeNf z{IR0*mC=LXIuqO$s%VRM{Q8SEVjV2px$4%J&2uVraVmHQD4tr)qcUfH=)-Fvxpm<9 zM=#RFcd|y1oji98{;8#Zmf@dSVH{s+Bw(+5$c^d4Hu52iO<_3u!j~&<^`?6X(sv~Y zsbadf$V)bafh=~BchF0|Y*x6(tT31)?V$HTC@GTkLFj%FKP%O++%J|Ze>WDhTx^Po z<#434KW2YS3}nKFCudlSM~=vsU=m}_1%7nu3;d^je0aFZkIcc-{_U|=4q&3tOkDrx zUmqwCCb#I+iT<7DPIKvZzq_A*AMhUV$UiUiK!|={jD0Z{zx3tztY66rcqzmdL{@fo zPLAViDrRxX!<}UvmzB$Zi|}lSQyf7-n`&7^9K)CoACJZBNI3R0nkrmcJ!4cFwAg#a ztZ+ZnYF?f%D@5eA#bJZd;vIL7>-U;PI>VRz)Y}mAOhlcHDwznj%WX<`%G9qH)mWuLlr)A|W@P&hX%X9K+mgj=5mgl$E$1Qbq96aF_ zj{_Z@T2Lj_h)FnMZ}|!4bZr9B=zfy+ZpD-pAJR1brT9W3zVL>guQ`M>)x+#^DmoPK zJSkws;!rPqJw1Z8N6c^sA9EKysy(E`hE^bFt4r6~5xUjA+e5Ocfh=4NhQ$viMP>*_Bn5D;aQcUtXv!Cn>zFal`HCl|f}BofApC0=PcaaU|6;7V7>)Jh z(bZ%FSGx;fT5FC$rnZIvrH533p$ZT91FOm88l^(7#rpUM%1tw51kF(1%V~BV6JDXb zr}LDNV*4fIbX($Ytv*92`;2&=))BZ1Me^_h4<96bKF)rHg+$qZ5g>cfc%8(*L6$+b zZgf46z2i6_i-pac`>^*g!|dYF!wj>p#=c50E5?S$h85iY zenJ4ZfJg7E>ntNx0pi(r6TJH#P#dADM{%>2Uk=TXhrs32^&+6Zt2@?R+ER zzaDONZ7R6cUJbX}AHc1q)Pq|c5Wuab2&VzK4FVg0TOAkyx0)CQx0*~DY7}m5rUv0w zGepB}P#2BC?MhQy4Z-a;6-sb>>O|SD6x_a}f)w0-tGpK6Rt(b(F#$$x!eFfO4!+JZ z?t^eXm`6dd?d?DRb|a!Fp5}bbXP)Di;{DO4@%V_c_BCypF!Lg;!mGfRcu`86^lMD< z#jh{6Lu|=-N7{&Pf;s0|m?wu@Hizscg$ctgZ()Z-2oHigbdr9g&+MJfNaFCB-F!(n z<3cPB$n73V&`Jl#(w$#nj@^}#N$HS4zL|Y|_IBumR0D6PpCv+I;Q!f$G|6+q_o++EM8rVvGbCOrIF(i{MuWM`)tFXlfzF=IJNWVg#7WlhT2n4Fbrg4{7UkmUJyS$~z(b+KJ&$?f@E$fFj zn3XTUd*;%3X;>rAtg`c$l@~?DZ;Em@BH(c^yOFT%-gXc3I5kT>No@B%^$Kyw^1jsQ zyc?EJy*ERx8)R7;j*bMqzZp6j>VmBDT*A(NeGy!OhGZOtj66AeX)ukWp<|(z4Tf9o zfTSZo$3pW&Sn{GO=i$F(=`#hKC!Q5~n8{disSTO%XT<^0vVM4jIXfUe7o__JN~L?? zp>uT)EJhD3o<)llv&38x^gusgX^;Nbp2N`b!f|o&{BU{Ed0K>%{AX?-@?SkMj+_fe zaL~l~7no#^5f6FWJU!P%-c*P7hZxy;zHH_8G`Te$=Ec7JM9-IvTTJw37%|q8%56rB zlY9$jaU}oCSyYo|HJgtJru>~n$9~0&?pVBAB`4}*y(uOUjXS`p_e>(bp2%bREGtel z9jRTTH@Mol!Tm?Qi8KUdov#&|qYIr=rb}4<8$FZmW+u|&9(TDGiib%&9@hBW!#ze+ zmNi$-DvCp!Q1k2dr|^iarpkCal{au0p2XR|w0*zqYH@PG{XA3V-{H{n?>2`*fGtkm z3i>N;$o$pa9Ew3;GpuDGt`$7r1EA0MRB$RrzldNwhS&r3s)BQ6x>|LIZ1!J0*-{mRBR2UzaWK;cG>5uc&bYG0qjJcAL53vVHkMpo(K$Cdl z;~eJtG->C%Y605;HJN9xkkG^kyk|0^l}I3wdqRMM4KVjcI&-zQaAV`dE={*D&PHyG&n3;p?b8yQ{E4!U;3 zYAzOTM$)!Ix1Mplfxw>LLtt7(HR}ARMf3b?bnAQENR5ly!;b5r_ps0Tx$bAPs1eO_ z*U*x-GHv}Jv?r9%lf&?ME1)UR;Uz{w0#=I?&Wt)#c;=;9SjLgNBnHp(P_RpTWK}j8 z(4+5Jw@?6{ZEc35D$0e!C(4C$B+7-O8*tJ7ON8XU{m(^QI_mPnMNkA=2y2<^#wwpT zBrFmNaKy6UdQ{W(_tW>LsUrt}e!$(t8w-5SaP0p$nC7CjL2rDcm+EZ3vGT+d-6%`%6hYZLC?EXSs$iRCC%vo2YhKD5NA;366D zi~c(5b=MgeT}i1OBNNiPOz5Hu=IcQuIa9j|nrc^hxpAG!L-K3h+tI_Etek#7MIgq| zh2D~Aft*u+g(XleJR^t7g&ZnZ`T5#){y+6_C;o|zdCPFnMR)w~ETPIeXt3Cwb+OO- zi(Z%p3Ou9}h#XI+ovn4*=y>|GpIf7(`1v{Z2znvDUPawoj;@#VvN-81k8XmVH%ykp zFE1g{n7m1}h{Hd~R5iu-g7t-Ctm)0BTh3>IE_V9^xeED#t0 zX<%6(z7cBZGXqP&_MnIv$!rg5wp1Qikax|rJ|?D$SZI-5(>BD&#Skh~0G^i`T~-1- zEAbqUsQh!(Sn=mcF36Mcl9)Hb5jF0zdPC4)BL!<8;@WF51YKJZH3U_Rh!Q(uI>geR zDdouV#~B&j0Sn#x$RVhbhM+$EWZ>zagY-Owxqx z-<3vUp6+ng-jp=DqxPocrL^fL;!icRce@|d>&^cAMr;Fyb;$zVQ!y8Qynf^iGr`Hy zg~@86yL_v$rpu3Yr)ohw#9Kym7b608vzklRh;w^e7Ip7|mPLKjXscg~(PLe^(@(~+ zBHMqvJIA%ysTQySVoE#+_s~-VhJ+nGs zTxrbem7Zd>&FX*=?_bJYG;vf*w9RUpQJK}m7j0GtYO?qj}tPUE>O+dAq@UDuu zson_;JX6{oA2)9t)%u$zHyE`zcrZ|H@Q^4}8*)<=s@*g-0@a2a87DwBV_1(dG3ue3 zF|21Bo_eUJ4Qp=0j$eDRMmGKsFp#Y$kgYBxMoq@~kvhV-VdUBq`Yp(ia<3MxaFt=OSn0llTMwFJwc#Kcr(-|(TEOlW7gu@oNlIU5OgMkUb%{UT zc_JuDmzS zm4B%kgcN5n;hPpBe+fRRhA-?f6U=YCRidT*26I>p{H_%vCo~L=DCak5MA0FDLC||s z<9S)-mm5z^xb#w){Zswg{)=d-94#}(*Hq!O7bEa70@40dpOy%^QKcO}9Gl^%D4DpW zLdA;l&sGFFmx+_@IeZ5lj29|;irhr+sl0eko%YmwD=)qaKrOVN@&a~nM&0)F1@=&K zc#n=ykDv=@Gl@$2z>RN5L(_L+BM5acIU@*r@e)`B;gCaT9(2-ox>9TeNvEDg+93Oc z%|~Cy!IuJ1KOsJX&Y$}$O+wcAqDQq$Q^Hcd@i!o)!WnKK(G>&kbkne`hY`m==Sn?N5R5Q~2fmGYcC^fl|7IQ#!LNSiAla-4}V z|IG7{)OlUu>ROpH!WkM7zj6dVA^}nj4#6O1iP?KQJ^Hr5=@-kLu8S2*37_5zU#h%? zY~hA`C@($mhxTxp^5Xe!M?fv;C>*0l}|b z&oXRUJtp4J3Ws$WaE(A-05Al<_MA6(7tB8nlaiu~4k_{ifFby`o3#`}tH-3IXpKP% zHu`V@z!3b}^LDDd7+O6hk|O{7LuwybI1I1f6TE&Onj-4KYrx3xx|-m1wL69O0D{$x zfQjLC7s2Z;$t2-bGZ=W)1iaQB1+P|!1+N_^Njz2XdZ+UK%&+~$Du&mXu%Xf6)R^!R z#nK!w2k&a-#m523yHKGy|f`mwmAR$r{stiIJicUMLNfWAe4UjsV_CfL49d)yU z9tw#9$fQ#-^q$%^WoQ&YcC9)wJ_d;-VQfmuKuQ@oaOLDRf{%H8Aok*V_;_*eM({C6 zArGLHR|4TB&EaZZb^?4XI~A;_UYb(nR7Bw0rG0UR4x|Wt3{oirs+KVnp9x!`KO*)?pKam|rW z>8NbTMTh%mX*HTjK9=j$?itnql?$ts+I2eb{=MM6+VG;{*OoxFahH^#ie& z52^lgy4m5I?#*df=q0m{lgs>4owwELa;bK3oVSn&0OAK@Pn|ewClW8P#9J&z3_S!YX`4fdg1NL zAFNzzif~>Hsk!^Bp>G7uzRa>^z_U!mjOJy_WmvYPsTlF#=>g4w^+~m68A0RovYb~` zljm!0`UY4x5jQA=jwJ?tBSJ9MAa_FyzYEEGA~rMls$I#4U&)6DYIx}}iVt57XL?Y)oZ0a!+3`S~8l!B%9RV91!9G{9<5#lR@pS~bAnW--bE(4k zUsVMFM2m=8Vwmh=I@cY0fh$~(uJi`$xt{;6X>Y?(ox`zKDu$1WTC*56CQ9HKTC>3G zTDLc*97V$a6mY0u!esYFn_RBk-|fg*Pgf zcs>7ThO^!pMzAsqq+V(G7~0now6FCy0on_02{& zj+Y~ZU<>x|0bqETyK4s*5LmvuJ1JY_)o(1^1F4xe2wA%aa^ymgsSl+ z7=3;!u5UI%|5I^2Wv*7h55x75xD3JD=yKO-f_qy8j^9Z*ZtY4fa%*jV+LzMJF2MEO zrt#Lt^&l)7*Y~SfuP9vqR{1xX9VtyY9?mWWbdG5;k zxZcjRw_(8bVZ(sy!^TA6`j~Oi635}YA&@v7?`4~DZIviA-4+&12;dr%z4#<+Q&1oU~{e9yMk{eX|Z?F2qvuvUBk zat!va#l_MtkZajdK`}f9j=4Y#!>k}W9!p1%S_60ek4*;YVtaaCXgD6GgyC*XcR&0W zU4#^PfB6*=0qPVA0@r|IaF$uK-N$G^4e zcbWV>pKg_1^}92Waq9pH`6$v4h|Cs*`UhVaG-XnE^m~Z-w1glhH6kq&O)B$7Y^>af zrDuB9%KW*m@LL!GaWFRH_!GIA8G!&@lp2wVCu2pLb? zHR1ovN~t@ggr~bR^XsQXDU#BVB7f-fN|HGvIPHBhN8b03`JrKW zQ|y@kIz>Y}#*TwnF6FNBt+#?SQ8={}v({h5F(di$jW67^kxi3kl%tg-tUc%*SLYlv zKcw%t%b6n|Z#k!*o+QIK{GYwAkgc)IIV8`XS%Z^3<%m7^6i#HH$JE-dBggsa{3pVHd9CQ#JbRKnkS0g zF^6KjVS|u+`m?ycqE}VFVy;xh^+zr1*GASG0wdlV;!ViP#lN3GRt31i*C~!|+U|gC zO%u+OdPezVXkCn&QHpgj+hY7-gUswQBF5_>b$aG?j=}Rw72}WUd<^G5NaJx4GlFNN zkAshP0Wl+0F)BC)PS0rWZTj>K?F*Wmqb-iYI1)jbT!m?61O*SE&_Ot>biBH?4ORj! ztmCB&TVSmsGQmX2xKfmIa z@+Au4;GDeyiL)L#nfg_GA1#M_BRmL;Yi^xco+cc=K+^X-m3-&K?|5I8U0Sp*Y| z1nIEk;FT$HIVSTxF_~v^JxJU_I%TquveQ$_>Y-)z(EAixq$TSbG?;7dpex6BNLd)H zW@B0caxKZaQp)Nhixv!b^)hu0TJANRo4zCgd%}IOCyX-o&}9Uj%h*@vt8cx0ZTy9< zyI!cIUe%=9Y8N&=KgT(lEa%H$Isb*|f1$&tmx=pvP%TR3Xk&pOejaTcRrWY32zAFx zE4{F^0zm_$pk7i?WFxS|aNTi6P*syjLEWLCzo@$7ymV&~4c1+doqo_qzbaG_7JR^p znwt#0gE*Tq(^F=qhn7^o=4?rQL_hT5f#}053pK|Xqnd-Pfl^iX})lX=l3JmS}AUQ&v5UT{!jgc6x9Mc%Bucn_CXP5sG= zfCpl+8#9~+fuuBO24kNNN~hQQXo=Ngj*pFZTx|H)U{-;=^Fl3gylTXiqT>3G#6Kfz zsUOhux$brXVa+RRFd{~G(Z8DdT{XHN9?inKV66txCluiccN1}Jf-L4R;vxif6a6ve z6{BnMF%kYiwM@Jl9)b;TR9U1CP}p969xF1~v%G$7$$r{7wQ0cyF%`zI>!SM#-^Rte z@z{#;7JFg@jv0x?-ubzxKmC$U6V|sb}jn z*Ar&GfJbZaa|kyLsfPHOFqk@;D+B5ngF40-9MI58(e_SNf^ua;G2WmbXcE?T^o~hV zu5M}&*i%Ws2g*pk@ygb2Q&^@d0e<|I=juWf0Y-|Rq0^Snct@1Fj(FqfK=wE>*}6#= z5vv2xp#vU$y$p}OGE)Rb=!C3fI-&`6d>pD4k9%VkR*VfzBb1pIny(1+Lyr*Qkr2L3 z(p{_$eMi3ULYx3yLa_cU(U?p3;M23AnfFwQ$EiNLqds0Ep%@Ha3!yMQbYY_4-x9OT z!vMX^dxW9^_a6!UmA>5f*AUAAf#vkka{2_>v1CAxeYG9|^{mIfItrlP4~KW0CpGV& z)@?6!dE3u5#y1po4Ek<-Ptkh~#xy+o68Yx`OmQfE936$|eYJ$-t8akkhFhfP78oYI zV3^DyCC$N|AvAt8lq{92I5G3FDsHTXLK(9;ye>G{5e|oRImFCmh+$JyQKC3dI79Jk zSAI%e+otge5-(h)WgeXX)fAI_n{ymxh?Zp3{!vCJi|NadBcE;DpMCXf0u_$Gg z%2Bcyxe@2zYzpPk_KWz|7%k%y{cu_asz~SD!PBOnq1wU^=)yHhcruEk0b$5iAgG?l z2%y|!+@7Fph$LA@HidE@;YTIGU#nuENmDzqDJq8HplY@M{M2(aJPrWF4VXmGFv(k` z;Bl2Vo1kHKXfD}cb3=;>GA^@4SOR#iwj6V{+A6W!olUG5nK^DR9k(8MTJd=?5gF*K zGeGki7;qpQ^gj2{i$C{}kG@)#!AVO7uP5TnQ+J$s;>-dC%UXv&Riz{-vc04p+s{zc zhPtbcA)%-TO^h50pudQ~zM=<{%bm2vOlY=Ap^>KUX4YPK9SrhhntFSg5H(WzI45jnRcy z?MC}gksMf1^`d3b8Dle5XSX|F_3Ud^Ub4l_YS1$j${qAz{B~c*pr>=~ z__cQ(qrN^_7pqaif+&t)&@;lQdmBOZJVpRFBPYB{2~6fnM`t$#Zbr5rBN)P;R}t{m z94gf&s0fC^9`gKiOz-4(L9y)B9m`&|)H`e4d+gpBa3Zvq4n^+-v@cXr&NMAyhoX?l z0%#9wKL&AXi6z%seX6r%>H0PfaOLQ zRjCnlTn~=;hJUM*Wc^rvF>^J+(Qzq$?S9I41Q%gB-h1XD0gFlEyOQ#?&DB~%1cNK-hIvHvAH zrp|8kOCF2gJd56B=`A+;R z$yk|qC7GpQcEeJ7N-4dhl%84&#tJ%I;)cZEkT{{jij)bd^gAJSLTV`PV<3&|xZ+6s z!33oJB?8r61V~@SV|nwd_^AmvWI%u7$%K#K79S<-OTZH!h*+P-(!L^T1Ee&$AtAm= zcrQ706Q{p7g&Zsq@xMt>#d$ATPS#{`IGAH$AAm^%AzDmGyekoB7L+Sg`5IZ*nyOrW zt($=UrvnJ3!M`AJg^EcoI#>*LMN}@ocBqcXJTl^AiCa`ea)t1PDvGJ7%H`MoOUI-D zmE?1YZ>gB%3RQ07n2L&+b5t&D3_Gsed zB&i>E4WxLArd)pQ&yrMv6rd8Eo>Zgak&C{J0Cq)GF2DAE9g%rtf}4_FOA6i8mQ_q{ zud)?IHDu-XYjcxTs>~%L?@#*PL?*Xac{)WlWaaj2r|8JcB_rRPyc#V^rp#{aT~KU8 zS8l)dYaN?{sKCJ=mg1ix!|N$`JYH`WWSjvy4mu*o z8KC3zqDrGbaWB%KF2{*rtCd7!P1*tBbyrkLQ@Os!uicxjbViJnanBd8bDS*>jYRc5 ze(jYR6i0>0!ivw_Ib=F;X4s7l*3ds_2a7gtz;;ED{UDUPW2ZuR`yq)g<18I+rX8s!Ic zav(t{YHW_T!sEAorBiAL@rfSc!Q`6KA=w;PyN({=40ibbyDkbwMhZ@G?TQWeKQt@c4gaH2;SV(` z7RN4)r8c)Tc0HZ?S|9snY^VymG;hX!M2EiUZY;ztV4ej;vk%CLYVjb=Iv*4-$}I`} z{)-6z60iH%fPCHmN7QL{8KakufgHX_tUWa=IzzB8CMLw-`UY&%g)vL%IOEcoH*w^V zG8gkM`PcZbVr1-zYhblen+Q&~K8)s7TeaTo=x-WTAI$GVL^fl?I;x*|{ zWyAMW_O|TM2sD~)*>~o^e`n6(97tN6vm_@p0u}gn&Zp%6H0RMKko0Ji@daQSUogJ_ zzWD`Dknf3t=gIec!8_!8r(iGn_7>bx2;Uur^9zZy@L}>jT)38eYYVrLZ(HFTLaW=d50d`~>AWX&e1x{Xj*yOfOC9%= zI_@oX+*9hfx72Y@spH;K$33Nv!AUyqDRtai>bR%WF%IOBj(bWS_m(>DDRtai>bR%W zac`;Po>IrXrH&CsI!0R|9ru(v?k#m}AKrj|UZ;J$*W-5Pz---_^L7q;5LW)*&Y6@8 z`lQ@NCD!RG$=(C(%!f@+=ELeI_z=--dWtvW#*?PU$1ll&aXl#)b&C@dzPKmu#W?Th z+`%4%6EK3VMlQeh<#sfvDX(`H!6u9M&SdsIIs4J7DV$t>?R%P?yd;v&oQXqmOLAz| zPbuP;*uUl;rd?v@3R?G+WGoC&^NNl2#Jh3t#=+W@zX0fW;||3!-g%zytKiNm_zV?{ z(JT(g2u>+gdHmY9O7X=D9Y)!p({5;e$Qza-IB!T9nV22FfV;hR`?ZI4u_!3YV%w4Q zHeDfpJL$n>^zXNF(e^HrP2w_H!=xVhCw3)O6OJ&GYB#DG&`T*c(?H2IP)ZsoB@Hx8 zir0a}x0CooL~oPmZiqFh34SIud9+DrI66pm(L{V*OH2d|u>YmvSBl|(1>KwcT22GM z;*t0{SgJ$Ch&f4H=+p6&a^K3u4}q4X6JSXfft7R-P)Qeolynh5Nf(3DK<*=wKo}%l z+&2bNM#uuJ|39rTX?g_W>%1ewtEhReihnj9DE(~wyX1Q}es6r-P-mD^6mEv0b#MH* z1azTs2~!eqZ(LG!*p!6(XgYac!iogEeQAejjui>dQ|#vxUQWnwh(q(eobV}0`ZVEa zLTTfCn)_(NJ&9;D_atto!Et-y$B9Ve;Yr(^HDV&cEe?QMDi6f&L0%5D7eUW)%To^13_ zf}bT`CWnTMa1$VO-w27t$lo}>ZbNhHPo&x^mH0pJT{jQlW| zqxG%*;^E{s(t!7mHkpuzpZNvL3-I%N!E5xhx8N}Sd{Z#7kirU=(9hb!P4vS?(m-hs z4HVmpb{2s+xAPGidK;pejts=-lJ}5rPxAicxM9w4 zh4cH9r=|cjrl!nH!KY6pRfo+?c{Bwv9!*)Bk`)=IIo77^qS(7q{+W{B5QpabXUg{^ z>HCz4silqcY3_-skEUYh`_a_5Q!!h7JN2tnr14d1bz1tL)toGG`?hV{uyF=L&iMsP2{M0sK`dNz?It_m0ME?#v0V|4=5zJ zfj+Vg^p%z0oh$!%g=rWh8>oNO{lm!wk`E`pl1yOsO7a)U1ZH0(FG?XWTa>aTg?Err z_N5T0?Mt~cl|b#z)b**<$JeLsO(jssCxKyn(iNFYhAo8*ylNFKFsl1DlqdDOy5 z9u<$|X>6g^P4cLDM}Xu#X?Ew~`Ip`LQ8sZ;+TYRulvuMOphQ3WTNBHBSJB*}z-x4Y zSPcb{%A(g3p;d;{b2$nLG&Ma5=56P5PeO7=;4BI7)&P?N-$lbz;u%W zQw^d!6?opO!1KN0&lx-?mKgB7KYaxz#sr?^!a<4lY7Rl(NbscWibGk8veCd6Wxtw@ zqCAwpCLg{v`IsSN`=IC;!PhaGvGx*_hz+M-Wj#Q1?}v!DH+Xqk%S;xWG81f0V#24@ ziD{se)Bv1*mGx~F!|Asqx(8zI%E!+xL}vK>vgq3)_`ih|_D?LCTmt`OWbC+bDxOZ? zn}u}$k@rwOen|WHA?4$TbdMiWJ$^{@_#wsPhv)GF#m=HH2}Mck_#vh9V0%IoZ5-X7 zPJf2Ri)Yf`reW*t^smVGReE)X1r^m9i!xBUMHx#n>Y?b8j4c_6u_fb$j7IR|g^Ya^ zdtb)kjN_u{;fy;oA?eP{d6_=|VCH3R$pngS$vl_|6g`+ZEemN(%bJzd5Q@&qT9$P@ z;1SEfZ~_$Ny6T3ydb0p2y@@KTrwgt?%(4n^D+J4JsK?_Lm}|J3tl>VghWm>BMTeW*0(lH4kjHQWc?>6z z$8Z998cz13xFnC^#5OWlX4(B^XVHFY{-)iFm07E@8Zt6DS})nndZE`KS}z%m&=KoL zKtUu!)`eJ;9kFspfVBn-OMY#<1}yR-cf|Zjb~WAyqvic0Mus@XYkd@vTvkN#%7}z; z`cF7rG0*FYYZ?8;cK0>8E-GGgKcp?658WAI&}W3_gn7MG%n5%Cf{v?yX|>b-Um8*> zR5-sxaevtxt46(Vgv=Z9+~^fZ;C(u-^S=8z-Ol>l{fd(N%DtVA{on4*rAt8@yj3Ci zR)sdw1)zf=tgc^y)%8R4xKT~aZ9aP1ZT@^8m)F<&FVdmZ7yUW0_|*FtF(>xkSorUa zJ%lxTaVYjSTy;U#UkpRQi{ZMkzAug(3g>Kap3UX%j;7-7rlUr?-H)lj<`kdE;WtuW zb0N34RD#|M5P2J1dy|db_bX zgCv%RL8g_h*Pt8p3Mg1~?u~ANEJI9hL_^d6%B>5l=>cnv&%Q{-BL#6I?lWG2`;3p! z!NW(~CrH;%xF|~xsp|op5Z3MJ@CxzcTROEHThopW)rEFbZj@V{^H;U_mAio|jKXn9 zT)$W=6Q)v4qc5EH!&L};(!RS`>^|tm-{PFy9N##n@3eAG`pMkV4g~c8%Ei#(bRCty zCXJiY)7-c}8{ag#2-popd5nG@Ly1BaNQWh1q(Gk8PZ=TyiGxk!%^@X;<*0h4EN)a$ z%GyAxze4QxCeR`338CAm+1(zRN4|O3^n`DD_{lJ7i*iZL)2|&=PRb&>aFzi;T^))a2F(nUn&DJw>x%v?&1~|X@hsgu17VhOc6;A? z(8`3+q!4~4p#ZE57S@f6z<$aUD~B7>Ga;#*Cj;ehAB$4X!O(Q-e$&Njfo!i98>km< z5YLhCIokLdAfBWSrj$dy)vtBhkaCEw+)_CQL-)o&7V}3ahY}&>Ocx6Un$1E{gG+Jv zXQi;44X4^bvpF0(60($Y1i~!kOcyKY#oyK9uk`a*=B>?n5;gwXmBz2arb21EZ`x zFxhtN{VQr)?x**;_P2b$3?s|?Wm{UK>1=7ev$Y&xcDDYeHR#{8o>GpSOevq(7QqwS zuBKz4tJ{9s7Ga;ZJ=PXs$J!okkKy-d`-L6M#sj3UYDq6Q(3i1SwOrdWjANbBx3=ZN z4*b}&oWzTVTkb0(b?!t;^g9t!@e2&1?E(7JzuIM@+|z1FtK<=8%MyJSwnVGtppDU+ zs!UtnYC|hjrB2~M`M2d(H2w(Fx8>v8Skag^zRlb=DDB)f3+ZuWl`nB$yEW~iW3OrV zH_%L?9Q$wWUT%l8%br}Uz`w}$?v_---K6$xEojVhObC4R7e0y;9Y_ zvaida@UP46Y2^)f#Fwq+w1#(1>n*LxJF9##ec)$t`Mp$Q$J$P9ho7nKHngK>DK;QC zUggc=_V&x#gS@Q$(e^~9N<&NX$^B~o>p zsicql+O2J;No(6}YDXs-P)eCqt~dBd9{T0JvVCP~7)nZ7jBc*ijv;AZ*_2j^(10e@ zaFH5dq#~vd$9dK$0S}aaSdOfGSbn%1@b^I*G}7)U`LVWA#uz)XV{PZPi%g7k(Euaq zCcTmqix5D%Y9JF_!p8m)Ys=m(L&td+3P2y(-fCAX{OoG=UaQa;?47*V>VsCiFTAt$ zgmSP=C`WI@?qZv@ZSb?U&E__tO0aEi^Gq9NdxLu10P(MO2ioE1K)a*uLZcCWwB50G z6fSci8(d)eQPaDx?4vSB{HSb6E7(m-T5XicZfu2K-y0ocEG0V@{Q|yk%NNPi7Lh)& zt=aaAwg~;A?V5J*t!eiPrzKu#hyEVSq}gbox;}trO|5x+*`6}+@1c_SM-tyrO5YKj z^cQQ|{+(O=8*M+M6h5P38Dm!GKPUmaph_k1;Z_jwF#2?8=96Q@1}e-bXn_l3rSvtW z^mX~dHq5rL4N669T&n&kl}h@tc3^u9-GkX)rs5GB7q7oVAD~0WMUgO{nMm0NzT)T) z8a9EtSd5m5s(7^g0M#G2zyV?fT2O$9!jt^`yAOSrkGOM8>7vNeMe(KUSlj#BN!JQA zJ9cq`p8A(Nl|q9lj0Thwf&tU<=W)lUyx2WGgg%L!bN;!vQzxXtQT$S?GuG>Ft;65v zVIc}#F5O}q;z;_3D1=QPrsz~8o38n(J5sWgKRela9Z!m<&S$eVoI7p#GVJIfn_-6Q zbY<(ctuYR4Du2ElmcaAnFPFpCE5TmGC>l8qxB0pa$X_GF$wQq{K&$2_wJxC7?V;0o zvQ=zp|3Z60n)aX2&*TnwbifoQK7rnp2hy9vCXp0Lm;W*pV*J9$OxCKtSEtat{-{shJR#?tP>0j}7^Fz%kx797? zv;Y9lX)&(_pKF=d0+D+n%55$2b6d;XTM`*@#lB|WHKTITA3TSe;ezYH8gU3@m}auO z*Qc6juqH`@JgWuJ`mWg&$^as=lWuiIyC_%@Wi&5FyxZd47DRWY6UZKlc2Te*%4lJn z%4qREM~jtCoE)Lk86XBOil&J6fie_!W!gXSQik|v+K05=_F>vVyo4bRrtN6Pl_M3h zGVNnp9RFBS?OIux_AK!~o3@WO;P$0In1|(y8^wcp9ABT0<^0i)smuVm!TO+%hRC%iiFH8PhU?b z*wz!NHwh;K38z2tW%|Sngig$uk>Tt98ttz39Cn54-T3;O`tiuU}Ni2?5)dsAuiST|5n9YYlJPC-n$JZY zf)hL7YynZIIZvt!36&FjMpam8JP42)|2AWCX1EF;iW){mn4CES4`7nozRj4C8PxWS z%-OW~KRa__W~d4$=BYWr4OZ4G1)HRGb3@X^p9y}Ib`T=dUYL1LCO)7>g%$T?E~T$( zK=4AiOl>dCe2^YMdoXiVW=U08*Kt)V?V{SoH(#q-soGu&Mu_2DQQY)lsghEyE6As zmeH4AhKp;P*P-^%-bpv?oqU$*RizSa?12*-YitTrs1dIV36&FjMpdfPco4uEM;f1H zew~SrMspAQI1>m?hYk5{l)k(S@t5UU#Y80O`t2#;5=t3}}(3~X2 zH614?8w=}j0%5X7gGe$rbF$`Up(3~m&dpj#DWRBi;4)2cdDhA-XlyvO(v?}Om8zD* z#a)~#Zgti=($u=Fr?dWif^1YBa{RJzNoHpAoZ@EZv?%?N?6MTluBEP~q-+UxtC0g; zKa{D4>W6YU+5M5}{z&%5vnfNO8^zOE+p_Qq6JyY}tX--ao`y^H2eB*bL#S9*+TpCD zS(qRk%^IH_s@la3^Dx{RjVL(%7S-uAimp0c)yPyZBH!G6DX!W73`P3yoGW+F?%YdgdC5D%QWA)*^9GLB<}Ewv+pG>fn_dSrup8Ry(}C0 zT$a5m`_CuH2I(iF`5s>d(d?>S?22r@s1n(H??n!DEmEdTU)Qw>c%fWQc6GJ>Pi0pY zq)6>OJ(;~Z8;cj4v!Bg=2UeJF3sFW%!(Z1Ra|?vWa+dU)kDK2v68HxA81I%;z`bv&@)C% z9tTPF#-tk+7@AZU`#n8?H<}ld*$9=v^Y1#r;Pk`lL~$wmd{y?kZ2uNHqOQw+QbE!x zxERWLO7m>?_H6#l6<}+7_R9*Bo`ov_+LyC;(y5`H*>%~IydOFI=;7r@M*ETMvfTB@ zV$+w=`(VeICf1ON6KxJOCev?9uTTlfpmI+z5&k z(SZJq7T(uP|7Z2u8lEs71}VGowJBOSq<03oT)i9Gso*YOXylUt^Q&QXl2fN z+?pnNTXLSy!7c;4UdiDFcc!K5#q?mZ3?{5jt!^J>A>|_&X-&s zl;OVIhjFQlN_I!?9l2O`M znJe@7YVNxv6xkt~S@4Qp=-ZaNBUi6A@5p_XqCn&}xTt{0=h58iCb9%kWwN9b6_FPOQjwppS<`AxLR;lTA%RupzXYSLv9V zsSR$jFsvqonp@UnMH6J2mmXI%S&ci(6nz<7S`XWryxc_EuG^Zti95xl2cj80=pl)7 z0g;=UY;A(ZP)RFBTbpd7C=j^`E~STqO}?abppo~Q>}jI(@LiMdWWj0qT0Eb(3!hsT zyYlMtyb49B%Y*WGAA&;75E--zX3wZ-Z1t@!@8dk|IdKF0IPUQTL5v>6Q(MHol`48n|--$b< z@^VAx+I=qnMHEK7nEyt;SHb&E&%ufA$MsF22GxRY$LtvudfzDskOg=n|HJ%n#bn>- z#{FUb0nV)>-hj)h@%+yz<&8FFquI8)SOBId1r`ZLIaq*h=o)(j<2kkwPs{y@GWjbP2!IlCn z&~Q)NQt&cmnyD`raE`MlUCRq#dKu z4nky|Pb<8$5bO4L;u>}Hit3Q=xX7$_QXfXv(TPKaBHb9HOst>K zLM%}7n6SBUhpLyy;8J}=>?nK}I+yxCSa_rm2Y`;?20KuSTkJu4*r%^-u@u~ZRlxi} zDcxct>;=^7yM_A-fsnD-d&F41ukaw+FSU+$;R<@oq@w9XbPWObP@7jw4%#)ouN16B zR7|FJJz2NwNnl3a<=}+)=C!F{lwpCLetsT3WQS2#xl{IVVj-G}<2@MK#*Vk&PA=AXipvkQH5Ll)HxNjIxVH`{UF82~ir) zt_+E8FmsC*6rr*3_T_@28Y&BvJ{K+;Dj3(-6>TiS@z{+;TZ=w{>86`Vv?bFBo$MX9 zf7D)8;{uc^R8j3m)>*YMq8m-Tk+`zVv>ZUD9GhC!>YNq&V+BLpe^I8OD^(cYwps_R zW3c5Blqw>9bbSkfYUbF#Yet@p`0uD0*>D0IP2$%|ysDy(`rvJjbqc>$!o~Q{qwbEP z*Nd<}@On{Q(cRup7((@!^An=}gebC{^#|;T&8q)Ixxt3j4k$>&D(Ng;@6rbN#Y(*I z-%5-en8=#KuAi*AKv}YdZY_GD2opdC`xlCKD6roOS6~}_NEfRI;LiH7qQ&7x!TLnA z8=9m=4!i+g{@Az{Ok;M&vnLD08{A@PG~fTLaNdj{k!u3~H%83pT=F2>n0lj`8?T>6 z2J-(pRJU4JW4YG@@_(OYa^mHK|FI5c+b6ITKcrV&ddX=4K}SRO31P{Ke`CpiT^nZm zS`XF{t4;qmI$m@x|BWRLR%T;3WI0}_^E zaDzz`8?riyD^pvew7#IUFE`(cmlR{6k}}MDaqzP3kA19F#p{Z36^C7$im_>skPL z>myjv%Y2)PpDo6MGq2V^Tl_+?T&>>(monDG3&k%N^V`~Ry+z?DJ<-e>M8vKI-pcuq zUJ`=_-zz>yIRHD+%r--G4&Ew$hf2c>TJO-S(Y(<37F?u$R^4ZKb5LjUi{fudKJ@$< zTuRRqOQw~;kZ0zJB~$RmmzYvAy9A50C_m|$h-Qs6s4j3#E6LObERDRjo)?rXC_%E6 zGtx78wVod=SzUsiPU!i;lBY|shJ9dl*sng@4;;^vjkD^+X9q&V_w z#jPq`TZ-#r)Idu&m&(0KqM3z0y+W#$BrGGEQ z5+AQi|GjiOMS{vU!=>Bw2c`Q;rFK6k{S1XBMH0;{1_vcYRH)&t(sxSH6nJm)ozf2| z;}H24T&9tJS^Bj}_3P5=rjQR^e+ie;_0*=VbKG zlbK}Suf*qxyNjF=I9EI3@i1Sld_2rdxLQe7fF?t`f!B|~{X#L~3145R>%qa@$PU1cl?uSGlt$&l$0qM`p@X~d0Fx*0OHQJ@IcneaWTn1Nd+zaKJ3eaQ#lW~4{9DA**d zdpvfvi2peECD-92G5WsbQ}hvd-pyYJmjp9N-sC<@uUkFq?r?w5eaTH=n*sb10L_o4~@xC?D8c+_k)IIJV*SarBUhbG& z*Ysr>bdOuT>7KeTSq&$Eh`S<%HgHUW*&DwvIUP^21@|TA;zRZl;-V3V|kLBxNY`;rfNk9t6SzO44Bw}wiBcJ>flrnc93f1_8l{^o7= ze$ai%HDF|9Mr~7EgNy+-v#_6XUve{KTlXc&OO=d0>&@PFsE78fx08$SOOmSrolr$$ z{Pp&F%1974Ffs_u ze!JiF?CiJSyf^R73S*I zd2}$6|LA>5e5R?N6Axcyve3_oPfE+VtL}heZ9UXEnr{~y?VRj1uSpICY(D;EvXyac z5Ec5LxF$KnIoAn)G1s}o`6peIoB=}ARm_XLR)2}BD~0`e*CZ!9tDMlkSYDNL26KYt zO$KCH-V(f((7Yze?>6cAz!E^xv)Nv2@tG)SYLjz^vrQMg*26kXT`!_1hxcErFrLz_ z1-GeN3Ve`mnZy58PiVc!kLRFMVy%Q)qTD;2hn(i^#6!-rM(uY1GOSOXbzVo!G<7%C zhwp0Zqso+dJFy#Jv+pzc0TWoE|B2g)*PVBrvD=Avo!ux9ZEzh>%ofYkaAn>H9Ii&= z#crf217x++Xf>Ywj z8tD4@c4FLA@~?E4((od@8kpbUUZ3?0{DE(!X?P9ouXQDbmnD9_ornu#|9uDczs1I_ ze>?G}8i>~(>-jmI!h@z8^b$YcPRz&DuC~El;lIx0<7aPC@5Inw-zQtgJsP}n<-wEr zzfyVrR&FQO9||mQ5jPQ5Tiu7;`eCa;@{Eg+HC;0wx?)CR#{~n|7kG0!q2aF4F0Rb+ z5M-Wfo=Yapc+9lQwH4oB<|Jje>j2*MuA$?2Ejt{O;H<}6vBffou(`6;wcUl;wmci% z?%GWjh}jA#Hrqaq_ph7J_0GD!GqO4kNY97Vcdj2;Krnviy1``RN}RQw8QWxKEy~@a z+{gz|cXw|$>w`KhaIbJ*B5-yKUfwP_`$98X+(^}6?d?=(;o~IC& z4K~5XZYRR5;!FrFw+LSeN1^2j;BwDeGC|ZLK&BoJd5(GX-1QK@7A|@q&eB6{ms#s! zC%#J#V~{6+HJ(FcfykYJ3_aZQ^!6ej=;4y*n#ZujLEb@LsW|Kjw-dcJUOe!q;TH;w z+lc_7JlXYUsx?H$tU}0t;&vjwT4LQ!^j`34BdrA#Gtvv*Ys~kW_bxsOP^#~$0S2k; zoiW+UIPM7#>3`~WqPM%xc=D*a`+DPx!_>%KZ*QNq6zJ_6=;Q4~-!R{gpB}<8e@?afrntHrvVkpIN(MBf=--0ei)1t~3VCjyFV zao-i@e8qR$XWdQ&Y|h3mAlb?~X6ZuzQ@0a+-Ta34QQiE#{MwP+_Vw~xE#AvNz|Y%> z{-OSV|45KrKkfxmaf|36)LTHZ*T1`p5ZUX}q0CNZ(Eb^Z>oE z^WwmQf2|*n5%ldu{|**fusi(H;_{?thrb3wRgM3U-@2U$7}90ajmZy?FZ4fkJJEmM zA9p*^e+4RLUpoXS*5+6IH<|ZMf6st*I}tEQr8hCz$~*QPLFj+#c4A;ifVUF^qXU2X z?L-iprZxcl*2$YVQ=`DY;C5o5PXG>H-%bn+U~bSyPe7I>jt-0uSho`clc)!fj0Pk< zoozQMFpZyMo)(xJ_*=Q1h@zMc#?n2g!C2hC+1rVMH392(VqlxmE^`4HeMD^w9D~l$ z6wv?ofvW-DP7IU=t=ox!%_|v9e!#3i=zr>VV&L0A-0j4`_po0!{V_nX-qJfbFv#19 z!I8l~{dOXVt-%TW)}f`i(V7DPg4>C~?m=^w(LLCkxuN8xfGoSN3{DR6c4BaL@NeaI zB8p z+?o^OwA5l~9fPfmplpZ-o&IOb{Cqp{e_+e#1y^j^sy+Jb;DVraJ2AM}@L#h5iT@X` zzb&{Y$lHm*+ThQ(6Cd!J0`q~@HYmt+tJK+p&WTfrKi^J#uoAU}*4s_MoMU5fOVGNV z7~Ez!`;CBNbAvO%^Yr%TgSUeJYurw(zpth%{^Pgb%!3A4b(YFe$A?|h}kk%e)%m6?&AmPVv zCnk(ZfNreYiHMqdo}Mr-0Z%&lh%Mo(1neR4b|P>OINYsk`BlQ&1oJ88+Jud?BGmFL zK(R^jzJ$XG*6qZEV-yRTeSi!@JeF`KL96Fj!uL#uZi%y=oWyp?489yQ^^Vdz>OHXaV2WJ#dw8bF4wPlnHhbpxCXUxHq!YvQc^;+Qh1)4q|R z5mS+UBLgDX^d10I?CK$rmLg;ABvdg)*1LMh4cr^y+g9~&hf5)sx!nLHEr>g_kueeD z86kDesOTD0>mqj|=Iz9Fkxda^np2yAv~DLF6!Ng_$0@A)cy}UG67}uGI}zL*G;b%~ zfkoq?Gi1{fC4aCBfl|-ye zIT)X5S<>bt_?68`2UDEo+vWNoZdVZ5&Op{^B=bYUxFmF@aY?mNd}6dVdLjx9w69br zq6bs#FOUR%PJNZUk015hm%J^C4d)Zl*(tC?^M@jS$JFnVr$temZYkyb&R99VNQO2r z1Wb$0HRn3!-M0|Q=qoP;j$!Wxlu(mK3p4yGHL~RD6Zb)*_Ya(r|eI}`hI`n z5nfEir&W(6mL*vqrbl){*B*3-6YVdm!Szaxf81cTi{2(I^_5 zPA#GL(YgS<1+Z2Dn{NFs81p0cepRvKw9>NKOObii>xEhVm^)kZb`?21yj zRRmTJMR-9M0ael|)rpRBo8S<}BfSO^U7M7<$o#BkhP9a}UK?h8#fmKCBL?yjF(*43 zZ4o~XyC@MdxjrX(&#nY<~wh74Y;PaUr?p^j4%sO1C7EJ#c~I3A>^dm*hT3TdD+$dR{t)RRG_-Gi2)G_us! z-e9dgVW`Iyr#;CK+A}h2s7I6-$`~3H|BjD8Gj=b;PEnRHILuBFL&Dev$#3zJvWy1w zyx`d3O_ZZNVlZQHj3LtvWO^JDJw+rMJ%t)XgMSx7$M`M;;m;y@Mgn3p5|$-cLjZ`j z1nYu8*Rcdofe0r5l(vi~Da58qean3?|K+}m0mE$xaurVwtrBFs3orGp<;j+{zQqAl zXmMagK)20`z(pWLq9GM@?LoIZfG)ON)4_!c-H*C(k=_AZ*Zt@<*Zm?L4Y4AyJ^;k} zz(!^V#Kyp0BK8Jq3`9-fG!dr*XAQ*Jzy%^Mpj^VzplBVD$^Z7N^}6|jQ2ST0=BSZSoasMCJLg$rd|MQ0eL{d}HkFe`^5 zyr7F8_$cGK&!-fmL?jIR|y^Rb& zhULPq`f$hyUkUaD`IM5T5f|PoFbZW67fw*SaDntB1~rnO+U^?dhLMhTAN4@9M?Duk zXjHiHi=I_pAXecN9+J;_uOLPac18Jtb1F_;s;T6B!Q_Ms7tR+nC%!mN&IT@AINO2q zup5SS*gXpeA>qPjAxmxZl50E78|T7>uRZuy;YAwoMncwJ$gB=#l+LD$*8#+HJy7{v zEgJ?dOdY`Vy%+fJQM?9LEV*^^?fc} zI3A>^qiiLNbrjM-WspG`?6J!5vxr z`5rL}(?ok5=lHITa}E$a1)>TUf~8c3IQ&oWhFHVl6Vwi0pl5AwVW%N}hrlW!0A+gx z&GX6^G|MmSrwsExWxrwv`ilLy1Nh?(sXWYnx@)rw_|2|utm`u}GQ~?1fiIzHU+RoG zN@qxY(Ugk*aLWDz?c@jh5eM)`v{c|lD%SW~YTV0{Owr2rB5dMCheLE7Y^YbX(^IzB<|E-BB4;FLEex9%GId4DXV8R(K5D6l% zy(zH0ytm1LeXAReVYHrM&Z$o4hyPZoraFhi63jyX$)S3ylzqI^-kqJPJKvV{Bwl}n zj{g)o{xrs>p=%-b1%oFM9AxYunhUX8_A(kqnWMr1WQAi2V^bWTGxoXTE5^QZtYvJi z;{am^96g+f^>BVctNX&)g9g<@4W!i#ROc8wr>--09aTq+nuI~Yik#Sbz2PW#qWQ{M z>#q5%HHco+`+L<6!(eVWs1a`NRXc8=c}ys_?b^dxPkAKh0g>vzt+ELpBSH;-^M&&c z5=!l|yRRdpGE$u0UkE%}D-~M+4!Va?2!U*IZ-)d9{jV%$!W0kgoruTO@b6!8_r$nKCQ~#}4)N1RAHqgI!&*Kecv77S zeTxSnc6{A}8Pj#}r#ARkgjD(Lk1*%t6O3on>d+dEpq4lI89Dp0s98tKy5bdScBGsP zU{C9#xJbPe@?e-N3!Du2%gegDA%riLv74xoKwT7+!$ge-s!mW&6IBINX;(5TjdJ&} z_2$QUVU8yQGx=n~fD|&Z(7MRnK@J=W`6KuA&sk~ngn&AURoU5(ZQfweW_K9ziys5{ zCSZR^+fmqd+b_MnDp#3#9l}xXx?xC5X#Bx-sS3R}>Tf!y9of@>i4r*)=yo@Zs^g4oX zgJD)XJ|}V@pHlZQPU45T5Bo4nIqW;_i+N`xPU1X$l3TFwu3jH&1;iwG!XIr_ZK_)8 zzZm-`xzD)serNMG&L#SNNzAQBQ;3%dxKH@pFI0G6tdLD-ZEly{13m8ND!k8Ec-24; z;0_hujslOxymNe4wZpsL>wdbz`wX}oPN$ONr=(2iBH4VPGpiKt?B7XD|IMvOfC3Ek zY=+F)T`^U=WXYr=_){l6=d9eXdTv>85AQv%S*m+p+?Fv4quIb%;jQwTRjBeV^19ns zc%MQQmU@T!+)q|`+W{Wx`_yL$fe||}3a|t5zgpovKXXz6{ls%0a*=MOUh&zLh@zJF)nB-`0BZt-f9H^ipPAnk&VPGga!D;&Wok zsEaY)y$jdE)Gi=hKo&vUEZunbZZD37@Aew#2;Di+m=U*EV@))s)kIHn_w&ML`kCl_ zEqf9&bp6rxaB-z%>VbSWB8Gbc*DjCicaprzGm7iRQ4rvhQV5-7Nh*AT3^sXTS8naa)V9A9bT@%m)q99|vu6J$!h#Z(MB}jK8 zs?XZ8cCPm&nKhK;d`Si~npFSLp!0or3(|Zaf_4a&`a-|8SzaWQjkbv?n|z0Tj^Ep) z-=Q6zA-f?(9rCXCLG9~(2%bc+)falFo(wi@1F^f%fAPSHgDrpRDrGz+%sw%Z_u%@} zR^N7?Pb^5H+sUNeIZSV~FZ6!BY(_KLun?MJ=nwUhKV@kJFYkWqqvtp=pH{g z*b>$0YoBCKF;m{nce7jM>ZIv-x1!0v!@eU9zJis>_^w8=jd8EPqugQk+)<873!duu z!h+}H{e33Qe8(z>6QhPYinpXR@Cn+r9dsPCsK0T1Z^73ccPzN4v!~OP*wa~tMGM^1 zb#vSF4xCQ!)Q;5uC5Y6MloNoO|8Zq zYy3gb4#7rOgHF5AwU;S-T^C&R1?)EseZe`k%Y~}!av^vU!2wqTUqJOV5L*j5@xGuN znV%BoIA3tUb=Vc>3l5XX@C7uN2EJe_lMP?M25sOArZL&_1*Hj_63{A}67UTAc{~{^ zYl64!eyCf_rb>AX<7phIxW*mwYYAmdF!3-v0}}B#p&g!*2v*i%puCWP*{H$)Ck1x3 zH+&@Q!T?;6ua1PTg}vpoKXgm%TKH}_pkqu5;(oYNDz^@5Pa@np?!Rb!OH#DFiVCXz zpu&sdly66flr2f;lapg9v4r!XF$eGp)RgiY)K*G5(bC z&q(}%*d;})i(Ht!LgA~6juau$Q23Fe(?t;-Lvs0ewt7UJF6vpF6feub_beV*oYD|a zv6wd(uPLsVJz30xt|_K6t@=tfMw-p%_Xh%4$JG0AdTPwG1#efkqPJjfeY&{ISAF2d z)bk&6v$c+y(B!^^^3o68Fiv;ef&;}&7cu|GpGI9i5+b%Y6cK@l(v*Ms3q*Wmdp~|1 zB-$%Y>7MfU(AR@X{lIcONJ#gTwHg2L9}`ku)3APCwKk(Bv*mw83=F0w^KfSLMKIBv z%SW>5#bmtdaOSDZL^CCZK9xDKz;B_`)x?5pg+7BH&2+8sTA}~h`f)GfSfLrI0Ug7t z4cT8qPfoB9x_93!?A|D1;iOD3)9#JtHwqhqbU}ff-{@4MAdu);EIKf!8l5chRiqnH ztg-7^qhYGb<#M|lxB~S_+9zo)mMULBKS1q@(j^`;ejSI>KF$k$R%9ib zct}{Ki&c@eI4cnaMIT@>P4wcd+AO2|24QX1_gSoFg_lAMckzAJ$s8(GkjVUG&h?z+ z-%lx(-ybSt3DW#Ck1^PC6-?#CLZ0V(d0%6f{u|+ZnV0QN8|Ek z2ZJpHPdp{j>AhQt0d99OM*c49VDXnFnCX96A~S(5vO|I`5>3jDrhSPA6EW9%7z?C> zJRtN-bvc=|%eokC4zb%og9N4*Lnt0jH1_5fd-EHY+X}t!WDm7_?_~&b{<&ix_J3&s+RNPL3R+XTzZ5Xy8biu!yIgR4G_!DS!X zy!4++D9d=*s|-G}!F-KwGbMgG*Od$Sf6T>lhDqTD4o<5|uZ&zS76F2BydXL*iaFG{ z=#(h7Ri{LkMe#m=$brdW$4f1Xu4M8`2z0_58&3RwCug;ptb^Qc%AXgtcTn>n(Fvyl zNvj!O9bHd>>!UlOc>9W(5yM)^a7Xka$u3HU+szE`cjPwNuVQsP*iXBhyd#Re@Ey@( z6n-pvij_G98Cmz|!MrX?UQ`pvMOzKrF^vTqz}}GR6RnG4?p;UP7ljtpG0Qa`159l_ z2W)eARIj}90(bELJZR@Gv5sPm_n`^PDLl&>4Zx!+^5*85E26o1tMd}xkrnFi&7G;$ z_)bh%$3!+(sIYN-=A|Lwk-YMJ_b)5F|1aENdH#}obFH@||3JREjw>%H#}`0qyVzX1 zd`aUXEN{J^L>;IPOV+^n=H{);3w=;;6~7X-4s&de-=ttZ1;}SgMDIOeVU6WYeJbwA zdK5}sP+uZW&o&zxYOaXD#XR{6c?a#6DSm15Iz?k8;p zy%1KIiD7qHN4Rt_KzTM0cEKJ#Nz?6VM6j#-fz5)eKCmTcWS9#%lEaGHA=sMIV5zk= zWp_$S{07haR&U;&vafzptfTKsxs}o)o=di5K7bp0w9y~sFRr};epmi#-;nZ28lFHz z(`B>Gjvrnz#bW&u!33Uxoscp)1*Se3hfejf4)Q8-mh=`AZ>5Y%g-7dROVPGsZnUs& zIHcMUbPH0@Ulyb+NkKnelCnGnFY-ZID%J9o8L3E_kvc0C2dYsjtDGO(;I3z-u1G}& zD^gLu7j3Dgc)bg9E4rL#f|sYPq0}`g8(6{(DO;(Scu9bH(N}FvnUxB{S*c5z<wlux3#lmh)!8o!N65s*0rX0oj-l{G#z+-WWrvaxE_u}X)+R}pIq4CIpcn&XToJ4+59HFv5PHW!YEVFgrU@s32*OWOEBS@F1BzK zGEXN4n6b=?ODb)V6v6q+>)?b|b#Vigm};O(KXRjuh)PN`PHTo|b2bOTie6sC_r z;aSJtq|3?B!3QxI9t(9OUIFiBB@H5}q=sipB{jTADyiXBAF+}KJt~P;DPdv6k$@G` z`0eN^CcFyHBn9}rNmxCyl2vAni1U|Mp{y7obn!K65o;uWz?nSexGV!*J& zlu2pcKiV)uX38X{bi`(onwK^#U33_OF|3<-=u@vcL3cRK&$4s5011cF&ZS|HKd0HD zT`_);od+3e%>@L=&ZpfZ*-as%;!UzUX#$F$5{ zju8t)1Ch!-8kefgnvjhmV{kHI4pb%#h2c$36S5~{<4^|Le?s=^9I2oMgF29y$dn1$ zVkUqVWrupiJ8WAplB_Af`w<9gvZ1d~5~esdVT42ZNL3O2jH=20ECYqE9Ukx6d`)O`+Oo&;$O7&@O4asUCEcO0$ z@!gWqbLKS=DwJjYG#4A>UBEvP-_uqTbEoE_ai-=@%gwr9jH!i6C>n)sCuMhH4y&yk zb1?{<27&O>Yzj!4L&6RQVObYiZ4FkP(x?^;`^2Mh;-O1rK+oerr^Y?UOI$UDm%%j> zD+HIUTkS8}JT5i0WLAl`brWU>Hesv+d>Rg6ZDC&c&#Sa0Xe=&@VHRM>=wgeQF#KPV z3B&&-n=t%edQJ{wQ%k&EY}$(nf7FP@WrNLPRPaWlsVLyt4`Q(H#v0FMil%8$Ks@Cl zzF%W;b*f)uN~!yRDj_FL&VV|yx`OM#rX@Uv-yj=JulXrW(Y5u<0>W6C1Jm#7SwGWEkYXv+3~_{f) z*IFTVtyQ1a*c-?3q&}?&x5h(4IMn7b(%~(EN=Z%4$jHvl%PTBw)Tl|5=4yD$;VrqO zW*GRb?IT+OR>KcxYeZ@c@mt%6MpA)J`!5en!z0rdOWw12|5Hf;`p%+~f_H4bUL^%M z1JS9Z-~(Hml7c_l{_m24-`fhxdv_gb*O?g-d)faxihR%Jt1Rha`v>Ob{Z}bRjg+I1 zMerSFX}teZQt+JZe+ zR41EUYvOpcQeA6us|ikwsas7-n>yOyP({<8O&yO{s-6tnGMv?v{Ii;_ZA$*NP4_n? z|Nf>unvuUpv-!=)Kfl@HX5?SY5d4dqecponpSPIVg8VZXf?q=LO9*}m!7m~BB?P~O z;GfxIneZ=T2!08{FCq9P1iysfmk|6Cf`3_ywZgxaA zME=`b91{LR48boU_$36tgy5GD{1SryPz(5d@W=aq@=F~25`tes@Jk4O3BfPnU(SyK z$(CaLTC^ZQlP(jJ7SsAC!$kg*(bWIhXtIAcRQ_KWLUsSuP{qF(Rr`M`ZBJ%kj5epM zdf@ztzp6B=8Ass=DZ4 zkwzUXT8>?8P%SS$T@0?%#dmc4PVwkQh>vbGm^03u}jKIz{;v<@j;T&L0 zld%$iU{O)XC0UpgEXiUa$6JMbx>D8UvUEThr2|Tr4k)8^KpiY%Za_(HPaC<7w+^^G zAXnshC=1hzLs?gIaR~aVR!ckP*ewtEZh6a#fnQ!+U5r>Ys*Bj2;vS6<>w(H5Hn?PH z31UN0Rm3Fgc9OMBS00e3iPDYI9*uH6*Z!iquJdlsywN1>(Im(lSJbHL_M&RUMA7X< z(TItf+l!hJlf2uTdE=b*pY}sJO0%&HDHY=wY3UuO_v><}7za`e^&@3n;Yt_> zP%E`@0HuusC@FCV!#EI^GIubH192&J2b6j-j0N$@gDa4xMK zsJTT;P)ATLf!S-6RPAZ0nnv6yhM_-=x=0nkbf)BcBECmWG=)^9quDAQW37VHZqDT$ zA6hp#B|H%aMmq*NVfesHH3Q&?XlOe zjj=;$eFRhxX{z#;;0yI?3BTIjUY*Ii&RCE9L4^p`71l7IdXUD}CCBJSm5s2bt!y;0 zk@G`$rJC62PGeBrX^dWibJJ7{F2BP8fLIPsV!CmEVeiB7#G>)Dz_^;s<_5{^>}A<< zb7mRq@)YXQj|=dAxzo}9v%9M4xeFLykh_Ab?iINkxm&O~cQ1ojg=^U1Yw}L!iKvsT zGS2nquP6X|MF9;4q6QVtF9a8@1*zY|RuB_Sw1b%(WQ_d)0ZoN^p^ro~rY7hEdle;v zOPD$yj*{V=l4V4*10XQfBy%#e`g#i`7P}v^lxLiLj5YZ5Y)G9>HGPD$>!POTp{B*u zz+x(*U7R9zEjxs*Ql0uacY@CpE{$_%0|xLBG;94t~mT;sb?P6^=db|8MP&9YG?|C6ofTo*S&`+%Ull{bS17546JLf;=QbMA z#KajJT-uoV7f*BX)4djjJqGUsG1AKsU5WwL>AOddQ&Y&wP+JT+kV(RwVr?6{OLmtC zf}MvHrdj;x(I4i^jLm-DKO0IL$WHOB?%>bHHS?Ewz|NH= z-u*Pg3((=(tFw*aJz}>Atqd#xIl+BBqt0Z1!i~aDav_?I9scSWH8_8M0fPCI^|Ure zPEM*DIsXVX9&a?HF-El^jlXCNqAwaRY|Qi2|4>q?7NUwm!b%d5?9?DkOmI0&*BQ5h zvFSTFe|UipTu&5xpJ+@n)vI850ZQyJPICiuCi_B8j7GBcVPjRZNcM55EJjd@VG=BC ze73RgkF8@_K;)5}3puc*8YD?xb{8KTYL~;Qh;*7cup3N8I0VVfp?D(B8MJi?)r*?y zMHD)Y%02$SF2t1_AvIx=n=mCCux4cat>K>;h;Oh4c+wL?)rgNmUYg}dk?TX-!#M7L zr0BC^`*Z5E;@QQ{54+-FT``=-b8&@5|9=jJy@Y_g#t$uVyQp6=8u_#0MGO{!FY+dUT(fN`;7h)? z=gXv?ye-=^Sp;CNdOmeb8W3aBHZyl1HfN$Z*j&@a0YW75vlQ_^RHZZ-U9D6L!o>4@ z>hLrmhHF7UY{tncAWmsPK!_lHyVVp0G2bPjJAIcV<-siOeCi!Oy1bJrI3{gOI>XIiLTKiOSyIyCRG7l~)ODE%q^i&9 zay^G9RX_EM%WFb1o)%9?o)JY;&WMgmL2OjYSA0PGRm!KS&JP@TXplND74cYk7USue zTAa2v9oV($b21Q{lW{l$vBMdQGlgey=H^Vq%`#gPmU^X%E5_htI0Q6Vb`gfW!O8uj z9v!Vz{i78racLDPpQTu7u_8@Pi=&yEHZk3znV3F3BQ9-v#*z#x%`BdIQ-h_0L6;^6 z-nCV=#Pyr3DqE$PMG#kkV;Gu8JrWv9eG)cDJrWvBJffZ^%!pc^v?WRIPh)R(OVU|d z`B{|5M3pA@OvYuI_V3t`&e|irPulP_Gktj4m^3SWbLOs0r0+sW%yhBZb`4g`am~;_ zibcby=v+Sik12OzI-+yZzs^8lsthOG#R2H^-D-F;4CzTVAqqp{V1+{iFrto9FEuj_ z7W1T9oDPeT#GSMjok$8bK5=6rtYu^3RlX+)UgK)wO(Je4-qHw>V~{RLM2}veN#P@e z^l6h6N5*wyLgq9Q-j{5OQsYD4@P6Vqp{qD1g0;=nNPp(pKXF(h<0hSiAjZoOv6up||{hOb6|5MDff123L9{rFGI!BykX;xH$id?DU*rZ~8#Z^OMKK=h7` zjUah!WC>$S@a{LnHbu5Dwk2|qv4at0{G86Xoz6IZIH+F)oo#z$y9{s2Q_Gm`^Jcbi zW|Hmm$aYEu$y1o^^T_rHV@H_L^E#vU$Y>B>@id4PjlD~Tx#>JQh>B#V!%z~u9+f00 zQBwy)#Z@sCYu=9FB_S3ULfFwDoE;l3>sQOlmhSOJs6TbtKRhYy{18rLQg{L53s~0| zbPZoX4M$OHqgc@wP{Z|%t*2sNfMRP*jZ&VpEEO$tw8Y)Tl-@hl28ocRxr%*N~f)NE@1 zDU|IpW0$FYd;kW4RVY0CL;*N%7_$gnjAda`Y=dc{ua!o6M`Xs#HYJ{71;J(|g6%4Z zc-cr0!Kl}b5bkR{jq;LyWp!tB~M^3B)RJQCpt?tj@0czeV)O26wcWtLP9iQ zdoW1|r~>X4=JsZg|Tjsxg`YrQ*~9Pha4N zX&Y4^`^9Nt9dEeoNa(?rmGubs4XfYT@^K_3JeCM)^k>l8lOu>pVV+UP(ag^BDP46# zKT}Un`T`&tyNrISEL5&j>PbKE4sW&N#w%3UMdioWQTLJ&CWZt@bd5r%vzc7F1pJ}DdM1vX3%3?l+ zuf&0Da88~F6 z@f$s+ppC(5d{#qM2X_UfO?Cy3T4_gN9QE7eK5J0@*}i|&d7fv3bfeB;Qk@3e zgW56RW2~$JFJ#&AfR&9spXJjsZIdyuJouT4vUP$l>hu;m+gmsB`W$uBbx+^xRrg%C z+(7Ufry#k98{Tjp_r2Lg**b!^<6Ce)Z{5b_OLbcdfUgn(FK7Wzn*uDCMJ*`XKZEa| zEBFef3i~ZLGQgxsa%^WZ#Q8BYyoL67Yb>t!_UWR=Y8E&&VQDWcaxf`g#pLOr-m2rf zc+GfYh_sjb zlMn@5 zTpkZz{eZHSI;1!RaM2BCr|3#!v0q4Rn348RjX1eb`3s{A4Z84(;)G9WpMEqD8` zpsrBgJ=ZmU?AJmGpJ26wSDQY_P}RkR%^Yzzhu7e!m|9a z!)36~B|BcFS+JG+@i8ef9kgNlU`#STER6iHb&y<@44TS<=>;ZgdI2^BF$s#B!>9vE z=ef}QCjV|eg1h;XS-isqJ-EN!qi}p7V&e;!AZDpdtwY5pyNSF}{^Y6T1ipv{uVMbGE zrKp8r!+cI~3a*Vt(vWf@;vU~=6ZZs(H{e(zdYaI`NEB-!f7R5;QkitGitNKwQtiVW z-1!0KLq{UW;+J6ARD@tt(e@&uG0jF!XE~o2%RppV7_aO8S3Ix)8cOB9_k*w&n@3B~ zul|NNI2*n!;?UO#V(o?&sShzX1F6}RTlFvMU&Qm!8WIW(Y6`DkD6qEsSDOKo#sH1X z-D*(LAnxn)lfeXGM-W&aGDH)p*+Mpm)@(R%P7u{jXb6$bKx#IqWmDp=M04k1Q{wi- zgpaKL^9P=)-p+LSGA$`Jn{qfE(9(HqD4NatO@3v82_G(4QfM}{K6TE9)jwg9o!ZiZ z-t3XR3kDVV-?Qc8O2miE??S;<_NS`_pA>rE!$~RZ$Kup>;ZXLjq3B%+AK2crW#gV$ zesSxjNSazW6HnB1ZLT`oAn|FZ+-#BZ08%vgQNCNYH)O96t7+y8T~x!e7CeKQq_&* z&!hI22#t(RMxyq4_2_{D890S(GMGuGz(8rZ#IB*2Y;G^^)!};GtCB6=48J6bS2ryI z%K2`YUi|K zsN>yV(EIEM2zkikNc2q9{wCZia7RF8LC8%Z6}UGkS)kV~NO;ds3R08QvXo^hs5&ZV zK*6vHL5fuPH7u|J?Tns5zpJS@D=XIvOO38wIm6DBAl&>%IeU-d@Q-`NgR|bUg+0^jVv8nQ5 z3*ijhAdAg_dCk~3amD(Ld z76ctA)jbV3$zC8aPl3d1%}9e3ohvfwpEeXRH8ia<&HkpUWSW@id_tXV{-7eHJ2P~e zwi{$r#j3PwX&N`6Rm4HoMy5h3evNyXhGnF}P(|V!G+BYfWS5Zl4UYZu0U5bK(r#SG zf=L`sJI+kdn7h;Zq>FK=<7su;ChjAHHg=Q2u%RnyrRk_yX*xLJT@^S*8d^ml@f>}a zDwaJueOfx&7VS7XeF_*^(9!9mi9=3PnEDFUA-Gp;@O(xp=tPS6MS-Np4<+wQ7|+$r z^sflv^7+j4h3TjdZh_29pGh1fFJvk#(x-7R+k8PY6$9Lk^d0F?t^vtN1#KKkuagoI zI-AbscLO>^93-AhzmiUi^lRMfYz8A0cV$K58@x3uka&c>yv?0kt{foY@|ZJLz(&-C+>KGgIbkw1pMjcRTj0s;8c3_OH-Nqvnp z=eu}LAgR*N7i6r;5Kp26l73Fe?B^NlDTck95IUQNn2Z`pX0MnKk-mV5G$0~j0iR}k znjuaJH602VLQSYMy~C#&6IgrHY62ma1Dc(X@deBMMaEoF4H0v-7$nZkSU{})sR5aj zGvV7NXU@q)_2*=+&UC!<4rL4gD4GCr1=3Ij!N!rZRs+Z=2C{+-GRv4F!dQHP#Ndu( z9?6tuhmg&gdowZ1*b5ZCc*KGLg=DedotXzn2+^A}cY@4<#AEFwPF#jSGRqK1cn|1I zWR_8v`AHVq^^>grS;)jGrjpq|OB=|Y%wAbAS9GGf%sZLTh6y1%rS1?X(+q*cF9{^Z z)e91tnxu|o9m!&Y;DaX`LT57|NRb-LG~-BSU8XtBs54vd%Kqgrt4W5+@21NLorD;r)(M zr0-uOBzAj+kjyj2WiQOuBl|5Drom&iEL9jOm+OvhQ zXcW{-2tLn&FgQm+ylO)1#etBCG$85P7)i6QW<#YI4FnPwLWs#Iv*al*L?Ce?gd|z1 zg;a-3$`)p?ryRHifuJ@xuI%b;aRvg313|N|C#Ce&>g+wJ5Y@V!kc`HA2(diC?#Vs^ zSRKheNiqoB1IU~loy`7**ksneZw}f{pigtOz#cinav&y!sXdr#LSmUca)3i79wm^> zI0P~V!@fDAz@tXxK%AINIU#ApPje3B&}88B2uVFA=PVU*#7$-@iYk!QXfkn;9!edcWSLD6GG`ODIk$7{Z&AawygUnuZa}rf@u$AasYC0lI+BTn zN@6G4kwFH#6w$A83UL6eA{vFAp1Uv?849!^S66vf?#f)<52okNVk$BgNP5^T;$;3V zkZ4dKQP;v;Na@T%tt9lS%^p^}a(CrIT^P*`2qU)vIY@asr)MtAx+hQaiJ9Hb8Inr_ z#|kHR5OHD?^~q4;+dNe$WP@_SAf@Z4g`j-}!VFQVAxxFl7w9$iQh~&E3M4*ZOzvc( z09SMG7#g^W_X@FD-MAuvn*!nqZZH)t+plplx*MsOe;m&}o{NStAP#02a0U6M1xdF* zLxCJ#P|rKLJ@cr7yuNwb#O~yd&C}kYZ{A4aL1(_-dv}gffUNoOAx*gp2$EuXsmW-f@1bOn2~uv%7*S zy5q|U?5H+%)OpT{L=$?+gp8IGNz!rxy~Q>p#AFXP5}3nl7KE`y;|%UQ%uO7mK%A$c zG~E@GjVbOh&pZ!?uXzkQBY^Jc0ma_NcqSsICL+zrDXyeSsr!0{d9=L=B&8-~p*9l?Tt{cSzK3hE`G`UFr* z46uTLIy6KX7*-9W0TBshukmm5>k0@Y6(Gc96kGC?3J4?>ASA`oYlDlSVF^&¨91 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

$^kT1nw!*i?TFXJzqulV$r@?Y_NFTlT& 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

H=b!Z+Fyx+4 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 z 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 bfJ(a&9klh6{Lwmm_;2{I#@`kQ;xYPPctXq} literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__init__.py b/.venv/lib/python3.9/site-packages/nacl/bindings/__init__.py new file mode 100644 index 0000000..2e07ba1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/__init__.py @@ -0,0 +1,508 @@ +# Copyright 2013-2019 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from nacl.bindings.crypto_aead import ( + crypto_aead_aegis128l_ABYTES, + crypto_aead_aegis128l_KEYBYTES, + crypto_aead_aegis128l_MESSAGEBYTES_MAX, + crypto_aead_aegis128l_NPUBBYTES, + crypto_aead_aegis128l_NSECBYTES, + crypto_aead_aegis128l_decrypt, + crypto_aead_aegis128l_encrypt, + crypto_aead_aegis256_ABYTES, + crypto_aead_aegis256_KEYBYTES, + crypto_aead_aegis256_MESSAGEBYTES_MAX, + crypto_aead_aegis256_NPUBBYTES, + crypto_aead_aegis256_NSECBYTES, + crypto_aead_aegis256_decrypt, + crypto_aead_aegis256_encrypt, + crypto_aead_aes256gcm_ABYTES, + crypto_aead_aes256gcm_KEYBYTES, + crypto_aead_aes256gcm_MESSAGEBYTES_MAX, + crypto_aead_aes256gcm_NPUBBYTES, + crypto_aead_aes256gcm_NSECBYTES, + crypto_aead_aes256gcm_decrypt, + crypto_aead_aes256gcm_encrypt, + crypto_aead_chacha20poly1305_ABYTES, + crypto_aead_chacha20poly1305_KEYBYTES, + crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX, + crypto_aead_chacha20poly1305_NPUBBYTES, + crypto_aead_chacha20poly1305_NSECBYTES, + crypto_aead_chacha20poly1305_decrypt, + crypto_aead_chacha20poly1305_encrypt, + crypto_aead_chacha20poly1305_ietf_ABYTES, + crypto_aead_chacha20poly1305_ietf_KEYBYTES, + crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX, + crypto_aead_chacha20poly1305_ietf_NPUBBYTES, + crypto_aead_chacha20poly1305_ietf_NSECBYTES, + crypto_aead_chacha20poly1305_ietf_decrypt, + crypto_aead_chacha20poly1305_ietf_encrypt, + crypto_aead_xchacha20poly1305_ietf_ABYTES, + crypto_aead_xchacha20poly1305_ietf_KEYBYTES, + crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX, + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES, + crypto_aead_xchacha20poly1305_ietf_NSECBYTES, + crypto_aead_xchacha20poly1305_ietf_decrypt, + crypto_aead_xchacha20poly1305_ietf_encrypt, +) +from nacl.bindings.crypto_box import ( + crypto_box, + crypto_box_BEFORENMBYTES, + crypto_box_BOXZEROBYTES, + crypto_box_NONCEBYTES, + crypto_box_PUBLICKEYBYTES, + crypto_box_SEALBYTES, + crypto_box_SECRETKEYBYTES, + crypto_box_SEEDBYTES, + crypto_box_ZEROBYTES, + crypto_box_afternm, + crypto_box_beforenm, + crypto_box_easy, + crypto_box_easy_afternm, + crypto_box_keypair, + crypto_box_open, + crypto_box_open_afternm, + crypto_box_open_easy, + crypto_box_open_easy_afternm, + crypto_box_seal, + crypto_box_seal_open, + crypto_box_seed_keypair, +) +from nacl.bindings.crypto_core import ( + crypto_core_ed25519_BYTES, + crypto_core_ed25519_NONREDUCEDSCALARBYTES, + crypto_core_ed25519_SCALARBYTES, + crypto_core_ed25519_add, + crypto_core_ed25519_from_uniform, + crypto_core_ed25519_is_valid_point, + crypto_core_ed25519_scalar_add, + crypto_core_ed25519_scalar_complement, + crypto_core_ed25519_scalar_invert, + crypto_core_ed25519_scalar_mul, + crypto_core_ed25519_scalar_negate, + crypto_core_ed25519_scalar_reduce, + crypto_core_ed25519_scalar_sub, + crypto_core_ed25519_sub, + has_crypto_core_ed25519, +) +from nacl.bindings.crypto_generichash import ( + crypto_generichash_BYTES, + crypto_generichash_BYTES_MAX, + crypto_generichash_BYTES_MIN, + crypto_generichash_KEYBYTES, + crypto_generichash_KEYBYTES_MAX, + crypto_generichash_KEYBYTES_MIN, + crypto_generichash_PERSONALBYTES, + crypto_generichash_SALTBYTES, + crypto_generichash_STATEBYTES, + generichash_blake2b_final as crypto_generichash_blake2b_final, + generichash_blake2b_init as crypto_generichash_blake2b_init, + generichash_blake2b_salt_personal as crypto_generichash_blake2b_salt_personal, + generichash_blake2b_update as crypto_generichash_blake2b_update, +) +from nacl.bindings.crypto_hash import ( + crypto_hash, + crypto_hash_BYTES, + crypto_hash_sha256, + crypto_hash_sha256_BYTES, + crypto_hash_sha512, + crypto_hash_sha512_BYTES, +) +from nacl.bindings.crypto_kx import ( + crypto_kx_PUBLIC_KEY_BYTES, + crypto_kx_SECRET_KEY_BYTES, + crypto_kx_SEED_BYTES, + crypto_kx_SESSION_KEY_BYTES, + crypto_kx_client_session_keys, + crypto_kx_keypair, + crypto_kx_seed_keypair, + crypto_kx_server_session_keys, +) +from nacl.bindings.crypto_pwhash import ( + crypto_pwhash_ALG_ARGON2I13, + crypto_pwhash_ALG_ARGON2ID13, + crypto_pwhash_ALG_DEFAULT, + crypto_pwhash_BYTES_MAX, + crypto_pwhash_BYTES_MIN, + crypto_pwhash_PASSWD_MAX, + crypto_pwhash_PASSWD_MIN, + crypto_pwhash_SALTBYTES, + crypto_pwhash_STRBYTES, + crypto_pwhash_alg, + crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE, + crypto_pwhash_argon2i_MEMLIMIT_MAX, + crypto_pwhash_argon2i_MEMLIMIT_MIN, + crypto_pwhash_argon2i_MEMLIMIT_MODERATE, + crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE, + crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE, + crypto_pwhash_argon2i_OPSLIMIT_MAX, + crypto_pwhash_argon2i_OPSLIMIT_MIN, + crypto_pwhash_argon2i_OPSLIMIT_MODERATE, + crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE, + crypto_pwhash_argon2i_STRPREFIX, + crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE, + crypto_pwhash_argon2id_MEMLIMIT_MAX, + crypto_pwhash_argon2id_MEMLIMIT_MIN, + crypto_pwhash_argon2id_MEMLIMIT_MODERATE, + crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE, + crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE, + crypto_pwhash_argon2id_OPSLIMIT_MAX, + crypto_pwhash_argon2id_OPSLIMIT_MIN, + crypto_pwhash_argon2id_OPSLIMIT_MODERATE, + crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE, + crypto_pwhash_argon2id_STRPREFIX, + crypto_pwhash_scryptsalsa208sha256_BYTES_MAX, + crypto_pwhash_scryptsalsa208sha256_BYTES_MIN, + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE, + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX, + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN, + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE, + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE, + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX, + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN, + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE, + crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX, + crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN, + crypto_pwhash_scryptsalsa208sha256_SALTBYTES, + crypto_pwhash_scryptsalsa208sha256_STRBYTES, + crypto_pwhash_scryptsalsa208sha256_STRPREFIX, + crypto_pwhash_scryptsalsa208sha256_ll, + crypto_pwhash_scryptsalsa208sha256_str, + crypto_pwhash_scryptsalsa208sha256_str_verify, + crypto_pwhash_str_alg, + crypto_pwhash_str_verify, + has_crypto_pwhash_scryptsalsa208sha256, + nacl_bindings_pick_scrypt_params, +) +from nacl.bindings.crypto_scalarmult import ( + crypto_scalarmult, + crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES, + crypto_scalarmult_base, + crypto_scalarmult_ed25519, + crypto_scalarmult_ed25519_BYTES, + crypto_scalarmult_ed25519_SCALARBYTES, + crypto_scalarmult_ed25519_base, + crypto_scalarmult_ed25519_base_noclamp, + crypto_scalarmult_ed25519_noclamp, + has_crypto_scalarmult_ed25519, +) +from nacl.bindings.crypto_secretbox import ( + crypto_secretbox, + crypto_secretbox_BOXZEROBYTES, + crypto_secretbox_KEYBYTES, + crypto_secretbox_MACBYTES, + crypto_secretbox_MESSAGEBYTES_MAX, + crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES, + crypto_secretbox_easy, + crypto_secretbox_open, + crypto_secretbox_open_easy, +) +from nacl.bindings.crypto_secretstream import ( + crypto_secretstream_xchacha20poly1305_ABYTES, + crypto_secretstream_xchacha20poly1305_HEADERBYTES, + crypto_secretstream_xchacha20poly1305_KEYBYTES, + crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX, + crypto_secretstream_xchacha20poly1305_STATEBYTES, + crypto_secretstream_xchacha20poly1305_TAG_FINAL, + crypto_secretstream_xchacha20poly1305_TAG_MESSAGE, + crypto_secretstream_xchacha20poly1305_TAG_PUSH, + crypto_secretstream_xchacha20poly1305_TAG_REKEY, + crypto_secretstream_xchacha20poly1305_init_pull, + crypto_secretstream_xchacha20poly1305_init_push, + crypto_secretstream_xchacha20poly1305_keygen, + crypto_secretstream_xchacha20poly1305_pull, + crypto_secretstream_xchacha20poly1305_push, + crypto_secretstream_xchacha20poly1305_rekey, + crypto_secretstream_xchacha20poly1305_state, +) +from nacl.bindings.crypto_shorthash import ( + BYTES as crypto_shorthash_siphash24_BYTES, + KEYBYTES as crypto_shorthash_siphash24_KEYBYTES, + XBYTES as crypto_shorthash_siphashx24_BYTES, + XKEYBYTES as crypto_shorthash_siphashx24_KEYBYTES, + crypto_shorthash_siphash24, + crypto_shorthash_siphashx24, + has_crypto_shorthash_siphashx24, +) +from nacl.bindings.crypto_sign import ( + crypto_sign, + crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES, + crypto_sign_ed25519_pk_to_curve25519, + crypto_sign_ed25519_sk_to_curve25519, + crypto_sign_ed25519_sk_to_pk, + crypto_sign_ed25519_sk_to_seed, + crypto_sign_ed25519ph_STATEBYTES, + crypto_sign_ed25519ph_final_create, + crypto_sign_ed25519ph_final_verify, + crypto_sign_ed25519ph_state, + crypto_sign_ed25519ph_update, + crypto_sign_keypair, + crypto_sign_open, + crypto_sign_seed_keypair, +) +from nacl.bindings.randombytes import ( + randombytes, + randombytes_buf_deterministic, +) +from nacl.bindings.sodium_core import sodium_init +from nacl.bindings.utils import ( + sodium_add, + sodium_increment, + sodium_memcmp, + sodium_pad, + sodium_unpad, +) + + +__all__ = [ + "crypto_aead_aegis128l_ABYTES", + "crypto_aead_aegis128l_KEYBYTES", + "crypto_aead_aegis128l_MESSAGEBYTES_MAX", + "crypto_aead_aegis128l_NPUBBYTES", + "crypto_aead_aegis128l_NSECBYTES", + "crypto_aead_aegis128l_decrypt", + "crypto_aead_aegis128l_encrypt", + "crypto_aead_aegis256_ABYTES", + "crypto_aead_aegis256_KEYBYTES", + "crypto_aead_aegis256_MESSAGEBYTES_MAX", + "crypto_aead_aegis256_NPUBBYTES", + "crypto_aead_aegis256_NSECBYTES", + "crypto_aead_aegis256_decrypt", + "crypto_aead_aegis256_encrypt", + "crypto_aead_aes256gcm_ABYTES", + "crypto_aead_aes256gcm_KEYBYTES", + "crypto_aead_aes256gcm_MESSAGEBYTES_MAX", + "crypto_aead_aes256gcm_NPUBBYTES", + "crypto_aead_aes256gcm_NSECBYTES", + "crypto_aead_aes256gcm_decrypt", + "crypto_aead_aes256gcm_encrypt", + "crypto_aead_chacha20poly1305_ABYTES", + "crypto_aead_chacha20poly1305_KEYBYTES", + "crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX", + "crypto_aead_chacha20poly1305_NPUBBYTES", + "crypto_aead_chacha20poly1305_NSECBYTES", + "crypto_aead_chacha20poly1305_decrypt", + "crypto_aead_chacha20poly1305_encrypt", + "crypto_aead_chacha20poly1305_ietf_ABYTES", + "crypto_aead_chacha20poly1305_ietf_KEYBYTES", + "crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX", + "crypto_aead_chacha20poly1305_ietf_NPUBBYTES", + "crypto_aead_chacha20poly1305_ietf_NSECBYTES", + "crypto_aead_chacha20poly1305_ietf_decrypt", + "crypto_aead_chacha20poly1305_ietf_encrypt", + "crypto_aead_xchacha20poly1305_ietf_ABYTES", + "crypto_aead_xchacha20poly1305_ietf_KEYBYTES", + "crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX", + "crypto_aead_xchacha20poly1305_ietf_NPUBBYTES", + "crypto_aead_xchacha20poly1305_ietf_NSECBYTES", + "crypto_aead_xchacha20poly1305_ietf_decrypt", + "crypto_aead_xchacha20poly1305_ietf_encrypt", + "crypto_box_SECRETKEYBYTES", + "crypto_box_PUBLICKEYBYTES", + "crypto_box_SEEDBYTES", + "crypto_box_NONCEBYTES", + "crypto_box_ZEROBYTES", + "crypto_box_BOXZEROBYTES", + "crypto_box_BEFORENMBYTES", + "crypto_box_SEALBYTES", + "crypto_box_keypair", + "crypto_box", + "crypto_box_open", + "crypto_box_beforenm", + "crypto_box_afternm", + "crypto_box_open_afternm", + "crypto_box_easy", + "crypto_box_easy_afternm", + "crypto_box_open_easy", + "crypto_box_open_easy_afternm", + "crypto_box_seal", + "crypto_box_seal_open", + "crypto_box_seed_keypair", + "has_crypto_core_ed25519", + "crypto_core_ed25519_BYTES", + "crypto_core_ed25519_UNIFORMBYTES", + "crypto_core_ed25519_SCALARBYTES", + "crypto_core_ed25519_NONREDUCEDSCALARBYTES", + "crypto_core_ed25519_add", + "crypto_core_ed25519_from_uniform", + "crypto_core_ed25519_is_valid_point", + "crypto_core_ed25519_sub", + "crypto_core_ed25519_scalar_invert", + "crypto_core_ed25519_scalar_negate", + "crypto_core_ed25519_scalar_complement", + "crypto_core_ed25519_scalar_add", + "crypto_core_ed25519_scalar_sub", + "crypto_core_ed25519_scalar_mul", + "crypto_core_ed25519_scalar_reduce", + "crypto_hash_BYTES", + "crypto_hash_sha256_BYTES", + "crypto_hash_sha512_BYTES", + "crypto_hash", + "crypto_hash_sha256", + "crypto_hash_sha512", + "crypto_generichash_BYTES", + "crypto_generichash_BYTES_MIN", + "crypto_generichash_BYTES_MAX", + "crypto_generichash_KEYBYTES", + "crypto_generichash_KEYBYTES_MIN", + "crypto_generichash_KEYBYTES_MAX", + "crypto_generichash_SALTBYTES", + "crypto_generichash_PERSONALBYTES", + "crypto_generichash_STATEBYTES", + "crypto_generichash_blake2b_salt_personal", + "crypto_generichash_blake2b_init", + "crypto_generichash_blake2b_update", + "crypto_generichash_blake2b_final", + "crypto_kx_keypair", + "crypto_kx_seed_keypair", + "crypto_kx_client_session_keys", + "crypto_kx_server_session_keys", + "crypto_kx_PUBLIC_KEY_BYTES", + "crypto_kx_SECRET_KEY_BYTES", + "crypto_kx_SEED_BYTES", + "crypto_kx_SESSION_KEY_BYTES", + "has_crypto_scalarmult_ed25519", + "crypto_scalarmult_BYTES", + "crypto_scalarmult_SCALARBYTES", + "crypto_scalarmult", + "crypto_scalarmult_base", + "crypto_scalarmult_ed25519_BYTES", + "crypto_scalarmult_ed25519_SCALARBYTES", + "crypto_scalarmult_ed25519", + "crypto_scalarmult_ed25519_base", + "crypto_scalarmult_ed25519_noclamp", + "crypto_scalarmult_ed25519_base_noclamp", + "crypto_secretbox_KEYBYTES", + "crypto_secretbox_NONCEBYTES", + "crypto_secretbox_ZEROBYTES", + "crypto_secretbox_BOXZEROBYTES", + "crypto_secretbox_MACBYTES", + "crypto_secretbox_MESSAGEBYTES_MAX", + "crypto_secretbox", + "crypto_secretbox_easy", + "crypto_secretbox_open", + "crypto_secretbox_open_easy", + "crypto_secretstream_xchacha20poly1305_ABYTES", + "crypto_secretstream_xchacha20poly1305_HEADERBYTES", + "crypto_secretstream_xchacha20poly1305_KEYBYTES", + "crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX", + "crypto_secretstream_xchacha20poly1305_STATEBYTES", + "crypto_secretstream_xchacha20poly1305_TAG_FINAL", + "crypto_secretstream_xchacha20poly1305_TAG_MESSAGE", + "crypto_secretstream_xchacha20poly1305_TAG_PUSH", + "crypto_secretstream_xchacha20poly1305_TAG_REKEY", + "crypto_secretstream_xchacha20poly1305_init_pull", + "crypto_secretstream_xchacha20poly1305_init_push", + "crypto_secretstream_xchacha20poly1305_keygen", + "crypto_secretstream_xchacha20poly1305_pull", + "crypto_secretstream_xchacha20poly1305_push", + "crypto_secretstream_xchacha20poly1305_rekey", + "crypto_secretstream_xchacha20poly1305_state", + "has_crypto_shorthash_siphashx24", + "crypto_shorthash_siphash24_BYTES", + "crypto_shorthash_siphash24_KEYBYTES", + "crypto_shorthash_siphash24", + "crypto_shorthash_siphashx24_BYTES", + "crypto_shorthash_siphashx24_KEYBYTES", + "crypto_shorthash_siphashx24", + "crypto_sign_BYTES", + "crypto_sign_SEEDBYTES", + "crypto_sign_PUBLICKEYBYTES", + "crypto_sign_SECRETKEYBYTES", + "crypto_sign_keypair", + "crypto_sign_seed_keypair", + "crypto_sign", + "crypto_sign_open", + "crypto_sign_ed25519_pk_to_curve25519", + "crypto_sign_ed25519_sk_to_curve25519", + "crypto_sign_ed25519_sk_to_pk", + "crypto_sign_ed25519_sk_to_seed", + "crypto_sign_ed25519ph_STATEBYTES", + "crypto_sign_ed25519ph_final_create", + "crypto_sign_ed25519ph_final_verify", + "crypto_sign_ed25519ph_state", + "crypto_sign_ed25519ph_update", + "crypto_pwhash_ALG_ARGON2I13", + "crypto_pwhash_ALG_ARGON2ID13", + "crypto_pwhash_ALG_DEFAULT", + "crypto_pwhash_BYTES_MAX", + "crypto_pwhash_BYTES_MIN", + "crypto_pwhash_PASSWD_MAX", + "crypto_pwhash_PASSWD_MIN", + "crypto_pwhash_SALTBYTES", + "crypto_pwhash_STRBYTES", + "crypto_pwhash_alg", + "crypto_pwhash_argon2i_MEMLIMIT_MIN", + "crypto_pwhash_argon2i_MEMLIMIT_MAX", + "crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE", + "crypto_pwhash_argon2i_MEMLIMIT_MODERATE", + "crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE", + "crypto_pwhash_argon2i_OPSLIMIT_MIN", + "crypto_pwhash_argon2i_OPSLIMIT_MAX", + "crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE", + "crypto_pwhash_argon2i_OPSLIMIT_MODERATE", + "crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE", + "crypto_pwhash_argon2i_STRPREFIX", + "crypto_pwhash_argon2id_MEMLIMIT_MIN", + "crypto_pwhash_argon2id_MEMLIMIT_MAX", + "crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE", + "crypto_pwhash_argon2id_MEMLIMIT_MODERATE", + "crypto_pwhash_argon2id_OPSLIMIT_MIN", + "crypto_pwhash_argon2id_OPSLIMIT_MAX", + "crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE", + "crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE", + "crypto_pwhash_argon2id_OPSLIMIT_MODERATE", + "crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE", + "crypto_pwhash_argon2id_STRPREFIX", + "crypto_pwhash_str_alg", + "crypto_pwhash_str_verify", + "has_crypto_pwhash_scryptsalsa208sha256", + "crypto_pwhash_scryptsalsa208sha256_BYTES_MAX", + "crypto_pwhash_scryptsalsa208sha256_BYTES_MIN", + "crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE", + "crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX", + "crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN", + "crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE", + "crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE", + "crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX", + "crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN", + "crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE", + "crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX", + "crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN", + "crypto_pwhash_scryptsalsa208sha256_SALTBYTES", + "crypto_pwhash_scryptsalsa208sha256_STRBYTES", + "crypto_pwhash_scryptsalsa208sha256_STRPREFIX", + "crypto_pwhash_scryptsalsa208sha256_ll", + "crypto_pwhash_scryptsalsa208sha256_str", + "crypto_pwhash_scryptsalsa208sha256_str_verify", + "nacl_bindings_pick_scrypt_params", + "randombytes", + "randombytes_buf_deterministic", + "sodium_init", + "sodium_add", + "sodium_increment", + "sodium_memcmp", + "sodium_pad", + "sodium_unpad", +] + + +# Initialize Sodium +sodium_init() diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98d6df3f02faf18780d3c5b3a0fa5e70110b3761 GIT binary patch literal 11866 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 Jf$Jxj^B?bN{V)Ik literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_box.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_box.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36925ffde4a60712fffb55b08b82ddbce103b636 GIT binary patch literal 9952 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 VsNsKF_qctL&udHPShl)&`FFB&VcY-! literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_core.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_core.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7a5dc2a77da40ec4cba259d53bc5ee6a08f4381 GIT binary patch literal 11808 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 aW#4F-;<@6bsnS%bc)577_z|8>mHr2CVriHF literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_generichash.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_generichash.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08e13549f976b0be927b04afe1a35ee6d84797bc GIT binary patch literal 7465 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 YS5sTnx2yKZxqjQfa(zEmUmZX5U%9}_zyJUM literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_hash.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_hash.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b4408f2acb1c0b70467d32a08f59425a7ab6bfc0 GIT binary patch literal 1494 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_secretbox.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_secretbox.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ca7c992ae141f593a408c9c749e0afe6205dfd4 GIT binary patch literal 3269 zcmdT`&2Jk;6yMn|uQzt=q)FN|6t;X@0viNEYE>cH5TOb+l}JJDBDC3f#>qDJ?rLV7 zkK$YiaDx*^4#@?n{|Ns9mpyRd)HAmr2=C3hwqv(|dSk79yYJ1L@y`6-?>7^c%dQ63 z@elR;&N)r{4V}@;0_Ov`#jjvK)u={ETk8;CC-| z+s|zH`Yw-~2F|>H+3+mDy$rYb9*op_`XP~I+u#dQKQbseCSMVV5{Q}*eM3ccj8a2d zb6QV3uN@fDJ}OWX@{B`rtRI-tIV$$do{>j-q^BQS2bOeu7PYo@YD@k86fJyb5Dj{k zdLupIy-b~N^hFI|DxUo8dT_18YTCjJW9sGe5T4v(UVozA`g;FuecjuQ4u5ba%H@8_Mk6OvH{+eK z9Z?TbPs)!SHQw(87G684bYl^1#*BK+t&o5I1;_BoOn>T7pk6DC+KfIVeu0OPh~mxF z+B8%vi#g($8BofZ`&roTvK7t~&JkJeph3(tBWAnY#JB2r5pm>xHnprOU3Jdvjc%*O zI4?p=&E_R|@G_cdOtsUHQbsek8Kql{OSUI7gER3^RB}6u-S%@VhXbtjqz#J(|x`KfByp9Vh)VvmWZq8cU4~?b9$AijGD{1#> z9CI$b-Jj}^3w3XKP=9@Tcsq z^W$|DBq@*#Il`Yqa|sO+3y3jRM$bbuE2ix*ijfrD!&Ib1ZeGNTi{??>1>JW z#3nj1|Fmr=Rm?n7l=#g9!TuH;5ZM1L*pRCo5)f;vXMkv%O0S zL9A_Rf>>KhtnGnVTX_$V@&YaNh1%g&_?Qvs2B`6QY{+paKOF}=n*2KsEEM}=IMfQ` z+GGVC(8SCNnkbD59}h<#L*X@u-Gf`;w+)5DA&y?sXF)1Tgk#Rr*Z(JIeb)7t_O?Zh zqk^=L39PR}OKBc2_?<_tR;8Os69Oyrt_lJHJ$Wn*` zK1EvWmKmLJFDKpPaS2HmD8vV(1F*;VR>PrQ zNAoHg56u|Rb%=H07H@$W(#_G4Y9`T7b;JC_b{u_HH;H>{8bb;~31IKl+LCYL*28u1 zl!W*t^y`60Xw>cGm5buxS5$m>s#N9bPoC)D9H5RD{kRNM4pof2zytzyG{2LGq BJVXEh literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_secretstream.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_secretstream.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec73c1b984df5bf164deafab3f9949b536b153fb GIT binary patch literal 8409 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_shorthash.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/crypto_shorthash.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..352cae35f4e5e58e04a7273d04a6342ab3c7e1b7 GIT binary patch literal 2115 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/randombytes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/randombytes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a5398159b0424da2d828871d8c420b990c27aac GIT binary patch literal 1286 zcmaJ>&u`l{6ecCvu^l@}F|0sQ3=puBfz1NiVL*eT7`Eh^Lz5lmqEKk@*=A!=!Xwqx zfp^)DTaP{VVE5L4N!OnCFZ8lKQZDLXKnd{ay+`WlB-N(U7ViNmdL0ZsM`p(LY;9}W;+6UI^@65G~bc2Y|SNKu}$zhx4}AGd7ry{)c7)x z!Qa6>Mu@_j*S(m=Q(xG`mzVBCmzS}w@(EyEOydSp>@metEb>^y87@m(%utkbm5Ie- z85_td1Yc|Wf+;G@VAS)u<5Hl=V^{n*R@yd6w9ArWU)pCr9#-0@nFbkWbAivEpAB0W z(xK{5!!^2d*84j>s@s!lIt3gCNQ}}h3g0svkpIyn^CE{tl~=}8Wm%w2Cd$mO#R~wN zRHaIlz7{Ccsailf5e8&3dI|bvLQMSlLsBm7ywDFvj}oISd|!&}O3c6{T4W2Vq@~g` zlk9*Ql}mIAyGzqJIIPp>eeQF^umKnu0Ev6FmO0`+4R^#AO;6$pIhL*XpWO1R5brt? zCExHrxQ*5=8F*>~+g|Uj$Y1eINaRNAj*B*d3}v__H@bP}yZQxkC0M{*X=Ut|$Qfur zVTpm#KqZS^`hB&n1l&Qs#O;=F+OCNa9eJ9Wo$fw_%kT~^@k4{&0vRG zbvEqM0PfSqEme5vUg|sJHY;I1kY~8Re~q^>3z=g=g;2@nM{%ZV*j;RPop6C;lOEN0Iy-0w~%N+kq8=8 zg~-*Rz)e&|O&TyV3xCTqrQ*|i*4u8F4eB^PYIAcoPh z*fO~-;n6Rim+g&RDfz5;SsHHH)0Wg5a>Yz3NiBd$QV?g#qo7)8R_@K} UMLWSRrqE`bfE1mh6h9dK0bc^oFaQ7m literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/utils.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/bindings/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3385ee4947c5e6898b0772ae087bbc976f44a90b GIT binary patch literal 3809 zcmchaTW=f36~}k>#*3(nSv#qNrrD-xYr2*QyMdbuMUX-W0t0~?ByA9|Xv8IFM6JcW zcxG0P1nMPDAN$rvBaj}GkJ68@uYJl_@I%o5nW3nqEF?h+bcG$x&gJav%%D^E$f)G!LOlZjkAxO zUiTZU#Ch0rD{pTvsk~`2>ai*mnJT5|d6l1J#a&b0t3oMsDYLOlQ|4C#zaj1&-0BpC zb~Kwg+I{M3?~%{hKk;>@ja_OBbU1UKGL-Bod+MIJx^dd%?#w-NPrO>)N4+)kVAG60 z^I(r!{Mmf2X{p&da8Cl=K3%~aAJ#nXp(UIJ`Ioa0U+f?MsU6|k$qQ={VDoPEuj!e#Hh287C^qCdZBOek`NE{arGAeXk?w zjH@>F(WJ4cg3*x{s`A8V+4v*N_2PCGB?QPP2hOD);W1^4`D`kKdi#HE`%mIWLg;>3B)duWB$j-4FPVznQLF^-Zyk#4unz+6zu7O2^nRZGZtD+ym1wb9 z#N&f_B2+(%$5U9!I6htVOPx&BR&gY+;hooUD=HlSI=k+6-45%xUDkCsaGMd}iK(hJ zn&#sJl^hF6^t^x*H5#10M&&zj3hIc>7#>8<04J39wo@?aTs#X2vi!I0>~g3t`vgA?&UKW*XHzUBj4wyEmOPm%|PJ zff~SS9)D}#_#ozy-WMRJD0M`KA4?e@MZ=*Q4kMjMag>%*ofK0+%ngT&{TL37fs(i~ zCLVnB=l+9tccS0Fb@%?}n^8QSn>aAz2G2LjOeK>HGv?m$yhR7TtKlf$kfR*0 zW19$~XfIBt(3*$6b>lj+MMg+Q#bIH>uw>uWlu5{fENyYRn3kkU`(VZqubOl7S&mp}$oO#^8>CCBY99QNfKZL9uis%wibgbqOWS(AvHmXtk|L3jDemHS- zAo3;^hOBFUHFKBPva);?Tk;i}c!?(?znwWsW-0Pj4C@6K@W|KDFbGP*MgD?pknYxa zc^!{N#t2Sl#q!c&8{nnQB=u6zg-BQxq@|x<^m^jPO#c{_E13z5#vurvHV`%$_;68g zf(-{xq*O$U=|Me2Ks0rZfH-Hvk0*Go!Q(+TmLf$QG!z_?r;#|tMmjc?cw7p^GSUSh z3y6Z?W?HPw_-Uf`RBQ@_g*Zd##0Ujju|^2BW)^xdN+!n2M98frtgsWyLS`M-%8(H< zGomJC=h}36k&E{OfjbeF7)MJBG$ttpFxOQpyHneR;ZWxYmiiW6-R@$haz%ZvC)f>nD|>T_zVwMGDykZ3yGbLy%--*YBxjttfhjM zR-5Eq)O|y)Q8t^-fny|i^SEqP&m?nml08Zjmq>mU(ZKBUdkNAQ9Qime=Mna{ic_&k z@rU0wJV)m|t2=d~2^9oxV`T}LD~P5{aX}7w1$c(FF_OwsTN9K6q&Y9ANDoP7&z*tV z7l?uz<7{Rn%b8}hmrJvjIGUJmg7Fmo1i_i;eUq-j68Xc$_bj_q{5=kZ{+c`4Y-031 zbI@O#^J85ws>#3|^N|aevZ<5VP`foYNxC)n!nhax7D<%x$WgCHI~?8n^wwLqu`Rda z-noZvFF7C?|6l#@JhQ-2TF(pQuizH)*Hn=E4FV|EZft)>m;LZJ81Wdl&5+k^IC#nA z$ZKp39w})=Z+);%DfSlrSr7#gqpJ2r-K0c=jv29Q^}uF99_HHgi880kALaSfq}(>V sQSM?wj&XYPrrP?9Vo;7#HUDUU6>n2krAUe>V0FCijqWSm8yh$O3;kxsS^xk5 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_aead.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_aead.py new file mode 100644 index 0000000..2f7da78 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_aead.py @@ -0,0 +1,1069 @@ +# Copyright 2017 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Optional + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + +""" +Implementations of authenticated encription with associated data (*AEAD*) +constructions building on the chacha20 stream cipher and the poly1305 +authenticator +""" + +crypto_aead_chacha20poly1305_ietf_KEYBYTES: int = ( + lib.crypto_aead_chacha20poly1305_ietf_keybytes() +) +crypto_aead_chacha20poly1305_ietf_NSECBYTES: int = ( + lib.crypto_aead_chacha20poly1305_ietf_nsecbytes() +) +crypto_aead_chacha20poly1305_ietf_NPUBBYTES: int = ( + lib.crypto_aead_chacha20poly1305_ietf_npubbytes() +) +crypto_aead_chacha20poly1305_ietf_ABYTES: int = ( + lib.crypto_aead_chacha20poly1305_ietf_abytes() +) +crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX: int = ( + lib.crypto_aead_chacha20poly1305_ietf_messagebytes_max() +) +_aead_chacha20poly1305_ietf_CRYPTBYTES_MAX = ( + crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + + crypto_aead_chacha20poly1305_ietf_ABYTES +) + +crypto_aead_chacha20poly1305_KEYBYTES: int = ( + lib.crypto_aead_chacha20poly1305_keybytes() +) +crypto_aead_chacha20poly1305_NSECBYTES: int = ( + lib.crypto_aead_chacha20poly1305_nsecbytes() +) +crypto_aead_chacha20poly1305_NPUBBYTES: int = ( + lib.crypto_aead_chacha20poly1305_npubbytes() +) +crypto_aead_chacha20poly1305_ABYTES: int = ( + lib.crypto_aead_chacha20poly1305_abytes() +) +crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX: int = ( + lib.crypto_aead_chacha20poly1305_messagebytes_max() +) +_aead_chacha20poly1305_CRYPTBYTES_MAX = ( + crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX + + crypto_aead_chacha20poly1305_ABYTES +) + +crypto_aead_xchacha20poly1305_ietf_KEYBYTES: int = ( + lib.crypto_aead_xchacha20poly1305_ietf_keybytes() +) +crypto_aead_xchacha20poly1305_ietf_NSECBYTES: int = ( + lib.crypto_aead_xchacha20poly1305_ietf_nsecbytes() +) +crypto_aead_xchacha20poly1305_ietf_NPUBBYTES: int = ( + lib.crypto_aead_xchacha20poly1305_ietf_npubbytes() +) +crypto_aead_xchacha20poly1305_ietf_ABYTES: int = ( + lib.crypto_aead_xchacha20poly1305_ietf_abytes() +) +crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX: int = ( + lib.crypto_aead_xchacha20poly1305_ietf_messagebytes_max() +) +_aead_xchacha20poly1305_ietf_CRYPTBYTES_MAX = ( + crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + + crypto_aead_xchacha20poly1305_ietf_ABYTES +) + +crypto_aead_aegis256_KEYBYTES: int = lib.crypto_aead_aegis256_keybytes() +crypto_aead_aegis256_NSECBYTES: int = lib.crypto_aead_aegis256_nsecbytes() +crypto_aead_aegis256_NPUBBYTES: int = lib.crypto_aead_aegis256_npubbytes() +crypto_aead_aegis256_ABYTES: int = lib.crypto_aead_aegis256_abytes() +crypto_aead_aegis256_MESSAGEBYTES_MAX: int = ( + lib.crypto_aead_aegis256_messagebytes_max() +) +_aead_aegis256_CRYPTBYTES_MAX = ( + crypto_aead_aegis256_MESSAGEBYTES_MAX + crypto_aead_aegis256_ABYTES +) + +crypto_aead_aegis128l_KEYBYTES: int = lib.crypto_aead_aegis128l_keybytes() +crypto_aead_aegis128l_NSECBYTES: int = lib.crypto_aead_aegis128l_nsecbytes() +crypto_aead_aegis128l_NPUBBYTES: int = lib.crypto_aead_aegis128l_npubbytes() +crypto_aead_aegis128l_ABYTES: int = lib.crypto_aead_aegis128l_abytes() +crypto_aead_aegis128l_MESSAGEBYTES_MAX: int = ( + lib.crypto_aead_aegis128l_messagebytes_max() +) +_aead_aegis256_CRYPTBYTES_MAX = ( + crypto_aead_aegis128l_MESSAGEBYTES_MAX + crypto_aead_aegis128l_ABYTES +) + +crypto_aead_aes256gcm_KEYBYTES: int = lib.crypto_aead_aes256gcm_keybytes() +crypto_aead_aes256gcm_NSECBYTES: int = lib.crypto_aead_aes256gcm_nsecbytes() +crypto_aead_aes256gcm_NPUBBYTES: int = lib.crypto_aead_aes256gcm_npubbytes() +crypto_aead_aes256gcm_ABYTES: int = lib.crypto_aead_aes256gcm_abytes() +crypto_aead_aes256gcm_MESSAGEBYTES_MAX: int = ( + lib.crypto_aead_aes256gcm_messagebytes_max() +) +_aead_aegis256_CRYPTBYTES_MAX = ( + crypto_aead_aes256gcm_MESSAGEBYTES_MAX + crypto_aead_aes256gcm_ABYTES +) + + +def crypto_aead_chacha20poly1305_ietf_encrypt( + message: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Encrypt the given ``message`` using the IETF ratified chacha20poly1305 + construction described in RFC7539. + + :param message: + :type message: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: authenticated ciphertext + :rtype: bytes + """ + ensure( + isinstance(message, bytes), + "Input message type must be bytes", + raising=exc.TypeError, + ) + + mlen = len(message) + + ensure( + mlen <= crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX, + "Message must be at most {} bytes long".format( + crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_chacha20poly1305_ietf_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_chacha20poly1305_ietf_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) + and len(key) == crypto_aead_chacha20poly1305_ietf_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_chacha20poly1305_ietf_KEYBYTES + ), + raising=exc.TypeError, + ) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + mxout = mlen + crypto_aead_chacha20poly1305_ietf_ABYTES + + clen = ffi.new("unsigned long long *") + + ciphertext = ffi.new("unsigned char[]", mxout) + + res = lib.crypto_aead_chacha20poly1305_ietf_encrypt( + ciphertext, clen, message, mlen, _aad, aalen, ffi.NULL, nonce, key + ) + + ensure(res == 0, "Encryption failed.", raising=exc.CryptoError) + return ffi.buffer(ciphertext, clen[0])[:] + + +def crypto_aead_chacha20poly1305_ietf_decrypt( + ciphertext: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Decrypt the given ``ciphertext`` using the IETF ratified chacha20poly1305 + construction described in RFC7539. + + :param ciphertext: + :type ciphertext: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: message + :rtype: bytes + """ + ensure( + isinstance(ciphertext, bytes), + "Input ciphertext type must be bytes", + raising=exc.TypeError, + ) + + clen = len(ciphertext) + + ensure( + clen <= _aead_chacha20poly1305_ietf_CRYPTBYTES_MAX, + "Ciphertext must be at most {} bytes long".format( + _aead_chacha20poly1305_ietf_CRYPTBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_chacha20poly1305_ietf_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_chacha20poly1305_ietf_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) + and len(key) == crypto_aead_chacha20poly1305_ietf_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_chacha20poly1305_ietf_KEYBYTES + ), + raising=exc.TypeError, + ) + + mxout = clen - crypto_aead_chacha20poly1305_ietf_ABYTES + + mlen = ffi.new("unsigned long long *") + message = ffi.new("unsigned char[]", mxout) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + res = lib.crypto_aead_chacha20poly1305_ietf_decrypt( + message, mlen, ffi.NULL, ciphertext, clen, _aad, aalen, nonce, key + ) + + ensure(res == 0, "Decryption failed.", raising=exc.CryptoError) + + return ffi.buffer(message, mlen[0])[:] + + +def crypto_aead_chacha20poly1305_encrypt( + message: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Encrypt the given ``message`` using the "legacy" construction + described in draft-agl-tls-chacha20poly1305. + + :param message: + :type message: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: authenticated ciphertext + :rtype: bytes + """ + ensure( + isinstance(message, bytes), + "Input message type must be bytes", + raising=exc.TypeError, + ) + + mlen = len(message) + + ensure( + mlen <= crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX, + "Message must be at most {} bytes long".format( + crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_chacha20poly1305_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_chacha20poly1305_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) + and len(key) == crypto_aead_chacha20poly1305_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_chacha20poly1305_KEYBYTES + ), + raising=exc.TypeError, + ) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + mxout = mlen + crypto_aead_chacha20poly1305_ietf_ABYTES + + clen = ffi.new("unsigned long long *") + + ciphertext = ffi.new("unsigned char[]", mxout) + + res = lib.crypto_aead_chacha20poly1305_encrypt( + ciphertext, clen, message, mlen, _aad, aalen, ffi.NULL, nonce, key + ) + + ensure(res == 0, "Encryption failed.", raising=exc.CryptoError) + return ffi.buffer(ciphertext, clen[0])[:] + + +def crypto_aead_chacha20poly1305_decrypt( + ciphertext: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Decrypt the given ``ciphertext`` using the "legacy" construction + described in draft-agl-tls-chacha20poly1305. + + :param ciphertext: authenticated ciphertext + :type ciphertext: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: message + :rtype: bytes + """ + ensure( + isinstance(ciphertext, bytes), + "Input ciphertext type must be bytes", + raising=exc.TypeError, + ) + + clen = len(ciphertext) + + ensure( + clen <= _aead_chacha20poly1305_CRYPTBYTES_MAX, + "Ciphertext must be at most {} bytes long".format( + _aead_chacha20poly1305_CRYPTBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_chacha20poly1305_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_chacha20poly1305_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) + and len(key) == crypto_aead_chacha20poly1305_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_chacha20poly1305_KEYBYTES + ), + raising=exc.TypeError, + ) + + mxout = clen - crypto_aead_chacha20poly1305_ABYTES + + mlen = ffi.new("unsigned long long *") + message = ffi.new("unsigned char[]", mxout) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + res = lib.crypto_aead_chacha20poly1305_decrypt( + message, mlen, ffi.NULL, ciphertext, clen, _aad, aalen, nonce, key + ) + + ensure(res == 0, "Decryption failed.", raising=exc.CryptoError) + + return ffi.buffer(message, mlen[0])[:] + + +def crypto_aead_xchacha20poly1305_ietf_encrypt( + message: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Encrypt the given ``message`` using the long-nonces xchacha20poly1305 + construction. + + :param message: + :type message: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: authenticated ciphertext + :rtype: bytes + """ + ensure( + isinstance(message, bytes), + "Input message type must be bytes", + raising=exc.TypeError, + ) + + mlen = len(message) + + ensure( + mlen <= crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX, + "Message must be at most {} bytes long".format( + crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_xchacha20poly1305_ietf_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) + and len(key) == crypto_aead_xchacha20poly1305_ietf_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_xchacha20poly1305_ietf_KEYBYTES + ), + raising=exc.TypeError, + ) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + mxout = mlen + crypto_aead_xchacha20poly1305_ietf_ABYTES + + clen = ffi.new("unsigned long long *") + + ciphertext = ffi.new("unsigned char[]", mxout) + + res = lib.crypto_aead_xchacha20poly1305_ietf_encrypt( + ciphertext, clen, message, mlen, _aad, aalen, ffi.NULL, nonce, key + ) + + ensure(res == 0, "Encryption failed.", raising=exc.CryptoError) + return ffi.buffer(ciphertext, clen[0])[:] + + +def crypto_aead_xchacha20poly1305_ietf_decrypt( + ciphertext: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Decrypt the given ``ciphertext`` using the long-nonces xchacha20poly1305 + construction. + + :param ciphertext: authenticated ciphertext + :type ciphertext: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: message + :rtype: bytes + """ + ensure( + isinstance(ciphertext, bytes), + "Input ciphertext type must be bytes", + raising=exc.TypeError, + ) + + clen = len(ciphertext) + + ensure( + clen <= _aead_xchacha20poly1305_ietf_CRYPTBYTES_MAX, + "Ciphertext must be at most {} bytes long".format( + _aead_xchacha20poly1305_ietf_CRYPTBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_xchacha20poly1305_ietf_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) + and len(key) == crypto_aead_xchacha20poly1305_ietf_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_xchacha20poly1305_ietf_KEYBYTES + ), + raising=exc.TypeError, + ) + + mxout = clen - crypto_aead_xchacha20poly1305_ietf_ABYTES + mlen = ffi.new("unsigned long long *") + message = ffi.new("unsigned char[]", mxout) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + res = lib.crypto_aead_xchacha20poly1305_ietf_decrypt( + message, mlen, ffi.NULL, ciphertext, clen, _aad, aalen, nonce, key + ) + + ensure(res == 0, "Decryption failed.", raising=exc.CryptoError) + + return ffi.buffer(message, mlen[0])[:] + + +def crypto_aead_aegis256_encrypt( + message: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Encrypt the given ``message`` using the AEGIS-256 + construction. + + :param message: + :type message: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: authenticated ciphertext + :rtype: bytes + """ + ensure( + isinstance(message, bytes), + "Input message type must be bytes", + raising=exc.TypeError, + ) + + mlen = len(message) + + ensure( + mlen <= crypto_aead_aegis256_MESSAGEBYTES_MAX, + "Message must be at most {} bytes long".format( + crypto_aead_aegis256_MESSAGEBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_aegis256_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_aegis256_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) and len(key) == crypto_aead_aegis256_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_aegis256_KEYBYTES + ), + raising=exc.TypeError, + ) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + mxout = mlen + crypto_aead_aegis256_ABYTES + + clen = ffi.new("unsigned long long *") + + ciphertext = ffi.new("unsigned char[]", mxout) + + res = lib.crypto_aead_aegis256_encrypt( + ciphertext, clen, message, mlen, _aad, aalen, ffi.NULL, nonce, key + ) + + ensure(res == 0, "Encryption failed.", raising=exc.CryptoError) + return ffi.buffer(ciphertext, clen[0])[:] + + +def crypto_aead_aegis256_decrypt( + ciphertext: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Decrypt the given ``ciphertext`` using the AEGIS-256 + construction. + + :param ciphertext: authenticated ciphertext + :type ciphertext: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: message + :rtype: bytes + """ + ensure( + isinstance(ciphertext, bytes), + "Input ciphertext type must be bytes", + raising=exc.TypeError, + ) + + clen = len(ciphertext) + + ensure( + clen <= _aead_aegis256_CRYPTBYTES_MAX, + "Ciphertext must be at most {} bytes long".format( + _aead_aegis256_CRYPTBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_aegis256_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_aegis256_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) and len(key) == crypto_aead_aegis256_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_aegis256_KEYBYTES + ), + raising=exc.TypeError, + ) + + mxout = clen - crypto_aead_aegis256_ABYTES + mlen = ffi.new("unsigned long long *") + message = ffi.new("unsigned char[]", mxout) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + res = lib.crypto_aead_aegis256_decrypt( + message, mlen, ffi.NULL, ciphertext, clen, _aad, aalen, nonce, key + ) + + ensure(res == 0, "Decryption failed.", raising=exc.CryptoError) + + return ffi.buffer(message, mlen[0])[:] + + +def crypto_aead_aegis128l_encrypt( + message: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Encrypt the given ``message`` using the AEGIS-128L + construction. + + :param message: + :type message: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: authenticated ciphertext + :rtype: bytes + """ + ensure( + isinstance(message, bytes), + "Input message type must be bytes", + raising=exc.TypeError, + ) + + mlen = len(message) + + ensure( + mlen <= crypto_aead_aegis128l_MESSAGEBYTES_MAX, + "Message must be at most {} bytes long".format( + crypto_aead_aegis128l_MESSAGEBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_aegis128l_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_aegis128l_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) and len(key) == crypto_aead_aegis128l_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_aegis128l_KEYBYTES + ), + raising=exc.TypeError, + ) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + mxout = mlen + crypto_aead_aegis128l_ABYTES + + clen = ffi.new("unsigned long long *") + + ciphertext = ffi.new("unsigned char[]", mxout) + + res = lib.crypto_aead_aegis128l_encrypt( + ciphertext, clen, message, mlen, _aad, aalen, ffi.NULL, nonce, key + ) + + ensure(res == 0, "Encryption failed.", raising=exc.CryptoError) + return ffi.buffer(ciphertext, clen[0])[:] + + +def crypto_aead_aegis128l_decrypt( + ciphertext: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Decrypt the given ``ciphertext`` using the AEGIS-128L + construction. + + :param ciphertext: authenticated ciphertext + :type ciphertext: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: message + :rtype: bytes + """ + ensure( + isinstance(ciphertext, bytes), + "Input ciphertext type must be bytes", + raising=exc.TypeError, + ) + + clen = len(ciphertext) + + ensure( + clen <= _aead_aegis256_CRYPTBYTES_MAX, + "Ciphertext must be at most {} bytes long".format( + _aead_aegis256_CRYPTBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_aegis128l_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_aegis128l_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) and len(key) == crypto_aead_aegis128l_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_aegis128l_KEYBYTES + ), + raising=exc.TypeError, + ) + + mxout = clen - crypto_aead_aegis128l_ABYTES + mlen = ffi.new("unsigned long long *") + message = ffi.new("unsigned char[]", mxout) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + res = lib.crypto_aead_aegis128l_decrypt( + message, mlen, ffi.NULL, ciphertext, clen, _aad, aalen, nonce, key + ) + + ensure(res == 0, "Decryption failed.", raising=exc.CryptoError) + + return ffi.buffer(message, mlen[0])[:] + + +def crypto_aead_aes256gcm_encrypt( + message: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Encrypt the given ``message`` using the AES-256-GCM + construction. Requires the Intel AES-NI extensions, + or the ARM Crypto extensions. + + :param message: + :type message: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: authenticated ciphertext + :rtype: bytes + """ + ensure( + lib.crypto_aead_aes256gcm_is_available() == 1, + "Construction requires hardware acceleration", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(message, bytes), + "Input message type must be bytes", + raising=exc.TypeError, + ) + + mlen = len(message) + + ensure( + mlen <= crypto_aead_aes256gcm_MESSAGEBYTES_MAX, + "Message must be at most {} bytes long".format( + crypto_aead_aes256gcm_MESSAGEBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_aes256gcm_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_aes256gcm_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) and len(key) == crypto_aead_aes256gcm_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_aes256gcm_KEYBYTES + ), + raising=exc.TypeError, + ) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + mxout = mlen + crypto_aead_aes256gcm_ABYTES + + clen = ffi.new("unsigned long long *") + + ciphertext = ffi.new("unsigned char[]", mxout) + + res = lib.crypto_aead_aes256gcm_encrypt( + ciphertext, clen, message, mlen, _aad, aalen, ffi.NULL, nonce, key + ) + + ensure(res == 0, "Encryption failed.", raising=exc.CryptoError) + return ffi.buffer(ciphertext, clen[0])[:] + + +def crypto_aead_aes256gcm_decrypt( + ciphertext: bytes, aad: Optional[bytes], nonce: bytes, key: bytes +) -> bytes: + """ + Decrypt the given ``ciphertext`` using the AES-256-GCM + construction. Requires the Intel AES-NI extensions, + or the ARM Crypto extensions. + + :param ciphertext: authenticated ciphertext + :type ciphertext: bytes + :param aad: + :type aad: Optional[bytes] + :param nonce: + :type nonce: bytes + :param key: + :type key: bytes + :return: message + :rtype: bytes + """ + ensure( + lib.crypto_aead_aes256gcm_is_available() == 1, + "Construction requires hardware acceleration", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(ciphertext, bytes), + "Input ciphertext type must be bytes", + raising=exc.TypeError, + ) + + clen = len(ciphertext) + + ensure( + clen <= _aead_aegis256_CRYPTBYTES_MAX, + "Ciphertext must be at most {} bytes long".format( + _aead_aegis256_CRYPTBYTES_MAX + ), + raising=exc.ValueError, + ) + + ensure( + isinstance(aad, bytes) or (aad is None), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + ensure( + isinstance(nonce, bytes) + and len(nonce) == crypto_aead_aes256gcm_NPUBBYTES, + "Nonce must be a {} bytes long bytes sequence".format( + crypto_aead_aes256gcm_NPUBBYTES + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(key, bytes) and len(key) == crypto_aead_aes256gcm_KEYBYTES, + "Key must be a {} bytes long bytes sequence".format( + crypto_aead_aes256gcm_KEYBYTES + ), + raising=exc.TypeError, + ) + + mxout = clen - crypto_aead_aes256gcm_ABYTES + mlen = ffi.new("unsigned long long *") + message = ffi.new("unsigned char[]", mxout) + + if aad: + _aad = aad + aalen = len(aad) + else: + _aad = ffi.NULL + aalen = 0 + + res = lib.crypto_aead_aes256gcm_decrypt( + message, mlen, ffi.NULL, ciphertext, clen, _aad, aalen, nonce, key + ) + + ensure(res == 0, "Decryption failed.", raising=exc.CryptoError) + + return ffi.buffer(message, mlen[0])[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_box.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_box.py new file mode 100644 index 0000000..da6e4cb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_box.py @@ -0,0 +1,475 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Tuple + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +__all__ = ["crypto_box_keypair", "crypto_box"] + + +crypto_box_SECRETKEYBYTES: int = lib.crypto_box_secretkeybytes() +crypto_box_PUBLICKEYBYTES: int = lib.crypto_box_publickeybytes() +crypto_box_SEEDBYTES: int = lib.crypto_box_seedbytes() +crypto_box_NONCEBYTES: int = lib.crypto_box_noncebytes() +crypto_box_ZEROBYTES: int = lib.crypto_box_zerobytes() +crypto_box_BOXZEROBYTES: int = lib.crypto_box_boxzerobytes() +crypto_box_BEFORENMBYTES: int = lib.crypto_box_beforenmbytes() +crypto_box_SEALBYTES: int = lib.crypto_box_sealbytes() +crypto_box_MACBYTES: int = lib.crypto_box_macbytes() + + +def crypto_box_keypair() -> Tuple[bytes, bytes]: + """ + Returns a randomly generated public and secret key. + + :rtype: (bytes(public_key), bytes(secret_key)) + """ + pk = ffi.new("unsigned char[]", crypto_box_PUBLICKEYBYTES) + sk = ffi.new("unsigned char[]", crypto_box_SECRETKEYBYTES) + + rc = lib.crypto_box_keypair(pk, sk) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ( + ffi.buffer(pk, crypto_box_PUBLICKEYBYTES)[:], + ffi.buffer(sk, crypto_box_SECRETKEYBYTES)[:], + ) + + +def crypto_box_seed_keypair(seed: bytes) -> Tuple[bytes, bytes]: + """ + Returns a (public, secret) key pair deterministically generated + from an input ``seed``. + + .. warning:: The seed **must** be high-entropy; therefore, + its generator **must** be a cryptographic quality + random function like, for example, :func:`~nacl.utils.random`. + + .. warning:: The seed **must** be protected and remain secret. + Anyone who knows the seed is really in possession of + the corresponding PrivateKey. + + + :param seed: bytes + :rtype: (bytes(public_key), bytes(secret_key)) + """ + ensure(isinstance(seed, bytes), "seed must be bytes", raising=TypeError) + + if len(seed) != crypto_box_SEEDBYTES: + raise exc.ValueError("Invalid seed") + + pk = ffi.new("unsigned char[]", crypto_box_PUBLICKEYBYTES) + sk = ffi.new("unsigned char[]", crypto_box_SECRETKEYBYTES) + + rc = lib.crypto_box_seed_keypair(pk, sk, seed) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ( + ffi.buffer(pk, crypto_box_PUBLICKEYBYTES)[:], + ffi.buffer(sk, crypto_box_SECRETKEYBYTES)[:], + ) + + +def crypto_box(message: bytes, nonce: bytes, pk: bytes, sk: bytes) -> bytes: + """ + Encrypts and returns a message ``message`` using the secret key ``sk``, + public key ``pk``, and the nonce ``nonce``. + + :param message: bytes + :param nonce: bytes + :param pk: bytes + :param sk: bytes + :rtype: bytes + """ + if len(nonce) != crypto_box_NONCEBYTES: + raise exc.ValueError("Invalid nonce size") + + if len(pk) != crypto_box_PUBLICKEYBYTES: + raise exc.ValueError("Invalid public key") + + if len(sk) != crypto_box_SECRETKEYBYTES: + raise exc.ValueError("Invalid secret key") + + padded = (b"\x00" * crypto_box_ZEROBYTES) + message + ciphertext = ffi.new("unsigned char[]", len(padded)) + + rc = lib.crypto_box(ciphertext, padded, len(padded), nonce, pk, sk) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(ciphertext, len(padded))[crypto_box_BOXZEROBYTES:] + + +def crypto_box_open( + ciphertext: bytes, nonce: bytes, pk: bytes, sk: bytes +) -> bytes: + """ + Decrypts and returns an encrypted message ``ciphertext``, using the secret + key ``sk``, public key ``pk``, and the nonce ``nonce``. + + :param ciphertext: bytes + :param nonce: bytes + :param pk: bytes + :param sk: bytes + :rtype: bytes + """ + if len(nonce) != crypto_box_NONCEBYTES: + raise exc.ValueError("Invalid nonce size") + + if len(pk) != crypto_box_PUBLICKEYBYTES: + raise exc.ValueError("Invalid public key") + + if len(sk) != crypto_box_SECRETKEYBYTES: + raise exc.ValueError("Invalid secret key") + + padded = (b"\x00" * crypto_box_BOXZEROBYTES) + ciphertext + plaintext = ffi.new("unsigned char[]", len(padded)) + + res = lib.crypto_box_open(plaintext, padded, len(padded), nonce, pk, sk) + ensure( + res == 0, + "An error occurred trying to decrypt the message", + raising=exc.CryptoError, + ) + + return ffi.buffer(plaintext, len(padded))[crypto_box_ZEROBYTES:] + + +def crypto_box_beforenm(pk: bytes, sk: bytes) -> bytes: + """ + Computes and returns the shared key for the public key ``pk`` and the + secret key ``sk``. This can be used to speed up operations where the same + set of keys is going to be used multiple times. + + :param pk: bytes + :param sk: bytes + :rtype: bytes + """ + if len(pk) != crypto_box_PUBLICKEYBYTES: + raise exc.ValueError("Invalid public key") + + if len(sk) != crypto_box_SECRETKEYBYTES: + raise exc.ValueError("Invalid secret key") + + k = ffi.new("unsigned char[]", crypto_box_BEFORENMBYTES) + + rc = lib.crypto_box_beforenm(k, pk, sk) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(k, crypto_box_BEFORENMBYTES)[:] + + +def crypto_box_afternm(message: bytes, nonce: bytes, k: bytes) -> bytes: + """ + Encrypts and returns the message ``message`` using the shared key ``k`` and + the nonce ``nonce``. + + :param message: bytes + :param nonce: bytes + :param k: bytes + :rtype: bytes + """ + if len(nonce) != crypto_box_NONCEBYTES: + raise exc.ValueError("Invalid nonce") + + if len(k) != crypto_box_BEFORENMBYTES: + raise exc.ValueError("Invalid shared key") + + padded = b"\x00" * crypto_box_ZEROBYTES + message + ciphertext = ffi.new("unsigned char[]", len(padded)) + + rc = lib.crypto_box_afternm(ciphertext, padded, len(padded), nonce, k) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(ciphertext, len(padded))[crypto_box_BOXZEROBYTES:] + + +def crypto_box_open_afternm( + ciphertext: bytes, nonce: bytes, k: bytes +) -> bytes: + """ + Decrypts and returns the encrypted message ``ciphertext``, using the shared + key ``k`` and the nonce ``nonce``. + + :param ciphertext: bytes + :param nonce: bytes + :param k: bytes + :rtype: bytes + """ + if len(nonce) != crypto_box_NONCEBYTES: + raise exc.ValueError("Invalid nonce") + + if len(k) != crypto_box_BEFORENMBYTES: + raise exc.ValueError("Invalid shared key") + + padded = (b"\x00" * crypto_box_BOXZEROBYTES) + ciphertext + plaintext = ffi.new("unsigned char[]", len(padded)) + + res = lib.crypto_box_open_afternm(plaintext, padded, len(padded), nonce, k) + ensure( + res == 0, + "An error occurred trying to decrypt the message", + raising=exc.CryptoError, + ) + + return ffi.buffer(plaintext, len(padded))[crypto_box_ZEROBYTES:] + + +def crypto_box_easy( + message: bytes, nonce: bytes, pk: bytes, sk: bytes +) -> bytes: + """ + Encrypts and returns a message ``message`` using the secret key ``sk``, + public key ``pk``, and the nonce ``nonce``. + + :param message: bytes + :param nonce: bytes + :param pk: bytes + :param sk: bytes + :rtype: bytes + """ + if len(nonce) != crypto_box_NONCEBYTES: + raise exc.ValueError("Invalid nonce size") + + if len(pk) != crypto_box_PUBLICKEYBYTES: + raise exc.ValueError("Invalid public key") + + if len(sk) != crypto_box_SECRETKEYBYTES: + raise exc.ValueError("Invalid secret key") + + _mlen = len(message) + _clen = crypto_box_MACBYTES + _mlen + + ciphertext = ffi.new("unsigned char[]", _clen) + + rc = lib.crypto_box_easy(ciphertext, message, _mlen, nonce, pk, sk) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(ciphertext, _clen)[:] + + +def crypto_box_open_easy( + ciphertext: bytes, nonce: bytes, pk: bytes, sk: bytes +) -> bytes: + """ + Decrypts and returns an encrypted message ``ciphertext``, using the secret + key ``sk``, public key ``pk``, and the nonce ``nonce``. + + :param ciphertext: bytes + :param nonce: bytes + :param pk: bytes + :param sk: bytes + :rtype: bytes + """ + if len(nonce) != crypto_box_NONCEBYTES: + raise exc.ValueError("Invalid nonce size") + + if len(pk) != crypto_box_PUBLICKEYBYTES: + raise exc.ValueError("Invalid public key") + + if len(sk) != crypto_box_SECRETKEYBYTES: + raise exc.ValueError("Invalid secret key") + + _clen = len(ciphertext) + + ensure( + _clen >= crypto_box_MACBYTES, + "Input ciphertext must be at least {} long".format( + crypto_box_MACBYTES + ), + raising=exc.TypeError, + ) + + _mlen = _clen - crypto_box_MACBYTES + + plaintext = ffi.new("unsigned char[]", max(1, _mlen)) + + res = lib.crypto_box_open_easy(plaintext, ciphertext, _clen, nonce, pk, sk) + ensure( + res == 0, + "An error occurred trying to decrypt the message", + raising=exc.CryptoError, + ) + + return ffi.buffer(plaintext, _mlen)[:] + + +def crypto_box_easy_afternm(message: bytes, nonce: bytes, k: bytes) -> bytes: + """ + Encrypts and returns the message ``message`` using the shared key ``k`` and + the nonce ``nonce``. + + :param message: bytes + :param nonce: bytes + :param k: bytes + :rtype: bytes + """ + if len(nonce) != crypto_box_NONCEBYTES: + raise exc.ValueError("Invalid nonce") + + if len(k) != crypto_box_BEFORENMBYTES: + raise exc.ValueError("Invalid shared key") + + _mlen = len(message) + _clen = crypto_box_MACBYTES + _mlen + + ciphertext = ffi.new("unsigned char[]", _clen) + + rc = lib.crypto_box_easy_afternm(ciphertext, message, _mlen, nonce, k) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(ciphertext, _clen)[:] + + +def crypto_box_open_easy_afternm( + ciphertext: bytes, nonce: bytes, k: bytes +) -> bytes: + """ + Decrypts and returns the encrypted message ``ciphertext``, using the shared + key ``k`` and the nonce ``nonce``. + + :param ciphertext: bytes + :param nonce: bytes + :param k: bytes + :rtype: bytes + """ + if len(nonce) != crypto_box_NONCEBYTES: + raise exc.ValueError("Invalid nonce") + + if len(k) != crypto_box_BEFORENMBYTES: + raise exc.ValueError("Invalid shared key") + + _clen = len(ciphertext) + + ensure( + _clen >= crypto_box_MACBYTES, + "Input ciphertext must be at least {} long".format( + crypto_box_MACBYTES + ), + raising=exc.TypeError, + ) + + _mlen = _clen - crypto_box_MACBYTES + + plaintext = ffi.new("unsigned char[]", max(1, _mlen)) + + res = lib.crypto_box_open_easy_afternm( + plaintext, ciphertext, _clen, nonce, k + ) + ensure( + res == 0, + "An error occurred trying to decrypt the message", + raising=exc.CryptoError, + ) + + return ffi.buffer(plaintext, _mlen)[:] + + +def crypto_box_seal(message: bytes, pk: bytes) -> bytes: + """ + Encrypts and returns a message ``message`` using an ephemeral secret key + and the public key ``pk``. + The ephemeral public key, which is embedded in the sealed box, is also + used, in combination with ``pk``, to derive the nonce needed for the + underlying box construct. + + :param message: bytes + :param pk: bytes + :rtype: bytes + + .. versionadded:: 1.2 + """ + ensure( + isinstance(message, bytes), + "input message must be bytes", + raising=TypeError, + ) + + ensure( + isinstance(pk, bytes), "public key must be bytes", raising=TypeError + ) + + if len(pk) != crypto_box_PUBLICKEYBYTES: + raise exc.ValueError("Invalid public key") + + _mlen = len(message) + _clen = crypto_box_SEALBYTES + _mlen + + ciphertext = ffi.new("unsigned char[]", _clen) + + rc = lib.crypto_box_seal(ciphertext, message, _mlen, pk) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(ciphertext, _clen)[:] + + +def crypto_box_seal_open(ciphertext: bytes, pk: bytes, sk: bytes) -> bytes: + """ + Decrypts and returns an encrypted message ``ciphertext``, using the + recipent's secret key ``sk`` and the sender's ephemeral public key + embedded in the sealed box. The box construct nonce is derived from + the recipient's public key ``pk`` and the sender's public key. + + :param ciphertext: bytes + :param pk: bytes + :param sk: bytes + :rtype: bytes + + .. versionadded:: 1.2 + """ + ensure( + isinstance(ciphertext, bytes), + "input ciphertext must be bytes", + raising=TypeError, + ) + + ensure( + isinstance(pk, bytes), "public key must be bytes", raising=TypeError + ) + + ensure( + isinstance(sk, bytes), "secret key must be bytes", raising=TypeError + ) + + if len(pk) != crypto_box_PUBLICKEYBYTES: + raise exc.ValueError("Invalid public key") + + if len(sk) != crypto_box_SECRETKEYBYTES: + raise exc.ValueError("Invalid secret key") + + _clen = len(ciphertext) + + ensure( + _clen >= crypto_box_SEALBYTES, + ("Input ciphertext must be at least {} long").format( + crypto_box_SEALBYTES + ), + raising=exc.TypeError, + ) + + _mlen = _clen - crypto_box_SEALBYTES + + # zero-length malloc results are implementation.dependent + plaintext = ffi.new("unsigned char[]", max(1, _mlen)) + + res = lib.crypto_box_seal_open(plaintext, ciphertext, _clen, pk, sk) + ensure( + res == 0, + "An error occurred trying to decrypt the message", + raising=exc.CryptoError, + ) + + return ffi.buffer(plaintext, _mlen)[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_core.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_core.py new file mode 100644 index 0000000..e64a064 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_core.py @@ -0,0 +1,449 @@ +# Copyright 2018 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +has_crypto_core_ed25519 = bool(lib.PYNACL_HAS_CRYPTO_CORE_ED25519) + +crypto_core_ed25519_BYTES = 0 +crypto_core_ed25519_SCALARBYTES = 0 +crypto_core_ed25519_NONREDUCEDSCALARBYTES = 0 + +if has_crypto_core_ed25519: + crypto_core_ed25519_BYTES = lib.crypto_core_ed25519_bytes() + crypto_core_ed25519_SCALARBYTES = lib.crypto_core_ed25519_scalarbytes() + crypto_core_ed25519_NONREDUCEDSCALARBYTES = ( + lib.crypto_core_ed25519_nonreducedscalarbytes() + ) + + +def crypto_core_ed25519_is_valid_point(p: bytes) -> bool: + """ + Check if ``p`` represents a point on the edwards25519 curve, in canonical + form, on the main subgroup, and that the point doesn't have a small order. + + :param p: a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence + representing a point on the edwards25519 curve + :type p: bytes + :return: point validity + :rtype: bool + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(p, bytes) and len(p) == crypto_core_ed25519_BYTES, + "Point must be a crypto_core_ed25519_BYTES long bytes sequence", + raising=exc.TypeError, + ) + + rc = lib.crypto_core_ed25519_is_valid_point(p) + return rc == 1 + + +def crypto_core_ed25519_from_uniform(r: bytes) -> bytes: + """ + Maps a 32 bytes vector ``r`` to a point. The point is guaranteed to be on the main subgroup. + This function directly exposes the Elligator 2 map, uses the high bit to set + the sign of the X coordinate, and the resulting point is multiplied by the cofactor. + + :param r: a :py:data:`.crypto_core_ed25519_BYTES` long bytes + sequence representing arbitrary data + :type r: bytes + :return: a point on the edwards25519 curve main order subgroup, represented as a + :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(r, bytes) and len(r) == crypto_core_ed25519_BYTES, + "Integer r must be a {} long bytes sequence".format( + "crypto_core_ed25519_BYTES" + ), + raising=exc.TypeError, + ) + + p = ffi.new("unsigned char[]", crypto_core_ed25519_BYTES) + + rc = lib.crypto_core_ed25519_from_uniform(p, r) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(p, crypto_core_ed25519_BYTES)[:] + + +def crypto_core_ed25519_add(p: bytes, q: bytes) -> bytes: + """ + Add two points on the edwards25519 curve. + + :param p: a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence + representing a point on the edwards25519 curve + :type p: bytes + :param q: a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence + representing a point on the edwards25519 curve + :type q: bytes + :return: a point on the edwards25519 curve represented as + a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(p, bytes) + and isinstance(q, bytes) + and len(p) == crypto_core_ed25519_BYTES + and len(q) == crypto_core_ed25519_BYTES, + "Each point must be a {} long bytes sequence".format( + "crypto_core_ed25519_BYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_BYTES) + + rc = lib.crypto_core_ed25519_add(r, p, q) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(r, crypto_core_ed25519_BYTES)[:] + + +def crypto_core_ed25519_sub(p: bytes, q: bytes) -> bytes: + """ + Subtract a point from another on the edwards25519 curve. + + :param p: a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence + representing a point on the edwards25519 curve + :type p: bytes + :param q: a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence + representing a point on the edwards25519 curve + :type q: bytes + :return: a point on the edwards25519 curve represented as + a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(p, bytes) + and isinstance(q, bytes) + and len(p) == crypto_core_ed25519_BYTES + and len(q) == crypto_core_ed25519_BYTES, + "Each point must be a {} long bytes sequence".format( + "crypto_core_ed25519_BYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_BYTES) + + rc = lib.crypto_core_ed25519_sub(r, p, q) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(r, crypto_core_ed25519_BYTES)[:] + + +def crypto_core_ed25519_scalar_invert(s: bytes) -> bytes: + """ + Return the multiplicative inverse of integer ``s`` modulo ``L``, + i.e an integer ``i`` such that ``s * i = 1 (mod L)``, where ``L`` + is the order of the main subgroup. + + Raises a ``exc.RuntimeError`` if ``s`` is the integer zero. + + :param s: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type s: bytes + :return: an integer represented as a + :py:data:`.crypto_core_ed25519_SCALARBYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(s, bytes) and len(s) == crypto_core_ed25519_SCALARBYTES, + "Integer s must be a {} long bytes sequence".format( + "crypto_core_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_SCALARBYTES) + + rc = lib.crypto_core_ed25519_scalar_invert(r, s) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(r, crypto_core_ed25519_SCALARBYTES)[:] + + +def crypto_core_ed25519_scalar_negate(s: bytes) -> bytes: + """ + Return the integer ``n`` such that ``s + n = 0 (mod L)``, where ``L`` + is the order of the main subgroup. + + :param s: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type s: bytes + :return: an integer represented as a + :py:data:`.crypto_core_ed25519_SCALARBYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(s, bytes) and len(s) == crypto_core_ed25519_SCALARBYTES, + "Integer s must be a {} long bytes sequence".format( + "crypto_core_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_SCALARBYTES) + + lib.crypto_core_ed25519_scalar_negate(r, s) + + return ffi.buffer(r, crypto_core_ed25519_SCALARBYTES)[:] + + +def crypto_core_ed25519_scalar_complement(s: bytes) -> bytes: + """ + Return the complement of integer ``s`` modulo ``L``, i.e. an integer + ``c`` such that ``s + c = 1 (mod L)``, where ``L`` is the order of + the main subgroup. + + :param s: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type s: bytes + :return: an integer represented as a + :py:data:`.crypto_core_ed25519_SCALARBYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(s, bytes) and len(s) == crypto_core_ed25519_SCALARBYTES, + "Integer s must be a {} long bytes sequence".format( + "crypto_core_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_SCALARBYTES) + + lib.crypto_core_ed25519_scalar_complement(r, s) + + return ffi.buffer(r, crypto_core_ed25519_SCALARBYTES)[:] + + +def crypto_core_ed25519_scalar_add(p: bytes, q: bytes) -> bytes: + """ + Add integers ``p`` and ``q`` modulo ``L``, where ``L`` is the order of + the main subgroup. + + :param p: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type p: bytes + :param q: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type q: bytes + :return: an integer represented as a + :py:data:`.crypto_core_ed25519_SCALARBYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(p, bytes) + and isinstance(q, bytes) + and len(p) == crypto_core_ed25519_SCALARBYTES + and len(q) == crypto_core_ed25519_SCALARBYTES, + "Each integer must be a {} long bytes sequence".format( + "crypto_core_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_SCALARBYTES) + + lib.crypto_core_ed25519_scalar_add(r, p, q) + + return ffi.buffer(r, crypto_core_ed25519_SCALARBYTES)[:] + + +def crypto_core_ed25519_scalar_sub(p: bytes, q: bytes) -> bytes: + """ + Subtract integers ``p`` and ``q`` modulo ``L``, where ``L`` is the + order of the main subgroup. + + :param p: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type p: bytes + :param q: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type q: bytes + :return: an integer represented as a + :py:data:`.crypto_core_ed25519_SCALARBYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(p, bytes) + and isinstance(q, bytes) + and len(p) == crypto_core_ed25519_SCALARBYTES + and len(q) == crypto_core_ed25519_SCALARBYTES, + "Each integer must be a {} long bytes sequence".format( + "crypto_core_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_SCALARBYTES) + + lib.crypto_core_ed25519_scalar_sub(r, p, q) + + return ffi.buffer(r, crypto_core_ed25519_SCALARBYTES)[:] + + +def crypto_core_ed25519_scalar_mul(p: bytes, q: bytes) -> bytes: + """ + Multiply integers ``p`` and ``q`` modulo ``L``, where ``L`` is the + order of the main subgroup. + + :param p: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type p: bytes + :param q: a :py:data:`.crypto_core_ed25519_SCALARBYTES` + long bytes sequence representing an integer + :type q: bytes + :return: an integer represented as a + :py:data:`.crypto_core_ed25519_SCALARBYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(p, bytes) + and isinstance(q, bytes) + and len(p) == crypto_core_ed25519_SCALARBYTES + and len(q) == crypto_core_ed25519_SCALARBYTES, + "Each integer must be a {} long bytes sequence".format( + "crypto_core_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_SCALARBYTES) + + lib.crypto_core_ed25519_scalar_mul(r, p, q) + + return ffi.buffer(r, crypto_core_ed25519_SCALARBYTES)[:] + + +def crypto_core_ed25519_scalar_reduce(s: bytes) -> bytes: + """ + Reduce integer ``s`` to ``s`` modulo ``L``, where ``L`` is the order + of the main subgroup. + + :param s: a :py:data:`.crypto_core_ed25519_NONREDUCEDSCALARBYTES` + long bytes sequence representing an integer + :type s: bytes + :return: an integer represented as a + :py:data:`.crypto_core_ed25519_SCALARBYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_core_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(s, bytes) + and len(s) == crypto_core_ed25519_NONREDUCEDSCALARBYTES, + "Integer s must be a {} long bytes sequence".format( + "crypto_core_ed25519_NONREDUCEDSCALARBYTES" + ), + raising=exc.TypeError, + ) + + r = ffi.new("unsigned char[]", crypto_core_ed25519_SCALARBYTES) + + lib.crypto_core_ed25519_scalar_reduce(r, s) + + return ffi.buffer(r, crypto_core_ed25519_SCALARBYTES)[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_generichash.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_generichash.py new file mode 100644 index 0000000..6ab385a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_generichash.py @@ -0,0 +1,281 @@ +# Copyright 2013-2019 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import NoReturn, TypeVar + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +crypto_generichash_BYTES: int = lib.crypto_generichash_blake2b_bytes() +crypto_generichash_BYTES_MIN: int = lib.crypto_generichash_blake2b_bytes_min() +crypto_generichash_BYTES_MAX: int = lib.crypto_generichash_blake2b_bytes_max() +crypto_generichash_KEYBYTES: int = lib.crypto_generichash_blake2b_keybytes() +crypto_generichash_KEYBYTES_MIN: int = ( + lib.crypto_generichash_blake2b_keybytes_min() +) +crypto_generichash_KEYBYTES_MAX: int = ( + lib.crypto_generichash_blake2b_keybytes_max() +) +crypto_generichash_SALTBYTES: int = lib.crypto_generichash_blake2b_saltbytes() +crypto_generichash_PERSONALBYTES: int = ( + lib.crypto_generichash_blake2b_personalbytes() +) +crypto_generichash_STATEBYTES: int = lib.crypto_generichash_statebytes() + +_OVERLONG = "{0} length greater than {1} bytes" +_TOOBIG = "{0} greater than {1}" + + +def _checkparams( + digest_size: int, key: bytes, salt: bytes, person: bytes +) -> None: + """Check hash parameters""" + ensure( + isinstance(key, bytes), + "Key must be a bytes sequence", + raising=exc.TypeError, + ) + + ensure( + isinstance(salt, bytes), + "Salt must be a bytes sequence", + raising=exc.TypeError, + ) + + ensure( + isinstance(person, bytes), + "Person must be a bytes sequence", + raising=exc.TypeError, + ) + + ensure( + isinstance(digest_size, int), + "Digest size must be an integer number", + raising=exc.TypeError, + ) + + ensure( + digest_size <= crypto_generichash_BYTES_MAX, + _TOOBIG.format("Digest_size", crypto_generichash_BYTES_MAX), + raising=exc.ValueError, + ) + + ensure( + len(key) <= crypto_generichash_KEYBYTES_MAX, + _OVERLONG.format("Key", crypto_generichash_KEYBYTES_MAX), + raising=exc.ValueError, + ) + + ensure( + len(salt) <= crypto_generichash_SALTBYTES, + _OVERLONG.format("Salt", crypto_generichash_SALTBYTES), + raising=exc.ValueError, + ) + + ensure( + len(person) <= crypto_generichash_PERSONALBYTES, + _OVERLONG.format("Person", crypto_generichash_PERSONALBYTES), + raising=exc.ValueError, + ) + + +def generichash_blake2b_salt_personal( + data: bytes, + digest_size: int = crypto_generichash_BYTES, + key: bytes = b"", + salt: bytes = b"", + person: bytes = b"", +) -> bytes: + """One shot hash interface + + :param data: the input data to the hash function + :type data: bytes + :param digest_size: must be at most + :py:data:`.crypto_generichash_BYTES_MAX`; + the default digest size is + :py:data:`.crypto_generichash_BYTES` + :type digest_size: int + :param key: must be at most + :py:data:`.crypto_generichash_KEYBYTES_MAX` long + :type key: bytes + :param salt: must be at most + :py:data:`.crypto_generichash_SALTBYTES` long; + will be zero-padded if needed + :type salt: bytes + :param person: must be at most + :py:data:`.crypto_generichash_PERSONALBYTES` long: + will be zero-padded if needed + :type person: bytes + :return: digest_size long digest + :rtype: bytes + """ + + _checkparams(digest_size, key, salt, person) + + ensure( + isinstance(data, bytes), + "Input data must be a bytes sequence", + raising=exc.TypeError, + ) + + digest = ffi.new("unsigned char[]", digest_size) + + # both _salt and _personal must be zero-padded to the correct length + _salt = ffi.new("unsigned char []", crypto_generichash_SALTBYTES) + _person = ffi.new("unsigned char []", crypto_generichash_PERSONALBYTES) + + ffi.memmove(_salt, salt, len(salt)) + ffi.memmove(_person, person, len(person)) + + rc = lib.crypto_generichash_blake2b_salt_personal( + digest, digest_size, data, len(data), key, len(key), _salt, _person + ) + ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError) + + return ffi.buffer(digest, digest_size)[:] + + +_Blake2State = TypeVar("_Blake2State", bound="Blake2State") + + +class Blake2State: + """ + Python-level wrapper for the crypto_generichash_blake2b state buffer + """ + + __slots__ = ["_statebuf", "digest_size"] + + def __init__(self, digest_size: int): + self._statebuf = ffi.new( + "unsigned char[]", crypto_generichash_STATEBYTES + ) + self.digest_size = digest_size + + def __reduce__(self) -> NoReturn: + """ + Raise the same exception as hashlib's blake implementation + on copy.copy() + """ + raise TypeError( + "can't pickle {} objects".format(self.__class__.__name__) + ) + + def copy(self: _Blake2State) -> _Blake2State: + _st = self.__class__(self.digest_size) + ffi.memmove( + _st._statebuf, self._statebuf, crypto_generichash_STATEBYTES + ) + return _st + + +def generichash_blake2b_init( + key: bytes = b"", + salt: bytes = b"", + person: bytes = b"", + digest_size: int = crypto_generichash_BYTES, +) -> Blake2State: + """ + Create a new initialized blake2b hash state + + :param key: must be at most + :py:data:`.crypto_generichash_KEYBYTES_MAX` long + :type key: bytes + :param salt: must be at most + :py:data:`.crypto_generichash_SALTBYTES` long; + will be zero-padded if needed + :type salt: bytes + :param person: must be at most + :py:data:`.crypto_generichash_PERSONALBYTES` long: + will be zero-padded if needed + :type person: bytes + :param digest_size: must be at most + :py:data:`.crypto_generichash_BYTES_MAX`; + the default digest size is + :py:data:`.crypto_generichash_BYTES` + :type digest_size: int + :return: a initialized :py:class:`.Blake2State` + :rtype: object + """ + + _checkparams(digest_size, key, salt, person) + + state = Blake2State(digest_size) + + # both _salt and _personal must be zero-padded to the correct length + _salt = ffi.new("unsigned char []", crypto_generichash_SALTBYTES) + _person = ffi.new("unsigned char []", crypto_generichash_PERSONALBYTES) + + ffi.memmove(_salt, salt, len(salt)) + ffi.memmove(_person, person, len(person)) + + rc = lib.crypto_generichash_blake2b_init_salt_personal( + state._statebuf, key, len(key), digest_size, _salt, _person + ) + ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError) + + return state + + +def generichash_blake2b_update(state: Blake2State, data: bytes) -> None: + """Update the blake2b hash state + + :param state: a initialized Blake2bState object as returned from + :py:func:`.crypto_generichash_blake2b_init` + :type state: :py:class:`.Blake2State` + :param data: + :type data: bytes + """ + + ensure( + isinstance(state, Blake2State), + "State must be a Blake2State object", + raising=exc.TypeError, + ) + + ensure( + isinstance(data, bytes), + "Input data must be a bytes sequence", + raising=exc.TypeError, + ) + + rc = lib.crypto_generichash_blake2b_update( + state._statebuf, data, len(data) + ) + ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError) + + +def generichash_blake2b_final(state: Blake2State) -> bytes: + """Finalize the blake2b hash state and return the digest. + + :param state: a initialized Blake2bState object as returned from + :py:func:`.crypto_generichash_blake2b_init` + :type state: :py:class:`.Blake2State` + :return: the blake2 digest of the passed-in data stream + :rtype: bytes + """ + + ensure( + isinstance(state, Blake2State), + "State must be a Blake2State object", + raising=exc.TypeError, + ) + + _digest = ffi.new("unsigned char[]", crypto_generichash_BYTES_MAX) + rc = lib.crypto_generichash_blake2b_final( + state._statebuf, _digest, state.digest_size + ) + + ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError) + return ffi.buffer(_digest, state.digest_size)[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_hash.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_hash.py new file mode 100644 index 0000000..2bab399 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_hash.py @@ -0,0 +1,63 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +# crypto_hash_BYTES = lib.crypto_hash_bytes() +crypto_hash_BYTES: int = lib.crypto_hash_sha512_bytes() +crypto_hash_sha256_BYTES: int = lib.crypto_hash_sha256_bytes() +crypto_hash_sha512_BYTES: int = lib.crypto_hash_sha512_bytes() + + +def crypto_hash(message: bytes) -> bytes: + """ + Hashes and returns the message ``message``. + + :param message: bytes + :rtype: bytes + """ + digest = ffi.new("unsigned char[]", crypto_hash_BYTES) + rc = lib.crypto_hash(digest, message, len(message)) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + return ffi.buffer(digest, crypto_hash_BYTES)[:] + + +def crypto_hash_sha256(message: bytes) -> bytes: + """ + Hashes and returns the message ``message``. + + :param message: bytes + :rtype: bytes + """ + digest = ffi.new("unsigned char[]", crypto_hash_sha256_BYTES) + rc = lib.crypto_hash_sha256(digest, message, len(message)) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + return ffi.buffer(digest, crypto_hash_sha256_BYTES)[:] + + +def crypto_hash_sha512(message: bytes) -> bytes: + """ + Hashes and returns the message ``message``. + + :param message: bytes + :rtype: bytes + """ + digest = ffi.new("unsigned char[]", crypto_hash_sha512_BYTES) + rc = lib.crypto_hash_sha512(digest, message, len(message)) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + return ffi.buffer(digest, crypto_hash_sha512_BYTES)[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_kx.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_kx.py new file mode 100644 index 0000000..3c649e4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_kx.py @@ -0,0 +1,200 @@ +# Copyright 2018 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Tuple + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + +__all__ = [ + "crypto_kx_keypair", + "crypto_kx_client_session_keys", + "crypto_kx_server_session_keys", + "crypto_kx_PUBLIC_KEY_BYTES", + "crypto_kx_SECRET_KEY_BYTES", + "crypto_kx_SEED_BYTES", + "crypto_kx_SESSION_KEY_BYTES", +] + +""" +Implementations of client, server key exchange +""" +crypto_kx_PUBLIC_KEY_BYTES: int = lib.crypto_kx_publickeybytes() +crypto_kx_SECRET_KEY_BYTES: int = lib.crypto_kx_secretkeybytes() +crypto_kx_SEED_BYTES: int = lib.crypto_kx_seedbytes() +crypto_kx_SESSION_KEY_BYTES: int = lib.crypto_kx_sessionkeybytes() + + +def crypto_kx_keypair() -> Tuple[bytes, bytes]: + """ + Generate a key pair. + This is a duplicate crypto_box_keypair, but + is included for api consistency. + :return: (public_key, secret_key) + :rtype: (bytes, bytes) + """ + public_key = ffi.new("unsigned char[]", crypto_kx_PUBLIC_KEY_BYTES) + secret_key = ffi.new("unsigned char[]", crypto_kx_SECRET_KEY_BYTES) + res = lib.crypto_kx_keypair(public_key, secret_key) + ensure(res == 0, "Key generation failed.", raising=exc.CryptoError) + + return ( + ffi.buffer(public_key, crypto_kx_PUBLIC_KEY_BYTES)[:], + ffi.buffer(secret_key, crypto_kx_SECRET_KEY_BYTES)[:], + ) + + +def crypto_kx_seed_keypair(seed: bytes) -> Tuple[bytes, bytes]: + """ + Generate a key pair with a given seed. + This is functionally the same as crypto_box_seed_keypair, however + it uses the blake2b hash primitive instead of sha512. + It is included mainly for api consistency when using crypto_kx. + :param seed: random seed + :type seed: bytes + :return: (public_key, secret_key) + :rtype: (bytes, bytes) + """ + public_key = ffi.new("unsigned char[]", crypto_kx_PUBLIC_KEY_BYTES) + secret_key = ffi.new("unsigned char[]", crypto_kx_SECRET_KEY_BYTES) + ensure( + isinstance(seed, bytes) and len(seed) == crypto_kx_SEED_BYTES, + "Seed must be a {} byte long bytes sequence".format( + crypto_kx_SEED_BYTES + ), + raising=exc.TypeError, + ) + res = lib.crypto_kx_seed_keypair(public_key, secret_key, seed) + ensure(res == 0, "Key generation failed.", raising=exc.CryptoError) + + return ( + ffi.buffer(public_key, crypto_kx_PUBLIC_KEY_BYTES)[:], + ffi.buffer(secret_key, crypto_kx_SECRET_KEY_BYTES)[:], + ) + + +def crypto_kx_client_session_keys( + client_public_key: bytes, + client_secret_key: bytes, + server_public_key: bytes, +) -> Tuple[bytes, bytes]: + """ + Generate session keys for the client. + :param client_public_key: + :type client_public_key: bytes + :param client_secret_key: + :type client_secret_key: bytes + :param server_public_key: + :type server_public_key: bytes + :return: (rx_key, tx_key) + :rtype: (bytes, bytes) + """ + ensure( + isinstance(client_public_key, bytes) + and len(client_public_key) == crypto_kx_PUBLIC_KEY_BYTES, + "Client public key must be a {} bytes long bytes sequence".format( + crypto_kx_PUBLIC_KEY_BYTES + ), + raising=exc.TypeError, + ) + ensure( + isinstance(client_secret_key, bytes) + and len(client_secret_key) == crypto_kx_SECRET_KEY_BYTES, + "Client secret key must be a {} bytes long bytes sequence".format( + crypto_kx_PUBLIC_KEY_BYTES + ), + raising=exc.TypeError, + ) + ensure( + isinstance(server_public_key, bytes) + and len(server_public_key) == crypto_kx_PUBLIC_KEY_BYTES, + "Server public key must be a {} bytes long bytes sequence".format( + crypto_kx_PUBLIC_KEY_BYTES + ), + raising=exc.TypeError, + ) + + rx_key = ffi.new("unsigned char[]", crypto_kx_SESSION_KEY_BYTES) + tx_key = ffi.new("unsigned char[]", crypto_kx_SESSION_KEY_BYTES) + res = lib.crypto_kx_client_session_keys( + rx_key, tx_key, client_public_key, client_secret_key, server_public_key + ) + ensure( + res == 0, + "Client session key generation failed.", + raising=exc.CryptoError, + ) + + return ( + ffi.buffer(rx_key, crypto_kx_SESSION_KEY_BYTES)[:], + ffi.buffer(tx_key, crypto_kx_SESSION_KEY_BYTES)[:], + ) + + +def crypto_kx_server_session_keys( + server_public_key: bytes, + server_secret_key: bytes, + client_public_key: bytes, +) -> Tuple[bytes, bytes]: + """ + Generate session keys for the server. + :param server_public_key: + :type server_public_key: bytes + :param server_secret_key: + :type server_secret_key: bytes + :param client_public_key: + :type client_public_key: bytes + :return: (rx_key, tx_key) + :rtype: (bytes, bytes) + """ + ensure( + isinstance(server_public_key, bytes) + and len(server_public_key) == crypto_kx_PUBLIC_KEY_BYTES, + "Server public key must be a {} bytes long bytes sequence".format( + crypto_kx_PUBLIC_KEY_BYTES + ), + raising=exc.TypeError, + ) + ensure( + isinstance(server_secret_key, bytes) + and len(server_secret_key) == crypto_kx_SECRET_KEY_BYTES, + "Server secret key must be a {} bytes long bytes sequence".format( + crypto_kx_PUBLIC_KEY_BYTES + ), + raising=exc.TypeError, + ) + ensure( + isinstance(client_public_key, bytes) + and len(client_public_key) == crypto_kx_PUBLIC_KEY_BYTES, + "Client public key must be a {} bytes long bytes sequence".format( + crypto_kx_PUBLIC_KEY_BYTES + ), + raising=exc.TypeError, + ) + + rx_key = ffi.new("unsigned char[]", crypto_kx_SESSION_KEY_BYTES) + tx_key = ffi.new("unsigned char[]", crypto_kx_SESSION_KEY_BYTES) + res = lib.crypto_kx_server_session_keys( + rx_key, tx_key, server_public_key, server_secret_key, client_public_key + ) + ensure( + res == 0, + "Server session key generation failed.", + raising=exc.CryptoError, + ) + + return ( + ffi.buffer(rx_key, crypto_kx_SESSION_KEY_BYTES)[:], + ffi.buffer(tx_key, crypto_kx_SESSION_KEY_BYTES)[:], + ) diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_pwhash.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_pwhash.py new file mode 100644 index 0000000..7f62360 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_pwhash.py @@ -0,0 +1,599 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from typing import Tuple + +import nacl.exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +has_crypto_pwhash_scryptsalsa208sha256 = bool( + lib.PYNACL_HAS_CRYPTO_PWHASH_SCRYPTSALSA208SHA256 +) + +crypto_pwhash_scryptsalsa208sha256_STRPREFIX = b"" +crypto_pwhash_scryptsalsa208sha256_SALTBYTES = 0 +crypto_pwhash_scryptsalsa208sha256_STRBYTES = 0 +crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN = 0 +crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX = 0 +crypto_pwhash_scryptsalsa208sha256_BYTES_MIN = 0 +crypto_pwhash_scryptsalsa208sha256_BYTES_MAX = 0 +crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN = 0 +crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX = 0 +crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN = 0 +crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX = 0 +crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE = 0 +crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE = 0 +crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE = 0 +crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE = 0 + +if has_crypto_pwhash_scryptsalsa208sha256: + crypto_pwhash_scryptsalsa208sha256_STRPREFIX = ffi.string( + ffi.cast("char *", lib.crypto_pwhash_scryptsalsa208sha256_strprefix()) + )[:] + crypto_pwhash_scryptsalsa208sha256_SALTBYTES = ( + lib.crypto_pwhash_scryptsalsa208sha256_saltbytes() + ) + crypto_pwhash_scryptsalsa208sha256_STRBYTES = ( + lib.crypto_pwhash_scryptsalsa208sha256_strbytes() + ) + crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN = ( + lib.crypto_pwhash_scryptsalsa208sha256_passwd_min() + ) + crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX = ( + lib.crypto_pwhash_scryptsalsa208sha256_passwd_max() + ) + crypto_pwhash_scryptsalsa208sha256_BYTES_MIN = ( + lib.crypto_pwhash_scryptsalsa208sha256_bytes_min() + ) + crypto_pwhash_scryptsalsa208sha256_BYTES_MAX = ( + lib.crypto_pwhash_scryptsalsa208sha256_bytes_max() + ) + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN = ( + lib.crypto_pwhash_scryptsalsa208sha256_memlimit_min() + ) + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX = ( + lib.crypto_pwhash_scryptsalsa208sha256_memlimit_max() + ) + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN = ( + lib.crypto_pwhash_scryptsalsa208sha256_opslimit_min() + ) + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX = ( + lib.crypto_pwhash_scryptsalsa208sha256_opslimit_max() + ) + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE = ( + lib.crypto_pwhash_scryptsalsa208sha256_opslimit_interactive() + ) + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE = ( + lib.crypto_pwhash_scryptsalsa208sha256_memlimit_interactive() + ) + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE = ( + lib.crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive() + ) + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE = ( + lib.crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive() + ) + +crypto_pwhash_ALG_ARGON2I13: int = lib.crypto_pwhash_alg_argon2i13() +crypto_pwhash_ALG_ARGON2ID13: int = lib.crypto_pwhash_alg_argon2id13() +crypto_pwhash_ALG_DEFAULT: int = lib.crypto_pwhash_alg_default() + +crypto_pwhash_SALTBYTES: int = lib.crypto_pwhash_saltbytes() +crypto_pwhash_STRBYTES: int = lib.crypto_pwhash_strbytes() + +crypto_pwhash_PASSWD_MIN: int = lib.crypto_pwhash_passwd_min() +crypto_pwhash_PASSWD_MAX: int = lib.crypto_pwhash_passwd_max() +crypto_pwhash_BYTES_MIN: int = lib.crypto_pwhash_bytes_min() +crypto_pwhash_BYTES_MAX: int = lib.crypto_pwhash_bytes_max() + +crypto_pwhash_argon2i_STRPREFIX: bytes = ffi.string( + ffi.cast("char *", lib.crypto_pwhash_argon2i_strprefix()) +)[:] +crypto_pwhash_argon2i_MEMLIMIT_MIN: int = ( + lib.crypto_pwhash_argon2i_memlimit_min() +) +crypto_pwhash_argon2i_MEMLIMIT_MAX: int = ( + lib.crypto_pwhash_argon2i_memlimit_max() +) +crypto_pwhash_argon2i_OPSLIMIT_MIN: int = ( + lib.crypto_pwhash_argon2i_opslimit_min() +) +crypto_pwhash_argon2i_OPSLIMIT_MAX: int = ( + lib.crypto_pwhash_argon2i_opslimit_max() +) +crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE: int = ( + lib.crypto_pwhash_argon2i_opslimit_interactive() +) +crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE: int = ( + lib.crypto_pwhash_argon2i_memlimit_interactive() +) +crypto_pwhash_argon2i_OPSLIMIT_MODERATE: int = ( + lib.crypto_pwhash_argon2i_opslimit_moderate() +) +crypto_pwhash_argon2i_MEMLIMIT_MODERATE: int = ( + lib.crypto_pwhash_argon2i_memlimit_moderate() +) +crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE: int = ( + lib.crypto_pwhash_argon2i_opslimit_sensitive() +) +crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE: int = ( + lib.crypto_pwhash_argon2i_memlimit_sensitive() +) + +crypto_pwhash_argon2id_STRPREFIX: bytes = ffi.string( + ffi.cast("char *", lib.crypto_pwhash_argon2id_strprefix()) +)[:] +crypto_pwhash_argon2id_MEMLIMIT_MIN: int = ( + lib.crypto_pwhash_argon2id_memlimit_min() +) +crypto_pwhash_argon2id_MEMLIMIT_MAX: int = ( + lib.crypto_pwhash_argon2id_memlimit_max() +) +crypto_pwhash_argon2id_OPSLIMIT_MIN: int = ( + lib.crypto_pwhash_argon2id_opslimit_min() +) +crypto_pwhash_argon2id_OPSLIMIT_MAX: int = ( + lib.crypto_pwhash_argon2id_opslimit_max() +) +crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE: int = ( + lib.crypto_pwhash_argon2id_opslimit_interactive() +) +crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE: int = ( + lib.crypto_pwhash_argon2id_memlimit_interactive() +) +crypto_pwhash_argon2id_OPSLIMIT_MODERATE: int = ( + lib.crypto_pwhash_argon2id_opslimit_moderate() +) +crypto_pwhash_argon2id_MEMLIMIT_MODERATE: int = ( + lib.crypto_pwhash_argon2id_memlimit_moderate() +) +crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE: int = ( + lib.crypto_pwhash_argon2id_opslimit_sensitive() +) +crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE: int = ( + lib.crypto_pwhash_argon2id_memlimit_sensitive() +) + +SCRYPT_OPSLIMIT_INTERACTIVE = ( + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE +) +SCRYPT_MEMLIMIT_INTERACTIVE = ( + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE +) +SCRYPT_OPSLIMIT_SENSITIVE = ( + crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE +) +SCRYPT_MEMLIMIT_SENSITIVE = ( + crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE +) +SCRYPT_SALTBYTES = crypto_pwhash_scryptsalsa208sha256_SALTBYTES +SCRYPT_STRBYTES = crypto_pwhash_scryptsalsa208sha256_STRBYTES + +SCRYPT_PR_MAX = (1 << 30) - 1 +LOG2_UINT64_MAX = 63 +UINT64_MAX = (1 << 64) - 1 +SCRYPT_MAX_MEM = 32 * (1024 * 1024) + + +def _check_memory_occupation( + n: int, r: int, p: int, maxmem: int = SCRYPT_MAX_MEM +) -> None: + ensure(r != 0, "Invalid block size", raising=exc.ValueError) + + ensure(p != 0, "Invalid parallelization factor", raising=exc.ValueError) + + ensure( + (n & (n - 1)) == 0, + "Cost factor must be a power of 2", + raising=exc.ValueError, + ) + + ensure(n > 1, "Cost factor must be at least 2", raising=exc.ValueError) + + ensure( + p <= SCRYPT_PR_MAX / r, + "p*r is greater than {}".format(SCRYPT_PR_MAX), + raising=exc.ValueError, + ) + + ensure(n < (1 << (16 * r)), raising=exc.ValueError) + + Blen = p * 128 * r + + i = UINT64_MAX / 128 + + ensure(n + 2 <= i / r, raising=exc.ValueError) + + Vlen = 32 * r * (n + 2) * 4 + + ensure(Blen <= UINT64_MAX - Vlen, raising=exc.ValueError) + + ensure(Blen <= sys.maxsize - Vlen, raising=exc.ValueError) + + ensure( + Blen + Vlen <= maxmem, + "Memory limit would be exceeded with the chosen n, r, p", + raising=exc.ValueError, + ) + + +def nacl_bindings_pick_scrypt_params( + opslimit: int, memlimit: int +) -> Tuple[int, int, int]: + """Python implementation of libsodium's pickparams""" + + if opslimit < 32768: + opslimit = 32768 + + r = 8 + + if opslimit < (memlimit // 32): + p = 1 + maxn = opslimit // (4 * r) + for n_log2 in range(1, 63): # pragma: no branch + if (2**n_log2) > (maxn // 2): + break + else: + maxn = memlimit // (r * 128) + for n_log2 in range(1, 63): # pragma: no branch + if (2**n_log2) > maxn // 2: + break + + maxrp = (opslimit // 4) // (2**n_log2) + + if maxrp > 0x3FFFFFFF: # pragma: no cover + maxrp = 0x3FFFFFFF + + p = maxrp // r + + return n_log2, r, p + + +def crypto_pwhash_scryptsalsa208sha256_ll( + passwd: bytes, + salt: bytes, + n: int, + r: int, + p: int, + dklen: int = 64, + maxmem: int = SCRYPT_MAX_MEM, +) -> bytes: + """ + Derive a cryptographic key using the ``passwd`` and ``salt`` + given as input. + + The work factor can be tuned by by picking different + values for the parameters + + :param bytes passwd: + :param bytes salt: + :param bytes salt: *must* be *exactly* :py:const:`.SALTBYTES` long + :param int dklen: + :param int opslimit: + :param int n: + :param int r: block size, + :param int p: the parallelism factor + :param int maxmem: the maximum available memory available for scrypt's + operations + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_pwhash_scryptsalsa208sha256, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure(isinstance(n, int), raising=TypeError) + ensure(isinstance(r, int), raising=TypeError) + ensure(isinstance(p, int), raising=TypeError) + + ensure(isinstance(passwd, bytes), raising=TypeError) + ensure(isinstance(salt, bytes), raising=TypeError) + + _check_memory_occupation(n, r, p, maxmem) + + buf = ffi.new("uint8_t[]", dklen) + + ret = lib.crypto_pwhash_scryptsalsa208sha256_ll( + passwd, len(passwd), salt, len(salt), n, r, p, buf, dklen + ) + + ensure( + ret == 0, + "Unexpected failure in key derivation", + raising=exc.RuntimeError, + ) + + return ffi.buffer(ffi.cast("char *", buf), dklen)[:] + + +def crypto_pwhash_scryptsalsa208sha256_str( + passwd: bytes, + opslimit: int = SCRYPT_OPSLIMIT_INTERACTIVE, + memlimit: int = SCRYPT_MEMLIMIT_INTERACTIVE, +) -> bytes: + """ + Derive a cryptographic key using the ``passwd`` and ``salt`` + given as input, returning a string representation which includes + the salt and the tuning parameters. + + The returned string can be directly stored as a password hash. + + See :py:func:`.crypto_pwhash_scryptsalsa208sha256` for a short + discussion about ``opslimit`` and ``memlimit`` values. + + :param bytes passwd: + :param int opslimit: + :param int memlimit: + :return: serialized key hash, including salt and tuning parameters + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_pwhash_scryptsalsa208sha256, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + buf = ffi.new("char[]", SCRYPT_STRBYTES) + + ret = lib.crypto_pwhash_scryptsalsa208sha256_str( + buf, passwd, len(passwd), opslimit, memlimit + ) + + ensure( + ret == 0, + "Unexpected failure in password hashing", + raising=exc.RuntimeError, + ) + + return ffi.string(buf) + + +def crypto_pwhash_scryptsalsa208sha256_str_verify( + passwd_hash: bytes, passwd: bytes +) -> bool: + """ + Verifies the ``passwd`` against the ``passwd_hash`` that was generated. + Returns True or False depending on the success + + :param passwd_hash: bytes + :param passwd: bytes + :rtype: boolean + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_pwhash_scryptsalsa208sha256, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + len(passwd_hash) == SCRYPT_STRBYTES - 1, + "Invalid password hash", + raising=exc.ValueError, + ) + + ret = lib.crypto_pwhash_scryptsalsa208sha256_str_verify( + passwd_hash, passwd, len(passwd) + ) + ensure(ret == 0, "Wrong password", raising=exc.InvalidkeyError) + # all went well, therefore: + return True + + +def _check_argon2_limits_alg(opslimit: int, memlimit: int, alg: int) -> None: + if alg == crypto_pwhash_ALG_ARGON2I13: + if memlimit < crypto_pwhash_argon2i_MEMLIMIT_MIN: + raise exc.ValueError( + "memlimit must be at least {} bytes".format( + crypto_pwhash_argon2i_MEMLIMIT_MIN + ) + ) + elif memlimit > crypto_pwhash_argon2i_MEMLIMIT_MAX: + raise exc.ValueError( + "memlimit must be at most {} bytes".format( + crypto_pwhash_argon2i_MEMLIMIT_MAX + ) + ) + if opslimit < crypto_pwhash_argon2i_OPSLIMIT_MIN: + raise exc.ValueError( + "opslimit must be at least {}".format( + crypto_pwhash_argon2i_OPSLIMIT_MIN + ) + ) + elif opslimit > crypto_pwhash_argon2i_OPSLIMIT_MAX: + raise exc.ValueError( + "opslimit must be at most {}".format( + crypto_pwhash_argon2i_OPSLIMIT_MAX + ) + ) + + elif alg == crypto_pwhash_ALG_ARGON2ID13: + if memlimit < crypto_pwhash_argon2id_MEMLIMIT_MIN: + raise exc.ValueError( + "memlimit must be at least {} bytes".format( + crypto_pwhash_argon2id_MEMLIMIT_MIN + ) + ) + elif memlimit > crypto_pwhash_argon2id_MEMLIMIT_MAX: + raise exc.ValueError( + "memlimit must be at most {} bytes".format( + crypto_pwhash_argon2id_MEMLIMIT_MAX + ) + ) + if opslimit < crypto_pwhash_argon2id_OPSLIMIT_MIN: + raise exc.ValueError( + "opslimit must be at least {}".format( + crypto_pwhash_argon2id_OPSLIMIT_MIN + ) + ) + elif opslimit > crypto_pwhash_argon2id_OPSLIMIT_MAX: + raise exc.ValueError( + "opslimit must be at most {}".format( + crypto_pwhash_argon2id_OPSLIMIT_MAX + ) + ) + else: + raise exc.TypeError("Unsupported algorithm") + + +def crypto_pwhash_alg( + outlen: int, + passwd: bytes, + salt: bytes, + opslimit: int, + memlimit: int, + alg: int, +) -> bytes: + """ + Derive a raw cryptographic key using the ``passwd`` and the ``salt`` + given as input to the ``alg`` algorithm. + + :param outlen: the length of the derived key + :type outlen: int + :param passwd: The input password + :type passwd: bytes + :param salt: + :type salt: bytes + :param opslimit: computational cost + :type opslimit: int + :param memlimit: memory cost + :type memlimit: int + :param alg: algorithm identifier + :type alg: int + :return: derived key + :rtype: bytes + """ + ensure(isinstance(outlen, int), raising=exc.TypeError) + ensure(isinstance(opslimit, int), raising=exc.TypeError) + ensure(isinstance(memlimit, int), raising=exc.TypeError) + ensure(isinstance(alg, int), raising=exc.TypeError) + ensure(isinstance(passwd, bytes), raising=exc.TypeError) + + if len(salt) != crypto_pwhash_SALTBYTES: + raise exc.ValueError( + "salt must be exactly {} bytes long".format( + crypto_pwhash_SALTBYTES + ) + ) + + if outlen < crypto_pwhash_BYTES_MIN: + raise exc.ValueError( + "derived key must be at least {} bytes long".format( + crypto_pwhash_BYTES_MIN + ) + ) + + elif outlen > crypto_pwhash_BYTES_MAX: + raise exc.ValueError( + "derived key must be at most {} bytes long".format( + crypto_pwhash_BYTES_MAX + ) + ) + + _check_argon2_limits_alg(opslimit, memlimit, alg) + + outbuf = ffi.new("unsigned char[]", outlen) + + ret = lib.crypto_pwhash( + outbuf, outlen, passwd, len(passwd), salt, opslimit, memlimit, alg + ) + + ensure( + ret == 0, + "Unexpected failure in key derivation", + raising=exc.RuntimeError, + ) + + return ffi.buffer(outbuf, outlen)[:] + + +def crypto_pwhash_str_alg( + passwd: bytes, + opslimit: int, + memlimit: int, + alg: int, +) -> bytes: + """ + Derive a cryptographic key using the ``passwd`` given as input + and a random salt, returning a string representation which + includes the salt, the tuning parameters and the used algorithm. + + :param passwd: The input password + :type passwd: bytes + :param opslimit: computational cost + :type opslimit: int + :param memlimit: memory cost + :type memlimit: int + :param alg: The algorithm to use + :type alg: int + :return: serialized derived key and parameters + :rtype: bytes + """ + ensure(isinstance(opslimit, int), raising=TypeError) + ensure(isinstance(memlimit, int), raising=TypeError) + ensure(isinstance(passwd, bytes), raising=TypeError) + + _check_argon2_limits_alg(opslimit, memlimit, alg) + + outbuf = ffi.new("char[]", 128) + + ret = lib.crypto_pwhash_str_alg( + outbuf, passwd, len(passwd), opslimit, memlimit, alg + ) + + ensure( + ret == 0, + "Unexpected failure in key derivation", + raising=exc.RuntimeError, + ) + + return ffi.string(outbuf) + + +def crypto_pwhash_str_verify(passwd_hash: bytes, passwd: bytes) -> bool: + """ + Verifies the ``passwd`` against a given password hash. + + Returns True on success, raises InvalidkeyError on failure + :param passwd_hash: saved password hash + :type passwd_hash: bytes + :param passwd: password to be checked + :type passwd: bytes + :return: success + :rtype: boolean + """ + ensure(isinstance(passwd_hash, bytes), raising=TypeError) + ensure(isinstance(passwd, bytes), raising=TypeError) + ensure( + len(passwd_hash) <= 127, + "Hash must be at most 127 bytes long", + raising=exc.ValueError, + ) + + ret = lib.crypto_pwhash_str_verify(passwd_hash, passwd, len(passwd)) + + ensure(ret == 0, "Wrong password", raising=exc.InvalidkeyError) + # all went well, therefore: + return True + + +crypto_pwhash_argon2i_str_verify = crypto_pwhash_str_verify diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_scalarmult.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_scalarmult.py new file mode 100644 index 0000000..ca4a281 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_scalarmult.py @@ -0,0 +1,240 @@ +# Copyright 2013-2018 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +has_crypto_scalarmult_ed25519 = bool(lib.PYNACL_HAS_CRYPTO_SCALARMULT_ED25519) + +crypto_scalarmult_BYTES: int = lib.crypto_scalarmult_bytes() +crypto_scalarmult_SCALARBYTES: int = lib.crypto_scalarmult_scalarbytes() + +crypto_scalarmult_ed25519_BYTES = 0 +crypto_scalarmult_ed25519_SCALARBYTES = 0 + +if has_crypto_scalarmult_ed25519: + crypto_scalarmult_ed25519_BYTES = lib.crypto_scalarmult_ed25519_bytes() + crypto_scalarmult_ed25519_SCALARBYTES = ( + lib.crypto_scalarmult_ed25519_scalarbytes() + ) + + +def crypto_scalarmult_base(n: bytes) -> bytes: + """ + Computes and returns the scalar product of a standard group element and an + integer ``n``. + + :param n: bytes + :rtype: bytes + """ + q = ffi.new("unsigned char[]", crypto_scalarmult_BYTES) + + rc = lib.crypto_scalarmult_base(q, n) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(q, crypto_scalarmult_SCALARBYTES)[:] + + +def crypto_scalarmult(n: bytes, p: bytes) -> bytes: + """ + Computes and returns the scalar product of the given group element and an + integer ``n``. + + :param p: bytes + :param n: bytes + :rtype: bytes + """ + q = ffi.new("unsigned char[]", crypto_scalarmult_BYTES) + + rc = lib.crypto_scalarmult(q, n, p) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(q, crypto_scalarmult_SCALARBYTES)[:] + + +def crypto_scalarmult_ed25519_base(n: bytes) -> bytes: + """ + Computes and returns the scalar product of a standard group element and an + integer ``n`` on the edwards25519 curve. + + :param n: a :py:data:`.crypto_scalarmult_ed25519_SCALARBYTES` long bytes + sequence representing a scalar + :type n: bytes + :return: a point on the edwards25519 curve, represented as a + :py:data:`.crypto_scalarmult_ed25519_BYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_scalarmult_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(n, bytes) + and len(n) == crypto_scalarmult_ed25519_SCALARBYTES, + "Input must be a {} long bytes sequence".format( + "crypto_scalarmult_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + q = ffi.new("unsigned char[]", crypto_scalarmult_ed25519_BYTES) + + rc = lib.crypto_scalarmult_ed25519_base(q, n) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(q, crypto_scalarmult_ed25519_BYTES)[:] + + +def crypto_scalarmult_ed25519_base_noclamp(n: bytes) -> bytes: + """ + Computes and returns the scalar product of a standard group element and an + integer ``n`` on the edwards25519 curve. The integer ``n`` is not clamped. + + :param n: a :py:data:`.crypto_scalarmult_ed25519_SCALARBYTES` long bytes + sequence representing a scalar + :type n: bytes + :return: a point on the edwards25519 curve, represented as a + :py:data:`.crypto_scalarmult_ed25519_BYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_scalarmult_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(n, bytes) + and len(n) == crypto_scalarmult_ed25519_SCALARBYTES, + "Input must be a {} long bytes sequence".format( + "crypto_scalarmult_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + q = ffi.new("unsigned char[]", crypto_scalarmult_ed25519_BYTES) + + rc = lib.crypto_scalarmult_ed25519_base_noclamp(q, n) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(q, crypto_scalarmult_ed25519_BYTES)[:] + + +def crypto_scalarmult_ed25519(n: bytes, p: bytes) -> bytes: + """ + Computes and returns the scalar product of a *clamped* integer ``n`` + and the given group element on the edwards25519 curve. + The scalar is clamped, as done in the public key generation case, + by setting to zero the bits in position [0, 1, 2, 255] and setting + to one the bit in position 254. + + :param n: a :py:data:`.crypto_scalarmult_ed25519_SCALARBYTES` long bytes + sequence representing a scalar + :type n: bytes + :param p: a :py:data:`.crypto_scalarmult_ed25519_BYTES` long bytes sequence + representing a point on the edwards25519 curve + :type p: bytes + :return: a point on the edwards25519 curve, represented as a + :py:data:`.crypto_scalarmult_ed25519_BYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_scalarmult_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(n, bytes) + and len(n) == crypto_scalarmult_ed25519_SCALARBYTES, + "Input must be a {} long bytes sequence".format( + "crypto_scalarmult_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(p, bytes) and len(p) == crypto_scalarmult_ed25519_BYTES, + "Input must be a {} long bytes sequence".format( + "crypto_scalarmult_ed25519_BYTES" + ), + raising=exc.TypeError, + ) + + q = ffi.new("unsigned char[]", crypto_scalarmult_ed25519_BYTES) + + rc = lib.crypto_scalarmult_ed25519(q, n, p) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(q, crypto_scalarmult_ed25519_BYTES)[:] + + +def crypto_scalarmult_ed25519_noclamp(n: bytes, p: bytes) -> bytes: + """ + Computes and returns the scalar product of an integer ``n`` + and the given group element on the edwards25519 curve. The integer + ``n`` is not clamped. + + :param n: a :py:data:`.crypto_scalarmult_ed25519_SCALARBYTES` long bytes + sequence representing a scalar + :type n: bytes + :param p: a :py:data:`.crypto_scalarmult_ed25519_BYTES` long bytes sequence + representing a point on the edwards25519 curve + :type p: bytes + :return: a point on the edwards25519 curve, represented as a + :py:data:`.crypto_scalarmult_ed25519_BYTES` long bytes sequence + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_scalarmult_ed25519, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + isinstance(n, bytes) + and len(n) == crypto_scalarmult_ed25519_SCALARBYTES, + "Input must be a {} long bytes sequence".format( + "crypto_scalarmult_ed25519_SCALARBYTES" + ), + raising=exc.TypeError, + ) + + ensure( + isinstance(p, bytes) and len(p) == crypto_scalarmult_ed25519_BYTES, + "Input must be a {} long bytes sequence".format( + "crypto_scalarmult_ed25519_BYTES" + ), + raising=exc.TypeError, + ) + + q = ffi.new("unsigned char[]", crypto_scalarmult_ed25519_BYTES) + + rc = lib.crypto_scalarmult_ed25519_noclamp(q, n, p) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(q, crypto_scalarmult_ed25519_BYTES)[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_secretbox.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_secretbox.py new file mode 100644 index 0000000..d1ad113 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_secretbox.py @@ -0,0 +1,159 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +crypto_secretbox_KEYBYTES: int = lib.crypto_secretbox_keybytes() +crypto_secretbox_NONCEBYTES: int = lib.crypto_secretbox_noncebytes() +crypto_secretbox_ZEROBYTES: int = lib.crypto_secretbox_zerobytes() +crypto_secretbox_BOXZEROBYTES: int = lib.crypto_secretbox_boxzerobytes() +crypto_secretbox_MACBYTES: int = lib.crypto_secretbox_macbytes() +crypto_secretbox_MESSAGEBYTES_MAX: int = ( + lib.crypto_secretbox_messagebytes_max() +) + + +def crypto_secretbox(message: bytes, nonce: bytes, key: bytes) -> bytes: + """ + Encrypts and returns the message ``message`` with the secret ``key`` and + the nonce ``nonce``. + + :param message: bytes + :param nonce: bytes + :param key: bytes + :rtype: bytes + """ + if len(key) != crypto_secretbox_KEYBYTES: + raise exc.ValueError("Invalid key") + + if len(nonce) != crypto_secretbox_NONCEBYTES: + raise exc.ValueError("Invalid nonce") + + padded = b"\x00" * crypto_secretbox_ZEROBYTES + message + ciphertext = ffi.new("unsigned char[]", len(padded)) + + res = lib.crypto_secretbox(ciphertext, padded, len(padded), nonce, key) + ensure(res == 0, "Encryption failed", raising=exc.CryptoError) + + ciphertext = ffi.buffer(ciphertext, len(padded)) + return ciphertext[crypto_secretbox_BOXZEROBYTES:] + + +def crypto_secretbox_open( + ciphertext: bytes, nonce: bytes, key: bytes +) -> bytes: + """ + Decrypt and returns the encrypted message ``ciphertext`` with the secret + ``key`` and the nonce ``nonce``. + + :param ciphertext: bytes + :param nonce: bytes + :param key: bytes + :rtype: bytes + """ + if len(key) != crypto_secretbox_KEYBYTES: + raise exc.ValueError("Invalid key") + + if len(nonce) != crypto_secretbox_NONCEBYTES: + raise exc.ValueError("Invalid nonce") + + padded = b"\x00" * crypto_secretbox_BOXZEROBYTES + ciphertext + plaintext = ffi.new("unsigned char[]", len(padded)) + + res = lib.crypto_secretbox_open(plaintext, padded, len(padded), nonce, key) + ensure( + res == 0, + "Decryption failed. Ciphertext failed verification", + raising=exc.CryptoError, + ) + + plaintext = ffi.buffer(plaintext, len(padded)) + return plaintext[crypto_secretbox_ZEROBYTES:] + + +def crypto_secretbox_easy(message: bytes, nonce: bytes, key: bytes) -> bytes: + """ + Encrypts and returns the message ``message`` with the secret ``key`` and + the nonce ``nonce``. + + :param message: bytes + :param nonce: bytes + :param key: bytes + :rtype: bytes + """ + if len(key) != crypto_secretbox_KEYBYTES: + raise exc.ValueError("Invalid key") + + if len(nonce) != crypto_secretbox_NONCEBYTES: + raise exc.ValueError("Invalid nonce") + + _mlen = len(message) + _clen = crypto_secretbox_MACBYTES + _mlen + + ciphertext = ffi.new("unsigned char[]", _clen) + + res = lib.crypto_secretbox_easy(ciphertext, message, _mlen, nonce, key) + ensure(res == 0, "Encryption failed", raising=exc.CryptoError) + + ciphertext = ffi.buffer(ciphertext, _clen) + return ciphertext[:] + + +def crypto_secretbox_open_easy( + ciphertext: bytes, nonce: bytes, key: bytes +) -> bytes: + """ + Decrypt and returns the encrypted message ``ciphertext`` with the secret + ``key`` and the nonce ``nonce``. + + :param ciphertext: bytes + :param nonce: bytes + :param key: bytes + :rtype: bytes + """ + if len(key) != crypto_secretbox_KEYBYTES: + raise exc.ValueError("Invalid key") + + if len(nonce) != crypto_secretbox_NONCEBYTES: + raise exc.ValueError("Invalid nonce") + + _clen = len(ciphertext) + + ensure( + _clen >= crypto_secretbox_MACBYTES, + "Input ciphertext must be at least {} long".format( + crypto_secretbox_MACBYTES + ), + raising=exc.TypeError, + ) + + _mlen = _clen - crypto_secretbox_MACBYTES + + plaintext = ffi.new("unsigned char[]", max(1, _mlen)) + + res = lib.crypto_secretbox_open_easy( + plaintext, ciphertext, _clen, nonce, key + ) + ensure( + res == 0, + "Decryption failed. Ciphertext failed verification", + raising=exc.CryptoError, + ) + + plaintext = ffi.buffer(plaintext, _mlen) + return plaintext[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_secretstream.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_secretstream.py new file mode 100644 index 0000000..59b074c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_secretstream.py @@ -0,0 +1,358 @@ +# Copyright 2013-2018 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Optional, Tuple, Union, cast + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +crypto_secretstream_xchacha20poly1305_ABYTES: int = ( + lib.crypto_secretstream_xchacha20poly1305_abytes() +) +crypto_secretstream_xchacha20poly1305_HEADERBYTES: int = ( + lib.crypto_secretstream_xchacha20poly1305_headerbytes() +) +crypto_secretstream_xchacha20poly1305_KEYBYTES: int = ( + lib.crypto_secretstream_xchacha20poly1305_keybytes() +) +crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX: int = ( + lib.crypto_secretstream_xchacha20poly1305_messagebytes_max() +) +crypto_secretstream_xchacha20poly1305_STATEBYTES: int = ( + lib.crypto_secretstream_xchacha20poly1305_statebytes() +) + + +crypto_secretstream_xchacha20poly1305_TAG_MESSAGE: int = ( + lib.crypto_secretstream_xchacha20poly1305_tag_message() +) +crypto_secretstream_xchacha20poly1305_TAG_PUSH: int = ( + lib.crypto_secretstream_xchacha20poly1305_tag_push() +) +crypto_secretstream_xchacha20poly1305_TAG_REKEY: int = ( + lib.crypto_secretstream_xchacha20poly1305_tag_rekey() +) +crypto_secretstream_xchacha20poly1305_TAG_FINAL: int = ( + lib.crypto_secretstream_xchacha20poly1305_tag_final() +) + + +def crypto_secretstream_xchacha20poly1305_keygen() -> bytes: + """ + Generate a key for use with + :func:`.crypto_secretstream_xchacha20poly1305_init_push`. + + """ + keybuf = ffi.new( + "unsigned char[]", + crypto_secretstream_xchacha20poly1305_KEYBYTES, + ) + lib.crypto_secretstream_xchacha20poly1305_keygen(keybuf) + return ffi.buffer(keybuf)[:] + + +class crypto_secretstream_xchacha20poly1305_state: + """ + An object wrapping the crypto_secretstream_xchacha20poly1305 state. + + """ + + __slots__ = ["statebuf", "rawbuf", "tagbuf"] + + def __init__(self) -> None: + """Initialize a clean state object.""" + ByteString = Union[bytes, bytearray, memoryview] + self.statebuf: ByteString = ffi.new( + "unsigned char[]", + crypto_secretstream_xchacha20poly1305_STATEBYTES, + ) + + self.rawbuf: Optional[ByteString] = None + self.tagbuf: Optional[ByteString] = None + + +def crypto_secretstream_xchacha20poly1305_init_push( + state: crypto_secretstream_xchacha20poly1305_state, key: bytes +) -> bytes: + """ + Initialize a crypto_secretstream_xchacha20poly1305 encryption buffer. + + :param state: a secretstream state object + :type state: crypto_secretstream_xchacha20poly1305_state + :param key: must be + :data:`.crypto_secretstream_xchacha20poly1305_KEYBYTES` long + :type key: bytes + :return: header + :rtype: bytes + + """ + ensure( + isinstance(state, crypto_secretstream_xchacha20poly1305_state), + "State must be a crypto_secretstream_xchacha20poly1305_state object", + raising=exc.TypeError, + ) + ensure( + isinstance(key, bytes), + "Key must be a bytes sequence", + raising=exc.TypeError, + ) + ensure( + len(key) == crypto_secretstream_xchacha20poly1305_KEYBYTES, + "Invalid key length", + raising=exc.ValueError, + ) + + headerbuf = ffi.new( + "unsigned char []", + crypto_secretstream_xchacha20poly1305_HEADERBYTES, + ) + + rc = lib.crypto_secretstream_xchacha20poly1305_init_push( + state.statebuf, headerbuf, key + ) + ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError) + + return ffi.buffer(headerbuf)[:] + + +def crypto_secretstream_xchacha20poly1305_push( + state: crypto_secretstream_xchacha20poly1305_state, + m: bytes, + ad: Optional[bytes] = None, + tag: int = crypto_secretstream_xchacha20poly1305_TAG_MESSAGE, +) -> bytes: + """ + Add an encrypted message to the secret stream. + + :param state: a secretstream state object + :type state: crypto_secretstream_xchacha20poly1305_state + :param m: the message to encrypt, the maximum length of an individual + message is + :data:`.crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX`. + :type m: bytes + :param ad: additional data to include in the authentication tag + :type ad: bytes or None + :param tag: the message tag, usually + :data:`.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE` or + :data:`.crypto_secretstream_xchacha20poly1305_TAG_FINAL`. + :type tag: int + :return: ciphertext + :rtype: bytes + + """ + ensure( + isinstance(state, crypto_secretstream_xchacha20poly1305_state), + "State must be a crypto_secretstream_xchacha20poly1305_state object", + raising=exc.TypeError, + ) + ensure(isinstance(m, bytes), "Message is not bytes", raising=exc.TypeError) + ensure( + len(m) <= crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX, + "Message is too long", + raising=exc.ValueError, + ) + ensure( + ad is None or isinstance(ad, bytes), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + clen = len(m) + crypto_secretstream_xchacha20poly1305_ABYTES + if state.rawbuf is None or len(state.rawbuf) < clen: + state.rawbuf = ffi.new("unsigned char[]", clen) + + if ad is None: + ad = ffi.NULL + adlen = 0 + else: + adlen = len(ad) + + rc = lib.crypto_secretstream_xchacha20poly1305_push( + state.statebuf, + state.rawbuf, + ffi.NULL, + m, + len(m), + ad, + adlen, + tag, + ) + ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError) + + return ffi.buffer(state.rawbuf, clen)[:] + + +def crypto_secretstream_xchacha20poly1305_init_pull( + state: crypto_secretstream_xchacha20poly1305_state, + header: bytes, + key: bytes, +) -> None: + """ + Initialize a crypto_secretstream_xchacha20poly1305 decryption buffer. + + :param state: a secretstream state object + :type state: crypto_secretstream_xchacha20poly1305_state + :param header: must be + :data:`.crypto_secretstream_xchacha20poly1305_HEADERBYTES` long + :type header: bytes + :param key: must be + :data:`.crypto_secretstream_xchacha20poly1305_KEYBYTES` long + :type key: bytes + + """ + ensure( + isinstance(state, crypto_secretstream_xchacha20poly1305_state), + "State must be a crypto_secretstream_xchacha20poly1305_state object", + raising=exc.TypeError, + ) + ensure( + isinstance(header, bytes), + "Header must be a bytes sequence", + raising=exc.TypeError, + ) + ensure( + len(header) == crypto_secretstream_xchacha20poly1305_HEADERBYTES, + "Invalid header length", + raising=exc.ValueError, + ) + ensure( + isinstance(key, bytes), + "Key must be a bytes sequence", + raising=exc.TypeError, + ) + ensure( + len(key) == crypto_secretstream_xchacha20poly1305_KEYBYTES, + "Invalid key length", + raising=exc.ValueError, + ) + + if state.tagbuf is None: + state.tagbuf = ffi.new("unsigned char *") + + rc = lib.crypto_secretstream_xchacha20poly1305_init_pull( + state.statebuf, header, key + ) + ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError) + + +def crypto_secretstream_xchacha20poly1305_pull( + state: crypto_secretstream_xchacha20poly1305_state, + c: bytes, + ad: Optional[bytes] = None, +) -> Tuple[bytes, int]: + """ + Read a decrypted message from the secret stream. + + :param state: a secretstream state object + :type state: crypto_secretstream_xchacha20poly1305_state + :param c: the ciphertext to decrypt, the maximum length of an individual + ciphertext is + :data:`.crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX` + + :data:`.crypto_secretstream_xchacha20poly1305_ABYTES`. + :type c: bytes + :param ad: additional data to include in the authentication tag + :type ad: bytes or None + :return: (message, tag) + :rtype: (bytes, int) + + """ + ensure( + isinstance(state, crypto_secretstream_xchacha20poly1305_state), + "State must be a crypto_secretstream_xchacha20poly1305_state object", + raising=exc.TypeError, + ) + ensure( + state.tagbuf is not None, + ( + "State must be initialized using " + "crypto_secretstream_xchacha20poly1305_init_pull" + ), + raising=exc.ValueError, + ) + ensure( + isinstance(c, bytes), + "Ciphertext is not bytes", + raising=exc.TypeError, + ) + ensure( + len(c) >= crypto_secretstream_xchacha20poly1305_ABYTES, + "Ciphertext is too short", + raising=exc.ValueError, + ) + ensure( + len(c) + <= ( + crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX + + crypto_secretstream_xchacha20poly1305_ABYTES + ), + "Ciphertext is too long", + raising=exc.ValueError, + ) + ensure( + ad is None or isinstance(ad, bytes), + "Additional data must be bytes or None", + raising=exc.TypeError, + ) + + mlen = len(c) - crypto_secretstream_xchacha20poly1305_ABYTES + if state.rawbuf is None or len(state.rawbuf) < mlen: + state.rawbuf = ffi.new("unsigned char[]", mlen) + + if ad is None: + ad = ffi.NULL + adlen = 0 + else: + adlen = len(ad) + + rc = lib.crypto_secretstream_xchacha20poly1305_pull( + state.statebuf, + state.rawbuf, + ffi.NULL, + state.tagbuf, + c, + len(c), + ad, + adlen, + ) + ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError) + + # Cast safety: we `ensure` above that `state.tagbuf is not None`. + return ( + ffi.buffer(state.rawbuf, mlen)[:], + int(cast(bytes, state.tagbuf)[0]), + ) + + +def crypto_secretstream_xchacha20poly1305_rekey( + state: crypto_secretstream_xchacha20poly1305_state, +) -> None: + """ + Explicitly change the encryption key in the stream. + + Normally the stream is re-keyed as needed or an explicit ``tag`` of + :data:`.crypto_secretstream_xchacha20poly1305_TAG_REKEY` is added to a + message to ensure forward secrecy, but this method can be used instead + if the re-keying is controlled without adding the tag. + + :param state: a secretstream state object + :type state: crypto_secretstream_xchacha20poly1305_state + + """ + ensure( + isinstance(state, crypto_secretstream_xchacha20poly1305_state), + "State must be a crypto_secretstream_xchacha20poly1305_state object", + raising=exc.TypeError, + ) + lib.crypto_secretstream_xchacha20poly1305_rekey(state.statebuf) diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_shorthash.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_shorthash.py new file mode 100644 index 0000000..8f7d209 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_shorthash.py @@ -0,0 +1,81 @@ +# Copyright 2016 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import nacl.exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +has_crypto_shorthash_siphashx24 = bool( + lib.PYNACL_HAS_CRYPTO_SHORTHASH_SIPHASHX24 +) + +BYTES: int = lib.crypto_shorthash_siphash24_bytes() +KEYBYTES: int = lib.crypto_shorthash_siphash24_keybytes() + +XBYTES = 0 +XKEYBYTES = 0 + +if has_crypto_shorthash_siphashx24: + XBYTES = lib.crypto_shorthash_siphashx24_bytes() + XKEYBYTES = lib.crypto_shorthash_siphashx24_keybytes() + + +def crypto_shorthash_siphash24(data: bytes, key: bytes) -> bytes: + """Compute a fast, cryptographic quality, keyed hash of the input data + + :param data: + :type data: bytes + :param key: len(key) must be equal to + :py:data:`.KEYBYTES` (16) + :type key: bytes + """ + if len(key) != KEYBYTES: + raise exc.ValueError( + "Key length must be exactly {} bytes".format(KEYBYTES) + ) + digest = ffi.new("unsigned char[]", BYTES) + rc = lib.crypto_shorthash_siphash24(digest, data, len(data), key) + + ensure(rc == 0, raising=exc.RuntimeError) + return ffi.buffer(digest, BYTES)[:] + + +def crypto_shorthash_siphashx24(data: bytes, key: bytes) -> bytes: + """Compute a fast, cryptographic quality, keyed hash of the input data + + :param data: + :type data: bytes + :param key: len(key) must be equal to + :py:data:`.XKEYBYTES` (16) + :type key: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + """ + ensure( + has_crypto_shorthash_siphashx24, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + if len(key) != XKEYBYTES: + raise exc.ValueError( + "Key length must be exactly {} bytes".format(XKEYBYTES) + ) + digest = ffi.new("unsigned char[]", XBYTES) + rc = lib.crypto_shorthash_siphashx24(digest, data, len(data), key) + + ensure(rc == 0, raising=exc.RuntimeError) + return ffi.buffer(digest, XBYTES)[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_sign.py b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_sign.py new file mode 100644 index 0000000..f459f6a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/crypto_sign.py @@ -0,0 +1,327 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Tuple + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +crypto_sign_BYTES: int = lib.crypto_sign_bytes() +# crypto_sign_SEEDBYTES = lib.crypto_sign_seedbytes() +crypto_sign_SEEDBYTES: int = lib.crypto_sign_secretkeybytes() // 2 +crypto_sign_PUBLICKEYBYTES: int = lib.crypto_sign_publickeybytes() +crypto_sign_SECRETKEYBYTES: int = lib.crypto_sign_secretkeybytes() + +crypto_sign_curve25519_BYTES: int = lib.crypto_box_secretkeybytes() + +crypto_sign_ed25519ph_STATEBYTES: int = lib.crypto_sign_ed25519ph_statebytes() + + +def crypto_sign_keypair() -> Tuple[bytes, bytes]: + """ + Returns a randomly generated public key and secret key. + + :rtype: (bytes(public_key), bytes(secret_key)) + """ + pk = ffi.new("unsigned char[]", crypto_sign_PUBLICKEYBYTES) + sk = ffi.new("unsigned char[]", crypto_sign_SECRETKEYBYTES) + + rc = lib.crypto_sign_keypair(pk, sk) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ( + ffi.buffer(pk, crypto_sign_PUBLICKEYBYTES)[:], + ffi.buffer(sk, crypto_sign_SECRETKEYBYTES)[:], + ) + + +def crypto_sign_seed_keypair(seed: bytes) -> Tuple[bytes, bytes]: + """ + Computes and returns the public key and secret key using the seed ``seed``. + + :param seed: bytes + :rtype: (bytes(public_key), bytes(secret_key)) + """ + if len(seed) != crypto_sign_SEEDBYTES: + raise exc.ValueError("Invalid seed") + + pk = ffi.new("unsigned char[]", crypto_sign_PUBLICKEYBYTES) + sk = ffi.new("unsigned char[]", crypto_sign_SECRETKEYBYTES) + + rc = lib.crypto_sign_seed_keypair(pk, sk, seed) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ( + ffi.buffer(pk, crypto_sign_PUBLICKEYBYTES)[:], + ffi.buffer(sk, crypto_sign_SECRETKEYBYTES)[:], + ) + + +def crypto_sign(message: bytes, sk: bytes) -> bytes: + """ + Signs the message ``message`` using the secret key ``sk`` and returns the + signed message. + + :param message: bytes + :param sk: bytes + :rtype: bytes + """ + signed = ffi.new("unsigned char[]", len(message) + crypto_sign_BYTES) + signed_len = ffi.new("unsigned long long *") + + rc = lib.crypto_sign(signed, signed_len, message, len(message), sk) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(signed, signed_len[0])[:] + + +def crypto_sign_open(signed: bytes, pk: bytes) -> bytes: + """ + Verifies the signature of the signed message ``signed`` using the public + key ``pk`` and returns the unsigned message. + + :param signed: bytes + :param pk: bytes + :rtype: bytes + """ + message = ffi.new("unsigned char[]", len(signed)) + message_len = ffi.new("unsigned long long *") + + if ( + lib.crypto_sign_open(message, message_len, signed, len(signed), pk) + != 0 + ): + raise exc.BadSignatureError("Signature was forged or corrupt") + + return ffi.buffer(message, message_len[0])[:] + + +def crypto_sign_ed25519_pk_to_curve25519(public_key_bytes: bytes) -> bytes: + """ + Converts a public Ed25519 key (encoded as bytes ``public_key_bytes``) to + a public Curve25519 key as bytes. + + Raises a ValueError if ``public_key_bytes`` is not of length + ``crypto_sign_PUBLICKEYBYTES`` + + :param public_key_bytes: bytes + :rtype: bytes + """ + if len(public_key_bytes) != crypto_sign_PUBLICKEYBYTES: + raise exc.ValueError("Invalid curve public key") + + curve_public_key_len = crypto_sign_curve25519_BYTES + curve_public_key = ffi.new("unsigned char[]", curve_public_key_len) + + rc = lib.crypto_sign_ed25519_pk_to_curve25519( + curve_public_key, public_key_bytes + ) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(curve_public_key, curve_public_key_len)[:] + + +def crypto_sign_ed25519_sk_to_curve25519(secret_key_bytes: bytes) -> bytes: + """ + Converts a secret Ed25519 key (encoded as bytes ``secret_key_bytes``) to + a secret Curve25519 key as bytes. + + Raises a ValueError if ``secret_key_bytes``is not of length + ``crypto_sign_SECRETKEYBYTES`` + + :param secret_key_bytes: bytes + :rtype: bytes + """ + if len(secret_key_bytes) != crypto_sign_SECRETKEYBYTES: + raise exc.ValueError("Invalid curve secret key") + + curve_secret_key_len = crypto_sign_curve25519_BYTES + curve_secret_key = ffi.new("unsigned char[]", curve_secret_key_len) + + rc = lib.crypto_sign_ed25519_sk_to_curve25519( + curve_secret_key, secret_key_bytes + ) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(curve_secret_key, curve_secret_key_len)[:] + + +def crypto_sign_ed25519_sk_to_pk(secret_key_bytes: bytes) -> bytes: + """ + Extract the public Ed25519 key from a secret Ed25519 key (encoded + as bytes ``secret_key_bytes``). + + Raises a ValueError if ``secret_key_bytes``is not of length + ``crypto_sign_SECRETKEYBYTES`` + + :param secret_key_bytes: bytes + :rtype: bytes + """ + if len(secret_key_bytes) != crypto_sign_SECRETKEYBYTES: + raise exc.ValueError("Invalid secret key") + + return secret_key_bytes[crypto_sign_SEEDBYTES:] + + +def crypto_sign_ed25519_sk_to_seed(secret_key_bytes: bytes) -> bytes: + """ + Extract the seed from a secret Ed25519 key (encoded + as bytes ``secret_key_bytes``). + + Raises a ValueError if ``secret_key_bytes``is not of length + ``crypto_sign_SECRETKEYBYTES`` + + :param secret_key_bytes: bytes + :rtype: bytes + """ + if len(secret_key_bytes) != crypto_sign_SECRETKEYBYTES: + raise exc.ValueError("Invalid secret key") + + return secret_key_bytes[:crypto_sign_SEEDBYTES] + + +class crypto_sign_ed25519ph_state: + """ + State object wrapping the sha-512 state used in ed25519ph computation + """ + + __slots__ = ["state"] + + def __init__(self) -> None: + self.state: bytes = ffi.new( + "unsigned char[]", crypto_sign_ed25519ph_STATEBYTES + ) + + rc = lib.crypto_sign_ed25519ph_init(self.state) + + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + +def crypto_sign_ed25519ph_update( + edph: crypto_sign_ed25519ph_state, pmsg: bytes +) -> None: + """ + Update the hash state wrapped in edph + + :param edph: the ed25519ph state being updated + :type edph: crypto_sign_ed25519ph_state + :param pmsg: the partial message + :type pmsg: bytes + :rtype: None + """ + ensure( + isinstance(edph, crypto_sign_ed25519ph_state), + "edph parameter must be a ed25519ph_state object", + raising=exc.TypeError, + ) + ensure( + isinstance(pmsg, bytes), + "pmsg parameter must be a bytes object", + raising=exc.TypeError, + ) + rc = lib.crypto_sign_ed25519ph_update(edph.state, pmsg, len(pmsg)) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + +def crypto_sign_ed25519ph_final_create( + edph: crypto_sign_ed25519ph_state, sk: bytes +) -> bytes: + """ + Create a signature for the data hashed in edph + using the secret key sk + + :param edph: the ed25519ph state for the data + being signed + :type edph: crypto_sign_ed25519ph_state + :param sk: the ed25519 secret key (secret and public part) + :type sk: bytes + :return: ed25519ph signature + :rtype: bytes + """ + ensure( + isinstance(edph, crypto_sign_ed25519ph_state), + "edph parameter must be a ed25519ph_state object", + raising=exc.TypeError, + ) + ensure( + isinstance(sk, bytes), + "secret key parameter must be a bytes object", + raising=exc.TypeError, + ) + ensure( + len(sk) == crypto_sign_SECRETKEYBYTES, + ("secret key must be {} bytes long").format( + crypto_sign_SECRETKEYBYTES + ), + raising=exc.TypeError, + ) + signature = ffi.new("unsigned char[]", crypto_sign_BYTES) + rc = lib.crypto_sign_ed25519ph_final_create( + edph.state, signature, ffi.NULL, sk + ) + ensure(rc == 0, "Unexpected library error", raising=exc.RuntimeError) + + return ffi.buffer(signature, crypto_sign_BYTES)[:] + + +def crypto_sign_ed25519ph_final_verify( + edph: crypto_sign_ed25519ph_state, signature: bytes, pk: bytes +) -> bool: + """ + Verify a prehashed signature using the public key pk + + :param edph: the ed25519ph state for the data + being verified + :type edph: crypto_sign_ed25519ph_state + :param signature: the signature being verified + :type signature: bytes + :param pk: the ed25519 public part of the signing key + :type pk: bytes + :return: True if the signature is valid + :rtype: boolean + :raises exc.BadSignatureError: if the signature is not valid + """ + ensure( + isinstance(edph, crypto_sign_ed25519ph_state), + "edph parameter must be a ed25519ph_state object", + raising=exc.TypeError, + ) + ensure( + isinstance(signature, bytes), + "signature parameter must be a bytes object", + raising=exc.TypeError, + ) + ensure( + len(signature) == crypto_sign_BYTES, + ("signature must be {} bytes long").format(crypto_sign_BYTES), + raising=exc.TypeError, + ) + ensure( + isinstance(pk, bytes), + "public key parameter must be a bytes object", + raising=exc.TypeError, + ) + ensure( + len(pk) == crypto_sign_PUBLICKEYBYTES, + ("public key must be {} bytes long").format( + crypto_sign_PUBLICKEYBYTES + ), + raising=exc.TypeError, + ) + rc = lib.crypto_sign_ed25519ph_final_verify(edph.state, signature, pk) + if rc != 0: + raise exc.BadSignatureError("Signature was forged or corrupt") + + return True diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/randombytes.py b/.venv/lib/python3.9/site-packages/nacl/bindings/randombytes.py new file mode 100644 index 0000000..ed76deb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/randombytes.py @@ -0,0 +1,51 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib + +randombytes_SEEDBYTES: int = lib.randombytes_seedbytes() + + +def randombytes(size: int) -> bytes: + """ + Returns ``size`` number of random bytes from a cryptographically secure + random source. + + :param size: int + :rtype: bytes + """ + buf = ffi.new("unsigned char[]", size) + lib.randombytes(buf, size) + return ffi.buffer(buf, size)[:] + + +def randombytes_buf_deterministic(size: int, seed: bytes) -> bytes: + """ + Returns ``size`` number of deterministically generated pseudorandom bytes + from a seed + + :param size: int + :param seed: bytes + :rtype: bytes + """ + if len(seed) != randombytes_SEEDBYTES: + raise exc.TypeError( + "Deterministic random bytes must be generated from 32 bytes" + ) + + buf = ffi.new("unsigned char[]", size) + lib.randombytes_buf_deterministic(buf, size, seed) + return ffi.buffer(buf, size)[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/sodium_core.py b/.venv/lib/python3.9/site-packages/nacl/bindings/sodium_core.py new file mode 100644 index 0000000..7ebb84c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/sodium_core.py @@ -0,0 +1,33 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from nacl import exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +def _sodium_init() -> None: + ensure( + lib.sodium_init() != -1, + "Could not initialize sodium", + raising=exc.RuntimeError, + ) + + +def sodium_init() -> None: + """ + Initializes sodium, picking the best implementations available for this + machine. + """ + ffi.init_once(_sodium_init, "libsodium") diff --git a/.venv/lib/python3.9/site-packages/nacl/bindings/utils.py b/.venv/lib/python3.9/site-packages/nacl/bindings/utils.py new file mode 100644 index 0000000..0ff22e3 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/bindings/utils.py @@ -0,0 +1,141 @@ +# Copyright 2013-2017 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import nacl.exceptions as exc +from nacl._sodium import ffi, lib +from nacl.exceptions import ensure + + +def sodium_memcmp(inp1: bytes, inp2: bytes) -> bool: + """ + Compare contents of two memory regions in constant time + """ + ensure(isinstance(inp1, bytes), raising=exc.TypeError) + ensure(isinstance(inp2, bytes), raising=exc.TypeError) + + ln = max(len(inp1), len(inp2)) + + buf1 = ffi.new("char []", ln) + buf2 = ffi.new("char []", ln) + + ffi.memmove(buf1, inp1, len(inp1)) + ffi.memmove(buf2, inp2, len(inp2)) + + eqL = len(inp1) == len(inp2) + eqC = lib.sodium_memcmp(buf1, buf2, ln) == 0 + + return eqL and eqC + + +def sodium_pad(s: bytes, blocksize: int) -> bytes: + """ + Pad the input bytearray ``s`` to a multiple of ``blocksize`` + using the ISO/IEC 7816-4 algorithm + + :param s: input bytes string + :type s: bytes + :param blocksize: + :type blocksize: int + :return: padded string + :rtype: bytes + """ + ensure(isinstance(s, bytes), raising=exc.TypeError) + ensure(isinstance(blocksize, int), raising=exc.TypeError) + if blocksize <= 0: + raise exc.ValueError + s_len = len(s) + m_len = s_len + blocksize + buf = ffi.new("unsigned char []", m_len) + p_len = ffi.new("size_t []", 1) + ffi.memmove(buf, s, s_len) + rc = lib.sodium_pad(p_len, buf, s_len, blocksize, m_len) + ensure(rc == 0, "Padding failure", raising=exc.CryptoError) + return ffi.buffer(buf, p_len[0])[:] + + +def sodium_unpad(s: bytes, blocksize: int) -> bytes: + """ + Remove ISO/IEC 7816-4 padding from the input byte array ``s`` + + :param s: input bytes string + :type s: bytes + :param blocksize: + :type blocksize: int + :return: unpadded string + :rtype: bytes + """ + ensure(isinstance(s, bytes), raising=exc.TypeError) + ensure(isinstance(blocksize, int), raising=exc.TypeError) + s_len = len(s) + u_len = ffi.new("size_t []", 1) + rc = lib.sodium_unpad(u_len, s, s_len, blocksize) + if rc != 0: + raise exc.CryptoError("Unpadding failure") + return s[: u_len[0]] + + +def sodium_increment(inp: bytes) -> bytes: + """ + Increment the value of a byte-sequence interpreted + as the little-endian representation of a unsigned big integer. + + :param inp: input bytes buffer + :type inp: bytes + :return: a byte-sequence representing, as a little-endian + unsigned big integer, the value ``to_int(inp)`` + incremented by one. + :rtype: bytes + + """ + ensure(isinstance(inp, bytes), raising=exc.TypeError) + + ln = len(inp) + buf = ffi.new("unsigned char []", ln) + + ffi.memmove(buf, inp, ln) + + lib.sodium_increment(buf, ln) + + return ffi.buffer(buf, ln)[:] + + +def sodium_add(a: bytes, b: bytes) -> bytes: + """ + Given a couple of *same-sized* byte sequences, interpreted as the + little-endian representation of two unsigned integers, compute + the modular addition of the represented values, in constant time for + a given common length of the byte sequences. + + :param a: input bytes buffer + :type a: bytes + :param b: input bytes buffer + :type b: bytes + :return: a byte-sequence representing, as a little-endian big integer, + the integer value of ``(to_int(a) + to_int(b)) mod 2^(8*len(a))`` + :rtype: bytes + """ + ensure(isinstance(a, bytes), raising=exc.TypeError) + ensure(isinstance(b, bytes), raising=exc.TypeError) + ln = len(a) + ensure(len(b) == ln, raising=exc.TypeError) + + buf_a = ffi.new("unsigned char []", ln) + buf_b = ffi.new("unsigned char []", ln) + + ffi.memmove(buf_a, a, ln) + ffi.memmove(buf_b, b, ln) + + lib.sodium_add(buf_a, buf_b, ln) + + return ffi.buffer(buf_a, ln)[:] diff --git a/.venv/lib/python3.9/site-packages/nacl/encoding.py b/.venv/lib/python3.9/site-packages/nacl/encoding.py new file mode 100644 index 0000000..6740cfb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/encoding.py @@ -0,0 +1,105 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import base64 +import binascii +from abc import ABCMeta, abstractmethod +from typing import SupportsBytes, Type + + +# TODO: when the minimum supported version of Python is 3.8, we can import +# Protocol from typing, and replace Encoder with a Protocol instead. +class _Encoder(metaclass=ABCMeta): + @staticmethod + @abstractmethod + def encode(data: bytes) -> bytes: + """Transform raw data to encoded data.""" + + @staticmethod + @abstractmethod + def decode(data: bytes) -> bytes: + """Transform encoded data back to raw data. + + Decoding after encoding should be a no-op, i.e. `decode(encode(x)) == x`. + """ + + +# Functions that use encoders are passed a subclass of _Encoder, not an instance +# (because the methods are all static). Let's gloss over that detail by defining +# an alias for Type[_Encoder]. +Encoder = Type[_Encoder] + + +class RawEncoder(_Encoder): + @staticmethod + def encode(data: bytes) -> bytes: + return data + + @staticmethod + def decode(data: bytes) -> bytes: + return data + + +class HexEncoder(_Encoder): + @staticmethod + def encode(data: bytes) -> bytes: + return binascii.hexlify(data) + + @staticmethod + def decode(data: bytes) -> bytes: + return binascii.unhexlify(data) + + +class Base16Encoder(_Encoder): + @staticmethod + def encode(data: bytes) -> bytes: + return base64.b16encode(data) + + @staticmethod + def decode(data: bytes) -> bytes: + return base64.b16decode(data) + + +class Base32Encoder(_Encoder): + @staticmethod + def encode(data: bytes) -> bytes: + return base64.b32encode(data) + + @staticmethod + def decode(data: bytes) -> bytes: + return base64.b32decode(data) + + +class Base64Encoder(_Encoder): + @staticmethod + def encode(data: bytes) -> bytes: + return base64.b64encode(data) + + @staticmethod + def decode(data: bytes) -> bytes: + return base64.b64decode(data) + + +class URLSafeBase64Encoder(_Encoder): + @staticmethod + def encode(data: bytes) -> bytes: + return base64.urlsafe_b64encode(data) + + @staticmethod + def decode(data: bytes) -> bytes: + return base64.urlsafe_b64decode(data) + + +class Encodable: + def encode(self: SupportsBytes, encoder: Encoder = RawEncoder) -> bytes: + return encoder.encode(bytes(self)) diff --git a/.venv/lib/python3.9/site-packages/nacl/exceptions.py b/.venv/lib/python3.9/site-packages/nacl/exceptions.py new file mode 100644 index 0000000..40b1635 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/exceptions.py @@ -0,0 +1,88 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# We create a clone of various builtin Exception types which additionally +# inherit from CryptoError. Below, we refer to the parent types via the +# `builtins` namespace, so mypy can distinguish between (e.g.) +# `nacl.exceptions.RuntimeError` and `builtins.RuntimeError`. +import builtins +from typing import Type + + +class CryptoError(Exception): + """ + Base exception for all nacl related errors + """ + + +class BadSignatureError(CryptoError): + """ + Raised when the signature was forged or otherwise corrupt. + """ + + +class RuntimeError(builtins.RuntimeError, CryptoError): + pass + + +class AssertionError(builtins.AssertionError, CryptoError): + pass + + +class TypeError(builtins.TypeError, CryptoError): + pass + + +class ValueError(builtins.ValueError, CryptoError): + pass + + +class InvalidkeyError(CryptoError): + pass + + +class CryptPrefixError(InvalidkeyError): + pass + + +class UnavailableError(RuntimeError): + """ + is a subclass of :class:`~nacl.exceptions.RuntimeError`, raised when + trying to call functions not available in a minimal build of + libsodium or due to hardware limitations. + """ + + pass + + +def ensure(cond: bool, *args: object, **kwds: Type[Exception]) -> None: + """ + Return if a condition is true, otherwise raise a caller-configurable + :py:class:`Exception` + :param bool cond: the condition to be checked + :param sequence args: the arguments to be passed to the exception's + constructor + The only accepted named parameter is `raising` used to configure the + exception to be raised if `cond` is not `True` + """ + _CHK_UNEXP = "check_condition() got an unexpected keyword argument {0}" + + raising = kwds.pop("raising", AssertionError) + if kwds: + raise TypeError(_CHK_UNEXP.format(repr(kwds.popitem()[0]))) + + if cond is True: + return + raise raising(*args) diff --git a/.venv/lib/python3.9/site-packages/nacl/hash.py b/.venv/lib/python3.9/site-packages/nacl/hash.py new file mode 100644 index 0000000..9f81590 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/hash.py @@ -0,0 +1,181 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +The :mod:`nacl.hash` module exposes one-shot interfaces +for libsodium selected hash primitives and the constants needed +for their usage. +""" + +import nacl.bindings +import nacl.encoding + + +BLAKE2B_BYTES = nacl.bindings.crypto_generichash_BYTES +"""Default digest size for :func:`blake2b` hash""" +BLAKE2B_BYTES_MIN = nacl.bindings.crypto_generichash_BYTES_MIN +"""Minimum allowed digest size for :func:`blake2b` hash""" +BLAKE2B_BYTES_MAX = nacl.bindings.crypto_generichash_BYTES_MAX +"""Maximum allowed digest size for :func:`blake2b` hash""" +BLAKE2B_KEYBYTES = nacl.bindings.crypto_generichash_KEYBYTES +"""Default size of the ``key`` byte array for :func:`blake2b` hash""" +BLAKE2B_KEYBYTES_MIN = nacl.bindings.crypto_generichash_KEYBYTES_MIN +"""Minimum allowed size of the ``key`` byte array for :func:`blake2b` hash""" +BLAKE2B_KEYBYTES_MAX = nacl.bindings.crypto_generichash_KEYBYTES_MAX +"""Maximum allowed size of the ``key`` byte array for :func:`blake2b` hash""" +BLAKE2B_SALTBYTES = nacl.bindings.crypto_generichash_SALTBYTES +"""Maximum allowed length of the ``salt`` byte array for +:func:`blake2b` hash""" +BLAKE2B_PERSONALBYTES = nacl.bindings.crypto_generichash_PERSONALBYTES +"""Maximum allowed length of the ``personalization`` +byte array for :func:`blake2b` hash""" + +SIPHASH_BYTES = nacl.bindings.crypto_shorthash_siphash24_BYTES +"""Size of the :func:`siphash24` digest""" +SIPHASH_KEYBYTES = nacl.bindings.crypto_shorthash_siphash24_KEYBYTES +"""Size of the secret ``key`` used by the :func:`siphash24` MAC""" + +SIPHASHX_AVAILABLE = nacl.bindings.has_crypto_shorthash_siphashx24 +"""``True`` if :func:`siphashx24` is available to be called""" + +SIPHASHX_BYTES = nacl.bindings.crypto_shorthash_siphashx24_BYTES +"""Size of the :func:`siphashx24` digest""" +SIPHASHX_KEYBYTES = nacl.bindings.crypto_shorthash_siphashx24_KEYBYTES +"""Size of the secret ``key`` used by the :func:`siphashx24` MAC""" + +_b2b_hash = nacl.bindings.crypto_generichash_blake2b_salt_personal +_sip_hash = nacl.bindings.crypto_shorthash_siphash24 +_sip_hashx = nacl.bindings.crypto_shorthash_siphashx24 + + +def sha256( + message: bytes, encoder: nacl.encoding.Encoder = nacl.encoding.HexEncoder +) -> bytes: + """ + Hashes ``message`` with SHA256. + + :param message: The message to hash. + :type message: bytes + :param encoder: A class that is able to encode the hashed message. + :returns: The hashed message. + :rtype: bytes + """ + return encoder.encode(nacl.bindings.crypto_hash_sha256(message)) + + +def sha512( + message: bytes, encoder: nacl.encoding.Encoder = nacl.encoding.HexEncoder +) -> bytes: + """ + Hashes ``message`` with SHA512. + + :param message: The message to hash. + :type message: bytes + :param encoder: A class that is able to encode the hashed message. + :returns: The hashed message. + :rtype: bytes + """ + return encoder.encode(nacl.bindings.crypto_hash_sha512(message)) + + +def blake2b( + data: bytes, + digest_size: int = BLAKE2B_BYTES, + key: bytes = b"", + salt: bytes = b"", + person: bytes = b"", + encoder: nacl.encoding.Encoder = nacl.encoding.HexEncoder, +) -> bytes: + """ + Hashes ``data`` with blake2b. + + :param data: the digest input byte sequence + :type data: bytes + :param digest_size: the requested digest size; must be at most + :const:`BLAKE2B_BYTES_MAX`; + the default digest size is + :const:`BLAKE2B_BYTES` + :type digest_size: int + :param key: the key to be set for keyed MAC/PRF usage; if set, the key + must be at most :data:`~nacl.hash.BLAKE2B_KEYBYTES_MAX` long + :type key: bytes + :param salt: an initialization salt at most + :const:`BLAKE2B_SALTBYTES` long; + it will be zero-padded if needed + :type salt: bytes + :param person: a personalization string at most + :const:`BLAKE2B_PERSONALBYTES` long; + it will be zero-padded if needed + :type person: bytes + :param encoder: the encoder to use on returned digest + :type encoder: class + :returns: The hashed message. + :rtype: bytes + """ + + digest = _b2b_hash( + data, digest_size=digest_size, key=key, salt=salt, person=person + ) + return encoder.encode(digest) + + +generichash = blake2b + + +def siphash24( + message: bytes, + key: bytes = b"", + encoder: nacl.encoding.Encoder = nacl.encoding.HexEncoder, +) -> bytes: + """ + Computes a keyed MAC of ``message`` using the short-input-optimized + siphash-2-4 construction. + + :param message: The message to hash. + :type message: bytes + :param key: the message authentication key for the siphash MAC construct + :type key: bytes(:const:`SIPHASH_KEYBYTES`) + :param encoder: A class that is able to encode the hashed message. + :returns: The hashed message. + :rtype: bytes(:const:`SIPHASH_BYTES`) + """ + digest = _sip_hash(message, key) + return encoder.encode(digest) + + +shorthash = siphash24 + + +def siphashx24( + message: bytes, + key: bytes = b"", + encoder: nacl.encoding.Encoder = nacl.encoding.HexEncoder, +) -> bytes: + """ + Computes a keyed MAC of ``message`` using the 128 bit variant of the + siphash-2-4 construction. + + :param message: The message to hash. + :type message: bytes + :param key: the message authentication key for the siphash MAC construct + :type key: bytes(:const:`SIPHASHX_KEYBYTES`) + :param encoder: A class that is able to encode the hashed message. + :returns: The hashed message. + :rtype: bytes(:const:`SIPHASHX_BYTES`) + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + + .. versionadded:: 1.2 + """ + digest = _sip_hashx(message, key) + return encoder.encode(digest) diff --git a/.venv/lib/python3.9/site-packages/nacl/hashlib.py b/.venv/lib/python3.9/site-packages/nacl/hashlib.py new file mode 100644 index 0000000..9d289da --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/hashlib.py @@ -0,0 +1,143 @@ +# Copyright 2016-2019 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import binascii +from typing import NoReturn + +import nacl.bindings +from nacl.utils import bytes_as_string + +BYTES = nacl.bindings.crypto_generichash_BYTES +BYTES_MIN = nacl.bindings.crypto_generichash_BYTES_MIN +BYTES_MAX = nacl.bindings.crypto_generichash_BYTES_MAX +KEYBYTES = nacl.bindings.crypto_generichash_KEYBYTES +KEYBYTES_MIN = nacl.bindings.crypto_generichash_KEYBYTES_MIN +KEYBYTES_MAX = nacl.bindings.crypto_generichash_KEYBYTES_MAX +SALTBYTES = nacl.bindings.crypto_generichash_SALTBYTES +PERSONALBYTES = nacl.bindings.crypto_generichash_PERSONALBYTES + +SCRYPT_AVAILABLE = nacl.bindings.has_crypto_pwhash_scryptsalsa208sha256 + +_b2b_init = nacl.bindings.crypto_generichash_blake2b_init +_b2b_final = nacl.bindings.crypto_generichash_blake2b_final +_b2b_update = nacl.bindings.crypto_generichash_blake2b_update + + +class blake2b: + """ + :py:mod:`hashlib` API compatible blake2b algorithm implementation + """ + + MAX_DIGEST_SIZE = BYTES + MAX_KEY_SIZE = KEYBYTES_MAX + PERSON_SIZE = PERSONALBYTES + SALT_SIZE = SALTBYTES + + def __init__( + self, + data: bytes = b"", + digest_size: int = BYTES, + key: bytes = b"", + salt: bytes = b"", + person: bytes = b"", + ): + """ + :py:class:`.blake2b` algorithm initializer + + :param data: + :type data: bytes + :param int digest_size: the requested digest size; must be + at most :py:attr:`.MAX_DIGEST_SIZE`; + the default digest size is :py:data:`.BYTES` + :param key: the key to be set for keyed MAC/PRF usage; if set, + the key must be at most :py:data:`.KEYBYTES_MAX` long + :type key: bytes + :param salt: a initialization salt at most + :py:attr:`.SALT_SIZE` long; it will be zero-padded + if needed + :type salt: bytes + :param person: a personalization string at most + :py:attr:`.PERSONAL_SIZE` long; it will be zero-padded + if needed + :type person: bytes + """ + + self._state = _b2b_init( + key=key, salt=salt, person=person, digest_size=digest_size + ) + self._digest_size = digest_size + + if data: + self.update(data) + + @property + def digest_size(self) -> int: + return self._digest_size + + @property + def block_size(self) -> int: + return 128 + + @property + def name(self) -> str: + return "blake2b" + + def update(self, data: bytes) -> None: + _b2b_update(self._state, data) + + def digest(self) -> bytes: + _st = self._state.copy() + return _b2b_final(_st) + + def hexdigest(self) -> str: + return bytes_as_string(binascii.hexlify(self.digest())) + + def copy(self) -> "blake2b": + _cp = type(self)(digest_size=self.digest_size) + _st = self._state.copy() + _cp._state = _st + return _cp + + def __reduce__(self) -> NoReturn: + """ + Raise the same exception as hashlib's blake implementation + on copy.copy() + """ + raise TypeError( + "can't pickle {} objects".format(self.__class__.__name__) + ) + + +def scrypt( + password: bytes, + salt: bytes = b"", + n: int = 2**20, + r: int = 8, + p: int = 1, + maxmem: int = 2**25, + dklen: int = 64, +) -> bytes: + """ + Derive a cryptographic key using the scrypt KDF. + + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + + Implements the same signature as the ``hashlib.scrypt`` implemented + in cpython version 3.6 + """ + return nacl.bindings.crypto_pwhash_scryptsalsa208sha256_ll( + password, salt, n, r, p, maxmem=maxmem, dklen=dklen + ) diff --git a/.venv/lib/python3.9/site-packages/nacl/public.py b/.venv/lib/python3.9/site-packages/nacl/public.py new file mode 100644 index 0000000..a6fc958 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/public.py @@ -0,0 +1,421 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import ClassVar, Generic, Optional, Type, TypeVar + +import nacl.bindings +from nacl import encoding +from nacl import exceptions as exc +from nacl.encoding import Encoder +from nacl.utils import EncryptedMessage, StringFixer, random + + +class PublicKey(encoding.Encodable, StringFixer): + """ + The public key counterpart to an Curve25519 :class:`nacl.public.PrivateKey` + for encrypting messages. + + :param public_key: [:class:`bytes`] Encoded Curve25519 public key + :param encoder: A class that is able to decode the `public_key` + + :cvar SIZE: The size that the public key is required to be + """ + + SIZE: ClassVar[int] = nacl.bindings.crypto_box_PUBLICKEYBYTES + + def __init__( + self, + public_key: bytes, + encoder: encoding.Encoder = encoding.RawEncoder, + ): + self._public_key = encoder.decode(public_key) + if not isinstance(self._public_key, bytes): + raise exc.TypeError("PublicKey must be created from 32 bytes") + + if len(self._public_key) != self.SIZE: + raise exc.ValueError( + "The public key must be exactly {} bytes long".format( + self.SIZE + ) + ) + + def __bytes__(self) -> bytes: + return self._public_key + + def __hash__(self) -> int: + return hash(bytes(self)) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return False + return nacl.bindings.sodium_memcmp(bytes(self), bytes(other)) + + def __ne__(self, other: object) -> bool: + return not (self == other) + + +class PrivateKey(encoding.Encodable, StringFixer): + """ + Private key for decrypting messages using the Curve25519 algorithm. + + .. warning:: This **must** be protected and remain secret. Anyone who + knows the value of your :class:`~nacl.public.PrivateKey` can decrypt + any message encrypted by the corresponding + :class:`~nacl.public.PublicKey` + + :param private_key: The private key used to decrypt messages + :param encoder: The encoder class used to decode the given keys + + :cvar SIZE: The size that the private key is required to be + :cvar SEED_SIZE: The size that the seed used to generate the + private key is required to be + """ + + SIZE: ClassVar[int] = nacl.bindings.crypto_box_SECRETKEYBYTES + SEED_SIZE: ClassVar[int] = nacl.bindings.crypto_box_SEEDBYTES + + def __init__( + self, + private_key: bytes, + encoder: encoding.Encoder = encoding.RawEncoder, + ): + # Decode the secret_key + private_key = encoder.decode(private_key) + # verify the given secret key type and size are correct + if not ( + isinstance(private_key, bytes) and len(private_key) == self.SIZE + ): + raise exc.TypeError( + ( + "PrivateKey must be created from a {} bytes long raw secret key" + ).format(self.SIZE) + ) + + raw_public_key = nacl.bindings.crypto_scalarmult_base(private_key) + + self._private_key = private_key + self.public_key = PublicKey(raw_public_key) + + @classmethod + def from_seed( + cls, + seed: bytes, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> "PrivateKey": + """ + Generate a PrivateKey using a deterministic construction + starting from a caller-provided seed + + .. warning:: The seed **must** be high-entropy; therefore, + its generator **must** be a cryptographic quality + random function like, for example, :func:`~nacl.utils.random`. + + .. warning:: The seed **must** be protected and remain secret. + Anyone who knows the seed is really in possession of + the corresponding PrivateKey. + + :param seed: The seed used to generate the private key + :rtype: :class:`~nacl.public.PrivateKey` + """ + # decode the seed + seed = encoder.decode(seed) + # Verify the given seed type and size are correct + if not (isinstance(seed, bytes) and len(seed) == cls.SEED_SIZE): + raise exc.TypeError( + ( + "PrivateKey seed must be a {} bytes long binary sequence" + ).format(cls.SEED_SIZE) + ) + # generate a raw key pair from the given seed + raw_pk, raw_sk = nacl.bindings.crypto_box_seed_keypair(seed) + # construct a instance from the raw secret key + return cls(raw_sk) + + def __bytes__(self) -> bytes: + return self._private_key + + def __hash__(self) -> int: + return hash((type(self), bytes(self.public_key))) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return False + return self.public_key == other.public_key + + def __ne__(self, other: object) -> bool: + return not (self == other) + + @classmethod + def generate(cls) -> "PrivateKey": + """ + Generates a random :class:`~nacl.public.PrivateKey` object + + :rtype: :class:`~nacl.public.PrivateKey` + """ + return cls(random(PrivateKey.SIZE), encoder=encoding.RawEncoder) + + +_Box = TypeVar("_Box", bound="Box") + + +class Box(encoding.Encodable, StringFixer): + """ + The Box class boxes and unboxes messages between a pair of keys + + The ciphertexts generated by :class:`~nacl.public.Box` include a 16 + byte authenticator which is checked as part of the decryption. An invalid + authenticator will cause the decrypt function to raise an exception. The + authenticator is not a signature. Once you've decrypted the message you've + demonstrated the ability to create arbitrary valid message, so messages you + send are repudiable. For non-repudiable messages, sign them after + encryption. + + :param private_key: :class:`~nacl.public.PrivateKey` used to encrypt and + decrypt messages + :param public_key: :class:`~nacl.public.PublicKey` used to encrypt and + decrypt messages + + :cvar NONCE_SIZE: The size that the nonce is required to be. + """ + + NONCE_SIZE: ClassVar[int] = nacl.bindings.crypto_box_NONCEBYTES + _shared_key: bytes + + def __init__(self, private_key: PrivateKey, public_key: PublicKey): + if not isinstance(private_key, PrivateKey) or not isinstance( + public_key, PublicKey + ): + raise exc.TypeError( + "Box must be created from a PrivateKey and a PublicKey" + ) + self._shared_key = nacl.bindings.crypto_box_beforenm( + public_key.encode(encoder=encoding.RawEncoder), + private_key.encode(encoder=encoding.RawEncoder), + ) + + def __bytes__(self) -> bytes: + return self._shared_key + + @classmethod + def decode( + cls: Type[_Box], encoded: bytes, encoder: Encoder = encoding.RawEncoder + ) -> _Box: + """ + Alternative constructor. Creates a Box from an existing Box's shared key. + """ + # Create an empty box + box: _Box = cls.__new__(cls) + + # Assign our decoded value to the shared key of the box + box._shared_key = encoder.decode(encoded) + + return box + + def encrypt( + self, + plaintext: bytes, + nonce: Optional[bytes] = None, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> EncryptedMessage: + """ + Encrypts the plaintext message using the given `nonce` (or generates + one randomly if omitted) and returns the ciphertext encoded with the + encoder. + + .. warning:: It is **VITALLY** important that the nonce is a nonce, + i.e. it is a number used only once for any given key. If you fail + to do this, you compromise the privacy of the messages encrypted. + + :param plaintext: [:class:`bytes`] The plaintext message to encrypt + :param nonce: [:class:`bytes`] The nonce to use in the encryption + :param encoder: The encoder to use to encode the ciphertext + :rtype: [:class:`nacl.utils.EncryptedMessage`] + """ + if nonce is None: + nonce = random(self.NONCE_SIZE) + + if len(nonce) != self.NONCE_SIZE: + raise exc.ValueError( + "The nonce must be exactly %s bytes long" % self.NONCE_SIZE + ) + + ciphertext = nacl.bindings.crypto_box_easy_afternm( + plaintext, + nonce, + self._shared_key, + ) + + encoded_nonce = encoder.encode(nonce) + encoded_ciphertext = encoder.encode(ciphertext) + + return EncryptedMessage._from_parts( + encoded_nonce, + encoded_ciphertext, + encoder.encode(nonce + ciphertext), + ) + + def decrypt( + self, + ciphertext: bytes, + nonce: Optional[bytes] = None, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> bytes: + """ + Decrypts the ciphertext using the `nonce` (explicitly, when passed as a + parameter or implicitly, when omitted, as part of the ciphertext) and + returns the plaintext message. + + :param ciphertext: [:class:`bytes`] The encrypted message to decrypt + :param nonce: [:class:`bytes`] The nonce used when encrypting the + ciphertext + :param encoder: The encoder used to decode the ciphertext. + :rtype: [:class:`bytes`] + """ + # Decode our ciphertext + ciphertext = encoder.decode(ciphertext) + + if nonce is None: + # If we were given the nonce and ciphertext combined, split them. + nonce = ciphertext[: self.NONCE_SIZE] + ciphertext = ciphertext[self.NONCE_SIZE :] + + if len(nonce) != self.NONCE_SIZE: + raise exc.ValueError( + "The nonce must be exactly %s bytes long" % self.NONCE_SIZE + ) + + plaintext = nacl.bindings.crypto_box_open_easy_afternm( + ciphertext, + nonce, + self._shared_key, + ) + + return plaintext + + def shared_key(self) -> bytes: + """ + Returns the Curve25519 shared secret, that can then be used as a key in + other symmetric ciphers. + + .. warning:: It is **VITALLY** important that you use a nonce with your + symmetric cipher. If you fail to do this, you compromise the + privacy of the messages encrypted. Ensure that the key length of + your cipher is 32 bytes. + :rtype: [:class:`bytes`] + """ + + return self._shared_key + + +_Key = TypeVar("_Key", PublicKey, PrivateKey) + + +class SealedBox(Generic[_Key], encoding.Encodable, StringFixer): + """ + The SealedBox class boxes and unboxes messages addressed to + a specified key-pair by using ephemeral sender's key pairs, + whose private part will be discarded just after encrypting + a single plaintext message. + + The ciphertexts generated by :class:`~nacl.public.SecretBox` include + the public part of the ephemeral key before the :class:`~nacl.public.Box` + ciphertext. + + :param recipient_key: a :class:`~nacl.public.PublicKey` used to encrypt + messages and derive nonces, or a :class:`~nacl.public.PrivateKey` used + to decrypt messages. + + .. versionadded:: 1.2 + """ + + _public_key: bytes + _private_key: Optional[bytes] + + def __init__(self, recipient_key: _Key): + if isinstance(recipient_key, PublicKey): + self._public_key = recipient_key.encode( + encoder=encoding.RawEncoder + ) + self._private_key = None + elif isinstance(recipient_key, PrivateKey): + self._private_key = recipient_key.encode( + encoder=encoding.RawEncoder + ) + self._public_key = recipient_key.public_key.encode( + encoder=encoding.RawEncoder + ) + else: + raise exc.TypeError( + "SealedBox must be created from a PublicKey or a PrivateKey" + ) + + def __bytes__(self) -> bytes: + return self._public_key + + def encrypt( + self, + plaintext: bytes, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> bytes: + """ + Encrypts the plaintext message using a random-generated ephemeral + key pair and returns a "composed ciphertext", containing both + the public part of the key pair and the ciphertext proper, + encoded with the encoder. + + The private part of the ephemeral key-pair will be scrubbed before + returning the ciphertext, therefore, the sender will not be able to + decrypt the generated ciphertext. + + :param plaintext: [:class:`bytes`] The plaintext message to encrypt + :param encoder: The encoder to use to encode the ciphertext + :return bytes: encoded ciphertext + """ + + ciphertext = nacl.bindings.crypto_box_seal(plaintext, self._public_key) + + encoded_ciphertext = encoder.encode(ciphertext) + + return encoded_ciphertext + + def decrypt( + self: "SealedBox[PrivateKey]", + ciphertext: bytes, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> bytes: + """ + Decrypts the ciphertext using the ephemeral public key enclosed + in the ciphertext and the SealedBox private key, returning + the plaintext message. + + :param ciphertext: [:class:`bytes`] The encrypted message to decrypt + :param encoder: The encoder used to decode the ciphertext. + :return bytes: The original plaintext + :raises TypeError: if this SealedBox was created with a + :class:`~nacl.public.PublicKey` rather than a + :class:`~nacl.public.PrivateKey`. + """ + # Decode our ciphertext + ciphertext = encoder.decode(ciphertext) + + if self._private_key is None: + raise TypeError( + "SealedBoxes created with a public key cannot decrypt" + ) + plaintext = nacl.bindings.crypto_box_seal_open( + ciphertext, + self._public_key, + self._private_key, + ) + + return plaintext diff --git a/.venv/lib/python3.9/site-packages/nacl/pwhash/__init__.py b/.venv/lib/python3.9/site-packages/nacl/pwhash/__init__.py new file mode 100644 index 0000000..ffd76a6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/pwhash/__init__.py @@ -0,0 +1,75 @@ +# Copyright 2017 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from nacl.exceptions import CryptPrefixError + +from . import _argon2, argon2i, argon2id, scrypt + +STRPREFIX = argon2id.STRPREFIX + +PWHASH_SIZE = argon2id.PWHASH_SIZE + +assert _argon2.ALG_ARGON2_DEFAULT == _argon2.ALG_ARGON2ID13 +# since version 1.0.15 of libsodium + +PASSWD_MIN = argon2id.PASSWD_MIN +PASSWD_MAX = argon2id.PASSWD_MAX +MEMLIMIT_MAX = argon2id.MEMLIMIT_MAX +MEMLIMIT_MIN = argon2id.MEMLIMIT_MIN +OPSLIMIT_MAX = argon2id.OPSLIMIT_MAX +OPSLIMIT_MIN = argon2id.OPSLIMIT_MIN +OPSLIMIT_INTERACTIVE = argon2id.OPSLIMIT_INTERACTIVE +MEMLIMIT_INTERACTIVE = argon2id.MEMLIMIT_INTERACTIVE +OPSLIMIT_MODERATE = argon2id.OPSLIMIT_MODERATE +MEMLIMIT_MODERATE = argon2id.MEMLIMIT_MODERATE +OPSLIMIT_SENSITIVE = argon2id.OPSLIMIT_SENSITIVE +MEMLIMIT_SENSITIVE = argon2id.MEMLIMIT_SENSITIVE + +str = argon2id.str + +assert argon2i.ALG != argon2id.ALG + +SCRYPT_SALTBYTES = scrypt.SALTBYTES +SCRYPT_PWHASH_SIZE = scrypt.PWHASH_SIZE +SCRYPT_OPSLIMIT_INTERACTIVE = scrypt.OPSLIMIT_INTERACTIVE +SCRYPT_MEMLIMIT_INTERACTIVE = scrypt.MEMLIMIT_INTERACTIVE +SCRYPT_OPSLIMIT_SENSITIVE = scrypt.OPSLIMIT_SENSITIVE +SCRYPT_MEMLIMIT_SENSITIVE = scrypt.MEMLIMIT_SENSITIVE + + +kdf_scryptsalsa208sha256 = scrypt.kdf +scryptsalsa208sha256_str = scrypt.str +verify_scryptsalsa208sha256 = scrypt.verify + + +def verify(password_hash: bytes, password: bytes) -> bool: + """ + Takes a modular crypt encoded stored password hash derived using one + of the algorithms supported by `libsodium` and checks if the user provided + password will hash to the same string when using the parameters saved + in the stored hash + """ + if password_hash.startswith(argon2id.STRPREFIX): + return argon2id.verify(password_hash, password) + elif password_hash.startswith(argon2i.STRPREFIX): + return argon2id.verify(password_hash, password) + elif scrypt.AVAILABLE and password_hash.startswith(scrypt.STRPREFIX): + return scrypt.verify(password_hash, password) + else: + raise ( + CryptPrefixError( + "given password_hash is not in a supported format" + ) + ) diff --git a/.venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..838a7eab69134a41c3287e26a83d0dec3ab47a05 GIT binary patch literal 1721 zcmZuxTXWh*6xIaON<(_2fhJ2dJ;*=?F$-C$4pwlj4i*0JN9nDM z>>8{g<{*cdhdkmstRrr~24VpUh?}s9ScD?t4Y+~01zU*Qu#LC_JBYimOH+dq?n*ndYDdoM?VRG6^{JM+E6Ff;o)VRpW;LydPMtFjvA z1H$>lXSUTRydP$-j-ke=7&EV{L~-UL+D8|Dgo^{hh4fAm@<6$iSxLz6)C=iCzEsQ^ zpNjc|WnQEQ8f(T@=~&tn>4lZZ*z(WvTiHerW%bQJt2&N08B(qjedOC?moPm}T&G^w zx2dgj;WPYPWvxd==r(1}IkIE!cxSrr(b$pS(?y@^#69zwBl;t*^KlUPOrU0Gs=sob z4)<+mJbI-Q&(^zr+8uJ;nOTiFWqQE;a|ffw?vjub$8~3Mg&#-YWJEDB76qU5sW;Cf z3LX%KLO~e@CzxXF$?;}pvr?i8V*1U&8CKyXwZ#vlJ6!jCp`#61%D?Bc5fRODHeBU` zFu^BSA=B`M!WFZ9+B&U1uDuAgbG(?|l%-hQGGy49B8cs0e^ZPP74)0IMfKp+M1IKc_3Bms9IWDz2gj3tt$Gp!CywH2!8o^Zb zeedr61A{w)ejSkRkepF&c%_plM!nXkwXMc~PpFqWX_-s1 z#R+9w$*I{Y$e{7+08_^adM2h?J8_0iV0Orw9IPLti}F{iCV&iD)u9& zSRSmHm3sTp%XZa-f_ZfMvemX0OmWUEU)0{5OCl|2c_mCjE(>q|-!jPuu0)C5LZlAu z9+VKQ*-wfSmy^ST`@ByMzq<#e>sSlRi~9ohW<7qbZJ6#%1?6F?M(dKcf*>ngsl*9Z6^ zTZ3nvW`AU9jxK!5;R-b!qnf`2-^TH!33D|YmqVh|P)O=}M0s&xqQ-g2qP`4TnFKx_ ziJau{4qmkkQ)G0^pP6&x+`PyDw@EI5wuE3bNS7%@P*2dlPb6x|Q5Yc>v;<`o5qTzp zEslhoh!m+vNI04VfRcDL6$vP6d92k{h__MXG1ON~qELzfPspYgL+<<93`IiY6zMVG zl{`4pOhbsog+TLo+Ng@d7(S_>2T;8kU6ykP{aHp-`q;4Q*Omnh4sS z3rNe43r!wSsD{E7-5=qG!=&sk)XW8A-X2vmG7F8CN!x!JvH;89p6!Vqvw7H6svm|z zMs|}cZ%8_fMRq^rE)RwTu2h@*%xx0IsBH~cFtB~zeDT~4N0BFjZR@42c*LHCq}3&7 zOxa0Hb{c{0rdPxYM{z!lIbC#U;$XWw-W@Gf4zW?w&Sqy$B0DqbtuN!@Wycif|cV_ce% zZ$Z^RU!g$0=1==_kKmwqCEknycM}YVkLKg9AMUyJk9!}Ew+=S9ad}>Sd@FVbz{@k> zMBn%yy|eqi{^_uRSFfP%crRYi)s1t>jnv)JH)m!lLYv~kEB$+5uU9}*6_^Scc+BxT Ik<3E&A8M?b#Q*>R literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/argon2i.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/argon2i.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7563fb550c327fce7c68625858f3211b512460e0 GIT binary patch literal 3883 zcmd59OK%!Scz3~o2~J`+=_5^(Y5K5nV^ET&QfU>H#xy~SA2O(M=K|y10R}I-tJ%RW zm5)94*kcayv8VnYu02KSA86Dn`DXS3*d{o)?y}!JznSm-eUOEPtOn2V?}hIDMNRul z4#uB(7<>nx|2F_jvvga-x@rw*4J%23zk!zhch059MR0CPA8 zZ~-p>yofIXyo4_Syo@g^j77Yp+IR33)n3K#s`fqnzG^?f*Hrrzk3p|T zdqFQv9n-ZaAEr1JeeRekd1m;?z7+mL`26btj^>_gLhl;S6Gz&SeqwDQ5>15!7r-N}5fyHxSfEw(GRfJ{_PIcYCmG65FPH&F_1j&8Veto6U%9 zKqHPN&j9LS;1R}A-)C@!=)mcUTc(hJAD0i-I)q!ubRA#tz9|Y>wI=rhm$s`gd#=^D zDe|~`z$_q1t||=T2tPoO9IT;|Hz=uvQnRqNU3*g9sMZ_R&3a|0{IFjAvC>qBpWeGs z**N#!_}q=HbvU;^`_Ne%;}dI@&06(bbdK#*ED;|x)9y2iI3`6cmxFvbr=~zY6#}I1 zhk`A6gp(eU8ZIHQAyB!cv@2(Bqh8+^Xph2A98&7U;*ug$&$xuY|EXT7H8!f7O6TX= zTiy*+P!a==hEy;|DBO^=$dXE6JAo^J{Q!}|1zuze%9rM-h$n)%jx-FDT76ExIZcG5 znh9i6r!6|O`IFnndE747YEReSz~nT9NlqhHN`X_2^D7;tgjQE~%A4z38>_2GP6RA7 z=WV%V0vvXdRr)hAg*}+ys#bndSK6Dv^t29f4L{kMckX zrrUQ!{%i%ftv52V?5iXDLY+ix82MtlE@v9)Nu9(FHr-aIqf9DtB#jeh8%5_pOhIfz zu4(qYNIap;{+AMp1K{~3G(wq_&`1!mgt+wf$n+Keg#tRD+z00+mPM^n3Ee5&RV(?q zVJgUP!=yt@dzjf{jwK@)UNrf@6K=yh>=3`xAa;A0C_j0WPw^z=IX)+WOn*ErK}G^u zX#An^OVGUR6+3Q^7MZv2%jD&9QQTvG=a6(M6~(^C8q7I_WYlOen>O|c1f62xfI0_7 zo9%t|Wzidmj_cejd|mXJplcp6_eq=jMM-5bps5(&777i!?oF=<~|~A!r)9GrPYUO1=4sJ*0Vw8t^=Y)Tci(BFG^M_gGH{U zD2c2JDhLX(#PuZ-?S=J6l0}-ZN}PzIlHw%H zLvRL)NI10+krOVwm4PRD4%EpP0N|^WCJn-sX3a0cT0U{oMx+%hQ|6bUH%!3p9&~(Z zCfe1Mo_WQkq2zDl1!3Zcb7b z+DD^S-`U=&{7~J+^W)tppWy5$VUGIcU3_8t>Em+kaidnn6+9nT4so}}(dyZJ#Cyi-Qhepi*(oQ)yic5P z=IqK08sa(07m~sGseHK0r0R{#Q*>R literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/argon2id.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/argon2id.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..651f52b0dd8d22436372dc14e72820e2531840ee GIT binary patch literal 3901 zcmd59$#NS-bT&(}A}6s)SVDk?0I{4{sw9Le1eHR>B2iVml%+~cU!?X-OB#7JGxW4< zMES^-8^;{tBPaexS5B$o2S`Dg*FB3Q+lrhUGn&`yd;Rv;A`1&y1)ihd3f=8RMfp<< z#-Di@d<$Rj7XVAKR7b(8Y&B>#OLz31felrmMt2UUsM<|;Gk6|GS)2uU0bc-^!#RKp zcmd!=d=cO!dg|Eo=Dt=qG@8EZ3`yRd~+xPKx*?xdOl5-S@oRe*VQm~If(_T0Pq^w0?GpXo5;lOQ$m+zW-PUG0T_s2r+?+M#}EaN{U-B-l~O zuYiz6@T^g0?^8rjvne=fHqq{Y(*QZ1+eUkIfLhG!!LmslhqBe6@B5BTEs5J~#%u!` zaV5DNtI*kH9on1xKw4LIwYypWX?#byxG@g!=`v-%E2 zKJ)f%3wRQ%5`(xr2oZz`tEl7;N^+spENpJoo>bSX^+t80UfC``tXH2_nv(eGz3Y|r zbMH;)u5YdZ-TG{zvo!^;~?8?UW*s08G>F+ZJ(6idr56{V+yNjsnU#s6U7l zTk;7bJtRzALf}MTb4!|6%-lx3e!$T#g&#kl)J@bSR3@Ks4S)ATy;5teS2v{5&$YL_ z6PlpJ2R@Csuw5>3Bi3S9DuMHau>cMPOmYuo5iJ;B_@iW=aNBc*W0=(HGy3&uCIr_u zM-Fw{yfa%qv3*>|t#YmQZ0$8dPD7ZKG!~^4M%B2yB2r3dWo5g(v9`IsvVz1!D6;Lo zskAnSh@BLb{zOdf3?`(im7mn5^(L$#8Ie&x&R?8?N|G0D_eAXVe9xsWN6Vg1S!e{) z>$^OEwgJ4>YX!L(NRoXnDG>)o0iSNmnNE7rCP{!z_tohrlZG5=o|1b@z*o zz5C@CMSs9Mo_nwGRWYzRUG<5%N7^(f3NDKwPsO;v75u?a-?Lix;ov}ChVC0`O3fW> z#|&;nO5O@5q%-eL->Lv09@&+FSM|VbN$GW_4^OFNl3jt29-c*B%`c( zU_-(qh(SSy$}O_W?XglkR(&OY%sIqfRElLK53d-aeiIjwz_e`yg*vR~gd;Enf(wD9 zAQH0+85(l5?Y2CTu+0uN_Yi3l8)yPAtv*~>ppZw2JuKaIz_VzJ^darV)k>DIIMyU1 zv0K3%fwp2%*hr2;H#594Z0P6%`U=PUO(w0!i}Xbv&+yM>ahDq=mf$| zlq)GUbIgRJT}!Sl)GA?cQPhABu2c58rd zOgVa#bE+FSH!+%x0xXQ7z-SuEc)7s2iP3BnamokTqHM2yp-@Tnwy56oHg3IbjIBBtkdHwGG0s$Po}0JC+8$P7f($MGqJzp>^3>5 zME{(0i0$E=jD4JrCS_ih@e_vFiD1io6aEW%Am)Ro05WPu%V`jGS_&Y15rld1>ZxPR ffKM0u;7e<&rlwvA7{4i1`#bjlM*qe$+CTpR@$q4? literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/scrypt.cpython-39.pyc b/.venv/lib/python3.9/site-packages/nacl/pwhash/__pycache__/scrypt.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b73d7564af64a0f6be8b08d0e8d5292284cff79a GIT binary patch literal 5886 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 bool: + """ + Takes a modular crypt encoded argon2i or argon2id stored password hash + and checks if the user provided password will hash to the same string + when using the stored parameters + + :param password_hash: password hash serialized in modular crypt() format + :type password_hash: bytes + :param password: user provided password + :type password: bytes + :rtype: boolean + + .. versionadded:: 1.2 + """ + return nacl.bindings.crypto_pwhash_str_verify(password_hash, password) diff --git a/.venv/lib/python3.9/site-packages/nacl/pwhash/argon2i.py b/.venv/lib/python3.9/site-packages/nacl/pwhash/argon2i.py new file mode 100644 index 0000000..f9b3af7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/pwhash/argon2i.py @@ -0,0 +1,132 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import nacl.bindings +import nacl.encoding + +from . import _argon2 + +ALG = _argon2.ALG_ARGON2I13 +STRPREFIX = nacl.bindings.crypto_pwhash_argon2i_STRPREFIX + +SALTBYTES = _argon2.SALTBYTES + +PASSWD_MIN = _argon2.PASSWD_MIN +PASSWD_MAX = _argon2.PASSWD_MAX + +PWHASH_SIZE = _argon2.PWHASH_SIZE + +BYTES_MIN = _argon2.BYTES_MIN +BYTES_MAX = _argon2.BYTES_MAX + +verify = _argon2.verify + +MEMLIMIT_MAX = nacl.bindings.crypto_pwhash_argon2i_MEMLIMIT_MAX +MEMLIMIT_MIN = nacl.bindings.crypto_pwhash_argon2i_MEMLIMIT_MIN +OPSLIMIT_MAX = nacl.bindings.crypto_pwhash_argon2i_OPSLIMIT_MAX +OPSLIMIT_MIN = nacl.bindings.crypto_pwhash_argon2i_OPSLIMIT_MIN + +OPSLIMIT_INTERACTIVE = nacl.bindings.crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE +MEMLIMIT_INTERACTIVE = nacl.bindings.crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE +OPSLIMIT_SENSITIVE = nacl.bindings.crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE +MEMLIMIT_SENSITIVE = nacl.bindings.crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE + +OPSLIMIT_MODERATE = nacl.bindings.crypto_pwhash_argon2i_OPSLIMIT_MODERATE +MEMLIMIT_MODERATE = nacl.bindings.crypto_pwhash_argon2i_MEMLIMIT_MODERATE + + +def kdf( + size: int, + password: bytes, + salt: bytes, + opslimit: int = OPSLIMIT_SENSITIVE, + memlimit: int = MEMLIMIT_SENSITIVE, + encoder: nacl.encoding.Encoder = nacl.encoding.RawEncoder, +) -> bytes: + """ + Derive a ``size`` bytes long key from a caller-supplied + ``password`` and ``salt`` pair using the argon2i + memory-hard construct. + + the enclosing module provides the constants + + - :py:const:`.OPSLIMIT_INTERACTIVE` + - :py:const:`.MEMLIMIT_INTERACTIVE` + - :py:const:`.OPSLIMIT_MODERATE` + - :py:const:`.MEMLIMIT_MODERATE` + - :py:const:`.OPSLIMIT_SENSITIVE` + - :py:const:`.MEMLIMIT_SENSITIVE` + + as a guidance for correct settings. + + :param size: derived key size, must be between + :py:const:`.BYTES_MIN` and + :py:const:`.BYTES_MAX` + :type size: int + :param password: password used to seed the key derivation procedure; + it length must be between + :py:const:`.PASSWD_MIN` and + :py:const:`.PASSWD_MAX` + :type password: bytes + :param salt: **RANDOM** salt used in the key derivation procedure; + its length must be exactly :py:const:`.SALTBYTES` + :type salt: bytes + :param opslimit: the time component (operation count) + of the key derivation procedure's computational cost; + it must be between + :py:const:`.OPSLIMIT_MIN` and + :py:const:`.OPSLIMIT_MAX` + :type opslimit: int + :param memlimit: the memory occupation component + of the key derivation procedure's computational cost; + it must be between + :py:const:`.MEMLIMIT_MIN` and + :py:const:`.MEMLIMIT_MAX` + :type memlimit: int + :rtype: bytes + + .. versionadded:: 1.2 + """ + + return encoder.encode( + nacl.bindings.crypto_pwhash_alg( + size, password, salt, opslimit, memlimit, ALG + ) + ) + + +def str( + password: bytes, + opslimit: int = OPSLIMIT_INTERACTIVE, + memlimit: int = MEMLIMIT_INTERACTIVE, +) -> bytes: + """ + Hashes a password with a random salt, using the memory-hard + argon2i construct and returning an ascii string that has all + the needed info to check against a future password + + + The default settings for opslimit and memlimit are those deemed + correct for the interactive user login case. + + :param bytes password: + :param int opslimit: + :param int memlimit: + :rtype: bytes + + .. versionadded:: 1.2 + """ + return nacl.bindings.crypto_pwhash_str_alg( + password, opslimit, memlimit, ALG + ) diff --git a/.venv/lib/python3.9/site-packages/nacl/pwhash/argon2id.py b/.venv/lib/python3.9/site-packages/nacl/pwhash/argon2id.py new file mode 100644 index 0000000..f3aa3f7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/pwhash/argon2id.py @@ -0,0 +1,135 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import nacl.bindings +import nacl.encoding + +from . import _argon2 + +ALG = _argon2.ALG_ARGON2ID13 +STRPREFIX = nacl.bindings.crypto_pwhash_argon2id_STRPREFIX + +SALTBYTES = _argon2.SALTBYTES + +PASSWD_MIN = _argon2.PASSWD_MIN +PASSWD_MAX = _argon2.PASSWD_MAX + +PWHASH_SIZE = _argon2.PWHASH_SIZE + +BYTES_MIN = _argon2.BYTES_MIN +BYTES_MAX = _argon2.BYTES_MAX + +verify = _argon2.verify + +MEMLIMIT_MIN = nacl.bindings.crypto_pwhash_argon2id_MEMLIMIT_MIN +MEMLIMIT_MAX = nacl.bindings.crypto_pwhash_argon2id_MEMLIMIT_MAX +OPSLIMIT_MIN = nacl.bindings.crypto_pwhash_argon2id_OPSLIMIT_MIN +OPSLIMIT_MAX = nacl.bindings.crypto_pwhash_argon2id_OPSLIMIT_MAX + +OPSLIMIT_INTERACTIVE = ( + nacl.bindings.crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +) +MEMLIMIT_INTERACTIVE = ( + nacl.bindings.crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +) +OPSLIMIT_SENSITIVE = nacl.bindings.crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +MEMLIMIT_SENSITIVE = nacl.bindings.crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE + +OPSLIMIT_MODERATE = nacl.bindings.crypto_pwhash_argon2id_OPSLIMIT_MODERATE +MEMLIMIT_MODERATE = nacl.bindings.crypto_pwhash_argon2id_MEMLIMIT_MODERATE + + +def kdf( + size: int, + password: bytes, + salt: bytes, + opslimit: int = OPSLIMIT_SENSITIVE, + memlimit: int = MEMLIMIT_SENSITIVE, + encoder: nacl.encoding.Encoder = nacl.encoding.RawEncoder, +) -> bytes: + """ + Derive a ``size`` bytes long key from a caller-supplied + ``password`` and ``salt`` pair using the argon2id + memory-hard construct. + + the enclosing module provides the constants + + - :py:const:`.OPSLIMIT_INTERACTIVE` + - :py:const:`.MEMLIMIT_INTERACTIVE` + - :py:const:`.OPSLIMIT_MODERATE` + - :py:const:`.MEMLIMIT_MODERATE` + - :py:const:`.OPSLIMIT_SENSITIVE` + - :py:const:`.MEMLIMIT_SENSITIVE` + + as a guidance for correct settings. + + :param size: derived key size, must be between + :py:const:`.BYTES_MIN` and + :py:const:`.BYTES_MAX` + :type size: int + :param password: password used to seed the key derivation procedure; + it length must be between + :py:const:`.PASSWD_MIN` and + :py:const:`.PASSWD_MAX` + :type password: bytes + :param salt: **RANDOM** salt used in the key derivation procedure; + its length must be exactly :py:const:`.SALTBYTES` + :type salt: bytes + :param opslimit: the time component (operation count) + of the key derivation procedure's computational cost; + it must be between + :py:const:`.OPSLIMIT_MIN` and + :py:const:`.OPSLIMIT_MAX` + :type opslimit: int + :param memlimit: the memory occupation component + of the key derivation procedure's computational cost; + it must be between + :py:const:`.MEMLIMIT_MIN` and + :py:const:`.MEMLIMIT_MAX` + :type memlimit: int + :rtype: bytes + + .. versionadded:: 1.2 + """ + + return encoder.encode( + nacl.bindings.crypto_pwhash_alg( + size, password, salt, opslimit, memlimit, ALG + ) + ) + + +def str( + password: bytes, + opslimit: int = OPSLIMIT_INTERACTIVE, + memlimit: int = MEMLIMIT_INTERACTIVE, +) -> bytes: + """ + Hashes a password with a random salt, using the memory-hard + argon2id construct and returning an ascii string that has all + the needed info to check against a future password + + The default settings for opslimit and memlimit are those deemed + correct for the interactive user login case. + + :param bytes password: + :param int opslimit: + :param int memlimit: + :rtype: bytes + + .. versionadded:: 1.2 + """ + return nacl.bindings.crypto_pwhash_str_alg( + password, opslimit, memlimit, ALG + ) diff --git a/.venv/lib/python3.9/site-packages/nacl/pwhash/scrypt.py b/.venv/lib/python3.9/site-packages/nacl/pwhash/scrypt.py new file mode 100644 index 0000000..b9fc9d8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/pwhash/scrypt.py @@ -0,0 +1,211 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import cast + +import nacl.bindings +import nacl.encoding +from nacl import exceptions as exc +from nacl.exceptions import ensure + +_strbytes_plus_one = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_STRBYTES + +AVAILABLE = nacl.bindings.has_crypto_pwhash_scryptsalsa208sha256 + +STRPREFIX = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_STRPREFIX + +SALTBYTES = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_SALTBYTES + +PASSWD_MIN = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN +PASSWD_MAX = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX + +PWHASH_SIZE = _strbytes_plus_one - 1 + +BYTES_MIN = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_BYTES_MIN +BYTES_MAX = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_BYTES_MAX + +MEMLIMIT_MIN = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN +MEMLIMIT_MAX = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX +OPSLIMIT_MIN = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN +OPSLIMIT_MAX = nacl.bindings.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX + +OPSLIMIT_INTERACTIVE = ( + nacl.bindings.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE +) +MEMLIMIT_INTERACTIVE = ( + nacl.bindings.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE +) +OPSLIMIT_SENSITIVE = ( + nacl.bindings.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE +) +MEMLIMIT_SENSITIVE = ( + nacl.bindings.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE +) + +OPSLIMIT_MODERATE = 8 * OPSLIMIT_INTERACTIVE +MEMLIMIT_MODERATE = 8 * MEMLIMIT_INTERACTIVE + + +def kdf( + size: int, + password: bytes, + salt: bytes, + opslimit: int = OPSLIMIT_SENSITIVE, + memlimit: int = MEMLIMIT_SENSITIVE, + encoder: nacl.encoding.Encoder = nacl.encoding.RawEncoder, +) -> bytes: + """ + Derive a ``size`` bytes long key from a caller-supplied + ``password`` and ``salt`` pair using the scryptsalsa208sha256 + memory-hard construct. + + + the enclosing module provides the constants + + - :py:const:`.OPSLIMIT_INTERACTIVE` + - :py:const:`.MEMLIMIT_INTERACTIVE` + - :py:const:`.OPSLIMIT_SENSITIVE` + - :py:const:`.MEMLIMIT_SENSITIVE` + - :py:const:`.OPSLIMIT_MODERATE` + - :py:const:`.MEMLIMIT_MODERATE` + + as a guidance for correct settings respectively for the + interactive login and the long term key protecting sensitive data + use cases. + + :param size: derived key size, must be between + :py:const:`.BYTES_MIN` and + :py:const:`.BYTES_MAX` + :type size: int + :param password: password used to seed the key derivation procedure; + it length must be between + :py:const:`.PASSWD_MIN` and + :py:const:`.PASSWD_MAX` + :type password: bytes + :param salt: **RANDOM** salt used in the key derivation procedure; + its length must be exactly :py:const:`.SALTBYTES` + :type salt: bytes + :param opslimit: the time component (operation count) + of the key derivation procedure's computational cost; + it must be between + :py:const:`.OPSLIMIT_MIN` and + :py:const:`.OPSLIMIT_MAX` + :type opslimit: int + :param memlimit: the memory occupation component + of the key derivation procedure's computational cost; + it must be between + :py:const:`.MEMLIMIT_MIN` and + :py:const:`.MEMLIMIT_MAX` + :type memlimit: int + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + + .. versionadded:: 1.2 + """ + ensure( + AVAILABLE, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + len(salt) == SALTBYTES, + "The salt must be exactly %s, not %s bytes long" + % (SALTBYTES, len(salt)), + raising=exc.ValueError, + ) + + n_log2, r, p = nacl.bindings.nacl_bindings_pick_scrypt_params( + opslimit, memlimit + ) + maxmem = memlimit + (2**16) + + return encoder.encode( + nacl.bindings.crypto_pwhash_scryptsalsa208sha256_ll( + password, + salt, + # Cast safety: n_log2 is a positive integer, and so 2 ** n_log2 is also + # a positive integer. Mypy+typeshed can't deduce this, because there's no + # way to for them to know that n_log2: int is positive. + cast(int, 2**n_log2), + r, + p, + maxmem=maxmem, + dklen=size, + ) + ) + + +def str( + password: bytes, + opslimit: int = OPSLIMIT_INTERACTIVE, + memlimit: int = MEMLIMIT_INTERACTIVE, +) -> bytes: + """ + Hashes a password with a random salt, using the memory-hard + scryptsalsa208sha256 construct and returning an ascii string + that has all the needed info to check against a future password + + The default settings for opslimit and memlimit are those deemed + correct for the interactive user login case. + + :param bytes password: + :param int opslimit: + :param int memlimit: + :rtype: bytes + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + + .. versionadded:: 1.2 + """ + ensure( + AVAILABLE, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + return nacl.bindings.crypto_pwhash_scryptsalsa208sha256_str( + password, opslimit, memlimit + ) + + +def verify(password_hash: bytes, password: bytes) -> bool: + """ + Takes the output of scryptsalsa208sha256 and compares it against + a user provided password to see if they are the same + + :param password_hash: bytes + :param password: bytes + :rtype: boolean + :raises nacl.exceptions.UnavailableError: If called when using a + minimal build of libsodium. + + .. versionadded:: 1.2 + """ + ensure( + AVAILABLE, + "Not available in minimal build", + raising=exc.UnavailableError, + ) + + ensure( + len(password_hash) == PWHASH_SIZE, + "The password hash must be exactly %s bytes long" + % nacl.bindings.crypto_pwhash_scryptsalsa208sha256_STRBYTES, + raising=exc.ValueError, + ) + + return nacl.bindings.crypto_pwhash_scryptsalsa208sha256_str_verify( + password_hash, password + ) diff --git a/.venv/lib/python3.9/site-packages/nacl/py.typed b/.venv/lib/python3.9/site-packages/nacl/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/nacl/secret.py b/.venv/lib/python3.9/site-packages/nacl/secret.py new file mode 100644 index 0000000..5c3064f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/secret.py @@ -0,0 +1,305 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import ClassVar, Optional + +import nacl.bindings +from nacl import encoding +from nacl import exceptions as exc +from nacl.utils import EncryptedMessage, StringFixer, random + + +class SecretBox(encoding.Encodable, StringFixer): + """ + The SecretBox class encrypts and decrypts messages using the given secret + key. + + The ciphertexts generated by :class:`~nacl.secret.Secretbox` include a 16 + byte authenticator which is checked as part of the decryption. An invalid + authenticator will cause the decrypt function to raise an exception. The + authenticator is not a signature. Once you've decrypted the message you've + demonstrated the ability to create arbitrary valid message, so messages you + send are repudiable. For non-repudiable messages, sign them after + encryption. + + Encryption is done using `XSalsa20-Poly1305`_, and there are no practical + limits on the number or size of messages (up to 2⁶⁴ messages, each up to 2⁶⁴ + bytes). + + .. _XSalsa20-Poly1305: https://doc.libsodium.org/secret-key_cryptography/secretbox#algorithm-details + + :param key: The secret key used to encrypt and decrypt messages + :param encoder: The encoder class used to decode the given key + + :cvar KEY_SIZE: The size that the key is required to be. + :cvar NONCE_SIZE: The size that the nonce is required to be. + :cvar MACBYTES: The size of the authentication MAC tag in bytes. + :cvar MESSAGEBYTES_MAX: The maximum size of a message which can be + safely encrypted with a single key/nonce + pair. + """ + + KEY_SIZE: ClassVar[int] = nacl.bindings.crypto_secretbox_KEYBYTES + NONCE_SIZE: ClassVar[int] = nacl.bindings.crypto_secretbox_NONCEBYTES + MACBYTES: ClassVar[int] = nacl.bindings.crypto_secretbox_MACBYTES + MESSAGEBYTES_MAX: ClassVar[int] = ( + nacl.bindings.crypto_secretbox_MESSAGEBYTES_MAX + ) + + def __init__( + self, key: bytes, encoder: encoding.Encoder = encoding.RawEncoder + ): + key = encoder.decode(key) + if not isinstance(key, bytes): + raise exc.TypeError("SecretBox must be created from 32 bytes") + + if len(key) != self.KEY_SIZE: + raise exc.ValueError( + "The key must be exactly %s bytes long" % self.KEY_SIZE, + ) + + self._key = key + + def __bytes__(self) -> bytes: + return self._key + + def encrypt( + self, + plaintext: bytes, + nonce: Optional[bytes] = None, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> EncryptedMessage: + """ + Encrypts the plaintext message using the given `nonce` (or generates + one randomly if omitted) and returns the ciphertext encoded with the + encoder. + + .. warning:: It is **VITALLY** important that the nonce is a nonce, + i.e. it is a number used only once for any given key. If you fail + to do this, you compromise the privacy of the messages encrypted. + Give your nonces a different prefix, or have one side use an odd + counter and one an even counter. Just make sure they are different. + + :param plaintext: [:class:`bytes`] The plaintext message to encrypt + :param nonce: [:class:`bytes`] The nonce to use in the encryption + :param encoder: The encoder to use to encode the ciphertext + :rtype: [:class:`nacl.utils.EncryptedMessage`] + """ + if nonce is None: + nonce = random(self.NONCE_SIZE) + + if len(nonce) != self.NONCE_SIZE: + raise exc.ValueError( + "The nonce must be exactly %s bytes long" % self.NONCE_SIZE, + ) + + ciphertext = nacl.bindings.crypto_secretbox_easy( + plaintext, nonce, self._key + ) + + encoded_nonce = encoder.encode(nonce) + encoded_ciphertext = encoder.encode(ciphertext) + + return EncryptedMessage._from_parts( + encoded_nonce, + encoded_ciphertext, + encoder.encode(nonce + ciphertext), + ) + + def decrypt( + self, + ciphertext: bytes, + nonce: Optional[bytes] = None, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> bytes: + """ + Decrypts the ciphertext using the `nonce` (explicitly, when passed as a + parameter or implicitly, when omitted, as part of the ciphertext) and + returns the plaintext message. + + :param ciphertext: [:class:`bytes`] The encrypted message to decrypt + :param nonce: [:class:`bytes`] The nonce used when encrypting the + ciphertext + :param encoder: The encoder used to decode the ciphertext. + :rtype: [:class:`bytes`] + """ + # Decode our ciphertext + ciphertext = encoder.decode(ciphertext) + + if nonce is None: + # If we were given the nonce and ciphertext combined, split them. + nonce = ciphertext[: self.NONCE_SIZE] + ciphertext = ciphertext[self.NONCE_SIZE :] + + if len(nonce) != self.NONCE_SIZE: + raise exc.ValueError( + "The nonce must be exactly %s bytes long" % self.NONCE_SIZE, + ) + + plaintext = nacl.bindings.crypto_secretbox_open_easy( + ciphertext, nonce, self._key + ) + + return plaintext + + +class Aead(encoding.Encodable, StringFixer): + """ + The AEAD class encrypts and decrypts messages using the given secret key. + + Unlike :class:`~nacl.secret.SecretBox`, AEAD supports authenticating + non-confidential data received alongside the message, such as a length + or type tag. + + Like :class:`~nacl.secret.Secretbox`, this class provides authenticated + encryption. An inauthentic message will cause the decrypt function to raise + an exception. + + Likewise, the authenticator should not be mistaken for a (public-key) + signature: recipients (with the ability to decrypt messages) are capable of + creating arbitrary valid message; in particular, this means AEAD messages + are repudiable. For non-repudiable messages, sign them after encryption. + + The cryptosystem used is `XChacha20-Poly1305`_ as specified for + `standardization`_. There are `no practical limits`_ to how much can safely + be encrypted under a given key (up to 2⁶⁴ messages each containing up + to 2⁶⁴ bytes). + + .. _standardization: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha + .. _XChacha20-Poly1305: https://doc.libsodium.org/secret-key_cryptography/aead#xchacha-20-poly1305 + .. _no practical limits: https://doc.libsodium.org/secret-key_cryptography/aead#limitations + + :param key: The secret key used to encrypt and decrypt messages + :param encoder: The encoder class used to decode the given key + + :cvar KEY_SIZE: The size that the key is required to be. + :cvar NONCE_SIZE: The size that the nonce is required to be. + :cvar MACBYTES: The size of the authentication MAC tag in bytes. + :cvar MESSAGEBYTES_MAX: The maximum size of a message which can be + safely encrypted with a single key/nonce + pair. + """ + + KEY_SIZE = nacl.bindings.crypto_aead_xchacha20poly1305_ietf_KEYBYTES + NONCE_SIZE = nacl.bindings.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES + MACBYTES = nacl.bindings.crypto_aead_xchacha20poly1305_ietf_ABYTES + MESSAGEBYTES_MAX = ( + nacl.bindings.crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + ) + + def __init__( + self, + key: bytes, + encoder: encoding.Encoder = encoding.RawEncoder, + ): + key = encoder.decode(key) + if not isinstance(key, bytes): + raise exc.TypeError("AEAD must be created from 32 bytes") + + if len(key) != self.KEY_SIZE: + raise exc.ValueError( + "The key must be exactly %s bytes long" % self.KEY_SIZE, + ) + + self._key = key + + def __bytes__(self) -> bytes: + return self._key + + def encrypt( + self, + plaintext: bytes, + aad: bytes = b"", + nonce: Optional[bytes] = None, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> EncryptedMessage: + """ + Encrypts the plaintext message using the given `nonce` (or generates + one randomly if omitted) and returns the ciphertext encoded with the + encoder. + + .. warning:: It is vitally important for :param nonce: to be unique. + By default, it is generated randomly; [:class:`Aead`] uses XChacha20 + for extended (192b) nonce size, so the risk of reusing random nonces + is negligible. It is *strongly recommended* to keep this behaviour, + as nonce reuse will compromise the privacy of encrypted messages. + Should implicit nonces be inadequate for your application, the + second best option is using split counters; e.g. if sending messages + encrypted under a shared key between 2 users, each user can use the + number of messages it sent so far, prefixed or suffixed with a 1bit + user id. Note that the counter must **never** be rolled back (due + to overflow, on-disk state being rolled back to an earlier backup, + ...) + + :param plaintext: [:class:`bytes`] The plaintext message to encrypt + :param nonce: [:class:`bytes`] The nonce to use in the encryption + :param encoder: The encoder to use to encode the ciphertext + :rtype: [:class:`nacl.utils.EncryptedMessage`] + """ + if nonce is None: + nonce = random(self.NONCE_SIZE) + + if len(nonce) != self.NONCE_SIZE: + raise exc.ValueError( + "The nonce must be exactly %s bytes long" % self.NONCE_SIZE, + ) + + ciphertext = nacl.bindings.crypto_aead_xchacha20poly1305_ietf_encrypt( + plaintext, aad, nonce, self._key + ) + + encoded_nonce = encoder.encode(nonce) + encoded_ciphertext = encoder.encode(ciphertext) + + return EncryptedMessage._from_parts( + encoded_nonce, + encoded_ciphertext, + encoder.encode(nonce + ciphertext), + ) + + def decrypt( + self, + ciphertext: bytes, + aad: bytes = b"", + nonce: Optional[bytes] = None, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> bytes: + """ + Decrypts the ciphertext using the `nonce` (explicitly, when passed as a + parameter or implicitly, when omitted, as part of the ciphertext) and + returns the plaintext message. + + :param ciphertext: [:class:`bytes`] The encrypted message to decrypt + :param nonce: [:class:`bytes`] The nonce used when encrypting the + ciphertext + :param encoder: The encoder used to decode the ciphertext. + :rtype: [:class:`bytes`] + """ + # Decode our ciphertext + ciphertext = encoder.decode(ciphertext) + + if nonce is None: + # If we were given the nonce and ciphertext combined, split them. + nonce = ciphertext[: self.NONCE_SIZE] + ciphertext = ciphertext[self.NONCE_SIZE :] + + if len(nonce) != self.NONCE_SIZE: + raise exc.ValueError( + "The nonce must be exactly %s bytes long" % self.NONCE_SIZE, + ) + + plaintext = nacl.bindings.crypto_aead_xchacha20poly1305_ietf_decrypt( + ciphertext, aad, nonce, self._key + ) + + return plaintext diff --git a/.venv/lib/python3.9/site-packages/nacl/signing.py b/.venv/lib/python3.9/site-packages/nacl/signing.py new file mode 100644 index 0000000..536b369 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/signing.py @@ -0,0 +1,250 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Optional + +import nacl.bindings +from nacl import encoding +from nacl import exceptions as exc +from nacl.public import ( + PrivateKey as _Curve25519_PrivateKey, + PublicKey as _Curve25519_PublicKey, +) +from nacl.utils import StringFixer, random + + +class SignedMessage(bytes): + """ + A bytes subclass that holds a message that has been signed by a + :class:`SigningKey`. + """ + + _signature: bytes + _message: bytes + + @classmethod + def _from_parts( + cls, signature: bytes, message: bytes, combined: bytes + ) -> "SignedMessage": + obj = cls(combined) + obj._signature = signature + obj._message = message + return obj + + @property + def signature(self) -> bytes: + """ + The signature contained within the :class:`SignedMessage`. + """ + return self._signature + + @property + def message(self) -> bytes: + """ + The message contained within the :class:`SignedMessage`. + """ + return self._message + + +class VerifyKey(encoding.Encodable, StringFixer): + """ + The public key counterpart to an Ed25519 SigningKey for producing digital + signatures. + + :param key: [:class:`bytes`] Serialized Ed25519 public key + :param encoder: A class that is able to decode the `key` + """ + + def __init__( + self, key: bytes, encoder: encoding.Encoder = encoding.RawEncoder + ): + # Decode the key + key = encoder.decode(key) + if not isinstance(key, bytes): + raise exc.TypeError("VerifyKey must be created from 32 bytes") + + if len(key) != nacl.bindings.crypto_sign_PUBLICKEYBYTES: + raise exc.ValueError( + "The key must be exactly %s bytes long" + % nacl.bindings.crypto_sign_PUBLICKEYBYTES, + ) + + self._key = key + + def __bytes__(self) -> bytes: + return self._key + + def __hash__(self) -> int: + return hash(bytes(self)) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return False + return nacl.bindings.sodium_memcmp(bytes(self), bytes(other)) + + def __ne__(self, other: object) -> bool: + return not (self == other) + + def verify( + self, + smessage: bytes, + signature: Optional[bytes] = None, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> bytes: + """ + Verifies the signature of a signed message, returning the message + if it has not been tampered with else raising + :class:`~nacl.exceptions.BadSignatureError`. + + :param smessage: [:class:`bytes`] Either the original messaged or a + signature and message concated together. + :param signature: [:class:`bytes`] If an unsigned message is given for + smessage then the detached signature must be provided. + :param encoder: A class that is able to decode the secret message and + signature. + :rtype: :class:`bytes` + """ + if signature is not None: + # If we were given the message and signature separately, validate + # signature size and combine them. + if not isinstance(signature, bytes): + raise exc.TypeError( + "Verification signature must be created from %d bytes" + % nacl.bindings.crypto_sign_BYTES, + ) + + if len(signature) != nacl.bindings.crypto_sign_BYTES: + raise exc.ValueError( + "The signature must be exactly %d bytes long" + % nacl.bindings.crypto_sign_BYTES, + ) + + smessage = signature + encoder.decode(smessage) + else: + # Decode the signed message + smessage = encoder.decode(smessage) + + return nacl.bindings.crypto_sign_open(smessage, self._key) + + def to_curve25519_public_key(self) -> _Curve25519_PublicKey: + """ + Converts a :class:`~nacl.signing.VerifyKey` to a + :class:`~nacl.public.PublicKey` + + :rtype: :class:`~nacl.public.PublicKey` + """ + raw_pk = nacl.bindings.crypto_sign_ed25519_pk_to_curve25519(self._key) + return _Curve25519_PublicKey(raw_pk) + + +class SigningKey(encoding.Encodable, StringFixer): + """ + Private key for producing digital signatures using the Ed25519 algorithm. + + Signing keys are produced from a 32-byte (256-bit) random seed value. This + value can be passed into the :class:`~nacl.signing.SigningKey` as a + :func:`bytes` whose length is 32. + + .. warning:: This **must** be protected and remain secret. Anyone who knows + the value of your :class:`~nacl.signing.SigningKey` or it's seed can + masquerade as you. + + :param seed: [:class:`bytes`] Random 32-byte value (i.e. private key) + :param encoder: A class that is able to decode the seed + + :ivar: verify_key: [:class:`~nacl.signing.VerifyKey`] The verify + (i.e. public) key that corresponds with this signing key. + """ + + def __init__( + self, + seed: bytes, + encoder: encoding.Encoder = encoding.RawEncoder, + ): + # Decode the seed + seed = encoder.decode(seed) + if not isinstance(seed, bytes): + raise exc.TypeError( + "SigningKey must be created from a 32 byte seed" + ) + + # Verify that our seed is the proper size + if len(seed) != nacl.bindings.crypto_sign_SEEDBYTES: + raise exc.ValueError( + "The seed must be exactly %d bytes long" + % nacl.bindings.crypto_sign_SEEDBYTES + ) + + public_key, secret_key = nacl.bindings.crypto_sign_seed_keypair(seed) + + self._seed = seed + self._signing_key = secret_key + self.verify_key = VerifyKey(public_key) + + def __bytes__(self) -> bytes: + return self._seed + + def __hash__(self) -> int: + return hash(bytes(self)) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return False + return nacl.bindings.sodium_memcmp(bytes(self), bytes(other)) + + def __ne__(self, other: object) -> bool: + return not (self == other) + + @classmethod + def generate(cls) -> "SigningKey": + """ + Generates a random :class:`~nacl.signing.SigningKey` object. + + :rtype: :class:`~nacl.signing.SigningKey` + """ + return cls( + random(nacl.bindings.crypto_sign_SEEDBYTES), + encoder=encoding.RawEncoder, + ) + + def sign( + self, + message: bytes, + encoder: encoding.Encoder = encoding.RawEncoder, + ) -> SignedMessage: + """ + Sign a message using this key. + + :param message: [:class:`bytes`] The data to be signed. + :param encoder: A class that is used to encode the signed message. + :rtype: :class:`~nacl.signing.SignedMessage` + """ + raw_signed = nacl.bindings.crypto_sign(message, self._signing_key) + + crypto_sign_BYTES = nacl.bindings.crypto_sign_BYTES + signature = encoder.encode(raw_signed[:crypto_sign_BYTES]) + message = encoder.encode(raw_signed[crypto_sign_BYTES:]) + signed = encoder.encode(raw_signed) + + return SignedMessage._from_parts(signature, message, signed) + + def to_curve25519_private_key(self) -> _Curve25519_PrivateKey: + """ + Converts a :class:`~nacl.signing.SigningKey` to a + :class:`~nacl.public.PrivateKey` + + :rtype: :class:`~nacl.public.PrivateKey` + """ + sk = self._signing_key + raw_private = nacl.bindings.crypto_sign_ed25519_sk_to_curve25519(sk) + return _Curve25519_PrivateKey(raw_private) diff --git a/.venv/lib/python3.9/site-packages/nacl/utils.py b/.venv/lib/python3.9/site-packages/nacl/utils.py new file mode 100644 index 0000000..d19d236 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/nacl/utils.py @@ -0,0 +1,88 @@ +# Copyright 2013 Donald Stufft and individual contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import os +from typing import SupportsBytes, Type, TypeVar + +import nacl.bindings +from nacl import encoding + +_EncryptedMessage = TypeVar("_EncryptedMessage", bound="EncryptedMessage") + + +class EncryptedMessage(bytes): + """ + A bytes subclass that holds a messaged that has been encrypted by a + :class:`SecretBox`. + """ + + _nonce: bytes + _ciphertext: bytes + + @classmethod + def _from_parts( + cls: Type[_EncryptedMessage], + nonce: bytes, + ciphertext: bytes, + combined: bytes, + ) -> _EncryptedMessage: + obj = cls(combined) + obj._nonce = nonce + obj._ciphertext = ciphertext + return obj + + @property + def nonce(self) -> bytes: + """ + The nonce used during the encryption of the :class:`EncryptedMessage`. + """ + return self._nonce + + @property + def ciphertext(self) -> bytes: + """ + The ciphertext contained within the :class:`EncryptedMessage`. + """ + return self._ciphertext + + +class StringFixer: + def __str__(self: SupportsBytes) -> str: + return str(self.__bytes__()) + + +def bytes_as_string(bytes_in: bytes) -> str: + return bytes_in.decode("ascii") + + +def random(size: int = 32) -> bytes: + return os.urandom(size) + + +def randombytes_deterministic( + size: int, seed: bytes, encoder: encoding.Encoder = encoding.RawEncoder +) -> bytes: + """ + Returns ``size`` number of deterministically generated pseudorandom bytes + from a seed + + :param size: int + :param seed: bytes + :param encoder: The encoder class used to encode the produced bytes + :rtype: bytes + """ + raw_data = nacl.bindings.randombytes_buf_deterministic(size, seed) + + return encoder.encode(raw_data) diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/INSTALLER b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/METADATA b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/METADATA new file mode 100644 index 0000000..0639f78 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/METADATA @@ -0,0 +1,194 @@ +Metadata-Version: 2.4 +Name: oracledb +Version: 4.0.1 +Summary: Python interface to Oracle Database +Author-email: Anthony Tuininga +License-Expression: UPL-1.0 OR Apache-2.0 +Project-URL: Homepage, https://oracle.github.io/python-oracledb +Project-URL: Installation, https://python-oracledb.readthedocs.io/en/latest/user_guide/installation.html +Project-URL: Samples, https://github.com/oracle/python-oracledb/tree/main/samples +Project-URL: Documentation, http://python-oracledb.readthedocs.io +Project-URL: Release Notes, https://python-oracledb.readthedocs.io/en/latest/release_notes.html +Project-URL: Issues, https://github.com/oracle/python-oracledb/issues +Project-URL: Source, https://github.com/oracle/python-oracledb +Keywords: Oracle,database +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 3 :: Only +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 :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Cython +Classifier: Topic :: Database +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-File: LICENSE.txt +License-File: THIRD_PARTY_LICENSES.txt +License-File: NOTICE.txt +Requires-Dist: cryptography>=3.2.1 +Requires-Dist: typing_extensions>=4.14.0 +Provides-Extra: test +Requires-Dist: anyio; extra == "test" +Requires-Dist: numpy; extra == "test" +Requires-Dist: pandas; extra == "test" +Requires-Dist: pyarrow; extra == "test" +Requires-Dist: pytest; extra == "test" +Requires-Dist: tox; extra == "test" +Provides-Extra: oci-config +Requires-Dist: oci; extra == "oci-config" +Provides-Extra: oci-auth +Requires-Dist: oci; extra == "oci-auth" +Requires-Dist: requests>=2.33; extra == "oci-auth" +Provides-Extra: azure-config +Requires-Dist: azure-appconfiguration; extra == "azure-config" +Requires-Dist: azure-identity; extra == "azure-config" +Requires-Dist: azure-keyvault-secrets; extra == "azure-config" +Provides-Extra: azure-auth +Requires-Dist: msal; extra == "azure-auth" +Dynamic: license-file + +# python-oracledb + +The python-oracledb driver is the widely used, open-source [Python][python] +extension module allowing Python programs to connect directly to [Oracle +Database][oracledb] with no extra libraries needed. The module is built with +Cython for safety and speed. It is lightweight and high-performance. It is +stable, well tested, and has comprehensive [documentation][documentation]. The +module is maintained by Oracle. + +The module conforms to the [Python Database API 2.0 specification][pep249] with +a considerable number of additions and a couple of minor exclusions, see the +[feature list][features]. It is used by many Python frameworks, SQL generators, +ORMs, and libraries. + +Python-oracledb has a rich feature set which is easy to use. It gives you +control over SQL and PL/SQL statement execution; for working with data frames; +for fast data ingestion; for calling NoSQL-style document APIs; for message +queueing; for receiving database notifications; and for starting and stopping +the database. It also has high availability and security features. Synchronous +and [concurrent][concurrent] coding styles are supported. Database operations +can optionally be [pipelined][pipelining]. + +Python-oracledb is the successor to the now obsolete cx_Oracle driver. + +## Python-oracledb Installation + +Run: + +``` +python -m pip install oracledb --upgrade +``` + +See [Installing python-oracledb][installation] for details. + +## Samples + +Examples can be found in the [/samples][samples] directory and the +[Python and Oracle Database Tutorial][tutorial]. + +A basic example: + +``` +import oracledb +import getpass + +un = "scott" # Sample database username +cs = "localhost/orclpdb" # Sample database connection string +# cs = "localhost/freepdb1" # For Oracle Database Free users +# cs = "localhost/orclpdb1" # Some databases may have this service +pw = getpass.getpass(f"Enter password for {un}@{cs}: ") + +with oracledb.connect(user=un, password=pw, dsn=cs) as connection: + with connection.cursor() as cursor: + sql = "select sysdate from dual" + for r in cursor.execute(sql): + print(r) +``` + +## Dependencies and Interoperability + +- Python versions 3.9 through 3.14. + + Pre-built packages are available on [PyPI][pypi] and other repositories. + + Source code is also available. + + Previous versions of python-oracledb supported older Python versions. + +- Oracle Client libraries are *optional*. + + **Thin mode**: By default python-oracledb runs in a 'Thin' mode which + connects directly to Oracle Database. + + **Thick mode**: Some advanced Oracle Database functionality is currently only + available when optional Oracle Client libraries are loaded by + python-oracledb. Libraries are available in the free [Oracle Instant + Client][instantclient] packages. Python-oracledb can use Oracle Client + Release 19 or later. Older python-oracledb versions supported older Client + versions. + +- Oracle Database + + **Thin mode**: Oracle Database 12.1 or later is required. + + **Thick mode**: Oracle Database 11.2 or later is required, depending on the + Oracle Client release. Oracle Database's standard client-server version + interoperability allows connection to both older and newer databases. For + example when python-oracledb uses Oracle Client 19 libraries, then it can + connect to Oracle Database 11.2 or later. + +## Documentation + +See the [python-oracledb Documentation][documentation] and [Release +Notes][relnotes]. + +## Help + +Questions can be asked in [GitHub Discussions][ghdiscussions]. + +Problem reports can be raised in [GitHub Issues][ghissues]. + +## Tests + +See [/tests][tests] + +## Contributing + +This project welcomes contributions from the community. Before submitting a +pull request, please [review our contribution guide](./CONTRIBUTING.md). + +## Security + +Please consult the [security guide](./SECURITY.md) for our responsible security +vulnerability disclosure process. + +## License + +See [LICENSE][license], [THIRD_PARTY_LICENSES][tplicense], and +[NOTICE][notice]. + +[python]: https://www.python.org/ +[oracledb]: https://www.oracle.com/database/ +[instantclient]: https://www.oracle.com/database/technologies/instant-client.html +[pep249]: https://peps.python.org/pep-0249/ +[documentation]: http://python-oracledb.readthedocs.io +[relnotes]: https://python-oracledb.readthedocs.io/en/latest/release_notes.html +[license]: https://github.com/oracle/python-oracledb/blob/main/LICENSE.txt +[tplicense]: https://github.com/oracle/python-oracledb/blob/main/THIRD_PARTY_LICENSES.txt +[notice]: https://github.com/oracle/python-oracledb/blob/main/NOTICE.txt +[tutorial]: https://oracle.github.io/python-oracledb/samples/tutorial/Python-and-Oracle-Database-The-New-Wave-of-Scripting.html +[ghdiscussions]: https://github.com/oracle/python-oracledb/discussions +[ghissues]: https://github.com/oracle/python-oracledb/issues +[tests]: https://github.com/oracle/python-oracledb/tree/main/tests +[samples]: https://github.com/oracle/python-oracledb/tree/main/samples +[installation]: https://python-oracledb.readthedocs.io/en/latest/user_guide/installation.html +[features]: https://oracle.github.io/python-oracledb/#features +[concurrent]: https://python-oracledb.readthedocs.io/en/latest/user_guide/asyncio.html +[pipelining]: https://python-oracledb.readthedocs.io/en/latest/user_guide/asyncio.html#pipelining-database-operations +[pypi]: https://pypi.org/project/oracledb diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/RECORD b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/RECORD new file mode 100644 index 0000000..bafc85a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/RECORD @@ -0,0 +1,88 @@ +oracledb-4.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +oracledb-4.0.1.dist-info/METADATA,sha256=_iQtTnhNKbjSIUQXK-OLHsqbkw9rNyYKUBEqdPjiyGw,7823 +oracledb-4.0.1.dist-info/RECORD,, +oracledb-4.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +oracledb-4.0.1.dist-info/WHEEL,sha256=OZLCzpIUHEX42a9RmtxH4_auVuxdXhghS0dmIdhxCRQ,184 +oracledb-4.0.1.dist-info/licenses/LICENSE.txt,sha256=KrL2EAZ6IAarB1SPKnKWC-V0tZM2nJNANtbYwDREBco,12570 +oracledb-4.0.1.dist-info/licenses/NOTICE.txt,sha256=phn87I1ycbdHGq5SkA7abFgp0QSXe5LCGN_jVs4Oajg,56 +oracledb-4.0.1.dist-info/licenses/THIRD_PARTY_LICENSES.txt,sha256=4HEKfr0_uq9-7ogpsW4rvhT84jX1BJYnmMrn62GfS8g,90513 +oracledb-4.0.1.dist-info/top_level.txt,sha256=DGlJh0bBtAUvhjHF-pPnrVCzNhW87yzaKB_1_FP28uU,9 +oracledb/__init__.py,sha256=WIdZmAJK3SPr69XaS7Pbl2_HGnaVZ0PJGK6dsdci2J8,39546 +oracledb/__pycache__/__init__.cpython-39.pyc,, +oracledb/__pycache__/aq.cpython-39.pyc,, +oracledb/__pycache__/arrow_array.cpython-39.pyc,, +oracledb/__pycache__/base.cpython-39.pyc,, +oracledb/__pycache__/builtin_hooks.cpython-39.pyc,, +oracledb/__pycache__/connect_params.cpython-39.pyc,, +oracledb/__pycache__/connection.cpython-39.pyc,, +oracledb/__pycache__/constants.cpython-39.pyc,, +oracledb/__pycache__/constructors.cpython-39.pyc,, +oracledb/__pycache__/cursor.cpython-39.pyc,, +oracledb/__pycache__/dataframe.cpython-39.pyc,, +oracledb/__pycache__/dbobject.cpython-39.pyc,, +oracledb/__pycache__/defaults.cpython-39.pyc,, +oracledb/__pycache__/driver_mode.cpython-39.pyc,, +oracledb/__pycache__/dsn.cpython-39.pyc,, +oracledb/__pycache__/end_user_security_context.cpython-39.pyc,, +oracledb/__pycache__/enums.cpython-39.pyc,, +oracledb/__pycache__/errors.cpython-39.pyc,, +oracledb/__pycache__/exceptions.cpython-39.pyc,, +oracledb/__pycache__/fetch_info.cpython-39.pyc,, +oracledb/__pycache__/future.cpython-39.pyc,, +oracledb/__pycache__/lob.cpython-39.pyc,, +oracledb/__pycache__/pipeline.cpython-39.pyc,, +oracledb/__pycache__/pool.cpython-39.pyc,, +oracledb/__pycache__/pool_params.cpython-39.pyc,, +oracledb/__pycache__/secret_values.cpython-39.pyc,, +oracledb/__pycache__/soda.cpython-39.pyc,, +oracledb/__pycache__/sparse_vector.cpython-39.pyc,, +oracledb/__pycache__/subscr.cpython-39.pyc,, +oracledb/__pycache__/utils.cpython-39.pyc,, +oracledb/__pycache__/var.cpython-39.pyc,, +oracledb/__pycache__/version.cpython-39.pyc,, +oracledb/aq.py,sha256=HXlSLz1uDL6uYGFexHkObT-fXSwdIdo9uJeOyq9h9eI,24739 +oracledb/arrow_array.py,sha256=aReIFgQVcQs7TuqpDNL5YBESul8Jp3OA6JyNJV_JSDk,3407 +oracledb/arrow_impl.cpython-39-x86_64-linux-gnu.so,sha256=GXUQDJQH2KEEUSUjtzSGdPOZ0dO4fRZ4S2d0sqdBJgk,272536 +oracledb/base.py,sha256=CCPbBrJyI63yiz3K0r7VnaVmGE7wlwBVqW99N60qilg,2008 +oracledb/base_impl.cpython-39-x86_64-linux-gnu.so,sha256=a2dkB5FAWF141d-68k1SH6Pi87yHqopEvi3GOayqNHU,2266936 +oracledb/builtin_hooks.py,sha256=fb5w5Lxp4WNIqfIOnx4H2e6x4xbJMN8p7jGlYF2JdEQ,3633 +oracledb/connect_params.py,sha256=Qdr6EuwELSeC9A2Dklv-SZfx73mkcbzgGuVMPGQnJD4,53182 +oracledb/connection.py,sha256=U4bOsqIXMLQ4uyD0NuvGMw4V5QSW8LPsyNZuRs8gotk,139988 +oracledb/constants.py,sha256=kTLNvlj7uJ3FW28ACRewMQ6TuIN3cBguTv8cW9wtcPc,2596 +oracledb/constructors.py,sha256=o4mVcdIoKnLDL1CIBgyN9W4MjhKx3XVXNqf2b5Hjt4o,3402 +oracledb/cursor.py,sha256=6gOJungb-EY_nuX06nDkVUGnBQxRpoWKDy-oDV_TrgI,58612 +oracledb/dataframe.py,sha256=aEAH_j6GkRnPPL9QA-ZwiGxkq9R0K0NGfe4hKrOJt4k,4278 +oracledb/dbobject.py,sha256=5eFET9r8TctGXnZPPpJuWsGOQxB6xIQ81vFK-SCP6Yw,13297 +oracledb/defaults.py,sha256=nPxq9fKQVVgDCHxBmem9ZO67SQu_woJOX8z20z1H47g,12456 +oracledb/driver_mode.py,sha256=KGqjzs9g17mb6xjQIbYvc7MSc7QndvN_FzMIVv2gLPE,5502 +oracledb/dsn.py,sha256=KZnIaf9LwiWZy4l5u7ZxpR0DWXY_1r-iaTH1xktqFhE,3231 +oracledb/end_user_security_context.py,sha256=Ysy98Bw0yDTZ1LzfOgYpkX2_JAPlNiCLNQdOu2n4hQg,3763 +oracledb/enums.py,sha256=BC6pzX3o0NpFQTFoDWpkY6UbB_9oQNGCiiLNjk85aZk,2827 +oracledb/errors.py,sha256=AC-QDs9ntdqkgCjfzZR0eptjr_WpkmPzxcooZZWLDpY,41469 +oracledb/exceptions.py,sha256=qUtkmFsByCHW2DsmI6V7cpoBTij5qZG7f0VtaiKlbJ0,4006 +oracledb/fetch_info.py,sha256=NfiwCs6ekaorsMj9QjC55xeE7ZRkGVjGC28YhPaLxNQ,11317 +oracledb/future.py,sha256=prbDZef6NSvfSZBk2bIQSwgTMmsJDdOzmyLaeAub5qs,1721 +oracledb/lob.py,sha256=RvjHeiFClmLLFVhp4YOG7Khd9yqc6ikxZEfbKwxN1Dk,11758 +oracledb/pipeline.py,sha256=UM1FzkRq9_ce9s2vVGvz_qjMLNmawL-7KZn279hwmJs,17926 +oracledb/plugins/__pycache__/azure_config_provider.cpython-39.pyc,, +oracledb/plugins/__pycache__/azure_tokens.cpython-39.pyc,, +oracledb/plugins/__pycache__/end_user_sec_provider.cpython-39.pyc,, +oracledb/plugins/__pycache__/oci_config_provider.cpython-39.pyc,, +oracledb/plugins/__pycache__/oci_tokens.cpython-39.pyc,, +oracledb/plugins/azure_config_provider.py,sha256=e_YBwPakMkAm1wI0KMlRJB5sTgIHvaLXmi-kDBq1Tjg,9764 +oracledb/plugins/azure_tokens.py,sha256=FRSGlqsigF6IEUYbR73Faw4a_eJXLvcgZIgb8AU9bNM,5442 +oracledb/plugins/end_user_sec_provider.py,sha256=xlGbOW2atwroMZv0Rt0iBtBbYrChMbInKdOLLjr1p3o,4832 +oracledb/plugins/oci_config_provider.py,sha256=G8aUihhoTjqe6u9NksA55rzgw1GbfGGYaoCgDlMWv_U,8985 +oracledb/plugins/oci_tokens.py,sha256=1hakiNBdcwl_TFWKi_V1bwce-W_6szzbUo0y9SEyJZs,10489 +oracledb/pool.py,sha256=sjIjWInuKXjwUyM2F9xD1Gwcxna-SNir2EmLKBYwrWU,71269 +oracledb/pool_params.py,sha256=1ETNze9xErxgWlmEqw4rnul-IhG_c2PlZFSHcO17yE8,45697 +oracledb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +oracledb/secret_values.py,sha256=0kdM2xhoW1iPFjsJdO09mOTR3fPIsHUIcLRzNJKHn2g,5664 +oracledb/soda.py,sha256=VtFhWcJoNp7YaU1De6t7n5WIArMz_DlU0PvYgLDi2_c,30637 +oracledb/sparse_vector.py,sha256=aaUbSbP3Jf58ddsb6bAy83y8ptGuMb1ThJ8l_8YzUfg,4126 +oracledb/subscr.py,sha256=I4KNnE8gQzptQ6W06kyS6xF8q0Neg7ufErIfrQrTLf4,12616 +oracledb/thick_impl.cpython-39-x86_64-linux-gnu.so,sha256=FAdCIA7ue31gxuOjwInek1B2jvnyU3iL-a-3i8cE6cE,1319616 +oracledb/thin_impl.cpython-39-x86_64-linux-gnu.so,sha256=YGW4aMqht-4RULWUlWHVIlOifZR44aTt9oikXR9djsU,3230920 +oracledb/utils.py,sha256=3sv5-z_-6vqaXz4IsMR24Q2gtgZEu5W8O0AMMTdWHQg,19647 +oracledb/var.py,sha256=S0aMvacvBLJ6gFEI0X5LMLvzUXh65xzA3tH_Ga2tvqs,6931 +oracledb/version.py,sha256=WhM_HM1zNVYYMTwquoaDyIn22IwH9pCTJahNUu2c-yE,1538 diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/REQUESTED b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/WHEEL b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/WHEEL new file mode 100644 index 0000000..fbcc8e7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/WHEEL @@ -0,0 +1,7 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: false +Tag: cp39-cp39-manylinux_2_17_x86_64 +Tag: cp39-cp39-manylinux2014_x86_64 +Tag: cp39-cp39-manylinux_2_28_x86_64 + diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/LICENSE.txt b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/LICENSE.txt new file mode 100644 index 0000000..b82595e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/LICENSE.txt @@ -0,0 +1,229 @@ +Copyright (c) 2016, 2026 Oracle and/or its affiliates. + +This software is dual-licensed to you under the Universal Permissive License +(UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +either license. + +If you elect to accept the software under the Apache License, Version 2.0, +the following applies: + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + +The Universal Permissive License (UPL), Version 1.0 +=================================================== + +Subject to the condition set forth below, permission is hereby granted to any +person obtaining a copy of this software, associated documentation and/or data +(collectively the "Software"), free of charge and under any and all copyright +rights in the Software, and any and all patent rights owned or freely +licensable by each licensor hereunder covering either (i) the unmodified +Software as contributed to or provided by such licensor, or (ii) the Larger +Works (as defined below), to deal in both + +(a) the Software, and + +(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if + one is included with the Software (each a "Larger Work" to which the + Software is contributed by such licensors), + +without restriction, including without limitation the rights to copy, create +derivative works of, display, perform, and distribute the Software and make, +use, sell, offer for sale, import, export, have made, and have sold the +Software and the Larger Work(s), and to sublicense the foregoing rights on +either these or other terms. + +This license is subject to the following condition: + +The above copyright notice and either this complete permission notice or at a +minimum a reference to the UPL must 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. + + +Apache License +============== + +Version 2.0, January 2004 + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. **Definitions**. + + "License" shall mean the terms and conditions for use, reproduction, and + distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by the + copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all other + entities that control, are controlled by, or are under common control with + that entity. For the purposes of this definition, "control" means (i) the + power, direct or indirect, to cause the direction or management of such + entity, whether by contract or otherwise, or (ii) ownership of fifty + percent (50%) or more of the outstanding shares, or (iii) beneficial + ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity exercising + permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation source, + and configuration files. + + "Object" form shall mean any form resulting from mechanical transformation + or translation of a Source form, including but not limited to compiled + object code, generated documentation, and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or Object form, + made available under the License, as indicated by a copyright notice that + is included in or attached to the work (an example is provided in the + Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object form, + that is based on (or derived from) the Work and for which the editorial + revisions, annotations, elaborations, or other modifications represent, as + a whole, an original work of authorship. For the purposes of this License, + Derivative Works shall not include works that remain separable from, or + merely link (or bind by name) to the interfaces of, the Work and Derivative + Works thereof. + + "Contribution" shall mean any work of authorship, including the original + version of the Work and any modifications or additions to that Work or + Derivative Works thereof, that is intentionally submitted to Licensor for + inclusion in the Work by the copyright owner or by an individual or Legal + Entity authorized to submit on behalf of the copyright owner. For the + purposes of this definition, "submitted" means any form of electronic, + verbal, or written communication sent to the Licensor or its + representatives, including but not limited to communication on electronic + mailing lists, source code control systems, and issue tracking systems that + are managed by, or on behalf of, the Licensor for the purpose of discussing + and improving the Work, but excluding communication that is conspicuously + marked or otherwise designated in writing by the copyright owner as "Not a + Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity on + behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. **Grant of Copyright License.** Subject to the terms and conditions of this + License, each Contributor hereby grants to You a perpetual, worldwide, + non-exclusive, no-charge, royalty-free, irrevocable copyright license to + reproduce, prepare Derivative Works of, publicly display, publicly perform, + sublicense, and distribute the Work and such Derivative Works in Source or + Object form. + +3. **Grant of Patent License.** Subject to the terms and conditions of this + License, each Contributor hereby grants to You a perpetual, worldwide, + non-exclusive, no-charge, royalty-free, irrevocable (except as stated in + this section) patent license to make, have made, use, offer to sell, sell, + import, and otherwise transfer the Work, where such license applies only to + those patent claims licensable by such Contributor that are necessarily + infringed by their Contribution(s) alone or by combination of their + Contribution(s) with the Work to which such Contribution(s) was submitted. + If You institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work or a + Contribution incorporated within the Work constitutes direct or + contributory patent infringement, then any patent licenses granted to You + under this License for that Work shall terminate as of the date such + litigation is filed. + +4. **Redistribution.** You may reproduce and distribute copies of the Work or + Derivative Works thereof in any medium, with or without modifications, and + in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a + copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You + distribute, all copyright, patent, trademark, and attribution notices + from the Source form of the Work, excluding those notices that do not + pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable + copy of the attribution notices contained within such NOTICE file, + excluding those notices that do not pertain to any part of the + Derivative Works, in at least one of the following places: within a + NOTICE text file distributed as part of the Derivative Works; within + the Source form or documentation, if provided along with the Derivative + Works; or, within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents of the + NOTICE file are for informational purposes only and do not modify the + License. You may add Your own attribution notices within Derivative + Works that You distribute, alongside or as an addendum to the NOTICE + text from the Work, provided that such additional attribution notices + cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may + provide additional or different license terms and conditions for use, + reproduction, or distribution of Your modifications, or for any such + Derivative Works as a whole, provided Your use, reproduction, and + distribution of the Work otherwise complies with the conditions stated + in this License. + +5. **Submission of Contributions.** Unless You explicitly state otherwise, any + Contribution intentionally submitted for inclusion in the Work by You to + the Licensor shall be under the terms and conditions of this License, + without any additional terms or conditions. Notwithstanding the above, + nothing herein shall supersede or modify the terms of any separate license + agreement you may have executed with Licensor regarding such Contributions. + +6. **Trademarks.** This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, except + as required for reasonable and customary use in describing the origin of + the Work and reproducing the content of the NOTICE file. + +7. **Disclaimer of Warranty.** Unless required by applicable law or agreed to + in writing, Licensor provides the Work (and each Contributor provides its + Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied, including, without limitation, any + warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or + FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for + determining the appropriateness of using or redistributing the Work and + assume any risks associated with Your exercise of permissions under this + License. + +8. **Limitation of Liability.** In no event and under no legal theory, whether + in tort (including negligence), contract, or otherwise, unless required by + applicable law (such as deliberate and grossly negligent acts) or agreed to + in writing, shall any Contributor be liable to You for damages, including + any direct, indirect, special, incidental, or consequential damages of any + character arising as a result of this License or out of the use or + inability to use the Work (including but not limited to damages for loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor has been + advised of the possibility of such damages. + +9. **Accepting Warranty or Additional Liability.** While redistributing the + Work or Derivative Works thereof, You may choose to offer, and charge a fee + for, acceptance of support, warranty, indemnity, or other liability + obligations and/or rights consistent with this License. However, in + accepting such obligations, You may act only on Your own behalf and on Your + sole responsibility, not on behalf of any other Contributor, and only if + You agree to indemnify, defend, and hold each Contributor harmless for any + liability incurred by, or claims asserted against, such Contributor by + reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/NOTICE.txt b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/NOTICE.txt new file mode 100644 index 0000000..6eba936 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/NOTICE.txt @@ -0,0 +1 @@ +Copyright (c) 2016, 2026, Oracle and/or its affiliates. diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/THIRD_PARTY_LICENSES.txt b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/THIRD_PARTY_LICENSES.txt new file mode 100644 index 0000000..0f8f1a9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/licenses/THIRD_PARTY_LICENSES.txt @@ -0,0 +1,1459 @@ +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- + +Cython + +The following attribution text was taken from Component Cython Version 0.24.1 + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- + +Cryptography + +LICENSE: https://github.com/pyca/cryptography/blob/3.4.x/LICENSE +This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. +The code used in the OS random engine is derived from CPython, and is licensed +under the terms of the PSF License Agreement. +___________________________________________________________________________ + +LICENSE.APACHE: https://github.com/pyca/cryptography/blob/3.4.x/LICENSE.APACHE + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + 1. Definitions. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + END OF TERMS AND CONDITIONS + APPENDIX: How to apply the Apache License to your work. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + https://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +___________________________________________________________________________ + +LICENSE.BSD: https://github.com/pyca/cryptography/blob/3.4.x/LICENSE.BSD + +Copyright (c) Individual 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 PyCA Cryptography 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 OWNER 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. + +============================================================================================= + +Fourth-party dependencies: + +six LICENSE - MIT: https://github.com/benjaminp/six/blob/1.15.0/LICENSE + +Copyright (c) 2010-2020 Benjamin Peterson +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. +___________________________________________________________________________________________ + +cffi LICENSE - MIT: https://github.com/python-cffi/release-doc/blob/master/LICENSE + +MIT License +Copyright (c) 2020 CFFI, Python's C Foreign Function Interface +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. +___________________________________________________________________________________________ + +pycparser LICENSE: https://github.com/eliben/pycparser/blob/master/LICENSE + +pycparser -- A C parser in Python +Copyright (c) 2008-2017, Eli Bendersky +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +* Neither the name of Eli Bendersky 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. + +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- + +Apache Arrow nanoarrow +Copyright 2023 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +---------- + + + +Apache nanoarrow 0.6.0 + + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---------- + +Copyright 2015-2023 Mikkel F. Jørgensen, dvide.com +Copyright (c) 2016 Mikkel Fahnøe Jørgensen, dvide.com +Copyright (c) 2005-2016 Paul Hsieh +Copyright (c) 2024 Mikkel Fahnøe Jørgensen, dvide.com + +---------- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- + +Microsoft Authentication Library (MSAL) for Python + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation. +All rights reserved. + +This code is licensed under the MIT License. + +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. + +----------------------------------------------------------------------------------------------------------------------------- +cryptography + +This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. + + -- Apache License + + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--BSD License + +Copyright (c) Individual 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 PyCA Cryptography 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 OWNER 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. + +----------------------------------------------------------------------------------------------------------------------------- + +cffi + +Except when otherwise stated (look for LICENSE files in directories or +information at the beginning of each file) all software and +documentation is licensed as follows: + + The MIT License + + 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. + +----------------------------------------------------------------------------------------------------------------------------- +pycparser +pycparser -- A C parser in Python + +Copyright (c) 2008-2022, Eli Bendersky +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +* Neither the name of the copyright holder nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------------------------------------------------------- + +PyJWT + +The MIT License (MIT) + +Copyright (c) 2015-2022 José Padilla + +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. + +----------------------------------------------------------------------------------------------------------------------------- + +certifi + +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 $ + + +--Mozilla Public License + +Mozilla Public License
Version 2.0 +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 +* that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or +* 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: +* any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or +* 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: +* 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 +* 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: +* for any code that a Contributor has removed from Covered Software; or +* 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 +* 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: +* 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 +* 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 https://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. + + +----------------------------------------------------------------------------------------------------------------------------- + +charset-normalizer + +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. + +----------------------------------------------------------------------------------------------------------------------------- +idna +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. +--------------------------------------------------------- +urllib + +MIT License + +Copyright (c) 2008-2020 Andrey Petrov and 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. + +----------------------------------------------------------------------------------------------------------------------------- + +requests + +Copyright 2019 Kenneth Reitz + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- diff --git a/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/top_level.txt b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/top_level.txt new file mode 100644 index 0000000..2b2f793 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb-4.0.1.dist-info/top_level.txt @@ -0,0 +1 @@ +oracledb diff --git a/.venv/lib/python3.9/site-packages/oracledb/__init__.py b/.venv/lib/python3.9/site-packages/oracledb/__init__.py new file mode 100644 index 0000000..37d9333 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/__init__.py @@ -0,0 +1,1288 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# __init__.py +# +# Package initialization module. +# ----------------------------------------------------------------------------- + +import collections +import sys +import warnings + +if sys.version_info[:2] < (3, 9): + message = ( + f"Python {sys.version_info[0]}.{sys.version_info[1]} is no longer " + "supported by the Python core team. Therefore, support for it is " + "deprecated in python-oracledb and will be removed in a future release" + ) + warnings.warn(message) + +from . import base_impl, thick_impl, thin_impl + +from .base_impl import ( + ApiType as ApiType, + DbType as DbType, +) + +from .enums import ( + AuthMode as AuthMode, + PipelineOpType as PipelineOpType, + PoolGetMode as PoolGetMode, + Purity as Purity, + VectorFormat as VectorFormat, +) + +from . import constants, version + +from .arrow_array import ( + ArrowArray as ArrowArray, +) + +from .constructors import ( + Binary as Binary, + Date as Date, + DateFromTicks as DateFromTicks, + Time as Time, + TimeFromTicks as TimeFromTicks, + Timestamp as Timestamp, + TimestampFromTicks as TimestampFromTicks, +) + +from .dataframe import ( + DataFrame as DataFrame, +) + +from .dbobject import ( + DbObject as DbObject, + DbObjectAttr as DbObjectAttr, + DbObjectType as DbObjectType, +) + +from .defaults import ( + Defaults as Defaults, +) + +from .driver_mode import ( + is_thin_mode as is_thin_mode, +) + +from .dsn import ( + makedsn as makedsn, +) + +from .end_user_security_context import ( + create_end_user_security_context as create_end_user_security_context, +) + +from .errors import ( + _Error as _Error, +) + +from .exceptions import ( + Warning as Warning, + Error as Error, + DatabaseError as DatabaseError, + DataError as DataError, + IntegrityError as IntegrityError, + InterfaceError as InterfaceError, + InternalError as InternalError, + NotSupportedError as NotSupportedError, + OperationalError as OperationalError, + ProgrammingError as ProgrammingError, +) + +from .fetch_info import ( + FetchInfo as FetchInfo, +) + +from .future import ( + __future__ as __future__, +) + +from .lob import ( + LOB as LOB, + AsyncLOB as AsyncLOB, +) + +from .pipeline import ( + Pipeline as Pipeline, + PipelineOp as PipelineOp, + PipelineOpResult as PipelineOpResult, + create_pipeline as create_pipeline, +) + +from .secret_values import ( + get_secret as get_secret, + save_secret as save_secret, + SecretValue as SecretValue, +) + +from .soda import ( + SodaDatabase as SodaDatabase, + SodaCollection as SodaCollection, + SodaDocument as SodaDocument, + SodaDocCursor as SodaDocCursor, + SodaOperation as SodaOperation, +) + +from .sparse_vector import ( + SparseVector as SparseVector, +) + +from .utils import ( + clientversion as clientversion, + enable_thin_mode as enable_thin_mode, + enquote_literal as enquote_literal, + enquote_name as enquote_name, + from_arrow as from_arrow, + init_oracle_client as init_oracle_client, + is_qualified_sql_name as is_qualified_sql_name, + is_simple_sql_name as is_simple_sql_name, + register_params_hook as register_params_hook, + register_password_type as register_password_type, + register_protocol as register_protocol, + unregister_params_hook as unregister_params_hook, +) + +from .var import ( + Var as Var, +) + +# module attributes +apilevel: str = "2.0" +""" +A string constant stating the Python DB API level supported by python-oracledb. +""" + +defaults: Defaults = Defaults() +""" +The defaults object for setting default behaviors of python-oracledb. +""" + +paramstyle: str = "named" +""" +A string constant stating the type of parameter marker formatting expected by +the interface. Currently 'named' as in 'where name = :name'. +""" + +threadsafety: int = 2 +""" +An integer constant stating the level of thread safety that python-oracledb +supports. Currently 2, which means that threads may share the module and +connections, but not cursors. Sharing means that a thread may use a resource +without wrapping it using a mutex semaphore to implement resource locking. +""" + +__version__: str = version.__version__ +""" +A string constant stating the version of the module. +""" + + +# API types +BINARY: ApiType = base_impl.BINARY +""" +This type object is used to describe columns in a database that contain binary +data. The database types :data:`DB_TYPE_RAW` and :data:`DB_TYPE_LONG_RAW` will +compare equal to this value. If a variable is created with this type, the +database type :data:`DB_TYPE_RAW` will be used. +""" + +DATETIME: ApiType = base_impl.DATETIME +""" +This type object is used to describe columns in a database that are dates. The +database types :data:`DB_TYPE_DATE`, :data:`DB_TYPE_TIMESTAMP`, +:data:`DB_TYPE_TIMESTAMP_LTZ` and :data:`DB_TYPE_TIMESTAMP_TZ` will all compare +equal to this value. If a variable is created with this type, the database type +:data:`DB_TYPE_DATE` will be used. +""" + +NUMBER: ApiType = base_impl.NUMBER +""" +This type object is used to describe columns in a database that are numbers. +The database types :data:`DB_TYPE_BINARY_DOUBLE`, :data:`DB_TYPE_BINARY_FLOAT`, +:data:`DB_TYPE_BINARY_INTEGER` and :data:`DB_TYPE_NUMBER` will all compare +equal to this value. If a variable is created with this type, the database type +:data:`DB_TYPE_NUMBER` will be used. +""" + +ROWID: ApiType = base_impl.ROWID +""" +This type object is used to describe the pseudo column "rowid". The database +types :data:`DB_TYPE_ROWID` and :data:`DB_TYPE_UROWID` will compare equal to +this value. If a variable is created with this type, the database type +:data:`DB_TYPE_VARCHAR` will be used. +""" + +STRING: ApiType = base_impl.STRING +""" +This type object is used to describe columns in a database that are strings. +The database types :data:`DB_TYPE_CHAR`, :data:`DB_TYPE_LONG`, +:data:`DB_TYPE_NCHAR`, :data:`DB_TYPE_NVARCHAR` and :data:`DB_TYPE_VARCHAR` +will all compare equal to this value. If a variable is created with this type, +the database type :data:`DB_TYPE_VARCHAR` will be used. +""" + + +# connection authorization modes +AUTH_MODE_DEFAULT: AuthMode = AuthMode.DEFAULT +""" +This constant is used to specify that default authentication is to take place. +This is the default value if no mode is passed at all. + +It can be used for standalone and pooled connections in python-oracledb Thin +mode, and for standalone connections in Thick mode. + +This constant deprecates the ``DEFAULT_AUTH`` constant that was used in the +obsolete cx_Oracle driver, and was the default ``mode`` value. +""" + +AUTH_MODE_PRELIM: AuthMode = AuthMode.PRELIM +""" +This constant is used to specify that preliminary authentication is to be used. +This is needed for performing database startup and shutdown. + +It can only be used in python-oracledb Thick mode for standalone connections. + +This constant deprecates the ``PRELIM_AUTH`` constant that was used in the +obsolete cx_Oracle driver. +""" + +AUTH_MODE_SYSASM: AuthMode = AuthMode.SYSASM +""" +This constant is used to specify that SYSASM access is to be acquired. + +It can be used for standalone and pooled connections in python-oracledb Thin +mode, and for standalone connections in Thick mode. + +This constant deprecates the ``SYSASM`` constant that was used in the obsolete +cx_Oracle driver. +""" + +AUTH_MODE_SYSBKP: AuthMode = AuthMode.SYSBKP +""" +This constant is used to specify that SYSBACKUP access is to be acquired. + +It can be used for standalone and pooled connections in python-oracledb Thin +mode, and for standalone connections in Thick mode. + +This constant deprecates the ``SYSBKP`` constant that was used in the +obsolete cx_Oracle driver. +""" + +AUTH_MODE_SYSDBA: AuthMode = AuthMode.SYSDBA +""" +This constant is used to specify that SYSDBA access is to be acquired. + +It can be used for standalone and pooled connections in python-oracledb Thin +mode, and for standalone connections in Thick mode. + +This constant deprecates the ``SYSDBA`` constant that was used in the obsolete +cx_Oracle driver. +""" + +AUTH_MODE_SYSDGD: AuthMode = AuthMode.SYSDGD +""" +This constant is used to specify that SYSDG access is to be acquired. + +It can be used for standalone and pooled connections in python-oracledb Thin +mode, and for standalone connections in Thick mode. + +This constant deprecates the ``SYSDGD`` constant that was used in the obsolete +cx_Oracle driver. +""" + +AUTH_MODE_SYSKMT: AuthMode = AuthMode.SYSKMT +""" +This constant is used to specify that SYSKM access is to be acquired. + +It can be used for standalone and pooled connections in python-oracledb Thin +mode, and for standalone connections in Thick mode. + +This constant deprecates the ``SYSKMT`` constant that was used in the obsolete +cx_Oracle driver. +""" + +AUTH_MODE_SYSOPER: AuthMode = AuthMode.SYSOPER +""" +This constant is used to specify that SYSOPER access is to be acquired. + +It can be used for standalone and pooled connections in python-oracledb Thin +mode, and for standalone connections in Thick mode. + +This constant deprecates the ``SYSOPER`` constant that was used in the obsolete +cx_Oracle driver. +""" + +AUTH_MODE_SYSRAC: AuthMode = AuthMode.SYSRAC +""" +This constant is used to specify that SYSRAC access is to be acquired. + +It can be used for standalone and pooled connections in python-oracledb Thin +mode, and for standalone connections in Thick mode. + +This constant deprecates the ``SYSRAC`` constant that was used in the obsolete +cx_Oracle driver. +""" + + +# database shutdown modes +DBSHUTDOWN_ABORT: int = constants.DBSHUTDOWN_ABORT +""" +This constant is used to specify that the caller should not wait for current +processing to complete or for users to disconnect from the database. This +should only be used in unusual circumstances since database recovery may be +necessary upon next startup. +""" + +DBSHUTDOWN_FINAL: int = constants.DBSHUTDOWN_FINAL +""" +This constant is used to specify that the instance can be truly halted. This +should only be done after the database has been shutdown with one of the other +modes (except abort) and the database has been closed and dismounted using the +appropriate SQL commands. +""" + +DBSHUTDOWN_IMMEDIATE: int = constants.DBSHUTDOWN_IMMEDIATE +""" +This constant is used to specify that all uncommitted transactions should be +rolled back and any connected users should be disconnected. +""" + +DBSHUTDOWN_TRANSACTIONAL: int = constants.DBSHUTDOWN_TRANSACTIONAL +""" +This constant is used to specify that further connections to the database +should be prohibited and no new transactions should be allowed. It then waits +for all active transactions to complete. +""" + +DBSHUTDOWN_TRANSACTIONAL_LOCAL: int = constants.DBSHUTDOWN_TRANSACTIONAL_LOCAL +""" +This constant is used to specify that further connections to the database +should be prohibited and no new transactions should be allowed. It then waits +for only local active transactions to complete. +""" + + +# database types +DB_TYPE_BFILE: DbType = base_impl.DB_TYPE_BFILE +""" +Describes columns, attributes or array elements in a database that are of type +BFILE. It will compare equal to the DB API type :data:`BINARY`. +""" + +DB_TYPE_BINARY_DOUBLE: DbType = base_impl.DB_TYPE_BINARY_DOUBLE +""" +Describes columns, attributes or array elements in a database that are of type +BINARY_DOUBLE. It will compare equal to the DB API type :data:`NUMBER`. +""" + +DB_TYPE_BINARY_FLOAT: DbType = base_impl.DB_TYPE_BINARY_FLOAT +""" +Describes columns, attributes or array elements in a database that are of type +BINARY_FLOAT. It will compare equal to the DB API type :data:`NUMBER`. +""" + +DB_TYPE_BINARY_INTEGER: DbType = base_impl.DB_TYPE_BINARY_INTEGER +""" +Describes attributes or array elements in a database that are of type +BINARY_INTEGER. It will compare equal to the DB API type :data:`NUMBER`. +""" + +DB_TYPE_BLOB: DbType = base_impl.DB_TYPE_BLOB +""" +Describes columns, attributes or array elements in a database that are of type +BLOB. It will compare equal to the DB API type :data:`BINARY`. +""" + +DB_TYPE_BOOLEAN: DbType = base_impl.DB_TYPE_BOOLEAN +""" +Describes attributes or array elements in a database that are of type BOOLEAN. +It is only available in Oracle 12.1 and higher and only within PL/SQL. +""" + +DB_TYPE_CHAR: DbType = base_impl.DB_TYPE_CHAR +""" +Describes columns, attributes or array elements in a database that are of type +CHAR. It will compare equal to the DB API type :data:`STRING`. + +Note that these are fixed length string values and behave differently from +VARCHAR2. +""" + +DB_TYPE_CLOB: DbType = base_impl.DB_TYPE_CLOB +""" +Describes columns, attributes or array elements in a database that are of type +CLOB. It will compare equal to the DB API type :data:`STRING`. +""" + +DB_TYPE_CURSOR: DbType = base_impl.DB_TYPE_CURSOR +""" +Describes columns in a database that are of type CURSOR. In PL/SQL, these are +known as REF CURSOR. +""" + +DB_TYPE_DATE: DbType = base_impl.DB_TYPE_DATE +""" +Describes columns, attributes or array elements in a database that are of type +DATE. It will compare equal to the DB API type :data:`DATETIME`. +""" + +DB_TYPE_INTERVAL_DS: DbType = base_impl.DB_TYPE_INTERVAL_DS +""" +Describes columns, attributes or array elements in a database that are of type +INTERVAL DAY TO SECOND. +""" + +DB_TYPE_INTERVAL_YM: DbType = base_impl.DB_TYPE_INTERVAL_YM +""" +Describes columns, attributes or array elements in a database that are of type +INTERVAL YEAR TO MONTH. +""" + +DB_TYPE_JSON: DbType = base_impl.DB_TYPE_JSON +""" +Describes columns in a database that are of type JSON (with Oracle Database 21 +or later). +""" + +DB_TYPE_LONG: DbType = base_impl.DB_TYPE_LONG +""" +Describes columns, attributes or array elements in a database that are of type +LONG. It will compare equal to the DB API type :data:`STRING`. +""" + +DB_TYPE_LONG_NVARCHAR: DbType = base_impl.DB_TYPE_LONG_NVARCHAR +""" +This constant can be used in output type handlers when fetching NCLOB columns +as a string. (Note a type handler is not needed if +:data:`oracledb.defaults.fetch_lobs `, or the equivalent +execution parameter, is set to *False*). For IN binds, this constant can be +used to create a bind variable in :meth:`Cursor.var()` or via +:meth:`Cursor.setinputsizes()`. The ``DB_TYPE_LONG_NVARCHAR`` value won't be +shown in query metadata since it is not a database type. + +It will compare equal to the DB API type :data:`STRING`. +""" + +DB_TYPE_LONG_RAW: DbType = base_impl.DB_TYPE_LONG_RAW +""" +Describes columns, attributes or array elements in a database that are of type +LONG RAW. It will compare equal to the DB API type :data:`BINARY`. +""" + +DB_TYPE_NCHAR: DbType = base_impl.DB_TYPE_NCHAR +""" +Describes columns, attributes or array elements in a database that are of type +NCHAR. It will compare equal to the DB API type :data:`STRING`. + +Note that these are fixed length string values and behave differently from +NVARCHAR2. +""" + +DB_TYPE_NCLOB: DbType = base_impl.DB_TYPE_NCLOB +""" +Describes columns, attributes or array elements in a database that are of type +NCLOB. It will compare equal to the DB API type :data:`STRING`. +""" + +DB_TYPE_NUMBER: DbType = base_impl.DB_TYPE_NUMBER +""" +Describes columns, attributes or array elements in a database that are of type +NUMBER. It will compare equal to the DB API type :data:`NUMBER`. +""" + +DB_TYPE_NVARCHAR: DbType = base_impl.DB_TYPE_NVARCHAR +""" +Describes columns, attributes or array elements in a database that are of type +NVARCHAR2. It will compare equal to the DB API type :data:`STRING`. +""" + +DB_TYPE_OBJECT: DbType = base_impl.DB_TYPE_OBJECT +""" +Describes columns, attributes or array elements in a database that are an +instance of a named SQL or PL/SQL type. +""" + +DB_TYPE_RAW: DbType = base_impl.DB_TYPE_RAW +""" +Describes columns, attributes or array elements in a database that are of type +RAW. It will compare equal to the DB API type :data:`BINARY`. +""" + +DB_TYPE_ROWID: DbType = base_impl.DB_TYPE_ROWID +""" +Describes columns, attributes or array elements in a database that are of type +ROWID or UROWID. It will compare equal to the DB API type :data:`ROWID`. +""" + +DB_TYPE_TIMESTAMP: DbType = base_impl.DB_TYPE_TIMESTAMP +""" +Describes columns, attributes or array elements in a database that are of type +TIMESTAMP. It will compare equal to the DB API type :data:`DATETIME`. +""" + +DB_TYPE_TIMESTAMP_LTZ: DbType = base_impl.DB_TYPE_TIMESTAMP_LTZ +""" +Describes columns, attributes or array elements in a database that are of type +TIMESTAMP WITH LOCAL TIME ZONE. It will compare equal to the DB API type +:data:`DATETIME`. +""" + +DB_TYPE_TIMESTAMP_TZ: DbType = base_impl.DB_TYPE_TIMESTAMP_TZ +""" +Describes columns, attributes or array elements in a database that are of type +TIMESTAMP WITH TIME ZONE. It will compare equal to the DB API type +:data:`DATETIME`. +""" + +DB_TYPE_UNKNOWN: DbType = base_impl.DB_TYPE_UNKNOWN +""" +Describes columns, attributes or array elements in a database that are of an +unknown type. +""" + +DB_TYPE_UROWID: DbType = base_impl.DB_TYPE_UROWID +""" +Describes columns, attributes or array elements in a database that are of type +UROWID. It will compare equal to the DB API type :data:`ROWID`. +""" + +DB_TYPE_VARCHAR: DbType = base_impl.DB_TYPE_VARCHAR +""" +Describes columns, attributes or array elements in a database that are of type +VARCHAR2. It will compare equal to the DB API type :data:`STRING`. +""" + +DB_TYPE_VECTOR: DbType = base_impl.DB_TYPE_VECTOR +""" +Describes columns, attributes or array elements in a database that are of type +VECTOR (with Oracle Database 23 or later). +""" + +DB_TYPE_XMLTYPE: DbType = base_impl.DB_TYPE_XMLTYPE +""" +Describes columns, attributes or array elements in a database that are of type +SYS.XMLTYPE. +""" + + +# AQ dequeue modes +DEQ_BROWSE: int = constants.DEQ_BROWSE +""" +This constant is used to specify that dequeue should read the message without +acquiring any lock on the message (equivalent to a select statement). +""" + +DEQ_LOCKED: int = constants.DEQ_LOCKED +""" +This constant is used to specify that dequeue should read and obtain a write +lock on the message for the duration of the transaction (equivalent to a select +for update statement). +""" + +DEQ_REMOVE: int = constants.DEQ_REMOVE +""" +This constant is used to specify that dequeue should read the message and +update or delete it. This is the default value. +""" + +DEQ_REMOVE_NODATA: int = constants.DEQ_REMOVE_NODATA +""" +This constant is used to specify that dequeue should confirm receipt of the +message but not deliver the actual message content. +""" + + +# AQ dequeue navigation modes +DEQ_FIRST_MSG: int = constants.DEQ_FIRST_MSG +""" +This constant is used to specify that dequeue should retrieve the first +available message that matches the search criteria. This resets the +position to the beginning of the queue. +""" + +DEQ_NEXT_MSG: int = constants.DEQ_NEXT_MSG +""" +This constant is used to specify that dequeue should retrieve the next +available message that matches the search criteria. If the previous message +belongs to a message group, AQ retrieves the next available message that +matches the search criteria and belongs to the message group. This is the +default. +""" + +DEQ_NEXT_TRANSACTION: int = constants.DEQ_NEXT_TRANSACTION +""" +This constant is used to specify that dequeue should skip the remainder of the +transaction group and retrieve the first message of the next transaction group. +This option can only be used if message grouping is enabled for the current +queue. +""" + + +# AQ dequeue visibility modes +DEQ_IMMEDIATE: int = constants.DEQ_IMMEDIATE +""" +This constant is used to specify that dequeue should perform its work as part +of an independent transaction. +""" + +DEQ_ON_COMMIT: int = constants.DEQ_ON_COMMIT +""" +This constant is used to specify that dequeue should be part of the current +transaction. This is the default value. +""" + + +# AQ dequeue wait modes +DEQ_NO_WAIT: int = constants.DEQ_NO_WAIT +""" +This constant is used to specify that dequeue not wait for messages to be +available for dequeuing. +""" + +DEQ_WAIT_FOREVER: int = constants.DEQ_WAIT_FOREVER +""" +This constant is used to specify that dequeue should wait forever for messages +to be available for dequeuing. This is the default value. +""" + + +# AQ enqueue visibility modes +ENQ_IMMEDIATE: int = constants.ENQ_IMMEDIATE +""" +This constant is used to specify that enqueue should perform its work as +part of an independent transaction. + +The use of this constant with bulk enqueuing is only supported in +python-oracledb Thick mode. +""" + +ENQ_ON_COMMIT: int = constants.ENQ_ON_COMMIT +""" +This constant is used to specify that enqueue should be part of the current +transaction. This is the default value. +""" + + +# event types +EVENT_AQ: int = base_impl.EVENT_AQ +""" +This constant is used to specify that one or more messages are available for +dequeuing on the queue specified when the subscription was created. +""" + +EVENT_DEREG: int = base_impl.EVENT_DEREG +""" +This constant is used to specify that the subscription has been deregistered +and no further notifications will be sent. +""" + +EVENT_NONE: int = base_impl.EVENT_NONE +""" +This constant is used to specify no information is available about the event. +""" + +EVENT_OBJCHANGE: int = base_impl.EVENT_OBJCHANGE +""" +This constant is used to specify that a database change has taken place on a +table registered with the :meth:`Subscription.registerquery()` method. +""" + +EVENT_QUERYCHANGE: int = base_impl.EVENT_QUERYCHANGE +""" +This constant is used to specify that the result set of a query registered with +the :meth:`Subscription.registerquery()` method has been changed. +""" + +EVENT_SHUTDOWN: int = base_impl.EVENT_SHUTDOWN +""" +This constant is used to specify that the instance is in the process of being +shut down. +""" + +EVENT_SHUTDOWN_ANY: int = base_impl.EVENT_SHUTDOWN_ANY +""" +This constant is used to specify that any instance (when running RAC) is in the +process of being shut down. +""" + +EVENT_STARTUP: int = base_impl.EVENT_STARTUP +""" +This constant is used to specify that the instance is in the process of being +started up. +""" + + +# AQ delivery modes +MSG_BUFFERED: int = constants.MSG_BUFFERED +""" +This constant is used to specify that enqueue or dequeue operations should +enqueue or dequeue buffered messages, respectively. For multi-consumer queues, +a `subscriber `__ with buffered delivery mode +needs to be created prior to enqueuing buffered messages. + +This mode is not supported for bulk array operations in python-oracledb Thick +mode, and for JSON payloads. +""" + +MSG_PERSISTENT: int = constants.MSG_PERSISTENT +""" +This constant is used to specify that enqueue/dequeue operations should enqueue +or dequeue persistent messages. This is the default value. +""" + +MSG_PERSISTENT_OR_BUFFERED: int = constants.MSG_PERSISTENT_OR_BUFFERED +""" +This constant is used to specify that dequeue operations should dequeue either +persistent or buffered messages. +""" + + +# AQ message states +MSG_EXPIRED: int = constants.MSG_EXPIRED +""" +This constant is used to specify that the message has been moved to the +exception queue. +""" + +MSG_PROCESSED: int = constants.MSG_PROCESSED +""" +This constant is used to specify that the message has been processed and has +been retained. +""" + +MSG_READY: int = constants.MSG_READY +""" +This constant is used to specify that the message is ready to be processed. +""" + +MSG_WAITING: int = constants.MSG_WAITING +""" +This constant is used to specify that the message delay has not yet been +reached. +""" + + +# other AQ constants +MSG_NO_DELAY: int = constants.MSG_NO_DELAY +""" +This constant is a possible value for the :attr:`~MessageProperties.delay` +attribute of the message properties object passed as the ``msgproperties`` +parameter to the :meth:`Queue.deqone()` or :meth:`Queue.deqmany()` and +:meth:`Queue.enqone()` or :meth:`Queue.enqmany()` methods. It specifies that +no delay should be imposed and the message should be immediately available for +dequeuing. This is also the default value. +""" + +MSG_NO_EXPIRATION: int = constants.MSG_NO_EXPIRATION +""" +This constant is a possible value for the :attr:`~MessageProperties.expiration` +attribute of the message properties object passed as the ``msgproperties`` +parameter to the :meth:`Queue.deqone()` or :meth:`Queue.deqmany()` and +:meth:`Queue.enqone()` or :meth:`Queue.enqmany()` methods. It specifies that +the message never expires. This is also the default value. +""" + + +# operation codes (CQN) +OPCODE_ALLOPS: int = base_impl.OPCODE_ALLOPS +""" +This constant is used to specify that messages should be sent for all +operations. +""" + +OPCODE_ALLROWS: int = base_impl.OPCODE_ALLROWS +""" +This constant is used to specify that the table or query has been completely +invalidated. +""" + +OPCODE_ALTER: int = base_impl.OPCODE_ALTER +""" +This constant is used to specify that messages should be sent when a registered +table has been altered in some fashion by DDL, or that the message identifies a +table that has been altered. +""" + +OPCODE_DELETE: int = base_impl.OPCODE_DELETE +""" +This constant is used to specify that messages should be sent when data is +deleted, or that the message identifies a row that has been deleted. +""" + +OPCODE_DROP: int = base_impl.OPCODE_DROP +""" +This constant is used to specify that messages should be sent when a registered +table has been dropped, or that the message identifies a table that has been +dropped. +""" + +OPCODE_INSERT: int = base_impl.OPCODE_INSERT +""" +This constant is used to specify that messages should be sent when data is +inserted, or that the message identifies a row that has been inserted. +""" + +OPCODE_UPDATE: int = base_impl.OPCODE_UPDATE +""" +This constant is used to specify that messages should be sent when data is +updated, or that the message identifies a row that has been updated. +""" + + +# pipeline operation types +PIPELINE_OP_TYPE_CALL_FUNC: PipelineOpType = PipelineOpType.CALL_FUNC +""" +This constant identifies the type of operation as the calling of a stored +function. +""" + +PIPELINE_OP_TYPE_CALL_PROC: PipelineOpType = PipelineOpType.CALL_PROC +""" +This constant identifies the type of operation as the calling of a stored +procedure. +""" + +PIPELINE_OP_TYPE_COMMIT: PipelineOpType = PipelineOpType.COMMIT +""" +This constant identifies the type of operation as the performing of a commit. +""" + +PIPELINE_OP_TYPE_EXECUTE: PipelineOpType = PipelineOpType.EXECUTE +""" +This constant identifies the type of operation as the executing of a statement. +""" + +PIPELINE_OP_TYPE_EXECUTE_MANY: PipelineOpType = PipelineOpType.EXECUTE_MANY +""" +This constant identifies the type of operations as the executing of a statement +multiple times. +""" + +PIPELINE_OP_TYPE_FETCH_ALL: PipelineOpType = PipelineOpType.FETCH_ALL +""" +This constant identifies the type of operation as the executing of a query and +returning all of the rows from the result set. +""" + +PIPELINE_OP_TYPE_FETCH_MANY: PipelineOpType = PipelineOpType.FETCH_MANY +""" +This constant identifies the type of operation as the executing of a query and +returning up to the specified number of rows from the result set. +""" + +PIPELINE_OP_TYPE_FETCH_ONE: PipelineOpType = PipelineOpType.FETCH_ONE +""" +This constant identifies the type of operation as the executing of a query and +returning the first row of the result set. +""" + + +# connection pool "get" modes +POOL_GETMODE_FORCEGET: PoolGetMode = PoolGetMode.FORCEGET +""" +This constant is used to specify that a new connection should be created and +returned by :meth:`ConnectionPool.acquire()` if there are no free connections +available in the pool and the pool is already at its maximum size. + +When a connection acquired in this mode is eventually released back to the +pool, it will be dropped and not added to the pool if the pool is still at its +maximum size. + +This constant deprecates the ``SPOOL_ATTRVAL_FORCEGET`` constant that was used +in the obsolete cx_Oracle driver. +""" + +POOL_GETMODE_NOWAIT: PoolGetMode = PoolGetMode.NOWAIT +""" +This constant is used to specify that an exception should be raised by +:meth:`ConnectionPool.acquire()` when all currently created connections are +already in use and so :meth:`~ConnectionPool.acquire()` cannot immediately +return a connection. Note the exception may occur even if the pool is smaller +than its maximum size. + +This constant deprecates the ``SPOOL_ATTRVAL_NOWAIT`` constant that was used in +the obsolete cx_Oracle driver, and was the default ``getmode`` value. +""" + +POOL_GETMODE_TIMEDWAIT: PoolGetMode = PoolGetMode.TIMEDWAIT +""" +This constant is used to specify that :meth:`ConnectionPool.acquire()` should +wait for a period of time (defined by the ``wait_timeout`` parameter) for a +connection to become available before returning with an error. + +This constant deprecates the ``SPOOL_ATTRVAL_TIMEDWAIT`` constant that was used +in the obsolete cx_Oracle driver. +""" + +POOL_GETMODE_WAIT: PoolGetMode = PoolGetMode.WAIT +""" +This constant is used to specify that :meth:`ConnectionPool.acquire()` should +wait until a connection is available if there are currently no free connections +available in the pool. This is the default value. + +This constant deprecates the ``SPOOL_ATTRVAL_WAIT`` constant that was used in +the obsolete cx_Oracle driver. +""" + + +# connection pool purity +PURITY_DEFAULT: Purity = Purity.DEFAULT +""" +This constant is used to specify that the purity of the session is the default +value identified by Oracle (see Oracle's documentation for more information). +This is the default value. + +This constant deprecates the ``ATTR_PURITY_DEFAULT`` constant that was used in +the obsolete cx_Oracle driver, and was the default ``purity`` value. +""" + +PURITY_NEW: Purity = Purity.NEW +""" +This constant is used to specify that the session acquired from the pool should +be new and not have any prior session state. + +This constant deprecates the ``ATTR_PURITY_NEW`` constant that was used in the +obsolete cx_Oracle driver. +""" + +PURITY_SELF: Purity = Purity.SELF +""" +This constant is used to specify that the session acquired from the pool need +not be new and may have prior session state. + +This constant deprecates the ``ATTR_PURITY_SELF`` constant that was used in the +obsolete cx_Oracle driver. +""" + + +# subscription grouping classes +SUBSCR_GROUPING_CLASS_NONE: int = constants.SUBSCR_GROUPING_CLASS_NONE +""" +This constant is used to specify that no grouping should take place. +""" + +SUBSCR_GROUPING_CLASS_TIME: int = constants.SUBSCR_GROUPING_CLASS_TIME +""" +This constant is used to specify that events are to be grouped by the period of +time in which they are received. +""" + + +# subscription grouping types +SUBSCR_GROUPING_TYPE_SUMMARY: int = constants.SUBSCR_GROUPING_TYPE_SUMMARY +""" +This constant is used to specify that when events are grouped a summary of the +events should be sent instead of the individual events. This is the default +value. +""" + +SUBSCR_GROUPING_TYPE_LAST: int = constants.SUBSCR_GROUPING_TYPE_LAST +""" +This constant is used to specify that when events are grouped the last event +that makes up the group should be sent instead of the individual events. +""" + + +# subscription namespaces +SUBSCR_NAMESPACE_AQ: int = base_impl.SUBSCR_NAMESPACE_AQ +""" +This constant is used to specify that notifications should be sent when a queue +has messages available to dequeue. +""" + +SUBSCR_NAMESPACE_DBCHANGE: int = base_impl.SUBSCR_NAMESPACE_DBCHANGE +""" +This constant is used to specify that database change notification or query +change notification messages are to be sent. This is the default value. +""" + + +# subscription protocols +SUBSCR_PROTO_CALLBACK: int = constants.SUBSCR_PROTO_CALLBACK +""" +This constant is used to specify that notifications will be sent to the +callback routine identified when the subscription was created. It is the +default value and the only value currently supported. +""" + +SUBSCR_PROTO_HTTP: int = constants.SUBSCR_PROTO_HTTP +""" +This constant is used to specify that notifications will be sent to an HTTP +URL when a message is generated. This value is currently not supported. +""" + +SUBSCR_PROTO_MAIL: int = constants.SUBSCR_PROTO_MAIL +""" +This constant is used to specify that notifications will be sent to an e-mail +address when a message is generated. This value is currently not supported. +""" + +SUBSCR_PROTO_SERVER: int = constants.SUBSCR_PROTO_SERVER +""" +This constant is used to specify that notifications will be sent to a PL/SQL +procedure when a message is generated. This value is currently not supported. +""" + + +# subscription quality of service +SUBSCR_QOS_BEST_EFFORT: int = base_impl.SUBSCR_QOS_BEST_EFFORT +""" +This constant is used to specify that best effort filtering for query result +set changes is acceptable. False positive notifications may be received. This +behaviour may be suitable for caching applications. +""" + +SUBSCR_QOS_DEFAULT: int = base_impl.SUBSCR_QOS_DEFAULT +""" +This constant is used to specify that the default behavior for subscriptions +should be used. +""" + +SUBSCR_QOS_DEREG_NFY: int = base_impl.SUBSCR_QOS_DEREG_NFY +""" +This constant is used to specify that the subscription should be automatically +unregistered after the first notification is received. +""" + +SUBSCR_QOS_QUERY: int = base_impl.SUBSCR_QOS_QUERY +""" +This constant is used to specify that notifications should be sent if the +result set of the registered query changes. By default, no false positive +notifications will be generated. +""" + +SUBSCR_QOS_RELIABLE: int = base_impl.SUBSCR_QOS_RELIABLE +""" +This constant is used to specify that notifications should not be lost in the +event of database failure. +""" + +SUBSCR_QOS_ROWIDS: int = base_impl.SUBSCR_QOS_ROWIDS +""" +This constant is used to specify that the rowids of the inserted, updated or +deleted rows should be included in the message objects that are sent. +""" + + +# flags for tpc_begin() +TPC_BEGIN_JOIN: int = base_impl.TPC_TXN_FLAGS_JOIN +""" +This constant is used to join an existing TPC transaction. +""" + +TPC_BEGIN_NEW: int = base_impl.TPC_TXN_FLAGS_NEW +""" +This constant is used to create a new TPC transaction. +""" + +TPC_BEGIN_PROMOTE: int = base_impl.TPC_TXN_FLAGS_PROMOTE +""" +This constant is used to promote a local transaction to a TPC transaction. +""" + +TPC_BEGIN_RESUME: int = base_impl.TPC_TXN_FLAGS_RESUME +""" +This constant is used to resume an existing TPC transaction. +""" + + +# flags for tpc_end() +TPC_END_NORMAL: int = constants.TPC_END_NORMAL +""" +This constant is used to end TPC transaction participation normally. +""" + +TPC_END_SUSPEND: int = constants.TPC_END_SUSPEND +""" +This constant is used to suspend a TPC transaction. +""" + + +# vector formats +VECTOR_FORMAT_BINARY: VectorFormat = VectorFormat.BINARY +""" +This constant is used to represent the storage format of VECTOR columns using +8-bit unsigned integers. +""" + +VECTOR_FORMAT_FLOAT32: VectorFormat = VectorFormat.FLOAT32 +""" +This constant is used to represent the storage format of VECTOR columns using +32-bit floating point numbers. +""" + +VECTOR_FORMAT_FLOAT64: VectorFormat = VectorFormat.FLOAT64 +""" +This constant is used to represent the storage format of VECTOR columns using +64-bit floating point numbers. +""" + +VECTOR_FORMAT_INT8: VectorFormat = VectorFormat.INT8 +""" +This constant is used to represent the storage format of VECTOR columns using +8-bit signed integers. +""" + + +from .connection import ( # noqa: E402 + AsyncConnection as AsyncConnection, + connect as connect, + connect_async as connect_async, + Connection as Connection, +) + +from .cursor import ( # noqa: E402 + AsyncCursor as AsyncCursor, + Cursor as Cursor, +) + +from .pool import ( # noqa: E402 + AsyncConnectionPool as AsyncConnectionPool, + ConnectionPool as ConnectionPool, + create_pool as create_pool, + create_pool_async as create_pool_async, + get_pool as get_pool, +) + +from .subscr import ( # noqa: E402 + Subscription as Subscription, + Message as Message, + MessageQuery as MessageQuery, + MessageRow as MessageRow, + MessageTable as MessageTable, +) + +from .aq import ( # noqa: E402 + Queue as Queue, + AsyncQueue as AsyncQueue, + DeqOptions as DeqOptions, + EnqOptions as EnqOptions, + MessageProperties as MessageProperties, +) + +from .connect_params import ConnectParams as ConnectParams # noqa: E402 + +from .pool_params import PoolParams as PoolParams # noqa: E402 + +from . import builtin_hooks # noqa: E402 + +IntervalYM = collections.namedtuple("IntervalYM", ["years", "months"]) + + +class JsonId(bytes): + pass + + +# initialize implementations +package = sys.modules[__name__] +base_impl.init_base_impl(package) +thick_impl.init_thick_impl(package) +thin_impl.init_thin_impl(package) +del package + +# remove unnecessary symbols +del ( + aq, # noqa + base_impl, # noqa + builtin_hooks, # noqa + connect_params, # noqa + connection, # noqa + constants, # noqa + constructors, # noqa + cursor, # noqa + dbobject, # noqa + driver_mode, # noqa + dsn, # noqa + errors, # noqa + exceptions, # noqa + fetch_info, # noqa + future, # noqa + lob, # noqa + pipeline, # noqa + pool, # noqa + pool_params, # noqa + sparse_vector, # noqa + soda, # noqa + subscr, # noqa + sys, # noqa + thick_impl, # noqa + thin_impl, # noqa + utils, # noqa + var, # noqa + warnings, # noqa +) + +# general aliases (for backwards compatibility) +ObjectType = DbObjectType +Object = DbObject +SessionPool = ConnectionPool +version = __version__ + +# aliases for database types (for backwards compatibility) +BFILE = DB_TYPE_BFILE +BLOB = DB_TYPE_BLOB +BOOLEAN = DB_TYPE_BOOLEAN +CLOB = DB_TYPE_CLOB +CURSOR = DB_TYPE_CURSOR +FIXED_CHAR = DB_TYPE_CHAR +FIXED_NCHAR = DB_TYPE_NCHAR +INTERVAL = DB_TYPE_INTERVAL_DS +LONG_BINARY = DB_TYPE_LONG_RAW +LONG_STRING = DB_TYPE_LONG +NATIVE_INT = DB_TYPE_BINARY_INTEGER +NATIVE_FLOAT = DB_TYPE_BINARY_DOUBLE +NCHAR = DB_TYPE_NVARCHAR +OBJECT = DB_TYPE_OBJECT +NCLOB = DB_TYPE_NCLOB +TIMESTAMP = DB_TYPE_TIMESTAMP + +# aliases for authentication modes (for backwards compatibility) +DEFAULT_AUTH = AUTH_MODE_DEFAULT +SYSASM = AUTH_MODE_SYSASM +SYSBKP = AUTH_MODE_SYSBKP +SYSDBA = AUTH_MODE_SYSDBA +SYSDGD = AUTH_MODE_SYSDGD +SYSKMT = AUTH_MODE_SYSKMT +SYSOPER = AUTH_MODE_SYSOPER +SYSRAC = AUTH_MODE_SYSRAC +PRELIM_AUTH = AUTH_MODE_PRELIM + +# aliases for pool "get" modes (for backwards compatibility) +SPOOL_ATTRVAL_WAIT = POOL_GETMODE_WAIT +SPOOL_ATTRVAL_NOWAIT = POOL_GETMODE_NOWAIT +SPOOL_ATTRVAL_FORCEGET = POOL_GETMODE_FORCEGET +SPOOL_ATTRVAL_TIMEDWAIT = POOL_GETMODE_TIMEDWAIT + +# aliases for purity (for backwards compatibility) +ATTR_PURITY_DEFAULT = PURITY_DEFAULT +ATTR_PURITY_NEW = PURITY_NEW +ATTR_PURITY_SELF = PURITY_SELF + +# aliases for subscription protocols (for backwards compatibility) +SUBSCR_PROTO_OCI = SUBSCR_PROTO_CALLBACK diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d8918166a8796de671158854a9dee5db6124919 GIT binary patch literal 10106 zcmaKx2Yg%A^~WXK8kS^v#F+#zBY*>mLlQ!O0FfoxQDTiqvJ)Qxud;O=OLw%OhwnEmHK*oc?$SFg=BY|GhlcHIWn-41r62kz5RmWgPC*kCDg1u^jHw zkCVO7%i($Ya(O%)&*5(U1i1oMaCpAHQuaZgTm`G-iEyG^4XfoESR>cMT6q$jB-g<@ zc`}?V*TZ^Fzd%1lo(iXOc%gop+yEOmyhuM?o&jgbGvQ3;#rj4WfPn0Wei?+I3_*zP zOZ2cDfB`uOgK`sWV%s5lL~e%7atmycLog(x5S1~AaokcpE)$U8@S*xvnS`WFK}x0} zEr(%Pj=+fA2HWIz*e*w5R04p^Kt`SgXUVhSY|eL>evZ^Y!|>to0g)ABxt3^Wg%fHAr2B3*kcU-&&@N;3B4zm@bBknbt8~0+%qI%ycPS%CsKIRoDxA zg%|s93e#n98Plmum&4^ur!idtS1@g0x)QErI-Th%xQgivrmNv={C5HX$#Zsa68iw(;aXJQA55NOV!%X{OKhp@)gYY2JHl(h?L+}vK-*%>l;bEpxrbplrCSZCL z9%affJqC|4oyGJxJkE4B(-ZIn(>Y8}!jnuI(^K#i(+8NIhNqdbOwYhGOk+&X!m~`{ zOwYk{OgSW1;dywTNie+tFEC9oy$CNd?O=KdUSgVLdKq43$}@csKFCyHdIer#+R5}P zyvn2_brn7YA7YYBABGPz6`5Xx*O*F7ufyw1Q%oO$k1*|G`Y3#qNils4KE`A)eH=c{ zRA%}Fe1fTh5_fW%>+!hG~ZBv+!A_Jxrg2&oQ0H^m+I^ z)A>mL!WZC+!jI4G1x#OpFEd@p^cDCj(?v{QgRe7P%=8WTCetNM--2&5UCQ(w_%734 zrtiV`nJz6zzh$}+$yN9r{ElfK(*ZcZbQ7n1 z3*KV7nd$fNd!}2M-iEiCZe@B0-eI~8$yN9R{DJ9qra!_TneJeE7v5#Mlj%?JC#JiY z{tSO+x|``Q@E4|gnEnI)lj&Zj|APN!x{v99;D4F!XZkDrAJYR!U4_5F-`am^QTd(Snz3$2(rK1MhfAYzg2c zyYSw{IiAEE^U%_b7QEzqyyGPo;2kfy5bt=&MR;GtIiA8Ci_x+KEqKX8@Q#;Uig&!^ zp?Jqj9)|bBILFhN<8ZX}prwZ`&!FW9v>b_+BiZt-PJKQK8GSHe+h^Z@bndy_^SKvx zG(Fga)@6gX+>5!FF0jzjKUj5%Pr!13CDJo0k#GzE^@{uAni z~qGG>B$_EIWBWTW@YA-%xRg^GaJ#0xHGMpt(kK&O@dmzQec0e56h=9UnM4Bp4f|_6UCLNtHo8QYs59EYsIyw zCyA?3*NIzDPZrmst`|3>o+9?4o+_?DJxyGOxY3th)Qv)-2E;Cy z5(X$yfwI^Q(_#kB73aYoaRHn!N|>Tw{0ucHOw^G0A!=Cs1a(0C9Cc9q5_OY!12rPv zLfxFRr)<41AD~@9>_8K0Z_|Nhyd7vo+2cyglqXBY9@D<^fSnAt^yH16VyQe1S(>(zWqT$ncI$kOo?+vI8nBspsy{ zSbVI2?J|9}P@r5^4dSlaF`bymR`jxg1^DuY#v>!K>&Pyd-6?VgHNIzD32dS!iaD)f z2&EZfoI9^!U(4d$GNy5AVeFym^_Z@0SyjvzcbE>gaQCt_6&7+st)M@Gxp&Yg&SEu@ z9j_*Bqj*)!>Q;1TtW-|b)|O@Jh))TXE#ny15_Ke0X$KC2#1?QGY+LJqD34D@iW4OS zkEU5GMbmJ$nup^3IOE1laU4UvEvCCR=ccC?icgsxjc`&JIAUgdbxfwJO9V&VvqO|= zXp|_MUL!j#>X2gNNLH`V0`sLxxhzc=4T|X}3YK&orwjX0jV+B=q$rlnHcnd_4_1^> zQWn%r5ka?Sa;N_JJUdVV4=a+UcGXa z>CR5&bule;)19lXWz#`T%9$Rk+VYGpOka5tmvGL=P6&Kty_!}XAWg$(F%kUS=Mwi5K9Gu=}4T?ANGDR+E6@*@ok}gEj^kD zYyAU}p|Cl>jy$efC_dbeW~{ZE$}$fO#RF+`!9mtYEFB)ip84u_dOq9h6ps&u1F=SQ za8qDb;vgmV*AfSZld1TuSejpRUM-etN{$4Ev{33_7)PUxIyR@`vuYfQ<5H;ikw}Y; z1d`kk9BZqOY)%HYHO3~!3F<=?o7>dtf~)7Rmssyiynk~zm^Qt&8s-#kt<%n094+Eh zIuK1X+F3VgLuqKtMZ=8N`X~>_w#0A&HAZsSs-T{r*57*TMzC!-)b#}0qeHYJOiw7h zRqMyxscINk%$9J-vM0mQ_(<67q%>Aoi^Xx00yt`D8i*uQX)T%>#F;>hg|}POU8h;g z)XLIW&0In}rUm2CXoQB1N{DOQ0tg)h6w(Ib$?yoSwzhC=t2Qe$VI#8})5OwRV5{l1 zLZNUnJZO3>h{a=Jv)u~gB;hp22C-9?Ve4=>Ia)ROEmQ6BG`r@q7Kn{vL%1rOykvSf zVfwK5TL19C09F_>{Y3cKry{8|HppBum$i7Zk=9Fb;q8eCWo+Yw$#^iFN+GrqCc}Zy zsL9D_DCqshwc#Lz!b5>kvy)OGaUlVE6_{=DM3CNofuW&zB4zp;NHc8u>WoiTJu#LR z#^=skjSMB@iF#ZlmI~u5s#flBf*;W(iAVz9rLnLUPgsu=zGa5Af#F!te4n@kcFtV* z-h9^VFM3ZzczZZFjIBEK{bIBzO~-p{8wjU^n`i*cL*A3siu<=2X|2pp;7d#!45#@^ zf=e)nZ@jcQZ;lzCKU%5_<{0T|4Y9p*j-5^Z#Bef_9<6_xJXMZ`x0&8*I29fmFqfo; z`%}TBHkgbLCve`i;7}ly!l}l#y-yrfY%V=GAHVZc!_g>xJs1DWSS%TPR*i}U@U@f( z1aSdvt*37oL;ckUWqvh1PHH-?(cJe3f?LeaIp$62bmAaWG!Pl8S7v3#S z@s!q&uSP9Afa9JvyJp#IpY-lIHhj>v*ubdSG0Vyib-f}glRo_c`pDJV$VPG=@F__r zf>`NbB&KbSNAMwPFilNo1F^}`I4;VLhAA1w@eNyLgkvF`q+}Goxb2jJI5nI~;N9%D zUcmH1iw4qK)uWj|*UDeqHLJ~kWnQ<|?3$YzzmMzD9d2jWI9MtctL~`_U49Cqr)dSW zEIH4nr;!HTYOj^ea$231^NODDyn{-k{gml%V3G>Dz1*;BI3#w(xj+M7^2K_% zvsw&pFmTgR&I{T#wN)FRVE>f17u1J3wT)HsdKtHyZ4I`%n0<{O{c^y z)TA+v`{+4;w6WfZm*GPZHu}FCH1WQ?$#iZuO2tSnMms%?9dPtxabJTww+edTn(5Qn zNhd#8)1I`ccd-nXzwYdtEJ@LqpW10ux9NRjd1G>Swje~guQHX_^2Oa*bjl~tt=4FR zlIvSJEsE29dVXx(+CFPHzGmeqeFp9yR!n8bcjAB>eYNd*pN0kCu0dNlHKX3fYM*Pt zKF|?@+s=I47VMenMgP9K;W5l+W5zJuSS#%s4bxZi&GWcn!)<7FPFpB}X;Uuhi<^WF zBNY8FQ{g``gyg8M}uF)*v zAqiQUaeJ+fpwQy?-CC<7G2V0v+FTpzC<2c-cU)KtR2_{5wT$E#l4D7ZBk3hsPI5fS z2_!2}z=K<$@kyK|JaAcw2GeP6hgBcNHtVG^wTcp-Na(I@Z`EqDtsz-UauUV1S({xA z7j#7!Y8^$KOtPM0TMXRTs#AzhB{_{`1Ig(qm>KtHcs?_YFO!l|XQ0h=RLXhXP-jx2 zjU)k*ev%+bh$KuhKr%?Oi6la@8O3a##%bL`IK+svYPM@ywpc8c`JlkiG!>`#1jpx# zWwn(sNs=N-lMIuLpqQ@er$KE)0;jdnQ`;G=J)Rn^0dDUU)BtyODpQBSkUFadxSvyJ z6S%5dIdx7g3U_fzLr@c-Wh9rATtRXr$yFp*lUze` zEy;Bx*OS~pawEw;lAB0wCb@;=R+8IDZYQ~eiNbV-NhvZ(8`$+C5d4Oa;$%7;h zkvvTD2+5-)kC8l1@&pRB)?G~XWP{1AR8J8*t&N0wn!r_cAJsENzACZHsGjBAbvIEx zN9<|1hU)oQ3DD(IFA%$HZlHRR&}q4U>LpHFcl*@K#4Y6RsSjdMy+YiKZiIT3W5~Z# zAEKBKle|XqI>|>!K1%X2l8=*og5;AVpCb7*$!ADDOY%9A&y#!s1-i)NNNrcf3-Q)b1(H+L;?C+|>m2V{Y(R zhrx8{3r;Hx-V}aU@w}1T6>#v;4Yc&*0SdVKty30gp+gE>`h1Rpi#W199Mb3<1H4w4 z4>iDDJ4yjBpLmx8Ljc;Whi$ zhE})ViD_C<8^5{a^tWN$!8RA>s^zfCaAH|hk_YW%p?c}=^gCE7C63i@`gP%0b~JT2 ycRM=le*U$zwAh>ME&OZZ5b4|>#l9!5#c6lq?6fq~{onjB-YUJO&RP!Z-uzD(m-ur4 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/aq.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/aq.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a66dba35c7d42cc02028e042d2cd9122cc961aa8 GIT binary patch literal 25189 zcmdsgTX1B@dEVSG7z_s2y^yzlz7(K{r{5XsEN_J3gbb`Qd zbeo-EB{#^g1&4#F_X7P@^p)zUa4^;DHd`SI&%Nn}{%ybOuD9GUMETOq?al3dR3B8# zudTxazriMwe+7KJfhYX8c=?%H*2~m#e%{M^xsNj+Word5?-jhMALhKGH~n#;Hsu#N zBtOi0WpDQ50!mCHr6MUD2&R;53WtIzGe}vIGRxjMNh#Zu^WFtXne~glhI7$-MpEXG zGVd>Vg`M0bOaa<_*1IG*i(@&Lz2_un$tz$euMB25An*44p5Mr$XXcOH<@Y+C@N0M- zWgg@CB>Ua`QT8Zb&vtW<^GCV;!YBNi>K5f|TE0qN25B=#IlRk9`Ma4X*^QOi!F0VI z_>b!K!E8OAu|fH!|6ucglNS!k^&Qn|*PHEwR&CMqAJjWKLsABndLn61t_G%FZP5?L z$|jNqbM*uFu+?$BdKXhWm=bs^g+ad23Ke@fD6q}J)B}#glZ?8Aw4eCb_d0F=dh_6Z z81@bhI;wkpyBY31a`%0|d%btitT%&4uJYjbZ^e)W3T?D{VqxQ+Ynt{-0SD7Vq_z3uDngVlpWwTQO9fG3>CE0Zf{i`jYnSHyq) z^LBDpIl_zn_?uHI)A{@O(ajuX zyV;L&;c_?UWk1UPAbXVE&wIIEM!ncAJf7+n_KTlnvn-d{pYE1E%BksnQ ztH5nJZ6CwxIXw)wv(r(|Ltiy_4x7QQ<04N6X4Tf}U-du4V(v0~Y}A~NEc}f@;hT3i zH&zx0&k70ejV(kcDZ`zPW^WE?%lPo zSL@$cyIbGbtiQAN!P}c_HwTp@;VCj`HABD!5@PKI){KhQ*Vi^SHn-|;R_oP`ci*eN zSG_qXcunx7LaP~e2l=q822>9*}x87GFeS_yS&; zLOEN?ma~;?C0G8NT(0udTwxyHi`n_yVzz%NL2APg`d8xRT5or}Udvxyw=DNbRuOuG z%-H<#Hy@!kju$8*gZa$%zi($|Yp)qP%6Gk&Izj8ual2jB-0pRKq>*|<%%<{peC1;@ zoNmYI?)grPM>KU7S|@NG?KK;FQcPB{^T-XI1{&!4UQ7=wS;b`rq`Blq#!gtlEu@FC zbc)I47dNdIP~wE${pS|JvvfD&e(00ibsjZaEembi*Yy8r&kr1MMX)VWcr@jqLpB-@ z#ZdQ`*zcFdJ3lA`PSoPN>0=NVIAQm{WD&mUA1J@Uxwt{hiL>b)R~*P-2+7ssklfTl z;RB20RC1yKIVzx*QR0M{{+&z|MAGO)HG_z>g=UAw;M~M90Gw#>?%6RIBG$OT3A_L0 zi4zrrdU3@`o2r+OLo=F*J&WehQ~`EWU^1E|R3-P=r{b6G-?E5)>VhJ}2;8>sbaqmg zLQY)(>_LHL(iVhz1=*bh=JPR!WSudb^C&AEPpeD&P_ZFRUjz2p{hYe&<&HA-OmIcM zp*Qxj>NUzu{SCzlx$G(WneYG4)AdseGKWG%WMU+BLd`lFZeYQIb70u1=6H@9coFje zi*#=7U}b7CN^$5&p=*F3d|LBlj_E_U)$=X9t1NqUsJ3z+9beh`!bT_XzYtUVhWZS~ zZl$Qs;~$xp+H^Cl?}wd0eU3>YIH@S5P85qg#1pbaW}0HI1Tk007XPN0?_Z3kEh&u0 zrY~J!O|iZ>&Q^DZhxM?evU5^yP}Dx$69cIm7lSC zA-||&s9C&L@Pt2$S1FszmS+|(b}$1Bq5cBZ2I>y|E^t1C?ghEtzy5$-m1-cb6BI#4yNAaG7?1*8rfpo{jeVN+D7jR zwOS-oi~jI$$fo)Z61dzSW8v@T_F-A67vvlE6|AgW@bYfvySZ-RDEARm^ZOa7+$=ry zNd^`e*+)jb`C#KH_qceJr`rACDsB0XGe^0bFh_x4;V0j-tMsO*2!81F4va1pLM?9Y zG{FXd^tP|aCMW0*WE2)ute#OVjhHJWx~ZF3)k8~+13~(_izmE@*DkvM%k$sOb~yy- z^1sMEfJG|w_9Q2xDrAhI&8@zyo;p_Ne%C1an7PDNB%(_qvOBNU9a8N?!IzI>bmLCkJ`3Z(KD7ps+e&DSX zwDL$cKbVX9Ehc3+s3bo}@g*RF{cThXshnh{sC*Z|tH`r*__sedg#MTf$2GFf>g0%G zl4ImVGJes{P>Qa_Rwu}B>bonsxJPM7-$wPvY*nbakU)|-(QIv~YbY`{=N4lJxticX z!kBT9fLFwgAbp@~=Si;rgG4_>1i=#MI_(Z=EwE%ZqTz}tGnCoviZ}{77E&}R4kQ_- zK!o2lhcbvMx?0jm*mzP93Q<*{oTNlOO5b2=%oc?di+~Gw{}Ndt4W7&tXS83jvx&^1 zp`oE6PW5kd_??K6|-*mQR zeFu~iN7}qwExP_H?BEgX)V^e zL3w}Uo~APBb$XrO!yw8~wOW1)tH$w~J7P)4BNm&pSYC|>y{4i!#aN9Y203YLA9OnK zySRtWj@xWGUXKR3#Vo>nySMAS^3|`t@|Bmr{KZvg3j_7A)AU4ryykcvS-hPcSbqn* z%0;(1bPegPg=Bku4LWMrQ!IqFKe3ac6Lh+c>IKREUbEn6XVRJDxh*W3M1MjDLzx@_ z>9`#vhusaYu~6H+AFH~SRyq1mtvh3w$=bY!-lK0jy+B;j7M-DPM3Ugem3uOm zi+O4cIV^^l1{nsHk(QwpARg)V9!W*X}z<-RqkgP7VK=pjy3cD!(|B0}R zU`=3=-$vs`*a^}ps8Xc;JEA%)>;RZK>I$+ZW6E43ma`OhWP{m#2ski8E#Ur*rHHEG zf?!@)%`q1|jtL6qbA;nXY|+9S;c}MAh2(Eevm2g_t66wy+%59PI>QvfDW-~~Xcdgk ze-W9;`}Z7E%8^X5Y$c=4nmnFkYR+WYs6kDb`0o&}Nyu#m{+|=MXu>1e2zba?nOF3n zsxR^N8eW4uB$T4zqo_KmZ}KIElgQt9_(?KTAMhpZ{xW~XlqSE#j=F)2-@+q?Ybker z@qBT4X1RF&{Q2VIjACvB&(I&2{~LJ1Z{c;UkyP}iU=S5y5KVg}m^IUpsRQ!}rj0g< zN)X#K-WVbBn{|0QA zQF}!F0*Y;nF|?B!1?qKFSHH+tJeD$ytYlS1NwV-nSsKA7T}2WXe7b66p`AuWiq&|d z8d)%7TzN=2a;=&$w_jG2<~JhLRRHfz(`jjG|SMcgsKsRf52CYU=ztRh0etyH_0CKw5*gzgq!+@ z1Q!dpSgwgk6KNI?qWlsLTt~IPz!O&RD&=$8;!i8(<(czKia8BDLx1EyZ{P|46%dSt zn6@DqOW`wmA`j7phzf~TnD(dl87+a>3J9x`O*Q4j=O^(KGl_Du^aM((DOd64B&F<^ z6XoV@>Xbh#?V5OuieEvw*{I#6C`zLO{B$`Jr7`EvCCZ(TVmIbcZeHMB@GeTb3;qJi z%}4N_v8e`L9JjHUfOpwObC`ZS=UowaOa2ndnQ?jErW$xJc%PAS%l>i#o?}x@xzBo6 zrQA9HT%z3POsZFeTJU+j^9i1B|MK|7XB|&S=e>|EqeP(f9_8wI;L;;ez!sUqKiV$I zD>?whr#G06wz5VS=ORihl75T$p~E8j7jD|ky+l03xX4Ad*tw!rNIF`zd&T_{vMqmt zAs%f*KT?R&NZR|6gOoeb+pq|IH*gS4pb%n!U=?WW?PkjrlN@@og@+wk*sXAI)B1!< z)phQ^`!;<9>QLK-DWI@F1If{7^}HAk%u}x^Q85%Gkt8*K3^)d^k%ueCbGzCKaG$IH6EV7<&cvenJJT#)XMPs%h(eJQ_9miE?6LAlAhODmCcDs!|`gT~+6xI+J z0w9)OqX8m}_UvLKtr>fZ=u4o#3hsV}$XJccz~jasCO!_j2=_X@7PbOV52hum3Xxds zCK8KuMPqji!7N1tBc)|4E0t&}20f0~=k4^A`p*p0jeud9A;p%oLV2~0M*?2BvEWg= z&V7;>TbvPV+7bulJjrh;lE#mJ1uwYtr}59=Vq?#5+()!n33$wJ@HBRMj3x3cfay zsM_aCqp9i9Hlfm}v4!HVpNtwQrn|7+84M`lcX@Z59z{xyhHRO!q+cBlTZSRP$C}tr zjM&R|EZ<@Ryaf`{+y_Jgo7FH%5eYHL-JqzuaqoM^g}!?G?$_(@RPWrqb$6?}v31XR zF`Dz0*aMte=gs%tdaHV;dh;GVyp{%2i^kyVn|JEAV#3G2(SgpOz0_&=*(%1t8*LLr zp^J>2uoy%;4q;5lKLHuHnh3@_l#K$eBZ-y6IB^=fez5T*JD6WHp>qAk#WRxW&FZ`LH}7n|f42&P8>2GjzP-8r zOC(2&Mrx@$)!UojswT<&Sn?%cT?OH&H`lh-?!|Ov^raH{oJ>$!luCg)@7Woe=`SQW z8}rUUBT>tP5?R+o(g;Bs_iV$bAdUWy>=>SuF2)3=)wL5_TtfnLvUo8fHUZOc#zc6d zSts){`Z{2_-t`z+MvWfo!#(&WcO%tgz#e~P(qmr(1} z({a#2tUMJNNDnSsGo->|6ACUi?Xf-jP&A6CSeS3!x^s7{4oNa;ZEjS*t@CY9VljjD zm%gB-($<}|jk{~>TemhhQkI@fegICiE9@n8^2>4lft`WUkP#f0cv>=uA*FKbM<4?# z1KN^14HncKftqMkjd*{X zqIw(WH5>$-TUgsZ8bL&en8YS1gtjrk8F#NVgg9nkqRr@G>?|;YSQLOBZSs5D?XYfZ z9Ak%DIJU6v{4wlgne1e^cq&!R5109#oz$8Br37yoE;UA7r!cf8Xs^p;KEth~Qr;mb z@7Ias8O*8QJPYj!PB45h#W0H^ePPU;iiir)LolR5MjSl_8`|8cuW#PIeJiQOeyVi8 zb^CVp=B>4@sstPiS@X1wb^}ne2ZbCb1SG^HrYX>Ks)`Y*DH4{liufo|ZKHr+Fk}nh z2K@$5#nnoj3aK7pN zH4^J__7fFQma4zCd8hiV>Kz8U1R#u1{14h0umyBuOWk%Wl{klB#V8NyvK+5eS}HK- z_v{1?>$1!{1O3>R$;hPTH2vv&pqwYR;oQpk(H)mBqkxXr=4Px8#-@96Py}4eprSuX z(TvxdGqjr&HDvW7U)0YOrL!WVR3uczHWOZ{c$;Pc84E;)yI~TyJ%vc^nL>6MTQ>4< z0sofq&41^jbbd2`I#G__rrc~?PVW!^_|Tu-?)hybKjn7MjBKZv?H;|2GZSs6nC+gj z-99qgJ+uC7Vw=Ql_h4HG+Zqe{oY2{}HPk(HNx6Ktc&8UF@t*bU{OcIDzojZ*}@tDo1!wS4>|5BJ`drce`d$M)W4LN z@?p4R(|uZvSoJ4OJ{kFcAQETLcwafo^q)-Qji&YKHC`NVuAf@tWu>IX`!w2Vq#MUd zg!)I52!itTKUsp9>0d|?M65H85yPizpX$4lrk_pzXWL|MrSd5ngM@5|R`7j-{5ifz zLRuGyrBW=KmXZ61Y~c!iST&%M5bu#1pd}*;4gFbh{zJep;(Rw#lT%sIZ5W7C!1=3W z1P7uNd@a1?ehfrqPd3`>|aLN zOA*YgHq~JNIq&mQ?m4dn)#hg;cyow4Ntu>9kB!(6)drD~aj3==1B}BoMd!bhni7i6 zmD}2@_>R4y;^g|yXuQTr?hG(Yp8ML^Znp>8xTo1ZK;X0Z4=Ew6xY+h#7`NplLdUp> zlAfcOI~YZOkscPF@H0@;M983Ia{tP%;bQ;t_;{FNC*K|JKd{K3RIn%ZC}sauy8|#r z7LqX`d0T=J+;P{{eUM99H^m_N--#YRKi{#OGHmdh)wkC^7&oiAE#9PyQesHB9h)-UY4)<~HmJtie9Mdo}ClNRpHQ7y`xaTJ(&ypRz zQvZe2`LkQnr{G=jCTqOHjvrm|fk`+4SbBm@+2J*dD`r=ww-wSUvg>rDrIIQStT6LA z+u36O(s*a1QYY`H`+v^FOcL>7Vt|YD&)jEYJ8T94i?`ju-j~zd;dTZ5YEj%4S1)!W>WSJs&?3>`zhL*#Gj0bKdj~C#RcYeCih3DT;#%o z%}IMP(M%^y2kj7Wae@q$NQGN~>jZeOCW_vN~X;G2?D=uXMS zkGvv__t;2mcCf1RQ0tpV*~inkEF>4qOWG9DzJ0{AB`jakS5M%a3BKwx@o9jva?rNi zv#0}QCDb57xUR3t(rz;Dpw$*B{!A{foEqT3G6v4CNhG7mkx7#wGp9v;)}9qQs_Wd? z*(Rr=IE*z8BmFGg0>W)CxbLNm+g{4JovLz*$ngGO+F6Ym)kNW`mkMu;z~=f0zk)Qf zpu#q8GJrgYjM>O=1R=T3UUL^GS#Y#O1JSW6=1XJ`NjZqcW@OY-Zu2Ay$u962-GnPP zH2jf+Cw2k8JVu!{QQ%E$X}pW~T4~JoES*lLxmirHAwor!Q&^l8A&{uKRPV#D0p0_P z$GH5l{IZCGAXgkeSjoCCW3AY!ILWNKxEDlUxrDnEn+I}J2sPNqy#@Ya!Ethi^;gWP zQ3AA2z>z3}I2CNha9z%JBG?W@(s@LpXyMEg84k54NI{E*aL9-gJHCtP11sCM63z!( zUiV`ZL2^8UB5V_-5J#C%vTWbN-gb!S2Hsi4@c_jMx1?^iO~`-9+tb&#Bl8ca3qE~E3M}Jc$jT=+ue2h&A`7QG-Labm=2Dc#SiEwNCcNz zwA=>fRCXC5AoX#*h8DcBtlwvdAgxv*%c#ZVlvCZJ8!i+o2Cd6Y87}Ts#x2blwl{qs zY>{*0A-v|mETKLPDv7#?aT329mWl*#=$^$@!~n6dNLaf(y8;pJD%9no!f`%nyT`+Y zW*ONkxWRn39#3K_Yb?k4J<9dP8c*UHs;&$uG)adaQQS4(3)IVjZ=pqIYtur=rbj#t_ zQS>+1HSQH;a=h+w@l@i}eLh`NJy!J>r^1Ld#Tpl)Brmm-6d4E+;XaM`k3mnjHd3RL z>F~Q#UAy_gaR&!j=$$*8>$sdcI`DG5<78YCi_2Gfo=R&|lJz^5%y3rk_Sn{slv%kl zx{t{TS0mw1vYGjhnIZd_680q9nm=F~cR6u8A6ASw_C8`7of3)$U?LuBik~xlUFC~9 zsiKV5C)-Iq>Ywoy>ud4mDDVCLOHfD1`+-W?LJqfEGD=GBw!{`Gw?=KmR4%*BbZ(t8 z-9$o_aOWj|&mpa(w^h$y#J?yjJ93Bu`wc)JWaLuL+7hHj^gl45YZmuw4~nogz;-n1 z(j6{HeMqsu&}CJ^cdg`YNBXSvmdimd+LXIvGMr0bLvgA^7 z0~_9D&2_ikwgJs<-JhiEPWu;nX!jl++e+*Viw#ob<0JWdKR&)kUa2?)et-R1-+xpg z&6vbamuP92} zq-Os^VSyUWmL4b-A3(+XTb*tQlFCD#$nRvzH$$EzASg;uQHc)|PW&wB-G`F=36&%s z6~r?H^-N(1^N@JfXlJh=U{B~5g)J7~TavbL#Nr`&MZE=RmqkUl9dS)8iRDA;EsCmG z0nM_k$R)A*I~8l z;K|mb7Hc=Z|6!}${OS$OtVD*pZ-`oesc)mkUfhw5p!+;YdfjfU(#B4Z>>coZDbq%; z8?Ycc;7YLFAe3we&OtQlFJ<(y5e7SVK5KOQ>0TV&uHS7WK`KA(a{oDhCX+_2xF1Tf z)8KfR3~Ju5cl(*mV8I||tcG?OP!T#PcxFRfOK*4+8iL}Mzky4`m%`VCuK{1{4|Lu_ zYfzmo`ANh(a$`_jcVXp?L22Dh`(3&5mey)!X5pYJBeH@(`CQPzlagJ-Z@|qk?Ia4bjo4Yg6m87uo9Z;B0mmc=@*?|uJ%;TbW zy9yoLZAgyjPew{#8$)_ThXyl;#`w%EJe5cufR(t8SKU={2fbwMD_MaBc=^rD^ur`G z7Bs>>+G`;>D#XS5-Xe+eTKSVcOxI0Fl{PM|_okX6m-N6;8jL3>nHQ*gmo^k;NO zVD<>m!q+?^yMVH04xT#h@vkk@o{AEeyJ@c*O4pC0l*8SNp1C}7HG*w_Pj)zT#i$QL z-gh7OH+eVdg)*s67HefyC13Ppl1jl6J*{SCYppol0_3tIBN%96P}b~ZtIuS5tjGM( zYTgRUIBqc()eMEMsjgvlioO+g><<3%9M%M_MCT&QrnUj)-Qaqj$) z>V={El811IX31XCxIu&YaW6{edXs}IjK)RIh^SJmM~r@eCU1* zCBe$3mSLOlFWII+odOnT(JmUank#w^+~fs-1n(ih)~b~}2d*6CIh{E$7GxH_s}zR& cjOZ7go;MFfW`927(HbxtYMvQakw1tN^F$p8QV literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/base.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9145fe8357e8ab27a0fa925e1b7f8022c3b67a2b GIT binary patch literal 872 zcmZ8f&2AGh5FW3+X__A-eu~5edH_{9kUfBqkfI7&DlQ}(5SP7Jo3-0)yGa(?Y1C*r zwNhVzTUDt&mM22Ka^e*@F_WawGAoZg-tjl{%}mm4)&S-ExAy*z6@Z^)+!TSv8(elB zl>)_b7_vBE@E%m4_z5Vk`7w`$5}%+I{$l9XV!kTnC>d%gQ?zdhUt0Dl9yG*EK^&aI zE>lbeC)JoMuEYt%;uHkLA%XhlR$_HmyJS00tW7DWYpLLY7QxyrR3%sJ5quT62e^l& zxB$m4nR)CO-ikBKxD3zWoTG>6fD4Y{f|pRTGAQ}woJG&qq#TabBu56mA?24zk}vpp z*2ars($BMWPO&9?&AP-mJI&m{*SjCzeg3c`dvCitKD3iU8^40Z&{HW}70=V$dO=V= z>?0}b!^AmbeSH~@e#NU4Z;pP&{3;faXiIqozxSfSc&MYSIIxIajE#%>nH@}%eXU(I zDKeRjrioEiNz1iQy(Yqy%wUUEyR@z+9UYREP&dk2+bCF}#1J~-#tQQn(X zJ9AR&8?#_zv&9U~9?p%SXy*Q3^#D&aOGXz)$_OnRpaM2~_IAt@qa z)=>H8vXH6HbA>TULYE8{{=zY zBUM8vC6(^^)muu8Q*DGw3a0f!DxR3*LR8!T>6J8cD6^qG+4^fii15FSzy1r&lB{sn zGjbX%1Mbf}_3o0KhCDcp@|#P-q5aw4@lHcSrv55e608cZc-(2RtFdgXLLNbimJtt1 zqGI%RM`WUDW7S-SXGH(H^rtP%dTMFftBz?;H_iz0+={N9!zv#>HdkBb(lUHz<7uAT zd%lDOd(EZ4y1Z=KeLO&B8Vou2IuzdnDQ9#f72O@me3Xv&MrkHK8w_^)^vOif;ye)v zQ)8NHDxMZ%XauK5(nCQFmgHKrD7(Px$e_j zIhBQ#Sw?qf;&_)9Ou-s%2ELp*mSu7QcZ*3noX|y@Wpp@^QVYtgm;cPsk&<&LwJ8!zw~xT2w99CEx2R z7z3pp4WZumVA~?dcMG zF{)|L6k?^W8nv-MJ+%Yn%VIE*b1_JZnbu`dNM#0xsh%v@R0uODi!@2|1p_ynu|uW> zAM}qzel$QvZd@M}$7Uk)Px_w@bZW$2!G<$77J48R8)kwZ4i3vSGijdSzGk{#99KK% z>A?YxQV#k#%XYelfb=dJuh}6j5|W1BC2tcew@4R#ms}=WZltba)yYO}%Axf&l3Ie= zdvqjy2LcB@xxWm4_x`Xn@hnAt1UW&2kZrALa7T<-nHg$>addce=hj!}sMG1Z$c|}& zyE58=r_?|w7+~Sg<*=L!;N1e*0jkC-n39158YUNZ;V~VuoGuh{WrwMva*@C8ug2q( z33%q>K%Wc20a{DYI^TQi^n#v%@?3Ip4U>zBsGalrAi8hBm|0@y6RvYt>C8mQay+p- zzQ;0f2nJwfICExd?g3xel43VSVqCtzIe27ay5RX5UDxG*7b>A; zR@#iyQJD{&z%ByXSc=|CJy4#D5jO@jgHvsky(Q=PJasj z-TMKW-j?gswpDDRsk(Ko?z{wv#9d)+)Yim{QMEn? ff67eUd=Hb_qQcfA_d|WU9JH=>g4P=yg0}q+O_rw( literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/connect_params.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/connect_params.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e4a4e9228be05f0eb047cb6f943a7fd47a8cdd8 GIT binary patch literal 53516 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
bD2 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 beq4hAVjD~*1y4G$1FvX!4=M&#_h$b9Ado{H literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/constructors.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/constructors.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cef3c4f4f81b0913bd311cfa011ea1975b6d7c08 GIT binary patch literal 2605 zcmb_dOK%%D5Z;$o4@}@pG>u�csnzdJ#|v)RMN=-d9Pk zT?M)|KcPn-;-h=&t^Z}OJ>}AS(o1K!l47YUlEPVe=^=MG9DeihBW*Nl20Xw0+B|yJ zFpNL3bNQ)4=NowC@6a%VnW53a|5j*5R>v|8W-}+WBd6n-2Df;LmCh{YvhoY3dbOoLrN zE3;L0<3*{nsAC%1e~sM)|0QPb8{X|#khQVxnYsNq9=tN41GdYBNQCsPymUgtjOVW4 zDig7f-^UNy7Q9d3l@(}|F*JU`pyu<<8iD6Y5=$jAUr9n^lJt(auSh=$Sr8u*N_s&| z#el4bNqp!L@Wf%gUQ;35;NS~RRZ)F(EH*?A1E`J;hLhqf>TyAm10p$8f=MES*ylPRPZPgS)}PThL+aey zAom`AdDm-_c0Z5={`gN>02Jb}D&i$1gV~3eiH53)M)N=<5dtR_jnZ`w*vTL~RYdla zEQItqOoMF%z+X<;h>o_v@`)vA^2St%3sYRfPe{*8fHyW_vF~85HUfMfJ{HKkVijzp z4=g8gHwxlR!67U5JD)<6LSWI5LQo9r+yr^SVpz}rxKc3?j1jxYKBBFo?dStRSi)ue zIe=3fHlm%AI2;r+sBT}_ z!htPyYF$063)0hB+uGafwx52#)!p7{clUqT-QC%1Z*2m@Z-A>;ibCkLu3ijM6hcRvErz&-s9v7~Z3Cg5aCvKjaanu> zwpX6jo|!^vS;S`ippDhj;)2HkI1Tp)%Hq%-I>XYrtHtrF>0->kNi-w%VV;smQy*B* zeMfFHB&y<0b+8>st6#XW$-EzsYAV$ zNuuUTB(DD+GO2^jkxHwO$`t@@E}K>+7*8nm;{@!o_ylY??06ZyZMypwY~h?SOTfkK&=4#I>gt+xWjK(kdBQ!jE!Kr{>VJz04aB`gd1*Pp@! hxeiUmtXp+^xx7|hsjgO+7Y!4BZ!Gij&v{*6{0B#7kK6zN literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/cursor.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/cursor.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a55eb15082a62ee531f540f1bf5f3fea072992a2 GIT binary patch literal 53805 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%0DD2X02 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 KUEZPo?)-n&Zh6N5 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/dataframe.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/dataframe.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..560ec6c21967052128883338825843ad814840bf GIT binary patch literal 3994 zcmb_fO>^7E8QulJ4^g5-%d#COZi;>+Ei(?8X)~QRqq?zWC8J5pwo=j$%w!;lyObb< z0KEXM2t!{QU3=)Xw|J@4L_QzRxba zdcDT*{Nrz}<9{|7`wtanpArghvM;5${T^vHyu;w&A{rHoRZF4LAhUX zDxAH`L`js-m?+DVsQlSxVrTSwp@!nBhU+(k=0aZNm zV)-kXcw2!N$EYYv^jC2gqvswIrML0MpCOUV;et7a;EpK_VV*I^!t$0Vow1L(L#C8P zMdvG`Dwfb*6)%aJSU%&|TcYU<;fHPJxLs$7%H;>IV2SQj@@ zZpb>y8z|orw^6@kBP@ZzNFnwFCd)CvUa~r^!(i{pt46)wg#tJ z)x~sv;<`=Rm4SrubiF{JHEHhZCThk*D9|=F5-%e&V&`}-_;X`q02AZf9PtbMI2##z zOjXdOX=N4H4dsdJX3Kg_-wXUyDw@o>(Nj_1^~mMiI8oB;H_goK261La2gjKqdK#QO zS;h#=F&%Or6>%8}GitoS(_1t4PkSwFfmYUAcmbLDEs*)M#v7`RK57*SC|<)~X8DK& zb%Uyjw;9uFxoOn?BeWEj)p)vb)iUa|V3>tb+OSPzMtsCv1h+8GkU!@a>@i{mb%qb4 zU2_Bve9S&<5cbHMBjecGWKUleCcN27AJy#fvjd)U%wsz_k~V;q-NZih;XJy6Y>|B# zCSKx4VXGK87X{=8#Qh%L_%@P5Sn=WNb40>9C)oaCJhi|%VbU}dbypimE{)7+y^(Qm z0jiPw>E>Q>jm)xWF})e%~Do!$#kc7C=>D_?=*(5 zjWcWGjC*kEhH(1Kq7)=9VI6f7NmkNbuh^xz{wbPcEy7lrZ}2h)g|p5zHEoVV+BChI z!xxbmalwaNH4+H($NW!V@0gz(7XYzorhhGf-j&Hvg*iJ93;EsC@nHYvbjusW!$8_6 zM}GIn_JSZfiEZI4VzC>A&!mdMTQOS_*}X_f|1h)#Lf+OfPm_CzJysSJ{Mh!xM5>LskIs+3$2g?iq3?2YfC zN3OP|^v-mrbA1-JR=5-$K4U?^21yRIBfVP~wzx?O_*T!>V16zwq-?G&j`SiC{1d(JM{lagvB(B2XMI}^}aszc8D zv^0)mwA>{hE2aNhgg><3QnL5f{)~%l=I1aZC&DQXt%3|c*q?|o0+whgW*Sq5h$RAZ zsrEx5KeG4t{r&xxz0=bzc^zUo8fu?bUU(?)+ul?Sc4(B2SX+M7l>?G^8w2z`MNG;6 z93Zf?zNK9oUP5c7uTanN)CbWp6fsGQT|jN0_{ou-R>v+DLo1fUVc*TokF(lzbsZrS zZFm)HU2&F7t9U-}4``0*%w^>bZa@{vUzESFtl3kPbSLkOIkf{`%Q3l-=J-uy(iPGL z;_dff&SD8aZE*+(M^3=6!LRYDN&Nnig~l7;9sFA9zYA81@cO3s)$mOjCZ`6$^f$wC zzD*szL`N7UAOT$5FYNN{_vGo<;5e;p<@Ba^rqhrj6ohtw<~=}_RVOn}DAO3v$9JaH zKR0i3%t{Q733XOB_zHfrf<7f}(tS>HNWu%PqoooOa;{a5&s=CGG!Ss`wgah1&T~7y zQs8hGF#{QXsaUHYV$lKKiKxt+`7>_4U^MBZ_A>I>+-LzW(}o-AFAAQnHyncSl~$`C zU{>`yCD$opl`NwlF z!ED)bm%j4)5?>ZV(IKF(boz>Iv4ZH-uJ0&qNHBYIovMPYczyz=^9zprrgwr zbdE0dilmq{Atv9ea?7Zi2CtRqt=4Kw>y`C#quy9vE$g1R1uVfPeAd9YPIJjw)~cEx tvDz4?meRuYtz9xMGD{Uf0T=?{u7g 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 Y=ah>Dq>6JtWH0{J=6}z6Xa4m60Jz)Z3;+NC literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/defaults.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/defaults.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b93d9821cfaf21f25d3917b8e9209734bea2eb1 GIT binary patch literal 12116 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/driver_mode.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/driver_mode.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9f83a6ebd4194f8bfb88822970466a8453b8ded GIT binary patch literal 3490 zcmb7G-EZ8+5nu8?M4e^FX;Pz2ieljcP0n@hk|qdHp(x@?N~1PD7q;3U_p;jK?&((I zk>};o(iuWwz-^|X8ynMOC z@ciS8-u_>H$k@MVu>3SI_yAwNiAFIMBy7l3s2WKy4ToXCe#cZ(wN997Jr0Kr-FVD~ zO?64N)yhdQZ0WX&{vN1R)j4SnS5$D1b=STICpP#xK-&$Ojz?^5soy9%y?zQ~I_{<({_kQOH<_ z)!Y7TdXxvon9(x)Lx~+1xwo&;?ZGtny(K?+42PjuJ zP8BFuYh9iOWi!{w_$jlOA@1L4f09jg-^>p3yqL{0>-r;;PY&h2)~;X7j4NrROXV+6Z#FL@ z0fxp2af>u=qhUcC@59&5-PYbI={dv*HIG;monv5QTj+R&?4`O#`q?XJ%2gq7)wC7j zLkx2QoCObGzewVOE+)>W5A`E_UZg_jnC-LAejl)7gr$PnUmk~xe`E1y`?L~Z1w9xL z>uAy2XJpcVeF76V@jh+@EWP>;%m4f~X6gMDADP>$)NNV{&~}9y0;_DNnKR=#7S?DO z>7!V<`AnCq)bn=-L6s&)6&`0O0D65y&~IaB{v$Ljh{E=_Vc7mAY_$IyHlzQ9?dW@r zQEfhFjM{y#fgx$=HNQ%|do)JWuXG8|)VR<}O>*r&(b>FPgdIA`wevHZU2A{ks{qckwirb;f?Ea8xYb{m-O9lr-NwU1 zABOH~SJ*0x@oAMFeI&1}=l|h+7}u-MY2;so218XKS+?R1W7&THCd}w5Od|oI*fe z&e5<|6m%AEgj-SFi|CuM*$l3PHv;=p&``Z%J!~;;S$^tE@G54>!rs+M!7jUg_eQ-Jq)B#_~D5$)D$_^jH>&LpINr&cnCIT=H0grOQ0K zbrQ6`d#XXthx}?J;=~}xzS-Sf$VZ`3#Iervagii*IwDlDPD5v5C#npm4-`zF& zS-Jz4UB09X_cg-vYIt6N4+R+EM|kQ~j*y;u{7#B;1S0v^*xc7}sgemLb)?KxS7@PX zI~#d!GZ>Ee#7MRtUXaKoMV8L{Vi0ycJ8+sxg<=S7)~DJ{mawai`i#zAGT^T4s?+L7 zJ`>ko^Up_Lg6Trtu{lCrDO2TD^;u$pKBh-=zyJG?O*M*W9#3St2b6pPt9fF^+L@{5 z+1Rs0I3*MII-V6(PY4Rupfc2aox1D0s74le_9%ky0-_YPWL;Us6Ac5wk7~L%a?j2C zysyPy!1IqV$P4*a7=h}I3YI!1h4v@7vp&0Cln2VSWrsTgX_cOSK*cBAv-?*LOx#&!Sz literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/dsn.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/dsn.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c2a2d2c68305c48a5707c71569a92a046c1f05c GIT binary patch literal 1637 zcmZuxL2uhO6c!~}c3h`P-D2yJ1A35#)*i58z>0a8VGF6z)(&K^*nE*?k%^hul0ec4 zVyL^U$L+S;S}Z+ozhl2b*8u}|*?G&Qdt{u{C`N&gO{d#?db| z!}vojHk;c03c65&7zE9Y1sWq{P?MU(B-Sg7*rfE*9$RD!bhgr8eZ+ZHA!Sl|SsIs! zIW)ZLUkJ>2sBkFfDHnauD(oa$(4uq_&6l)rIF(DD#3sP5nws0tJJ7{_5CrAu#1MCh zxgISwa#tEh2)daY#QxDl1}VXn&gzFMhSr(U_*h^$qd4M+%LPp&mMNx*SaJ&LNMa^2 zNvXg|Dsh}9GGYmK?_&?A9Jg?!4-2ZT#j}VOE@S-PN2mK_VR%(9fr=9G!qX>>%XY%Vhvvg9=4Bs^eq8criY zNwaZ6lauD0O+S0s%+BO2O+IaW-V{vI2U!#!M~752Q+VH;l4+BOq>-H!)i72O3?X>; z;9jA8FiLk3zX79HDePG)WML}@3QI6j)CA=xET*B(FC_Mmr3q*uas=WL9@Dd;4lYw3 zZt8dm?8RkeecjYE)mrEOPnaAUFUnG}!1x}roLj_PBK{CGR&Hrc`5X~Dw|)i&ytdu| zS(AG?kQGqh0LsbDYg9Qm-=T6_V{*V$a{C&ymD?K_ATroF2TV0DU1M(Kr45XuF~0+* zmOIy&?c8~XAve#>y!-~esF0o90R3)`K;FtLAnUKoz}(xbzcpn7T@paFHIuMdG8s+h z6dwRFmjVcV$?M4kay6OY47j5hx87 zM{`vks$ACm)it86DaI3ez!Kp4^h{$0nk`tR8f-!0;c{^93I)}mEKMdd5gO9~PbL#> zP4V)wHaPr%j6UB1xw`2N{or}8Q@xN{Hx>DY8hhOjeK{(vpDvZ^~Zr2}ng5Lf}8F1U(Zr~4xEq6Z{j0T;- z)7Gf7@41f$!%=Hh_T2qJ0FzzMb3226-|vjVZhO>jtxV5@5>`b}I8m0-gcSBs$`Wr& zKZkF_j&@wXOS`R|)y|FU>qLYkl2HhWlVV)k)afF>6zW%8lo!!4g)~2ah4=)7v16ku zszAS^W&M9-)vO@%tqt9I%RhiKUa7B|=kVLG(mx<5TFEcpVX;JN*v93m2)Xv4^2H)0 a%Q^k>BTxwpqGr`=23mjrn&`dnpZ@@}n5Q2A literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/end_user_security_context.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/end_user_security_context.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8154fbdb36ee10e6f9c9dff9c5f4316d12513c4 GIT binary patch literal 2353 zcmai0OK%%D5MFX0k`>2&r9jgLD1r760kPB~L4g8+(Z)^y1C50ui4Q^xnOagd?OpDM zq~h3EU+SED>amCR*k1c@_S#eaLi$K&C~G6veXK#695098d^7W{`Q^)<0G^+}>+S!t z5(K~EX7Opk<}(;}4<-=^k_9;#lAI1{9uC7i8b*0Mj7cD<2(u(_4O_5o%UHH$1fxBn zR|839`)V)=Vbzx5YzOO55|~^2OCtV07Kvy*i-#Q%JqWr>&*8S98`sf>N?jd&p{%Rh zgVL!&^Q?{^PRmTz@goiU=LBCR^^)6DdZh9)+k%5{NG(QFE6qp=shx61_1l6wKIT@A zc$!LUN3J-Ky6&KPWQt7My2G6_YCLtYPK+*;LHZtPKnvBg0Cq0(QTKA_>_D@ z;56|bvx-;;*2G&|`|Xof)%sznimJFuDpJuZ{4oLETKq$R+hOpm8_6LI#+jCf4A@}E z2D37q8eoH^g?93(V{VT-zu`(-*hw}gjBzczD?W95g;B>G>1RSZt}@%}_`f}b13Nnx z$llpuB{w{m4(?33W@8CRERd^rZ@|hO7OM`E$O^-__k{3HoOCfZ7EYVQ4j^< znriiUI)?{V!-@&K*2LCh_rTd;ebc+!{QN%pzOPbK*ka0$S#&S|GvSF|VE(BiKF* zYyk7f1+w07?W=2EKUj^L@v_X$xB)`Fr&&L;f#E4s#Ku{h_Si#A5mt{>K&kQR(QKes z@5nu#O;!gJc71SX&^=2`Q%dWZf&^d-_}=Fk6cB>FK*X%=FGi0g`1jb6QHv#q3^K15 z9{jH1&`APr@DweE2Y|97<(WT%%Hwl$4#g|Mxrjo5_MzaJS+_3ax;eG_glALfagGye?Hz%NRQ69FQQ;@F|wR8TU0maVZxCT=de0}Al5uxJEifjiYcuYkAQbV@7 zwC*Sis^Pd!WgS9ygNgP&s$-Apr@*`gUS3rFy&{)=RUSa&lx1ODf2{1@A>WtM^{1s8 zDSgO|7)?|rM@W-{KUv_)PAOB-JvR7_(p;u*If?&^F_qrYP8U$iqhpCSJ9d(44 z)L{l+vyf+5-Py*fxNA&d41TWackgQP2-N1mnfkBK#D5b$mNol7D!Og6gg4?p3g!|{ z%PDE^FQk}S?5(Lm-T1|)(R!HL{#Q!T(OlJ8*f20FdAQ0uj;7qW}N^ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/enums.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/enums.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..805e39b2a143e163305b44ab31a027b39ad58438 GIT binary patch literal 2076 zcmbVN&2HO95T^e4BT=fY*lE$C?WGqTVirvhq-aotmR7b9@dpx>RC`&_<|d*;i7ZJa z@VR}2zC`;-y!Mn==&7?ysuFDpMN5I-48L!7mpe0Dx$SmSfa{On&Td*QLHLtB>|S+v zcma1319*a02?Q*7Rj(FQmQ`G>2p57^_Zq(nUV{oZwO?wu4vgqYz(@tt07mu{U=(0P zh>?J4dM#jD1tSBadTn6Z1*3SCsnF|ugmne;V+F8R$&@QMp~PQC!8PM|FBb6v?&KVR z3b^74xJqj`b=&|Hu>>e%1+a-*fGTbScJL>FNB9`9iyr`<;8VVGHIwyqx-deIn!Sga zOvuVzQbMvOA9dR|ImDvi8k|ryX~mlV+T|WXOr+P+{qEZ-HLPd zaJ^Zl{9C9LpREYLE_S0Ll*W8XSJZ3wv5thhs~39)E|Wjk8aG`lQgo>6XWjOy?P{ zGu)ev4($ArWusJ5#`c<7ogIQ%e!gVVXq65F_bos0_*cLw1R=ZycoJhaa^FIk{5=07 V`|)eG8tWOks@A${x7C%p;@^s%&&2=$ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/errors.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/errors.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c656ce3d3b9c0168f34cee55c2b932263721d0d2 GIT binary patch literal 26765 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 RWP7kiD%$v~` literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/exceptions.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/exceptions.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c9cbc4a5afb77d0f6e6e30846720e287f8828f9 GIT binary patch literal 3775 zcmdUyPj4GV7{=FjQvZt+r-l1mbBOIWX`~>8S}7IEC5`9-$YnLVGq$%~@3=F&aosC? z1TNeWQu!c!1tcHgg7^rWc;1<{vxyAYSSqm5uKcXWlX-vdJI}t$TdjtNS7lMUs)#biS7z1ExlW>F@b=pV!}07*D934}5~g`%q+ore z*~ASooyMIpBWVmDNW)a0rNhXuFy_XvNfgIy$gd@CN;cNAAH88`mtQiT2%Jo6t+bsg z$wq&I_(CL8BX|1DbsE?j{GP=e8TTXm@?pqx!bvx z$#pl5f|KL!c$yAXa@0BPnkbcrV;;Vuh`UPjFqR_d$~iI98BaCgW;jh5ms-i{wR5ul zi~zk2?$Az$JY|4PP-&q#ZLsIyt#Dhjo7FG@>bHf?`9ATuY{9%u}pBRW@Fc&(mS&mI1djnJjP> z2L|>(yq^j^b`^SjQ=xy3ksPL1z({&+jCI235dOA0LXlwuD(pWM#BxO2G96l&xD#UM zN@3?Bv#M*`;+(kGDPjVDDry! zpMc!~$g=`i(*F#s?(@)XdtQPoE@w+mmlb!uWo{?6Q=z=b@8B0MIX4MNjg0%t3;I2J z#6#y14_EPs79d{~pp#x3dW))Aqc~kL|GXUdqL>%FWD=^3eu~0P9Av6+o0SDcJK4t8 zuvuU5*b#la3ejB<{GvdV^x8!CFI4)%^$b#2s((?*7A$8YiFQFSl=TAe)5~*oP=;mH zPECdpTn;9Ys5FOan-cq+zGamQ_M1D$X55b)_oG#~ql@-}0(a7Db8kN%)6>H`t;62i z#6Z-1w%n^N_CZ)RU{Q}t?W`JTJ{n1#XUNXS z|LrWDxGbHlk|lZ-hznUFy?&N1a}aoWaF+9C6?VUAsdYT#&O%G8`rmo3{G;In^%r*UfS@S)seeB+GK4BPP?&H#~ Lx2x?&;jj4z0mt2? literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/fetch_info.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/fetch_info.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cd00e7add693729d43351278babedb714b857857 GIT binary patch literal 10418 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/future.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/future.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..94a532590f9d1badf27976b3155db14aed0d275d GIT binary patch literal 753 zcmY*Xy^hmB5Z?7qFqeb^A%qYT1r)fzTY!*|5Q5^4j)FkrX0-8c65lzAZ+D&3p>%iB zy#NoumEjF|m2G(oDrW5D$c;4P*`Jy3n{O?L!vlu)>qmC{yT{lcTI^ehix24b35F@l z*(au$;+NR1xOU6^mFN zW1rafjvCh(T?B1)7bvHGq%marEeg#?*mM=lg=4{H1Ltt)x<{&IoBKR?*bH+v=(5){+434oNH0mCl*WVrEy|h+S!>r z*4l}tE}>kUNuyv=RvO0AY9+FjUaUk_j^Df%^|_lZ7q7Cn!j?|ItYvW`r`n38kwvA| zSWMdKvijV_ILC7u2$g4yCw#!a-|vRc_V^Y%A?X(7(e`T}W3mXa^s*n}rqx)hT(a#|?R( Qyz7{}f4XZFMfdvu03y4pg#Z8m literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/lob.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/lob.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..72aad9dd50492078eb86b009dcea262fbee1c5a1 GIT binary patch literal 9393 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 O>gGAKURu7kr2ZGHwU8D7 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/pipeline.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/pipeline.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bfb1b5184afa22066f2d3d2d751d65932eec468c GIT binary patch literal 16950 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/pool.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/pool.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8ffb348e3ebfca0a98ac6eb708e9306b53328a9 GIT binary patch literal 64603 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/pool_params.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/pool_params.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7b5dffc2fcba09f0a5ff12316fe67f50c32a2191 GIT binary patch literal 41049 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/soda.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/soda.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..770cd718e87aba224fd162fef956c3ecded29ae0 GIT binary patch literal 31457 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/sparse_vector.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/sparse_vector.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df24bde741011666d4235dde675ebb7267270a8b GIT binary patch literal 3022 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 W=f|F$IA7-Z3+H|^aT1mIKm0d~Z`n%# literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/__pycache__/var.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/__pycache__/var.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e899b99f14659bcdd0d8d8fac277740c229cb27 GIT binary patch literal 6482 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 None: + """ + Internal method used for verifying a message. + """ + if not isinstance(message, MessageProperties): + raise TypeError("expecting MessageProperties object") + if message.payload is None: + errors._raise_err(errors.ERR_MESSAGE_HAS_NO_PAYLOAD) + if isinstance(self.payload_type, DbObjectType): + if ( + not isinstance(message.payload, DbObject) + or message.payload.type != self.payload_type + ): + errors._raise_err(errors.ERR_PAYLOAD_CANNOT_BE_ENQUEUED) + elif self.payload_type == "JSON": + if not isinstance(message.payload, (dict, list)): + errors._raise_err(errors.ERR_PAYLOAD_CANNOT_BE_ENQUEUED) + else: + if not isinstance(message.payload, (str, bytes)): + errors._raise_err(errors.ERR_PAYLOAD_CANNOT_BE_ENQUEUED) + + @property + def connection(self) -> "connection_module.Connection": + """ + This read-only attribute returns a reference to the connection object + on which the queue was created. + """ + return self._connection + + @property + def deqoptions(self) -> "DeqOptions": + """ + This read-only attribute returns a reference to the options that will + be used when dequeuing messages from the queue. + """ + return self._deq_options + + @property + def deqOptions(self) -> "DeqOptions": + """ + Deprecated: use deqoptions instead. + """ + return self.deqoptions + + @property + def enqoptions(self) -> "EnqOptions": + """ + This read-only attribute returns a reference to the options that will + be used when enqueuing messages into the queue. + """ + return self._enq_options + + @property + def enqOptions(self) -> "EnqOptions": + """ + Deprecated: use enqoptions() instead. + """ + return self.enqoptions + + @property + def name(self) -> str: + """ + This read-only attribute returns the name of the queue. + """ + return self._impl.name + + @property + def payload_type(self) -> Union[DbObjectType, None]: + """ + This read-only attribute returns the object type for payloads that can + be enqueued and dequeued. If using a JSON queue, this returns the value + "JSON". If using a raw queue, this returns the value *None*. + """ + if self._payload_type is None: + if self._impl.is_json: + self._payload_type = "JSON" + elif self._impl.payload_type is not None: + self._payload_type = DbObjectType._from_impl( + self._impl.payload_type + ) + return self._payload_type + + @property + def payloadType(self) -> Union[DbObjectType, None]: + """ + Deprecated: use payload_type instead. + """ + return self.payload_type + + +class Queue(BaseQueue): + + def deqmany(self, max_num_messages: int) -> list["MessageProperties"]: + """ + Dequeues up to the specified number of messages from the queue and + returns a list of these messages. + """ + if self._impl._supports_deq_many(self._connection._impl): + message_impls = self._impl.deq_many(max_num_messages) + else: + message_impls = [] + while len(message_impls) < max_num_messages: + message_impl = self._impl.deq_one() + if message_impl is None: + break + message_impls.append(message_impl) + return [MessageProperties._from_impl(impl) for impl in message_impls] + + def deqMany(self, max_num_messages: int) -> list["MessageProperties"]: + """ + Deprecated: use deqmany() instead. + """ + return self.deqmany(max_num_messages) + + def deqone(self) -> Union["MessageProperties", None]: + """ + Dequeues at most one message from the queue and returns it. If no + message is dequeued, None is returned. + """ + message_impl = self._impl.deq_one() + if message_impl is not None: + return MessageProperties._from_impl(message_impl) + + def deqOne(self) -> Union["MessageProperties", None]: + """ + Deprecated: use deqone() instead. + """ + return self.deqone() + + def enqmany(self, messages: list["MessageProperties"]) -> None: + """ + Enqueues multiple messages into the queue. The messages parameter must + be a sequence containing message property objects which have all had + their payload attribute set to a value that the queue supports. + + Warning: In python-oracledb Thick mode using Oracle Client libraries + prior to 21c, calling :meth:`Queue.enqmany()` in parallel on different + connections acquired from the same connection pool may fail due to + Oracle bug 29928074. To avoid this, do one of: upgrade the client + libraries, ensure that :meth:`Queue.enqmany()` is not run in parallel, + use standalone connections or connections from different pools, or make + multiple calls to :meth:`Queue.enqone()`. The function + :meth:`Queue.deqmany()` call is not affected. + """ + for message in messages: + self._verify_message(message) + message_impls = [m._impl for m in messages] + self._impl.enq_many(message_impls) + + def enqMany(self, messages: list["MessageProperties"]) -> None: + """ + Deprecated: use enqmany() instead. + """ + return self.enqmany(messages) + + def enqone(self, message: "MessageProperties") -> None: + """ + Enqueues a single message into the queue. The message must be a message + property object which has had its payload attribute set to a value that + the queue supports. + """ + self._verify_message(message) + self._impl.enq_one(message._impl) + + def enqOne(self, message: "MessageProperties") -> None: + """ + Deprecated: use enqone() instead. + """ + return self.enqone(message) + + +class AsyncQueue(BaseQueue): + + async def deqmany( + self, max_num_messages: int + ) -> list["MessageProperties"]: + """ + Dequeues up to the specified number of messages from the queue and + returns a list of these messages. + """ + message_impls = await self._impl.deq_many(max_num_messages) + return [MessageProperties._from_impl(impl) for impl in message_impls] + + async def deqone(self) -> Union["MessageProperties", None]: + """ + Dequeues at most one message from the queue and returns it. If no + message is dequeued, None is returned. + """ + message_impl = await self._impl.deq_one() + if message_impl is not None: + return MessageProperties._from_impl(message_impl) + + async def enqmany(self, messages: list["MessageProperties"]) -> None: + """ + Enqueues multiple messages into the queue. The messages parameter must + be a sequence containing message property objects which have all had + their payload attribute set to a value that the queue supports. + + Warning: calling this function in parallel on different connections + acquired from the same pool may fail due to Oracle bug 29928074. Ensure + that this function is not run in parallel, use standalone connections + or connections from different pools, or make multiple calls to + enqone() instead. The function Queue.deqmany() call is not affected. + """ + for message in messages: + self._verify_message(message) + message_impls = [m._impl for m in messages] + await self._impl.enq_many(message_impls) + + async def enqone(self, message: "MessageProperties") -> None: + """ + Enqueues a single message into the queue. The message must be a message + property object which has had its payload attribute set to a value that + the queue supports. + """ + self._verify_message(message) + await self._impl.enq_one(message._impl) + + +class DeqOptions(metaclass=BaseMetaClass): + @classmethod + def _from_impl(cls, impl): + options = cls.__new__(cls) + options._impl = impl + return options + + @property + def condition(self) -> str: + """ + This read-write attribute specifies a boolean expression similar to the + where clause of a SQL query. The boolean expression can include + conditions on message properties, user data properties, and PL/SQL or + SQL functions. The default is to have no condition specified. + """ + return self._impl.get_condition() + + @condition.setter + def condition(self, value: str) -> None: + self._impl.set_condition(value) + + @property + def consumername(self) -> str: + """ + This read-write attribute specifies the name of the consumer. Only + messages matching the consumer name will be accessed. If the queue is + not set up for multiple consumers this attribute should not be set. The + default is to have no consumer name specified. + """ + return self._impl.get_consumer_name() + + @consumername.setter + def consumername(self, value: str) -> None: + utils.check_parameter_length("value", value, 128) + self._impl.set_consumer_name(value) + + @property + def correlation(self) -> str: + """ + This read-write attribute specifies the correlation identifier of the + message to be dequeued. Special pattern-matching characters, such as + the percent sign (%) and the underscore (_), can be used. If multiple + messages satisfy the pattern, the order of dequeuing is indeterminate. + The default is to have no correlation specified. + """ + return self._impl.get_correlation() + + @correlation.setter + def correlation(self, value: str) -> None: + utils.check_parameter_length("value", value, 128) + self._impl.set_correlation(value) + + @property + def deliverymode(self) -> int: + """ + This write-only attribute specifies what types of messages should be + dequeued. It should be one of the values + :data:`~oracledb.MSG_PERSISTENT` (default), + :data:`~oracledb.MSG_BUFFERED`, or + :data:`~oracledb.MSG_PERSISTENT_OR_BUFFERED`. + + Note that :data:`~oracledb.MSG_BUFFERED` is not supported for JSON + payloads. + """ + raise AttributeError("deliverymode can only be written") + + @deliverymode.setter + def deliverymode(self, value: int) -> None: + self._impl.set_delivery_mode(value) + + @property + def mode(self) -> int: + """ + This read-write attribute specifies the locking behaviour associated + with the dequeue operation. It should be one of the values + :data:`~oracledb.DEQ_BROWSE`, :data:`~oracledb.DEQ_LOCKED`, + :data:`~oracledb.DEQ_REMOVE` (default), or + :data:`~oracledb.DEQ_REMOVE_NODATA`. + """ + return self._impl.get_mode() + + @mode.setter + def mode(self, value: int) -> None: + self._impl.set_mode(value) + + @property + def msgid(self) -> bytes: + """ + This read-write attribute specifies the identifier of the message to + be dequeued. The default is to have no message identifier specified. + """ + return self._impl.get_message_id() + + @msgid.setter + def msgid(self, value: bytes) -> None: + self._impl.set_message_id(value) + + @property + def navigation(self) -> int: + """ + This read-write attribute specifies the position of the message that is + retrieved. It should be one of the values + :data:`~oracledb.DEQ_FIRST_MSG`, :data:`~oracledb.DEQ_NEXT_MSG` + (default), or :data:`~oracledb.DEQ_NEXT_TRANSACTION`. + """ + return self._impl.get_navigation() + + @navigation.setter + def navigation(self, value: int) -> None: + self._impl.set_navigation(value) + + @property + def transformation(self) -> str: + """ + This read-write attribute specifies the name of the transformation that + must be applied after the message is dequeued from the database but + before it is returned to the calling application. The transformation + must be created using dbms_transform. The default is to have no + transformation specified. + """ + return self._impl.get_transformation() + + @transformation.setter + def transformation(self, value: str) -> None: + utils.check_parameter_length("value", value, 128) + self._impl.set_transformation(value) + + @property + def visibility(self) -> int: + """ + This read-write attribute specifies the transactional behavior of the + dequeue request. It should be one of the values + :data:`~oracledb.DEQ_ON_COMMIT` (default) or + :data:`~oracledb.DEQ_IMMEDIATE`. This attribute is ignored when using + the :data:`~oracledb.DEQ_BROWSE` mode. Note the value of + :attr:`~Connection.autocommit` is always ignored. + """ + return self._impl.get_visibility() + + @visibility.setter + def visibility(self, value: int) -> None: + self._impl.set_visibility(value) + + @property + def wait(self) -> int: + """ + This read-write attribute specifies the time to wait, in seconds, for a + message matching the search criteria to become available for dequeuing. + One of the values :data:`~oracledb.DEQ_NO_WAIT` or + :data:`~oracledb.DEQ_WAIT_FOREVER` can also be used. The default is + :data:`~oracledb.DEQ_WAIT_FOREVER`. + """ + return self._impl.get_wait() + + @wait.setter + def wait(self, value: int) -> None: + self._impl.set_wait(value) + + +class EnqOptions(metaclass=BaseMetaClass): + @classmethod + def _from_impl(cls, impl): + options = cls.__new__(cls) + options._impl = impl + return options + + @property + def deliverymode(self) -> int: + """ + This write-only attribute specifies what type of messages should be + enqueued. It should be one of the values + :data:`~oracledb.MSG_PERSISTENT` (default) or + :data:`~oracledb.MSG_BUFFERED`. + + Note that :data:`~oracledb.MSG_BUFFERED` is not supported for JSON + payloads. + """ + raise AttributeError("deliverymode can only be written") + + @deliverymode.setter + def deliverymode(self, value: int) -> None: + self._impl.set_delivery_mode(value) + + @property + def transformation(self) -> str: + """ + This read-write attribute specifies the name of the transformation that + must be applied before the message is enqueued into the database. The + transformation must be created using dbms_transform. The default is to + have no transformation specified. + """ + return self._impl.get_transformation() + + @transformation.setter + def transformation(self, value: str) -> None: + utils.check_parameter_length("value", value, 128) + self._impl.set_transformation(value) + + @property + def visibility(self) -> int: + """ + This read-write attribute specifies the transactional behavior of the + enqueue request. It should be one of the values + :data:`~oracledb.ENQ_ON_COMMIT` (default) or + :data:`~oracledb.ENQ_IMMEDIATE`. Note the value of + :attr:`~Connection.autocommit` is ignored. + """ + return self._impl.get_visibility() + + @visibility.setter + def visibility(self, value: int) -> None: + self._impl.set_visibility(value) + + +class MessageProperties(metaclass=BaseMetaClass): + _recipients = [] + + @classmethod + def _from_impl(cls, impl): + props = cls.__new__(cls) + props._impl = impl + return props + + @property + def attempts(self) -> int: + """ + This read-only attribute specifies the number of attempts that have + been made to dequeue the message. + """ + return self._impl.get_num_attempts() + + @property + def correlation(self) -> str: + """ + This read-write attribute specifies the correlation used when the + message was enqueued. + """ + return self._impl.get_correlation() + + @correlation.setter + def correlation(self, value: str) -> None: + utils.check_parameter_length("value", value, 128) + self._impl.set_correlation(value) + + @property + def delay(self) -> int: + """ + This read-write attribute specifies the number of seconds to delay an + enqueued message. Any integer is acceptable but the constant + :data:`~oracledb.MSG_NO_DELAY` can also be used indicating that the + message is available for immediate dequeuing. + """ + return self._impl.get_delay() + + @delay.setter + def delay(self, value: int) -> None: + self._impl.set_delay(value) + + @property + def deliverymode(self) -> int: + """ + This read-only attribute specifies the type of message that was + dequeued. It will be one of the values + :data:`~oracledb.MSG_PERSISTENT` or + :data:`~oracledb.MSG_BUFFERED`. + """ + return self._impl.get_delivery_mode() + + @property + def enqtime(self) -> datetime.datetime: + """ + This read-only attribute specifies the time that the message was + enqueued. + """ + return self._impl.get_enq_time() + + @property + def exceptionq(self) -> str: + """ + This read-write attribute specifies the name of the queue to which the + message is moved if it cannot be processed successfully. Messages are + moved if the number of unsuccessful dequeue attempts has exceeded the + maximum number of retries or if the message has expired. All messages + in the exception queue are in the :data:`~oracledb.MSG_EXPIRED` state. + The default value is the name of the exception queue associated with + the queue table. + """ + return self._impl.get_exception_queue() + + @exceptionq.setter + def exceptionq(self, value: str) -> None: + utils.check_parameter_length("value", value, 128) + self._impl.set_exception_queue(value) + + @property + def expiration(self) -> int: + """ + This read-write attribute specifies, in seconds, how long the message + is available for dequeuing. This attribute is an offset from the delay + attribute. Expiration processing requires the queue monitor to be + running. Any integer is accepted but the constant + :data:`~oracledb.MSG_NO_EXPIRATION` can also be used indicating that + the message never expires. + """ + return self._impl.get_expiration() + + @expiration.setter + def expiration(self, value: int) -> None: + self._impl.set_expiration(value) + + @property + def msgid(self) -> bytes: + """ + This read-only attribute specifies the id of the message in the last + queue that enqueued or dequeued this message. If the message has never + been dequeued or enqueued, the value will be `None`. + """ + return self._impl.get_message_id() + + @property + def payload(self) -> Union[bytes, DbObject]: + """ + This read-write attribute specifies the payload that will be enqueued + or the payload that was dequeued when using a queue. When enqueuing, + the value is checked to ensure that it conforms to the type expected + by that queue. For RAW queues, the value can be a bytes object or a + string. If the value is a string it will be converted to bytes in the + encoding UTF-8. + """ + return self._impl.payload + + @payload.setter + def payload(self, value: Any) -> None: + if isinstance(value, DbObject): + self._impl.set_payload_object(value._impl) + elif not isinstance(value, (str, bytes)): + self._impl.set_payload_json(value) + else: + if isinstance(value, str): + value_bytes = value.encode() + elif isinstance(value, bytes): + value_bytes = value + self._impl.set_payload_bytes(value_bytes) + self._impl.payload = value + + @property + def priority(self) -> int: + """ + This read-write attribute specifies the priority of the message. A + smaller number indicates a higher priority. The priority can be any + integer, including negative numbers. The default value is 0. + """ + return self._impl.get_priority() + + @priority.setter + def priority(self, value: int) -> None: + self._impl.set_priority(value) + + @property + def recipients(self) -> list[str]: + """ + This read-write attribute specifies a list of recipient names that can + be associated with a message at the time a message is enqueued. This + allows a limited set of recipients to dequeue each message. The + recipient list associated with the message overrides the queue + subscriber list, if there is one. The recipient names need not be in + the subscriber list but can be, if desired. + + To dequeue a message, the consumername attribute can be set to one of + the recipient names. The original message recipient list is not + available on dequeued messages. All recipients have to dequeue a + message before it gets removed from the queue. + + Subscribing to a queue is like subscribing to a magazine: each + subscriber can dequeue all the messages placed into a specific queue, + just as each magazine subscriber has access to all its articles. Being + a recipient, however, is like getting a letter: each recipient is a + designated target of a particular message. + """ + return self._recipients + + @recipients.setter + def recipients(self, value: list) -> None: + if value is not None: + for recipient in value: + utils.check_parameter_length("value", recipient, 120) + self._impl.set_recipients(value) + self._recipients = value + + @property + def state(self) -> int: + """ + This read-only attribute specifies the state of the message at the time + of the dequeue. It will be one of the values + :data:`~oracledb.MSG_WAITING`, :data:`~oracledb.MSG_READY`, + :data:`~oracledb.MSG_PROCESSED`, or :data:`~oracledb.MSG_EXPIRED`. + """ + return self._impl.get_state() diff --git a/.venv/lib/python3.9/site-packages/oracledb/arrow_array.py b/.venv/lib/python3.9/site-packages/oracledb/arrow_array.py new file mode 100644 index 0000000..5ecb1c8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/arrow_array.py @@ -0,0 +1,112 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# arrow_array.py +# +# Implement an ArrowArray that is used for efficiently transferring Arrow +# array data to other data frame libraries. +# ----------------------------------------------------------------------------- + +from .arrow_impl import ArrowArrayImpl +from .base import BaseMetaClass + +from . import errors + + +class ArrowArray(metaclass=BaseMetaClass): + _impl = None + + def __init__(self): + errors._raise_err(errors.ERR_INTERNAL_CREATION_REQUIRED) + + def __len__(self): + return self.num_rows + + def __repr__(self): + return ( + f"ArrowArray(name={self.name}, " + f"len={self.num_rows}, " + f"type={self.dtype})" + ) + + def __str__(self): + return self.__repr__() + + @classmethod + def _from_arrow(cls, obj): + array = cls.__new__(cls) + array._impl = ArrowArrayImpl.from_arrow_array(obj) + return array + + @classmethod + def _from_impl(cls, impl): + array = cls.__new__(cls) + array._impl = impl + return array + + def __arrow_c_array__(self, requested_schema=None): + """ + Returns a tuple containing an ArrowSchema and ArrowArray PyCapsules. + """ + if requested_schema is not None: + raise NotImplementedError("requested_schema") + return ( + self._impl.get_schema_capsule(), + self._impl.get_array_capsule(), + ) + + def __arrow_c_schema__(self): + """ + Returns an ArrowSchema PyCapsule. + """ + return self._impl.get_schema_capsule() + + @property + def dtype(self) -> str: + """ + Returns the data type associated with the array. + """ + return self._impl.get_data_type() + + @property + def name(self) -> str: + """ + Returns the name associated with the array. + """ + return self._impl.get_name() + + @property + def null_count(self) -> int: + """ + Returns the number of rows that contain null values. + """ + return self._impl.get_null_count() + + @property + def num_rows(self) -> int: + """ + Returns the number of rows in the array. + """ + return self._impl.get_num_rows() diff --git a/.venv/lib/python3.9/site-packages/oracledb/arrow_impl.cpython-39-x86_64-linux-gnu.so b/.venv/lib/python3.9/site-packages/oracledb/arrow_impl.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..caf7fc3ee3f55223358660f65ddad78f72a6f7bf GIT binary patch literal 272536 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

  • hJ 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" diff --git a/.venv/lib/python3.9/site-packages/oracledb/base_impl.cpython-39-x86_64-linux-gnu.so b/.venv/lib/python3.9/site-packages/oracledb/base_impl.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..be2511a6d1bffe8d2ff3c6533ff004b067a626cc GIT binary patch literal 2266936 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

    GGo|0PNqi*R?UCJPMKDw_o(P$X}1@FZiJ-p7+1s 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

    ?#G^1my-@}q2U$p$9@`l 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

    ;_fL{9EbpzH$@}w2*}S|T_$XwT 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�^Cc5su`_JqD+3V@%va(jOQnFXyt2!r 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

    E?2 zb5-;KxCV3ah_^q2*wNARFh1Nmo-Pcw#}fcKcwiGxeBTF5J#h4?SDPM0D9|Apsvhj5 z`94t1&?bF>54WBhb8sx5_Jr?n2-!wW{_BiKeFeY+eyKa~A|2j5>!pP0TxJRk=_R$F zkH_KM!JGtl{wNq|9g^IOc0?NmeKA<`yE3A!*kXaMXfbN8h1?#!hNt*p+FE&dg!4RY z(s95`SzDe>em)Gc-Vf&V=4XMd42`C>r=tT5v@TMhxDb_#ad8s_6#6ZCk0-5XtTyQ_ z!13tb_3`d}=!?bhZsUEk5h#@gQ}`*g#+^12-P#XC_3ByZR-_eIL}}v>AO`RXi|h)% zrilZ??w-ItZ!m7!er|2}(w)CJu-<(~*+u^H&WkE8axXgExar{`hX*u05?Fs|i{?HO zSnMg@85NAa);&E-`!G6cP!@W_zqW9BN?CEmS=w`Dp2%hHz)EjZ!+&sOovh_K70u

    ac-uykDz}MshsQ%d8roS7Vp&z_pC)jax z=A(3Ak><;U(SS9TgxLw2Z!)v+%d)h&qg_$RSS@qH=vax*mAGn% zi)LIk=1r5hXvDb~7tOfF66Zo(b;h|ER~K>FuIdw_ud?-%7q(0Q?-u_&j$0LK!-Oh> z{i^vAKqIP&J^b^B2dWbDgfXr!>FlU>FO_$n!V9ymZA*SdvDA>*N=wJf!v3#iM^qj?jGXF$OAw8n+Dr%mcYc;Sks*)@a!jxK^`*|9eaf*P$p{FznSd~ z)xbgtMtT=#HRJ(R$b1Kxl|L{ZSxhfXf3_RXt7tyD3Gju-viN=|c%Y#^GTyUj>xG`P z4x1BL(C$xTQ)d*uG&FB8K4_?uG6?ixr6_{hBYw>>FraYAI z3&*I!-}s#2qj0!d;ROs=gu|~hTrHe`2E#Q%VVFX+YdnD((uM;f`BLBdS8Rkdo6~^a zwZ%a?VIYi2&DU3Q#7#sF*kgI_;wYFf6xR)qjF?QfKD@0v&^1r*nq2&Ad9^(IcgG0fV&pddyP%d?i|djeOwE7 z>z$xTU|73Jjp9FGJ@&5*h?i4iNyq3@5J+at*@mKDqD?#=#{c};Jvb*}Q zTwnzkR+hR0``lmchNdl}N$U>QzNUCbEZ*7;_K4N$RtKdD>XvAA@x0yQ1g&oSJtW

    $q#^`%$fLO@y(o`Y?j&r{yta_ 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

    AU3OJNpIA*(UGb($Ico9j@qeUm_ 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

    H0@Hlxj+$xfObe-crk@_L>8SohS6YwLjl= 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Ņ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 V!23S`) + + - ``edition``: edition to use for the connection. This parameter cannot + be used simultaneously with the cclass parameter + (default: None) + + - ``tag``: identifies the type of connection that should be returned + from a pool. This value is only used in python-oracledb Thick mode + (default: None) + + - ``matchanytag``: a boolean specifying whether any tag can be used + when acquiring a connection from the pool. This value is only used in + python-oracledb Thick mode + (default: False) + + - ``config_dir``: a directory in which the optional tnsnames.ora + configuration file is located. This value is only used in python- + oracledb Thin mode. For python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()` + (default: :attr:`oracledb.defaults.config_dir + `) + + - ``appcontext``: application context used by the connection. It should + be a list of 3-tuples (namespace, name, value) and each entry in the + tuple should be a string + (default: None) + + - ``shardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + (default: None) + + - ``supershardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + (default: None) + + - ``debug_jdwp``: a string with the format "host=;port=" + that specifies the host and port of the PL/SQL debugger. This value + is only used in python-oracledb Thin mode. For python-oracledb Thick + mode set the ORA_DEBUG_JDWP environment variable + (default: None) + + - ``connection_id_prefix``: an application specific prefix that is + added to the connection identifier used for tracing + (default: None) + + - ``ssl_context``: an SSLContext object used for connecting to the + database using TLS. This SSL context will be modified to include the + private key or any certificates found in a separately supplied + wallet. This parameter should only be specified if the default + SSLContext object cannot be used + (default: None) + + - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes. + The value tunes internal buffers used for communication to the + database. Bigger values can increase throughput for large queries or + bulk data loads, but at the cost of higher memory use. The SDU size + that will actually be used is negotiated down to the lower of this + value and the database network SDU configuration value + (default: 8192) + + - ``pool_boundary``: one of the values "statement" or "transaction" + indicating when pooled DRCP connections can be returned to the pool. + This requires the use of DRCP with Oracle Database 23.4 or higher + (default: None) + + - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast + open. This is an Oracle Autonomous Database Serverless (ADB-S) + specific property for clients connecting from within OCI Cloud + network. Please refer to the ADB-S documentation for more information + (default: False) + + - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or + ssl.TLSVersion.TLSv1_3 indicating which TLS version to use + (default: None) + + - ``program``: a string recorded by Oracle Database as the program from + which the connection originates + (default: :attr:`oracledb.defaults.program + `) + + - ``machine``: a string recorded by Oracle Database as the name of the + machine from which the connection originates + (default: :attr:`oracledb.defaults.machine + `) + + - ``terminal``: a string recorded by Oracle Database as the terminal + identifier from which the connection originates + (default: :attr:`oracledb.defaults.terminal + `) + + - ``osuser``: a string recorded by Oracle Database as the operating + system user who originated the connection + (default: :attr:`oracledb.defaults.osuser + `) + + - ``driver_name``: a string recorded by Oracle Database as the name of + the driver which originated the connection + (default: :attr:`oracledb.defaults.driver_name + `) + + - ``use_sni``: a boolean indicating whether to use the TLS SNI + extension to bypass the second TLS neogiation that would otherwise be + required + (default: False) + + - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass + the connect string to the Oracle Client libraries unchanged without + parsing by the driver. Setting this to False makes python-oracledb + Thick and Thin mode applications behave similarly regarding + connection string parameter handling and locating any optional + tnsnames.ora configuration file + (default: :attr:`oracledb.defaults.thick_mode_dsn_passthrough + `) + + - ``extra_auth_params``: a dictionary containing configuration + parameters necessary for Oracle Database authentication using + plugins, such as the Azure and OCI cloud-native authentication + plugins + (default: None) + + - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP + with Oracle Database 23.4, or higher + (default: None) + + - ``on_connect_callback``: a callable that is invoked immediately after + a standalone connection is created or a connection is acquired from a + connection pool, but before it is returned to the caller. A common + use of this callback is for creating and setting an end user security + context object for DeepSec support + (default: None) + + - ``handle``: an integer representing a pointer to a valid service + context handle. This value is only used in python-oracledb Thick + mode. It should be used with extreme caution + (default: 0) + """ + pass + + def __repr__(self): + return ( + self.__class__.__qualname__ + "(" + f"user={self.user!r}, " + f"proxy_user={self.proxy_user!r}, " + f"host={self.host!r}, " + f"port={self.port!r}, " + f"protocol={self.protocol!r}, " + f"https_proxy={self.https_proxy!r}, " + f"https_proxy_port={self.https_proxy_port!r}, " + f"service_name={self.service_name!r}, " + f"instance_name={self.instance_name!r}, " + f"sid={self.sid!r}, " + f"server_type={self.server_type!r}, " + f"cclass={self.cclass!r}, " + f"purity={self.purity!r}, " + f"expire_time={self.expire_time!r}, " + f"retry_count={self.retry_count!r}, " + f"retry_delay={self.retry_delay!r}, " + f"tcp_connect_timeout={self.tcp_connect_timeout!r}, " + f"ssl_server_dn_match={self.ssl_server_dn_match!r}, " + f"ssl_server_cert_dn={self.ssl_server_cert_dn!r}, " + f"wallet_location={self.wallet_location!r}, " + f"events={self.events!r}, " + f"externalauth={self.externalauth!r}, " + f"mode={self.mode!r}, " + f"disable_oob={self.disable_oob!r}, " + f"stmtcachesize={self.stmtcachesize!r}, " + f"edition={self.edition!r}, " + f"tag={self.tag!r}, " + f"matchanytag={self.matchanytag!r}, " + f"config_dir={self.config_dir!r}, " + f"appcontext={self.appcontext!r}, " + f"shardingkey={self.shardingkey!r}, " + f"supershardingkey={self.supershardingkey!r}, " + f"debug_jdwp={self.debug_jdwp!r}, " + f"connection_id_prefix={self.connection_id_prefix!r}, " + f"ssl_context={self.ssl_context!r}, " + f"sdu={self.sdu!r}, " + f"pool_boundary={self.pool_boundary!r}, " + f"use_tcp_fast_open={self.use_tcp_fast_open!r}, " + f"ssl_version={self.ssl_version!r}, " + f"program={self.program!r}, " + f"machine={self.machine!r}, " + f"terminal={self.terminal!r}, " + f"osuser={self.osuser!r}, " + f"driver_name={self.driver_name!r}, " + f"use_sni={self.use_sni!r}, " + f"thick_mode_dsn_passthrough={self.thick_mode_dsn_passthrough!r}, " + f"extra_auth_params={self.extra_auth_params!r}, " + f"pool_name={self.pool_name!r}, " + f"on_connect_callback={self.on_connect_callback!r}" + ")" + ) + + def _flatten_value(f): + """ + Helper function used to flatten arrays of values if they only contain a + single item. + """ + + @functools.wraps(f) + def wrapped(self): + values = f(self) + return values if len(values) > 1 else values[0] + + return wrapped + + @property + def appcontext(self) -> list: + """ + Application context used by the connection. It should be a list of + 3-tuples (namespace, name, value) and each entry in the tuple should be + a string. + """ + return self._impl.appcontext + + @property + @_flatten_value + def cclass(self) -> Union[list, str]: + """ + The connection class to use for Database Resident Connection Pooling + (DRCP). + """ + return [d.cclass for d in self._impl.description_list.children] + + @property + def config_dir(self) -> str: + """ + A directory in which the optional tnsnames.ora configuration file is + located. This value is only used in python-oracledb Thin mode. For + python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()`. + """ + return self._impl.config_dir + + @property + @_flatten_value + def connection_id_prefix(self) -> Union[list, str]: + """ + An application specific prefix that is added to the connection + identifier used for tracing. + """ + return [ + d.connection_id_prefix + for d in self._impl.description_list.children + ] + + @property + def debug_jdwp(self) -> str: + """ + A string with the format "host=;port=" that specifies the + host and port of the PL/SQL debugger. This value is only used in + python-oracledb Thin mode. For python-oracledb Thick mode set the + ORA_DEBUG_JDWP environment variable. + """ + return self._impl.debug_jdwp + + @property + def disable_oob(self) -> bool: + """ + A boolean indicating whether out-of-band breaks should be disabled. + This value is only used in python-oracledb Thin mode. It has no effect + on Windows which does not support this functionality. + """ + return self._impl.disable_oob + + @property + def driver_name(self) -> str: + """ + A string recorded by Oracle Database as the name of the driver which + originated the connection. + """ + return self._impl.driver_name + + @property + def edition(self) -> str: + """ + Edition to use for the connection. This parameter cannot be used + simultaneously with the cclass parameter. + """ + return self._impl.edition + + @property + def events(self) -> bool: + """ + A boolean specifying whether events mode should be enabled. This value + is only used in python-oracledb Thick mode and is needed for continuous + query notification and high availability event notifications. + """ + return self._impl.events + + @property + @_flatten_value + def expire_time(self) -> Union[list, int]: + """ + The number of minutes between the sending of keepalive probes. If this + parameter is set to a value greater than zero it enables keepalive. + """ + return [d.expire_time for d in self._impl.description_list.children] + + @property + def externalauth(self) -> bool: + """ + A boolean indicating whether to use external authentication. + """ + return self._impl.externalauth + + @property + def extra_auth_params(self) -> dict: + """ + A dictionary containing configuration parameters necessary for Oracle + Database authentication using plugins, such as the Azure and OCI cloud- + native authentication plugins. + """ + return self._impl.extra_auth_params + + @property + @_flatten_value + def host(self) -> Union[list, str]: + """ + The hostname or IP address of the machine hosting the database or the + database listener. + """ + return [a.host for a in self._impl._get_addresses()] + + @property + @_flatten_value + def https_proxy(self) -> Union[list, str]: + """ + The hostname or IP address of a proxy host to use for tunneling secure + connections. + """ + return [a.https_proxy for a in self._impl._get_addresses()] + + @property + @_flatten_value + def https_proxy_port(self) -> Union[list, int]: + """ + The port on which to communicate with the proxy host. + """ + return [a.https_proxy_port for a in self._impl._get_addresses()] + + @property + @_flatten_value + def instance_name(self) -> Union[list, str]: + """ + The instance name of the database. + """ + return [d.instance_name for d in self._impl.description_list.children] + + @property + def machine(self) -> str: + """ + A string recorded by Oracle Database as the name of the machine from + which the connection originates. + """ + return self._impl.machine + + @property + def matchanytag(self) -> bool: + """ + A boolean specifying whether any tag can be used when acquiring a + connection from the pool. This value is only used in python-oracledb + Thick mode. + """ + return self._impl.matchanytag + + @property + def mode(self) -> oracledb.AuthMode: + """ + The authorization mode to use. One of the constants + :data:`oracledb.AUTH_MODE_DEFAULT`, :data:`oracledb.AUTH_MODE_PRELIM`, + :data:`oracledb.AUTH_MODE_SYSASM`, :data:`oracledb.AUTH_MODE_SYSBKP`, + :data:`oracledb.AUTH_MODE_SYSDBA`, :data:`oracledb.AUTH_MODE_SYSDGD`, + :data:`oracledb.AUTH_MODE_SYSKMT`, :data:`oracledb.AUTH_MODE_SYSOPER`, + or :data:`oracledb.AUTH_MODE_SYSRAC`. + """ + return oracledb.AuthMode(self._impl.mode) + + @property + def on_connect_callback(self) -> Callable: + """ + A callable that is invoked immediately after a standalone connection is + created or a connection is acquired from a connection pool, but before + it is returned to the caller. A common use of this callback is for + creating and setting an end user security context object for DeepSec + support. + """ + return self._impl.on_connect_callback + + @property + def osuser(self) -> str: + """ + A string recorded by Oracle Database as the operating system user who + originated the connection. + """ + return self._impl.osuser + + @property + @_flatten_value + def pool_boundary(self) -> Union[list, str]: + """ + One of the values "statement" or "transaction" indicating when pooled + DRCP connections can be returned to the pool. This requires the use of + DRCP with Oracle Database 23.4 or higher. + """ + return [d.pool_boundary for d in self._impl.description_list.children] + + @property + @_flatten_value + def pool_name(self) -> Union[list, str]: + """ + The name of the DRCP pool when using multi-pool DRCP with Oracle + Database 23.4, or higher. + """ + return [d.pool_name for d in self._impl.description_list.children] + + @property + @_flatten_value + def port(self) -> Union[list, int]: + """ + The port number on which the database listener is listening. + """ + return [a.port for a in self._impl._get_addresses()] + + @property + def program(self) -> str: + """ + A string recorded by Oracle Database as the program from which the + connection originates. + """ + return self._impl.program + + @property + @_flatten_value + def protocol(self) -> Union[list, str]: + """ + One of the strings "tcp" or "tcps" indicating whether to use + unencrypted network traffic or encrypted network traffic (TLS). + """ + return [a.protocol for a in self._impl._get_addresses()] + + @property + def proxy_user(self) -> str: + """ + The name of the proxy user to connect to. If this value is not + specified, it will be parsed out of user if user is in the form + "user[proxy_user]". + """ + return self._impl.proxy_user + + @property + @_flatten_value + def purity(self) -> Union[list, oracledb.Purity]: + """ + The connection purity to use for Database Resident Connection Pooling + (DRCP). + """ + return [ + oracledb.Purity(d.purity) + for d in self._impl.description_list.children + ] + + @property + @_flatten_value + def retry_count(self) -> Union[list, int]: + """ + The number of times that initial connection establishment should be + retried before the connection attempt is terminated. + """ + return [d.retry_count for d in self._impl.description_list.children] + + @property + @_flatten_value + def retry_delay(self) -> Union[list, int]: + """ + The number of seconds to wait before retrying to establish a + connection. + """ + return [d.retry_delay for d in self._impl.description_list.children] + + @property + @_flatten_value + def sdu(self) -> Union[list, int]: + """ + The requested size of the Session Data Unit (SDU), in bytes. The value + tunes internal buffers used for communication to the database. Bigger + values can increase throughput for large queries or bulk data loads, + but at the cost of higher memory use. The SDU size that will actually + be used is negotiated down to the lower of this value and the database + network SDU configuration value. + """ + return [d.sdu for d in self._impl.description_list.children] + + @property + @_flatten_value + def server_type(self) -> Union[list, str]: + """ + The type of server connection that should be established. If specified, + it should be one of strings "dedicated", "shared" or "pooled". + """ + return [d.server_type for d in self._impl.description_list.children] + + @property + @_flatten_value + def service_name(self) -> Union[list, str]: + """ + The service name of the database. + """ + return [d.service_name for d in self._impl.description_list.children] + + @property + def shardingkey(self) -> list: + """ + A list of strings, numbers, bytes or dates that identify the database + shard to connect to. This value is only used in python-oracledb Thick + mode. + """ + return self._impl.shardingkey + + @property + @_flatten_value + def sid(self) -> Union[list, str]: + """ + The system identifier (SID) of the database. Note using a service_name + instead is recommended. + """ + return [d.sid for d in self._impl.description_list.children] + + @property + def ssl_context(self) -> Any: + """ + An SSLContext object used for connecting to the database using TLS. + This SSL context will be modified to include the private key or any + certificates found in a separately supplied wallet. This parameter + should only be specified if the default SSLContext object cannot be + used. + """ + return self._impl.ssl_context + + @property + @_flatten_value + def ssl_server_cert_dn(self) -> Union[list, str]: + """ + The distinguished name (DN) which should be matched with the server. + This value is ignored if the ssl_server_dn_match parameter is not set + to the value True. If specified this value is used for any verfication. + Otherwise the hostname will be used. + """ + return [ + d.ssl_server_cert_dn for d in self._impl.description_list.children + ] + + @property + @_flatten_value + def ssl_server_dn_match(self) -> Union[list, bool]: + """ + A boolean indicating whether the server certificate distinguished name + (DN) should be matched in addition to the regular certificate + verification that is performed. Note that if the ssl_server_cert_dn + parameter is not privided, host name matching is performed instead. + """ + return [ + d.ssl_server_dn_match for d in self._impl.description_list.children + ] + + @property + @_flatten_value + def ssl_version(self) -> Union[list, ssl.TLSVersion]: + """ + One of the values ssl.TLSVersion.TLSv1_2 or ssl.TLSVersion.TLSv1_3 + indicating which TLS version to use. + """ + return [d.ssl_version for d in self._impl.description_list.children] + + @property + def stmtcachesize(self) -> int: + """ + The size of the statement cache. + """ + return self._impl.stmtcachesize + + @property + def supershardingkey(self) -> list: + """ + A list of strings, numbers, bytes or dates that identify the database + shard to connect to. This value is only used in python-oracledb Thick + mode. + """ + return self._impl.supershardingkey + + @property + def tag(self) -> str: + """ + Identifies the type of connection that should be returned from a pool. + This value is only used in python-oracledb Thick mode. + """ + return self._impl.tag + + @property + @_flatten_value + def tcp_connect_timeout(self) -> Union[list, float]: + """ + A float indicating the maximum number of seconds to wait when + establishing a connection to the database host. + """ + return [ + d.tcp_connect_timeout for d in self._impl.description_list.children + ] + + @property + def terminal(self) -> str: + """ + A string recorded by Oracle Database as the terminal identifier from + which the connection originates. + """ + return self._impl.terminal + + @property + def thick_mode_dsn_passthrough(self) -> bool: + """ + A boolean indicating whether to pass the connect string to the Oracle + Client libraries unchanged without parsing by the driver. Setting this + to False makes python-oracledb Thick and Thin mode applications behave + similarly regarding connection string parameter handling and locating + any optional tnsnames.ora configuration file. + """ + return self._impl.thick_mode_dsn_passthrough + + @property + def user(self) -> str: + """ + The name of the database user to connect to. + """ + return self._impl.user + + @property + @_flatten_value + def use_sni(self) -> Union[list, bool]: + """ + A boolean indicating whether to use the TLS SNI extension to bypass the + second TLS neogiation that would otherwise be required. + """ + return [d.use_sni for d in self._impl.description_list.children] + + @property + @_flatten_value + def use_tcp_fast_open(self) -> Union[list, bool]: + """ + A boolean indicating whether to use TCP fast open. This is an Oracle + Autonomous Database Serverless (ADB-S) specific property for clients + connecting from within OCI Cloud network. Please refer to the ADB-S + documentation for more information. + """ + return [ + d.use_tcp_fast_open for d in self._impl.description_list.children + ] + + @property + @_flatten_value + def wallet_location(self) -> Union[list, str]: + """ + The directory where the wallet can be found. In python-oracledb Thin + mode this must be the directory containing the PEM-encoded wallet file + ewallet.pem. In python-oracledb Thick mode this must be the directory + containing the file cwallet.sso. + """ + return [ + d.wallet_location for d in self._impl.description_list.children + ] + + def copy(self) -> "ConnectParams": + """ + Creates a copy of the ConnectParams instance and returns it. + """ + params = ConnectParams.__new__(ConnectParams) + params._impl = self._impl.copy() + return params + + def get_connect_string(self) -> str: + """ + Returns the connection string associated with the instance. + """ + return self._impl.get_connect_string() + + def get_network_service_names(self) -> list: + """ + Returns a list of the network service names found in the + :ref:`tnsnames.ora ` file which is inside the directory + that can be identified by the attribute + :attr:`~ConnectParams.config_dir`. If a tnsnames.ora file does not + exist, then an exception is raised. + """ + return self._impl.get_network_service_names() + + def parse_connect_string(self, connect_string: str) -> None: + """ + Parses the connect string into its components and stores the + parameters. + + The ``connect string`` parameter can be an Easy Connect string, + name-value pairs, or a simple alias which is looked up in + ``tnsnames.ora``. Parameters that are found in the connect string + override any currently stored values. + """ + self._impl.parse_connect_string(connect_string) + + def parse_dsn_with_credentials(self, dsn: str) -> tuple: + """ + Parses a DSN in the form /@ or in the + form / and returns a 3-tuple containing the parsed + user, password and connect string. Empty strings are returned as the + value *None*. + """ + return self._impl.parse_dsn_with_credentials(dsn) + + @utils.params_setter + def set( + self, + *, + user: Optional[str] = None, + proxy_user: Optional[str] = None, + password: Optional[str] = None, + newpassword: Optional[str] = None, + wallet_password: Optional[str] = None, + access_token: Optional[Union[str, tuple, Callable]] = None, + host: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[str] = None, + https_proxy: Optional[str] = None, + https_proxy_port: Optional[int] = None, + service_name: Optional[str] = None, + instance_name: Optional[str] = None, + sid: Optional[str] = None, + server_type: Optional[str] = None, + cclass: Optional[str] = None, + purity: Optional[oracledb.Purity] = None, + expire_time: Optional[int] = None, + retry_count: Optional[int] = None, + retry_delay: Optional[int] = None, + tcp_connect_timeout: Optional[float] = None, + ssl_server_dn_match: Optional[bool] = None, + ssl_server_cert_dn: Optional[str] = None, + wallet_location: Optional[str] = None, + events: Optional[bool] = None, + externalauth: Optional[bool] = None, + mode: Optional[oracledb.AuthMode] = None, + disable_oob: Optional[bool] = None, + stmtcachesize: Optional[int] = None, + edition: Optional[str] = None, + tag: Optional[str] = None, + matchanytag: Optional[bool] = None, + config_dir: Optional[str] = None, + appcontext: Optional[list] = None, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + debug_jdwp: Optional[str] = None, + connection_id_prefix: Optional[str] = None, + ssl_context: Optional[Any] = None, + sdu: Optional[int] = None, + pool_boundary: Optional[str] = None, + use_tcp_fast_open: Optional[bool] = None, + ssl_version: Optional[ssl.TLSVersion] = None, + program: Optional[str] = None, + machine: Optional[str] = None, + terminal: Optional[str] = None, + osuser: Optional[str] = None, + driver_name: Optional[str] = None, + use_sni: Optional[bool] = None, + thick_mode_dsn_passthrough: Optional[bool] = None, + extra_auth_params: Optional[dict] = None, + pool_name: Optional[str] = None, + on_connect_callback: Optional[Callable] = None, + handle: Optional[int] = None, + ): + """ + Sets the values for one or more of the parameters of a ConnectParams + object. All parameters are optional. A brief description of each + parameter follows: + + - ``user``: the name of the database user to connect to + + - ``proxy_user``: the name of the proxy user to connect to. If this + value is not specified, it will be parsed out of user if user is in + the form "user[proxy_user]" + + - ``password``: the password for the database user + + - ``newpassword``: a new password for the database user. The new + password will take effect immediately upon a successful connection to + the database + + - ``wallet_password``: the password to use to decrypt the wallet, if it + is encrypted. This is not the database password. For Oracle + Autonomous Database this is the password created when downloading the + wallet. This value is only used in python-oracledb Thin mode. + + - ``access_token``: a string, or a 2-tuple, or a callable. If it is a + string, it specifies an Entra ID OAuth2 token used for Open + Authorization (OAuth 2.0) token based authentication. If it is a + 2-tuple, it specifies the token and private key strings used for + Oracle Cloud Infrastructure (OCI) Identity and Access Management + (IAM) token based authentication. If it is a callable, it returns + either a string or a 2-tuple used for OAuth 2.0 or OCI IAM token + based authentication and is useful when the pool needs to expand and + create new connections but the current authentication token has + expired + + - ``host``: the hostname or IP address of the machine hosting the + database or the database listener + + - ``port``: the port number on which the database listener is listening + + - ``protocol``: one of the strings "tcp" or "tcps" indicating whether + to use unencrypted network traffic or encrypted network traffic (TLS) + + - ``https_proxy``: the hostname or IP address of a proxy host to use + for tunneling secure connections + + - ``https_proxy_port``: the port on which to communicate with the proxy + host + + - ``service_name``: the service name of the database + + - ``instance_name``: the instance name of the database + + - ``sid``: the system identifier (SID) of the database. Note using a + service_name instead is recommended + + - ``server_type``: the type of server connection that should be + established. If specified, it should be one of strings "dedicated", + "shared" or "pooled" + + - ``cclass``: the connection class to use for Database Resident + Connection Pooling (DRCP) + + - ``purity``: the connection purity to use for Database Resident + Connection Pooling (DRCP) + + - ``expire_time``: the number of minutes between the sending of + keepalive probes. If this parameter is set to a value greater than + zero it enables keepalive + + - ``retry_count``: the number of times that initial connection + establishment should be retried before the connection attempt is + terminated + + - ``retry_delay``: the number of seconds to wait before retrying to + establish a connection + + - ``tcp_connect_timeout``: a float indicating the maximum number of + seconds to wait when establishing a connection to the database host + + - ``ssl_server_dn_match``: a boolean indicating whether the server + certificate distinguished name (DN) should be matched in addition to + the regular certificate verification that is performed. Note that if + the ssl_server_cert_dn parameter is not privided, host name matching + is performed instead + + - ``ssl_server_cert_dn``: the distinguished name (DN) which should be + matched with the server. This value is ignored if the + ssl_server_dn_match parameter is not set to the value True. If + specified this value is used for any verfication. Otherwise the + hostname will be used + + - ``wallet_location``: the directory where the wallet can be found. In + python-oracledb Thin mode this must be the directory containing the + PEM-encoded wallet file ewallet.pem. In python-oracledb Thick mode + this must be the directory containing the file cwallet.sso + + - ``events``: a boolean specifying whether events mode should be + enabled. This value is only used in python-oracledb Thick mode and is + needed for continuous query notification and high availability event + notifications + + - ``externalauth``: a boolean indicating whether to use external + authentication + + - ``mode``: the authorization mode to use. One of the constants + :data:`oracledb.AUTH_MODE_DEFAULT`, + :data:`oracledb.AUTH_MODE_PRELIM`, :data:`oracledb.AUTH_MODE_SYSASM`, + :data:`oracledb.AUTH_MODE_SYSBKP`, :data:`oracledb.AUTH_MODE_SYSDBA`, + :data:`oracledb.AUTH_MODE_SYSDGD`, :data:`oracledb.AUTH_MODE_SYSKMT`, + :data:`oracledb.AUTH_MODE_SYSOPER`, or + :data:`oracledb.AUTH_MODE_SYSRAC` + + - ``disable_oob``: a boolean indicating whether out-of-band breaks + should be disabled. This value is only used in python-oracledb Thin + mode. It has no effect on Windows which does not support this + functionality + + - ``stmtcachesize``: the size of the statement cache + + - ``edition``: edition to use for the connection. This parameter cannot + be used simultaneously with the cclass parameter + + - ``tag``: identifies the type of connection that should be returned + from a pool. This value is only used in python-oracledb Thick mode + + - ``matchanytag``: a boolean specifying whether any tag can be used + when acquiring a connection from the pool. This value is only used in + python-oracledb Thick mode + + - ``config_dir``: a directory in which the optional tnsnames.ora + configuration file is located. This value is only used in python- + oracledb Thin mode. For python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()` + + - ``appcontext``: application context used by the connection. It should + be a list of 3-tuples (namespace, name, value) and each entry in the + tuple should be a string + + - ``shardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + + - ``supershardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + + - ``debug_jdwp``: a string with the format "host=;port=" + that specifies the host and port of the PL/SQL debugger. This value + is only used in python-oracledb Thin mode. For python-oracledb Thick + mode set the ORA_DEBUG_JDWP environment variable + + - ``connection_id_prefix``: an application specific prefix that is + added to the connection identifier used for tracing + + - ``ssl_context``: an SSLContext object used for connecting to the + database using TLS. This SSL context will be modified to include the + private key or any certificates found in a separately supplied + wallet. This parameter should only be specified if the default + SSLContext object cannot be used + + - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes. + The value tunes internal buffers used for communication to the + database. Bigger values can increase throughput for large queries or + bulk data loads, but at the cost of higher memory use. The SDU size + that will actually be used is negotiated down to the lower of this + value and the database network SDU configuration value + + - ``pool_boundary``: one of the values "statement" or "transaction" + indicating when pooled DRCP connections can be returned to the pool. + This requires the use of DRCP with Oracle Database 23.4 or higher + + - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast + open. This is an Oracle Autonomous Database Serverless (ADB-S) + specific property for clients connecting from within OCI Cloud + network. Please refer to the ADB-S documentation for more information + + - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or + ssl.TLSVersion.TLSv1_3 indicating which TLS version to use + + - ``program``: a string recorded by Oracle Database as the program from + which the connection originates + + - ``machine``: a string recorded by Oracle Database as the name of the + machine from which the connection originates + + - ``terminal``: a string recorded by Oracle Database as the terminal + identifier from which the connection originates + + - ``osuser``: a string recorded by Oracle Database as the operating + system user who originated the connection + + - ``driver_name``: a string recorded by Oracle Database as the name of + the driver which originated the connection + + - ``use_sni``: a boolean indicating whether to use the TLS SNI + extension to bypass the second TLS neogiation that would otherwise be + required + + - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass + the connect string to the Oracle Client libraries unchanged without + parsing by the driver. Setting this to False makes python-oracledb + Thick and Thin mode applications behave similarly regarding + connection string parameter handling and locating any optional + tnsnames.ora configuration file + + - ``extra_auth_params``: a dictionary containing configuration + parameters necessary for Oracle Database authentication using + plugins, such as the Azure and OCI cloud-native authentication + plugins + + - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP + with Oracle Database 23.4, or higher + + - ``on_connect_callback``: a callable that is invoked immediately after + a standalone connection is created or a connection is acquired from a + connection pool, but before it is returned to the caller. A common + use of this callback is for creating and setting an end user security + context object for DeepSec support + + - ``handle``: an integer representing a pointer to a valid service + context handle. This value is only used in python-oracledb Thick + mode. It should be used with extreme caution + """ + pass + + def set_from_config(self, config: dict) -> None: + """ + Sets the property values based on the specified configuration. This + method is intended for use with Centralized Configuration Providers. + + The ``config`` parameter is a dictionary which consists of the + following optional keys: "connect_descriptor", "user", "password", and + "pyo". + + If the key "connect_descriptor" is specified, it is expected to be a + string, which will be parsed and the properties found within it are + stored in the ConnectParams instance. + + If the keys "user" or "password" are specified, and the parameters do + not already have a user or password set, these values will be stored; + otherwise, they will be ignored. The key "user" is expected to be a + string. The "key" password may be a string or it may be a dictionary + which will be examined by a :ref:`registered password type handler + ` to determine the actual password. + + If the key "pyo" is specified, it is expected to be a dictionary + containing keys corresponding to property names. Any property names + accepted by the ConnectParams class will be stored in the ConnectParams + instance; all other values will be ignored. + """ + self._impl.set_from_config(config) diff --git a/.venv/lib/python3.9/site-packages/oracledb/connection.py b/.venv/lib/python3.9/site-packages/oracledb/connection.py new file mode 100644 index 0000000..3c80252 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/connection.py @@ -0,0 +1,3406 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# connection.py +# +# Contains the Connection class and the factory method connect() used for +# establishing connections to the database. +# +# *** NOTICE *** This file is generated from a template and should not be +# modified directly. See build_from_template.py in the utils subdirectory for +# more information. +# ----------------------------------------------------------------------------- + +import collections +import functools +import ssl +from typing import Any, Callable, Iterator, Type, Optional, Union + +import oracledb + +from . import base_impl, driver_mode, errors, thick_impl, thin_impl +from . import pool as pool_module +from .aq import AsyncQueue, Queue, MessageProperties +from .arrow_impl import ArrowSchemaImpl +from .base import BaseMetaClass +from .base_impl import DB_TYPE_BLOB, DB_TYPE_CLOB, DB_TYPE_NCLOB, DbType +from .connect_params import ConnectParams +from .cursor import AsyncCursor, Cursor +from .dataframe import DataFrame +from .dbobject import DbObjectType, DbObject +from .lob import AsyncLOB, LOB +from .pipeline import Pipeline, PipelineOpResult +from .soda import SodaDatabase +from .subscr import Subscription +from .utils import normalize_sessionless_transaction_id + +# named tuple used for representing global transactions +Xid = collections.namedtuple( + "Xid", ["format_id", "global_transaction_id", "branch_qualifier"] +) + + +class BaseConnection(metaclass=BaseMetaClass): + _impl = None + + def __init__(self): + self._version = None + + def __repr__(self): + cls_name = self.__class__._public_name + if self._impl is None: + return f"<{cls_name} disconnected>" + elif self.username is None: + return f"<{cls_name} to externally identified user>" + return f"<{cls_name} to {self.username}@{self.dsn}>" + + def _verify_connected(self) -> None: + """ + Verifies that the connection is connected to the database. If it is + not, an exception is raised. + """ + if self._impl is None: + errors._raise_err(errors.ERR_NOT_CONNECTED) + + def _verify_xid(self, xid: Xid) -> None: + """ + Verifies that the supplied xid is of the correct type. + """ + if not isinstance(xid, Xid): + message = "expecting transaction id created with xid()" + raise TypeError(message) + + @property + def action(self) -> str: + """ + This write-only attribute sets the ACTION column in the V$SESSION view. + It is a string attribute but the value *None* is accepted and treated + as an empty string. + """ + raise AttributeError("action is not readable") + + @action.setter + def action(self, value: str) -> None: + self._verify_connected() + self._impl.set_action(value) + + @property + def autocommit(self) -> bool: + """ + This read-write attribute determines whether autocommit mode is on or + off. When autocommit mode is on, all statements are committed as soon + as they have completed executing. + """ + self._verify_connected() + return self._impl.autocommit + + @autocommit.setter + def autocommit(self, value: bool) -> None: + self._verify_connected() + self._impl.autocommit = value + + def begin_sessionless_transaction( + self, + transaction_id: Optional[Union[str, bytes]] = None, + timeout: int = 60, + defer_round_trip: bool = False, + ) -> bytes: + """ + Begins a new sessionless transaction. This method returns the + transaction identifier specified by the user or generated by + python-oracledb. + + The ``transaction_id`` parameter should be of type string or bytes. If + specified, it represents a unique identifier for the transaction. If a + string is passed, then it will be UTF-8 encoded to bytes. If this value + is not specified, then python-oracledb generates a a random + `universally-unique identifier (UUID) + `__ value. An example is + "36b8f84d-df4e-4d49-b662-bcde71a8764f". Any user-chosen value cannot + exceed 64 bytes in length. + + The ``timeout`` parameter is the number of seconds that this + transaction can stay suspended when + :meth:`suspend_sessionless_transaction()` is later called, + or if the transaction is automatically suspended when the + ``suspend_on_success`` parameter is set to to *True* in + :meth:`Cursor.execute()` or :meth:`Cursor.executemany()`. The default + value is *60* seconds. If a transaction is not resumed within this + specified duration, the transaction will be rolled back. + + The ``defer_round_trip`` parameter is a boolean that determines whether + the request to start a transaction is to be sent immediately or with + the next database operation. If set to *False*, the request is sent + immediately. If set to *True*, the request is included with the next + database operation on the connection. The default value is *False*. + """ + self._verify_connected() + normalized_txnid = normalize_sessionless_transaction_id(transaction_id) + + if not isinstance(timeout, int) or timeout <= 0: + raise TypeError("timeout must be a positive integer") + + self._impl.begin_sessionless_transaction( + normalized_txnid, timeout, defer_round_trip + ) + return normalized_txnid + + @property + def call_timeout(self) -> int: + """ + This read-write attribute specifies the amount of time (in + milliseconds) that a single round-trip to the database may take before + a timeout will occur. A value of *0* means that no timeout will take + place. + + In python-oracledb Thick mode, this attribute is only available in + Oracle Client 18c or later. + + If a timeout occurs, the error ``DPI-1067`` will be returned if the + connection is still usable. Alternatively the error ``DPI-1080`` will + be returned if the connection has become invalid and can no longer be + used. + + For consistency and compliance with the PEP 8 naming style, the + attribute ``callTimeout`` was renamed to ``call_timeout``. The old name + will continue to work for a period of time. The error ``DPI-1080`` was + also introduced in this release. + """ + self._verify_connected() + return self._impl.get_call_timeout() + + @call_timeout.setter + def call_timeout(self, value: int) -> None: + self._verify_connected() + self._impl.set_call_timeout(value) + + def cancel(self) -> None: + """ + Breaks a long-running statement. + """ + self._verify_connected() + self._impl.cancel() + + @property + def client_identifier(self) -> str: + """ + This write-only attribute sets the CLIENT_IDENTIFIER column in the + V$SESSION view. + """ + raise AttributeError("client_identifier is not readable") + + @client_identifier.setter + def client_identifier(self, value: str) -> None: + self._verify_connected() + self._impl.set_client_identifier(value) + + @property + def clientinfo(self) -> str: + """ + This write-only attribute sets the CLIENT_INFO column in the V$SESSION + view. + """ + raise AttributeError("clientinfo is not readable") + + @clientinfo.setter + def clientinfo(self, value: str) -> None: + """ + Specifies the client_info column in the v$session table. + """ + self._verify_connected() + self._impl.set_client_info(value) + + @property + def current_schema(self) -> str: + """ + This read-write attribute sets the current schema attribute for the + session. Setting this value is the same as executing the SQL statement + ``ALTER SESSION SET CURRENT_SCHEMA``. The attribute is set (and + verified) on the next call that does a round trip to the server. The + value is placed before unqualified database objects in SQL statements + you then execute. + """ + self._verify_connected() + return self._impl.get_current_schema() + + @current_schema.setter + def current_schema(self, value: str) -> None: + self._verify_connected() + self._impl.set_current_schema(value) + + @property + def db_domain(self) -> str: + """ + This read-only attribute specifies the Oracle Database domain name + associated with the connection. It is the same value returned by the + SQL ``SELECT value FROM V$PARAMETER WHERE NAME = 'db_domain'``. + """ + self._verify_connected() + return self._impl.get_db_domain() + + @property + def db_name(self) -> str: + """ + This read-only attribute specifies the Oracle Database name associated + with the connection. It is the same value returned by the SQL ``SELECT + NAME FROM V$DATABASE``. + """ + self._verify_connected() + return self._impl.get_db_name() + + @property + def dbop(self) -> str: + """ + This write-only attribute sets the database operation that is to be + monitored. This can be viewed in the DBOP_NAME column of the + V$SQL_MONITOR view. + """ + raise AttributeError("dbop is not readable") + + @dbop.setter + def dbop(self, value: str) -> None: + self._verify_connected() + self._impl.set_dbop(value) + + def decode_oson(self, data: bytes) -> Any: + """ + Decodes `OSON-encoded + `__ bytes and returns the + object encoded in those bytes. This is useful for fetching columns + which have the check constraint ``IS JSON FORMAT OSON`` enabled. + """ + self._verify_connected() + return self._impl.decode_oson(data) + + @property + def dsn(self) -> str: + """ + This read-only attribute returns the TNS entry of the database to which + a connection has been established. + """ + self._verify_connected() + return self._impl.dsn + + @property + def econtext_id(self) -> str: + """ + This write-only attribute specifies the execution context id. This + value can be found as the ECID column in the V$SESSION view and + ECONTEXT_ID in the auditing tables. The maximum length is 64 bytes. + """ + raise AttributeError("econtext_id is not readable") + + @econtext_id.setter + def econtext_id(self, value: str) -> None: + self._verify_connected() + self._impl.set_econtext_id(value) + + @property + def edition(self) -> str: + """ + This read-only attribute gets the session edition and is only available + with Oracle Database 11.2, or later. + """ + self._verify_connected() + return self._impl.get_edition() + + def encode_oson(self, value: Any) -> bytes: + """ + Encodes a Python value into `OSON-encoded + `__ bytes and returns + them. This is useful for inserting into columns which have the check + constraint ``IS JSON FORMAT OSON`` enabled. + """ + self._verify_connected() + return self._impl.encode_oson(value) + + @property + def external_name(self) -> str: + """ + This read-write attribute specifies the external name that is used by + the connection when logging distributed transactions. + """ + self._verify_connected() + return self._impl.get_external_name() + + @external_name.setter + def external_name(self, value: str) -> None: + self._verify_connected() + self._impl.set_external_name(value) + + @property + def inputtypehandler(self) -> Callable: + """ + This read-write attribute specifies a method called for each value that + is bound to a statement executed on any cursor associated with this + connection. The method signature is handler(cursor, value, arraysize) + and the return value is expected to be a variable object or *None* in + which case a default variable object will be created. If this attribute + is *None*, the default behavior will take place for all values bound to + statements. + """ + self._verify_connected() + return self._impl.inputtypehandler + + @inputtypehandler.setter + def inputtypehandler(self, value: Callable) -> None: + self._verify_connected() + self._impl.inputtypehandler = value + + @property + def instance_name(self) -> str: + """ + This read-only attribute specifies the Oracle Database instance name + associated with the connection. It is the same value as the SQL + expression ``sys_context('userenv', 'instance_name')``. + """ + self._verify_connected() + return self._impl.get_instance_name() + + @property + def internal_name(self) -> str: + """ + This read-write attribute specifies the internal name that is used by + the connection when logging distributed transactions. + """ + self._verify_connected() + return self._impl.get_internal_name() + + @internal_name.setter + def internal_name(self, value: str) -> None: + self._verify_connected() + self._impl.set_internal_name(value) + + def is_healthy(self) -> bool: + """ + This function returns a boolean indicating the health status of a + connection. + + Connections may become unusable in several cases, such as, if the + network socket is broken, if an Oracle error indicates the connection + is unusable, or, after receiving a planned down notification from the + database. + + This function is best used before starting a new database request on an + existing :ref:`standalone connections `. For + pooled connections, the :meth:`ConnectionPool.acquire()` method + internally performs this check before returning a connection to the + application, see :ref:`poolhealth`. + + If this function returns *False*, the connection should be not be used + by the application and a new connection should be established instead. + + This function performs a local check. To fully check a connection's + health, use :meth:`ping()` which performs a round-trip to + the database. + """ + return self._impl is not None and self._impl.get_is_healthy() + + @property + def ltxid(self) -> bytes: + """ + This read-only attribute returns the logical transaction id for the + connection. It is used within Oracle Transaction Guard as a means of + ensuring that transactions are not duplicated. See :ref:`tg` for more + information. + + This is only available with Oracle Database 12.1 or later. In + python-oracledb Thick mode, it also requires Oracle Client libraries + 12.1 or later. + """ + self._verify_connected() + return self._impl.get_ltxid() + + @property + def max_identifier_length(self) -> int: + """ + This read-only attribute specifies the maximum database identifier + length in bytes supported by the database to which the connection has + been established. See `Database Object Naming Rules + `__. The value may be + *None*, *30*, or *128*. The value *None* indicates the size cannot be + reliably determined by python-oracledb, which occurs when using Thick + mode with Oracle Client libraries 12.1 (or older) to connect to Oracle + Database 12.2, or later. + """ + self._verify_connected() + return self._impl.get_max_identifier_length() + + @property + def max_open_cursors(self) -> int: + """ + This read-only attribute specifies the maximum number of cursors that + the database can have open concurrently. It is the same value returned + by the SQL ``SELECT VALUE FROM V$PARAMETER WHERE NAME = + 'open_cursors'``. When using python-oracledb Thick mode, Oracle Client + libraries 12.1 (or later) are required. + """ + self._verify_connected() + return self._impl.get_max_open_cursors() + + @property + def module(self) -> str: + """ + This write-only attribute sets the MODULE column in the V$SESSION view. + The maximum length for this string is 48 and if you exceed this length + you will get ``ORA-24960``. + """ + raise AttributeError("module is not readable") + + @module.setter + def module(self, value: str) -> None: + self._verify_connected() + self._impl.set_module(value) + + def msgproperties( + self, + payload: Optional[Union[bytes, str, DbObject]] = None, + correlation: Optional[str] = None, + delay: Optional[int] = None, + exceptionq: Optional[str] = None, + expiration: Optional[int] = None, + priority: Optional[int] = None, + recipients: Optional[list] = None, + ) -> MessageProperties: + """ + Returns an object specifying the properties of messages used in + advanced queuing. + + Each of the parameters are optional. If specified, they act as a + shortcut for setting each of the equivalently named properties. + """ + impl = self._impl.create_msg_props_impl() + props = MessageProperties._from_impl(impl) + if payload is not None: + props.payload = payload + if correlation is not None: + props.correlation = correlation + if delay is not None: + props.delay = delay + if exceptionq is not None: + props.exceptionq = exceptionq + if expiration is not None: + props.expiration = expiration + if priority is not None: + props.priority = priority + if recipients is not None: + props.recipients = recipients + return props + + def queue( + self, + name: str, + payload_type: Optional[Union[DbObjectType, str]] = None, + *, + payloadType: Optional[DbObjectType] = None, + ) -> Union[Queue, AsyncQueue]: + """ + Creates a queue which is used to enqueue and dequeue messages in + Advanced Queuing. + + The ``name`` parameter is expected to be a string identifying the queue + in which messages are to be enqueued or dequeued. + + The ``payload_type`` parameter, if specified, is expected to be an + :ref:`object type ` that identifies the type of payload + the queue expects. If the string "JSON" is specified, JSON data is + enqueued and dequeued. If not specified, RAW data is enqueued and + dequeued. + + For consistency and compliance with the PEP 8 naming style, the + parameter ``payloadType`` was renamed to ``payload_type``. The old name + will continue to work as a keyword parameter for a period of time. + """ + self._verify_connected() + payload_type_impl = None + is_json = False + if payloadType is not None: + if payload_type is not None: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="payloadType", + new_name="payload_type", + ) + payload_type = payloadType + if payload_type is not None: + if payload_type == "JSON": + is_json = True + elif not isinstance(payload_type, DbObjectType): + raise TypeError("expecting DbObjectType") + else: + payload_type_impl = payload_type._impl + impl = self._impl.create_queue_impl() + impl.initialize(self._impl, name, payload_type_impl, is_json) + return self._create_queue(impl) + + @property + def outputtypehandler(self) -> Callable: + """ + This read-write attribute specifies a method called for each column + that is going to be fetched from any cursor associated with this + connection. The method signature is ``handler(cursor, metadata)`` and + the return value is expected to be a :ref:`variable object` or + *None* in which case a default variable object will be created. If this + attribute is *None*, the default behavior will take place for all + columns fetched from cursors. + """ + self._verify_connected() + return self._impl.outputtypehandler + + @outputtypehandler.setter + def outputtypehandler(self, value: Callable) -> None: + self._verify_connected() + self._impl.outputtypehandler = value + + @property + def proxy_user(self) -> Union[str, None]: + """ + This read-only attribute returns the name of the user which was used as + a proxy when creating the connection to the database. + """ + self._verify_connected() + return self._impl.proxy_user + + def resume_sessionless_transaction( + self, + transaction_id: Union[str, bytes], + timeout: int = 60, + defer_round_trip: bool = False, + ) -> bytes: + """ + Resumes an existing sessionless transaction using the specified + transaction identifier. This method returns the transaction identifier + used to resume the sessionless transaction. + + The ``transaction_id`` parameter should be a string or bytes value that + uniquely identifies an existing sessionless transaction that is to be + resumed. + + The ``timeout`` parameter is the number of seconds that the current + connection waits to resume a transaction if another connection is using + it. When ``defer_round_trip`` is set to *False*, the wait happens in + the ``resume_sessionless_transaction()`` call itself, and the function + blocks until the transaction becomes available or the timeout expires. + When ``defer_round_trip`` is set to *True*, the resume is deferred and + the wait occurs at the time of the next database operation instead. At + the start of the wait period, if the transaction is not in use by any + other connection, the resume happens immediately. If the transaction + remains in use by the other connection after the timeout period, the + error `ORA-25351 + `__ is raised. If + another connection completes the transaction, the error `ORA-24756 + `__ is raised. + These error messages are only thrown for non-RAC instances. For + information on using Oracle RAC, see :ref:`Sessionless Transactions + with Oracle RAC `. The default value is *60* + seconds. + + The ``defer_round_trip`` parameter is a boolean that determines whether + the request to resume a transaction is to be sent immediately or with + the next database operation. If set to *False*, the request is sent + immediately. If set to *True*, the request is included with the next + database operation on the connection. The default value is *False*. + """ + self._verify_connected() + if transaction_id is None: + raise ValueError("transaction_id is required for resuming") + + normalized_txnid = normalize_sessionless_transaction_id(transaction_id) + + if not (isinstance(timeout, int) and timeout >= 0): + raise TypeError("timeout must be a non-negative integer") + + self._impl.resume_sessionless_transaction( + normalized_txnid, timeout, defer_round_trip + ) + return normalized_txnid + + @property + def sdu(self) -> int: + """ + This read-only attribute specifies the size of the Session Data Unit + (SDU) that is being used by the connection. The value will be the + lesser of the requested python-oracledb size and the maximum size + allowed by the database network configuration. It is available only in + python-oracledb Thin mode. To set the SDU in Thick mode, use a + connection string SDU parameter or set a value for DEFAULT_SDU_SIZE in + a sqlnet.ora configuration file. + """ + self._verify_connected() + return self._impl.get_sdu() + + @property + def serial_num(self) -> int: + """ + This read-only attribute specifies the session serial number associated + with the connection. It is the same value returned by the SQL ``SELECT + SERIAL# FROM V$SESSION WHERE SID=SYS_CONTEXT('USERENV', 'SID')``. It + is available only in python-oracledb Thin mode. + + For applications using :ref:`drcp`, the ``serial_num`` attribute may + not contain the current session state until a round-trip is made to the + database after acquiring a session. It is recommended to not use this + attribute if your application uses DRCP but may not perform a + round-trip. + """ + self._verify_connected() + return self._impl.get_serial_num() + + @property + def service_name(self) -> str: + """ + This read-only attribute specifies the Oracle Database service name + associated with the connection. This is the same value returned by the + SQL ``SELECT SYS_CONTEXT('USERENV', 'SERVICE_NAME') FROM DUAL``. + """ + self._verify_connected() + return self._impl.get_service_name() + + @property + def session_id(self) -> int: + """ + This read-only attribute specifies the session identifier associated + with the connection. It is the same value returned by the SQL ``SELECT + SYS_CONTEXT('USERENV', 'SID') FROM DUAL``. It is available only in + python-oracledb Thin mode. + + For applications using :ref:`drcp`, the ``session_id`` attribute may + not contain the current session state until a round-trip is made to the + database after acquiring a session. It is recommended to not use this + attribute if your application uses DRCP but may not perform a + round-trip. + """ + self._verify_connected() + return self._impl.get_session_id() + + @property + def stmtcachesize(self) -> int: + """ + This read-write attribute specifies the size of the statement cache. + This value can make a significant difference in performance if you have + a small number of statements that you execute repeatedly. + + The default value is *20*. + """ + self._verify_connected() + return self._impl.get_stmt_cache_size() + + @stmtcachesize.setter + def stmtcachesize(self, value: int) -> None: + self._verify_connected() + self._impl.set_stmt_cache_size(value) + + @property + def tag(self) -> str: + """ + This read-write attribute initially contains the actual tag of the + session that was acquired from a pool by + :meth:`ConnectionPool.acquire()`. If the connection was not acquired + from a pool or no tagging parameters were specified (``tag`` and + ``matchanytag``) when the connection was acquired from the pool, this + value will be None. If the value is changed, it must be a string + containing name=value pairs like "k1=v1;k2=v2". + + If this value is not *None* when the connection is released back to the + pool it will be used to retag the session. This value can be overridden + in the call to :meth:`ConnectionPool.release()`. + """ + self._verify_connected() + return self._impl.tag + + @tag.setter + def tag(self, value: str) -> None: + self._verify_connected() + self._impl.tag = value + + @property + def thin(self) -> bool: + """ + This read-only attribute returns a boolean indicating if + python-oracledb is in Thin mode (*True*) or Thick mode (*False*). + """ + self._verify_connected() + return self._impl.thin + + @property + def transaction_in_progress(self) -> bool: + """ + This read-only attribute specifies whether a transaction is currently + in progress on the database associated with the connection. + """ + self._verify_connected() + return self._impl.get_transaction_in_progress() + + @property + def username(self) -> str: + """ + This read-only attribute returns the name of the user which established + the connection to the database. + """ + self._verify_connected() + return self._impl.username + + @property + def version(self) -> str: + """ + This read-only attribute returns the version of the database to which a + connection has been established. + """ + if self._version is None: + self._verify_connected() + self._version = ".".join(str(c) for c in self._impl.server_version) + return self._version + + @property + def warning(self) -> Union[errors._Error, None]: + """ + This read-only attribute provides an + :ref:`oracledb._Error` object giving information about any + database warnings (such as the password being in the grace period, or + the pool being created with a smaller than requested size due to + database resource restrictions) that were generated during connection + establishment or by :meth:`oracledb.create_pool()`. The attribute will + be present if there was a warning, but creation otherwise completed + successfully. The connection will be usable despite the warning. + + For :ref:`standalone connections `, + ``Connection.warning`` will be present for the lifetime of the + connection. + + For :ref:`pooled connections `, ``Connection.warning`` + will be cleared when a connection is released to the pool such as with + :meth:`ConnectionPool.release()`. + + In python-oracledb Thick mode, warnings may be generated during pool + creation itself. These warnings will be placed on new connections + created by the pool, provided no warnings were generated by the + individual connection creations, in which case those connection + warnings will be returned. + + If no warning was generated the value *None* is returned. + """ + self._verify_connected() + return self._impl.warning + + def xid( + self, + format_id: int, + global_transaction_id: Union[bytes, str], + branch_qualifier: Union[bytes, str], + ) -> Xid: + """ + Returns a global transaction identifier (xid) that can be used with the + Two-Phase Commit (TPC) functions. + + The ``xid`` contains a format identifier, a global transaction + identifier, and a branch identifier. There are no checks performed at + the Python level. The values are checked by ODPI-C when they are passed + to the relevant functions. .. When this functionality is also + supported in the thin driver the checks will be performed at the Python + level as well. + + The ``format_id`` parameter should be a positive 32-bit integer. This + value identifies the format of the ``global_transaction_id`` and + ``branch_qualifier`` parameters and the value is determined by the + Transaction Manager (TM), if one is in use. + + The ``global_transaction_id`` and ``branch_qualifier`` parameters + should be of type bytes or string. If a value of type string is passed, + then this value will be UTF-8 encoded to bytes. The values cannot + exceed 64 bytes in length. + """ + return Xid(format_id, global_transaction_id, branch_qualifier) + + +class Connection(BaseConnection): + + def __init__( + self, + dsn: Optional[str] = None, + *, + pool: Optional["pool_module.ConnectionPool"] = None, + params: Optional[ConnectParams] = None, + **kwargs, + ) -> None: + """ + Constructor for creating a connection to the database. + """ + + super().__init__() + self._pool = pool + + # determine if thin mode is being used + with driver_mode.get_manager() as mode_mgr: + thin = mode_mgr.thin + + # determine which connection parameters to use + if params is None: + params_impl = base_impl.ConnectParamsImpl() + elif not isinstance(params, ConnectParams): + errors._raise_err(errors.ERR_INVALID_CONNECT_PARAMS) + else: + params_impl = params._impl.copy() + dsn = params_impl.process_args(dsn, kwargs, thin) + + # see if connection is being acquired from a pool + if pool is None: + pool_impl = None + else: + pool._verify_open() + pool_impl = pool._impl + + # create thin or thick implementation object + if thin: + if ( + params_impl.shardingkey is not None + or params_impl.supershardingkey is not None + ): + errors._raise_err( + errors.ERR_FEATURE_NOT_SUPPORTED, + feature="sharding", + driver_type="thick", + ) + if pool is not None: + impl = pool_impl.acquire(params_impl) + else: + impl = thin_impl.ThinConnImpl(dsn, params_impl) + impl.connect(params_impl) + else: + impl = thick_impl.ThickConnImpl(dsn, params_impl) + impl.connect(params_impl, pool_impl) + self._impl = impl + + # invoke callbacks, as applicable + if params_impl.on_connect_callback is not None: + params_impl.on_connect_callback(self) + if ( + impl.invoke_session_callback + and pool is not None + and pool.session_callback is not None + and callable(pool.session_callback) + ): + pool.session_callback(self, params_impl.tag) + impl.invoke_session_callback = False + + def __del__(self): + if self._impl is not None: + self._close(in_del=True) + + def __enter__(self): + """ + The entry point for the connection as a context manager. It returns + itself. + """ + self._verify_connected() + return self + + def __exit__(self, exc_type, exc_value, exc_tb): + """ + The exit point for the connection as a context manager. This will close + the connection and roll back any uncommitted transaction. + """ + if self._impl is not None: + self._close() + + def _close(self, in_del=False): + """ + Closes the connection and makes it unusable for further operations. An + Error exception will be raised if any operation is attempted with this + connection after this method completes successfully. + """ + if self._pool is not None: + pool_impl = self._pool._impl + if pool_impl is not None: + pool_impl.return_connection(self._impl, in_del) + else: + self._impl.close(in_del) + self._impl = None + + def _create_queue(self, impl): + """ + Returns a queue object that the user can use to dequeue and enqueue + messages. + """ + return Queue._from_impl(self, impl) + + def _get_oci_attr( + self, handle_type: int, attr_num: int, attr_type: int + ) -> Any: + """ + Returns the value of the specified OCI attribute from the internal + handle. This is only supported in python-oracledb thick mode and should + only be used as directed by Oracle. + """ + self._verify_connected() + return self._impl._get_oci_attr(handle_type, attr_num, attr_type) + + def _set_oci_attr( + self, handle_type: int, attr_num: int, attr_type: int, value: Any + ) -> None: + """ + Sets the value of the specified OCI attribute on the internal handle. + This is only supported in python-oracledb thick mode and should only + be used as directed by Oracle. + """ + self._verify_connected() + self._impl._set_oci_attr(handle_type, attr_num, attr_type, value) + + def begin( + self, + format_id: int = -1, + transaction_id: str = "", + branch_id: str = "", + ) -> None: + """ + Explicitly begins a new transaction. Without parameters, this + explicitly begins a local transaction; otherwise, this explicitly + begins a distributed (global) transaction with the given parameters. + See the Oracle documentation for more details. + + Note that in order to make use of global (distributed) transactions, + the :attr:`~Connection.internal_name` and + :attr:`~Connection.external_name` attributes must be set. + """ + if format_id != -1: + self.tpc_begin(self.xid(format_id, transaction_id, branch_id)) + + @property + def callTimeout(self) -> int: + """ + Deprecated. Use property call_timeout instead. + """ + return self.call_timeout + + @callTimeout.setter + def callTimeout(self, value: int) -> None: + self._verify_connected() + self._impl.set_call_timeout(value) + + def changepassword(self, old_password: str, new_password: str) -> None: + """ + Changes the password for the user to which the connection is connected. + """ + self._verify_connected() + self._impl.change_password(old_password, new_password) + + def clear_end_user_security_context(self) -> None: + """ + Clears the end user security context specified on a connection. + + This reverts the connection to its original state in which subsequent + database operations are executed on the connection without any end user + security context. + """ + self._verify_connected() + self._impl.clear_end_user_security_context() + + def close(self) -> None: + """ + Closes the connection now and makes it unusable for further operations. + An Error exception will be raised if any operation is attempted with + this connection after this method is completed successfully. + + All open cursors and LOBs created by the connection will be closed and + will also no longer be usable. + + Internally, references to the connection are held by cursor objects, + LOB objects, subscription objects, etc. Once all of these references + are released, the connection itself will be closed automatically. + Either control references to these related objects carefully or + explicitly close connections in order to ensure sufficient resources + are available. + """ + self._verify_connected() + self._close() + + def commit(self) -> None: + """ + Commits any pending transactions to the database. + """ + self._verify_connected() + self._impl.commit() + + def createlob( + self, lob_type: DbType, data: Optional[Union[str, bytes]] = None + ) -> LOB: + """ + Creates and returns a new temporary LOB object of the specified type. + The ``lob_type`` parameter should be one of + :data:`oracledb.DB_TYPE_CLOB`, :data:`oracledb.DB_TYPE_BLOB`, or + :data:`oracledb.DB_TYPE_NCLOB`. + + If data is supplied, it will be written to the temporary LOB before it + is returned. + """ + self._verify_connected() + if lob_type not in (DB_TYPE_CLOB, DB_TYPE_NCLOB, DB_TYPE_BLOB): + message = ( + "parameter should be one of oracledb.DB_TYPE_CLOB, " + "oracledb.DB_TYPE_BLOB or oracledb.DB_TYPE_NCLOB" + ) + raise TypeError(message) + impl = self._impl.create_temp_lob_impl(lob_type) + lob = LOB._from_impl(impl) + if data: + lob.write(data) + return lob + + def cursor( + self, scrollable: bool = False, handle: Optional[object] = None + ) -> Cursor: + """ + Returns a new :ref:`cursor object ` using the connection. + + The ``scrollable`` parameter specifies whether the cursor should be + scrollable. The :meth:`~Cursor.scroll()` method is only available if + this value is true when the cursor is created. + + The ``handle`` parameter specifies the Oracle Call Interface statement + handle wrapped in a PyCapsule named ``oci_stmt_handle``. It is only + supported in python-oracledb Thick mode. + """ + self._verify_connected() + return Cursor(self, scrollable, handle=handle) + + def direct_path_load( + self, + schema_name: str, + table_name: str, + column_names: list[str], + data: Any, + *, + batch_size: int = 2**32 - 1, + ) -> None: + """ + Load data into Oracle Database using the Direct Path Load interface. + It is available only in python-oracledb Thin mode. + + The ``data`` parameter can be a list of sequences, a DataFrame, or a + third-party DataFrame instance that supports the Apache Arrow PyCapsule + Interface. + + The ``batch_size`` parameter is used to split large data sets into + smaller pieces for sending to the database. It is the number of records + in each batch. This parameter can be used to tune performance. + """ + self._verify_connected() + self._impl.direct_path_load( + schema_name, table_name, column_names, data, batch_size + ) + + def fetch_df_all( + self, + statement: Optional[str] = None, + parameters: Optional[Union[list, tuple, dict]] = None, + arraysize: Optional[int] = None, + *, + fetch_decimals: Optional[bool] = None, + requested_schema: Optional[Any] = None, + handle: Optional[object] = None, + ) -> DataFrame: + """ + Fetches all rows of the SQL query ``statement``, returning them in a + :ref:`DataFrame ` object. An empty DataFrame is + returned if there are no rows available. + + The ``parameters`` parameter can be a list of tuples, where each tuple + item maps to one :ref:`bind variable placeholder ` in + ``statement``. It can also be a list of dictionaries, where the keys + match the bind variable placeholder names in ``statement``. + + The ``arraysize`` parameter can be specified to tune performance of + fetching data across the network. It defaults to + :attr:`oracledb.defaults.arraysize `. Internally, + the ``fetch_df_all()``'s :attr:`Cursor.prefetchrows` size is always set + to the value of the explicit or default ``arraysize`` parameter value. + + The ``fetch_decimals`` parameter specifies whether to return decimal + values when fetching columns of type ``NUMBER`` that are capable of + being represented in Apache Arrow Decimal128 format. The default value + is :data:`oracledb.defaults.fetch_decimals `. + + The ``requested_schema`` parameter specifies an object that implements + the Apache Arrow PyCapsule schema interface. The DataFrame returned by + ``fetch_df_all()`` will have the data types and names of the schema. + + The ``handle`` parameter specifies a PyCapsule named + ``oci_stmt_handle`` containing an OCIStmt handle. This is useful when + needing to fetch data from an existing open cursor that was created + externally. Note that this is only supported in python-oracledb Thick + mode. + + Any LOB fetched must be less than 1 GB. + """ + if not (statement is not None) ^ (handle is not None): + raise ValueError( + "One of the parameters 'statement' or 'handle' " + "is required but not both" + ) + cursor = self.cursor(handle=handle) + cursor._impl.fetching_arrow = True + if requested_schema is not None: + cursor._impl.schema_impl = ArrowSchemaImpl.from_arrow_schema( + requested_schema + ) + if arraysize is not None: + cursor.arraysize = arraysize + cursor.prefetchrows = cursor.arraysize + if statement is not None: + cursor.execute( + statement, + parameters, + fetch_decimals=fetch_decimals, + ) + else: + cursor._verify_fetch() + return cursor._impl.fetch_df_all(cursor) + + def fetch_df_batches( + self, + statement: Optional[str] = None, + parameters: Optional[Union[list, tuple, dict]] = None, + size: Optional[int] = None, + *, + fetch_decimals: Optional[bool] = None, + requested_schema: Optional[Any] = None, + handle: Optional[object] = None, + ) -> Iterator[DataFrame]: + """ + This returns an iterator yielding the next ``size`` rows of the SQL + query ``statement`` in each iteration as a :ref:`DataFrame + ` object. An empty DataFrame is returned if there + are no rows available. + + The ``parameters`` parameter can be a list of tuples, where each tuple + item maps to one :ref:`bind variable placeholder ` in + ``statement``. It can also be a list of dictionaries, where the keys + match the bind variable placeholder names in ``statement``. + + The ``size`` parameter controls the number of records fetched in each + batch. It defaults to + :attr:`oracledb.defaults.arraysize `. Internally, + the ``fetch_df_batches()``'s :attr:`Cursor.arraysize` and + :attr:`Cursor.prefetchrows` sizes are always set to the value of the + explicit or default ``size`` parameter value. + + The ``fetch_decimals`` parameter specifies whether to return decimal + values when fetching columns of type ``NUMBER`` that are capable of + being represented in Apache Arrow Decimal128 format. The default value + is :data:`oracledb.defaults.fetch_decimals `. + + The ``requested_schema`` parameter specifies an object that implements + the Apache Arrow PyCapsule schema interface. The DataFrame returned by + ``fetch_df_all()`` will have the data types and names of the schema. + + The ``handle`` parameter specifies a PyCapsule named + ``oci_stmt_handle`` containing an OCIStmt handle. This is useful when + needing to fetch data from an existing open cursor that was created + externally. Note that this is only supported in python-oracledb Thick + mode. + + Any LOB fetched must be less than 1 GB. + """ + if not (statement is not None) ^ (handle is not None): + raise ValueError( + "One of the parameters 'statement' or 'handle' " + "is required but not both" + ) + cursor = self.cursor(handle=handle) + cursor._impl.fetching_arrow = True + if requested_schema is not None: + cursor._impl.schema_impl = ArrowSchemaImpl.from_arrow_schema( + requested_schema + ) + if size is not None: + cursor.arraysize = size + cursor.prefetchrows = cursor.arraysize + if statement is not None: + cursor.execute( + statement, + parameters, + fetch_decimals=fetch_decimals, + ) + else: + cursor._verify_fetch() + if size is None: + yield cursor._impl.fetch_df_all(cursor) + else: + yield from cursor._impl.fetch_df_batches(cursor, batch_size=size) + + def getSodaDatabase(self) -> SodaDatabase: + """ + Returns a SodaDatabase object for Simple Oracle Document Access (SODA). + All SODA operations are performed either on the returned SodaDatabase + object or from objects created by the returned SodaDatabase object. See + `here `__ for + additional information on SODA. + """ + self._verify_connected() + db_impl = self._impl.create_soda_database_impl(self) + return SodaDatabase._from_impl(self, db_impl) + + def gettype(self, name: str) -> DbObjectType: + """ + Returns a type object given its name. This can then be used to create + objects which can be bound to cursors created by this connection. + """ + self._verify_connected() + obj_type_impl = self._impl.get_type(self, name) + return DbObjectType._from_impl(obj_type_impl) + + @property + def handle(self) -> int: + """ + This read-only attribute returns the Oracle Call Interface (OCI) + service context handle for the connection. It is primarily provided to + facilitate testing the creation of a connection using the OCI service + context handle. + + This property is only relevant to python-oracledb's thick mode. + """ + self._verify_connected() + return self._impl.get_handle() + + @property + def maxBytesPerCharacter(self) -> int: + """ + Deprecated. Use the constant value 4 instead. + """ + return 4 + + def ping(self) -> None: + """ + Pings the database to verify if the connection is valid. An exception + is thrown if it is not, in which case the connection should not be used + by the application and a new connection should be established instead. + + This function performs a :ref:`round-trip ` to the + database, so it should not be used unnecessarily. + + Note connection pools will perform the same health check automatically, + based on configuration settings. See :ref:`poolhealth`. + + Also, see :meth:`is_healthy()` for a lightweight alternative. + """ + self._verify_connected() + self._impl.ping() + + def prepare(self) -> bool: + """ + Prepares the distributed (global) transaction for commit. Returns a + boolean indicating if a transaction was actually prepared in order to + avoid the error ``ORA-24756 (transaction does not exist)``. + """ + return self.tpc_prepare() + + def rollback(self) -> None: + """ + Rolls back any pending transactions. + """ + self._verify_connected() + self._impl.rollback() + + def set_end_user_security_context( + self, + context, + ) -> None: + """ + Sets the end user security context on a connection using the specified + context. + + Once this method is called, the specified end user security context is + applicable to all database operations performed in the connection. + """ + self._verify_connected() + self._impl.set_end_user_security_context(context) + + def shutdown(self, mode: int = 0) -> None: + """ + Shuts down the database. In order to do this the connection must be + connected as :data:`~oracledb.SYSDBA` or :data:`~oracledb.SYSOPER`. Two + calls must be made unless the mode specified is + :data:`~oracledb.DBSHUTDOWN_ABORT`. + """ + self._verify_connected() + self._impl.shutdown(mode) + + def startup( + self, + force: bool = False, + restrict: bool = False, + pfile: Optional[str] = None, + ) -> None: + """ + Starts up the database. This is equivalent to the SQL*Plus command + ``startup nomount``. The connection must be connected as + :data:`~oracledb.SYSDBA` or :data:`~oracledb.SYSOPER` with the + :data:`~oracledb.PRELIM_AUTH` option specified for this to work. + + The ``pfile`` parameter, if specified, is expected to be a string + identifying the location of the parameter file (PFILE) which will be + used instead of the stored parameter file (SPFILE). + """ + self._verify_connected() + self._impl.startup(force, restrict, pfile) + + def subscribe( + self, + namespace: int = oracledb.SUBSCR_NAMESPACE_DBCHANGE, + protocol: int = oracledb.SUBSCR_PROTO_CALLBACK, + callback: Optional[Callable] = None, + timeout: int = 0, + operations: int = oracledb.OPCODE_ALLOPS, + port: int = 0, + qos: int = oracledb.SUBSCR_QOS_DEFAULT, + ip_address: Optional[str] = None, + grouping_class: int = oracledb.SUBSCR_GROUPING_CLASS_NONE, + grouping_value: int = 0, + grouping_type: int = oracledb.SUBSCR_GROUPING_TYPE_SUMMARY, + name: Optional[str] = None, + client_initiated: bool = False, + *, + ipAddress: Optional[str] = None, + groupingClass: int = oracledb.SUBSCR_GROUPING_CLASS_NONE, + groupingValue: int = 0, + groupingType: int = oracledb.SUBSCR_GROUPING_TYPE_SUMMARY, + clientInitiated: bool = False, + ) -> Subscription: + """ + Returns a new subscription object that receives notifications for + events that take place in the database that match the given parameters. + + The ``namespace`` parameter specifies the namespace the subscription + uses. It can be one of :data:`oracledb.SUBSCR_NAMESPACE_DBCHANGE` or + :data:`oracledb.SUBSCR_NAMESPACE_AQ`. + + The ``protocol`` parameter specifies the protocol to use when + notifications are sent. Currently the only valid value is + :data:`oracledb.SUBSCR_PROTO_OCI`. + + The ``callback`` is expected to be a callable that accepts a single + parameter. A :ref:`message object ` is passed to this + callback whenever a notification is received. + + The ``timeout`` value specifies that the subscription expires after the + given time in seconds. The default value of *0* indicates that the + subscription never expires. + + The ``operations`` parameter enables filtering of the messages that are + sent (insert, update, delete). The default value will send + notifications for all operations. This parameter is only used when the + namespace is set to :data:`oracledb.SUBSCR_NAMESPACE_DBCHANGE`. + + The ``port`` parameter specifies the listening port for callback + notifications from the database server. If not specified, an unused + port will be selected by the Oracle Client libraries. + + The ``qos`` parameter specifies quality of service options. It should + be one or more of the following flags, OR'ed together: + :data:`oracledb.SUBSCR_QOS_RELIABLE`, + :data:`oracledb.SUBSCR_QOS_DEREG_NFY`, + :data:`oracledb.SUBSCR_QOS_ROWIDS`, :data:`oracledb.SUBSCR_QOS_QUERY`, + :data:`oracledb.SUBSCR_QOS_BEST_EFFORT`. + + The ``ip_address`` parameter specifies the IP address (*IPv4* or + *IPv6*) in standard string notation to bind for callback notifications + from the database server. If not specified, the client IP address will + be determined by the Oracle Client libraries. + + The ``grouping_class`` parameter specifies what type of grouping of + notifications should take place. Currently, if set, this value can only + be set to the value :data:`oracledb.SUBSCR_GROUPING_CLASS_TIME`, which + will group notifications by the number of seconds specified in the + ``grouping_value`` parameter. The ``grouping_type`` parameter should be + one of the values :data:`oracledb.SUBSCR_GROUPING_TYPE_SUMMARY` (the + default) or :data:`oracledb.SUBSCR_GROUPING_TYPE_LAST`. + + The ``name`` parameter is used to identify the subscription and is + specific to the selected namespace. If the namespace parameter is + :data:`oracledb.SUBSCR_NAMESPACE_DBCHANGE` then the name is optional + and can be any value. If the namespace parameter is + :data:`oracledb.SUBSCR_NAMESPACE_AQ`, however, the name must be in the + format '' for single consumer queues and + ':' for multiple consumer queues, and + identifies the queue that will be monitored for messages. The queue + name may include the schema, if needed. + + The ``client_initiated`` parameter is a boolean that determines if + client initiated connections (the value *True*) or server initiated + connections (the default value *False*) will be established. Client + initiated connections are only available in Oracle Database 19.4 (or + later). For python-oracledb Thick mode, Oracle Client 19.4 (or later) + is additionally required. + + For consistency and compliance with the PEP 8 naming style, the + parameter ``ipAddress`` was renamed to ``ip_address``, the parameter + ``groupingClass`` was renamed to ``grouping_class``, the parameter + ``groupingValue`` was renamed to ``grouping_value``, the parameter + ``groupingType`` was renamed to ``grouping_type`` and the parameter + ``clientInitiated`` was renamed to ``client_initiated``. The old names + will continue to work as keyword parameters for a period of time. + """ + self._verify_connected() + if ipAddress is not None: + if ip_address is not None: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="ipAddress", + new_name="ip_address", + ) + ip_address = ipAddress + if groupingClass != oracledb.SUBSCR_GROUPING_CLASS_NONE: + if grouping_class != oracledb.SUBSCR_GROUPING_CLASS_NONE: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="groupingClass", + new_name="grouping_class", + ) + grouping_class = groupingClass + if groupingValue != 0: + if grouping_value != 0: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="groupingValue", + new_name="grouping_value", + ) + grouping_value = groupingValue + if groupingType != oracledb.SUBSCR_GROUPING_TYPE_SUMMARY: + if grouping_type != oracledb.SUBSCR_GROUPING_TYPE_SUMMARY: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="groupingType", + new_name="grouping_type", + ) + grouping_type = groupingType + if clientInitiated: + if client_initiated: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="clientInitiated", + new_name="client_initiated", + ) + client_initiated = clientInitiated + impl = self._impl.create_subscr_impl( + self, + callback, + namespace, + name, + protocol, + ip_address, + port, + timeout, + operations, + qos, + grouping_class, + grouping_value, + grouping_type, + client_initiated, + ) + subscr = Subscription._from_impl(impl) + impl.subscribe(subscr, self._impl) + return subscr + + def suspend_sessionless_transaction(self) -> None: + """ + Suspends the currently active sessionless transaction immediately. + + This detaches the transaction from the connection, allowing it to be + resumed later with the transaction identifier that was specified during + creation of the sessionless transaction. The ``timeout`` previously + passed to :meth:`begin_sessionless_transaction()` determines how long + the transaction can stay suspended before it is automatically rolled + back. + """ + self._verify_connected() + self._impl.suspend_sessionless_transaction() + + def tpc_begin( + self, xid: Xid, flags: int = oracledb.TPC_BEGIN_NEW, timeout: int = 0 + ) -> None: + """ + Begins a Two-Phase Commit (TPC) on a global transaction using the + specified transaction identifier (xid). + + The ``xid`` parameter should be an object returned by the + :meth:`xid()` method. + + The ``flags`` parameter is one of the constants + :data:`oracledb.TPC_BEGIN_JOIN`, :data:`oracledb.TPC_BEGIN_NEW`, + :data:`oracledb.TPC_BEGIN_PROMOTE`, or + :data:`oracledb.TPC_BEGIN_RESUME`. The default is + :data:`oracledb.TPC_BEGIN_NEW`. + + The ``timeout`` parameter is the number of seconds to wait for a + transaction to become available for resumption when + :data:`~oracledb.TPC_BEGIN_RESUME` is specified in the ``flags`` + parameter. When :data:`~oracledb.TPC_BEGIN_NEW` is specified in the + ``flags`` parameter, the ``timeout`` parameter indicates the number of + seconds the transaction can be inactive before it is automatically + terminated by the system. A transaction is inactive between the time it + is detached with :meth:`tpc_end()` and the time it is resumed with + :meth:`tpc_begin()`.The default is *0* seconds. + """ + self._verify_connected() + self._verify_xid(xid) + if flags not in ( + oracledb.TPC_BEGIN_NEW, + oracledb.TPC_BEGIN_JOIN, + oracledb.TPC_BEGIN_RESUME, + oracledb.TPC_BEGIN_PROMOTE, + ): + errors._raise_err(errors.ERR_INVALID_TPC_BEGIN_FLAGS) + self._impl.tpc_begin(xid, flags, timeout) + + def tpc_commit( + self, xid: Optional[Xid] = None, one_phase: bool = False + ) -> None: + """ + Commits a global transaction. When called with no arguments, this + method commits a transaction previously prepared with + :meth:`tpc_begin()` and optionally prepared with :meth:`tpc_prepare()`. + If :meth:`tpc_prepare()` is not called, a single phase commit is + performed. A transaction manager may choose to do this if only a single + resource is participating in the global transaction. + + If an ``xid`` parameter is passed, then an object should be returned by + the :meth:`xid()` function. This form should be called outside of a + transaction and is intended for use in recovery. + + The ``one_phase`` parameter is a boolean identifying whether to perform + a one-phase or two-phase commit. If ``one_phase`` parameter is *True*, + a single-phase commit is performed. The default value is *False*. This + parameter is only examined if a value is provided for the ``xid`` + parameter. Otherwise, the driver already knows whether + :meth:`tpc_prepare()` was called for the transaction and whether a + one-phase or two-phase commit is required. + """ + self._verify_connected() + if xid is not None: + self._verify_xid(xid) + self._impl.tpc_commit(xid, one_phase) + + def tpc_end( + self, xid: Optional[Xid] = None, flags: int = oracledb.TPC_END_NORMAL + ) -> None: + """ + Ends or suspends work on a global transaction. This function is only + intended for use by transaction managers. + + If an ``xid`` parameter is passed, then an object should be returned by + the :meth:`xid()` function. If no xid parameter is passed, then the + transaction identifier used by the previous :meth:`tpc_begin()` is + used. + + The ``flags`` parameter is one of the constants + :data:`oracledb.TPC_END_NORMAL` or :data:`oracledb.TPC_END_SUSPEND`. + The default is :data:`oracledb.TPC_END_NORMAL`. + + If the flag is :data:`oracledb.TPC_END_SUSPEND` then the transaction + may be resumed later by calling :meth:`tpc_begin()` with the flag + :data:`oracledb.TPC_BEGIN_RESUME`. + """ + self._verify_connected() + if xid is not None: + self._verify_xid(xid) + if flags not in (oracledb.TPC_END_NORMAL, oracledb.TPC_END_SUSPEND): + errors._raise_err(errors.ERR_INVALID_TPC_END_FLAGS) + self._impl.tpc_end(xid, flags) + + def tpc_forget(self, xid: Xid) -> None: + """ + Causes the database to forget a heuristically completed TPC + transaction. This function is only intended to be called by + transaction managers. + + The ``xid`` parameter is mandatory and should be an object should be + returned by the :meth:`xid()` function. + """ + self._verify_connected() + self._verify_xid(xid) + self._impl.tpc_forget(xid) + + def tpc_prepare(self, xid: Optional[Xid] = None) -> bool: + """ + Prepares a two-phase transaction for commit. After this function is + called, no further activity should take place on this connection until + either :meth:`tpc_commit()` or :meth:`tpc_rollback()` have been called. + + Returns a boolean indicating whether a commit is needed or not. If you + attempt to commit when not needed, then it results in the error + ``ORA-24756: transaction does not exist``. + + If an ``xid`` parameter is passed, then an object should be returned by + the :meth:`xid()` function. If an ``xid`` parameter is not passed, then + the transaction identifier used by the previous :meth:`tpc_begin()` is + used. + """ + self._verify_connected() + if xid is not None: + self._verify_xid(xid) + return self._impl.tpc_prepare(xid) + + def tpc_recover(self) -> list: + """ + Returns a list of pending transaction identifiers that require + recovery. Objects of type ``Xid`` (as returned by the + :meth:`xid()` function) are returned and these can be passed to + :meth:`tpc_commit()` or :meth:`tpc_rollback()` as needed. + + This function queries the DBA_PENDING_TRANSACTIONS view and requires + "SELECT" privilege on that view. + """ + with self.cursor() as cursor: + cursor.execute(""" + select + formatid, + globalid, + branchid + from dba_pending_transactions""") + cursor.rowfactory = Xid + return cursor.fetchall() + + def tpc_rollback(self, xid: Optional[Xid] = None) -> None: + """ + If an ``xid`` parameter is not passed, then it rolls back the + transaction that was previously started with + :meth:`tpc_begin()`. + + If an ``xid`` parameter is passed, then an object should be returned by + :meth:`xid()` and the specified transaction is rolled back. This form + should be called outside of a transaction and is intended for use in + recovery. + """ + self._verify_connected() + if xid is not None: + self._verify_xid(xid) + self._impl.tpc_rollback(xid) + + def unsubscribe(self, subscr: Subscription) -> None: + """ + Unsubscribe from events in the database that were originally subscribed + to using :meth:`subscribe()`. The connection used to unsubscribe should + be the same one used to create the subscription, or should access the + same database and be connected as the same user name. + """ + self._verify_connected() + if not isinstance(subscr, Subscription): + raise TypeError("expecting subscription") + if subscr._impl is None: + errors._raise_err(errors.ERR_NOT_SUBSCRIBED) + subscr._impl.unsubscribe(self, self._impl) + subscr._impl = None + + +def _connection_factory( + f: Callable[..., Connection], +) -> Callable[..., Connection]: + """ + Decorator which checks the validity of the supplied keyword parameters by + calling the original function (which does nothing), then creates and + returns an instance of the requested Connection class. The base Connection + class constructor does not check the validity of the supplied keyword + parameters. + """ + + @functools.wraps(f) + def connect( + dsn: Optional[str] = None, + *, + pool: Optional["pool_module.ConnectionPool"] = None, + pool_alias: Optional[str] = None, + conn_class: Type[Connection] = Connection, + params: Optional[ConnectParams] = None, + **kwargs, + ) -> Connection: + f( + dsn=dsn, + pool=pool, + pool_alias=pool_alias, + conn_class=conn_class, + params=params, + **kwargs, + ) + if not issubclass(conn_class, Connection): + errors._raise_err(errors.ERR_INVALID_CONN_CLASS) + if pool is not None and pool_alias is not None: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="pool", + new_name="pool_alias", + ) + if pool_alias is not None: + pool = pool_module.named_pools.pools.get(pool_alias) + if pool is None: + errors._raise_err( + errors.ERR_NAMED_POOL_MISSING, alias=pool_alias + ) + if pool is not None and not isinstance( + pool, pool_module.ConnectionPool + ): + message = "pool must be an instance of oracledb.ConnectionPool" + raise TypeError(message) + return conn_class(dsn=dsn, pool=pool, params=params, **kwargs) + + return connect + + +@_connection_factory +def connect( + dsn: Optional[str] = None, + *, + pool: Optional["pool_module.ConnectionPool"] = None, + pool_alias: Optional[str] = None, + conn_class: Type[Connection] = Connection, + params: Optional[ConnectParams] = None, + user: Optional[str] = None, + proxy_user: Optional[str] = None, + password: Optional[str] = None, + newpassword: Optional[str] = None, + wallet_password: Optional[str] = None, + access_token: Optional[Union[str, tuple, Callable]] = None, + host: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[str] = None, + https_proxy: Optional[str] = None, + https_proxy_port: Optional[int] = None, + service_name: Optional[str] = None, + instance_name: Optional[str] = None, + sid: Optional[str] = None, + server_type: Optional[str] = None, + cclass: Optional[str] = None, + purity: Optional[oracledb.Purity] = None, + expire_time: Optional[int] = None, + retry_count: Optional[int] = None, + retry_delay: Optional[int] = None, + tcp_connect_timeout: Optional[float] = None, + ssl_server_dn_match: Optional[bool] = None, + ssl_server_cert_dn: Optional[str] = None, + wallet_location: Optional[str] = None, + events: Optional[bool] = None, + externalauth: Optional[bool] = None, + mode: Optional[oracledb.AuthMode] = None, + disable_oob: Optional[bool] = None, + stmtcachesize: Optional[int] = None, + edition: Optional[str] = None, + tag: Optional[str] = None, + matchanytag: Optional[bool] = None, + config_dir: Optional[str] = None, + appcontext: Optional[list] = None, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + debug_jdwp: Optional[str] = None, + connection_id_prefix: Optional[str] = None, + ssl_context: Optional[Any] = None, + sdu: Optional[int] = None, + pool_boundary: Optional[str] = None, + use_tcp_fast_open: Optional[bool] = None, + ssl_version: Optional[ssl.TLSVersion] = None, + program: Optional[str] = None, + machine: Optional[str] = None, + terminal: Optional[str] = None, + osuser: Optional[str] = None, + driver_name: Optional[str] = None, + use_sni: Optional[bool] = None, + thick_mode_dsn_passthrough: Optional[bool] = None, + extra_auth_params: Optional[dict] = None, + pool_name: Optional[str] = None, + on_connect_callback: Optional[Callable] = None, + handle: Optional[int] = None, +) -> Connection: + """ + Factory function which creates a connection to the database and returns it. + + The ``dsn`` parameter (data source name) can be a string in the format + user/password@connect_string or can simply be the connect string (in + which case authentication credentials such as the username and password + need to be specified separately). See the documentation on connection + strings for more information. + + The ``pool`` parameter is expected to be a pool object. This parameter was + deprecated in python-oracledb 3.0.0. Use :meth:`ConnectionPool.acquire()` + instead since the use of this parameter is the equivalent of calling this + method. + + The ``conn_class`` parameter is expected to be Connection or a subclass of + Connection. + + The ``params`` parameter is expected to be of type ConnectParams and + contains connection parameters that will be used when establishing the + connection. See the documentation on ConnectParams for more information. + If this parameter is not specified, the additional keyword parameters will + be used to create an instance of ConnectParams. If both the ``params`` + parameter and additional keyword parameters are specified, the values in + the keyword parameters have precedence. Note that if a ``dsn`` is also + supplied, then in python-oracledb Thin mode, the values of the parameters + specified (if any) within the ``dsn`` will override the values passed as + additional keyword parameters, which themselves override the values set in + the ``params`` parameter object. + + The following parameters are all optional. A brief description of each + parameter follows: + + - ``user``: the name of the database user to connect to + (default: None) + + - ``proxy_user``: the name of the proxy user to connect to. If this value + is not specified, it will be parsed out of user if user is in the form + "user[proxy_user]" + (default: None) + + - ``password``: the password for the database user + (default: None) + + - ``newpassword``: a new password for the database user. The new password + will take effect immediately upon a successful connection to the database + (default: None) + + - ``wallet_password``: the password to use to decrypt the wallet, if it is + encrypted. This is not the database password. For Oracle Autonomous + Database this is the password created when downloading the wallet. This + value is only used in python-oracledb Thin mode. + (default: None) + + - ``access_token``: a string, or a 2-tuple, or a callable. If it is a + string, it specifies an Entra ID OAuth2 token used for Open Authorization + (OAuth 2.0) token based authentication. If it is a 2-tuple, it specifies + the token and private key strings used for Oracle Cloud Infrastructure + (OCI) Identity and Access Management (IAM) token based authentication. If + it is a callable, it returns either a string or a 2-tuple used for OAuth + 2.0 or OCI IAM token based authentication and is useful when the pool + needs to expand and create new connections but the current authentication + token has expired + (default: None) + + - ``host``: the hostname or IP address of the machine hosting the database + or the database listener + (default: None) + + - ``port``: the port number on which the database listener is listening + (default: 1521) + + - ``protocol``: one of the strings "tcp" or "tcps" indicating whether to + use unencrypted network traffic or encrypted network traffic (TLS) + (default: "tcp") + + - ``https_proxy``: the hostname or IP address of a proxy host to use for + tunneling secure connections + (default: None) + + - ``https_proxy_port``: the port on which to communicate with the proxy + host + (default: 0) + + - ``service_name``: the service name of the database + (default: None) + + - ``instance_name``: the instance name of the database + (default: None) + + - ``sid``: the system identifier (SID) of the database. Note using a + service_name instead is recommended + (default: None) + + - ``server_type``: the type of server connection that should be + established. If specified, it should be one of strings "dedicated", + "shared" or "pooled" + (default: None) + + - ``cclass``: the connection class to use for Database Resident Connection + Pooling (DRCP) + (default: None) + + - ``purity``: the connection purity to use for Database Resident Connection + Pooling (DRCP) + (default: :attr:`oracledb.PURITY_DEFAULT`) + + - ``expire_time``: the number of minutes between the sending of keepalive + probes. If this parameter is set to a value greater than zero it enables + keepalive + (default: 0) + + - ``retry_count``: the number of times that initial connection + establishment should be retried before the connection attempt is + terminated + (default: 0) + + - ``retry_delay``: the number of seconds to wait before retrying to + establish a connection + (default: 1) + + - ``tcp_connect_timeout``: a float indicating the maximum number of seconds + to wait when establishing a connection to the database host + (default: 20.0) + + - ``ssl_server_dn_match``: a boolean indicating whether the server + certificate distinguished name (DN) should be matched in addition to the + regular certificate verification that is performed. Note that if the + ssl_server_cert_dn parameter is not privided, host name matching is + performed instead + (default: True) + + - ``ssl_server_cert_dn``: the distinguished name (DN) which should be + matched with the server. This value is ignored if the ssl_server_dn_match + parameter is not set to the value True. If specified this value is used + for any verfication. Otherwise the hostname will be used + (default: None) + + - ``wallet_location``: the directory where the wallet can be found. In + python-oracledb Thin mode this must be the directory containing the PEM- + encoded wallet file ewallet.pem. In python-oracledb Thick mode this must + be the directory containing the file cwallet.sso + (default: None) + + - ``events``: a boolean specifying whether events mode should be enabled. + This value is only used in python-oracledb Thick mode and is needed for + continuous query notification and high availability event notifications + (default: False) + + - ``externalauth``: a boolean indicating whether to use external + authentication + (default: False) + + - ``mode``: the authorization mode to use. One of the constants + :data:`oracledb.AUTH_MODE_DEFAULT`, :data:`oracledb.AUTH_MODE_PRELIM`, + :data:`oracledb.AUTH_MODE_SYSASM`, :data:`oracledb.AUTH_MODE_SYSBKP`, + :data:`oracledb.AUTH_MODE_SYSDBA`, :data:`oracledb.AUTH_MODE_SYSDGD`, + :data:`oracledb.AUTH_MODE_SYSKMT`, :data:`oracledb.AUTH_MODE_SYSOPER`, or + :data:`oracledb.AUTH_MODE_SYSRAC` + (default: :attr:`oracledb.AUTH_MODE_DEFAULT`) + + - ``disable_oob``: a boolean indicating whether out-of-band breaks should + be disabled. This value is only used in python-oracledb Thin mode. It has + no effect on Windows which does not support this functionality + (default: False) + + - ``stmtcachesize``: the size of the statement cache + (default: :attr:`oracledb.defaults.stmtcachesize + `) + + - ``edition``: edition to use for the connection. This parameter cannot be + used simultaneously with the cclass parameter + (default: None) + + - ``tag``: identifies the type of connection that should be returned from a + pool. This value is only used in python-oracledb Thick mode + (default: None) + + - ``matchanytag``: a boolean specifying whether any tag can be used when + acquiring a connection from the pool. This value is only used in python- + oracledb Thick mode + (default: False) + + - ``config_dir``: a directory in which the optional tnsnames.ora + configuration file is located. This value is only used in python-oracledb + Thin mode. For python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()` + (default: :attr:`oracledb.defaults.config_dir + `) + + - ``appcontext``: application context used by the connection. It should be + a list of 3-tuples (namespace, name, value) and each entry in the tuple + should be a string + (default: None) + + - ``shardingkey``: a list of strings, numbers, bytes or dates that identify + the database shard to connect to. This value is only used in python- + oracledb Thick mode + (default: None) + + - ``supershardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + (default: None) + + - ``debug_jdwp``: a string with the format "host=;port=" that + specifies the host and port of the PL/SQL debugger. This value is only + used in python-oracledb Thin mode. For python-oracledb Thick mode set + the ORA_DEBUG_JDWP environment variable + (default: None) + + - ``connection_id_prefix``: an application specific prefix that is added to + the connection identifier used for tracing + (default: None) + + - ``ssl_context``: an SSLContext object used for connecting to the database + using TLS. This SSL context will be modified to include the private key + or any certificates found in a separately supplied wallet. This parameter + should only be specified if the default SSLContext object cannot be used + (default: None) + + - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes. The + value tunes internal buffers used for communication to the database. + Bigger values can increase throughput for large queries or bulk data + loads, but at the cost of higher memory use. The SDU size that will + actually be used is negotiated down to the lower of this value and the + database network SDU configuration value + (default: 8192) + + - ``pool_boundary``: one of the values "statement" or "transaction" + indicating when pooled DRCP connections can be returned to the pool. This + requires the use of DRCP with Oracle Database 23.4 or higher + (default: None) + + - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast open. + This is an Oracle Autonomous Database Serverless (ADB-S) specific + property for clients connecting from within OCI Cloud network. Please + refer to the ADB-S documentation for more information + (default: False) + + - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or + ssl.TLSVersion.TLSv1_3 indicating which TLS version to use + (default: None) + + - ``program``: a string recorded by Oracle Database as the program from + which the connection originates + (default: :attr:`oracledb.defaults.program + `) + + - ``machine``: a string recorded by Oracle Database as the name of the + machine from which the connection originates + (default: :attr:`oracledb.defaults.machine + `) + + - ``terminal``: a string recorded by Oracle Database as the terminal + identifier from which the connection originates + (default: :attr:`oracledb.defaults.terminal + `) + + - ``osuser``: a string recorded by Oracle Database as the operating system + user who originated the connection + (default: :attr:`oracledb.defaults.osuser + `) + + - ``driver_name``: a string recorded by Oracle Database as the name of the + driver which originated the connection + (default: :attr:`oracledb.defaults.driver_name + `) + + - ``use_sni``: a boolean indicating whether to use the TLS SNI extension to + bypass the second TLS neogiation that would otherwise be required + (default: False) + + - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass the + connect string to the Oracle Client libraries unchanged without parsing + by the driver. Setting this to False makes python-oracledb Thick and Thin + mode applications behave similarly regarding connection string parameter + handling and locating any optional tnsnames.ora configuration file + (default: :attr:`oracledb.defaults.thick_mode_dsn_passthrough + `) + + - ``extra_auth_params``: a dictionary containing configuration parameters + necessary for Oracle Database authentication using plugins, such as the + Azure and OCI cloud-native authentication plugins + (default: None) + + - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP with + Oracle Database 23.4, or higher + (default: None) + + - ``on_connect_callback``: a callable that is invoked immediately after a + standalone connection is created or a connection is acquired from a + connection pool, but before it is returned to the caller. A common use of + this callback is for creating and setting an end user security context + object for DeepSec support + (default: None) + + - ``handle``: an integer representing a pointer to a valid service context + handle. This value is only used in python-oracledb Thick mode. It should + be used with extreme caution + (default: 0) + """ + pass + + +class AsyncConnection(BaseConnection): + + def __init__( + self, + dsn: str, + pool: pool_module.AsyncConnectionPool, + params: ConnectParams, + kwargs: dict, + ) -> None: + """ + Constructor for creating an asynchronous connection to the database. + """ + super().__init__() + self._pool = pool + self._connect_coroutine = self._connect(dsn, pool, params, kwargs) + + def __await__(self): + coroutine = self._connect_coroutine + self._connect_coroutine = None + return coroutine.__await__() + + async def __aenter__(self): + """ + The entry point for the asynchronous connection as a context manager. + It returns itself. + """ + if self._connect_coroutine is not None: + await self._connect_coroutine + else: + self._verify_connected() + return self + + async def __aexit__(self, *exc_info): + """ + The exit point for the asynchronous connection as a context manager. + This will close the connection and roll back any uncommitted + transaction. + """ + if self._impl is not None: + await self._close() + + async def _close(self, in_del=False): + """ + Closes the connection and makes it unusable for further operations. An + Error exception will be raised if any operation is attempted with this + connection after this method completes successfully. + """ + if self._pool is not None: + pool_impl = self._pool._impl + if pool_impl is not None: + await pool_impl.return_connection(self._impl, in_del) + else: + await self._impl.close(in_del) + self._impl = None + + async def _connect(self, dsn, pool, params, kwargs): + """ + Internal method for establishing a connection to the database using + asyncio. + """ + + # mandate that thin mode is required; with asyncio, only thin mode is + # supported and only one thread is executing, so the manager can be + # manipulated directly + driver_mode.manager.thin_mode = True + + # determine which connection parameters to use + if params is None: + params_impl = base_impl.ConnectParamsImpl() + elif not isinstance(params, ConnectParams): + errors._raise_err(errors.ERR_INVALID_CONNECT_PARAMS) + else: + params_impl = params._impl.copy() + dsn = params_impl.process_args(dsn, kwargs, thin=True) + + # see if connection is being acquired from a pool + if pool is None: + pool_impl = None + elif not isinstance(pool, pool_module.AsyncConnectionPool): + message = ( + "pool must be an instance of oracledb.AsyncConnectionPool" + ) + raise TypeError(message) + else: + pool._verify_open() + pool_impl = pool._impl + + # create implementation object + if pool is not None: + impl = await pool_impl.acquire(params_impl) + else: + impl = thin_impl.AsyncThinConnImpl(dsn, params_impl) + await impl.connect(params_impl) + self._impl = impl + + # invoke callbacks, as applicable + if params_impl.on_connect_callback is not None: + await params_impl.on_connect_callback(self) + if ( + impl.invoke_session_callback + and pool is not None + and pool.session_callback is not None + and callable(pool.session_callback) + ): + await pool.session_callback(self, params_impl.tag) + impl.invoke_session_callback = False + + return self + + def _create_queue(self, impl): + """ + Returns a queue object that the user can use to dequeue and enqueue + messages. + """ + return AsyncQueue._from_impl(self, impl) + + def _verify_can_execute( + self, parameters: Any, keyword_parameters: Any + ) -> Any: + """ + Verifies that the connection can be used to execute + Verifies that the connection is connected to the database. If it is + not, an exception is raised. + """ + self._verify_connected() + if keyword_parameters: + if parameters: + errors._raise_err(errors.ERR_ARGS_AND_KEYWORD_ARGS) + return keyword_parameters + elif parameters is not None and not isinstance( + parameters, (list, tuple, dict) + ): + errors._raise_err(errors.ERR_WRONG_EXECUTE_PARAMETERS_TYPE) + return parameters + + async def begin_sessionless_transaction( + self, + transaction_id: Optional[Union[str, bytes]] = None, + timeout: int = 60, + defer_round_trip: bool = False, + ) -> bytes: + """ + Begins a new sessionless transaction. This method returns the + transaction identifier specified by the user or generated by + python-oracledb. + + The ``transaction_id`` parameter should be of type string or bytes. If + specified, it represents a unique identifier for the transaction. If a + string is passed, then it will be UTF-8 encoded to bytes. If this value + is not specified, then python-oracledb generates a a random + `universally-unique identifier (UUID) `__ value when this function is called. An example is + "36b8f84d-df4e-4d49-b662-bcde71a8764f". The user-chosen value cannot + exceed 64 bytes in length. + + The ``timeout`` parameter is the number of seconds that this + transaction can stay suspended when + :meth:`suspend_sessionless_transaction()` is later called, or if the + transaction is automatically suspended when the ``suspend_on_success`` + parameter is set to to *True* in :meth:`AsyncCursor.execute()` or + :meth:`AsyncCursor.executemany()`. The default value is *60* seconds. + If a transaction is not resumed within this specified duration, the + transaction will be rolled back. + + The ``defer_round_trip`` parameter is a boolean that determines whether + the request to start a transaction is to be sent immediately or with + the next database operation. If set to *False*, the request is sent + immediately. If set to *True*, the request is included with the next + database operation on the connection. The default value is *False*. + """ + self._verify_connected() + normalized_txnid = normalize_sessionless_transaction_id(transaction_id) + + if not isinstance(timeout, int) or timeout <= 0: + raise TypeError("timeout must be a positive integer") + + await self._impl.begin_sessionless_transaction( + normalized_txnid, timeout, defer_round_trip + ) + return normalized_txnid + + async def callfunc( + self, + name: str, + return_type: Any, + parameters: Optional[Union[list, tuple]] = None, + keyword_parameters: Optional[dict] = None, + ) -> Any: + """ + Calls a PL/SQL function with the given name. + + This is a shortcut for calling :meth:`cursor()`, + :meth:`AsyncCursor.callfunc()`, and then :meth:`AsyncCursor.close()`. + """ + with self.cursor() as cursor: + return await cursor.callfunc( + name, return_type, parameters, keyword_parameters + ) + + async def callproc( + self, + name: str, + parameters: Optional[Union[list, tuple]] = None, + keyword_parameters: Optional[dict] = None, + ) -> list: + """ + Calls a PL/SQL procedure with the given name. + + This is a shortcut for calling :meth:`cursor()`, + :meth:`AsyncCursor.callproc()`, and then :meth:`AsyncCursor.close()`. + """ + with self.cursor() as cursor: + return await cursor.callproc(name, parameters, keyword_parameters) + + async def changepassword( + self, old_password: str, new_password: str + ) -> None: + """ + Changes the password for the user to which the connection is connected. + """ + self._verify_connected() + await self._impl.change_password(old_password, new_password) + + async def close(self) -> None: + """ + Closes the connection. + """ + self._verify_connected() + await self._close() + + async def commit(self) -> None: + """ + Commits any pending transaction to the database. + """ + self._verify_connected() + await self._impl.commit() + + async def createlob( + self, lob_type: DbType, data: Optional[Union[str, bytes]] = None + ) -> AsyncLOB: + """ + Creates and returns a new temporary LOB of the specified type. + """ + self._verify_connected() + if lob_type not in (DB_TYPE_CLOB, DB_TYPE_NCLOB, DB_TYPE_BLOB): + message = ( + "parameter should be one of oracledb.DB_TYPE_CLOB, " + "oracledb.DB_TYPE_BLOB or oracledb.DB_TYPE_NCLOB" + ) + raise TypeError(message) + impl = await self._impl.create_temp_lob_impl(lob_type) + lob = AsyncLOB._from_impl(impl) + if data: + await lob.write(data) + return lob + + def cursor(self, scrollable: bool = False) -> AsyncCursor: + """ + Returns an :ref:`AsyncCursor object ` associated with + the connection. + """ + self._verify_connected() + return AsyncCursor(self, scrollable) + + async def execute( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + ) -> None: + """ + Executes a statement against the database. + + This is a shortcut for calling :meth:`cursor()`, + :meth:`AsyncCursor.execute()`, and then :meth:`AsyncCursor.close()` + """ + with self.cursor() as cursor: + await cursor.execute(statement, parameters) + + async def executemany( + self, statement: Union[str, None], parameters: Any + ) -> None: + """ + Executes a SQL statement once using all bind value mappings or + sequences found in the sequence parameters. This can be used to insert, + update, or delete multiple rows in a table with a single + python-oracledb call. It can also invoke a PL/SQL procedure multiple + times. + + The ``parameters`` parameter can be a list of tuples, where each tuple + item maps to one bind variable placeholder in ``statement``. It can + also be a list of dictionaries, where the keys match the bind variable + placeholder names in ``statement``. If there are no bind values, or + values have previously been bound, the ``parameters`` value can be an + integer specifying the number of iterations. + + This is a shortcut for calling :meth:`cursor()`, + :meth:`AsyncCursor.executemany()`, and then + :meth:`AsyncCursor.close()`. + """ + with self.cursor() as cursor: + await cursor.executemany(statement, parameters) + + async def fetchall( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + arraysize: Optional[int] = None, + rowfactory: Optional[Callable] = None, + *, + fetch_lobs: Optional[bool] = None, + fetch_decimals: Optional[bool] = None, + ) -> list: + """ + Executes a query and returns all of the rows. + + The default value for ``arraysize`` is + :attr:`oracledb.defaults.arraysize `. + + Internally, this method's :attr:`AsyncCursor.prefetchrows` size is set + to the value of the explicit or default ``arraysize`` parameter value. + + This is a shortcut for calling :meth:`cursor()`, + :meth:`AsyncCursor.fetchall()`, and then :meth:`AsyncCursor.close()`. + """ + with self.cursor() as cursor: + if arraysize is not None: + cursor.arraysize = arraysize + cursor.prefetchrows = cursor.arraysize + await cursor.execute( + statement, + parameters, + fetch_lobs=fetch_lobs, + fetch_decimals=fetch_decimals, + ) + cursor.rowfactory = rowfactory + return await cursor.fetchall() + + async def direct_path_load( + self, + schema_name: str, + table_name: str, + column_names: list[str], + data: Any, + *, + batch_size: int = 2**32 - 1, + ) -> None: + """ + Load data into Oracle Database using the Direct Path Load interface. + It is available only in python-oracledb Thin mode. + + The ``data`` parameter can be a list of sequences, a DataFrame, or a + third-party DataFrame instance that supports the Apache Arrow PyCapsule + Interface. + + The ``batch_size`` parameter is used to split large data sets into + smaller pieces for sending to the database. It is the number of records + in each batch. This parameter can be used to tune performance. + """ + self._verify_connected() + await self._impl.direct_path_load( + schema_name, table_name, column_names, data, batch_size + ) + + async def fetch_df_all( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + arraysize: Optional[int] = None, + *, + fetch_decimals: Optional[bool] = None, + requested_schema: Optional[Any] = None, + ) -> DataFrame: + """ + Fetches all rows of the SQL query ``statement``, returning them in a + :ref:`DataFrame ` object. An empty DataFrame is + returned if there are no rows available. + + The ``parameters`` parameter can be a list of tuples, where each tuple + item maps to one :ref:`bind variable placeholder ` in + ``statement``. It can also be a list of dictionaries, where the keys + match the bind variable placeholder names in ``statement``. + + The ``arraysize`` parameter can be specified to tune performance of + fetching data across the network. It defaults to + :attr:`oracledb.defaults.arraysize `. Internally, + the ``fetch_df_all()``'s :attr:`Cursor.prefetchrows` size is always set + to the value of the explicit or default ``arraysize`` parameter value. + + The ``fetch_decimals`` parameter specifies whether to return decimal + values when fetching columns of type ``NUMBER`` that are capable of + being represented in Apache Arrow Decimal128 format. The default value + is :data:`oracledb.defaults.fetch_decimals `. + + The ``requested_schema`` parameter specifies an object that implements + the Apache Arrow PyCapsule schema interface. The DataFrame returned by + ``fetch_df_all()`` will have the data types and names of the schema. + """ + cursor = self.cursor() + cursor._impl.fetching_arrow = True + if requested_schema is not None: + cursor._impl.schema_impl = ArrowSchemaImpl.from_arrow_schema( + requested_schema + ) + if arraysize is not None: + cursor.arraysize = arraysize + cursor.prefetchrows = cursor.arraysize + await cursor.execute( + statement, + parameters, + fetch_decimals=fetch_decimals, + ) + return await cursor._impl.fetch_df_all(cursor) + + async def fetch_df_batches( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + size: Optional[int] = None, + *, + fetch_decimals: Optional[bool] = None, + requested_schema: Optional[Any] = None, + ) -> Iterator[DataFrame]: + """ + This returns an iterator yielding the next ``size`` rows of the SQL + query ``statement`` in each iteration as a :ref:`DataFrame + ` object. An empty DataFrame is returned if there + are no rows available. + + The ``parameters`` parameter can be a list of tuples, where each tuple + item maps to one :ref:`bind variable placeholder ` in + ``statement``. It can also be a list of dictionaries, where the keys + match the bind variable placeholder names in ``statement``. + + The ``size`` parameter controls the number of records fetched in each + batch. It defaults to + :attr:`oracledb.defaults.arraysize `. Internally, + the ``fetch_df_batches()``'s :attr:`Cursor.arraysize` and + :attr:`Cursor.prefetchrows` sizes are always set to the value of the + explicit or default ``size`` parameter value. + + The ``fetch_decimals`` parameter specifies whether to return + decimal values when fetching columns of type ``NUMBER`` that are + capable of being represented in Arrow Decimal128 format. The default + value is + :data:`oracledb.defaults.fetch_decimals `. + + The ``requested_schema`` parameter specifies an object that implements + the Apache Arrow PyCapsule schema interface. The DataFrame returned by + ``fetch_df_all()`` will have the data types and names of the schema. + """ + cursor = self.cursor() + cursor._impl.fetching_arrow = True + if requested_schema is not None: + cursor._impl.schema_impl = ArrowSchemaImpl.from_arrow_schema( + requested_schema + ) + if size is not None: + cursor.arraysize = size + cursor.prefetchrows = cursor.arraysize + await cursor.execute( + statement, + parameters, + fetch_decimals=fetch_decimals, + ) + if size is None: + yield await cursor._impl.fetch_df_all(cursor) + else: + async for df in cursor._impl.fetch_df_batches(cursor, size): + yield df + + async def fetchmany( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + num_rows: Optional[int] = None, + rowfactory: Optional[Callable] = None, + *, + fetch_lobs: Optional[bool] = None, + fetch_decimals: Optional[bool] = None, + ) -> list: + """ + Executes a query and returns up to the specified number of rows. + + The default value for ``num_rows`` is the value of + :attr:`oracledb.defaults.arraysize `. + + Internally, this method's :attr:`AsyncCursor.prefetchrows` size is set + to the value of the explicit or default ``num_rows`` parameter, + allowing all rows to be fetched in one :ref:`round-trip ` + + Since only one fetch is performed for a query, consider adding a + ``FETCH NEXT`` clause to the statement to prevent the database + processing rows that will never be fetched, see :ref:`rowlimit`. + + This a shortcut for calling :meth:`cursor()`, + :meth:`AsyncCursor.fetchmany()`, and then :meth:`AsyncCursor.close()`. + """ + with self.cursor() as cursor: + if num_rows is None: + num_rows = cursor.arraysize + elif num_rows <= 0: + return [] + cursor.arraysize = cursor.prefetchrows = num_rows + await cursor.execute( + statement, + parameters, + fetch_lobs=fetch_lobs, + fetch_decimals=fetch_decimals, + ) + cursor.rowfactory = rowfactory + return await cursor.fetchmany(num_rows) + + async def fetchone( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + rowfactory: Optional[Callable] = None, + *, + fetch_lobs: Optional[bool] = None, + fetch_decimals: Optional[bool] = None, + ) -> Any: + """ + Executes a query and returns the first row of the result set if one + exists (or *None* if no rows exist). + + Internally, this method's :attr:`Cursor.prefetchrows` and + :attr:`Cursor.arraysize` sizes will be set to *1*. + + Since only one fetch is performed for a query, consider adding a + ``WHERE`` condition or using a ``FETCH NEXT`` clause in the statement + to prevent the database processing rows that will never be fetched, see + :ref:`rowlimit`. + + This a shortcut for calling :meth:`cursor()`, + :meth:`AsyncCursor.fetchone()`, and then :meth:`AsyncCursor.close()`. + """ + with self.cursor() as cursor: + cursor.prefetchrows = cursor.arraysize = 1 + await cursor.execute( + statement, + parameters, + fetch_lobs=fetch_lobs, + fetch_decimals=fetch_decimals, + ) + cursor.rowfactory = rowfactory + return await cursor.fetchone() + + async def gettype(self, name: str) -> DbObjectType: + """ + Returns a type object given its name. This can then be used to create + objects which can be bound to cursors created by this connection. + """ + self._verify_connected() + obj_type_impl = await self._impl.get_type(self, name) + return DbObjectType._from_impl(obj_type_impl) + + async def ping(self) -> None: + """ + Pings the database to verify if the connection is valid. + """ + self._verify_connected() + await self._impl.ping() + + async def resume_sessionless_transaction( + self, + transaction_id: Union[str, bytes], + timeout: int = 60, + defer_round_trip: bool = False, + ) -> bytes: + """ + Resumes an existing sessionless transaction using the specified + transaction identifier. This method returns the transaction identifier + used to resume the sessionless transaction. + + The ``transaction_id`` parameter should be a string or bytes value that + uniquely identifies an existing sessionless transaction that is to be + resumed. + + The ``timeout`` parameter is the number of seconds that the current + connection waits to resume a transaction if another connection is using + it. When ``defer_round_trip`` is set to *False*, the wait happens in + the ``resume_sessionless_transaction()`` call itself, and the function + blocks until the transaction becomes available or the timeout expires. + When ``defer_round_trip`` is set to *True*, the resume is deferred and + the wait occurs at the time of the next database operation instead. At + the start of the wait period, if the transaction is not in use by any + other connection, the resume happens immediately. If the transaction + remains in use by the other connection after the timeout period, the + error `ORA-25351 + `__ is raised. If + another connection completes the transaction, the error `ORA-24756 + `__ is raised. + These error messages are only thrown for non-RAC instances. For + information on using Oracle RAC, see :ref:`Sessionless Transactions + with Oracle RAC `. The default value is *60* + seconds. + + The ``defer_round_trip`` parameter is a boolean that determines whether + the request to resume a transaction is to be sent immediately or with + the next database operation. If set to *False*, the request is sent + immediately. If set to *True*, the request is included with the next + database operation on the connection. The default value is *False*. + """ + self._verify_connected() + if transaction_id is None: + raise ValueError("transaction_id is required for resuming") + + normalized_txnid = normalize_sessionless_transaction_id(transaction_id) + + if not (isinstance(timeout, int) and timeout >= 0): + raise TypeError("timeout must be a non-negative integer") + + await self._impl.resume_sessionless_transaction( + normalized_txnid, timeout, defer_round_trip + ) + return normalized_txnid + + async def rollback(self) -> None: + """ + Rolls back any pending transaction. + """ + self._verify_connected() + await self._impl.rollback() + + async def run_pipeline( + self, + pipeline: Pipeline, + continue_on_error: bool = False, + ) -> list[PipelineOpResult]: + """ + Runs all of the operations in the pipeline and returns a list of + PipelineOpResult, each entry corresponding to an operation executed in + the pipeline. + + The ``continue_on_error`` parameter determines whether operations + should continue to run after an error has occurred. If this parameter + is set to *True*, then the :attr:`PipelineOpResult.error` attribute + will be populated with an :ref:`_Error ` instance which + identifies the error that occurred. If this parameter is set to + *False*, then an exception will be raised as soon as an error is + detected and all subsequent operations will be terminated. The default + value is *False*. + """ + self._verify_connected() + results = [op._create_result() for op in pipeline.operations] + if self._impl.supports_pipelining() and len(results) > 1: + await self._impl.run_pipeline_with_pipelining( + self, results, continue_on_error + ) + else: + await self._impl.run_pipeline_without_pipelining( + self, results, continue_on_error + ) + return results + + async def suspend_sessionless_transaction(self) -> None: + """ + Suspends the currently active sessionless transaction immediately. + + This detaches the transaction from the connection, allowing it to be + resumed later with the transaction identifier that was specified during + creation of the sessionless transaction. The ``timeout`` previously + passed to :meth:`AsyncConnection.begin_sessionless_transaction()` + determines how long the transaction can stay suspended before it is + automatically rolled back. + """ + self._verify_connected() + await self._impl.suspend_sessionless_transaction() + + async def tpc_begin( + self, xid: Xid, flags: int = oracledb.TPC_BEGIN_NEW, timeout: int = 0 + ) -> None: + """ + Begins a Two-Phase Commit (TPC) on a global transaction using the + specified transaction identifier (xid). + + The ``xid`` parameter should be an object returned by the + :meth:`xid()` method. + + The ``flags`` parameter is one of the constants + :data:`oracledb.TPC_BEGIN_JOIN`, :data:`oracledb.TPC_BEGIN_NEW`, + :data:`oracledb.TPC_BEGIN_PROMOTE`, or + :data:`oracledb.TPC_BEGIN_RESUME`. The default is + :data:`oracledb.TPC_BEGIN_NEW`. + + The ``timeout`` parameter is the number of seconds to wait for a + transaction to become available for resumption when + :data:`~oracledb.TPC_BEGIN_RESUME` is specified in the ``flags`` + parameter. When :data:`~oracledb.TPC_BEGIN_NEW` is specified in the + ``flags`` parameter, the ``timeout`` parameter indicates the number of + seconds the transaction can be inactive before it is automatically + terminated by the system. A transaction is inactive between the time it + is detached with :meth:`AsyncConnection.tpc_end()` and the time it is + resumed with :meth:`AsyncConnection.tpc_begin()`.The default is *0* + seconds. + """ + self._verify_connected() + self._verify_xid(xid) + if flags not in ( + oracledb.TPC_BEGIN_NEW, + oracledb.TPC_BEGIN_JOIN, + oracledb.TPC_BEGIN_RESUME, + oracledb.TPC_BEGIN_PROMOTE, + ): + errors._raise_err(errors.ERR_INVALID_TPC_BEGIN_FLAGS) + await self._impl.tpc_begin(xid, flags, timeout) + + async def tpc_commit( + self, xid: Optional[Xid] = None, one_phase: bool = False + ) -> None: + """ + Commits a global transaction. When called with no arguments, this + method commits a transaction previously prepared with + :meth:`~AsyncConnection.tpc_begin()` and optionally prepared with + :meth:`~AsyncConnection.tpc_prepare()`. If + :meth:`~AsyncConnection.tpc_prepare()` is not called, a single phase + commit is performed. A transaction manager may choose to do this if + only a single resource is participating in the global transaction. + + If an ``xid`` parameter is passed, then an object should be returned by + the :meth:`~Connection.xid()` function. This form should be called + outside of a transaction and is intended for use in recovery. + + The ``one_phase`` parameter is a boolean identifying whether to perform + a one-phase or two-phase commit. If ``one_phase`` parameter is *True*, + a single-phase commit is performed. The default value is *False*. This + parameter is only examined if a value is provided for the ``xid`` + parameter. Otherwise, the driver already knows whether + :meth:`tpc_prepare()` was called for the transaction and whether a + one-phase or two-phase commit is required. + """ + self._verify_connected() + if xid is not None: + self._verify_xid(xid) + await self._impl.tpc_commit(xid, one_phase) + + async def tpc_end( + self, xid: Optional[Xid] = None, flags: int = oracledb.TPC_END_NORMAL + ) -> None: + """ + Ends or suspends work on a global transaction. This function is only + intended for use by transaction managers. + + If an ``xid`` parameter is passed, then an object should be returned by + the :meth:`~Connection.xid()` function. If no xid parameter is passed, + then the transaction identifier used by the previous + :meth:`~Connection.tpc_begin()` is used. + + The ``flags`` parameter is one of the constants + :data:`oracledb.TPC_END_NORMAL` or :data:`oracledb.TPC_END_SUSPEND`. + The default is :data:`oracledb.TPC_END_NORMAL`. + + If the flag is :data:`oracledb.TPC_END_SUSPEND` then the transaction + may be resumed later by calling :meth:`AsyncConnection.tpc_begin()` + with the flag :data:`oracledb.TPC_BEGIN_RESUME`. + """ + self._verify_connected() + if xid is not None: + self._verify_xid(xid) + if flags not in (oracledb.TPC_END_NORMAL, oracledb.TPC_END_SUSPEND): + errors._raise_err(errors.ERR_INVALID_TPC_END_FLAGS) + await self._impl.tpc_end(xid, flags) + + async def tpc_forget(self, xid: Xid) -> None: + """ + Causes the database to forget a heuristically completed TPC + transaction. This function is only intended to be called by + transaction managers. + + The ``xid`` parameter is mandatory and should be an object should be + returned by the :meth:`xid()` function. + """ + self._verify_connected() + self._verify_xid(xid) + await self._impl.tpc_forget(xid) + + async def tpc_prepare(self, xid: Optional[Xid] = None) -> bool: + """ + Prepares a two-phase transaction for commit. After this function is + called, no further activity should take place on this connection until + either :meth:`tpc_commit()` or :meth:`tpc_rollback()` have been called. + + Returns a boolean indicating whether a commit is needed or not. If you + attempt to commit when not needed, then it results in the error + ``ORA-24756: transaction does not exist``. + + If an ``xid`` parameter is passed, then an object should be returned by + the :meth:`xid()` function. If an ``xid`` parameter is not passed, then + the transaction identifier used by the previous :meth:`tpc_begin()` is + used. + """ + self._verify_connected() + if xid is not None: + self._verify_xid(xid) + return await self._impl.tpc_prepare(xid) + + async def tpc_recover(self) -> list: + """ + Returns a list of pending transaction identifiers that require + recovery. Objects of type ``Xid`` (as returned by the + :meth:`~Connection.xid()` function) are returned and these can be + passed to :meth:`tpc_commit()` or :meth:`tpc_rollback()` as needed. + + This function queries the view ``DBA_PENDING_TRANSACTIONS`` and + requires ``SELECT`` privilege on that view. + """ + with self.cursor() as cursor: + await cursor.execute(""" + select + formatid, + globalid, + branchid + from dba_pending_transactions""") + cursor.rowfactory = Xid + return await cursor.fetchall() + + async def tpc_rollback(self, xid: Optional[Xid] = None) -> None: + """ + Rolls back a global transaction. + + If an ``xid`` parameter is not passed, then it rolls back the + transaction that was previously started with + :meth:`~AsyncConnection.tpc_begin()`. + + If an ``xid`` parameter is passed, then an object should be returned by + :meth:`~Connection.xid()` and the specified transaction is rolled back. + This form should be called outside of a transaction and is intended for + use in recovery. + """ + self._verify_connected() + if xid is not None: + self._verify_xid(xid) + await self._impl.tpc_rollback(xid) + + +def _async_connection_factory( + f: Callable[..., AsyncConnection], +) -> Callable[..., AsyncConnection]: + """ + Decorator which checks the validity of the supplied keyword parameters by + calling the original function (which does nothing), then creates and + returns an instance of the requested AsyncConnection class. + """ + + @functools.wraps(f) + def connect_async( + dsn: Optional[str] = None, + *, + pool: Optional["pool_module.AsyncConnectionPool"] = None, + pool_alias: Optional[str] = None, + conn_class: Type[AsyncConnection] = AsyncConnection, + params: Optional[ConnectParams] = None, + **kwargs, + ) -> AsyncConnection: + # check arguments + f( + dsn=dsn, + pool=pool, + pool_alias=pool_alias, + conn_class=conn_class, + params=params, + **kwargs, + ) + if not issubclass(conn_class, AsyncConnection): + errors._raise_err(errors.ERR_INVALID_CONN_CLASS) + + if pool is not None and pool_alias is not None: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="pool", + new_name="pool_alias", + ) + if pool_alias is not None: + pool = pool_module.named_pools.pools.get(pool_alias) + if pool is None: + errors._raise_err( + errors.ERR_NAMED_POOL_MISSING, alias=pool_alias + ) + if pool is not None and not isinstance( + pool, pool_module.AsyncConnectionPool + ): + message = ( + "pool must be an instance of oracledb.AsyncConnectionPool" + ) + raise TypeError(message) + if params is not None and not isinstance(params, ConnectParams): + errors._raise_err(errors.ERR_INVALID_CONNECT_PARAMS) + + # build connection class and call the implementation connect to + # actually establish the connection + oracledb.enable_thin_mode() + return conn_class(dsn, pool, params, kwargs) + + return connect_async + + +@_async_connection_factory +def connect_async( + dsn: Optional[str] = None, + *, + pool: Optional["pool_module.AsyncConnectionPool"] = None, + pool_alias: Optional[str] = None, + conn_class: Type[AsyncConnection] = AsyncConnection, + params: Optional[ConnectParams] = None, + user: Optional[str] = None, + proxy_user: Optional[str] = None, + password: Optional[str] = None, + newpassword: Optional[str] = None, + wallet_password: Optional[str] = None, + access_token: Optional[Union[str, tuple, Callable]] = None, + host: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[str] = None, + https_proxy: Optional[str] = None, + https_proxy_port: Optional[int] = None, + service_name: Optional[str] = None, + instance_name: Optional[str] = None, + sid: Optional[str] = None, + server_type: Optional[str] = None, + cclass: Optional[str] = None, + purity: Optional[oracledb.Purity] = None, + expire_time: Optional[int] = None, + retry_count: Optional[int] = None, + retry_delay: Optional[int] = None, + tcp_connect_timeout: Optional[float] = None, + ssl_server_dn_match: Optional[bool] = None, + ssl_server_cert_dn: Optional[str] = None, + wallet_location: Optional[str] = None, + events: Optional[bool] = None, + externalauth: Optional[bool] = None, + mode: Optional[oracledb.AuthMode] = None, + disable_oob: Optional[bool] = None, + stmtcachesize: Optional[int] = None, + edition: Optional[str] = None, + tag: Optional[str] = None, + matchanytag: Optional[bool] = None, + config_dir: Optional[str] = None, + appcontext: Optional[list] = None, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + debug_jdwp: Optional[str] = None, + connection_id_prefix: Optional[str] = None, + ssl_context: Optional[Any] = None, + sdu: Optional[int] = None, + pool_boundary: Optional[str] = None, + use_tcp_fast_open: Optional[bool] = None, + ssl_version: Optional[ssl.TLSVersion] = None, + program: Optional[str] = None, + machine: Optional[str] = None, + terminal: Optional[str] = None, + osuser: Optional[str] = None, + driver_name: Optional[str] = None, + use_sni: Optional[bool] = None, + thick_mode_dsn_passthrough: Optional[bool] = None, + extra_auth_params: Optional[dict] = None, + pool_name: Optional[str] = None, + on_connect_callback: Optional[Callable] = None, + handle: Optional[int] = None, +) -> AsyncConnection: + """ + Factory function which creates a connection to the database and returns it. + + The ``dsn`` parameter (data source name) can be a string in the format + user/password@connect_string or can simply be the connect string (in + which case authentication credentials such as the username and password + need to be specified separately). See the documentation on connection + strings for more information. + + The ``pool`` parameter is expected to be a pool object. This parameter was + deprecated in python-oracledb 3.0.0. Use :meth:`ConnectionPool.acquire()` + instead since the use of this parameter is the equivalent of calling this + method. + + The ``conn_class`` parameter is expected to be AsyncConnection or a + subclass of AsyncConnection. + + The ``params`` parameter is expected to be of type ConnectParams and + contains connection parameters that will be used when establishing the + connection. See the documentation on ConnectParams for more information. If + this parameter is not specified, the additional keyword parameters will be + used to create an instance of ConnectParams. If both the ``params`` + parameter and additional keyword parameters are specified, the values in + the keyword parameters have precedence. Note that if a ``dsn`` is also + supplied, then in python-oracledb Thin mode, the values of the parameters + specified (if any) within the dsn will override the values passed as + additional keyword parameters, which themselves override the values set in + the ``params`` parameter object. + + The following parameters are all optional. A brief description of each + parameter follows: + + - ``user``: the name of the database user to connect to + (default: None) + + - ``proxy_user``: the name of the proxy user to connect to. If this value + is not specified, it will be parsed out of user if user is in the form + "user[proxy_user]" + (default: None) + + - ``password``: the password for the database user + (default: None) + + - ``newpassword``: a new password for the database user. The new password + will take effect immediately upon a successful connection to the database + (default: None) + + - ``wallet_password``: the password to use to decrypt the wallet, if it is + encrypted. This is not the database password. For Oracle Autonomous + Database this is the password created when downloading the wallet. This + value is only used in python-oracledb Thin mode. + (default: None) + + - ``access_token``: a string, or a 2-tuple, or a callable. If it is a + string, it specifies an Entra ID OAuth2 token used for Open Authorization + (OAuth 2.0) token based authentication. If it is a 2-tuple, it specifies + the token and private key strings used for Oracle Cloud Infrastructure + (OCI) Identity and Access Management (IAM) token based authentication. If + it is a callable, it returns either a string or a 2-tuple used for OAuth + 2.0 or OCI IAM token based authentication and is useful when the pool + needs to expand and create new connections but the current authentication + token has expired + (default: None) + + - ``host``: the hostname or IP address of the machine hosting the database + or the database listener + (default: None) + + - ``port``: the port number on which the database listener is listening + (default: 1521) + + - ``protocol``: one of the strings "tcp" or "tcps" indicating whether to + use unencrypted network traffic or encrypted network traffic (TLS) + (default: "tcp") + + - ``https_proxy``: the hostname or IP address of a proxy host to use for + tunneling secure connections + (default: None) + + - ``https_proxy_port``: the port on which to communicate with the proxy + host + (default: 0) + + - ``service_name``: the service name of the database + (default: None) + + - ``instance_name``: the instance name of the database + (default: None) + + - ``sid``: the system identifier (SID) of the database. Note using a + service_name instead is recommended + (default: None) + + - ``server_type``: the type of server connection that should be + established. If specified, it should be one of strings "dedicated", + "shared" or "pooled" + (default: None) + + - ``cclass``: the connection class to use for Database Resident Connection + Pooling (DRCP) + (default: None) + + - ``purity``: the connection purity to use for Database Resident Connection + Pooling (DRCP) + (default: :attr:`oracledb.PURITY_DEFAULT`) + + - ``expire_time``: the number of minutes between the sending of keepalive + probes. If this parameter is set to a value greater than zero it enables + keepalive + (default: 0) + + - ``retry_count``: the number of times that initial connection + establishment should be retried before the connection attempt is + terminated + (default: 0) + + - ``retry_delay``: the number of seconds to wait before retrying to + establish a connection + (default: 1) + + - ``tcp_connect_timeout``: a float indicating the maximum number of seconds + to wait when establishing a connection to the database host + (default: 20.0) + + - ``ssl_server_dn_match``: a boolean indicating whether the server + certificate distinguished name (DN) should be matched in addition to the + regular certificate verification that is performed. Note that if the + ssl_server_cert_dn parameter is not privided, host name matching is + performed instead + (default: True) + + - ``ssl_server_cert_dn``: the distinguished name (DN) which should be + matched with the server. This value is ignored if the ssl_server_dn_match + parameter is not set to the value True. If specified this value is used + for any verfication. Otherwise the hostname will be used + (default: None) + + - ``wallet_location``: the directory where the wallet can be found. In + python-oracledb Thin mode this must be the directory containing the PEM- + encoded wallet file ewallet.pem. In python-oracledb Thick mode this must + be the directory containing the file cwallet.sso + (default: None) + + - ``events``: a boolean specifying whether events mode should be enabled. + This value is only used in python-oracledb Thick mode and is needed for + continuous query notification and high availability event notifications + (default: False) + + - ``externalauth``: a boolean indicating whether to use external + authentication + (default: False) + + - ``mode``: the authorization mode to use. One of the constants + :data:`oracledb.AUTH_MODE_DEFAULT`, :data:`oracledb.AUTH_MODE_PRELIM`, + :data:`oracledb.AUTH_MODE_SYSASM`, :data:`oracledb.AUTH_MODE_SYSBKP`, + :data:`oracledb.AUTH_MODE_SYSDBA`, :data:`oracledb.AUTH_MODE_SYSDGD`, + :data:`oracledb.AUTH_MODE_SYSKMT`, :data:`oracledb.AUTH_MODE_SYSOPER`, or + :data:`oracledb.AUTH_MODE_SYSRAC` + (default: :attr:`oracledb.AUTH_MODE_DEFAULT`) + + - ``disable_oob``: a boolean indicating whether out-of-band breaks should + be disabled. This value is only used in python-oracledb Thin mode. It has + no effect on Windows which does not support this functionality + (default: False) + + - ``stmtcachesize``: the size of the statement cache + (default: :attr:`oracledb.defaults.stmtcachesize + `) + + - ``edition``: edition to use for the connection. This parameter cannot be + used simultaneously with the cclass parameter + (default: None) + + - ``tag``: identifies the type of connection that should be returned from a + pool. This value is only used in python-oracledb Thick mode + (default: None) + + - ``matchanytag``: a boolean specifying whether any tag can be used when + acquiring a connection from the pool. This value is only used in python- + oracledb Thick mode + (default: False) + + - ``config_dir``: a directory in which the optional tnsnames.ora + configuration file is located. This value is only used in python-oracledb + Thin mode. For python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()` + (default: :attr:`oracledb.defaults.config_dir + `) + + - ``appcontext``: application context used by the connection. It should be + a list of 3-tuples (namespace, name, value) and each entry in the tuple + should be a string + (default: None) + + - ``shardingkey``: a list of strings, numbers, bytes or dates that identify + the database shard to connect to. This value is only used in python- + oracledb Thick mode + (default: None) + + - ``supershardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + (default: None) + + - ``debug_jdwp``: a string with the format "host=;port=" that + specifies the host and port of the PL/SQL debugger. This value is only + used in python-oracledb Thin mode. For python-oracledb Thick mode set + the ORA_DEBUG_JDWP environment variable + (default: None) + + - ``connection_id_prefix``: an application specific prefix that is added to + the connection identifier used for tracing + (default: None) + + - ``ssl_context``: an SSLContext object used for connecting to the database + using TLS. This SSL context will be modified to include the private key + or any certificates found in a separately supplied wallet. This parameter + should only be specified if the default SSLContext object cannot be used + (default: None) + + - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes. The + value tunes internal buffers used for communication to the database. + Bigger values can increase throughput for large queries or bulk data + loads, but at the cost of higher memory use. The SDU size that will + actually be used is negotiated down to the lower of this value and the + database network SDU configuration value + (default: 8192) + + - ``pool_boundary``: one of the values "statement" or "transaction" + indicating when pooled DRCP connections can be returned to the pool. This + requires the use of DRCP with Oracle Database 23.4 or higher + (default: None) + + - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast open. + This is an Oracle Autonomous Database Serverless (ADB-S) specific + property for clients connecting from within OCI Cloud network. Please + refer to the ADB-S documentation for more information + (default: False) + + - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or + ssl.TLSVersion.TLSv1_3 indicating which TLS version to use + (default: None) + + - ``program``: a string recorded by Oracle Database as the program from + which the connection originates + (default: :attr:`oracledb.defaults.program + `) + + - ``machine``: a string recorded by Oracle Database as the name of the + machine from which the connection originates + (default: :attr:`oracledb.defaults.machine + `) + + - ``terminal``: a string recorded by Oracle Database as the terminal + identifier from which the connection originates + (default: :attr:`oracledb.defaults.terminal + `) + + - ``osuser``: a string recorded by Oracle Database as the operating system + user who originated the connection + (default: :attr:`oracledb.defaults.osuser + `) + + - ``driver_name``: a string recorded by Oracle Database as the name of the + driver which originated the connection + (default: :attr:`oracledb.defaults.driver_name + `) + + - ``use_sni``: a boolean indicating whether to use the TLS SNI extension to + bypass the second TLS neogiation that would otherwise be required + (default: False) + + - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass the + connect string to the Oracle Client libraries unchanged without parsing + by the driver. Setting this to False makes python-oracledb Thick and Thin + mode applications behave similarly regarding connection string parameter + handling and locating any optional tnsnames.ora configuration file + (default: :attr:`oracledb.defaults.thick_mode_dsn_passthrough + `) + + - ``extra_auth_params``: a dictionary containing configuration parameters + necessary for Oracle Database authentication using plugins, such as the + Azure and OCI cloud-native authentication plugins + (default: None) + + - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP with + Oracle Database 23.4, or higher + (default: None) + + - ``on_connect_callback``: a callable that is invoked immediately after a + standalone connection is created or a connection is acquired from a + connection pool, but before it is returned to the caller. A common use of + this callback is for creating and setting an end user security context + object for DeepSec support + (default: None) + + - ``handle``: an integer representing a pointer to a valid service context + handle. This value is only used in python-oracledb Thick mode. It should + be used with extreme caution + (default: 0) + """ + pass diff --git a/.venv/lib/python3.9/site-packages/oracledb/constants.py b/.venv/lib/python3.9/site-packages/oracledb/constants.py new file mode 100644 index 0000000..a63087d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/constants.py @@ -0,0 +1,96 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# constants.py +# +# Contains the constants defined by the package. +# ----------------------------------------------------------------------------- + +# AQ delivery modes +MSG_BUFFERED = 2 +MSG_PERSISTENT = 1 +MSG_PERSISTENT_OR_BUFFERED = 3 + +# AQ dequeue modes +DEQ_BROWSE = 1 +DEQ_LOCKED = 2 +DEQ_REMOVE = 3 +DEQ_REMOVE_NODATA = 4 + +# AQ dequeue navigation modes +DEQ_FIRST_MSG = 1 +DEQ_NEXT_MSG = 3 +DEQ_NEXT_TRANSACTION = 2 + +# AQ dequeue visibility modes +DEQ_IMMEDIATE = 1 +DEQ_ON_COMMIT = 2 + +# AQ dequeue wait modes +DEQ_NO_WAIT = 0 +DEQ_WAIT_FOREVER = 2**32 - 1 + +# AQ enqueue visibility modes +ENQ_IMMEDIATE = 1 +ENQ_ON_COMMIT = 2 + +# AQ message states +MSG_EXPIRED = 3 +MSG_PROCESSED = 2 +MSG_READY = 0 +MSG_WAITING = 1 + +# AQ other constants +MSG_NO_DELAY = 0 +MSG_NO_EXPIRATION = -1 + +# shutdown modes +DBSHUTDOWN_ABORT = 4 +DBSHUTDOWN_FINAL = 5 +DBSHUTDOWN_IMMEDIATE = 3 +DBSHUTDOWN_TRANSACTIONAL = 1 +DBSHUTDOWN_TRANSACTIONAL_LOCAL = 2 + +# subscription grouping classes +SUBSCR_GROUPING_CLASS_NONE = 0 +SUBSCR_GROUPING_CLASS_TIME = 1 + +# subscription grouping types +SUBSCR_GROUPING_TYPE_SUMMARY = 1 +SUBSCR_GROUPING_TYPE_LAST = 2 + +# subscription protocols +SUBSCR_PROTO_HTTP = 3 +SUBSCR_PROTO_MAIL = 1 +SUBSCR_PROTO_CALLBACK = 0 +SUBSCR_PROTO_SERVER = 2 + +# flags for tpc_end() +TPC_END_NORMAL = 0 +TPC_END_SUSPEND = 0x00100000 + +# vector metadata flags +VECTOR_META_FLAG_FLEXIBLE_DIM = 0x01 +VECTOR_META_FLAG_SPARSE_VECTOR = 0x02 diff --git a/.venv/lib/python3.9/site-packages/oracledb/constructors.py b/.venv/lib/python3.9/site-packages/oracledb/constructors.py new file mode 100644 index 0000000..8a58245 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/constructors.py @@ -0,0 +1,100 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# constructors.py +# +# Contains the constructors mandated by the Python Database API. +# ----------------------------------------------------------------------------- + +import datetime +from typing import Any + +from . import errors + + +def Binary(value: Any) -> bytes: + """ + Constructs an object holding a binary (long) string value. + """ + return bytes(value) + + +def Date(year: int, month: int, day: int) -> datetime.date: + """ + Constructs an object holding a date value. + """ + return datetime.date(year, month, day) + + +def DateFromTicks(ticks: float) -> datetime.date: + """ + Constructor mandated by the database API for creating a date value given + the number of seconds since the epoch (January 1, 1970). This is equivalent + to using datetime.date.fromtimestamp() and that should be used instead. + """ + return datetime.date.fromtimestamp(ticks) + + +def Time(hour: int, minute: int, second: int) -> None: + """ + Constructor mandated by the database API for creating a time value. Since + Oracle doesn't support time only values, an exception is raised when this + method is called. + """ + errors._raise_err(errors.ERR_TIME_NOT_SUPPORTED) + + +def TimeFromTicks(ticks: float) -> None: + """ + Constructor mandated by the database API for creating a time value given + the number of seconds since the epoch (January 1, 1970). Since Oracle + doesn't support time only values, an exception is raised when this method + is called. + """ + errors._raise_err(errors.ERR_TIME_NOT_SUPPORTED) + + +def Timestamp( + year: int, + month: int, + day: int, + hour: int = 0, + minute: int = 0, + second: int = 0, +) -> datetime.datetime: + """ + Constructs an object holding a time stamp value. + """ + return datetime.datetime(year, month, day, hour, minute, second) + + +def TimestampFromTicks(ticks: float) -> datetime.datetime: + """ + Constructor mandated by the database API for creating a timestamp value + given the number of seconds since the epoch (January 1, 1970). This is + equivalent to using datetime.datetime.fromtimestamp() and that should be + used instead. + """ + return datetime.datetime.fromtimestamp(ticks) diff --git a/.venv/lib/python3.9/site-packages/oracledb/cursor.py b/.venv/lib/python3.9/site-packages/oracledb/cursor.py new file mode 100644 index 0000000..bf9a723 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/cursor.py @@ -0,0 +1,1388 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# cursor.py +# +# Contains the Cursor class used for executing statements on connections and +# fetching results from queries. +# ----------------------------------------------------------------------------- + +from typing import Any, Union, Callable, Optional + +from . import connection as connection_module +from . import errors +from . import utils +from .base import BaseMetaClass +from .base_impl import DbType, DB_TYPE_OBJECT +from .dbobject import DbObjectType +from .fetch_info import FetchInfo +from .var import Var + + +class BaseCursor(metaclass=BaseMetaClass): + _impl = None + + def __init__( + self, + connection: "connection_module.Connection", + scrollable: bool = False, + handle: Optional[object] = None, + ) -> None: + self._connection = connection + self._impl = connection._impl.create_cursor_impl(scrollable) + if handle is not None: + self._impl.attach_external_handle(external_handle_capsule=handle) + + def __del__(self): + if self._impl is not None: + self._impl.close(in_del=True) + + def __enter__(self): + """ + The entry point for the cursor as a context manager. It returns itself. + """ + self._verify_open() + return self + + def __exit__(self, exc_type, exc_value, exc_tb): + """ + The exit point for the cursor as a context manager. It closes the + cursor. + """ + self._verify_open() + self._impl.close(in_del=True) + self._impl = None + + def __repr__(self): + cls_name = self.__class__._public_name + return f"<{cls_name} on {self.connection!r}>" + + def _call( + self, + name: str, + parameters: Union[list, tuple], + keyword_parameters: dict, + return_value: Any = None, + ) -> None: + """ + Internal method used for generating the PL/SQL block used to call + stored procedures. + """ + utils.verify_stored_proc_args(parameters, keyword_parameters) + self._verify_open() + statement, bind_values = self._call_get_execute_args( + name, parameters, keyword_parameters, return_value + ) + return self.execute(statement, bind_values) + + def _call_get_execute_args( + self, + name: str, + parameters: Union[list, tuple], + keyword_parameters: dict, + return_value: str = None, + ) -> None: + """ + Internal method used for generating the PL/SQL block used to call + stored procedures and functions. A tuple containing this statement and + the bind values is returned. + """ + bind_names = [] + bind_values = [] + statement_parts = ["begin "] + if return_value is not None: + statement_parts.append(":retval := ") + bind_values.append(return_value) + statement_parts.append(name + "(") + if parameters: + bind_values.extend(parameters) + bind_names = [":%d" % (i + 1) for i in range(len(parameters))] + if keyword_parameters: + for arg_name, arg_value in keyword_parameters.items(): + bind_values.append(arg_value) + bind_names.append(f"{arg_name} => :{len(bind_names) + 1}") + statement_parts.append(",".join(bind_names)) + statement_parts.append("); end;") + statement = "".join(statement_parts) + return (statement, bind_values) + + def _normalize_statement(self, statement: Optional[str]) -> Optional[str]: + """ + Normalizes a statement by stripping leading and trailing spaces. If the + result is an empty string, an error is raised immediately. + """ + if statement is not None: + statement = statement.strip() + if not statement: + errors._raise_err(errors.ERR_EMPTY_STATEMENT) + return statement + + def _prepare( + self, statement: str, tag: str = None, cache_statement: bool = True + ) -> None: + """ + Internal method used for preparing a statement for execution. + """ + self._impl.prepare(statement, tag, cache_statement) + + def _prepare_for_execute( + self, statement, parameters, keyword_parameters=None + ): + """ + Internal method for preparing a statement for execution. + """ + self._verify_open() + self._impl._prepare_for_execute( + self, + self._normalize_statement(statement), + parameters, + keyword_parameters, + ) + + def _verify_fetch(self) -> None: + """ + Verifies that fetching is possible from this cursor. + """ + self._verify_open() + if not self._impl.is_query(self): + errors._raise_err(errors.ERR_NOT_A_QUERY) + + def _verify_open(self) -> None: + """ + Verifies that the cursor is open and the associated connection is + connected. If either condition is false an exception is raised. + """ + if self._impl is None: + errors._raise_err(errors.ERR_CURSOR_NOT_OPEN) + self.connection._verify_connected() + + @property + def arraysize(self) -> int: + """ + This read-write attribute can be used to tune the number of rows + internally fetched and buffered by internal calls to the database when + fetching rows from SELECT statements and REF CURSORS. + + The value of ``arraysize`` can drastically affect the performance of a + query since it directly affects the number of network round trips + between Python and the database. For methods like :meth:`fetchone()` + and :meth:`fetchall()` it affects internal behavior but does not change + how many rows are returned to the application. For :meth:`fetchmany()` + it is the default number of rows to fetch. + + The attribute is only used for tuning row and SODA document fetches + from the database. It does not affect data inserts. + + Due to the performance benefits, the default ``arraysize`` is *100* + instead of the *1* that the Python DB API recommends. + """ + self._verify_open() + return self._impl.arraysize + + @arraysize.setter + def arraysize(self, value: int) -> None: + self._verify_open() + if not isinstance(value, int) or value <= 0: + errors._raise_err(errors.ERR_INVALID_ARRAYSIZE) + self._impl.arraysize = value + + def arrayvar( + self, + typ: Union[DbType, DbObjectType, type], + value: Union[list, int], + size: int = 0, + ) -> Var: + """ + Creates an array variable associated with the cursor of the given type + and size and returns a :ref:`variable object `. The value is + either an integer specifying the number of elements to allocate or it + is a list and the number of elements allocated is drawn from the size + of the list. If the value is a list, the variable is also set with the + contents of the list. If the size is not specified and the type is a + string or binary, 4000 bytes is allocated. This is needed for passing + arrays to PL/SQL (in cases where the list might be empty and the type + cannot be determined automatically) or returning arrays from PL/SQL. + """ + self._verify_open() + if isinstance(value, list): + num_elements = len(value) + elif isinstance(value, int): + num_elements = value + else: + raise TypeError("expecting integer or list of values") + var = self._impl.create_var( + self.connection, + typ, + size=size, + num_elements=num_elements, + is_array=True, + ) + if isinstance(value, list): + var.setvalue(0, value) + return var + + def bindnames(self) -> list: + """ + Returns the list of bind variable names bound to the statement. Note + that a statement must have been prepared first. + """ + self._verify_open() + if self._impl.statement is None: + errors._raise_err(errors.ERR_NO_STATEMENT_PREPARED) + return self._impl.get_bind_names() + + @property + def bindvars(self) -> list: + """ + This read-only attribute provides the bind variables used for the last + statement that was executed on the cursor. The value will be either a + list or a dictionary, depending on whether binding was done by position + or name. Care should be taken when referencing this attribute. In + particular, elements should not be removed or replaced. + """ + self._verify_open() + return self._impl.get_bind_vars() + + def close(self) -> None: + """ + Closes the cursor now, rather than whenever ``__del__`` is called. The + cursor will be unusable from this point forward; an Error exception + will be raised if any operation is attempted with the cursor. + """ + self._verify_open() + self._impl.close() + self._impl = None + + @property + def description(self) -> Union[list[FetchInfo], None]: + """ + This read-only attribute contains information about the columns used in + a query. It is a list of FetchInfo objects, one per column. This + attribute will be *None* for statements that are not SELECT or WITH + statements, or if the cursor has not had :meth:`execute()` invoked yet. + """ + self._verify_open() + if self._impl.is_query(self): + return [FetchInfo._from_impl(i) for i in self._impl.fetch_metadata] + + @property + def fetchvars(self) -> list: + """ + This read-only attribute specifies the list of variables created for + the last SELECT query that was executed on the cursor. Care should be + taken when referencing this attribute. In particular, elements should + not be removed or replaced. + """ + self._verify_open() + return self._impl.get_fetch_vars() + + def getarraydmlrowcounts(self) -> list: + """ + Retrieves the DML row counts after a call to :meth:`executemany()` with + ``arraydmlrowcounts`` enabled. This will return a list of integers + corresponding to the number of rows affected by the DML statement for + each element of the array passed to :meth:`executemany()`. + + This method is only available for Oracle Database 12.1 and later. + """ + self._verify_open() + return self._impl.get_array_dml_row_counts() + + def getbatcherrors(self) -> list: + """ + Retrieves the exceptions that took place after a call to + :meth:`executemany()` with ``batcherrors`` enabled. This will + return a list of Error objects, one error for each iteration that + failed. The offset can be determined by looking at the offset attribute + of the error object. + """ + self._verify_open() + return self._impl.get_batch_errors() + + def getimplicitresults(self) -> list: + """ + Returns a list of cursors which correspond to implicit results made + available from a PL/SQL block or procedure without the use of OUT ref + cursor parameters. The PL/SQL block or procedure opens the cursors and + marks them for return to the client using the procedure + dbms_sql.return_result. In python-oracledb Thick mode, closing the + parent cursor will result in the automatic closure of the implicit + result set cursors. See :ref:`implicitresults`. + + This method is only available for Oracle Database 12.1 (or later). For + python-oracledb :ref:`Thick ` mode, Oracle Client 12.1 + (or later) is additionally required. + """ + self._verify_open() + return self._impl.get_implicit_results(self.connection) + + @property + def inputtypehandler(self) -> Callable: + """ + This read-write attribute specifies a method called for each value that + is bound to a statement executed on the cursor and overrides the + attribute with the same name on the connection if specified. The method + signature is handler(cursor, value, arraysize) and the return value is + expected to be a variable object or *None* in which case a default + variable object will be created. If this attribute is *None*, the + default behavior will take place for all values bound to the + statements. + """ + self._verify_open() + return self._impl.inputtypehandler + + @inputtypehandler.setter + def inputtypehandler(self, value: Callable) -> None: + self._verify_open() + self._impl.inputtypehandler = value + + @property + def lastrowid(self) -> str: + """ + This read-only attribute returns the rowid of the last row modified by + the cursor. If no row was modified by the last operation performed on + the cursor, the value *None* is returned. + """ + self._verify_open() + return self._impl.get_lastrowid() + + @property + def outputtypehandler(self) -> Callable: + """ + This read-write attribute specifies a method called for each column + that is to be fetched from this cursor. The method signature is + handler(cursor, metadata) and the return value is expected to be a + :ref:`variable object ` or *None* in which case a default + variable object will be created. If this attribute is *None*, then the + default behavior will take place for all columns fetched from this + cursor. + """ + self._verify_open() + return self._impl.outputtypehandler + + @outputtypehandler.setter + def outputtypehandler(self, value: Callable) -> None: + self._verify_open() + self._impl.outputtypehandler = value + + @property + def prefetchrows(self) -> int: + """ + This read-write attribute can be used to tune the number of rows that + python-oracledb initially fetches from Oracle Database when a SELECT + query is executed. The value can improve performance by reducing the + number of round-trips to the database. The attribute does not affect + data insertion. + + In python-oracledb Thin mode, prefetching can reuse the + :attr:`arraysize` buffer. However in Thick mode, extra memory is + required. + + Setting this value to *0* can be useful when the timing of fetches must + be explicitly controlled. + + Queries that return :ref:`LOB ` objects and similar types do + not support prefetching. The ``prefetchrows`` attribute is ignored in + queries that involve these types. + """ + self._verify_open() + return self._impl.prefetchrows + + @prefetchrows.setter + def prefetchrows(self, value: int) -> None: + self._verify_open() + self._impl.prefetchrows = value + + def prepare( + self, statement: str, tag: str = None, cache_statement: bool = True + ) -> None: + """ + This can be used before a call to :meth:`execute()` or + :meth:`executemany()` to define the statement that will be + executed. When this is done, the prepare phase will not be performed + when the call to :meth:`execute()` or :meth:`executemany()` is made + with *None* or the same string object as the statement. + + If the ``tag`` parameter is specified and the ``cache_statement`` + parameter is *True*, the statement will be returned to the statement + cache with the given tag. + + If the ``cache_statement`` parameter is *False*, the statement will be + removed from the statement cache (if it was found there) or will simply + not be cached. + """ + self._verify_open() + self._prepare(statement, tag, cache_statement) + + @property + def rowcount(self) -> int: + """ + This read-only attribute specifies the number of rows that have + currently been fetched from the cursor (for select statements) or that + have been affected by the operation (for insert, update, delete, and + merge statements). For all other statements the value is always *0*. If + the cursor or connection is closed, the value returned is *-1*. + """ + if self._impl is not None and self.connection._impl is not None: + return self._impl.rowcount + return -1 + + @property + def rowfactory(self) -> Callable: + """ + This read-write attribute specifies a method to call for each row that + is retrieved from the database. Ordinarily, a tuple is returned for + each row but if this attribute is set, the method is called with the + tuple that would normally be returned, and the result of the method is + returned instead. + + The ``rowfactory`` attribute should be set after each statement + execution before data is fetched from the cursor. + """ + self._verify_open() + return self._impl.rowfactory + + @rowfactory.setter + def rowfactory(self, value: Callable) -> None: + self._verify_open() + self._impl.rowfactory = value + + @property + def scrollable(self) -> bool: + """ + This read-write boolean attribute specifies whether the cursor can be + scrolled or not. By default, cursors are not scrollable, as the server + resources and response times are greater than nonscrollable cursors. + This attribute is checked and the corresponding mode set in Oracle when + calling the method :meth:`execute()`. + """ + self._verify_open() + return self._impl.scrollable + + @scrollable.setter + def scrollable(self, value: bool) -> None: + self._verify_open() + self._impl.scrollable = value + + def setinputsizes(self, *args: Any, **kwargs: Any) -> Union[list, dict]: + """ + This can be used before calls to :meth:`execute()` or + :meth:`executemany()` to predefine memory areas used for + :ref:`bind variables `. Each parameter should be a type object + corresponding to the data that will be used for a bind variable + placeholder in the SQL or PL/SQL statement. Alternatively, it can be an + integer specifying the maximum length of a string bind variable value. + + Use keyword parameters when :ref:`binding by name `. Use + positional parameters when :ref:`binding by position `. + The parameter value can be *None* to indicate that python-oracledb + should determine the required space from the data value provided. + + The parameters or keyword names correspond to the bind variable + placeholders used in the SQL or PL/SQL statement. Note this means that + for use with :meth:`executemany()` it does not correspond to the number + of bind value mappings or sequences being passed. + + When repeated calls to :meth:`execute()` or :meth:`executemany()` are + made binding different string data lengths, using + :meth:`setinputsizes()` can help reduce the database's SQL "version + count" for the statement. See + :ref:`Reducing the SQL Version Count `. + """ + if args and kwargs: + errors._raise_err(errors.ERR_ARGS_AND_KEYWORD_ARGS) + elif args or kwargs: + self._verify_open() + return self._impl.setinputsizes(self.connection, args, kwargs) + return [] + + def setoutputsize(self, size: int, column: int = 0) -> None: + """ + This method does nothing and is retained solely for compatibility with + the DB API. Python-oracledb automatically allocates as much space as + needed to fetch LONG and LONG RAW columns, and also to fetch CLOB as + string and BLOB as bytes. + """ + pass + + @property + def statement(self) -> Union[str, None]: + """ + This read-only attribute provides the string object that was previously + prepared with :meth:`prepare()` or executed with :meth:`execute()`. + """ + if self._impl is not None: + return self._impl.statement + + def var( + self, + typ: Union[DbType, DbObjectType, type], + size: int = 0, + arraysize: int = 1, + inconverter: Callable = None, + outconverter: Callable = None, + typename: str = None, + encoding_errors: str = None, + bypass_decode: bool = False, + convert_nulls: bool = False, + *, + encodingErrors: str = None, + ) -> "Var": + """ + Creates a :ref:`variable object ` with the specified + characteristics. This method can be used for binding to PL/SQL IN and + OUT parameters where the length or type cannot be determined + automatically from the Python variable being bound. It can also be used + in :ref:`input ` and :ref:`output + ` type handlers. + + The ``typ`` parameter specifies the type of data that should be stored + in the variable. This should be one of the :ref:`database type + constants `, :ref:`DB API constants `, an object type + returned from the method :meth:`Connection.gettype()` or one of the + following Python types: + + - bool (uses :attr:`oracledb.DB_TYPE_BOOLEAN`) + - bytes (uses :attr:`oracledb.DB_TYPE_RAW`) + - datetime.date (uses :attr:`oracledb.DB_TYPE_DATE`) + - datetime.datetime (uses :attr:`oracledb.DB_TYPE_DATE`) + - datetime.timedelta (uses :attr:`oracledb.DB_TYPE_INTERVAL_DS`) + - decimal.Decimal (uses :attr:`oracledb.DB_TYPE_NUMBER`) + - float (uses :attr:`oracledb.DB_TYPE_NUMBER`) + - int (uses :attr:`oracledb.DB_TYPE_NUMBER`) + - str (uses :attr:`oracledb.DB_TYPE_VARCHAR`) + + The ``size`` parameter specifies the length of string and raw variables + and is ignored in all other cases. If not specified for string and raw + variables, the value *4000* is used. + + The ``arraysize`` parameter specifies the number of elements the + variable will have. If not specified the bind array size (usually *1*) + is used. When a variable is created in an output type handler this + parameter should be set to the cursor's array size. + + The ``inconverter`` and ``outconverter`` parameters specify methods + used for converting values to/from the database. More information can + be found in the section on :ref:`variable objects`. + + The ``typename`` parameter specifies the name of a SQL object type and + must be specified when using type :data:`oracledb.OBJECT` unless the + type object was passed directly as the first parameter. + + The ``encoding_errors`` parameter specifies what should happen when + decoding byte strings fetched from the database into strings. It should + be one of the values noted in the builtin `decode + `__ + function. + + The ``bypass_decode`` parameter, if specified, should be passed as a + boolean value. Passing a *True* value causes values of database types + :data:`~oracledb.DB_TYPE_VARCHAR`, :data:`~oracledb.DB_TYPE_CHAR`, + :data:`~oracledb.DB_TYPE_NVARCHAR`, :data:`~oracledb.DB_TYPE_NCHAR` and + :data:`~oracledb.DB_TYPE_LONG` to be returned as bytes instead of str, + meaning that python-oracledb does not do any decoding. See + :ref:`Fetching raw data ` for more information. + + The ``convert_nulls`` parameter, if specified, should be passed as a + boolean value. Passing the value *True* causes the ``outconverter`` to + be called when a null value is fetched from the database; otherwise, + the ``outconverter`` is only called when non-null values are fetched + from the database. + + For consistency and compliance with the PEP 8 naming style, the + parameter ``encodingErrors`` was renamed to ``encoding_errors``. The + old name will continue to work as a keyword parameter for a period of + time. + """ + self._verify_open() + if typename is not None: + typ = self.connection.gettype(typename) + elif typ is DB_TYPE_OBJECT: + errors._raise_err(errors.ERR_MISSING_TYPE_NAME_FOR_OBJECT_VAR) + if encodingErrors is not None: + if encoding_errors is not None: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="encodingErrors", + new_name="encoding_errors", + ) + encoding_errors = encodingErrors + return self._impl.create_var( + self.connection, + typ, + size, + arraysize, + inconverter, + outconverter, + encoding_errors, + bypass_decode, + convert_nulls=convert_nulls, + ) + + @property + def warning(self) -> Union[errors._Error, None]: + """ + This read-only attribute provides an + :ref:`oracledb._Error` object giving information about any + database warnings (such as PL/SQL compilation warnings) that were + generated during the last call to :meth:`execute()` or + :meth:`executemany()`. This value is automatically cleared on + the next call to :meth:`execute()` or :meth:`executemany()`. If no + warning was generated the value *None* is returned. + """ + self._verify_open() + return self._impl.warning + + +class Cursor(BaseCursor): + + def __iter__(self): + """ + Returns the cursor itself to be used as an iterator. + """ + return self + + def __next__(self): + self._verify_fetch() + row = self._impl.fetch_next_row(self) + if row is not None: + return row + raise StopIteration + + def _get_oci_attr(self, attr_num: int, attr_type: int) -> Any: + """ + Returns the value of the specified OCI attribute from the internal + handle. This is only supported in python-oracledb's thick mode and + should only be used as directed by Oracle. + """ + self._verify_open() + return self._impl._get_oci_attr(attr_num, attr_type) + + def _set_oci_attr(self, attr_num: int, attr_type: int, value: Any) -> None: + """ + Sets the value of the specified OCI attribute on the internal handle. + This is only supported in python-oracledb's thick mode and should only + be used as directed by Oracle. + """ + self._verify_open() + self._impl._set_oci_attr(attr_num, attr_type, value) + + def callfunc( + self, + name: str, + return_type: Any, + parameters: Optional[Union[list, tuple]] = None, + keyword_parameters: Optional[dict] = None, + *, + keywordParameters: Optional[dict] = None, + ) -> Any: + """ + Calls a PL/SQL function with the given name and returns its value. + + The ``return_type`` parameter is expected to be a Python type, one of + the :ref:`oracledb types ` or an + :ref:`Object Type `. + + The sequence of parameters must contain one entry for each parameter + that the PL/SQL function expects. Any keyword parameters will be + included after the positional parameters. + + Use :meth:`var()` to define any OUT or IN OUT parameters, if necessary. + + For consistency and compliance with the PEP 8 naming style, the + parameter ``keywordParameters`` was renamed to ``keyword_parameters``. + The old name will continue to work for a period of time. + """ + var = self.var(return_type) + if keywordParameters is not None: + if keyword_parameters is not None: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="keywordParameters", + new_name="keyword_parameters", + ) + keyword_parameters = keywordParameters + self._call(name, parameters, keyword_parameters, var) + return var.getvalue() + + def callproc( + self, + name: str, + parameters: Optional[Union[list, tuple]] = None, + keyword_parameters: Optional[dict] = None, + *, + keywordParameters: Optional[dict] = None, + ) -> list: + """ + Calls a PL/SQL procedure with the given name. + + The sequence of parameters must contain one entry for each parameter + that the procedure expects. The result of the call is a modified copy + of the input sequence. Input parameters are left untouched; output and + input/output parameters are replaced with possibly new values. Keyword + parameters will be included after the positional parameters and are not + returned as part of the output sequence. + + Use :meth:`var()` to define any OUT or IN OUT parameters if necessary. + + No query result set is returned by this method. Instead, use + :ref:`REF CURSOR ` parameters or + :ref:`Implicit Results `. + + For consistency and compliance with the PEP 8 naming style, the + parameter ``keywordParameters`` was renamed to ``keyword_parameters``. + The old name will continue to work for a period of time. + """ + if keywordParameters is not None: + if keyword_parameters is not None: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="keywordParameters", + new_name="keyword_parameters", + ) + keyword_parameters = keywordParameters + self._call(name, parameters, keyword_parameters) + if parameters is None: + return [] + return [ + v.get_value(0) for v in self._impl.bind_vars[: len(parameters)] + ] + + @property + def connection(self) -> "connection_module.Connection": + """ + This read-only attribute returns a reference to the connection object + on which the cursor was created. + """ + return self._connection + + @property + def handle(self) -> object: + """ + This read-only attribute returns a PyCapsule named ``oci_stmt_handle`` + wrapping the Oracle Call Interface (OCI) statement handle for the + connection. It is primarily provided to facilitate testing the creation + of a cursor using the OCI statement handle. + + This attribute is only supported in python-oracledb Thick mode. + """ + return self._impl.get_handle() + + def execute( + self, + statement: Optional[str], + parameters: Optional[Union[list, tuple, dict]] = None, + *, + suspend_on_success: bool = False, + fetch_lobs: Optional[bool] = None, + fetch_decimals: Optional[bool] = None, + **keyword_parameters: Any, + ) -> Any: + """ + Executes a statement against the database. See :ref:`sqlexecution`. + + Parameters may be passed as a dictionary or sequence or as keyword + parameters. If the parameters are a dictionary, the values will be + bound by name and if the parameters are a sequence the values will be + bound by position. Note that if the values are bound by position, the + order of the variables is from left to right as they are encountered in + the statement and SQL statements are processed differently than PL/SQL + statements. For this reason, it is generally recommended to bind + parameters by name instead of by position. + + Parameters passed as a dictionary are name and value pairs. The name + maps to the bind variable name used by the statement and the value maps + to the Python value you wish bound to that bind variable. + + A reference to the statement will be retained by the cursor. If *None* + or the same string object is passed in again, the cursor will execute + that statement again without performing a prepare or rebinding and + redefining. This is most effective for algorithms where the same + statement is used, but different parameters are bound to it (many + times). Note that parameters that are not passed in during subsequent + executions will retain the value passed in during the last execution + that contained them. + + The ``suspend_on_success`` parameter is specific to :ref:`sessionless + transactions `. When set to *True*, the active + sessionless transaction will be suspended when ``execute()`` completes + successfully. See :ref:`suspendtxns`. + + The ``fetch_lobs`` parameter specifies whether to return LOB locators + or ``str``/``bytes`` values when fetching LOB columns. The default + value is :data:`oracledb.defaults.fetch_lobs `. + + The ``fetch_decimals`` parameter specifies whether to return + ``decimal.Decimal`` values when fetching columns of type ``NUMBER``. + The default value is :data:`oracledb.defaults.fetch_decimals + `. + + For maximum efficiency when reusing a statement, it is best to use the + :meth:`Cursor.setinputsizes()` method to specify the parameter types + and sizes ahead of time; in particular, *None* is assumed to be a + string of length 1 so any values that are later bound as numbers or + dates will raise a TypeError exception. + + If the statement is a SELECT query, the cursor is returned as a + convenience to the caller (so it can be used directly as an iterator + over the rows in the cursor); otherwise, *None* is returned. + """ + self._prepare_for_execute(statement, parameters, keyword_parameters) + impl = self._impl + if fetch_lobs is not None: + impl.fetch_lobs = fetch_lobs + if fetch_decimals is not None: + impl.fetch_decimals = fetch_decimals + impl.suspend_on_success = suspend_on_success + impl.execute(self) + if impl.fetch_vars is not None: + return self + + def executemany( + self, + statement: Optional[str], + parameters: Any, + *, + batcherrors: bool = False, + arraydmlrowcounts: bool = False, + suspend_on_success: bool = False, + batch_size: int = 2**32 - 1, + ) -> None: + """ + Executes a SQL statement once using all bind value mappings or + sequences found in the sequence parameters. This can be used to insert, + update, or delete multiple rows in a table with a single + python-oracledb call. It can also invoke a PL/SQL procedure multiple + times. See :ref:`batchstmnt`. + + The ``statement`` parameter is managed in the same way as the + :meth:`execute()` method manages it. + + The ``parameters`` parameter can be a list of tuples, where each tuple + item maps to one bind variable placeholder in ``statement``. It can + also be a list of dictionaries, where the keys match the bind variable + placeholder names in ``statement``. If there are no bind values, or + values have previously been bound, the ``parameters`` value can be an + integer specifying the number of iterations. The ``parameters`` + parameter can also be a :ref:`DataFrame `, or a + third-party data frame that supports the `Apache Arrow PyCapsule + `__ Interface. + + In python-oracledb Thick mode, if the size of the buffers allocated for + any of the parameters exceeds 2 GB, you will receive the error + ``DPI-1015: array size of is too large``. If you receive this + error, decrease the number of rows being inserted. + + When *True*, the ``batcherrors`` parameter enables batch error support + within Oracle Database and ensures that the call succeeds even if an + exception takes place in one or more of the sequence of bind values. + The errors can then be retrieved using :meth:`getbatcherrors()`. + + When *True*, the ``arraydmlrowcounts`` parameter enables DML row counts + to be retrieved from Oracle after the method has completed. The row + counts can then be retrieved using + :meth:`getarraydmlrowcounts()`. + + Both the ``batcherrors`` parameter and the ``arraydmlrowcounts`` + parameter can only be *True* when executing an insert, update, delete, + or merge statement; in all other cases an error will be raised. + + The ``suspend_on_success`` parameter is specific to :ref:`sessionless + transactions `. When set to *True*, the active + sessionless transaction will be suspended when ``executemany()`` + completes successfully. See :ref:`suspendtxns`. + + The ``batch_size`` parameter is used to split large data sets into + smaller pieces for sending to the database. It is the number of records + in each batch. This parameter can be used to tune performance. When + ``Connection.autocommit`` is *True*, a commit will take place for each + batch. + + For maximum efficiency, it is best to use the :meth:`setinputsizes()` + method to specify the bind value types and sizes. In particular, if the + type is not explicitly specified, the value *None* is assumed to be a + string of length 1 so any values that are later bound as numbers or + dates will raise a TypeError exception. + """ + self._verify_open() + manager = self._impl._prepare_for_executemany( + self, + self._normalize_statement(statement), + parameters, + batch_size, + ) + self._impl.suspend_on_success = suspend_on_success + while manager.num_rows > 0: + self._impl.executemany( + self, + manager.num_rows, + batcherrors, + arraydmlrowcounts, + manager.message_offset, + ) + manager.next_batch() + + def fetchall(self) -> list: + """ + Fetches all (remaining) rows of a SELECT query result, returning them + as a list of tuples. An empty list is returned if no more rows are + available. An exception is raised if the previous call to + :meth:`execute()` did not produce any result set or no call was issued + yet. + + Note that the cursor's :attr:`~Cursor.arraysize` attribute can affect + the performance of this operation, as internally data is fetched in + batches of that size from the database. See :ref:`Tuning Fetch + Performance `. + + An exception is raised if the previous call to :meth:`execute()` did + not produce any result set or no call was issued yet. + """ + self._verify_fetch() + result = [] + fetch_next_row = self._impl.fetch_next_row + while True: + row = fetch_next_row(self) + if row is None: + break + result.append(row) + return result + + def fetchmany( + self, size: Optional[int] = None, numRows: Optional[int] = None + ) -> list: + """ + Fetches the next set of rows of a SELECT query result, returning a list + of tuples. An empty list is returned if no more rows are available. + Note that the cursor's :attr:`arraysize` attribute can affect the + performance of this operation. + + The number of rows to fetch is specified by the ``size`` parameter. If + it is not given, the cursor's :attr:`arraysize` attribute determines + the number of rows to be fetched. If the number of rows available to be + fetched is fewer than the amount requested, fewer rows will be + returned. + + An exception is raised if the previous call to :meth:`execute()` did + not produce any result set or no call was issued yet. + """ + self._verify_fetch() + if size is None: + if numRows is not None: + size = numRows + else: + size = self._impl.arraysize + elif numRows is not None: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="numRows", + new_name="size", + ) + result = [] + fetch_next_row = self._impl.fetch_next_row + while len(result) < size: + row = fetch_next_row(self) + if row is None: + break + result.append(row) + return result + + def fetchone(self) -> Any: + """ + Fetches the next row of a SELECT query result set, returning a single + tuple or *None* when no more data is available. An exception is raised + if the previous call to :meth:`execute()` did not produce any result + set or no call was issued yet. + + When ``fetchone()`` is used to iterate over a result set, the cursor’s + :attr:`arraysize` attribute can affect performance, as internally data + is fetched in batches of that size from Oracle Database. + """ + self._verify_fetch() + return self._impl.fetch_next_row(self) + + def parse(self, statement: str) -> None: + """ + This can be used to parse a statement without actually executing it + (parsing step is done automatically by Oracle when a statement is + :meth:`executed `). + """ + self._verify_open() + self._prepare(statement) + self._impl.parse(self) + + def scroll(self, value: int = 0, mode: str = "relative") -> None: + """ + Scrolls the cursor in the result set to a new position according to the + mode. + + If mode is *relative* (the default value), the value is taken as an + offset to the current position in the result set. If set to *absolute*, + value states an absolute target position. If set to *first*, the cursor + is positioned at the first row and if set to *last*, the cursor is set + to the last row in the result set. + + An error is raised if the mode is *relative* or *absolute* and the + scroll operation would position the cursor outside of the result set. + """ + self._verify_open() + if not self._impl.scrollable: + errors._raise_err(errors.ERR_SCROLL_NOT_SUPPORTED) + self._impl.scroll(self, value, mode) + + +class AsyncCursor(BaseCursor): + + async def __aenter__(self): + """ + The entry point for the cursor as a context manager. It returns itself. + """ + self._verify_open() + return self + + async def __aexit__(self, *exc_info): + """ + The exit point for the cursor as a context manager. It closes the + cursor. + """ + self._verify_open() + self._impl.close(in_del=True) + self._impl = None + + def __aiter__(self): + """ + Returns the cursor itself to be used as an asynchronous iterator. + """ + return self + + async def __anext__(self): + self._verify_fetch() + row = await self._impl.fetch_next_row(self) + if row is not None: + return row + raise StopAsyncIteration + + async def callfunc( + self, + name: str, + return_type: Any, + parameters: Optional[Union[list, tuple]] = None, + keyword_parameters: Optional[dict] = None, + ) -> Any: + """ + Calls a PL/SQL function with the given name and returns its value. + + The ``return_type`` parameter is expected to be a Python type, one of + the :ref:`oracledb types ` or an :ref:`Object Type + `. + + The sequence of parameters must contain one entry for each parameter + that the PL/SQL function expects. Any keyword parameters will be + included after the positional parameters. + + Use :meth:`var()` to define any OUT or IN OUT parameters, if necessary. + """ + var = self.var(return_type) + await self._call(name, parameters, keyword_parameters, var) + return var.getvalue() + + async def callproc( + self, + name: str, + parameters: Optional[Union[list, tuple]] = None, + keyword_parameters: Optional[dict] = None, + ) -> list: + """ + Calls a PL/SQL procedure with the given name. + + The sequence of parameters must contain one entry for each parameter + that the procedure expects. The result of the call is a modified copy + of the input sequence. Input parameters are left untouched; output and + input/output parameters are replaced with possibly new values. Keyword + parameters will be included after the positional parameters and are not + returned as part of the output sequence. + + Use :meth:`var()` to define any OUT or IN OUT parameters if necessary. + + No query result set is returned by :meth:`callproc()`. Instead, use + :ref:`REF CURSOR ` parameters or :ref:`Implicit Results + `. + """ + await self._call(name, parameters, keyword_parameters) + if parameters is None: + return [] + return [ + v.get_value(0) for v in self._impl.bind_vars[: len(parameters)] + ] + + @property + def connection(self) -> "connection_module.AsyncConnection": + """ + This read-only attribute returns a reference to the connection object + on which the cursor was created. + """ + return self._connection + + async def execute( + self, + statement: Optional[str], + parameters: Optional[Union[list, tuple, dict]] = None, + *, + suspend_on_success: bool = False, + fetch_lobs: Optional[bool] = None, + fetch_decimals: Optional[bool] = None, + **keyword_parameters: Any, + ) -> None: + """ + Executes a statement against the database. See :ref:`sqlexecution`. + + Parameters may be passed as a dictionary or sequence or as keyword + parameters. If the parameters are a dictionary, the values will be + bound by name and if the parameters are a sequence the values will be + bound by position. Note that if the values are bound by position, the + order of the variables is from left to right as they are encountered in + the statement and SQL statements are processed differently than PL/SQL + statements. For this reason, it is generally recommended to bind + parameters by name instead of by position. + + Parameters passed as a dictionary are name and value pairs. The name + maps to the bind variable name used by the statement and the value maps + to the Python value you wish bound to that bind variable. + + A reference to the statement will be retained by the cursor. If *None* + or the same string object is passed in again, the cursor will execute + that statement again without performing a prepare or rebinding and + redefining. This is most effective for algorithms where the same + statement is used, but different parameters are bound to it (many + times). Note that parameters that are not passed in during subsequent + executions will retain the value passed in during the last execution + that contained them. + + The ``suspend_on_success`` parameter is specific to :ref:`sessionless + transactions `. When set to *True*, the active + sessionless transaction will be suspended when ``execute()`` completes + successfully. See :ref:`suspendtxns`. + + The ``fetch_lobs`` parameter specifies whether to return LOB locators + or ``str``/``bytes`` values when fetching LOB columns. The default + value is :data:`oracledb.defaults.fetch_lobs `. + + The ``fetch_decimals`` parameter specifies whether to return + ``decimal.Decimal`` values when fetching columns of type ``NUMBER``. + The default value is :data:`oracledb.defaults.fetch_decimals + `. + + For maximum efficiency when reusing a statement, it is best to use the + :meth:`setinputsizes()` method to specify the parameter types and sizes + ahead of time; in particular, *None* is assumed to be a string of + length 1 so any values that are later bound as numbers or dates will + raise a TypeError exception. + + If the statement is a SELECT query, the cursor is returned as a + convenience to the caller (so it can be used directly as an iterator + over the rows in the cursor); otherwise, *None* is returned. + """ + self._prepare_for_execute(statement, parameters, keyword_parameters) + impl = self._impl + impl.suspend_on_success = suspend_on_success + if fetch_lobs is not None: + impl.fetch_lobs = fetch_lobs + if fetch_decimals is not None: + impl.fetch_decimals = fetch_decimals + await self._impl.execute(self) + + async def executemany( + self, + statement: Optional[str], + parameters: Any, + *, + batcherrors: bool = False, + arraydmlrowcounts: bool = False, + suspend_on_success: bool = False, + batch_size: int = 2**32 - 1, + ) -> None: + """ + Executes a SQL statement once using all bind value mappings or + sequences found in the sequence parameters. This can be used to insert, + update, or delete multiple rows in a table with a single + python-oracledb call. It can also invoke a PL/SQL procedure multiple + times. See :ref:`batchstmnt`. + + The ``statement`` parameter is managed in the same way as the + :meth:`execute()` method manages it. + + The ``parameters`` parameter can be a list of tuples, where each tuple + item maps to one bind variable placeholder in ``statement``. It can + also be a list of dictionaries, where the keys match the bind variable + placeholder names in ``statement``. If there are no bind values, or + values have previously been bound, the ``parameters`` value can be an + integer specifying the number of iterations. The ``parameters`` + parameter can also be a :ref:`DataFrame `, or a + third-party data frame that supports the `Apache Arrow PyCapsule + `__ Interface. + + In python-oracledb Thick mode, if the size of the buffers allocated for + any of the parameters exceeds 2 GB, you will receive the error + ``DPI-1015: array size of is too large``. If you receive this + error, decrease the number of rows being inserted. + + When True, the ``batcherrors`` parameter enables batch error support + within Oracle and ensures that the call succeeds even if an exception + takes place in one or more of the sequence of parameters. The errors + can then be retrieved using :meth:`getbatcherrors()`. + + When True, the ``arraydmlrowcounts`` parameter enables DML row counts + to be retrieved from Oracle after the method has completed. The row + counts can then be retrieved using :meth:`getarraydmlrowcounts()`. + + Both the ``batcherrors`` parameter and the ``arraydmlrowcounts`` + parameter can only be True when executing an insert, update, delete, or + merge statement. In all other cases, an error will be raised. + + The ``suspend_on_success`` parameter is specific to :ref:`sessionless + transactions `. When set to *True*, the active + sessionless transaction will be suspended when ``executemany()`` + completes successfully. See :ref:`suspendtxns`. + + The ``batch_size`` parameter is used to split large data sets into + smaller pieces for sending to the database. It is the number of records + in each batch. This parameter can be used to tune performance. When + ``Connection.autocommit`` is *True*, a commit will take place for each + batch. Do not set ``batch_size`` when ``suspend_on_success`` is *True*. + + For maximum efficiency, it is best to use the :meth:`setinputsizes()` + method to specify the parameter types and sizes ahead of time. In + particular, the value *None* is assumed to be a string of length 1 so + any values that are later bound as numbers or dates will raise a + TypeError exception. + """ + self._verify_open() + manager = self._impl._prepare_for_executemany( + self, self._normalize_statement(statement), parameters, batch_size + ) + self._impl.suspend_on_success = suspend_on_success + while manager.num_rows > 0: + await self._impl.executemany( + self, + manager.num_rows, + batcherrors, + arraydmlrowcounts, + manager.message_offset, + ) + manager.next_batch() + + async def fetchall(self) -> list: + """ + Fetches all (remaining) rows of a SELECT query result, returning them + as a list of tuples. An empty list is returned if no more rows are + available. An exception is raised if the previous call to + :meth:`execute()` did not produce any result set or no call was issued + yet. + + Note that the cursor's :attr:`~AsyncCursor.arraysize` attribute can + affect the performance of this operation, as internally data is fetched + in batches of that size from the database. + """ + self._verify_fetch() + result = [] + fetch_next_row = self._impl.fetch_next_row + while True: + row = await fetch_next_row(self) + if row is None: + break + result.append(row) + return result + + async def fetchmany(self, size: Optional[int] = None) -> list: + """ + Fetches the next set of rows of a SELECT query result, returning a list + of tuples. An empty list is returned if no more rows are available. + Note that the cursor's :attr:`arraysize` attribute can affect the + performance of this operation. + + The number of rows to fetch is specified by the parameter. If it is not + given, the cursor's :attr:`arraysize` attribute determines the number + of rows to be fetched. If the number of rows available to be fetched is + fewer than the amount requested, fewer rows will be returned. + + An exception is raised if the previous call to :meth:`execute()` did + not produce any result set or no call was issued yet. + """ + self._verify_fetch() + if size is None: + size = self._impl.arraysize + result = [] + fetch_next_row = self._impl.fetch_next_row + while len(result) < size: + row = await fetch_next_row(self) + if row is None: + break + result.append(row) + return result + + async def fetchone(self) -> Any: + """ + Fetches the next row of a SELECT query result set, returning a single + tuple or *None* when no more data is available. An exception is raised + if the previous call to :meth:`execute()` did not produce any result + set or no call was issued yet. + + When ``fetchone()`` is used to iterate over a result set, the cursor’s + :attr:`arraysize` attribute can affect performance, as internally data + is fetched in batches of that size from Oracle Database. + """ + self._verify_fetch() + return await self._impl.fetch_next_row(self) + + async def parse(self, statement: str) -> None: + """ + This can be used to parse a statement without actually executing it + (parsing step is done automatically by Oracle when a statement is + :meth:`executed `). + """ + self._verify_open() + self._prepare(statement) + await self._impl.parse(self) + + async def scroll(self, value: int = 0, mode: str = "relative") -> None: + """ + Scrolls the cursor in the result set to a new position according to the + mode. + + If mode is *relative* (the default value), the value is taken as an + offset to the current position in the result set. If set to *absolute*, + value states an absolute target position. If set to *first*, the cursor + is positioned at the first row and if set to *last*, the cursor is set + to the last row in the result set. + + An error is raised if the mode is *relative* or *absolute* and the + scroll operation would position the cursor outside of the result set. + """ + self._verify_open() + if not self._impl.scrollable: + errors._raise_err(errors.ERR_SCROLL_NOT_SUPPORTED) + await self._impl.scroll(self, value, mode) diff --git a/.venv/lib/python3.9/site-packages/oracledb/dataframe.py b/.venv/lib/python3.9/site-packages/oracledb/dataframe.py new file mode 100644 index 0000000..feb74c4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/dataframe.py @@ -0,0 +1,122 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# dataframe.py +# +# Implement a data frame that can be used for efficiently transferring Arrow +# array data to other data frame libraries. +# ----------------------------------------------------------------------------- + +from .arrow_array import ArrowArray +from .arrow_impl import DataFrameImpl +from .base import BaseMetaClass +from . import errors + + +class DataFrame(metaclass=BaseMetaClass): + _impl = None + + def __init__(self): + errors._raise_err(errors.ERR_INTERNAL_CREATION_REQUIRED) + + @classmethod + def _from_arrow(cls, obj): + df = cls.__new__(cls) + df._initialize(DataFrameImpl.from_arrow_stream(obj)) + return df + + @classmethod + def _from_impl(cls, impl): + df = cls.__new__(cls) + df._initialize(impl) + return df + + def _initialize(self, impl): + """ + Initializes the object given the implementation. + """ + self._impl = impl + self._arrays = [ArrowArray._from_impl(a) for a in impl.get_arrays()] + self._arrays_by_name = {} + for array in self._arrays: + self._arrays_by_name[array.name] = array + + def __arrow_c_stream__(self, requested_schema=None): + """ + Returns the ArrowArrayStream PyCapsule which allows direct conversion + to foreign data frames that support this interface. + """ + if requested_schema is not None: + raise NotImplementedError("requested_schema") + return self._impl.get_stream_capsule() + + def column_arrays(self) -> list[ArrowArray]: + """ + Returns a list of ArrowArray objects, each containing a select list + column. + """ + return self._arrays + + def column_names(self) -> list[str]: + """ + Returns a list of the column names in the data frame. + """ + return [a.name for a in self._arrays] + + def get_column(self, i: int) -> ArrowArray: + """ + Returns an :ref:`ArrowArray ` object for the + column at the given index ``i``. If the index is out of range, an + IndexError exception is raised. + """ + if i < 0 or i >= self.num_columns(): + raise IndexError( + f"Column index {i} is out of bounds for " + f"DataFrame with {self.num_columns()} columns" + ) + return self._arrays[i] + + def get_column_by_name(self, name: str) -> ArrowArray: + """ + Returns an :ref:`ArrowArray ` object for the + column with the given name ``name``. If the column name is not found, + a KeyError exception is raised. + """ + try: + return self._arrays_by_name[name] + except KeyError: + raise KeyError(f"Column {name} not found in DataFrame") + + def num_columns(self) -> int: + """ + Returns the number of columns in the data frame. + """ + return len(self._arrays) + + def num_rows(self) -> int: + """ + Returns the number of rows in the data frame. + """ + return len(self._arrays[0]) diff --git a/.venv/lib/python3.9/site-packages/oracledb/dbobject.py b/.venv/lib/python3.9/site-packages/oracledb/dbobject.py new file mode 100644 index 0000000..fef230e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/dbobject.py @@ -0,0 +1,392 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# dbobject.py +# +# Contains the classes used for managing database objects and the database +# object type metadata: DbObject, DbObjectType and DbObjectAttr. +# ----------------------------------------------------------------------------- + +from typing import Any, Sequence, Union + +from . import errors +from .base import BaseMetaClass +from .base_impl import DbType + + +class DbObject(metaclass=BaseMetaClass): + + def __getattr__(self, name): + try: + attr_impl = self._impl.type.attrs_by_name[name] + except KeyError: + return super().__getattribute__(name) + return self._impl.get_attr_value(attr_impl) + + def __iter__(self): + self._ensure_is_collection() + ix = self._impl.get_first_index() + while ix is not None: + yield self._impl.get_element_by_index(ix) + ix = self._impl.get_next_index(ix) + + def __repr__(self): + cls_name = self.__class__._public_name + return f"<{cls_name} {self.type._get_full_name()} at {hex(id(self))}>" + + def __setattr__(self, name, value): + if name == "_impl" or name == "_type": + super().__setattr__(name, value) + else: + attr_impl = self._impl.type.attrs_by_name[name] + self._impl.set_attr_value(attr_impl, value) + + def _ensure_is_collection(self): + """ + Ensures that the object refers to a collection. If not, an exception is + raised. + """ + if not self.type.iscollection: + errors._raise_err( + errors.ERR_OBJECT_IS_NOT_A_COLLECTION, + name=self.type._get_full_name(), + ) + + @classmethod + def _from_impl(cls, impl): + obj = cls.__new__(cls) + obj._impl = impl + obj._type = None + return obj + + def append(self, element: Any) -> None: + """ + Appends an element to the collection object. If no elements exist in + the collection, this creates an element at index 0; otherwise, it + creates an element immediately following the highest index available in + the collection. + """ + self._ensure_is_collection() + self._impl.append(element) + + def asdict(self) -> dict: + """ + Returns a dictionary where the collection’s indexes are the keys and + the elements are its values. + """ + self._ensure_is_collection() + result = {} + ix = self._impl.get_first_index() + while ix is not None: + result[ix] = self._impl.get_element_by_index(ix) + ix = self._impl.get_next_index(ix) + return result + + def aslist(self) -> list: + """ + Returns a list of each of the collection’s elements in index order. + """ + return list(self) + + def copy(self) -> "DbObject": + """ + Creates a copy of the object and returns it. + """ + copied_impl = self._impl.copy() + return DbObject._from_impl(copied_impl) + + def delete(self, index: int) -> None: + """ + Delete the element at the specified index of the collection. If the + element does not exist or is otherwise invalid, an error is raised. + Note that the indices of the remaining elements in the collection are + not changed. In other words, the delete operation creates holes in the + collection. + """ + self._ensure_is_collection() + self._impl.delete_by_index(index) + + def exists(self, index: int) -> bool: + """ + Return True or False indicating if an element exists in the collection + at the specified index. + """ + self._ensure_is_collection() + return self._impl.exists_by_index(index) + + def extend(self, seq: list) -> None: + """ + Appends all of the elements in the sequence to the collection. This is + the equivalent of performing append() for each element found in the + sequence. + """ + self._ensure_is_collection() + for value in seq: + self.append(value) + + def first(self) -> int: + """ + Returns the index of the first element in the collection. If the + collection is empty, None is returned. + """ + self._ensure_is_collection() + return self._impl.get_first_index() + + def getelement(self, index: int) -> Any: + """ + Returns the element at the specified index of the collection. If no + element exists at that index, an exception is raised. + """ + self._ensure_is_collection() + return self._impl.get_element_by_index(index) + + def last(self) -> int: + """ + Returns the index of the last element in the collection. If the + collection is empty, None is returned. + """ + self._ensure_is_collection() + return self._impl.get_last_index() + + def next(self, index: int) -> int: + """ + Returns the index of the next element in the collection following the + specified index. If there are no elements in the collection following + the specified index, None is returned. + """ + self._ensure_is_collection() + return self._impl.get_next_index(index) + + def prev(self, index: int) -> int: + """ + Returns the index of the element in the collection preceding the + specified index. If there are no elements in the collection preceding + the specified index, None is returned. + """ + self._ensure_is_collection() + return self._impl.get_prev_index(index) + + def setelement(self, index: int, value: Any) -> None: + """ + Sets the value in the collection at the specified index to the given + value. + """ + self._ensure_is_collection() + self._impl.set_element_by_index(index, value) + + def size(self) -> int: + """ + Returns the number of elements in the collection. + """ + self._ensure_is_collection() + return self._impl.get_size() + + def trim(self, num: int) -> None: + """ + Removes the specified number of elements from the end of the + collection. + """ + self._ensure_is_collection() + self._impl.trim(num) + + @property + def type(self) -> "DbObjectType": + """ + This read-only attribute arturns an ObjectType corresponding to the + type of the object. + """ + if self._type is None: + self._type = DbObjectType._from_impl(self._impl.type) + return self._type + + +class DbObjectAttr(metaclass=BaseMetaClass): + + def __repr__(self): + return f"" + + @classmethod + def _from_impl(cls, impl): + attr = cls.__new__(cls) + attr._impl = impl + attr._type = None + return attr + + @property + def max_size(self) -> Union[int, None]: + """ + This read-only attribute returns the maximum size (in bytes) of the + attribute when the attribute's type is one of + DB_TYPE_RAW, DB_TYPE_CHAR, DB_TYPE_NCHAR, DB_TYPE_VARCHAR and + DB_TYPE_NVARCHAR. For all other types, the value returned is None. + """ + if self._impl.max_size: + return self._impl.max_size + + @property + def name(self) -> str: + """ + This read-only attribute returns the name of the attribute. + """ + return self._impl.name + + @property + def precision(self) -> Union[int, None]: + """ + This read-only attribute returns the precision of the attribute when + the attribute's type is DB_TYPE_NUMBER. For all other types, the value + returned is None. + """ + if self._impl.precision or self._impl.scale: + return self._impl.precision + + @property + def scale(self) -> Union[int, None]: + """ + This read-only attribute returns the scale of the attribute when the + attribute's type is DB_TYPE_NUMBER. For all other types, the value + returned is None. + """ + if self._impl.precision or self._impl.scale: + return self._impl.scale + + @property + def type(self) -> Union["DbObjectType", DbType]: + """ + This read-only attribute returns the type of the attribute. This will + be an Oracle Object Type if the variable binds Oracle objects; + otherwise, it will be one of the database type constants. + """ + if self._type is None: + if self._impl.objtype is not None: + self._type = DbObjectType._from_impl(self._impl.objtype) + else: + self._type = self._impl.dbtype + return self._type + + +class DbObjectType(metaclass=BaseMetaClass): + + def __call__(self, value: Sequence = None) -> DbObject: + """ + The object type may be called directly and serves as an alternative way + of calling :meth:`~DbObjectType.newobject()`. + """ + return self.newobject(value) + + def __eq__(self, other): + if isinstance(other, DbObjectType): + return other._impl == self._impl + return NotImplemented + + def __repr__(self): + return f"" + + @classmethod + def _from_impl(cls, impl): + typ = cls.__new__(cls) + typ._impl = impl + typ._attributes = None + typ._element_type = None + return typ + + def _get_full_name(self): + """ + Returns the full name of the type. + """ + return self._impl._get_fqn() + + @property + def attributes(self) -> list["DbObjectAttr"]: + """ + This read-only attribute returns a list of the attributes that make up + the object type. + """ + if self._attributes is None: + self._attributes = [ + DbObjectAttr._from_impl(i) for i in self._impl.attrs + ] + return self._attributes + + @property + def iscollection(self) -> bool: + """ + This read-only attribute returns a boolean indicating if the object + type refers to a collection or not. + """ + return self._impl.is_collection + + @property + def name(self) -> str: + """ + This read-only attribute returns the name of the type. + """ + return self._impl.name + + @property + def element_type(self) -> Union["DbObjectType", DbType]: + """ + This read-only attribute returns the type of elements found in + collections of this type, if iscollection is True; otherwise, it + returns None. If the collection contains objects, this will be another + object type; otherwise, it will be one of the database type constants. + """ + if self._element_type is None: + if self._impl.element_metadata.objtype is not None: + typ_impl = self._impl.element_metadata.objtype + self._element_type = DbObjectType._from_impl(typ_impl) + else: + self._element_type = self._impl.element_metadata.dbtype + return self._element_type + + def newobject(self, value: Sequence = None) -> DbObject: + """ + Returns a new Oracle object of the given type. This object can then be + modified by setting its attributes and then bound to a cursor for + interaction with Oracle. If the object type refers to a collection, a + sequence may be passed and the collection will be initialized with the + items in that sequence. + """ + obj_impl = self._impl.create_new_object() + obj = DbObject._from_impl(obj_impl) + if value is not None: + obj.extend(value) + return obj + + @property + def package_name(self) -> str: + """ + This read-only attribute returns the name of the package containing the + PL/SQL type or None if the type is not a PL/SQL type. + """ + return self._impl.package_name + + @property + def schema(self) -> str: + """ + This read-only attribute returns the name of the schema that owns the + type. + """ + return self._impl.schema diff --git a/.venv/lib/python3.9/site-packages/oracledb/defaults.py b/.venv/lib/python3.9/site-packages/oracledb/defaults.py new file mode 100644 index 0000000..c717c84 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/defaults.py @@ -0,0 +1,329 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# defaults.py +# +# Contains the Defaults class used for managing default values used throughout +# the module. +# ----------------------------------------------------------------------------- + +from . import base_impl +from . import errors +from .base import BaseMetaClass + + +class Defaults(metaclass=BaseMetaClass): + """ + A singleton Defaults object contains attributes to adjust default + behaviors of python-oracledb. It is accessed using the :data:`defaults` + attribute of the imported module. + """ + + def __init__(self) -> None: + self._impl = base_impl.DEFAULTS + + @property + def arraysize(self) -> int: + """ + This read-write attribute specifies the default arraysize to use when + cursors are created. + + It is an attribute for tuning the performance of fetching rows from + Oracle Database. It does not affect data insertion. + + This value is the default for :attr:`Cursor.arraysize` and + :attr:`AsyncCursor.arraysize`. + + This attribute has an initial value of *100*. + """ + return self._impl.arraysize + + @arraysize.setter + def arraysize(self, value: int): + self._impl.arraysize = value + + @property + def config_dir(self) -> str: + """ + This read-write attribute specifies the directory in which the optional + configuration file ``tnsnames.ora`` will be read in python-oracledb + Thin mode. It is also used in Thick mode if + :attr:`Defaults.thick_mode_dsn_passthrough` is *False*. + + At time of ``import oracledb`` the value of + ``oracledb.defaults.config_dir`` will be set to (first one wins): + + - the value of ``$TNS_ADMIN``, if ``TNS_ADMIN`` is set. + + - ``$ORACLE_HOME/network/admin``, if ``$ORACLE_HOME`` is set. + + Otherwise, ``oracledb.defaults.config_dir`` will not be set. + + At completion of a call to :meth:`oracledb.init_oracle_client()` in + python-oracledb Thick mode, the value of ``config_dir`` may get + changed. + """ + return self._impl.config_dir + + @config_dir.setter + def config_dir(self, value: str): + self._impl.config_dir = value + + @property + def fetch_lobs(self) -> bool: + """ + This read-write attribute specifies whether queries that contain LOBs + should return LOB objects or their contents instead. + + When the value of this attribute is *True*, then queries to LOB columns + return LOB locators. When the value of this attribute is *False*, then + CLOBs and NCLOBs are fetched as strings, and BLOBs are fetched as + bytes. If LOBs are larger than 1 GB, then this attribute should be set + to *True* and the LOBs should be streamed. + + The value of ``oracledb.defaults.fetch_lobs`` does not affect LOBs + returned as OUT binds. + + The value of ``fetch_lobs`` can be overridden at statement execution by + passing an equivalent parameter. + + An output type handler such as the one previously required in the + obsolete cx_Oracle driver can alternatively be used to adjust the + returned type. If a type handler exists and returns a variable (that + is, `cursor.var(...)`), then that return variable is used. If the type + handler returns *None*, then the value of + ``oracledb.defaults.fetch_lobs`` is used. + + This attribute has an initial value of *True*. + """ + return self._impl.fetch_lobs + + @fetch_lobs.setter + def fetch_lobs(self, value: bool): + self._impl.fetch_lobs = value + + @property + def fetch_decimals(self) -> bool: + """ + This read-write attribute specifies whether queries that contain + numbers should be fetched as Python decimal.Decimal objects or floating + point numbers. This can help avoid issues with converting numbers from + Oracle Database's decimal format to Python's binary format. + + The value of ``fetch_decimals`` can be overridden at statement + execution by passing an equivalent parameter. + + An output type handler such as previously required in the obsolete + cx_Oracle driver can alternatively be used to adjust the returned type. + If a type handler exists and returns a variable (that is, + ``cursor.var(...)``), then that return variable is used. If the type + handler returns *None*, then the value of + ``oracledb.defaults.fetch_decimals`` is used to determine whether to + return ``decimal.Decimal`` values. + + This attribute has an initial value of *False*. + """ + return self._impl.fetch_decimals + + @fetch_decimals.setter + def fetch_decimals(self, value: bool): + self._impl.fetch_decimals = value + + @property + def prefetchrows(self) -> int: + """ + This read-write attribute specifies the default number of rows to + prefetch when cursors are executed. + + This is an attribute for tuning the performance of fetching rows from + Oracle Database. It does not affect data insertion. + + This value is the default for :attr:`Cursor.prefetchrows` and + :attr:`AsyncCursor.prefetchrows`. + + This attribute is ignored when using :meth:`Connection.fetch_df_all()` + or :meth:`Connection.fetch_df_batches()` since these methods always set + the internal prefetch size to their relevant ``arraysize`` or ``size`` + parameter value. + + This attribute has an initial value of *2*. + """ + return self._impl.prefetchrows + + @prefetchrows.setter + def prefetchrows(self, value: int): + self._impl.prefetchrows = value + + @property + def stmtcachesize(self) -> int: + """ + This read-write attribute specifies the default size of the statement + cache. + + This is an attribute for tuning statement execution performance when a + statement is executed more than once. + + This value is the default for :attr:`Connection.stmtcachesize`, + :attr:`ConnectionPool.stmtcachesize`, + :attr:`AsyncConnection.stmtcachesize`, and + :attr:`AsyncConnectionPool.stmtcachesize`. + + This attribute has an initial value of *20*. + """ + return self._impl.stmtcachesize + + @stmtcachesize.setter + def stmtcachesize(self, value: int): + self._impl.stmtcachesize = value + + @property + def program(self) -> str: + """ + This read-write attribute is a string recorded by Oracle Database + as the program from which the connection originates. This is the value + used in the PROGRAM column of the V$SESSION view. + + This attribute has an initial value that is populated by + `sys.executable `__. + + This attribute is only used in python-oracledb Thin mode. + """ + return self._impl.program + + @program.setter + def program(self, value: str): + if base_impl.sanitize(value) != value: + errors._raise_err(errors.ERR_INVALID_NETWORK_NAME, name="program") + self._impl.program = value + + @property + def machine(self) -> str: + """ + This read-write attribute is a string recorded by Oracle Database as + the name of machine from which the connection originates. This is the + value used in the MACHINE column of the V$SESSION view. + + This attribute takes the host name where the application is running as + its initial value. + + This attribute is only used in python-oracledb Thin mode. + """ + return self._impl.machine + + @machine.setter + def machine(self, value: str): + if base_impl.sanitize(value) != value: + errors._raise_err(errors.ERR_INVALID_NETWORK_NAME, name="machine") + self._impl.machine = value + + @property + def terminal(self) -> str: + """ + This read-write attribute specifies the terminal identifier from which + the connection originates. This is the value used in the TERMINAL + column of the V$SESSION view. + + This attribute has an initial value of "unknown". + + This attribute is only used in python-oracledb Thin mode. + """ + return self._impl.terminal + + @terminal.setter + def terminal(self, value: str): + self._impl.terminal = value + + @property + def osuser(self) -> str: + """ + This read-write attribute is a string recorded by Oracle Database + as the operating system user who originated the connection. This is the + value used in the OSUSER column of the V$SESSION view. + + This attribute takes the login name of the user as its initial value. + + This attribute is only used in python-oracledb Thin mode. + """ + return self._impl.osuser + + @osuser.setter + def osuser(self, value: str): + if base_impl.sanitize(value) != value: + errors._raise_err(errors.ERR_INVALID_NETWORK_NAME, name="osuser") + self._impl.osuser = value + + @property + def driver_name(self) -> str: + """ + This read-write attribute is a string recorded by Oracle Database + as the name of the driver which originated the connection. This is the + value used in the CLIENT_DRIVER column of the V$SESSION_CONNECT_INFO + view. + + This attribute has an initial value of *None*. It is used as required + in python-oracledb Thick and Thin mode. + + In python-oracledb Thick mode, this attribute is used if the + ``driver_name`` parameter is not specified in + :meth:`oracledb.init_oracle_client()`. In Thin mode, this attribute is + used if the ``driver_name`` parameter is not specified in + :meth:`oracledb.connect()`, :meth:`oracledb.connect_async()`, + :meth:`oracledb.create_pool()`, or + :meth:`oracledb.create_pool_async()`. If the value of this attribute is + *None*, the value set when connecting in python-oracledb Thick mode is + like "python-oracledb thk : " and in Thin mode is like + "python-oracledb thn : ". + """ + return self._impl.driver_name + + @driver_name.setter + def driver_name(self, value: str): + self._impl.driver_name = value + + @property + def thick_mode_dsn_passthrough(self) -> bool: + """ + This read-write attribute determines whether + connection strings passed as the ``dsn`` parameter to + :meth:`oracledb.connect()`, :meth:`oracledb.create_pool()`, + :meth:`oracledb.connect_async()`, and + :meth:`oracledb.create_pool_async()` in python-oracledb Thick mode will + be parsed by Oracle Client libraries or by python-oracledb itself. + + The value of ``thick_mode_dsn_passthrough`` is ignored in + python-oracledb Thin mode, which always parses all connect strings + (including reading a tnsnames.ora file, if required). + + This attribute has an initial value of *True*. + """ + return self._impl.thick_mode_dsn_passthrough + + @thick_mode_dsn_passthrough.setter + def thick_mode_dsn_passthrough(self, value: str): + self._impl.thick_mode_dsn_passthrough = value + + +defaults = Defaults() diff --git a/.venv/lib/python3.9/site-packages/oracledb/driver_mode.py b/.venv/lib/python3.9/site-packages/oracledb/driver_mode.py new file mode 100644 index 0000000..15c93dc --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/driver_mode.py @@ -0,0 +1,140 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2025 Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# driver_mode.py +# +# Contains a simple method for checking and returning which mode the driver is +# currently using. The driver only supports creating connections and pools with +# either the thin implementation or the thick implementation, not both +# simultaneously. +# ----------------------------------------------------------------------------- + +import threading + +from . import errors + + +# The DriverModeHandler class is used to manage which mode the driver is using. +# +# The "thin_mode" flag contains the current state: +# None: neither thick nor thin implementation has been used yet +# False: thick implementation is being used +# True: thin implementation is being used +# +# The "requested_thin_mode" flag is set to the mode that is being requested: +# False: thick implementation is being initialized +# True: thin implementation is being initialized +class DriverModeManager: + """ + Manages the mode the driver is using. The "thin_mode" flag contains the + current state: + None: neither thick nor thin implementation has been used yet + False: thick implementation is being used + True: thin implementation is being used + The "requested_thin_mode" is set to the mode that is being requested, but + only while initialization is taking place (otherwise, it contains the value + None): + False: thick implementation is being initialized + True: thin implementation is being initialized + The condition is used to ensure that only one thread is performing + initialization. + """ + + def __init__(self): + self.thin_mode = None + self.requested_thin_mode = None + self.condition = threading.Condition() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, exc_tb): + with self.condition: + if ( + exc_type is None + and exc_value is None + and exc_tb is None + and self.requested_thin_mode is not None + ): + self.thin_mode = self.requested_thin_mode + self.requested_thin_mode = None + self.condition.notify() + + @property + def thin(self): + if self.requested_thin_mode is not None: + return self.requested_thin_mode + return self.thin_mode + + +manager = DriverModeManager() + + +def get_manager(requested_thin_mode=None): + """ + Returns the manager, but only after ensuring that no other threads are + attempting to initialize the mode. + """ + with manager.condition: + if manager.thin_mode is None: + if manager.requested_thin_mode is not None: + manager.condition.wait() + if manager.thin_mode is None: + if requested_thin_mode is None: + manager.requested_thin_mode = True + else: + manager.requested_thin_mode = requested_thin_mode + elif ( + requested_thin_mode is not None + and requested_thin_mode != manager.thin_mode + ): + if requested_thin_mode: + errors._raise_err(errors.ERR_THICK_MODE_ENABLED) + else: + errors._raise_err(errors.ERR_THIN_CONNECTION_ALREADY_CREATED) + return manager + + +def is_thin_mode() -> bool: + """ + Returns a boolean indicating if python-oracledb is in Thin mode. + + Immediately after python-oracledb is imported, this function will return + *True* indicating that python-oracledb defaults to Thin mode. If a call to + :func:`oracledb.init_oracle_client()` returns successfully, then a + subsequent call to ``is_thin_mode()`` will return False indicating that + Thick mode is enabled. Once the first standalone connection or connection + pool is created, or a successful call to ``oracledb.init_oracle_client()`` + is made, or :meth:`oracledb.enable_thin_mode()` is called, then + python-oracledb’s mode is fixed and the value returned by + ``is_thin_mode()`` will never change for the lifetime of the process. + + The attribute :attr:`Connection.thin` can be used to check a connection's + mode. The attribute :attr:`ConnectionPool.thin` can be used to check a + pool's mode. + """ + if manager.thin_mode is not None: + return manager.thin_mode + return True diff --git a/.venv/lib/python3.9/site-packages/oracledb/dsn.py b/.venv/lib/python3.9/site-packages/oracledb/dsn.py new file mode 100644 index 0000000..13bb31c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/dsn.py @@ -0,0 +1,81 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# dsn.py +# +# Contains makedsn(), a method available for backwards compatibility with +# cx_Oracle. Use of the ConnectParams class or the keyword arguments to +# connect() and create_pool() is recommended instead. +# ----------------------------------------------------------------------------- + +from . import errors + + +def _check_arg(name: str, value: str) -> None: + """ + Checks the argument to ensure that it does not contain (, ) or = as these + characters are not permitted within connect strings. + """ + if "(" in value or ")" in value or "=" in value: + errors._raise_err(errors.ERR_INVALID_MAKEDSN_ARG, name=name) + + +def makedsn( + host: str, + port: int, + sid: str = None, + service_name: str = None, + region: str = None, + sharding_key: str = None, + super_sharding_key: str = None, +) -> str: + """ + Returns a string suitable for use as the ``dsn`` parameter for + :meth:`~oracledb.connect()`. This string is identical to the strings that + are defined by the Oracle names server or defined in the ``tnsnames.ora`` + file. + """ + connect_data_parts = [] + _check_arg("host", host) + if service_name is not None: + _check_arg("service_name", service_name) + connect_data_parts.append(f"(SERVICE_NAME={service_name})") + elif sid is not None: + _check_arg("sid", sid) + connect_data_parts.append(f"(SID={sid})") + if region is not None: + _check_arg("region", region) + connect_data_parts.append(f"(REGION={region})") + if sharding_key is not None: + _check_arg("sharding_key", sharding_key) + connect_data_parts.append(f"(SHARDING_KEY={sharding_key})") + if super_sharding_key is not None: + _check_arg("super_sharding_key", super_sharding_key) + connect_data_parts.append(f"(SUPER_SHARDING_KEY={super_sharding_key})") + connect_data = "".join(connect_data_parts) + return ( + f"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={host})" + f"(PORT={port}))(CONNECT_DATA={connect_data}))" + ) diff --git a/.venv/lib/python3.9/site-packages/oracledb/end_user_security_context.py b/.venv/lib/python3.9/site-packages/oracledb/end_user_security_context.py new file mode 100644 index 0000000..c82e903 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/end_user_security_context.py @@ -0,0 +1,92 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# end_user_security_context.py +# +# Contains the methods required to create the end user security context. +# ----------------------------------------------------------------------------- + +from typing import Dict, List, Optional, Tuple, Union +from . import thin_impl + + +def create_end_user_security_context( + end_user_identity: Union[str, Tuple[str, str], List[str]], + database_access_token: str, + data_roles: Optional[List[str]] = None, + attributes: Optional[Dict] = None, +) -> thin_impl.EndUserSecurityContextImpl: + """ + Creates a new end user security context that contains the identity and + authorization details. + + The ``end_user_identity`` parameter can be a string, a two-tuple or a + two-item list, and specifies the unique identifier of an end user. For OCI + IAM or Microsoft Entra ID users, this parameter must be a string containing + the token issued by these IAMs after user authentication. For database + managed users, this parameter must be a two-tuple or two-item list + containing the database user name and key. + + The ``database_access_token`` parameter is a string containing the security + token issued by OCI IAM or Entra ID that authorizes an application to + access Oracle Database. This can either be an On-Behalf-Of (OBO) token or a + Client Credentials token. + + The ``data_roles`` parameter is a list containing the names of data roles + granted to the application or local database user. + + The ``attributes`` parameter is a dictionary containing the attribute-value + pairs of the end user context attributes. + """ + end_user_token = end_user_name = key = None + + if isinstance(end_user_identity, str) and end_user_identity: + end_user_token = end_user_identity + elif ( + isinstance(end_user_identity, (tuple, list)) + and len(end_user_identity) == 2 + and all( + isinstance(value, str) and value for value in end_user_identity + ) + ): + end_user_name, key = end_user_identity + else: + raise ValueError( + "end_user_identity must be a token string or a tuple/list of " + "(end_user_name, key)." + ) + + if not isinstance(database_access_token, str) or not database_access_token: + raise ValueError("database_access_token must be a non-empty string.") + + cls = thin_impl.EndUserSecurityContextImpl + return cls.create_end_user_security_context( + end_user_token, + end_user_name, + key, + database_access_token, + data_roles, + attributes, + ) diff --git a/.venv/lib/python3.9/site-packages/oracledb/enums.py b/.venv/lib/python3.9/site-packages/oracledb/enums.py new file mode 100644 index 0000000..64ad212 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/enums.py @@ -0,0 +1,76 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2024, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# enums.py +# +# Contains the enumerations of various constants used throughout the package. +# ----------------------------------------------------------------------------- + +import enum + +from . import base_impl + + +class AuthMode(enum.IntFlag): + DEFAULT = base_impl.AUTH_MODE_DEFAULT + PRELIM = base_impl.AUTH_MODE_PRELIM + SYSASM = base_impl.AUTH_MODE_SYSASM + SYSBKP = base_impl.AUTH_MODE_SYSBKP + SYSDBA = base_impl.AUTH_MODE_SYSDBA + SYSDGD = base_impl.AUTH_MODE_SYSDGD + SYSKMT = base_impl.AUTH_MODE_SYSKMT + SYSOPER = base_impl.AUTH_MODE_SYSOPER + SYSRAC = base_impl.AUTH_MODE_SYSRAC + + +class PipelineOpType(enum.IntFlag): + CALL_FUNC = base_impl.PIPELINE_OP_TYPE_CALL_FUNC + CALL_PROC = base_impl.PIPELINE_OP_TYPE_CALL_PROC + COMMIT = base_impl.PIPELINE_OP_TYPE_COMMIT + EXECUTE = base_impl.PIPELINE_OP_TYPE_EXECUTE + EXECUTE_MANY = base_impl.PIPELINE_OP_TYPE_EXECUTE_MANY + FETCH_ALL = base_impl.PIPELINE_OP_TYPE_FETCH_ALL + FETCH_MANY = base_impl.PIPELINE_OP_TYPE_FETCH_MANY + FETCH_ONE = base_impl.PIPELINE_OP_TYPE_FETCH_ONE + + +class PoolGetMode(enum.IntEnum): + FORCEGET = base_impl.POOL_GETMODE_FORCEGET + NOWAIT = base_impl.POOL_GETMODE_NOWAIT + TIMEDWAIT = base_impl.POOL_GETMODE_TIMEDWAIT + WAIT = base_impl.POOL_GETMODE_WAIT + + +class Purity(enum.IntEnum): + DEFAULT = base_impl.PURITY_DEFAULT + NEW = base_impl.PURITY_NEW + SELF = base_impl.PURITY_SELF + + +class VectorFormat(enum.IntEnum): + BINARY = base_impl.VECTOR_FORMAT_BINARY + FLOAT32 = base_impl.VECTOR_FORMAT_FLOAT32 + FLOAT64 = base_impl.VECTOR_FORMAT_FLOAT64 + INT8 = base_impl.VECTOR_FORMAT_INT8 diff --git a/.venv/lib/python3.9/site-packages/oracledb/errors.py b/.venv/lib/python3.9/site-packages/oracledb/errors.py new file mode 100644 index 0000000..5980c75 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/errors.py @@ -0,0 +1,1058 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# errors.py +# +# Contains the _Error class and all of the errors that are raised explicitly by +# the package. Oracle Database errors and ODPI-C errors (when using thick mode) +# are only referenced here if they are transformed into package specific +# errors. +# ----------------------------------------------------------------------------- + +import re + +from .driver_mode import is_thin_mode +from . import exceptions + + +class _Error: + """ + Error class which is used for all errors that are raised by the driver. + """ + + def __init__( + self, + message: str = None, + context: str = None, + isrecoverable: bool = False, + iswarning: bool = False, + code: int = 0, + offset: int = 0, + ) -> None: + self.message = message + self.context = context + self.isrecoverable = isrecoverable + self.iswarning = iswarning + self.code = code + self.offset = offset + self.is_session_dead = False + self.full_code = "" + self.exc_type = exceptions.DatabaseError + self._make_adjustments() + + def _make_adjustments(self): + """ + Make adjustments to the error, if needed, and calculate the full_code + attribute. + """ + if self.message is not None: + pos = self.message.find(":") + if pos > 0: + self.full_code = self.message[:pos] + + # add Oracle Database Error Help Portal URL for database error + # messages, but only in thin mode since this is done + # automatically in thick mode with Oracle Client version 23 and + # higher + if ( + self.code != 0 + and (self.code < 20000 or self.code >= 21000) + and is_thin_mode() + ): + self.message = ( + self.message + + "\n" + + "Help: https://docs.oracle.com/error-help/db/ora-" + + f"{self.code:05}/" + ) + elif self.full_code in ERR_TROUBLESHOOTING_AVAILABLE: + self.message = ( + self.message + + "\n" + + "Help: https://python-oracledb.readthedocs.io/en/" + + "latest/user_guide/troubleshooting.html#" + + self.full_code.lower() + ) + + # transform Oracle and ODPI-C specific error codes to driver errors, + # if applicable + if self.code != 0 or self.full_code.startswith("DPI-"): + args = {} + if self.code != 0: + driver_error_info = ERR_ORACLE_ERROR_XREF.get(self.code) + else: + error_num = int(self.full_code[4:]) + driver_error_info = ERR_DPI_ERROR_XREF.get(error_num) + if driver_error_info is not None: + if isinstance(driver_error_info, tuple): + driver_error_num, pattern = driver_error_info + match = re.search(pattern, self.message) + args = {} if match is None else match.groupdict() + else: + driver_error_num = driver_error_info + driver_error = _get_error_text(driver_error_num, **args) + self.message = f"{driver_error}\n{self.message}" + self.full_code = f"{ERR_PREFIX}-{driver_error_num:04}" + + # determine exception class to use when raising this error + # also determine whether error is recoverable and whether the session + # is deemed "dead" + if self.full_code.startswith("DPY-"): + driver_error_num = int(self.full_code[4:]) + if driver_error_num == ERR_CONNECTION_CLOSED: + self.is_session_dead = self.isrecoverable = True + self.exc_type = ERR_EXCEPTION_TYPES[driver_error_num // 1000] + elif self.code != 0: + if self.code in ERR_RECOVERABLE_ERROR_CODES: + self.isrecoverable = True + if self.code in ERR_INTEGRITY_ERROR_CODES: + self.exc_type = exceptions.IntegrityError + elif self.code in ERR_INTERFACE_ERROR_CODES: + self.exc_type = exceptions.InterfaceError + elif self.code in ERR_OPERATIONAL_ERROR_CODES: + self.exc_type = exceptions.OperationalError + + def __str__(self): + return self.message + + +def _get_error_text(error_num: int, **args) -> str: + """ + Return the error text for the driver specific error number. + """ + message_format = ERR_MESSAGE_FORMATS.get(error_num) + if message_format is None: + message_format = "missing error {error_num}" + args = dict(error_num=error_num) + error_num = ERR_MISSING_ERROR + try: + message = message_format.format(**args) + except KeyError: + message = ( + message_format + + "\nWrong arguments to message format:\n" + + repr(args) + ) + return f"{ERR_PREFIX}-{error_num:04}: {message}" + + +def _create_err( + error_num: int, + context_error_message: str = None, + cause: Exception = None, + **args, +) -> _Error: + """ + Returns a driver specific error object for the specified error number and + supplied arguments. + """ + message = _get_error_text(error_num, **args) + if context_error_message is None and cause is not None: + context_error_message = str(cause) + if context_error_message is not None: + message = f"{message}\n{context_error_message}" + return _Error(message) + + +def _create_warning(error_num: int, **args) -> _Error: + """ + Returns a warning error object for the specified error number and supplied + arguments. + """ + message = _get_error_text(error_num, **args) + return _Error(message, iswarning=True) + + +def _raise_err( + error_num: int, + context_error_message: str = None, + cause: Exception = None, + **args, +) -> None: + """ + Raises a driver specific exception from the specified error number and + supplied arguments. + """ + error = _create_err(error_num, context_error_message, cause, **args) + raise error.exc_type(error) from cause + + +def _raise_not_supported(feature: str) -> None: + """ + Raises an exception that the specified feature is not supported. This is + used as the default implementation of all functions for the implementation + objects. + """ + driver_type = "thick" if is_thin_mode() else "thin" + _raise_err( + ERR_FEATURE_NOT_SUPPORTED, feature=feature, driver_type=driver_type + ) + + +# prefix used for all error messages +ERR_PREFIX = "DPY" + +# error numbers that result in InterfaceError +ERR_MISSING_ERROR = 1000 +ERR_NOT_CONNECTED = 1001 +ERR_POOL_NOT_OPEN = 1002 +ERR_NOT_A_QUERY = 1003 +ERR_NO_STATEMENT_EXECUTED = 1004 +ERR_POOL_HAS_BUSY_CONNECTIONS = 1005 +ERR_CURSOR_NOT_OPEN = 1006 +ERR_NOT_SUBSCRIBED = 1007 + +# error numbers that result in ProgrammingError +ERR_MESSAGE_HAS_NO_PAYLOAD = 2000 +ERR_NO_STATEMENT = 2001 +ERR_NO_STATEMENT_PREPARED = 2002 +ERR_WRONG_EXECUTE_PARAMETERS_TYPE = 2003 +ERR_WRONG_EXECUTEMANY_PARAMETERS_TYPE = 2004 +ERR_ARGS_AND_KEYWORD_ARGS = 2005 +ERR_MIXED_POSITIONAL_AND_NAMED_BINDS = 2006 +ERR_EXPECTING_TYPE = 2007 +ERR_WRONG_OBJECT_TYPE = 2008 +ERR_WRONG_SCROLL_MODE = 2009 +ERR_MIXED_ELEMENT_TYPES = 2010 +ERR_WRONG_ARRAY_DEFINITION = 2011 +ERR_ARGS_MUST_BE_LIST_OR_TUPLE = 2012 +ERR_KEYWORD_ARGS_MUST_BE_DICT = 2013 +ERR_DUPLICATED_PARAMETER = 2014 +ERR_EXPECTING_VAR = 2015 +ERR_INCORRECT_VAR_ARRAYSIZE = 2016 +ERR_LIBRARY_ALREADY_INITIALIZED = 2017 +ERR_WALLET_FILE_MISSING = 2018 +ERR_THIN_CONNECTION_ALREADY_CREATED = 2019 +ERR_INVALID_MAKEDSN_ARG = 2020 +ERR_INIT_ORACLE_CLIENT_NOT_CALLED = 2021 +ERR_INVALID_OCI_ATTR_TYPE = 2022 +ERR_INVALID_CONN_CLASS = 2023 +ERR_INVALID_CONNECT_PARAMS = 2025 +ERR_INVALID_POOL_CLASS = 2026 +ERR_INVALID_POOL_PARAMS = 2027 +ERR_EXPECTING_LIST_FOR_ARRAY_VAR = 2028 +ERR_HTTPS_PROXY_REQUIRES_TCPS = 2029 +ERR_INVALID_LOB_OFFSET = 2030 +ERR_INVALID_ACCESS_TOKEN_PARAM = 2031 +ERR_INVALID_ACCESS_TOKEN_RETURNED = 2032 +ERR_EXPIRED_ACCESS_TOKEN = 2033 +ERR_ACCESS_TOKEN_REQUIRES_TCPS = 2034 +ERR_INVALID_OBJECT_TYPE_NAME = 2035 +ERR_OBJECT_IS_NOT_A_COLLECTION = 2036 +ERR_MISSING_TYPE_NAME_FOR_OBJECT_VAR = 2037 +ERR_INVALID_COLL_INDEX_GET = 2038 +ERR_INVALID_COLL_INDEX_SET = 2039 +ERR_EXECUTE_MODE_ONLY_FOR_DML = 2040 +ERR_MISSING_ENDING_SINGLE_QUOTE = 2041 +ERR_MISSING_ENDING_DOUBLE_QUOTE = 2042 +ERR_DBOBJECT_ATTR_MAX_SIZE_VIOLATED = 2043 +ERR_DBOBJECT_ELEMENT_MAX_SIZE_VIOLATED = 2044 +ERR_INVALID_ARRAYSIZE = 2045 +ERR_CURSOR_HAS_BEEN_CLOSED = 2046 +ERR_INVALID_LOB_AMOUNT = 2047 +ERR_DML_RETURNING_DUP_BINDS = 2048 +ERR_MISSING_ADDRESS = 2049 +ERR_INVALID_TPC_BEGIN_FLAGS = 2050 +ERR_INVALID_TPC_END_FLAGS = 2051 +ERR_MISMATCHED_TOKEN = 2052 +ERR_THICK_MODE_ENABLED = 2053 +ERR_NAMED_POOL_MISSING = 2054 +ERR_NAMED_POOL_EXISTS = 2055 +ERR_PROTOCOL_HANDLER_FAILED = 2056 +ERR_PASSWORD_TYPE_HANDLER_FAILED = 2057 +ERR_PLAINTEXT_PASSWORD_IN_CONFIG = 2058 +ERR_MISSING_CONNECT_DESCRIPTOR = 2059 +ERR_ARROW_C_API_ERROR = 2060 +ERR_PARAMS_HOOK_HANDLER_FAILED = 2061 +ERR_PAYLOAD_CANNOT_BE_ENQUEUED = 2062 +ERR_SCROLL_OUT_OF_RESULT_SET = 2063 +ERR_POOL_MAX_LESS_THAN_MIN = 2064 +ERR_ARROW_SPARSE_VECTOR_NOT_ALLOWED = 2065 +ERR_EMPTY_STATEMENT = 2066 +ERR_WRONG_DIRECT_PATH_DATA_TYPE = 2067 +ERR_SCROLL_NOT_SUPPORTED = 2068 +ERR_WRONG_REQUESTED_SCHEMA_LENGTH = 2069 +ERR_INVALID_CALLABLE_FUN = 2070 +ERR_REGISTER_QUERY_ON_AQ_SUBSCR = 2071 +ERR_INVALID_END_USER_SECURITY_CONTEXT_LENGTH = 2072 +ERR_END_USER_SECURITY_CONTEXT_REQUIRES_TCPS = 2073 +ERR_NAME_HAS_EMBEDDED_QUOTES = 2074 +ERR_PARAM_SIZE_TOO_LARGE = 2075 + +# error numbers that result in NotSupportedError +ERR_TIME_NOT_SUPPORTED = 3000 +ERR_FEATURE_NOT_SUPPORTED = 3001 +ERR_PYTHON_VALUE_NOT_SUPPORTED = 3002 +ERR_PYTHON_TYPE_NOT_SUPPORTED = 3003 +ERR_UNSUPPORTED_TYPE_SET = 3004 +ERR_ARRAYS_OF_ARRAYS = 3005 +ERR_ORACLE_TYPE_NOT_SUPPORTED = 3006 +ERR_DB_TYPE_NOT_SUPPORTED = 3007 +ERR_UNSUPPORTED_INBAND_NOTIFICATION = 3008 +ERR_SELF_BIND_NOT_SUPPORTED = 3009 +ERR_SERVER_VERSION_NOT_SUPPORTED = 3010 +ERR_NCHAR_CS_NOT_SUPPORTED = 3012 +ERR_UNSUPPORTED_PYTHON_TYPE_FOR_DB_TYPE = 3013 +ERR_LOB_OF_WRONG_TYPE = 3014 +ERR_UNSUPPORTED_VERIFIER_TYPE = 3015 +ERR_NO_CRYPTOGRAPHY_PACKAGE = 3016 +ERR_ORACLE_TYPE_NAME_NOT_SUPPORTED = 3017 +ERR_TDS_TYPE_NOT_SUPPORTED = 3018 +ERR_OSON_NODE_TYPE_NOT_SUPPORTED = 3019 +ERR_OSON_FIELD_NAME_LIMITATION = 3020 +ERR_OSON_VERSION_NOT_SUPPORTED = 3021 +ERR_NAMED_TIMEZONE_NOT_SUPPORTED = 3022 +ERR_VECTOR_VERSION_NOT_SUPPORTED = 3023 +ERR_VECTOR_FORMAT_NOT_SUPPORTED = 3024 +ERR_OPERATION_NOT_SUPPORTED_ON_BFILE = 3025 +ERR_OPERATION_ONLY_SUPPORTED_ON_BFILE = 3026 +ERR_CURSOR_DIFF_CONNECTION = 3027 +ERR_UNSUPPORTED_PIPELINE_OPERATION = 3028 +ERR_INVALID_NETWORK_NAME = 3029 +ERR_ARROW_UNSUPPORTED_DATA_TYPE = 3030 +ERR_ARROW_UNSUPPORTED_VECTOR_FORMAT = 3031 +ERR_ARROW_UNSUPPORTED_DATA_FORMAT = 3032 +ERR_ARROW_UNSUPPORTED_CHILD_DATA_FORMAT = 3033 +ERR_SESSIONLESS_DIFFERING_METHODS = 3034 +ERR_SESSIONLESS_ALREADY_ACTIVE = 3035 +ERR_SESSIONLESS_INACTIVE = 3036 +ERR_UNSUPPORTED_ARROW_TYPE = 3037 +ERR_CANNOT_CONVERT_TO_ARROW_TYPE = 3038 +ERR_CANNOT_CONVERT_FROM_ARROW_TYPE = 3039 +ERR_DB_CS_NOT_SUPPORTED = 3040 +ERR_UNSUPPORTED_DEEP_DATA_SECURITY_FEATURE = 3041 + +# error numbers that result in DatabaseError +ERR_TNS_ENTRY_NOT_FOUND = 4000 +ERR_NO_CREDENTIALS = 4001 +ERR_COLUMN_TRUNCATED = 4002 +ERR_ORACLE_NUMBER_NO_REPR = 4003 +ERR_INVALID_NUMBER = 4004 +ERR_POOL_NO_CONNECTION_AVAILABLE = 4005 +ERR_ARRAY_DML_ROW_COUNTS_NOT_ENABLED = 4006 +ERR_INCONSISTENT_DATATYPES = 4007 +ERR_INVALID_BIND_NAME = 4008 +ERR_WRONG_NUMBER_OF_POSITIONAL_BINDS = 4009 +ERR_MISSING_BIND_VALUE = 4010 +ERR_CONNECTION_CLOSED = 4011 +ERR_NUMBER_WITH_INVALID_EXPONENT = 4012 +ERR_NUMBER_STRING_OF_ZERO_LENGTH = 4013 +ERR_NUMBER_STRING_TOO_LONG = 4014 +ERR_NUMBER_WITH_EMPTY_EXPONENT = 4015 +ERR_CONTENT_INVALID_AFTER_NUMBER = 4016 +ERR_INVALID_CONNECT_DESCRIPTOR = 4017 +ERR_CANNOT_PARSE_CONNECT_STRING = 4018 +ERR_INVALID_REDIRECT_DATA = 4019 +ERR_INVALID_PROTOCOL = 4021 +ERR_INVALID_ENUM_VALUE = 4022 +ERR_CALL_TIMEOUT_EXCEEDED = 4024 +ERR_INVALID_REF_CURSOR = 4025 +ERR_MISSING_FILE = 4026 +ERR_NO_CONFIG_DIR = 4027 +ERR_INVALID_SERVER_TYPE = 4028 +ERR_TOO_MANY_BATCH_ERRORS = 4029 +ERR_IFILE_CYCLE_DETECTED = 4030 +ERR_INVALID_VECTOR = 4031 +ERR_INVALID_SSL_VERSION = 4032 +ERR_EXCEEDED_IDLE_TIME = 4033 +ERR_INVALID_PASSWORD_TYPE = 4034 +ERR_INVALID_SERVER_RESPONSE = 4035 +ERR_CANNOT_CONVERT_TO_ARROW_INTEGER = 4036 +ERR_CANNOT_CONVERT_TO_ARROW_DOUBLE = 4037 +ERR_INVALID_INTEGER = 4038 +ERR_CANNOT_CONVERT_TO_ARROW_FLOAT = 4039 +ERR_ARROW_FIXED_SIZE_BINARY_VIOLATED = 4040 +ERR_DPL_TOO_MUCH_DATA = 4041 + +# error numbers that result in InternalError +ERR_MESSAGE_TYPE_UNKNOWN = 5000 +ERR_BUFFER_LENGTH_INSUFFICIENT = 5001 +ERR_INTEGER_TOO_LARGE = 5002 +ERR_UNEXPECTED_NEGATIVE_INTEGER = 5003 +ERR_UNEXPECTED_DATA = 5004 +ERR_UNEXPECTED_REFUSE = 5005 +ERR_UNEXPECTED_END_OF_DATA = 5006 +ERR_UNEXPECTED_XML_TYPE = 5007 +ERR_UNKNOWN_SERVER_PIGGYBACK = 5009 +ERR_UNKNOWN_TRANSACTION_STATE = 5010 +ERR_UNEXPECTED_PIPELINE_FAILURE = 5011 +ERR_NOT_IMPLEMENTED = 5012 +ERR_INTERNAL_CREATION_REQUIRED = 5013 +ERR_UNKNOWN_TRANSACTION_SYNC_VERSION = 5014 +ERR_NUMBER_TOO_LARGE = 5015 + +# error numbers that result in OperationalError +ERR_LISTENER_REFUSED_CONNECTION = 6000 +ERR_INVALID_SERVICE_NAME = 6001 +ERR_INVALID_SERVER_CERT_DN = 6002 +ERR_INVALID_SID = 6003 +ERR_PROXY_FAILURE = 6004 +ERR_CONNECTION_FAILED = 6005 +ERR_INVALID_SERVER_NAME = 6006 +ERR_SUBSCR_FAILED = 6007 + +# error numbers that result in Warning +WRN_COMPILATION_ERROR = 7000 + +# error numbers that result in DataError +ERR_VALUE_TOO_LARGE = 8000 +ERR_NULLS_NOT_ALLOWED = 8001 +ERR_ARROW_DATA_STRUCTURE_OVERFLOW = 8002 + +# Oracle error number cross reference +ERR_ORACLE_ERROR_XREF = { + 22: ERR_CONNECTION_CLOSED, + 28: ERR_CONNECTION_CLOSED, + 31: ERR_CONNECTION_CLOSED, + 45: ERR_CONNECTION_CLOSED, + 378: ERR_CONNECTION_CLOSED, + 600: ERR_CONNECTION_CLOSED, + 602: ERR_CONNECTION_CLOSED, + 603: ERR_CONNECTION_CLOSED, + 609: ERR_CONNECTION_CLOSED, + 1005: ERR_NO_CREDENTIALS, + 1012: ERR_CONNECTION_CLOSED, + 1041: ERR_CONNECTION_CLOSED, + 1043: ERR_CONNECTION_CLOSED, + 1089: ERR_CONNECTION_CLOSED, + 1092: ERR_CONNECTION_CLOSED, + 1740: ERR_MISSING_ENDING_DOUBLE_QUOTE, + 1756: ERR_MISSING_ENDING_SINGLE_QUOTE, + 2396: ERR_CONNECTION_CLOSED, + 3113: ERR_CONNECTION_CLOSED, + 3114: ERR_CONNECTION_CLOSED, + 3122: ERR_CONNECTION_CLOSED, + 3135: ERR_CONNECTION_CLOSED, + 12153: ERR_CONNECTION_CLOSED, + 12537: ERR_CONNECTION_CLOSED, + 12547: ERR_CONNECTION_CLOSED, + 12570: ERR_CONNECTION_CLOSED, + 12583: ERR_CONNECTION_CLOSED, + 22165: ( + ERR_INVALID_COLL_INDEX_SET, + r"index \[(?P\d+)\] must be in the range of " + r"\[(?P\d+)\] to \[(?P\d+)\]", + ), + 22303: (ERR_INVALID_OBJECT_TYPE_NAME, r'type "(?P[^"]*"."[^"]*)"'), + 24422: ERR_POOL_HAS_BUSY_CONNECTIONS, + 24349: ERR_ARRAY_DML_ROW_COUNTS_NOT_ENABLED, + 24457: ERR_POOL_NO_CONNECTION_AVAILABLE, + 24459: ERR_POOL_NO_CONNECTION_AVAILABLE, + 24496: ERR_POOL_NO_CONNECTION_AVAILABLE, + 24338: ERR_INVALID_REF_CURSOR, + 24344: WRN_COMPILATION_ERROR, + 26202: ERR_SESSIONLESS_INACTIVE, + 26211: ERR_SESSIONLESS_DIFFERING_METHODS, + 26216: ERR_SESSIONLESS_ALREADY_ACTIVE, + 27146: ERR_CONNECTION_CLOSED, + 28511: ERR_CONNECTION_CLOSED, + 29970: ERR_NOT_SUBSCRIBED, + 38902: ERR_TOO_MANY_BATCH_ERRORS, + 56600: ERR_CONNECTION_CLOSED, +} + +# ODPI-C error number cross reference +ERR_DPI_ERROR_XREF = { + 1010: ERR_NOT_CONNECTED, + 1024: (ERR_INVALID_COLL_INDEX_GET, r"at index (?P\d+) does"), + 1027: ERR_SCROLL_OUT_OF_RESULT_SET, + 1043: ERR_INVALID_NUMBER, + 1044: ERR_ORACLE_NUMBER_NO_REPR, + 1063: ERR_EXECUTE_MODE_ONLY_FOR_DML, + 1067: (ERR_CALL_TIMEOUT_EXCEEDED, r"call timeout of (?P\d+) ms"), + 1080: ERR_CONNECTION_CLOSED, + 1087: ERR_NOT_A_QUERY, +} + +# Oracle error codes that result in IntegrityError exceptions +ERR_INTEGRITY_ERROR_CODES = [ + 1, # unique constraint violated + 1400, # cannot insert NULL + 1438, # value larger than specified precision + 2290, # check constraint violated + 2291, # integrity constraint violated - parent key not found + 2292, # integrity constraint violated - child record found + 21525, # attribute or collection element violated its constraints + 40479, # internal JSON serializer error +] + +# Oracle error codes that result in InterfaceError exceptions +ERR_INTERFACE_ERROR_CODES = [ + 24422, # error occurred while trying to destroy the Session Pool +] + +# Oracle error codes that result in OperationalError exceptions +ERR_OPERATIONAL_ERROR_CODES = [ + 22, # invalid session ID; access denied + 378, # buffer pools cannot be created as specified + 600, # internal error code + 602, # internal programming exception + 603, # ORACLE server session terminated by fatal error + 604, # error occurred at recursive SQL level + 609, # could not attach to incoming connection + 1012, # not logged on + 1013, # user requested cancel of current operation + 1033, # ORACLE initialization or shutdown in progress + 1034, # ORACLE not available + 1041, # internal error. hostdef extension doesn't exist + 1043, # user side memory corruption + 1089, # immediate shutdown or close in progress + 1090, # shutdown in progress - connection is not permitted + 1092, # ORACLE instance terminated. Disconnection forced + 3111, # break received on communication channel + 3113, # end-of-file on communication channel + 3114, # not connected to ORACLE + 3122, # attempt to close ORACLE-side window on user side + 3135, # connection lost contact + 12153, # TNS:not connected + 12203, # TNS:unable to connect to destination + 12500, # TNS:listener failed to start a dedicated server process + 12571, # TNS:packet writer failure + 27146, # post/wait initialization failed + 28511, # lost RPC connection to heterogeneous remote agent +] + +# Oracle error codes that are deemed recoverable +# NOTE: this does not include the errors that are mapped to +# ERR_CONNECTION_CLOSED since those are all deemed recoverable +ERR_RECOVERABLE_ERROR_CODES = [ + 376, # file %s cannot be read at this time + 1033, # ORACLE initialization or shutdown in progress + 1034, # the Oracle instance is not available for use + 1090, # shutdown in progress + 1115, # IO error reading block from file %s (block # %s) + 12514, # Service %s is not registered with the listener + 12571, # TNS:packet writer failure + 12757, # instance does not currently know of requested service + 16456, # missing or invalid value +] + +# driver error message exception types (multiples of 1000) +ERR_EXCEPTION_TYPES = { + 1: exceptions.InterfaceError, + 2: exceptions.ProgrammingError, + 3: exceptions.NotSupportedError, + 4: exceptions.DatabaseError, + 5: exceptions.InternalError, + 6: exceptions.OperationalError, + 7: exceptions.Warning, + 8: exceptions.DataError, +} + +# error messages that have a troubleshooting section available +ERR_TROUBLESHOOTING_AVAILABLE = set( + [ + "DPI-1047", # Oracle Client library cannot be loaded + "DPI-1072", # Oracle Client library version is unsupported + "DPY-3010", # connections to Oracle Database version not supported + "DPY-3015", # password verifier type is not supported + "DPY-4011", # the database or network closed the connection + ] +) + +# error message formats +ERR_MESSAGE_FORMATS = { + ERR_ACCESS_TOKEN_REQUIRES_TCPS: ( + "access_token requires use of the tcps protocol" + ), + ERR_ARGS_AND_KEYWORD_ARGS: ( + "expecting positional arguments or keyword arguments, not both" + ), + ERR_ARGS_MUST_BE_LIST_OR_TUPLE: "arguments must be a list or tuple", + ERR_ARRAY_DML_ROW_COUNTS_NOT_ENABLED: ( + "array DML row counts mode is not enabled" + ), + ERR_ARRAYS_OF_ARRAYS: "arrays of arrays are not supported", + ERR_ARROW_C_API_ERROR: ( + "Apache Arrow C Data Interface operation failed with error code {code}" + ), + ERR_ARROW_DATA_STRUCTURE_OVERFLOW: ( + "Apache Arrow C Data structure overflow detected. A larger structure " + "is needed." + ), + ERR_ARROW_FIXED_SIZE_BINARY_VIOLATED: ( + "value of length {actual_len} does not match the Apache Arrow fixed " + "size binary length of {fixed_size_len}" + ), + ERR_ARROW_SPARSE_VECTOR_NOT_ALLOWED: ( + "Apache Arrow format does not support sparse vectors with flexible " + "dimensions" + ), + ERR_ARROW_UNSUPPORTED_CHILD_DATA_FORMAT: ( + "conversion from Apache Arrow list with child format " + '"{schema_format}" to Oracle Database vector is not supported' + ), + ERR_ARROW_UNSUPPORTED_DATA_FORMAT: ( + 'conversion from Apache Arrow format "{schema_format}" to Oracle ' + "Database is not supported" + ), + ERR_ARROW_UNSUPPORTED_DATA_TYPE: ( + "conversion from Oracle Database type {db_type_name} to Apache " + "Arrow format is not supported" + ), + ERR_ARROW_UNSUPPORTED_VECTOR_FORMAT: ( + "flexible vector formats are not supported. Only fixed 'FLOAT32', " + "'FLOAT64', 'INT8' or 'BINARY' formats are supported" + ), + ERR_BUFFER_LENGTH_INSUFFICIENT: ( + "internal error: buffer of length {actual_buffer_len} " + "insufficient to hold {required_buffer_len} bytes" + ), + ERR_CALL_TIMEOUT_EXCEEDED: "call timeout of {timeout} ms exceeded", + ERR_CANNOT_CONVERT_FROM_ARROW_TYPE: ( + 'Apache Arrow type "{arrow_type}" cannot be converted to database ' + 'type "{db_type}"' + ), + ERR_CANNOT_CONVERT_TO_ARROW_DOUBLE: ( + "{value} cannot be converted to an Apache Arrow double" + ), + ERR_CANNOT_CONVERT_TO_ARROW_FLOAT: ( + "{value} cannot be converted to an Apache Arrow float" + ), + ERR_CANNOT_CONVERT_TO_ARROW_INTEGER: ( + "{value} cannot be converted to an Apache Arrow integer" + ), + ERR_CANNOT_CONVERT_TO_ARROW_TYPE: ( + 'database type "{db_type}" cannot be converted to Apache Arrow type ' + '"{arrow_type}"' + ), + ERR_CANNOT_PARSE_CONNECT_STRING: 'cannot parse connect string "{data}"', + ERR_COLUMN_TRUNCATED: ( + "column truncated to {col_value_len} {unit}. " + "Untruncated was {actual_len}" + ), + ERR_CONNECTION_CLOSED: "the database or network closed the connection", + ERR_CONNECTION_FAILED: ( + "cannot connect to database (CONNECTION_ID={connection_id})." + ), + ERR_CONTENT_INVALID_AFTER_NUMBER: "invalid number (content after number)", + ERR_CURSOR_DIFF_CONNECTION: ( + "binding a cursor from a different connection is not supported" + ), + ERR_CURSOR_HAS_BEEN_CLOSED: "cursor has been closed by the database", + ERR_CURSOR_NOT_OPEN: "cursor is not open", + ERR_DB_CS_NOT_SUPPORTED: ( + "database character set id {charset_id} is not supported by " + "python-oracledb in thin mode" + ), + ERR_DBOBJECT_ATTR_MAX_SIZE_VIOLATED: ( + "attribute {attr_name} of type {type_name} exceeds its maximum size " + "(actual: {actual_size}, maximum: {max_size})" + ), + ERR_DBOBJECT_ELEMENT_MAX_SIZE_VIOLATED: ( + "element {index} of type {type_name} exceeds its maximum size " + "(actual: {actual_size}, maximum: {max_size})" + ), + ERR_DB_TYPE_NOT_SUPPORTED: 'database type "{name}" is not supported', + ERR_DML_RETURNING_DUP_BINDS: ( + 'the bind variable placeholder ":{name}" cannot be used both before ' + "and after the RETURNING clause in a DML RETURNING statement" + ), + ERR_DPL_TOO_MUCH_DATA: ( + "the maximum size of a Direct Path load has been exceeded" + ), + ERR_DUPLICATED_PARAMETER: ( + '"{deprecated_name}" and "{new_name}" cannot be specified together' + ), + ERR_END_USER_SECURITY_CONTEXT_REQUIRES_TCPS: ( + "end_user_security_context requires use of the tcps protocol" + ), + ERR_EMPTY_STATEMENT: ("an empty statement cannot be executed"), + ERR_EXCEEDED_IDLE_TIME: ( + "the database closed the connection because the connection's idle " + "time has been exceeded" + ), + ERR_EXECUTE_MODE_ONLY_FOR_DML: ( + 'parameters "batcherrors" and "arraydmlrowcounts" may only be ' + "true when used with insert, update, delete and merge statements" + ), + ERR_EXPECTING_LIST_FOR_ARRAY_VAR: ( + "expecting list when setting array variables" + ), + ERR_EXPECTING_TYPE: "expected a type", + ERR_EXPECTING_VAR: ( + "type handler should return None or the value returned by a call " + "to cursor.var()" + ), + ERR_EXPIRED_ACCESS_TOKEN: "access token has expired", + ERR_FEATURE_NOT_SUPPORTED: ( + "{feature} is only supported in python-oracledb {driver_type} mode" + ), + ERR_HTTPS_PROXY_REQUIRES_TCPS: ( + "https_proxy requires use of the tcps protocol" + ), + ERR_IFILE_CYCLE_DETECTED: ( + "file '{including_file_name}' includes file '{included_file_name}', " + "which forms a cycle" + ), + ERR_INCONSISTENT_DATATYPES: ( + "cannot convert from data type {input_type} to {output_type}" + ), + ERR_INCORRECT_VAR_ARRAYSIZE: ( + "variable array size of {var_arraysize} is " + "too small (should be at least {required_arraysize})" + ), + ERR_INIT_ORACLE_CLIENT_NOT_CALLED: ( + "init_oracle_client() must be called first" + ), + ERR_INTEGER_TOO_LARGE: ( + "internal error: read integer of length {length} when expecting " + "integer of no more than length {max_length}" + ), + ERR_INTERNAL_CREATION_REQUIRED: "object may not be created directly", + ERR_INVALID_ACCESS_TOKEN_PARAM: ( + "invalid access token: value must be a string (for OAuth), a " + "2-tuple containing the token and private key strings (for IAM), " + "or a callable that returns a string or 2-tuple" + ), + ERR_INVALID_ACCESS_TOKEN_RETURNED: ( + "invalid access token returned from callable: value must be a " + "string (for OAuth) or a 2-tuple containing the token and private " + "key strings (for IAM)" + ), + ERR_INVALID_ARRAYSIZE: "arraysize must be an integer greater than zero", + ERR_INVALID_BIND_NAME: ( + 'no bind placeholder named ":{name}" was found in the SQL text' + ), + ERR_INVALID_CALLABLE_FUN: "Expected a callable function", + ERR_INVALID_CONN_CLASS: "invalid connection class", + ERR_INVALID_CONNECT_DESCRIPTOR: 'invalid connect descriptor "{data}"', + ERR_INVALID_CONNECT_PARAMS: "invalid connection params", + ERR_INVALID_COLL_INDEX_GET: "element at index {index} does not exist", + ERR_INVALID_COLL_INDEX_SET: ( + "given index {index} must be in the range of {min_index} to " + "{max_index}" + ), + ERR_INVALID_ENUM_VALUE: "invalid value for enumeration {name}: {value}", + ERR_INVALID_END_USER_SECURITY_CONTEXT_LENGTH: ( + "Specified end-user security context exceeds the maximum supported " + "size" + ), + ERR_INVALID_INTEGER: ( + "integer {value} cannot be represented as Apache Arrow type " + "{arrow_type}" + ), + ERR_INVALID_LOB_AMOUNT: "LOB amount must be greater than zero", + ERR_INVALID_LOB_OFFSET: "LOB offset must be greater than zero", + ERR_INVALID_MAKEDSN_ARG: '"{name}" argument contains invalid values', + ERR_INVALID_NETWORK_NAME: ( + '"{name}" includes characters that are not allowed' + ), + ERR_INVALID_NUMBER: "invalid number", + ERR_INVALID_OBJECT_TYPE_NAME: 'invalid object type name: "{name}"', + ERR_INVALID_OCI_ATTR_TYPE: "invalid OCI attribute type {attr_type}", + ERR_INVALID_PASSWORD_TYPE: 'invalid password type "{password_type}"', + ERR_INVALID_POOL_CLASS: "invalid connection pool class", + ERR_INVALID_POOL_PARAMS: "invalid pool params", + ERR_INVALID_PROTOCOL: 'invalid protocol "{protocol}"', + ERR_INVALID_REDIRECT_DATA: "invalid redirect data {data}", + ERR_INVALID_REF_CURSOR: "invalid REF CURSOR: never opened in PL/SQL", + ERR_INVALID_SERVER_CERT_DN: ( + "The distinguished name (DN) on the server certificate does not " + "match the expected value: {expected_dn}" + ), + ERR_INVALID_SERVER_NAME: ( + "The name on the server certificate does not match the expected " + 'value: "{expected_name}"' + ), + ERR_INVALID_SERVER_RESPONSE: ( + "invalid server response to connection request" + ), + ERR_INVALID_SERVER_TYPE: "invalid server_type: {server_type}", + ERR_INVALID_SERVICE_NAME: ( + 'Service "{service_name}" is not registered with the listener at ' + 'host "{host}" port {port}. (Similar to ORA-12514)' + ), + ERR_INVALID_SID: ( + 'SID "{sid}" is not registered with the listener at host "{host}" ' + "port {port}. (Similar to ORA-12505)" + ), + ERR_INVALID_SSL_VERSION: 'invalid value for ssl_version: "{ssl_version}"', + ERR_INVALID_TPC_BEGIN_FLAGS: "invalid flags for tpc_begin()", + ERR_INVALID_TPC_END_FLAGS: "invalid flags for tpc_end()", + ERR_INVALID_VECTOR: "vector cannot contain zero dimensions", + ERR_KEYWORD_ARGS_MUST_BE_DICT: ( + '"keyword_parameters" argument must be a dict' + ), + ERR_LIBRARY_ALREADY_INITIALIZED: ( + "init_oracle_client() was already called with different arguments" + ), + ERR_LISTENER_REFUSED_CONNECTION: ( + "Listener refused connection. (Similar to ORA-{error_code})" + ), + ERR_LOB_OF_WRONG_TYPE: ( + "LOB is of type {actual_type_name} but must be of type " + "{expected_type_name}" + ), + ERR_MESSAGE_HAS_NO_PAYLOAD: "message has no payload", + ERR_MESSAGE_TYPE_UNKNOWN: ( + "internal error: unknown protocol message type {message_type} " + "at position {position}" + ), + ERR_MISMATCHED_TOKEN: ( + "internal error: pipeline token number {token_num} does not match " + "expected token number {expected_token_num}" + ), + ERR_MISSING_ADDRESS: ( + "no addresses are defined in connect descriptor: {connect_string}" + ), + ERR_MISSING_BIND_VALUE: ( + 'a bind variable replacement value for placeholder ":{name}" was ' + "not provided" + ), + ERR_MISSING_CONNECT_DESCRIPTOR: ( + '"connect_descriptor" key missing from configuration' + ), + ERR_MISSING_ENDING_DOUBLE_QUOTE: 'missing ending quote (")', + ERR_MISSING_ENDING_SINGLE_QUOTE: "missing ending quote (')", + ERR_MISSING_FILE: "file '{file_name}' is missing or unreadable", + ERR_MISSING_TYPE_NAME_FOR_OBJECT_VAR: ( + "no object type specified for object variable" + ), + ERR_MIXED_ELEMENT_TYPES: ( + "element {element} is not the same data type as previous elements" + ), + ERR_MIXED_POSITIONAL_AND_NAMED_BINDS: ( + "positional and named binds cannot be intermixed" + ), + ERR_NAME_HAS_EMBEDDED_QUOTES: "name has embedded quotes", + ERR_NAMED_POOL_EXISTS: ( + 'connection pool with alias "{alias}" already exists' + ), + ERR_NAMED_POOL_MISSING: ( + 'connection pool with alias "{alias}" does not exist' + ), + ERR_NAMED_TIMEZONE_NOT_SUPPORTED: ( + "named time zones are not supported in thin mode" + ), + ERR_NCHAR_CS_NOT_SUPPORTED: ( + "national character set id {charset_id} is not supported by " + "python-oracledb in thin mode" + ), + ERR_NO_CONFIG_DIR: "no configuration directory specified", + ERR_NO_CREDENTIALS: "no credentials specified", + ERR_NO_CRYPTOGRAPHY_PACKAGE: ( + "python-oracledb thin mode cannot be used because the " + "cryptography package cannot be imported" + ), + ERR_NO_STATEMENT: "no statement specified and no prior statement prepared", + ERR_NO_STATEMENT_EXECUTED: "no statement executed", + ERR_NO_STATEMENT_PREPARED: "statement must be prepared first", + ERR_NOT_A_QUERY: "the executed statement does not return rows", + ERR_NOT_CONNECTED: "not connected to database", + ERR_NOT_IMPLEMENTED: "not implemented", + ERR_NOT_SUBSCRIBED: "subscription is not active", + ERR_NULLS_NOT_ALLOWED: ( + 'value for column "{column_name}" may not be null on row {row_num}' + ), + ERR_NUMBER_STRING_OF_ZERO_LENGTH: "invalid number: zero length string", + ERR_NUMBER_STRING_TOO_LONG: "invalid number: string too long", + ERR_NUMBER_TOO_LARGE: "encoded number data too long ({num_bytes} bytes)", + ERR_NUMBER_WITH_EMPTY_EXPONENT: "invalid number: empty exponent", + ERR_NUMBER_WITH_INVALID_EXPONENT: "invalid number: invalid exponent", + ERR_OBJECT_IS_NOT_A_COLLECTION: "object {name} is not a collection", + ERR_OPERATION_NOT_SUPPORTED_ON_BFILE: ( + "operation is not supported on BFILE LOBs" + ), + ERR_OPERATION_ONLY_SUPPORTED_ON_BFILE: ( + "operation is only supported on BFILE LOBs" + ), + ERR_ORACLE_NUMBER_NO_REPR: ( + "value cannot be represented as an Oracle number" + ), + ERR_ORACLE_TYPE_NAME_NOT_SUPPORTED: ( + 'Oracle data type name "{name}" is not supported' + ), + ERR_ORACLE_TYPE_NOT_SUPPORTED: "Oracle data type {num} is not supported", + ERR_OSON_FIELD_NAME_LIMITATION: ( + "OSON field names may not exceed {max_fname_size} UTF-8 encoded bytes" + ), + ERR_OSON_NODE_TYPE_NOT_SUPPORTED: ( + "OSON node type 0x{node_type:x} is not supported" + ), + ERR_OSON_VERSION_NOT_SUPPORTED: "OSON version {version} is not supported", + ERR_PARAM_SIZE_TOO_LARGE: ( + 'the length of the "{name}" parameter exceeds the maximum allowed ' + "length of {max_length} UTF-8 encoded bytes" + ), + ERR_PARAMS_HOOK_HANDLER_FAILED: ( + "registered handler for params hook failed" + ), + ERR_PASSWORD_TYPE_HANDLER_FAILED: ( + 'registered handler for password type "{password_type}" failed' + ), + ERR_PAYLOAD_CANNOT_BE_ENQUEUED: ( + "payload cannot be enqueued since it does not match the payload type " + "supported by the queue" + ), + ERR_PLAINTEXT_PASSWORD_IN_CONFIG: ( + "password in configuration must specify a type" + ), + ERR_POOL_HAS_BUSY_CONNECTIONS: ( + "connection pool cannot be closed because connections are busy" + ), + ERR_POOL_MAX_LESS_THAN_MIN: ( + "parameter 'max' should be greater than or equal to parameter 'min'" + ), + ERR_POOL_NO_CONNECTION_AVAILABLE: ( + "timed out waiting for the connection pool to return a connection" + ), + ERR_POOL_NOT_OPEN: "connection pool is not open", + ERR_PROTOCOL_HANDLER_FAILED: ( + 'registered handler for protocol "{protocol}" failed for arg "{arg}"' + ), + ERR_PROXY_FAILURE: "network proxy failed: response was {response}", + ERR_PYTHON_TYPE_NOT_SUPPORTED: "Python type {typ} is not supported", + ERR_PYTHON_VALUE_NOT_SUPPORTED: ( + 'Python value of type "{type_name}" is not supported' + ), + ERR_REGISTER_QUERY_ON_AQ_SUBSCR: ( + "cannot register a query on an AQ subscription" + ), + ERR_SCROLL_NOT_SUPPORTED: ( + "scroll operation is not supported on a non-scrollable cursor" + ), + ERR_SCROLL_OUT_OF_RESULT_SET: ( + "scroll operation would go out of the result set" + ), + ERR_SELF_BIND_NOT_SUPPORTED: "binding to self is not supported", + ERR_SERVER_VERSION_NOT_SUPPORTED: ( + "connections to this database server version are not supported " + "by python-oracledb in thin mode" + ), + ERR_SESSIONLESS_ALREADY_ACTIVE: ( + "suspend, commit, or rollback the current active sessionless " + "transaction before beginning or resuming another one" + ), + ERR_SESSIONLESS_DIFFERING_METHODS: ( + "suspending or resuming a Sessionless Transaction can be done with " + "DBMS_TRANSACTION or with python-oracledb, but not both" + ), + ERR_SESSIONLESS_INACTIVE: ("no Sessionless Transaction is active"), + ERR_SUBSCR_FAILED: "subscription could not be created", + ERR_TDS_TYPE_NOT_SUPPORTED: "Oracle TDS data type {num} is not supported", + ERR_THICK_MODE_ENABLED: ( + "python-oracledb thin mode cannot be used because thick mode has " + "already been enabled" + ), + ERR_THIN_CONNECTION_ALREADY_CREATED: ( + "python-oracledb thick mode cannot be used because thin mode has " + "already been enabled or a thin mode connection has already been " + "created" + ), + ERR_TIME_NOT_SUPPORTED: ( + "Oracle Database does not support time only variables" + ), + ERR_TNS_ENTRY_NOT_FOUND: 'unable to find "{name}" in {file_name}', + ERR_TOO_MANY_BATCH_ERRORS: ( + "the number of batch errors from executemany() exceeds 65535" + ), + ERR_UNEXPECTED_DATA: "unexpected data received: {data}", + ERR_UNEXPECTED_END_OF_DATA: ( + "unexpected end of data: want {num_bytes_wanted} bytes but " + "only {num_bytes_available} bytes are available" + ), + ERR_UNEXPECTED_NEGATIVE_INTEGER: ( + "internal error: read a negative integer when expecting a " + "positive integer" + ), + ERR_UNEXPECTED_REFUSE: ( + "the listener refused the connection but an unexpected error " + "format was returned" + ), + ERR_UNEXPECTED_PIPELINE_FAILURE: "unexpected pipeline failure", + ERR_UNEXPECTED_XML_TYPE: "unexpected XMLType with flag {flag}", + ERR_UNKNOWN_SERVER_PIGGYBACK: ( + "internal error: unknown server side piggyback opcode {opcode}" + ), + ERR_UNKNOWN_TRANSACTION_STATE: ( + "internal error: unknown transaction state {state}" + ), + ERR_UNKNOWN_TRANSACTION_SYNC_VERSION: ( + "internal error: unknown transaction sync version {version}" + ), + ERR_UNSUPPORTED_ARROW_TYPE: 'unsupported Apache Arrow type "{arrow_type}"', + ERR_UNSUPPORTED_DEEP_DATA_SECURITY_FEATURE: ( + "database version does not support the Oracle Deep Data Security feature" + ), + ERR_UNSUPPORTED_INBAND_NOTIFICATION: ( + "unsupported in-band notification with error number {err_num}" + ), + ERR_UNSUPPORTED_PIPELINE_OPERATION: ( + "unsupported pipeline operation type: {op_type}" + ), + ERR_UNSUPPORTED_PYTHON_TYPE_FOR_DB_TYPE: ( + "unsupported Python type {py_type_name} for database type " + "{db_type_name}" + ), + ERR_UNSUPPORTED_TYPE_SET: "type {db_type_name} does not support being set", + ERR_UNSUPPORTED_VERIFIER_TYPE: ( + "password verifier type 0x{verifier_type:x} is not supported by " + "python-oracledb in thin mode" + ), + ERR_VALUE_TOO_LARGE: ( + "value of size {actual_size} exeeds maximum allowed size of " + '{max_size} for column "{column_name}" of row {row_num}' + ), + ERR_VECTOR_FORMAT_NOT_SUPPORTED: ( + "VECTOR type {vector_format} is not supported" + ), + ERR_VECTOR_VERSION_NOT_SUPPORTED: ( + "VECTOR version {version} is not supported" + ), + ERR_WALLET_FILE_MISSING: "wallet file {name} was not found", + ERR_WRONG_ARRAY_DEFINITION: ( + "expecting a list of two elements [type, numelems]" + ), + ERR_WRONG_DIRECT_PATH_DATA_TYPE: ( + "expecting a list or an object implementing the Apache Arrow " + "PyCapsule interface __arrow_c_stream__()" + ), + ERR_WRONG_EXECUTE_PARAMETERS_TYPE: ( + "expecting a dictionary, list or tuple, or keyword args" + ), + ERR_WRONG_EXECUTEMANY_PARAMETERS_TYPE: ( + '"parameters" argument should be a list of sequences or ' + "dictionaries, or an integer specifying the number of " + "times to execute the statement, or an object implementing the Apache " + "Arrow PyCapsule interface __arrow_c_stream__()" + ), + ERR_WRONG_NUMBER_OF_POSITIONAL_BINDS: ( + "{expected_num} positional bind values are required but " + "{actual_num} were provided" + ), + ERR_WRONG_OBJECT_TYPE: ( + 'found object of type "{actual_schema}.{actual_name}" when ' + 'expecting object of type "{expected_schema}.{expected_name}"' + ), + ERR_WRONG_REQUESTED_SCHEMA_LENGTH: ( + "requested schema has {num_schema_columns} columns defined but " + "{num_fetched_columns} are being fetched" + ), + ERR_WRONG_SCROLL_MODE: ( + "scroll mode must be relative, absolute, first or last" + ), + WRN_COMPILATION_ERROR: "creation succeeded with compilation errors", +} diff --git a/.venv/lib/python3.9/site-packages/oracledb/exceptions.py b/.venv/lib/python3.9/site-packages/oracledb/exceptions.py new file mode 100644 index 0000000..b262cac --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/exceptions.py @@ -0,0 +1,125 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2023, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# exceptions.py +# +# Contains the exception classes mandated by the Python Database API. +# ----------------------------------------------------------------------------- + + +class Warning(Exception): + """ + Exception raised for warnings. + + Exception messages of this class will have the prefix DPY and an error + number in the range 9000 - 9999. + """ + + +class Error(Exception): + """ + Exception that is the base class of all other exceptions defined by + python-oracledb. + """ + + +class DatabaseError(Error): + """ + Exception raised for errors that are related to the database. It is a + subclass of Error. + + Exception messages of this class will have the prefix DPY and an error + number in the range 4000 - 4999. + """ + + +class DataError(DatabaseError): + """ + Exception raised for errors that are due to problems with the processed + data. It is a subclass of DatabaseError. + + Exception messages of this class are generated by the database and will + have a prefix such as ORA. + """ + + +class IntegrityError(DatabaseError): + """ + Exception raised when the relational integrity of the database is affected. + It is a subclass of DatabaseError. + + Exception messages of this class are generated by the database and will + have a prefix such as ORA. + """ + + +class InterfaceError(Error): + """ + Exception raised for errors that are related to the database interface + rather than the database itself. It is a subclass of Error. + + Exception messages of this class will have the prefix DPY and an error + number in the range 1000 - 1999. + """ + + +class InternalError(DatabaseError): + """ + Exception raised when the database encounters an internal error. It is a + subclass of DatabaseError. + + Exception messages of this class will have the prefix DPY and an error + number in the range 5000 - 5999. + """ + + +class NotSupportedError(DatabaseError): + """ + Exception raised when a method or database API was used which is not + supported by the database. It is a subclass of DatabaseError. + + Exception messages of this class will have the prefix DPY and an error + number in the range 3000 - 3999. + """ + + +class OperationalError(DatabaseError): + """ + Exception raised for errors that are related to the operation of the + database but are not necessarily under the control of the programmer. It is + a subclass of DatabaseError. + + Exception messages of this class will have the prefix DPY and an error + number in the range 6000 - 6999. + """ + + +class ProgrammingError(DatabaseError): + """ + Exception raised for programming errors. It is a subclass of DatabaseError. + + Exception messages of this class will have the prefix DPY and an error + number in the range 2000 - 2999. + """ diff --git a/.venv/lib/python3.9/site-packages/oracledb/fetch_info.py b/.venv/lib/python3.9/site-packages/oracledb/fetch_info.py new file mode 100644 index 0000000..a690027 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/fetch_info.py @@ -0,0 +1,310 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2023, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# fetch_info.py +# +# Contains the FetchInfo class which stores metadata about columns that are +# being fetched. +# ----------------------------------------------------------------------------- + +from typing import Union + +import oracledb + +from . import constants +from .base import BaseMetaClass +from .base_impl import ( + DbType, + DB_TYPE_DATE, + DB_TYPE_TIMESTAMP, + DB_TYPE_TIMESTAMP_LTZ, + DB_TYPE_TIMESTAMP_TZ, + DB_TYPE_BINARY_FLOAT, + DB_TYPE_BINARY_DOUBLE, + DB_TYPE_BINARY_INTEGER, + DB_TYPE_NUMBER, + DB_TYPE_VECTOR, +) +from .dbobject import DbObjectType + + +class FetchInfo(metaclass=BaseMetaClass): + """ + Identifies metadata of columns that are being fetched. + """ + + def __eq__(self, other): + return tuple(self) == other + + def __getitem__(self, index): + """ + Return the parts mandated by the Python Database API. + """ + if index == 0 or index == -7: + return self.name + elif index == 1 or index == -6: + return self.type_code + elif index == 2 or index == -5: + return self.display_size + elif index == 3 or index == -4: + return self.internal_size + elif index == 4 or index == -3: + return self.precision + elif index == 5 or index == -2: + return self.scale + elif index == 6 or index == -1: + return self.null_ok + elif isinstance(index, slice): + return tuple(self).__getitem__(index) + raise IndexError("list index out of range") + + def __len__(self): + """ + Length mandated by the Python Database API. + """ + return 7 + + def __repr__(self): + return repr(tuple(self)) + + def __str__(self): + return str(tuple(self)) + + @classmethod + def _from_impl(cls, impl): + info = cls.__new__(cls) + info._impl = impl + info._type = None + return info + + @property + def annotations(self) -> Union[dict, None]: + """ + This read-only attribute returns a dictionary containing the + `annotations `__ associated with the + fetched column. If there are no annotations, the value *None* is + returned. Annotations require Oracle Database version 23, or later. If + using python-oracledb Thick mode, Oracle Client version 23 or later is + also required. + """ + return self._impl.annotations + + @property + def display_size(self) -> Union[int, None]: + """ + This read-only attribute returns the display size of the column. + """ + if self._impl.max_size > 0: + return self._impl.max_size + dbtype = self._impl.dbtype + if ( + dbtype is DB_TYPE_DATE + or dbtype is DB_TYPE_TIMESTAMP + or dbtype is DB_TYPE_TIMESTAMP_LTZ + or dbtype is DB_TYPE_TIMESTAMP_TZ + ): + return 23 + elif ( + dbtype is DB_TYPE_BINARY_FLOAT + or dbtype is DB_TYPE_BINARY_DOUBLE + or dbtype is DB_TYPE_BINARY_INTEGER + or dbtype is DB_TYPE_NUMBER + ): + if self._impl.precision: + display_size = self._impl.precision + 1 + if self._impl.scale > 0: + display_size += self._impl.scale + 1 + else: + display_size = 127 + return display_size + + @property + def domain_name(self) -> Union[str, None]: + """ + This read-only attribute returns the name of the `data use case + domain + `__ associated with the fetched column. If + there is no data use case domain, the value *None* is returned. `Data + use case domains `__ require Oracle + Database version 23, or later. If using python-oracledb Thick mode, + Oracle Client version 23 or later is also required. + """ + return self._impl.domain_name + + @property + def domain_schema(self) -> Union[str, None]: + """ + This read-only attribute returns the schema of the `data use case + domain `__ associated with the fetched + column. If there is no data use case domain, the value *None* is + returned. `Data use case domains `__ + require Oracle Database version 23, or later. If using python-oracledb + Thick mode, Oracle Client version 23 or later is also required. + """ + return self._impl.domain_schema + + @property + def internal_size(self) -> Union[int, None]: + """ + This read-only attribute returns the internal size of the column as + mandated by the Python Database API. + """ + if self._impl.max_size > 0: + return self._impl.buffer_size + + @property + def is_json(self) -> bool: + """ + This read-only attribute returns whether the column is known to contain + JSON data. This will be *True* when the type code is + :data:`oracledb.DB_TYPE_JSON` as well as when an "IS JSON" constraint + is enabled on LOB and VARCHAR2 columns. + """ + return self._impl.is_json + + @property + def is_oson(self) -> bool: + """ + This read-only attribute returns whether the column is known to contain + binary encoded `OSON `__ data. This + will be *True* when an "IS JSON FORMAT OSON" check constraint is + enabled on BLOB columns. + """ + return self._impl.is_oson + + @property + def name(self) -> str: + """ + This read-only attribute returns the name of the column as mandated by + the Python Database API. + """ + return self._impl.name + + @property + def null_ok(self) -> bool: + """ + This read-only attribute returns whether nulls are allowed in the + column as mandated by the Python Database API. + """ + return self._impl.nulls_allowed + + @property + def precision(self) -> Union[int, None]: + """ + This read-only attribute returns the precision of the column as + mandated by the Python Database API. + """ + if self._impl.precision or self._impl.scale: + return self._impl.precision + + @property + def scale(self) -> Union[int, None]: + """ + This read-only attribute returns the scale of the column as mandated by + the Python Database API. + """ + if self._impl.precision or self._impl.scale: + return self._impl.scale + + @property + def type(self) -> Union[DbType, DbObjectType]: + """ + This read-only attribute returns the type of the column. This will be + an :ref:`Oracle Object Type ` if the column contains + Oracle objects; otherwise, it will be one of the + :ref:`database type constants ` defined at the module level. + """ + if self._type is None: + if self._impl.objtype is not None: + self._type = DbObjectType._from_impl(self._impl.objtype) + else: + self._type = self._impl.dbtype + return self._type + + @property + def type_code(self) -> DbType: + """ + This read-only attribute returns the type of the column as mandated by + the Python Database API. The type will be one of the + :ref:`database type constants ` defined at the module level. + """ + return self._impl.dbtype + + @property + def vector_dimensions(self) -> Union[int, None]: + """ + This read-only attribute returns the number of dimensions required by + VECTOR columns. If the column is not a VECTOR column or allows for any + number of dimensions, the value returned is *None*. + """ + if self._impl.dbtype is DB_TYPE_VECTOR: + flags = self._impl.vector_flags + if not (flags & constants.VECTOR_META_FLAG_FLEXIBLE_DIM): + return self._impl.vector_dimensions + + @property + def vector_format(self) -> Union[oracledb.VectorFormat, None]: + """ + This read-only attribute returns the storage type used by VECTOR + columns. The value of this attribute can be: + + - :data:`oracledb.VECTOR_FORMAT_BINARY` which represents 8-bit unsigned + integers + - :data:`oracledb.VECTOR_FORMAT_INT8` which represents 8-bit signed + integers + - :data:`oracledb.VECTOR_FORMAT_FLOAT32` which represents 32-bit + floating-point numbers + - :data:`oracledb.VECTOR_FORMAT_FLOAT64` which represents 64-bit + floating-point numbers + + If the column is not a VECTOR column or allows for any type of storage, + the value returned is *None*. + """ + if ( + self._impl.dbtype is DB_TYPE_VECTOR + and self._impl.vector_format != 0 + ): + return oracledb.VectorFormat(self._impl.vector_format) + + @property + def vector_is_sparse(self) -> Union[bool, None]: + """ + This read-only attribute returns a boolean indicating if the vector is + sparse or not. + + If the column contains vectors that are SPARSE, the value returned is + *True*. If the column contains vectors that are DENSE, the value + returned is *False*. If the column is not a VECTOR column, the value + returned is *None*. + """ + if self._impl.dbtype is DB_TYPE_VECTOR: + flags = self._impl.vector_flags + return bool(flags & constants.VECTOR_META_FLAG_SPARSE_VECTOR) diff --git a/.venv/lib/python3.9/site-packages/oracledb/future.py b/.venv/lib/python3.9/site-packages/oracledb/future.py new file mode 100644 index 0000000..dff545d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/future.py @@ -0,0 +1,46 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# future.py +# +# Module for handling backwards incompatible changes. +# ----------------------------------------------------------------------------- + +FEATURES = [] + + +# future object used for managing backwards incompatible changes +class Future: + def __getattr__(self, name): + if name in FEATURES: + return super().__getattr__(name) + return None + + def __setattr__(self, name, value): + if name in FEATURES: + return super().__setattr__(name, value) + + +__future__ = Future() diff --git a/.venv/lib/python3.9/site-packages/oracledb/lob.py b/.venv/lib/python3.9/site-packages/oracledb/lob.py new file mode 100644 index 0000000..5581303 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/lob.py @@ -0,0 +1,318 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# lob.py +# +# Contains the LOB class for managing BLOB, CLOB, NCLOB and BFILE data. +# ----------------------------------------------------------------------------- + +from typing import Optional, Union + +from .base import BaseMetaClass +from .base_impl import DbType, DB_TYPE_BFILE, DB_TYPE_BLOB +from . import errors + + +class BaseLOB(metaclass=BaseMetaClass): + + def __del__(self): + self._impl.free_lob() + + def _check_is_bfile(self): + if self._impl.dbtype is not DB_TYPE_BFILE: + errors._raise_err(errors.ERR_OPERATION_ONLY_SUPPORTED_ON_BFILE) + + def _check_not_bfile(self): + if self._impl.dbtype is DB_TYPE_BFILE: + errors._raise_err(errors.ERR_OPERATION_NOT_SUPPORTED_ON_BFILE) + + def _check_value_to_write(self, value): + """ + Checks the value to write and returns the actual value to write. + Character LOBs must write strings but can accept UTF-8 encoded bytes + (which will be decoded to strings). Binary LOBs must write bytes but + can accept strings (which will be encoded in UTF-8). + """ + if self.type is DB_TYPE_BLOB: + if isinstance(value, str): + return value.encode() + elif isinstance(value, bytes): + return value + else: + if isinstance(value, str): + return value + elif isinstance(value, bytes): + return value.decode() + raise TypeError("expecting string or bytes") + + @classmethod + def _from_impl(cls, impl): + if isinstance(impl, BaseLOB): + return impl + lob = cls.__new__(cls) + lob._impl = impl + return lob + + def getfilename(self) -> tuple: + """ + Returns a two-tuple consisting of the directory alias and file name for + a BFILE type LOB. + """ + self._check_is_bfile() + return self._impl.get_file_name() + + def setfilename(self, dir_alias: str, name: str) -> None: + """ + Sets the directory alias and name of a BFILE type LOB. + """ + self._check_is_bfile() + self._impl.set_file_name(dir_alias, name) + + @property + def type(self) -> DbType: + """ + This read-only attribute returns the type of the LOB as one of the + database type constants. + """ + return self._impl.dbtype + + +class LOB(BaseLOB): + + def __reduce__(self): + value = self.read() + return (type(value), (value,)) + + def __str__(self): + return self.read() + + def close(self) -> None: + """ + Closes the LOB. Call this when writing is completed so that the indexes + associated with the LOB can be updated -– but only if open() was called + first. + """ + self._impl.close() + + def fileexists(self) -> bool: + """ + Returns a boolean indicating if the file referenced by a BFILE type LOB + exists. + """ + self._check_is_bfile() + return self._impl.file_exists() + + def getchunksize(self) -> int: + """ + Returns the chunk size for the LOB. Reading and writing to the LOB in + chunks of multiples of this size will improve performance. + """ + self._check_not_bfile() + return self._impl.get_chunk_size() + + def isopen(self) -> bool: + """ + Returns a boolean indicating if the LOB has been opened using the + method open(). + """ + return self._impl.get_is_open() + + def open(self) -> None: + """ + Opens the LOB for writing. This will improve performance when writing + to the LOB in chunks and there are functional or extensible indexes + associated with the LOB. If this method is not called, each write will + perform an open internally followed by a close after the write has been + completed. + """ + self._impl.open() + + def read( + self, offset: int = 1, amount: Optional[int] = None + ) -> Union[str, bytes]: + """ + Returns a portion (or all) of the data in the LOB. Note that the amount + and offset are in bytes for BLOB and BFILE type LOBs and in UCS-2 code + points for CLOB and NCLOB type LOBs. UCS-2 code points are equivalent + to characters for all but supplemental characters. If supplemental + characters are in the LOB, the offset and amount will have to be chosen + carefully to avoid splitting a character. + """ + if amount is None: + amount = self._impl.get_max_amount() + if amount >= offset: + amount = amount - offset + 1 + else: + amount = 1 + elif amount <= 0: + errors._raise_err(errors.ERR_INVALID_LOB_AMOUNT) + if offset <= 0: + errors._raise_err(errors.ERR_INVALID_LOB_OFFSET) + return self._impl.read(offset, amount) + + def size(self) -> int: + """ + Returns the size of the data in the LOB. For BLOB and BFILE type LOBs, + this is the number of bytes. For CLOB and NCLOB type LOBs, this is the + number of UCS-2 code points. UCS-2 code points are equivalent to + characters for all but supplemental characters. + """ + return self._impl.get_size() + + def trim( + self, new_size: int = 0, *, newSize: Optional[int] = None + ) -> None: + """ + Trims the LOB to the new size (the second parameter is deprecated and + should not be used). + """ + self._check_not_bfile() + if newSize is not None: + if new_size != 0: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="newSize", + new_name="new_size", + ) + new_size = newSize + self._impl.trim(new_size) + + def write(self, data: Union[str, bytes], offset: int = 1) -> None: + """ + Writes the data to the LOB at the given offset. The offset is in bytes + for BLOB type LOBs and in UCS-2 code points for CLOB and NCLOB type + LOBs. UCS-2 code points are equivalent to characters for all but + supplemental characters. If supplemental characters are in the LOB, the + offset will have to be chosen carefully to avoid splitting a character. + Note that if you want to make the LOB value smaller, you must use the + trim() function. + """ + self._check_not_bfile() + self._impl.write(self._check_value_to_write(data), offset) + + +class AsyncLOB(BaseLOB): + + async def close(self) -> None: + """ + Closes the LOB. Call this when writing is completed so that the indexes + associated with the LOB can be updated -– but only if open() was called + first. + """ + await self._impl.close() + + async def fileexists(self) -> bool: + """ + Returns a boolean indicating if the file referenced by a BFILE type LOB + exists. + """ + self._check_is_bfile() + return await self._impl.file_exists() + + async def getchunksize(self) -> int: + """ + Returns the chunk size for the LOB. Reading and writing to the LOB in + chunks of multiples of this size will improve performance. + """ + self._check_not_bfile() + return await self._impl.get_chunk_size() + + async def isopen(self) -> bool: + """ + Returns a boolean indicating if the LOB has been opened using the + method open(). + """ + return await self._impl.get_is_open() + + async def open(self) -> None: + """ + Opens the LOB for writing. This will improve performance when writing + to the LOB in chunks and there are functional or extensible indexes + associated with the LOB. If this method is not called, each write will + perform an open internally followed by a close after the write has been + completed. + """ + await self._impl.open() + + async def read( + self, offset: int = 1, amount: Optional[int] = None + ) -> Union[str, bytes]: + """ + Returns a portion (or all) of the data in the LOB. Note that the amount + and offset are in bytes for BLOB and BFILE type LOBs and in UCS-2 code + points for CLOB and NCLOB type LOBs. UCS-2 code points are equivalent + to characters for all but supplemental characters. If supplemental + characters are in the LOB, the offset and amount will have to be chosen + carefully to avoid splitting a character. + """ + if amount is None: + amount = self._impl.get_max_amount() + if amount >= offset: + amount = amount - offset + 1 + else: + amount = 1 + if offset <= 0: + errors._raise_err(errors.ERR_INVALID_LOB_OFFSET) + return await self._impl.read(offset, amount) + + async def size(self) -> int: + """ + Returns the size of the data in the LOB. For BLOB and BFILE type LOBs + this is the number of bytes. For CLOB and NCLOB type LOBs this is the + number of UCS-2 code points. UCS-2 code points are equivalent to + characters for all but supplemental characters. + """ + return await self._impl.get_size() + + async def trim( + self, new_size: int = 0, *, newSize: Optional[int] = None + ) -> None: + """ + Trims the LOB to the new size (the second parameter is deprecated and + should not be used). + """ + self._check_not_bfile() + if newSize is not None: + if new_size != 0: + errors._raise_err( + errors.ERR_DUPLICATED_PARAMETER, + deprecated_name="newSize", + new_name="new_size", + ) + new_size = newSize + await self._impl.trim(new_size) + + async def write(self, data: Union[str, bytes], offset: int = 1) -> None: + """ + Writes the data to the LOB at the given offset. The offset is in bytes + for BLOB type LOBs and in UCS-2 code points for CLOB and NCLOB type + LOBs. UCS-2 code points are equivalent to characters for all but + supplemental characters. If supplemental characters are in the LOB, the + offset will have to be chosen carefully to avoid splitting a character. + Note that if you want to make the LOB value smaller, you must use the + trim() function. + """ + self._check_not_bfile() + await self._impl.write(self._check_value_to_write(data), offset) diff --git a/.venv/lib/python3.9/site-packages/oracledb/pipeline.py b/.venv/lib/python3.9/site-packages/oracledb/pipeline.py new file mode 100644 index 0000000..bb2d056 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/pipeline.py @@ -0,0 +1,491 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2024, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# pipeline.py +# +# Contains the Pipeline class used for executing multiple operations. +# ----------------------------------------------------------------------------- + +from typing import Any, Callable, Optional, Union + +from . import utils +from .base import BaseMetaClass +from .base_impl import PipelineImpl, PipelineOpImpl, PipelineOpResultImpl +from .defaults import defaults +from .enums import PipelineOpType +from .errors import _Error +from .fetch_info import FetchInfo + + +class PipelineOp(metaclass=BaseMetaClass): + + def __repr__(self): + cls_name = self.__class__._public_name + return f"<{cls_name} of type {self.op_type.name}>" + + def _create_result(self): + """ + Internal method used for creating a result object that is returned when + running a pipeline. + """ + impl = PipelineOpResultImpl(self._impl) + result = PipelineOpResult.__new__(PipelineOpResult) + result._operation = self + result._impl = impl + return result + + @property + def arraysize(self) -> int: + """ + This read-only attribute returns the array size that will be used when + fetching query rows with :meth:`Pipeline.add_fetchall()`. For all other + operations, the value returned is *0*. + """ + return self._impl.arraysize + + @property + def fetch_decimals(self) -> bool: + """ + Returns whether or not to fetch columns of type ``NUMBER`` as + ``decimal.Decimal`` values for a query. + """ + return self._impl.fetch_decimals + + @property + def fetch_lobs(self) -> bool: + """ + Returns whether or not to fetch LOB locators for a query. + """ + return self._impl.fetch_lobs + + @property + def keyword_parameters(self) -> Any: + """ + This read-only attribute returns the keyword parameters to the stored + procedure or function being called by the operation, if applicable. + """ + return self._impl.keyword_parameters + + @property + def name(self) -> Union[str, None]: + """ + This read-only attribute returns the name of the stored procedure or + function being called by the operation, if applicable. + """ + return self._impl.name + + @property + def num_rows(self) -> int: + """ + This read-only attribute returns the number of rows to fetch when + performing a query of a specific number of rows. For all other + operations, the value returned is *0*. + """ + return self._impl.num_rows + + @property + def op_type(self) -> PipelineOpType: + """ + This read-only attribute returns the type of operation that is taking + place. + """ + return PipelineOpType(self._impl.op_type) + + @property + def parameters(self) -> Any: + """ + This read-only attribute returns the parameters to the stored procedure + or function or the parameters bound to the statement being executed by + the operation, if applicable. + """ + return self._impl.parameters + + @property + def return_type(self) -> Any: + """ + This read-only attribute returns the return type of the stored function + being called by the operation, if applicable. + """ + return self._impl.return_type + + @property + def rowfactory(self) -> Union[Callable, None]: + """ + This read-only attribute returns the row factory callable function to + be used in a query executed by the operation, if applicable. + """ + return self._impl.rowfactory + + @property + def statement(self) -> Union[str, None]: + """ + This read-only attribute returns the statement being executed by the + operation, if applicable. + """ + return self._impl.statement + + +class PipelineOpResult(metaclass=BaseMetaClass): + + def __repr__(self): + cls_name = self.__class__._public_name + return ( + f"<{cls_name} for operation of type {self.operation.op_type.name}>" + ) + + @property + def columns(self) -> Union[list[FetchInfo], None]: + """ + This read-only attribute is a list of FetchInfo objects. This + attribute will be *None* for operations that do not return rows. + """ + if self._impl.fetch_metadata is not None: + return [FetchInfo._from_impl(i) for i in self._impl.fetch_metadata] + + @property + def error(self) -> Union[_Error, None]: + """ + This read-only attribute returns the error that occurred when running + this operation. If no error occurred, then the value *None* is + returned. + """ + return self._impl.error + + @property + def operation(self) -> PipelineOp: + """ + This read-only attribute returns the PipelineOp operation object that + generated the result. + """ + return self._operation + + @property + def return_value(self) -> Any: + """ + This read-only attribute returns the return value of the called PL/SQL + function, if a function was called for the operation. + """ + return self._impl.return_value + + @property + def rows(self) -> Union[list, None]: + """ + This read-only attribute returns the rows that were fetched by the + operation, if a query was executed. + """ + return self._impl.rows + + @property + def warning(self) -> Union[_Error, None]: + """ + This read-only attribute returns any warning that was encountered when + running this operation. If no warning was encountered, then the value + *None* is returned. + """ + return self._impl.warning + + +class Pipeline(metaclass=BaseMetaClass): + + def __repr__(self): + cls_name = self.__class__._public_name + return f"<{cls_name} with {len(self._impl.operations)} operations>" + + def _add_op(self, op_impl): + """ + Internal method for adding an PipelineOpImpl instance to the list of + operations, creating an associated PipelineOp instance to correspond to + it. + """ + self._impl.operations.append(op_impl) + op = PipelineOp.__new__(PipelineOp) + op._impl = op_impl + self._operations.append(op) + return op + + def add_callfunc( + self, + name: str, + return_type: Any, + parameters: Optional[Union[list, tuple]] = None, + keyword_parameters: Optional[dict] = None, + ) -> PipelineOp: + """ + Adds an operation to the pipeline that calls a stored PL/SQL function + with the given parameters and return type. The created PipelineOp + object is also returned from this function. + + When the Pipeline is executed, the PipelineOpResult object that is + returned for this operation will have the + :attr:`~PipelineOpResult.return_value` attribute populated with the + return value of the PL/SQL function if the call completes + successfully. + """ + utils.verify_stored_proc_args(parameters, keyword_parameters) + op_impl = PipelineOpImpl( + op_type=PipelineOpType.CALL_FUNC, + name=name, + return_type=return_type, + parameters=parameters, + keyword_parameters=keyword_parameters, + ) + return self._add_op(op_impl) + + def add_callproc( + self, + name: str, + parameters: Optional[Union[list, tuple]] = None, + keyword_parameters: Optional[dict] = None, + ) -> PipelineOp: + """ + Adds an operation that calls a stored procedure with the given + parameters. The created PipelineOp object is also returned from + this function. + """ + utils.verify_stored_proc_args(parameters, keyword_parameters) + op_impl = PipelineOpImpl( + op_type=PipelineOpType.CALL_PROC, + name=name, + parameters=parameters, + keyword_parameters=keyword_parameters, + ) + return self._add_op(op_impl) + + def add_commit(self) -> PipelineOp: + """ + Adds an operation that performs a commit. + """ + op_impl = PipelineOpImpl(op_type=PipelineOpType.COMMIT) + return self._add_op(op_impl) + + def add_execute( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + ) -> PipelineOp: + """ + Adds an operation that executes a statement with the given parameters. + The created PipelineOp object is also returned from this function. + + Do not use this for queries that return rows. Instead use + :meth:`Pipeline.add_fetchall()`, :meth:`Pipeline.add_fetchmany()`, or + :meth:`Pipeline.add_fetchone()`. + """ + op_impl = PipelineOpImpl( + op_type=PipelineOpType.EXECUTE, + statement=statement, + parameters=parameters, + ) + return self._add_op(op_impl) + + def add_executemany( + self, + statement: str, + parameters: Union[list, int], + ) -> PipelineOp: + """ + Adds an operation that executes a SQL statement once using all bind + value mappings or sequences found in the sequence parameters. This can + be used to insert, update, or delete multiple rows in a table. It can + also invoke a PL/SQL procedure multiple times. + + The created PipelineOp object is also returned from this function. + + The ``parameters`` parameter can be a list of tuples, where each tuple + item maps to one bind variable placeholder in ``statement``. It can + also be a list of dictionaries, where the keys match the bind variable + placeholder names in ``statement``. If there are no bind values, or + values have previously been bound, the ``parameters`` value can be an + integer specifying the number of iterations. + """ + op_impl = PipelineOpImpl( + op_type=PipelineOpType.EXECUTE_MANY, + statement=statement, + parameters=parameters, + ) + return self._add_op(op_impl) + + def add_fetchall( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + arraysize: Optional[int] = None, + rowfactory: Optional[Callable] = None, + fetch_lobs: Optional[bool] = None, + fetch_decimals: Optional[bool] = None, + ) -> PipelineOp: + """ + Adds an operation that executes a query and returns all of the rows + from the result set. The created PipelineOp object is also returned + from this function. + + When the Pipeline is executed, the PipelineOpResult object that is + returned for this operation will have the + :attr:`~PipelineOpResult.rows` attribute populated with the list of + rows returned by the query. + + The default value for ``arraysize`` is + :attr:`oracledb.defaults.arraysize `. + + Internally, this operation's :attr:`Cursor.prefetchrows` size is set + to the value of the explicit or default ``arraysize`` parameter value. + + The ``fetch_lobs`` parameter specifies whether to return LOB locators + or ``str``/``bytes`` values when fetching LOB columns. The default + value is :data:`oracledb.defaults.fetch_lobs `. + + The ``fetch_decimals`` parameter specifies whether to return + ``decimal.Decimal`` values when fetching columns of type ``NUMBER``. + The default value is + :data:`oracledb.defaults.fetch_decimals `. + """ + if arraysize is None: + arraysize = defaults.arraysize + op_impl = PipelineOpImpl( + op_type=PipelineOpType.FETCH_ALL, + statement=statement, + parameters=parameters, + arraysize=arraysize, + rowfactory=rowfactory, + fetch_lobs=fetch_lobs, + fetch_decimals=fetch_decimals, + ) + return self._add_op(op_impl) + + def add_fetchmany( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + num_rows: Optional[int] = None, + rowfactory: Optional[Callable] = None, + fetch_lobs: Optional[bool] = None, + fetch_decimals: Optional[bool] = None, + ) -> PipelineOp: + """ + Adds an operation that executes a query and returns up to the specified + number of rows from the result set. The created PipelineOp object is + also returned from this function. + + When the Pipeline is executed, the PipelineOpResult object that is + returned for this operation will have the + :attr:`~PipelineOpResult.rows` attribute populated with the list of + rows returned by the query. + + The default value for ``num_rows`` is the value of + :attr:`oracledb.defaults.arraysize `. + + Internally, this operation's :attr:`Cursor.prefetchrows` size is set to + the value of the explicit or default ``num_rows`` parameter, allowing + all rows to be fetched in one round-trip. + + Since only one fetch is performed for a query operation, consider + adding a ``FETCH NEXT`` clause to the statement to prevent the + database processing rows that will never be fetched. + + The ``fetch_lobs`` parameter specifies whether to return LOB locators + or ``str``/``bytes`` values when fetching LOB columns. The default + value is :data:`oracledb.defaults.fetch_lobs `. + + The ``fetch_decimals`` parameter specifies whether to return + ``decimal.Decimal`` values when fetching columns of type ``NUMBER``. + The default value is + :data:`oracledb.defaults.fetch_decimals `. + """ + if num_rows is None: + num_rows = defaults.arraysize + op_impl = PipelineOpImpl( + op_type=PipelineOpType.FETCH_MANY, + statement=statement, + parameters=parameters, + num_rows=num_rows, + rowfactory=rowfactory, + fetch_lobs=fetch_lobs, + fetch_decimals=fetch_decimals, + ) + return self._add_op(op_impl) + + def add_fetchone( + self, + statement: str, + parameters: Optional[Union[list, tuple, dict]] = None, + rowfactory: Optional[Callable] = None, + fetch_lobs: Optional[bool] = None, + fetch_decimals: Optional[bool] = None, + ) -> PipelineOp: + """ + Adds an operation that executes a query and returns the first row of + the result set if one exists (or *None*, if no rows exist). The + created PipelineOp object is also returned from this function. + + When the Pipeline is executed, the PipelineOpResult object that is + returned for this operation will have the + :attr:`~PipelineOpResult.rows` attribute populated with this row if the + query is performed successfully. + + Internally, this operation's :attr:`Cursor.prefetchrows` and + :attr:`Cursor.arraysize` sizes will be set to *1*. + + Since only one fetch is performed for a query operation, consider + adding a ``WHERE`` condition or using a ``FETCH NEXT`` clause in the + statement to prevent the database processing rows that will never be + fetched. + + The ``fetch_lobs`` parameter specifies whether to return LOB locators + or ``str``/``bytes`` values when fetching LOB columns. The default + value is :data:`oracledb.defaults.fetch_lobs `. + + The ``fetch_decimals`` parameter specifies whether to return + ``decimal.Decimal`` values when fetching columns of type ``NUMBER``. + The default value is + :data:`oracledb.defaults.fetch_decimals `. + """ + op_impl = PipelineOpImpl( + op_type=PipelineOpType.FETCH_ONE, + statement=statement, + parameters=parameters, + rowfactory=rowfactory, + fetch_lobs=fetch_lobs, + fetch_decimals=fetch_decimals, + ) + return self._add_op(op_impl) + + @property + def operations(self) -> list[PipelineOp]: + """ + This read-only attribute returns the list of operations associated with + the pipeline. + """ + return self._operations + + +def create_pipeline() -> Pipeline: + """ + Creates a pipeline object which can be used to process a set of operations + against a database. + """ + pipeline = Pipeline.__new__(Pipeline) + pipeline._impl = PipelineImpl() + pipeline._operations = [] + return pipeline diff --git a/.venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/azure_config_provider.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/azure_config_provider.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f2d39fffa5a7e57544810abd03732f0845e77123 GIT binary patch literal 5601 zcmZu#TW{RP73PrKT`sj+U2MydFA3{9O*f5pgIt_T1t+SkG)`jGu$-h};}X=)Sfad3 zZiZYrTC9K~a{HFNv~Otv2?dI_?|ti2ANmuDfXGt|6iCruV4zXIGsD$NPFB#6bLPzL z%y+(XhT-I-YvA|i-!!)_f6p-fMU~?}8twvw7=qK;#tQ3GXB%&Pz;TIm_e210Xr~v*$_wDXR-DRwr7&@sselEa*gOj@}7D?7hYbXph%N+G*GkF^I6BaH(;NV|b_&<2r zfZa0Kd5`UyLzA<7u2EmVW>p?!2*PsNU5*L-llr>@&z3lY_|h@Vh0lzKl~381cd$?AwzO(CxL4 z;O%WhI5(vb#l3#!(RstAxVOHeq=}4hQej7phl7em8%mjs;*F+~t>$Mn*w$8Vy?1?i zCAfL(`s(uan@jKHr;6iME*hlDKl3Rq%tRcSJiUw&+DDdTFSXjhdRv^pID*Q_EQ9pvMvGBs* zBtcTvsi=~k)e&)CUHP~z)XZ{%S|}PcN^+VM${CSMDrczS0!b=ek*07b<*K?kMe->% z<@jiS2x0mo6h_%*jyVlav6-no=6~j4xiYSs%sw0ho4x4;}4A3eAXD6`!)yD z!7r>ucpILjMI$n7wD9tx0o<3!4^X#x1@+Rf1U@uUiKhb(_>xzL3_kk@_zrww&xD@4 zXsFtRs!bHNs;X5Njra<$sXkwh`rKtFd#U=UUrqI^EgHql|HX3>Ge3mSRd^k1w|O0{ zCOmFxb@1BFFir0#l6z6=iI00g3fw45ymjHdwf2)$58jg@Uchs_CE`8ry|CZOJT4&Z zq|Myw%P22xhn>F2T?OWCQpoLW2eeI$Cnu>mL&Y2wXQ_CMig_x|QE?tc!^!Qf6!Dt>xf7GTB9!=G{uk7q$5l&qB3xY;KzC6eQ+Y-ap%eijYIZ1(xsvKx$!$2 z$Yg{}ZhT^DY;xjIYjrSlbL6&OjBv@lOM}@LgsogM9N3zfmkz#%;AfXQ>TAGI5E zw-nda?%-M2odv%!w%D+Q_+ox)?v~-3Ps0}G&bqe6(3T$}`jwz-?pENV744(kUNhjO zV z7*M{5TJDTy^xd$X^}`M|s*A&u=iGGg(QgTECfOP@%Ix>R9O6h|OER96^xoWZDoGkEcMusnGq7{$(UzE<2Jcyn<3`>)+x zQ~{Ju;_7CW_0m^ct)DF|_~F9f*@ah{!NQ#%G+H_>OslmJ$E92%cAurt_;uLm@pp3a^@!F5^&gQ;NJo;KdCpFLlGLy_uIbWYX_R@)_SH zdeehw7OUnqd@q$xqE%j}A#5^6UI8d^k&ERGYM`*|ySg7SnLk;)7YukZ{N#_1&LE&1 zBhVSN-o<8;-1|F5ONm1b(3)#HHW3>|aNBZBip;i>H~=I4$y?AoktPxtDIZqE_HVq5 zE?^nsxM%^G0LWR;0AOONI<8qnV*8*r0$OD3mNR>3fv`Yid-kwQX<{J(*yt<8rzJ>{ zG8WS6NV;1YR=A5R)&r!H6^NBK0ezlOrjCS&jKcR^G1+ z0eSSE1eLOVz@08(oIqY5+|r~flQyz-p|4;kq7?`Bv`fK*?G27O4;$?2+ps^Fh2>WUysf(~wg zelcrsTo`QNx(*^0GQuYXtGAOhs_G^niC>PPn&O+HqAbxDgt{evieBHyC5iJDa4EzCxVVkzT#?{fe6%tLtLmWN zgtvHi6X|Ut*Xd9ubS#RFPdbc?gVsANzF}!76xZp7DT&k7k{UJ+u1FqKgpu!36B+VR zYfx^CgsE_0a$bDvGg3M!!$vORQ=g|$3~E|)K{-3{(SoqSZa1FLr}s9hzBBq#lh;6= z_^8uVfovQL{W;aWc@#2>tte=W8o@t`OPZR4Qq62-xQ;ZZ>o|uzpmRxcXxG{ z)>md?5_K`wS7dcLa+@{Pxn~^9<*-}}+pOa!EO2L;1wAvvQ^Z7Gl z`N-a5s#I_4j_oXV6W;HLs~(0;X?`SnCS9&;>hD6;sXEU%FSw37J3ZrEaGr9U8v8%} C62r;> literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/azure_tokens.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/azure_tokens.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56164e52be42ae833259775a2057c7503a24ba38 GIT binary patch literal 3506 zcmZ`+TW{RP6`movT<&Uh^CgMYMq%BHy>6^+8^=WoBd}xGP772C>YxvNAt=tQmMe;6 zX1KB?P%n{y7HIv}KDhy;J``|&5?}k2ztCIqo#9H>`a)q2&&+b>%sJ;f7e({)U54kM ze_0=Ya+$Gz(d7Ko!sHHy{xgVRf~PEK-aO!DZUvTk+kyR%2}{^VOxV(qeB3&80#`Vq zb;N?Ua77z$Pk5q(cSm%^9Nt~g6Z3e_iMPa}SUTcCPb`ZISecjhctKqJ8yA z^qeUVFGK$QcreO$&2cT z<$r>qiSf9Z#~l3WLp=HP9)|utNXf>$f<;#tsAZ_V!i4kGhNW5?btg^}nU!H8>g6dL zD=Dy)L}}fLV8~o0cZ(uT;;2mW>^ZO9 zB2v+geqle=!Tx$N+?*t-2Mn7@|4Wr*Wm=by&@&jJ+ zQ$4r1u%7Y*Ahoh~nYvzqTVao&Gikj4+pdr2ce0$QO#9_X`cWK94VJ9z4|C;{(qw=} z13%J!Nqc?e$Lf0Zd3P~!y1=u^ev-7{Z15rIY~}E8A3+b*cw<} zHgZFf8OCJEt-y}sD3~`ZO6nrdAp8t`jq%pP>4n0x3xzNIrhkFEXz~(kd9bGUt?K|S zZ($x2a!wzzq=R9sc?V3zj)9dESPxdSwk@?<0zHR_N3tU3@0V7^Dt?GKD{bLa)-xtr zU)zWLE5sq}>jF{c;zNW^aN!k1>7bWq;ieo#=`hTP`|tfai*u!9T>86FI+17g59xqk z`88kfJGH$f%lbMY^5$>z&Aj=h`+E|2U#VQd4GTibLd!U8 zz*=`FFmU5W^)@W?vIAD$D1q$Q*q(Q}Xa2gDdJn5JNG6A#Me5%%c{NJ0;;gWtbHGb> z41`bp!X{kZtgNx|fkD4r*<+{q8t88U{f=-eXO}BcwnV#fp0Tej@=@g+yTZjeEyH=> z+_F7xAA6N6I`1&>opJZXI%p$r%vHQe0fAm!AaW68fAtF! zL6o>(h-1yCHe2mP{o-Xx!wRf8P>MmIpo>1_4%YecJk)nKG zckVxlWkCn46`Fehge;RCS5!SAEe(g{#R?XaDxaH5;Y+5Ga^4H;uCqD+rNh&1cs(v%(9wV#ohln?Ni4) z+~VH^fldVhiN*jGgwQ&K{RG6N}6bux8G>)upD>+19 zj1<+DmqMXl*qUCY$(Uc^6HTaQP7ml;H^I#$Khl^qH(FESC#@%FEJ#07glymuDG#eW zzgF>Me!@zWb0E*ze`vHv`c5eNsfb6VFQ1euYRYJn!hKZJGC~*SM^sx9;a@eCiFCbc zPS|*0l!1l@G-t}AwOM}UxYz1^aTMvWY0}Ql{u9*Elqwkf?~wYpz^et2*V=&WU{XlQ z{)lGnkgF?yU_)pwtRwG$W6gpc?5ETiH!aME=Jv+nH*_K6WSGSMD9^V|^_;pQ$+n=l zNnwqvXM|IqNP;OaO|fc(17vVOpHt^TPE#L(^tt+gc+#M8yy@Q-n#LuL(sUCI>@)mo z+ET{%ubt~#L%P`d?KH=S`s4N4O*oovumKksBayh;*0O~BMH2T*A|~$|=|=F<%cuVp zA5G!bwR*Pt2=hLF&|fxrpmt<7*-`U!5@i&eU#i-jpG zm`9JBp-K6?>10Vja7oFnM3?9i8oU`r&jp6LwYji&yZQg(V`>64l?}877KVMv@jP$A P>w2r+TDRkMm*&3%64^^~ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/end_user_sec_provider.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/end_user_sec_provider.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef6e6f9be8754bf9ee0302c60bd28931fd0f669a GIT binary patch literal 3542 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/oci_tokens.cpython-39.pyc b/.venv/lib/python3.9/site-packages/oracledb/plugins/__pycache__/oci_tokens.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a7e7b678a74a5753e9f2ebd84b70d11583ebcfe GIT binary patch literal 7605 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 m3zSvEPb1v6S1VrCTk?K{vW}uXyiQSG?+C{eJ dict: + """ + Parse the parameters from the protocol argument string. + """ + pos = protocol_arg.find("?") + parsed_url = urlparse(protocol_arg[pos + 1 :]) + parsed_values = parse_qs(parsed_url.path) + parameters = { + key.lower(): value[0] for key, value in parsed_values.items() + } + config_name = protocol_arg[:pos].rstrip("/") + if not config_name.endswith(".azconfig.io"): + config_name += ".azconfig.io" + parameters["appconfigname"] = config_name + return parameters + + +def password_type_azure_vault_hook(args): + uri = _get_required_parameter(args, "value", '"password" key section') + credential = args.get("credential") + + if credential is None: + # if credential not present, this might be coming + # from oci config provider, so create credential + # for azure key vault. + auth = args.get("authentication") + if auth is None: + raise Exception( + "Azure Vault authentication details were not provided." + ) + credential = _get_credential(auth) + + pattern = re.compile( + r"(?Phttps://[A-Za-z0-9._-]+)/" + r"secrets/(?P[A-Za-z][A-Za-z0-9-]*)$" + ) + match = pattern.match(uri) + if match is None: + raise Exception("Invalid Azure Vault details") + vault_url = match.group("vault_url") + secret_key = match.group("secretKey") + secret_client = SecretClient(vault_url, credential) + return secret_client.get_secret(secret_key).value + + +def _process_config(parameters, connect_params): + """ + Processes the configuration stored in the Azure App configuration store. + """ + + credential = _get_credential(parameters) + client = AzureAppConfigurationClient( + "https://" + _get_required_parameter(parameters, "appconfigname"), + credential, + ) + key = _get_required_parameter(parameters, "key") + label = parameters.get("label") + + # get the common parameters + config = {} + config["connect_descriptor"] = _get_setting( + client, key, "connect_descriptor", label + ) + config["user"] = _get_setting(client, key, "user", label, required=False) + pwd = _get_setting(client, key, "password", label, required=False) + if pwd is not None: + config["password"] = _get_password(pwd, parameters) + + config["config_time_to_live"] = _get_setting( + client, key, "config_time_to_live", label, required=False + ) + config["config_time_to_live_grace_period"] = _get_setting( + client, key, "config_time_to_live_grace_period", label, required=False + ) + + # get the python-oracledb specific parameters + settings = _get_setting(client, key, "pyo", label, required=False) + if settings is not None: + config["pyo"] = json.loads(settings) + + # set the configuration + connect_params.set_from_config(config) + + +def config_azure_hook(protocol, protocol_arg, connect_params): + """ + Hook for handling parameters stored in an Azure configuration store. + """ + parameters = _parse_parameters(protocol_arg) + _process_config(parameters, connect_params) + + +oracledb.register_password_type("azurevault", password_type_azure_vault_hook) +oracledb.register_protocol("config-azure", config_azure_hook) diff --git a/.venv/lib/python3.9/site-packages/oracledb/plugins/azure_tokens.py b/.venv/lib/python3.9/site-packages/oracledb/plugins/azure_tokens.py new file mode 100644 index 0000000..aef484c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/plugins/azure_tokens.py @@ -0,0 +1,162 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# azure_tokens.py +# +# Methods that generates an OAuth2 access token using the MSAL SDK +# ----------------------------------------------------------------------------- + +import datetime +import enum + +import msal +import oracledb + + +class AuthType(str, enum.Enum): + AzureServicePrincipal = "AzureServicePrincipal".lower() + + +def _build_msal_app(params): + return msal.ConfidentialClientApplication( + client_id=params["client_id"], + client_credential=params["client_credential"], + authority=params["authority"], + ) + + +def _service_principal_credentials(token_auth_config): + """ + Returns the access token for authentication as a service principal. + """ + # Initialize the Confidential Client Application + cca = _build_msal_app(token_auth_config) + auth_response = cca.acquire_token_for_client( + scopes=[token_auth_config["scopes"]] + ) + + if "access_token" in auth_response: + return auth_response["access_token"] + + +def get_database_access_token(deepsec_params, user_token): + auth_flow = deepsec_params.get("auth_flow") + if auth_flow == "client_credentials": + return get_database_access_token_client_cred_flow(deepsec_params) + elif auth_flow == "on_behalf_of": + return get_database_access_token_obo_flow(deepsec_params, user_token) + else: + raise ValueError(f"Incorrect value for auth_flow: {auth_flow}.") + + +def get_database_access_token_client_cred_flow(deepsec_params): + key = ( + deepsec_params["authority"], + deepsec_params["client_id"], + deepsec_params["client_credential"], + deepsec_params["scopes"], + ) + secret_value = oracledb.get_secret(key) + if secret_value is not None: + return secret_value.value + + # fetch fresh token, if not present in cache + app = _build_msal_app(deepsec_params) + result = app.acquire_token_for_client(scopes=[deepsec_params["scopes"]]) + if "access_token" not in result: + raise Exception(f"Token acquisition failed: {result}") + + token = result.get("access_token") + expires_in = result.get("expires_in") + expires = datetime.datetime.fromtimestamp( + expires_in - 60, datetime.timezone.utc + ) + oracledb.save_secret(key, token, expires=expires) + return token + + +def get_database_access_token_obo_flow(deepsec_params, user_token): + key = ( + user_token, + deepsec_params["authority"], + deepsec_params["client_id"], + deepsec_params["client_credential"], + deepsec_params["scopes"], + ) + secret_value = oracledb.get_secret(key) + if secret_value is not None: + return secret_value.value + + # fetch fresh token, if not present in cache + app = _build_msal_app(deepsec_params) + result = app.acquire_token_on_behalf_of( + user_assertion=user_token, + scopes=[deepsec_params["scopes"]], + ) + if "access_token" not in result: + raise Exception(f"OBO token acquisition failed: {result}") + + token = result.get("access_token") + expires_in = result.get("expires_in") + expires = datetime.datetime.fromtimestamp( + expires_in - 60, datetime.timezeon.utc + ) + oracledb.save_secret(key, token, expires=expires) + return token + + +def generate_token(token_auth_config, refresh=False): + """ + Generates an Azure access token based on provided credentials. + """ + auth_type = token_auth_config["auth_type"].lower() + if auth_type == AuthType.AzureServicePrincipal: + return _service_principal_credentials(token_auth_config) + + +def has_azure_auth_type(extra_auth_params): + """ + Validates that extra_auth_params contains a valid 'auth_type' + """ + if extra_auth_params is None: + return False + auth_type = extra_auth_params.get("auth_type") + return auth_type is not None and auth_type.lower() in AuthType + + +def azure_token_hook(params: oracledb.ConnectParams): + """ + Azure-specific hook for generating a token. + """ + if has_azure_auth_type(params.extra_auth_params): + + def token_callback(refresh): + return generate_token(params.extra_auth_params, refresh) + + params.set(access_token=token_callback) + + +# Register the token hook for Azure +oracledb.register_params_hook(azure_token_hook) diff --git a/.venv/lib/python3.9/site-packages/oracledb/plugins/end_user_sec_provider.py b/.venv/lib/python3.9/site-packages/oracledb/plugins/end_user_sec_provider.py new file mode 100644 index 0000000..c171067 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/plugins/end_user_sec_provider.py @@ -0,0 +1,136 @@ +# ------------------------------------------------------------------------------ +# Copyright (c) 2026 Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + +# ------------------------------------------------------------------------------ +# end_user_sec_provider.pyx +# +# Python file that automates token retrieval and context setup. +# ------------------------------------------------------------------------------ + +import importlib +import json +import oracledb + +# key to use in thread local cache +END_USER_IDENTITY_KEY = "EUC_END_USER_IDENTITY" + + +def set_end_user_identity(value): + if not ( + value is None + or isinstance(value, str) + or ( + isinstance(value, (list, tuple)) + and len(value) == 2 + and all(isinstance(v, str) for v in value) + ) + ): + raise ValueError( + "End user identity must be None, a string or a 2-tuple " + "(end_user_name, key) and each entry in the tuple must be a string" + ) + oracledb.save_secret( + END_USER_IDENTITY_KEY, + json.dumps(value), + thread_local=True, + ) + + +def get_end_user_identity(): + secret = oracledb.get_secret(END_USER_IDENTITY_KEY, thread_local=True) + if secret is not None: + return json.loads(secret.value) + + +# Django specific Middleware +class EndUserSecMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + identity = None + try: + identity = json.loads(request.COOKIES["identity"]) + except KeyError: + auth_header = request.META.get("HTTP_AUTHORIZATION") + if auth_header is not None and auth_header.startswith("Bearer "): + identity = auth_header.split()[1] + set_end_user_identity(identity) + return self.get_response(request) + + +def validate_context_value(identity, auth_flow): + """ + Returns (end_user_name, key) or end_user_token. + + - If value is a string => (OBO can be used) + - If value is a tuple/list => (OBO should not be used) + expected format: (end_user_name, key) + """ + if auth_flow == "on_behalf_of" and isinstance(identity, (tuple, list)): + raise ValueError( + "auth_flow='on_behalf_of': cannot be used with " + "(end_user_name, key)." + ) + + +def get_end_user_sec_context(end_user_sec_params, identity): + spi_type = end_user_sec_params["spi_type"] + supporting_plugin = importlib.import_module(f"oracledb.plugins.{spi_type}") + database_access_token = supporting_plugin.get_database_access_token( + end_user_sec_params, identity + ) + return oracledb.create_end_user_security_context( + end_user_identity=identity, + database_access_token=database_access_token, + data_roles=end_user_sec_params.get("data_roles"), + attributes=end_user_sec_params.get("attributes"), + ) + + +def has_security_params(extra_auth_params): + return bool( + extra_auth_params and extra_auth_params.get("end_user_sec_params") + ) + + +def end_user_sec_context_hook(params: oracledb.ConnectParams): + if has_security_params(params.extra_auth_params): + end_user_sec_params = params.extra_auth_params["end_user_sec_params"] + + def on_connect_callback(connection: oracledb.Connection): + auth_flow = end_user_sec_params["auth_flow"] + identity = get_end_user_identity() + if identity is not None: + validate_context_value(identity, auth_flow) + context = get_end_user_sec_context( + end_user_sec_params, identity + ) + connection.set_end_user_security_context(context) + + params.set(on_connect_callback=on_connect_callback) + + +# Register the hook for end_user_sec_provider +oracledb.register_params_hook(end_user_sec_context_hook) diff --git a/.venv/lib/python3.9/site-packages/oracledb/plugins/oci_config_provider.py b/.venv/lib/python3.9/site-packages/oracledb/plugins/oci_config_provider.py new file mode 100644 index 0000000..7abf3aa --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/plugins/oci_config_provider.py @@ -0,0 +1,253 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2024, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# oci_config_provider.py +# +# Python file contains the hook method config_oci_hook() that fetches config +# store from OCI Object Storage. +# ----------------------------------------------------------------------------- + +import base64 +import json +import oci +import oracledb +import re + +from urllib.parse import urlparse, parse_qs + +oci_from_file = oci.config.from_file +oci_client_error = oci.exceptions.ClientError +oci_object_storage_client = oci.object_storage.ObjectStorageClient +oci_secrets_client = oci.secrets.SecretsClient + + +""" +Pattern to parse OCI Object Connect String +""" +cloud_net_naming_pattern_oci = re.compile( + r"(?P[^/]+)/n/(?P[^/]+)/b/(?P[^/]+)/o/(?P[^/]+)(/c/(?P[^/]+))?" +) + + +def _get_config(parameters, connect_params): + config = {} + + credential, signer = _get_credential(parameters) + auth_method = parameters.get("authentication") + if auth_method is not None: + auth_method = auth_method.upper() + + if auth_method is None or auth_method == "OCI_DEFAULT": + client_oci = oci_object_storage_client(credential) + elif ( + auth_method == "OCI_INSTANCE_PRINCIPAL" + or auth_method == "OCI_RESOURCE_PRINCIPAL" + ): + client_oci = oci_object_storage_client( + config=credential, signer=signer + ) + get_object_request = { + "object_name": _get_required_parameter(parameters, "filename"), + "bucket_name": _get_required_parameter(parameters, "bucketname"), + "namespace_name": _get_required_parameter(parameters, "namespace"), + } + + get_object_response = client_oci.get_object(**get_object_request) + resp = _stream_to_string(get_object_response.data) + settings = json.loads(resp) + user_alias = parameters.get("alias") + if user_alias: + settings = settings[user_alias] + + # Connect Descriptor + config["connect_descriptor"] = _get_required_parameter( + settings, "connect_descriptor" + ) + + # user and password + if connect_params.user is None: + config["user"] = settings.get("user") + if "password" in settings: + config["password"] = pwd = settings["password"] + if pwd["type"] == "ocivault": + authentication = pwd.setdefault("authentication", {}) + authentication.setdefault("method", auth_method) + authentication["credential"] = credential + + # config cache settings + config["config_time_to_live"] = settings.get("config_time_to_live") + config["config_time_to_live_grace_period"] = settings.get( + "config_time_to_live_grace_period" + ) + + # pyo parameters settings + config["pyo"] = settings.get("pyo", None) + + # set the configuration + connect_params.set_from_config(config) + + +def _get_credential(parameters): + """ + Returns the appropriate credential given the input supplied by the original + connect string. + """ + auth_method = parameters.get("authentication", parameters.get("method")) + + if auth_method is not None: + auth_method = auth_method.upper() + + # if region is not in connection string, retrieve from object server name. + region = parameters.get( + "oci_region", _retrieve_region(parameters.get("objservername")) + ) + + try: + if auth_method is None or auth_method == "OCI_DEFAULT": + # Default Authentication + # default path ~/.oci/config + return oci_from_file(), None + except oci.exceptions.ClientError: + # try to create config with connection string parameters. + if "oci_tenancy" in parameters and "oci_user" in parameters: + with open(parameters["oci_key_file"], "r") as file_content: + public_key = file_content.read() + provider = dict( + tenancy=parameters["oci_tenancy"], + user=parameters["oci_user"], + fingerprint=parameters["oci_fingerprint"], + key_file=parameters["oci_key_file"], + private_key_content=public_key, + region=region, + ) + return provider, None + + if auth_method == "OCI_INSTANCE_PRINCIPAL": + signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner() + return ( + dict(region=region), + signer, + ) + + elif auth_method == "OCI_RESOURCE_PRINCIPAL": + signer = oci.auth.signers.get_resource_principals_signer() + return {}, signer + else: + msg = "Authentication options were not available in Connection String" + raise Exception(msg) + + +def _get_required_parameter(parameters, name, location="connection string"): + try: + return parameters[name] + except KeyError: + message = f'Parameter named "{name}" is missing from {location}' + raise Exception(message) from None + + +def _parse_parameters(protocol_arg: str) -> dict: + """ + Parse the parameters from the protocol argument string. + """ + pos = protocol_arg.find("?") + parsed_url = urlparse(protocol_arg[pos + 1 :]) + parsed_values = parse_qs(parsed_url.path) + parameters = { + key.lower(): value[0] for key, value in parsed_values.items() + } + + match = cloud_net_naming_pattern_oci.match(protocol_arg[:pos]) + if match: + parameters["objservername"] = match.group("objservername") + parameters["namespace"] = match.group("namespace") + parameters["bucketname"] = match.group("bucketname") + parameters["filename"] = match.group("filename") + if match.group("alias"): + parameters["alias"] = match.group("alias") + return parameters + + +def password_type_oci_vault_hook(args): + secret_id = _get_required_parameter( + args, "value", '"password" key section' + ) + authentication = args.get("authentication") + if authentication is None: + raise Exception( + "OCI Key Vault authentication details were not provided." + ) + + # if credentials are not present, create credentials with given + # authentication details. + credential = authentication.get("credential") + if credential is None: + credential, signer = _get_credential(authentication) + + auth_method = authentication.get("method") + if auth_method is not None: + auth_method = auth_method.upper() + if auth_method is None or auth_method == "OCI_DEFAULT": + secret_client_oci = oci_secrets_client(credential) + elif auth_method == "OCI_INSTANCE_PRINCIPAL": + signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner() + secret_client_oci = oci_secrets_client( + config=credential, signer=signer + ) + elif auth_method == "OCI_RESOURCE_PRINCIPAL": + signer = oci.auth.signers.get_resource_principals_signer() + secret_client_oci = oci_secrets_client( + config=credential, signer=signer + ) + + get_secret_bundle_response = secret_client_oci.get_secret_bundle( + secret_id=secret_id + ) + # decoding the vault content + b64content = get_secret_bundle_response.data.secret_bundle_content.content + return base64.b64decode(b64content).decode() + + +def _retrieve_region(objservername): + if objservername is not None: + arr = objservername.split(".") + return arr[1].lower().replace("_", "-") + + +def _stream_to_string(stream): + return b"".join(stream).decode() + + +def config_oci_hook( + protocol: str, protocol_arg: str, connect_params: oracledb.ConnectParams +): + """ + Hook for handling parameters stored in an OCI Object store. + """ + parameters = _parse_parameters(protocol_arg) + _get_config(parameters, connect_params) + + +oracledb.register_password_type("ocivault", password_type_oci_vault_hook) +oracledb.register_protocol("config-ociobject", config_oci_hook) diff --git a/.venv/lib/python3.9/site-packages/oracledb/plugins/oci_tokens.py b/.venv/lib/python3.9/site-packages/oracledb/plugins/oci_tokens.py new file mode 100644 index 0000000..80319e6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/plugins/oci_tokens.py @@ -0,0 +1,292 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# oci_tokens.py +# +# Methods that generates an OCI access token using the OCI SDK +# ----------------------------------------------------------------------------- + +import base64 +import datetime +import enum +import pathlib + +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import rsa +import oci +import oracledb +import requests + + +class AuthType(str, enum.Enum): + ConfigFileAuthentication = "ConfigFileAuthentication".lower() + InstancePrincipal = "InstancePrincipal".lower() + ResourcePrincipal = "ResourcePrincipal".lower() + SecurityToken = "SecurityToken".lower() + SecurityTokenSimple = "SecurityTokenSimple".lower() + SimpleAuthentication = "SimpleAuthentication".lower() + + +def _config_file_based_authentication(token_auth_config): + """ + Config file base authentication implementation: config parameters + are provided in a file. + """ + config = _load_oci_config(token_auth_config) + client = oci.identity_data_plane.DataplaneClient(config) + return _generate_access_token(client, token_auth_config) + + +def _generate_access_token(client, token_auth_config): + """ + Token generation logic used by authentication methods. + """ + key_pair = _get_key_pair() + scope = token_auth_config.get("scope", "urn:oracle:db::id::*") + + details = oci.identity_data_plane.models.GenerateScopedAccessTokenDetails( + scope=scope, public_key=key_pair["public_key"] + ) + response = client.generate_scoped_access_token( + generate_scoped_access_token_details=details + ) + + return (response.data.token, key_pair["private_key"]) + + +def _get_key_pair(): + """ + Generates a public-private key pair for proof of possession. + """ + private_key = rsa.generate_private_key( + public_exponent=65537, + key_size=4096, + ) + private_key_pem = private_key.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.PKCS8, + encryption_algorithm=serialization.NoEncryption(), + ).decode("utf-8") + + public_key_pem = ( + private_key.public_key() + .public_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PublicFormat.SubjectPublicKeyInfo, + ) + .decode("utf-8") + ) + + if not oracledb.is_thin_mode(): + private_key_pem = "".join( + line.strip() + for line in private_key_pem.splitlines() + if not ( + line.startswith("-----BEGIN") or line.startswith("-----END") + ) + ) + + return {"private_key": private_key_pem, "public_key": public_key_pem} + + +def _instance_principal_authentication(token_auth_config): + """ + Instance principal authentication: for compute instances + with dynamic group access. + """ + signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner() + client = oci.identity_data_plane.DataplaneClient(config={}, signer=signer) + return _generate_access_token(client, token_auth_config) + + +def _load_oci_config(token_auth_config): + """ + Load OCI configuration using the file location and profile specified + in token_auth_config, or fall back to OCI defaults. + """ + file_location = token_auth_config.get( + "file_location", oci.config.DEFAULT_LOCATION + ) + profile = token_auth_config.get("profile", oci.config.DEFAULT_PROFILE) + config = oci.config.from_file(file_location, profile) + return config + + +def _resource_principal_authentication(token_auth_config): + """ + Resource principal authentication: allows to access OCI resources + with a resource principal. + """ + signer = oci.auth.signers.get_resource_principals_signer() + client = oci.identity_data_plane.DataplaneClient(config={}, signer=signer) + return _generate_access_token(client, token_auth_config) + + +def _security_token_authentication(token_auth_config): + """ + Session token-based authentication: uses the security token specified by + the security_token_file parameter based on the OCI config file. + """ + config = _load_oci_config(token_auth_config) + client = _security_token_create_dataplane_client(config) + return _generate_access_token(client, token_auth_config) + + +def _security_token_create_dataplane_client(config): + """ + Create and return an OCI Identity Data Plane client using + the security token and private key specified in the given OCI config. + """ + token = pathlib.Path(config["security_token_file"]).read_text() + private_key = oci.signer.load_private_key_from_file(config["key_file"]) + signer = oci.auth.signers.SecurityTokenSigner(token, private_key) + return oci.identity_data_plane.DataplaneClient(config, signer=signer) + + +def _security_token_simple_authentication(token_auth_config): + """ + Session token-based authentication: uses security token authentication. + Config parameters are passed as parameters. + """ + config = { + "key_file": token_auth_config["key_file"], + "fingerprint": token_auth_config["fingerprint"], + "tenancy": token_auth_config["tenancy"], + "region": token_auth_config["region"], + "security_token_file": token_auth_config["security_token_file"], + } + client = _security_token_create_dataplane_client(config) + return _generate_access_token(client, token_auth_config) + + +def _simple_authentication(token_auth_config): + """ + Simple authentication: config parameters are passed as parameters + """ + config = { + "user": token_auth_config["user"], + "key_file": token_auth_config["key_file"], + "fingerprint": token_auth_config["fingerprint"], + "tenancy": token_auth_config["tenancy"], + "region": token_auth_config["region"], + "profile": token_auth_config["profile"], + } + + client = oci.identity_data_plane.DataplaneClient(config) + return _generate_access_token(client, token_auth_config) + + +def get_database_access_token(deepsec_params, user_token): + auth_flow = deepsec_params.get("auth_flow") + if auth_flow == "client_credentials": + return get_database_access_token_client_cred_flow(deepsec_params) + else: + raise ValueError(f"Incorrect value for auth_flow: {auth_flow}.") + + +# Function to get mid-tier app access token (OCI-IAM) +def get_database_access_token_client_cred_flow(end_user_sec_params): + key = ( + end_user_sec_params["authority"], + end_user_sec_params["client_id"], + end_user_sec_params["client_credential"], + end_user_sec_params["scopes"], + ) + secret_value = oracledb.get_secret(key) + if secret_value is not None: + return secret_value.value + + # fetch fresh token, if not present in cache + auth_str = f"{end_user_sec_params.get('client_id')}:{end_user_sec_params.get('client_credential')}" + b64_auth = base64.b64encode(auth_str.encode()).decode() + headers = { + "Authorization": f"Basic {b64_auth}", + "Content-Type": "application/x-www-form-urlencoded", + } + payload = { + "grant_type": "client_credentials", + "scope": end_user_sec_params.get("scopes"), + } + response = requests.post( + end_user_sec_params.get("authority"), headers=headers, data=payload + ) + if response.status_code == 200: + result = response.json() + token = result.get("access_token") + expires_in = result.get("expires_in") + else: + raise RuntimeError(f"Token request failed: {response.status_code}") + + # save token in the cache + expires = datetime.datetime.fromtimestamp( + expires_in - 60, datetime.timezone.utc + ) + oracledb.save_secret(key, token, expires=expires) + return token + + +def generate_token(token_auth_config, refresh=False): + """ + Generates an OCI access token based on provided credentials. + """ + auth_type = token_auth_config["auth_type"].lower() + if auth_type == AuthType.ConfigFileAuthentication: + return _config_file_based_authentication(token_auth_config) + elif auth_type == AuthType.InstancePrincipal: + return _instance_principal_authentication(token_auth_config) + elif auth_type == AuthType.ResourcePrincipal: + return _resource_principal_authentication(token_auth_config) + elif auth_type == AuthType.SecurityToken: + return _security_token_authentication(token_auth_config) + elif auth_type == AuthType.SecurityTokenSimple: + return _security_token_simple_authentication(token_auth_config) + elif auth_type == AuthType.SimpleAuthentication: + return _simple_authentication(token_auth_config) + + +def has_oci_auth_type(extra_auth_params): + """ + Validates that extra_auth_params contains a valid 'auth_type' + """ + if extra_auth_params is None: + return False + auth_type = extra_auth_params.get("auth_type") + return auth_type is not None and auth_type.lower() in AuthType + + +def oci_token_hook(params: oracledb.ConnectParams): + """ + OCI-specific hook for generating a token. + """ + if has_oci_auth_type(params.extra_auth_params): + + def token_callback(refresh): + return generate_token(params.extra_auth_params, refresh) + + params.set(access_token=token_callback) + + +# Register the token hook for OCI +oracledb.register_params_hook(oci_token_hook) diff --git a/.venv/lib/python3.9/site-packages/oracledb/pool.py b/.venv/lib/python3.9/site-packages/oracledb/pool.py new file mode 100644 index 0000000..1dc8932 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/pool.py @@ -0,0 +1,1723 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# pool.py +# +# Contains the ConnectionPool class and the factory method create_pool() used +# for creating connection pools. +# +# *** NOTICE *** This file is generated from a template and should not be +# modified directly. See build_from_template.py in the utils subdirectory for +# more information. +# ----------------------------------------------------------------------------- + +import functools +import ssl +import threading +from typing import Callable, Type, Union, Any, Optional + +import oracledb + +from . import base_impl, thick_impl, thin_impl +from . import connection as connection_module +from . import driver_mode +from . import errors +from .base import BaseMetaClass +from .pool_params import PoolParams + + +class BaseConnectionPool(metaclass=BaseMetaClass): + _impl = None + + def __init__( + self, + dsn: Optional[str] = None, + *, + params: Optional[PoolParams] = None, + cache_name: Optional[str] = None, + **kwargs, + ) -> None: + """ + Constructor for creating a connection pool. + """ + if params is None: + params_impl = base_impl.PoolParamsImpl() + elif not isinstance(params, PoolParams): + errors._raise_err(errors.ERR_INVALID_POOL_PARAMS) + else: + params_impl = params._impl.copy() + with driver_mode.get_manager() as mode_mgr: + thin = mode_mgr.thin + dsn = params_impl.process_args(dsn, kwargs, thin) + self._set_connection_type(params_impl.connectiontype) + self._cache_name = cache_name + if cache_name is not None: + named_pools.add_pool(cache_name, self) + try: + if issubclass( + self._connection_type, connection_module.AsyncConnection + ): + impl = thin_impl.AsyncThinPoolImpl(dsn, params_impl) + elif thin: + impl = thin_impl.ThinPoolImpl(dsn, params_impl) + else: + impl = thick_impl.ThickPoolImpl(dsn, params_impl) + self._impl = impl + self.session_callback = params_impl.session_callback + self.on_connect_callback = params_impl.on_connect_callback + except: + if cache_name is not None: + del named_pools.pools[cache_name] + raise + + def _verify_open(self) -> None: + """ + Verifies that the pool is open and able to perform its work. + """ + if self._impl is None: + errors._raise_err(errors.ERR_POOL_NOT_OPEN) + + @property + def busy(self) -> int: + """ + This read-only attribute returns the number of connections currently + acquired. + """ + self._verify_open() + return self._impl.get_busy_count() + + @property + def dsn(self) -> str: + """ + This read-only attribute returns the TNS entry of the database to which + a connection has been established. + """ + self._verify_open() + return self._impl.dsn + + @property + def getmode(self) -> oracledb.PoolGetMode: + """ + This read-write attribute determines how connections are returned from + the pool. If :data:`~oracledb.POOL_GETMODE_FORCEGET` is specified, a + new connection will be returned even if there are no free connections + in the pool. :data:`~oracledb.POOL_GETMODE_NOWAIT` will raise an + exception if there are no free connections are available in the pool. + If :data:`~oracledb.POOL_GETMODE_WAIT` is specified and there are no + free connections in the pool, the caller will wait until a free + connection is available. :data:`~oracledb.POOL_GETMODE_TIMEDWAIT` uses + the value of :data:`~ConnectionPool.wait_timeout` to determine how long + the caller should wait for a connection to become available before + returning an error. + """ + self._verify_open() + return oracledb.PoolGetMode(self._impl.get_getmode()) + + @getmode.setter + def getmode(self, value: oracledb.PoolGetMode) -> None: + self._verify_open() + self._impl.set_getmode(value) + + @property + def homogeneous(self) -> bool: + """ + This read-only boolean attribute indicates whether the pool is + considered :ref:`homogeneous ` or not. If the pool is + not homogeneous, different authentication can be used for each + connection acquired from the pool. + """ + self._verify_open() + return self._impl.homogeneous + + @property + def increment(self) -> int: + """ + This read-only attribute returns the number of connections that will be + established when additional connections need to be created. + """ + self._verify_open() + return self._impl.increment + + @property + def max(self) -> int: + """ + This read-only attribute returns the maximum number of connections that + the pool can control. + """ + self._verify_open() + return self._impl.max + + @property + def max_lifetime_session(self) -> int: + """ + This read-write attribute is the maximum length of time (in seconds) + that a pooled connection may exist since first being created. A value + of *0* means there is no limit. Connections become candidates for + termination when they are acquired or released back to the pool, and + have existed for longer than ``max_lifetime_session`` seconds. + Connections that are in active use will not be closed. In + python-oracledb Thick mode, Oracle Client libraries 12.1 or later must + be used and, prior to Oracle Client 21, cleanup only occurs when the + pool is accessed. + """ + self._verify_open() + return self._impl.get_max_lifetime_session() + + @max_lifetime_session.setter + def max_lifetime_session(self, value: int) -> None: + self._verify_open() + self._impl.set_max_lifetime_session(value) + + @property + def max_sessions_per_shard(self) -> int: + """ + This read-write attribute returns the number of sessions that can be + created per shard in the pool. Setting this attribute greater than zero + specifies the maximum number of sessions in the pool that can be used + for any given shard in a sharded database. This lets connections in the + pool be balanced across the shards. A value of *0* will not set any + maximum number of sessions for each shard. This attribute is only + available in Oracle Client 18.3 and higher. + """ + self._verify_open() + return self._impl.get_max_sessions_per_shard() + + @max_sessions_per_shard.setter + def max_sessions_per_shard(self, value: int) -> None: + self._verify_open() + self._impl.set_max_sessions_per_shard(value) + + @property + def min(self) -> int: + """ + This read-only attribute returns the number of connections with which + the connection pool was created and the minimum number of connections + that will be controlled by the connection pool. + """ + self._verify_open() + return self._impl.min + + @property + def name(self) -> str: + """ + This read-only attribute returns the name assigned to the pool by + Oracle. + """ + self._verify_open() + return self._impl.name + + @property + def opened(self) -> int: + """ + This read-only attribute returns the number of connections currently + opened by the pool. + """ + self._verify_open() + return self._impl.get_open_count() + + @property + def ping_interval(self) -> int: + """ + This read-write integer attribute specifies the pool ping interval in + seconds. When a connection is acquired from the pool, a check is first + made to see how long it has been since the connection was put into the + pool. If this idle time exceeds ``ping_interval``, then a + :ref:`round-trip ` ping to the database is performed. If + the connection is unusable, it is discarded and a different connection + is selected to be returned by :meth:`acquire()`. Setting + ``ping_interval`` to a negative value disables pinging. Setting it to + *0* forces a ping for every :meth:`acquire()` and is not recommended. + """ + self._verify_open() + return self._impl.get_ping_interval() + + @ping_interval.setter + def ping_interval(self, value: int) -> None: + self._impl.set_ping_interval(value) + + @property + def soda_metadata_cache(self) -> bool: + """ + This read-write boolean attribute returns whether the SODA metadata + cache is enabled or not. Enabling the cache significantly improves the + performance of methods :meth:`SodaDatabase.createCollection()` (when + not specifying a value for the ``metadata`` parameter) and + :meth:`SodaDatabase.openCollection()`. Note that the cache can become + out of date if changes to the metadata of cached collections are made + externally. + """ + self._verify_open() + return self._impl.get_soda_metadata_cache() + + @soda_metadata_cache.setter + def soda_metadata_cache(self, value: bool) -> None: + if not isinstance(value, bool): + message = "soda_metadata_cache must be a boolean value." + raise TypeError(message) + self._verify_open() + self._impl.set_soda_metadata_cache(value) + + @property + def stmtcachesize(self) -> int: + """ + This read-write attribute specifies the size of the statement cache + that will be used for connections obtained from the pool. Once a + connection is created, that connection’s statement cache size can only + be changed by setting the ``stmtcachesize`` attribute on the connection + itself. + """ + self._verify_open() + return self._impl.get_stmt_cache_size() + + @stmtcachesize.setter + def stmtcachesize(self, value: int) -> None: + self._verify_open() + self._impl.set_stmt_cache_size(value) + + @property + def thin(self) -> bool: + """ + This read-only attribute returns a boolean indicating if + python-oracledb is in Thin mode (*True*) or Thick mode (*False*). + """ + self._verify_open() + return not isinstance(self._impl, thick_impl.ThickPoolImpl) + + @property + def timeout(self) -> int: + """ + This read-write attribute specifies the time (in seconds) after which + idle connections will be terminated in order to maintain an optimum + number of open connections. A value of *0* means that no idle + connections are terminated. Note that in python-oracledb Thick mode + with older Oracle Client Libraries, the termination only occurs when + the pool is accessed. + """ + self._verify_open() + return self._impl.get_timeout() + + @timeout.setter + def timeout(self, value: int) -> None: + self._verify_open() + self._impl.set_timeout(value) + + @property + def tnsentry(self) -> str: + """ + Deprecated. Use dsn instead. + """ + return self.dsn + + @property + def username(self) -> str: + """ + This read-only attribute returns the name of the user which established + the connection to the database. + """ + self._verify_open() + return self._impl.username + + @property + def wait_timeout(self) -> int: + """ + This read-write attribute specifies the time (in milliseconds) that the + caller should wait for a connection to become available in the pool + before returning with an error. This value is only used if the + ``getmode`` parameter to :meth:`oracledb.create_pool()` was the value + :data:`oracledb.POOL_GETMODE_TIMEDWAIT`. + """ + self._verify_open() + return self._impl.get_wait_timeout() + + @wait_timeout.setter + def wait_timeout(self, value: int) -> None: + self._verify_open() + self._impl.set_wait_timeout(value) + + +class ConnectionPool(BaseConnectionPool): + + def __del__(self): + if self._impl is not None: + self._impl.close(True) + self._impl = None + + def _set_connection_type(self, conn_class): + """ + Called internally when the pool is created to ensure that the correct + connection class is used for all connections created by the pool. + """ + if conn_class is None: + conn_class = connection_module.Connection + elif not issubclass( + conn_class, connection_module.Connection + ) or issubclass(conn_class, connection_module.AsyncConnection): + errors._raise_err(errors.ERR_INVALID_CONN_CLASS) + self._connection_type = conn_class + + def acquire( + self, + user: Optional[str] = None, + password: Optional[str] = None, + cclass: Optional[str] = None, + purity: int = oracledb.PURITY_DEFAULT, + tag: Optional[str] = None, + matchanytag: bool = False, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + ) -> "connection_module.Connection": + """ + Acquires a connection from the session pool and returns a + :ref:`connection object `. + + If the pool is :ref:`homogeneous `, the ``user`` and + ``password`` parameters cannot be specified. If they are, an exception + will be raised. + + The ``cclass`` parameter, if specified, should be a string + corresponding to the connection class for :ref:`drcp`. + + The ``purity`` parameter is expected to be one of + :data:`~oracledb.PURITY_NEW`, :data:`~oracledb.PURITY_SELF`, or + :data:`~oracledb.PURITY_DEFAULT`. + + The ``tag`` parameter, if specified, is expected to be a string with + name=value pairs like "k1=v1;k2=v2" and will limit the connections that + can be returned from a connection pool unless the ``matchanytag`` + parameter is set to *True*. In that case, connections with the + specified tag will be preferred over others, but if no such connections + are available, then a connection with a different tag may be returned + instead. In any case, untagged connections will always be returned if + no connections with the specified tag are available. Connections are + tagged when they are :meth:`released ` back to + the pool. + + The ``shardingkey`` and ``supershardingkey`` parameters, if specified, + are expected to be a sequence of values which will be used to identify + the database shard to connect to. The key values can be strings, + numbers, bytes, or dates. See :ref:`connsharding`. + + When using the :ref:`connection pool cache `, calling + :meth:`oracledb.connect()` with a ``pool_alias`` parameter is the same + as calling ``pool.acquire()``. + """ + self._verify_open() + + return oracledb.connect( + conn_class=self._connection_type, + user=user, + password=password, + cclass=cclass, + purity=purity, + tag=tag, + matchanytag=matchanytag, + shardingkey=shardingkey, + supershardingkey=supershardingkey, + on_connect_callback=self.on_connect_callback, + pool=self, + ) + + def close(self, force: bool = False) -> None: + """ + Closes the pool now, rather than when the last reference to it is + released, which makes it unusable for further work. + + If any connections have been acquired and not released back to the + pool, this method will fail unless the ``force`` parameter is set to + *True*. + """ + self._verify_open() + self._impl.close(force) + if self._cache_name is not None: + named_pools.remove_pool(self._cache_name) + self._impl = None + + def drop(self, connection: "connection_module.Connection") -> None: + """ + Drops the connection from the pool which is useful if the connection is + no longer usable (such as when the session is killed). + """ + self._verify_open() + if not isinstance(connection, connection_module.Connection): + message = "connection must be an instance of oracledb.Connection" + raise TypeError(message) + connection._verify_connected() + self._impl.drop(connection._impl) + connection._impl = None + + def reconfigure( + self, + min: Optional[int] = None, + max: Optional[int] = None, + increment: Optional[int] = None, + getmode: Optional[int] = None, + timeout: Optional[int] = None, + wait_timeout: Optional[int] = None, + max_lifetime_session: Optional[int] = None, + max_sessions_per_shard: Optional[int] = None, + soda_metadata_cache: Optional[bool] = None, + stmtcachesize: Optional[int] = None, + ping_interval: Optional[int] = None, + ) -> None: + """ + Reconfigures various parameters of a connection pool. The pool size can + be altered with ``reconfigure()`` by passing values for + :data:`~ConnectionPool.min`, :data:`~ConnectionPool.max` or + :data:`~ConnectionPool.increment`. The + :data:`~ConnectionPool.getmode`, :data:`~ConnectionPool.timeout`, + :data:`~ConnectionPool.wait_timeout`, + :data:`~ConnectionPool.max_lifetime_session`, + :data:`~ConnectionPool.max_sessions_per_shard`, + :data:`~ConnectionPool.soda_metadata_cache`, + :data:`~ConnectionPool.stmtcachesize` and + :data:`~ConnectionPool.ping_interval` attributes can be set directly or + with ``reconfigure()``. + + All parameters are optional. Unspecified parameters will leave those + pool attributes unchanged. The parameters are processed in two stages. + After any size change has been processed, reconfiguration on the other + parameters is done sequentially. If an error such as an invalid value + occurs when changing one attribute, then an exception will be generated + but any already changed attributes will retain their new values. + + During reconfiguration of a pool's size, the behavior of + :meth:`ConnectionPool.acquire()` depends on the ``getmode`` in effect + when ``acquire()`` is called: + + * With mode :data:`~oracledb.POOL_GETMODE_FORCEGET`, an ``acquire()`` + call will wait until the pool has been reconfigured. + + * With mode :data:`~oracledb.POOL_GETMODE_TIMEDWAIT`, an ``acquire()`` + call will try to acquire a connection in the time specified by + pool.wait_timeout and return an error if the time taken exceeds that + value. + + * With mode :data:`~oracledb.POOL_GETMODE_WAIT`, an ``acquire()`` call + will wait until after the pool has been reconfigured and a connection + is available. + + * With mode :data:`~oracledb.POOL_GETMODE_NOWAIT`, if the number of + busy connections is less than the pool size, ``acquire()`` will + return a new connection after pool reconfiguration is complete. + + Closing connections with :meth:`ConnectionPool.release()` or + :meth:`Connection.close()` will wait until any pool size + reconfiguration is complete. + + Closing the connection pool with :meth:`ConnectionPool.close()` will + wait until reconfiguration is complete. + """ + + if min is None: + min = self.min + if max is None: + max = self.max + if increment is None: + increment = self.increment + if self.min != min or self.max != max or self.increment != increment: + self._impl.reconfigure(min, max, increment) + if getmode is not None: + self.getmode = getmode + if timeout is not None: + self.timeout = timeout + if wait_timeout is not None: + self.wait_timeout = wait_timeout + if max_lifetime_session is not None: + self.max_lifetime_session = max_lifetime_session + if max_sessions_per_shard is not None: + self.max_sessions_per_shard = max_sessions_per_shard + if soda_metadata_cache is not None: + self.soda_metadata_cache = soda_metadata_cache + if stmtcachesize is not None: + self.stmtcachesize = stmtcachesize + if ping_interval is not None: + self.ping_interval = ping_interval + + def release( + self, + connection: "connection_module.Connection", + tag: Optional[str] = None, + ) -> None: + """ + Releases the connection back to the pool now, rather than whenever + __del__ is called. The connection will be unusable from this point + forward; an Error exception will be raised if any operation is + attempted with the connection. Any cursors or LOBs created by the + connection will also be marked unusable and an Error exception will be + raised if any operation is attempted with them. + + Internally, references to the connection are held by cursor objects, + LOB objects, etc. Once all of these references are released, the + connection itself will be released back to the pool automatically. + Either control references to these related objects carefully or + explicitly release connections back to the pool in order to ensure + sufficient resources are available. + + If the tag is not *None*, it is expected to be a string with name=value + pairs like "k1=v1;k2=v2" and will override the value in the property + :attr:`Connection.tag`. If either :attr:`Connection.tag` or the tag + parameter are not *None*, the connection will be retagged when it is + released back to the pool. + """ + self._verify_open() + if not isinstance(connection, connection_module.Connection): + message = "connection must be an instance of oracledb.Connection" + raise TypeError(message) + connection._verify_connected() + if tag is not None: + connection.tag = tag + self._impl.return_connection(connection._impl) + connection._impl = None + + +def _pool_factory( + f: Callable[..., ConnectionPool], +) -> Callable[..., ConnectionPool]: + """ + Decorator which checks the validity of the supplied keyword parameters by + calling the original function (which does nothing), then creates and + returns an instance of the requested ConnectionPool class. The base + ConnectionPool class constructor does not check the validity of the + supplied keyword parameters. + """ + + @functools.wraps(f) + def create_pool( + dsn: Optional[str] = None, + *, + pool_class: Type[ConnectionPool] = ConnectionPool, + pool_alias: Optional[str] = None, + params: Optional[PoolParams] = None, + **kwargs, + ) -> ConnectionPool: + f( + dsn=dsn, + pool_class=pool_class, + pool_alias=pool_alias, + params=params, + **kwargs, + ) + if not issubclass(pool_class, ConnectionPool): + errors._raise_err(errors.ERR_INVALID_POOL_CLASS) + return pool_class(dsn, params=params, cache_name=pool_alias, **kwargs) + + return create_pool + + +@_pool_factory +def create_pool( + dsn: Optional[str] = None, + *, + pool_class: Type[ConnectionPool] = ConnectionPool, + pool_alias: Optional[str] = None, + params: Optional[PoolParams] = None, + min: Optional[int] = None, + max: Optional[int] = None, + increment: Optional[int] = None, + connectiontype: Optional[Type["oracledb.Connection"]] = None, + getmode: Optional[oracledb.PoolGetMode] = None, + homogeneous: Optional[bool] = None, + timeout: Optional[int] = None, + wait_timeout: Optional[int] = None, + max_lifetime_session: Optional[int] = None, + session_callback: Optional[Callable] = None, + max_sessions_per_shard: Optional[int] = None, + soda_metadata_cache: Optional[bool] = None, + ping_interval: Optional[int] = None, + ping_timeout: Optional[int] = None, + user: Optional[str] = None, + proxy_user: Optional[str] = None, + password: Optional[str] = None, + newpassword: Optional[str] = None, + wallet_password: Optional[str] = None, + access_token: Optional[Union[str, tuple, Callable]] = None, + host: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[str] = None, + https_proxy: Optional[str] = None, + https_proxy_port: Optional[int] = None, + service_name: Optional[str] = None, + instance_name: Optional[str] = None, + sid: Optional[str] = None, + server_type: Optional[str] = None, + cclass: Optional[str] = None, + purity: Optional[oracledb.Purity] = None, + expire_time: Optional[int] = None, + retry_count: Optional[int] = None, + retry_delay: Optional[int] = None, + tcp_connect_timeout: Optional[float] = None, + ssl_server_dn_match: Optional[bool] = None, + ssl_server_cert_dn: Optional[str] = None, + wallet_location: Optional[str] = None, + events: Optional[bool] = None, + externalauth: Optional[bool] = None, + mode: Optional[oracledb.AuthMode] = None, + disable_oob: Optional[bool] = None, + stmtcachesize: Optional[int] = None, + edition: Optional[str] = None, + tag: Optional[str] = None, + matchanytag: Optional[bool] = None, + config_dir: Optional[str] = None, + appcontext: Optional[list] = None, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + debug_jdwp: Optional[str] = None, + connection_id_prefix: Optional[str] = None, + ssl_context: Optional[Any] = None, + sdu: Optional[int] = None, + pool_boundary: Optional[str] = None, + use_tcp_fast_open: Optional[bool] = None, + ssl_version: Optional[ssl.TLSVersion] = None, + program: Optional[str] = None, + machine: Optional[str] = None, + terminal: Optional[str] = None, + osuser: Optional[str] = None, + driver_name: Optional[str] = None, + use_sni: Optional[bool] = None, + thick_mode_dsn_passthrough: Optional[bool] = None, + extra_auth_params: Optional[dict] = None, + pool_name: Optional[str] = None, + on_connect_callback: Optional[Callable] = None, + handle: Optional[int] = None, +) -> ConnectionPool: + """ + Creates a connection pool with the supplied parameters and returns it. + + The ``dsn`` parameter (data source name) can be a string in the format + user/password@connect_string or can simply be the connect string (in + which case authentication credentials such as the username and password + need to be specified separately). See the documentation on connection + strings for more information. + + The ``pool_class`` parameter is expected to be ConnectionPool or a subclass + of ConnectionPool. + + The ``pool_alias`` parameter is expected to be a string representing the + name used to store and reference the pool in the python-oracledb connection + pool cache. If this parameter is not specified, then the pool will not be + added to the cache. The value of this parameter can be used with the + :meth:`oracledb.get_pool()` and :meth:`oracledb.connect()` methods to + access the pool. + + The ``params`` parameter is expected to be of type PoolParams and contains + parameters that are used to create the pool. See the documentation on + PoolParams for more information. If this parameter is not specified, the + additional keyword parameters will be used to create an instance of + PoolParams. If both the ``params`` parameter and additional keyword + parameters are specified, the values in the keyword parameters have + precedence. Note that if a ``dsn`` is also supplied, then in + python-oracledb Thin mode, the values of the parameters specified (if any) + within the dsn will override the values passed as additional keyword + parameters, which themselves override the values set in the ``params`` + parameter object. + + The following parameters are all optional. A brief description of each + parameter follows: + + - ``min``: the minimum number of connections the pool should contain + (default: 1) + + - ``max``: the maximum number of connections the pool should contain + (default: 2) + + - ``increment``: the number of connections that should be added to the pool + whenever the pool needs to grow + (default: 1) + + - ``connectiontype``: the class of the connection that should be returned + during calls to pool.acquire(). It must be oracledb.Connection or a + subclass of oracledb.Connection + (default: None) + + - ``getmode``: how pool.acquire() will behave. One of the constants + :data:`oracledb.POOL_GETMODE_WAIT`, :data:`oracledb.POOL_GETMODE_NOWAIT`, + :data:`oracledb.POOL_GETMODE_FORCEGET`, or + :data:`oracledb.POOL_GETMODE_TIMEDWAIT` + (default: :attr:`oracledb.POOL_GETMODE_WAIT`) + + - ``homogeneous``: a boolean indicating whether the connections in the pool + are homogeneous (same user) or heterogeneous (multiple users) + (default: True) + + - ``timeout``: the length of time (in seconds) that a connection may remain + idle in the pool before it is terminated. If it is 0 then connections are + never terminated + (default: 0) + + - ``wait_timeout``: the length of time (in milliseconds) that a caller + should wait when acquiring a connection from the pool with getmode set to + :data:`oracledb.POOL_GETMODE_TIMEDWAIT` + (default: 0) + + - ``max_lifetime_session``: the length of time (in seconds) that + connections can remain in the pool. If it is 0 then connections may + remain in the pool indefinitely + (default: 0) + + - ``session_callback``: a callable that is invoked when a connection is + returned from the pool for the first time, or when the connection tag + differs from the one requested + (default: None) + + - ``max_sessions_per_shard``: the maximum number of connections that may be + associated with a particular shard + (default: 0) + + - ``soda_metadata_cache``: a boolean indicating whether or not the SODA + metadata cache should be enabled + (default: False) + + - ``ping_interval``: the length of time (in seconds) after which an unused + connection in the pool will be a candidate for pinging when + pool.acquire() is called. If the ping to the database indicates the + connection is not alive a replacement connection will be returned by + pool.acquire(). If ping_interval is a negative value the ping + functionality will be disabled + (default: 60) + + - ``ping_timeout``: the maximum length of time (in milliseconds) to wait + for a connection in the pool to respond to an internal ping to the + database before being discarded and replaced during a call to acquire() + (default: 5000) + + - ``user``: the name of the database user to connect to + (default: None) + + - ``proxy_user``: the name of the proxy user to connect to. If this value + is not specified, it will be parsed out of user if user is in the form + "user[proxy_user]" + (default: None) + + - ``password``: the password for the database user + (default: None) + + - ``newpassword``: a new password for the database user. The new password + will take effect immediately upon a successful connection to the database + (default: None) + + - ``wallet_password``: the password to use to decrypt the wallet, if it is + encrypted. This is not the database password. For Oracle Autonomous + Database this is the password created when downloading the wallet. This + value is only used in python-oracledb Thin mode. + (default: None) + + - ``access_token``: a string, or a 2-tuple, or a callable. If it is a + string, it specifies an Entra ID OAuth2 token used for Open Authorization + (OAuth 2.0) token based authentication. If it is a 2-tuple, it specifies + the token and private key strings used for Oracle Cloud Infrastructure + (OCI) Identity and Access Management (IAM) token based authentication. If + it is a callable, it returns either a string or a 2-tuple used for OAuth + 2.0 or OCI IAM token based authentication and is useful when the pool + needs to expand and create new connections but the current authentication + token has expired + (default: None) + + - ``host``: the hostname or IP address of the machine hosting the database + or the database listener + (default: None) + + - ``port``: the port number on which the database listener is listening + (default: 1521) + + - ``protocol``: one of the strings "tcp" or "tcps" indicating whether to + use unencrypted network traffic or encrypted network traffic (TLS) + (default: "tcp") + + - ``https_proxy``: the hostname or IP address of a proxy host to use for + tunneling secure connections + (default: None) + + - ``https_proxy_port``: the port on which to communicate with the proxy + host + (default: 0) + + - ``service_name``: the service name of the database + (default: None) + + - ``instance_name``: the instance name of the database + (default: None) + + - ``sid``: the system identifier (SID) of the database. Note using a + service_name instead is recommended + (default: None) + + - ``server_type``: the type of server connection that should be + established. If specified, it should be one of strings "dedicated", + "shared" or "pooled" + (default: None) + + - ``cclass``: the connection class to use for Database Resident Connection + Pooling (DRCP) + (default: None) + + - ``purity``: the connection purity to use for Database Resident Connection + Pooling (DRCP) + (default: :attr:`oracledb.PURITY_DEFAULT`) + + - ``expire_time``: the number of minutes between the sending of keepalive + probes. If this parameter is set to a value greater than zero it enables + keepalive + (default: 0) + + - ``retry_count``: the number of times that initial connection + establishment should be retried before the connection attempt is + terminated + (default: 0) + + - ``retry_delay``: the number of seconds to wait before retrying to + establish a connection + (default: 1) + + - ``tcp_connect_timeout``: a float indicating the maximum number of seconds + to wait when establishing a connection to the database host + (default: 20.0) + + - ``ssl_server_dn_match``: a boolean indicating whether the server + certificate distinguished name (DN) should be matched in addition to the + regular certificate verification that is performed. Note that if the + ssl_server_cert_dn parameter is not privided, host name matching is + performed instead + (default: True) + + - ``ssl_server_cert_dn``: the distinguished name (DN) which should be + matched with the server. This value is ignored if the ssl_server_dn_match + parameter is not set to the value True. If specified this value is used + for any verfication. Otherwise the hostname will be used + (default: None) + + - ``wallet_location``: the directory where the wallet can be found. In + python-oracledb Thin mode this must be the directory containing the PEM- + encoded wallet file ewallet.pem. In python-oracledb Thick mode this must + be the directory containing the file cwallet.sso + (default: None) + + - ``events``: a boolean specifying whether events mode should be enabled. + This value is only used in python-oracledb Thick mode and is needed for + continuous query notification and high availability event notifications + (default: False) + + - ``externalauth``: a boolean indicating whether to use external + authentication + (default: False) + + - ``mode``: the authorization mode to use. One of the constants + :data:`oracledb.AUTH_MODE_DEFAULT`, :data:`oracledb.AUTH_MODE_PRELIM`, + :data:`oracledb.AUTH_MODE_SYSASM`, :data:`oracledb.AUTH_MODE_SYSBKP`, + :data:`oracledb.AUTH_MODE_SYSDBA`, :data:`oracledb.AUTH_MODE_SYSDGD`, + :data:`oracledb.AUTH_MODE_SYSKMT`, :data:`oracledb.AUTH_MODE_SYSOPER`, or + :data:`oracledb.AUTH_MODE_SYSRAC` + (default: :attr:`oracledb.AUTH_MODE_DEFAULT`) + + - ``disable_oob``: a boolean indicating whether out-of-band breaks should + be disabled. This value is only used in python-oracledb Thin mode. It has + no effect on Windows which does not support this functionality + (default: False) + + - ``stmtcachesize``: the size of the statement cache + (default: :attr:`oracledb.defaults.stmtcachesize + `) + + - ``edition``: edition to use for the connection. This parameter cannot be + used simultaneously with the cclass parameter + (default: None) + + - ``tag``: identifies the type of connection that should be returned from a + pool. This value is only used in python-oracledb Thick mode + (default: None) + + - ``matchanytag``: a boolean specifying whether any tag can be used when + acquiring a connection from the pool. This value is only used in python- + oracledb Thick mode + (default: False) + + - ``config_dir``: a directory in which the optional tnsnames.ora + configuration file is located. This value is only used in python-oracledb + Thin mode. For python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()` + (default: :attr:`oracledb.defaults.config_dir + `) + + - ``appcontext``: application context used by the connection. It should be + a list of 3-tuples (namespace, name, value) and each entry in the tuple + should be a string + (default: None) + + - ``shardingkey``: a list of strings, numbers, bytes or dates that identify + the database shard to connect to. This value is only used in python- + oracledb Thick mode + (default: None) + + - ``supershardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + (default: None) + + - ``debug_jdwp``: a string with the format "host=;port=" that + specifies the host and port of the PL/SQL debugger. This value is only + used in python-oracledb Thin mode. For python-oracledb Thick mode set + the ORA_DEBUG_JDWP environment variable + (default: None) + + - ``connection_id_prefix``: an application specific prefix that is added to + the connection identifier used for tracing + (default: None) + + - ``ssl_context``: an SSLContext object used for connecting to the database + using TLS. This SSL context will be modified to include the private key + or any certificates found in a separately supplied wallet. This parameter + should only be specified if the default SSLContext object cannot be used + (default: None) + + - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes. The + value tunes internal buffers used for communication to the database. + Bigger values can increase throughput for large queries or bulk data + loads, but at the cost of higher memory use. The SDU size that will + actually be used is negotiated down to the lower of this value and the + database network SDU configuration value + (default: 8192) + + - ``pool_boundary``: one of the values "statement" or "transaction" + indicating when pooled DRCP connections can be returned to the pool. This + requires the use of DRCP with Oracle Database 23.4 or higher + (default: None) + + - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast open. + This is an Oracle Autonomous Database Serverless (ADB-S) specific + property for clients connecting from within OCI Cloud network. Please + refer to the ADB-S documentation for more information + (default: False) + + - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or + ssl.TLSVersion.TLSv1_3 indicating which TLS version to use + (default: None) + + - ``program``: a string recorded by Oracle Database as the program from + which the connection originates + (default: :attr:`oracledb.defaults.program + `) + + - ``machine``: a string recorded by Oracle Database as the name of the + machine from which the connection originates + (default: :attr:`oracledb.defaults.machine + `) + + - ``terminal``: a string recorded by Oracle Database as the terminal + identifier from which the connection originates + (default: :attr:`oracledb.defaults.terminal + `) + + - ``osuser``: a string recorded by Oracle Database as the operating system + user who originated the connection + (default: :attr:`oracledb.defaults.osuser + `) + + - ``driver_name``: a string recorded by Oracle Database as the name of the + driver which originated the connection + (default: :attr:`oracledb.defaults.driver_name + `) + + - ``use_sni``: a boolean indicating whether to use the TLS SNI extension to + bypass the second TLS neogiation that would otherwise be required + (default: False) + + - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass the + connect string to the Oracle Client libraries unchanged without parsing + by the driver. Setting this to False makes python-oracledb Thick and Thin + mode applications behave similarly regarding connection string parameter + handling and locating any optional tnsnames.ora configuration file + (default: :attr:`oracledb.defaults.thick_mode_dsn_passthrough + `) + + - ``extra_auth_params``: a dictionary containing configuration parameters + necessary for Oracle Database authentication using plugins, such as the + Azure and OCI cloud-native authentication plugins + (default: None) + + - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP with + Oracle Database 23.4, or higher + (default: None) + + - ``on_connect_callback``: a callable that is invoked immediately after a + standalone connection is created or a connection is acquired from a + connection pool, but before it is returned to the caller. A common use of + this callback is for creating and setting an end user security context + object for DeepSec support + (default: None) + + - ``handle``: an integer representing a pointer to a valid service context + handle. This value is only used in python-oracledb Thick mode. It should + be used with extreme caution + (default: 0) + """ + pass + + +class AsyncConnectionPool(BaseConnectionPool): + + def _set_connection_type(self, conn_class): + """ + Called internally when the pool is created to ensure that the correct + connection class is used for all connections created by the pool. + """ + if conn_class is None: + conn_class = connection_module.AsyncConnection + elif not issubclass(conn_class, connection_module.AsyncConnection): + errors._raise_err(errors.ERR_INVALID_CONN_CLASS) + self._connection_type = conn_class + + def acquire( + self, + user: Optional[str] = None, + password: Optional[str] = None, + cclass: Optional[str] = None, + purity: int = oracledb.PURITY_DEFAULT, + tag: Optional[str] = None, + matchanytag: bool = False, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + ) -> "connection_module.AsyncConnection": + """ + Acquires a connection from the pool and returns an :ref:`asynchronous + connection object `. + + If the pool is :ref:`homogeneous `, the ``user`` and + ``password`` parameters cannot be specified. If they are, an exception + will be raised. + + The ``cclass`` parameter, if specified, should be a string + corresponding to the connection class for :ref:`drcp`. + + The ``purity`` parameter is expected to be one of + :data:`~oracledb.PURITY_NEW`, :data:`~oracledb.PURITY_SELF`, or + :data:`~oracledb.PURITY_DEFAULT`. + + The ``tag``, ``matchanytag``, ``shardingkey``, and ``supershardingkey`` + parameters are ignored in python-oracledb Thin mode. + """ + self._verify_open() + + return oracledb.connect_async( + conn_class=self._connection_type, + user=user, + password=password, + cclass=cclass, + purity=purity, + tag=tag, + matchanytag=matchanytag, + shardingkey=shardingkey, + supershardingkey=supershardingkey, + on_connect_callback=self.on_connect_callback, + pool=self, + ) + + async def close(self, force: bool = False) -> None: + """ + Closes the pool now, rather than when the last reference to it is + released, which makes it unusable for further work. + + If any connections have been acquired and not released back to the + pool, this method will fail unless the ``force`` parameter is set to + *True*. + """ + self._verify_open() + await self._impl.close(force) + if self._cache_name is not None: + named_pools.remove_pool(self._cache_name) + self._impl = None + + async def drop(self, connection: "connection_module.Connection") -> None: + """ + Drops the connection from the pool which is useful if the connection is + no longer usable (such as when the session is killed). + """ + self._verify_open() + if not isinstance(connection, connection_module.AsyncConnection): + message = ( + "connection must be an instance of oracledb.AsyncConnection" + ) + raise TypeError(message) + connection._verify_connected() + await self._impl.drop(connection._impl) + connection._impl = None + + async def release( + self, + connection: "connection_module.AsyncConnection", + tag: Optional[str] = None, + ) -> None: + """ + Releases the connection back to the pool now. The connection will be + unusable from this point forward. An Error exception will be raised if + any operation is attempted with the connection. Any cursors or LOBs + created by the connection will also be marked unusable and an Error + exception will be raised if any operation is attempted with them. + + The ``tag`` parameter is ignored in python-oracledb Thin mode. + """ + self._verify_open() + if not isinstance(connection, connection_module.AsyncConnection): + message = ( + "connection must be an instance of oracledb.AsyncConnection" + ) + raise TypeError(message) + if tag is not None: + connection.tag = tag + await self._impl.return_connection(connection._impl) + connection._impl = None + + +def _async_pool_factory( + f: Callable[..., AsyncConnectionPool], +) -> Callable[..., AsyncConnectionPool]: + """ + Decorator which checks the validity of the supplied keyword parameters by + calling the original function (which does nothing), then creates and + returns an instance of the requested ConnectionPool class. The base + ConnectionPool class constructor does not check the validity of the + supplied keyword parameters. + """ + + @functools.wraps(f) + def create_pool_async( + dsn: Optional[str] = None, + *, + pool_class: Type[ConnectionPool] = AsyncConnectionPool, + pool_alias: Optional[str] = None, + params: Optional[PoolParams] = None, + **kwargs, + ) -> AsyncConnectionPool: + f( + dsn=dsn, + pool_class=pool_class, + pool_alias=pool_alias, + params=params, + **kwargs, + ) + oracledb.enable_thin_mode() + if not issubclass(pool_class, AsyncConnectionPool): + errors._raise_err(errors.ERR_INVALID_POOL_CLASS) + return pool_class(dsn, params=params, cache_name=pool_alias, **kwargs) + + return create_pool_async + + +@_async_pool_factory +def create_pool_async( + dsn: Optional[str] = None, + *, + pool_class: Type[ConnectionPool] = AsyncConnectionPool, + pool_alias: Optional[str] = None, + params: Optional[PoolParams] = None, + min: Optional[int] = None, + max: Optional[int] = None, + increment: Optional[int] = None, + connectiontype: Optional[Type["oracledb.AsyncConnection"]] = None, + getmode: Optional[oracledb.PoolGetMode] = None, + homogeneous: Optional[bool] = None, + timeout: Optional[int] = None, + wait_timeout: Optional[int] = None, + max_lifetime_session: Optional[int] = None, + session_callback: Optional[Callable] = None, + max_sessions_per_shard: Optional[int] = None, + soda_metadata_cache: Optional[bool] = None, + ping_interval: Optional[int] = None, + ping_timeout: Optional[int] = None, + user: Optional[str] = None, + proxy_user: Optional[str] = None, + password: Optional[str] = None, + newpassword: Optional[str] = None, + wallet_password: Optional[str] = None, + access_token: Optional[Union[str, tuple, Callable]] = None, + host: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[str] = None, + https_proxy: Optional[str] = None, + https_proxy_port: Optional[int] = None, + service_name: Optional[str] = None, + instance_name: Optional[str] = None, + sid: Optional[str] = None, + server_type: Optional[str] = None, + cclass: Optional[str] = None, + purity: Optional[oracledb.Purity] = None, + expire_time: Optional[int] = None, + retry_count: Optional[int] = None, + retry_delay: Optional[int] = None, + tcp_connect_timeout: Optional[float] = None, + ssl_server_dn_match: Optional[bool] = None, + ssl_server_cert_dn: Optional[str] = None, + wallet_location: Optional[str] = None, + events: Optional[bool] = None, + externalauth: Optional[bool] = None, + mode: Optional[oracledb.AuthMode] = None, + disable_oob: Optional[bool] = None, + stmtcachesize: Optional[int] = None, + edition: Optional[str] = None, + tag: Optional[str] = None, + matchanytag: Optional[bool] = None, + config_dir: Optional[str] = None, + appcontext: Optional[list] = None, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + debug_jdwp: Optional[str] = None, + connection_id_prefix: Optional[str] = None, + ssl_context: Optional[Any] = None, + sdu: Optional[int] = None, + pool_boundary: Optional[str] = None, + use_tcp_fast_open: Optional[bool] = None, + ssl_version: Optional[ssl.TLSVersion] = None, + program: Optional[str] = None, + machine: Optional[str] = None, + terminal: Optional[str] = None, + osuser: Optional[str] = None, + driver_name: Optional[str] = None, + use_sni: Optional[bool] = None, + thick_mode_dsn_passthrough: Optional[bool] = None, + extra_auth_params: Optional[dict] = None, + pool_name: Optional[str] = None, + on_connect_callback: Optional[Callable] = None, + handle: Optional[int] = None, +) -> AsyncConnectionPool: + """ + Creates a connection pool with the supplied parameters and returns it. + + The ``dsn`` parameter (data source name) can be a string in the format + user/password@connect_string or can simply be the connect string (in + which case authentication credentials such as the username and password + need to be specified separately). See the documentation on connection + strings for more information. + + The ``pool_class`` parameter is expected to be AsyncConnectionPool or a + subclass of AsyncConnectionPool. + + The ``pool_alias`` parameter is expected to be a string representing the + name used to store and reference the pool in the python-oracledb connection + pool cache. If this parameter is not specified, then the pool will not be + added to the cache. The value of this parameter can be used with the + :meth:`oracledb.get_pool()` and :meth:o`racledb.connect_async()` methods to + access the pool. + + The ``params`` parameter is expected to be of type PoolParams and contains + parameters that are used to create the pool. See the documentation on + PoolParams for more information. If this parameter is not specified, the + additional keyword parameters will be used to create an instance of + PoolParams. If both the ``params`` parameter and additional keyword + parameters are specified, the values in the keyword parameters have + precedence. Note that if a ``dsn`` is also supplied, then in + python-oracledb Thin mode, the values of the parameters specified (if any) + within the ``dsn`` will override the values passed as additional keyword + parameters, which themselves override the values set in the ``params`` + parameter object. + + The following parameters are all optional. A brief description of each + parameter follows: + + - ``min``: the minimum number of connections the pool should contain + (default: 1) + + - ``max``: the maximum number of connections the pool should contain + (default: 2) + + - ``increment``: the number of connections that should be added to the pool + whenever the pool needs to grow + (default: 1) + + - ``connectiontype``: the class of the connection that should be returned + during calls to pool.acquire(). It must be oracledb.AsyncConnection or a + subclass of oracledb.AsyncConnection + (default: None) + + - ``getmode``: how pool.acquire() will behave. One of the constants + :data:`oracledb.POOL_GETMODE_WAIT`, :data:`oracledb.POOL_GETMODE_NOWAIT`, + :data:`oracledb.POOL_GETMODE_FORCEGET`, or + :data:`oracledb.POOL_GETMODE_TIMEDWAIT` + (default: :attr:`oracledb.POOL_GETMODE_WAIT`) + + - ``homogeneous``: a boolean indicating whether the connections in the pool + are homogeneous (same user) or heterogeneous (multiple users) + (default: True) + + - ``timeout``: the length of time (in seconds) that a connection may remain + idle in the pool before it is terminated. If it is 0 then connections are + never terminated + (default: 0) + + - ``wait_timeout``: the length of time (in milliseconds) that a caller + should wait when acquiring a connection from the pool with getmode set to + :data:`oracledb.POOL_GETMODE_TIMEDWAIT` + (default: 0) + + - ``max_lifetime_session``: the length of time (in seconds) that + connections can remain in the pool. If it is 0 then connections may + remain in the pool indefinitely + (default: 0) + + - ``session_callback``: a callable that is invoked when a connection is + returned from the pool for the first time, or when the connection tag + differs from the one requested + (default: None) + + - ``max_sessions_per_shard``: the maximum number of connections that may be + associated with a particular shard + (default: 0) + + - ``soda_metadata_cache``: a boolean indicating whether or not the SODA + metadata cache should be enabled + (default: False) + + - ``ping_interval``: the length of time (in seconds) after which an unused + connection in the pool will be a candidate for pinging when + pool.acquire() is called. If the ping to the database indicates the + connection is not alive a replacement connection will be returned by + pool.acquire(). If ping_interval is a negative value the ping + functionality will be disabled + (default: 60) + + - ``ping_timeout``: the maximum length of time (in milliseconds) to wait + for a connection in the pool to respond to an internal ping to the + database before being discarded and replaced during a call to acquire() + (default: 5000) + + - ``user``: the name of the database user to connect to + (default: None) + + - ``proxy_user``: the name of the proxy user to connect to. If this value + is not specified, it will be parsed out of user if user is in the form + "user[proxy_user]" + (default: None) + + - ``password``: the password for the database user + (default: None) + + - ``newpassword``: a new password for the database user. The new password + will take effect immediately upon a successful connection to the database + (default: None) + + - ``wallet_password``: the password to use to decrypt the wallet, if it is + encrypted. This is not the database password. For Oracle Autonomous + Database this is the password created when downloading the wallet. This + value is only used in python-oracledb Thin mode. + (default: None) + + - ``access_token``: a string, or a 2-tuple, or a callable. If it is a + string, it specifies an Entra ID OAuth2 token used for Open Authorization + (OAuth 2.0) token based authentication. If it is a 2-tuple, it specifies + the token and private key strings used for Oracle Cloud Infrastructure + (OCI) Identity and Access Management (IAM) token based authentication. If + it is a callable, it returns either a string or a 2-tuple used for OAuth + 2.0 or OCI IAM token based authentication and is useful when the pool + needs to expand and create new connections but the current authentication + token has expired + (default: None) + + - ``host``: the hostname or IP address of the machine hosting the database + or the database listener + (default: None) + + - ``port``: the port number on which the database listener is listening + (default: 1521) + + - ``protocol``: one of the strings "tcp" or "tcps" indicating whether to + use unencrypted network traffic or encrypted network traffic (TLS) + (default: "tcp") + + - ``https_proxy``: the hostname or IP address of a proxy host to use for + tunneling secure connections + (default: None) + + - ``https_proxy_port``: the port on which to communicate with the proxy + host + (default: 0) + + - ``service_name``: the service name of the database + (default: None) + + - ``instance_name``: the instance name of the database + (default: None) + + - ``sid``: the system identifier (SID) of the database. Note using a + service_name instead is recommended + (default: None) + + - ``server_type``: the type of server connection that should be + established. If specified, it should be one of strings "dedicated", + "shared" or "pooled" + (default: None) + + - ``cclass``: the connection class to use for Database Resident Connection + Pooling (DRCP) + (default: None) + + - ``purity``: the connection purity to use for Database Resident Connection + Pooling (DRCP) + (default: :attr:`oracledb.PURITY_DEFAULT`) + + - ``expire_time``: the number of minutes between the sending of keepalive + probes. If this parameter is set to a value greater than zero it enables + keepalive + (default: 0) + + - ``retry_count``: the number of times that initial connection + establishment should be retried before the connection attempt is + terminated + (default: 0) + + - ``retry_delay``: the number of seconds to wait before retrying to + establish a connection + (default: 1) + + - ``tcp_connect_timeout``: a float indicating the maximum number of seconds + to wait when establishing a connection to the database host + (default: 20.0) + + - ``ssl_server_dn_match``: a boolean indicating whether the server + certificate distinguished name (DN) should be matched in addition to the + regular certificate verification that is performed. Note that if the + ssl_server_cert_dn parameter is not privided, host name matching is + performed instead + (default: True) + + - ``ssl_server_cert_dn``: the distinguished name (DN) which should be + matched with the server. This value is ignored if the ssl_server_dn_match + parameter is not set to the value True. If specified this value is used + for any verfication. Otherwise the hostname will be used + (default: None) + + - ``wallet_location``: the directory where the wallet can be found. In + python-oracledb Thin mode this must be the directory containing the PEM- + encoded wallet file ewallet.pem. In python-oracledb Thick mode this must + be the directory containing the file cwallet.sso + (default: None) + + - ``events``: a boolean specifying whether events mode should be enabled. + This value is only used in python-oracledb Thick mode and is needed for + continuous query notification and high availability event notifications + (default: False) + + - ``externalauth``: a boolean indicating whether to use external + authentication + (default: False) + + - ``mode``: the authorization mode to use. One of the constants + :data:`oracledb.AUTH_MODE_DEFAULT`, :data:`oracledb.AUTH_MODE_PRELIM`, + :data:`oracledb.AUTH_MODE_SYSASM`, :data:`oracledb.AUTH_MODE_SYSBKP`, + :data:`oracledb.AUTH_MODE_SYSDBA`, :data:`oracledb.AUTH_MODE_SYSDGD`, + :data:`oracledb.AUTH_MODE_SYSKMT`, :data:`oracledb.AUTH_MODE_SYSOPER`, or + :data:`oracledb.AUTH_MODE_SYSRAC` + (default: :attr:`oracledb.AUTH_MODE_DEFAULT`) + + - ``disable_oob``: a boolean indicating whether out-of-band breaks should + be disabled. This value is only used in python-oracledb Thin mode. It has + no effect on Windows which does not support this functionality + (default: False) + + - ``stmtcachesize``: the size of the statement cache + (default: :attr:`oracledb.defaults.stmtcachesize + `) + + - ``edition``: edition to use for the connection. This parameter cannot be + used simultaneously with the cclass parameter + (default: None) + + - ``tag``: identifies the type of connection that should be returned from a + pool. This value is only used in python-oracledb Thick mode + (default: None) + + - ``matchanytag``: a boolean specifying whether any tag can be used when + acquiring a connection from the pool. This value is only used in python- + oracledb Thick mode + (default: False) + + - ``config_dir``: a directory in which the optional tnsnames.ora + configuration file is located. This value is only used in python-oracledb + Thin mode. For python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()` + (default: :attr:`oracledb.defaults.config_dir + `) + + - ``appcontext``: application context used by the connection. It should be + a list of 3-tuples (namespace, name, value) and each entry in the tuple + should be a string + (default: None) + + - ``shardingkey``: a list of strings, numbers, bytes or dates that identify + the database shard to connect to. This value is only used in python- + oracledb Thick mode + (default: None) + + - ``supershardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + (default: None) + + - ``debug_jdwp``: a string with the format "host=;port=" that + specifies the host and port of the PL/SQL debugger. This value is only + used in python-oracledb Thin mode. For python-oracledb Thick mode set + the ORA_DEBUG_JDWP environment variable + (default: None) + + - ``connection_id_prefix``: an application specific prefix that is added to + the connection identifier used for tracing + (default: None) + + - ``ssl_context``: an SSLContext object used for connecting to the database + using TLS. This SSL context will be modified to include the private key + or any certificates found in a separately supplied wallet. This parameter + should only be specified if the default SSLContext object cannot be used + (default: None) + + - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes. The + value tunes internal buffers used for communication to the database. + Bigger values can increase throughput for large queries or bulk data + loads, but at the cost of higher memory use. The SDU size that will + actually be used is negotiated down to the lower of this value and the + database network SDU configuration value + (default: 8192) + + - ``pool_boundary``: one of the values "statement" or "transaction" + indicating when pooled DRCP connections can be returned to the pool. This + requires the use of DRCP with Oracle Database 23.4 or higher + (default: None) + + - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast open. + This is an Oracle Autonomous Database Serverless (ADB-S) specific + property for clients connecting from within OCI Cloud network. Please + refer to the ADB-S documentation for more information + (default: False) + + - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or + ssl.TLSVersion.TLSv1_3 indicating which TLS version to use + (default: None) + + - ``program``: a string recorded by Oracle Database as the program from + which the connection originates + (default: :attr:`oracledb.defaults.program + `) + + - ``machine``: a string recorded by Oracle Database as the name of the + machine from which the connection originates + (default: :attr:`oracledb.defaults.machine + `) + + - ``terminal``: a string recorded by Oracle Database as the terminal + identifier from which the connection originates + (default: :attr:`oracledb.defaults.terminal + `) + + - ``osuser``: a string recorded by Oracle Database as the operating system + user who originated the connection + (default: :attr:`oracledb.defaults.osuser + `) + + - ``driver_name``: a string recorded by Oracle Database as the name of the + driver which originated the connection + (default: :attr:`oracledb.defaults.driver_name + `) + + - ``use_sni``: a boolean indicating whether to use the TLS SNI extension to + bypass the second TLS neogiation that would otherwise be required + (default: False) + + - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass the + connect string to the Oracle Client libraries unchanged without parsing + by the driver. Setting this to False makes python-oracledb Thick and Thin + mode applications behave similarly regarding connection string parameter + handling and locating any optional tnsnames.ora configuration file + (default: :attr:`oracledb.defaults.thick_mode_dsn_passthrough + `) + + - ``extra_auth_params``: a dictionary containing configuration parameters + necessary for Oracle Database authentication using plugins, such as the + Azure and OCI cloud-native authentication plugins + (default: None) + + - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP with + Oracle Database 23.4, or higher + (default: None) + + - ``on_connect_callback``: a callable that is invoked immediately after a + standalone connection is created or a connection is acquired from a + connection pool, but before it is returned to the caller. A common use of + this callback is for creating and setting an end user security context + object for DeepSec support + (default: None) + + - ``handle``: an integer representing a pointer to a valid service context + handle. This value is only used in python-oracledb Thick mode. It should + be used with extreme caution + (default: 0) + """ + pass + + +class NamedPools: + + def __init__(self): + self.lock = threading.Lock() + self.pools = {} + + def add_pool(self, alias, pool): + """ + Adds a pool to the cache. An exception is raised if a pool is already + cached with the given alias. + """ + if not isinstance(alias, str): + raise TypeError("pool_alias must be a string") + with self.lock: + if alias in self.pools: + errors._raise_err(errors.ERR_NAMED_POOL_EXISTS, alias=alias) + self.pools[alias] = pool + + def remove_pool(self, alias): + """ + Removes the pool with the given alias from the cache. An exception is + raised if there is no pool cached with the given alias. + """ + with self.lock: + if alias not in self.pools: + errors._raise_err(errors.ERR_NAMED_POOL_MISSING, alias=alias) + del self.pools[alias] + + +named_pools = NamedPools() + + +def get_pool( + pool_alias: str, +) -> Union[ConnectionPool, AsyncConnectionPool, None]: + """ + Returns a :ref:`ConnectionPool object ` from the python-oracledb + pool cache. The pool must have been previously created by passing the same + ``pool_alias`` value to :meth:`oracledb.create_pool()` or + :meth:`oracledb.create_pool_async()`. + + If a pool with the given name does not exist, *None* is returned. + """ + return named_pools.pools.get(pool_alias) diff --git a/.venv/lib/python3.9/site-packages/oracledb/pool_params.py b/.venv/lib/python3.9/site-packages/oracledb/pool_params.py new file mode 100644 index 0000000..b58f66b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/pool_params.py @@ -0,0 +1,1033 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2022, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# pool_params.py +# +# Contains the PoolParams class used for managing the parameters required to +# create a connection pool. +# +# *** NOTICE *** This file is generated from a template and should not be +# modified directly. See build_from_template.py in the utils subdirectory for +# more information. +# ----------------------------------------------------------------------------- + +import ssl +from typing import Callable, Type, Union, Any, Optional + +import oracledb + +from . import base_impl, utils +from .connect_params import ConnectParams + + +class PoolParams(ConnectParams): + """ + Contains all parameters used for creating a connection pool. + """ + + __module__ = oracledb.__name__ + __slots__ = ["_impl"] + _impl_class = base_impl.PoolParamsImpl + + @utils.params_initer + def __init__( + self, + *, + min: Optional[int] = None, + max: Optional[int] = None, + increment: Optional[int] = None, + connectiontype: Optional[Type["oracledb.Connection"]] = None, + getmode: Optional[oracledb.PoolGetMode] = None, + homogeneous: Optional[bool] = None, + timeout: Optional[int] = None, + wait_timeout: Optional[int] = None, + max_lifetime_session: Optional[int] = None, + session_callback: Optional[Callable] = None, + max_sessions_per_shard: Optional[int] = None, + soda_metadata_cache: Optional[bool] = None, + ping_interval: Optional[int] = None, + ping_timeout: Optional[int] = None, + user: Optional[str] = None, + proxy_user: Optional[str] = None, + password: Optional[str] = None, + newpassword: Optional[str] = None, + wallet_password: Optional[str] = None, + access_token: Optional[Union[str, tuple, Callable]] = None, + host: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[str] = None, + https_proxy: Optional[str] = None, + https_proxy_port: Optional[int] = None, + service_name: Optional[str] = None, + instance_name: Optional[str] = None, + sid: Optional[str] = None, + server_type: Optional[str] = None, + cclass: Optional[str] = None, + purity: Optional[oracledb.Purity] = None, + expire_time: Optional[int] = None, + retry_count: Optional[int] = None, + retry_delay: Optional[int] = None, + tcp_connect_timeout: Optional[float] = None, + ssl_server_dn_match: Optional[bool] = None, + ssl_server_cert_dn: Optional[str] = None, + wallet_location: Optional[str] = None, + events: Optional[bool] = None, + externalauth: Optional[bool] = None, + mode: Optional[oracledb.AuthMode] = None, + disable_oob: Optional[bool] = None, + stmtcachesize: Optional[int] = None, + edition: Optional[str] = None, + tag: Optional[str] = None, + matchanytag: Optional[bool] = None, + config_dir: Optional[str] = None, + appcontext: Optional[list] = None, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + debug_jdwp: Optional[str] = None, + connection_id_prefix: Optional[str] = None, + ssl_context: Optional[Any] = None, + sdu: Optional[int] = None, + pool_boundary: Optional[str] = None, + use_tcp_fast_open: Optional[bool] = None, + ssl_version: Optional[ssl.TLSVersion] = None, + program: Optional[str] = None, + machine: Optional[str] = None, + terminal: Optional[str] = None, + osuser: Optional[str] = None, + driver_name: Optional[str] = None, + use_sni: Optional[bool] = None, + thick_mode_dsn_passthrough: Optional[bool] = None, + extra_auth_params: Optional[dict] = None, + pool_name: Optional[str] = None, + on_connect_callback: Optional[Callable] = None, + handle: Optional[int] = None, + ): + """ + All parameters are optional. A brief description of each parameter + follows: + + - ``min``: the minimum number of connections the pool should contain + (default: 1) + + - ``max``: the maximum number of connections the pool should contain + (default: 2) + + - ``increment``: the number of connections that should be added to the + pool whenever the pool needs to grow + (default: 1) + + - ``connectiontype``: the class of the connection that should be + returned during calls to pool.acquire(). It must be + oracledb.Connection or a subclass of oracledb.Connection + (default: None) + + - ``getmode``: how pool.acquire() will behave. One of the constants + :data:`oracledb.POOL_GETMODE_WAIT`, + :data:`oracledb.POOL_GETMODE_NOWAIT`, + :data:`oracledb.POOL_GETMODE_FORCEGET`, or + :data:`oracledb.POOL_GETMODE_TIMEDWAIT` + (default: :attr:`oracledb.POOL_GETMODE_WAIT`) + + - ``homogeneous``: a boolean indicating whether the connections in the + pool are homogeneous (same user) or heterogeneous (multiple users) + (default: True) + + - ``timeout``: the length of time (in seconds) that a connection may + remain idle in the pool before it is terminated. If it is 0 then + connections are never terminated + (default: 0) + + - ``wait_timeout``: the length of time (in milliseconds) that a caller + should wait when acquiring a connection from the pool with getmode + set to :data:`oracledb.POOL_GETMODE_TIMEDWAIT` + (default: 0) + + - ``max_lifetime_session``: the length of time (in seconds) that + connections can remain in the pool. If it is 0 then connections may + remain in the pool indefinitely + (default: 0) + + - ``session_callback``: a callable that is invoked when a connection is + returned from the pool for the first time, or when the connection tag + differs from the one requested + (default: None) + + - ``max_sessions_per_shard``: the maximum number of connections that + may be associated with a particular shard + (default: 0) + + - ``soda_metadata_cache``: a boolean indicating whether or not the SODA + metadata cache should be enabled + (default: False) + + - ``ping_interval``: the length of time (in seconds) after which an + unused connection in the pool will be a candidate for pinging when + pool.acquire() is called. If the ping to the database indicates the + connection is not alive a replacement connection will be returned by + pool.acquire(). If ping_interval is a negative value the ping + functionality will be disabled + (default: 60) + + - ``ping_timeout``: the maximum length of time (in milliseconds) to + wait for a connection in the pool to respond to an internal ping to + the database before being discarded and replaced during a call to + acquire() + (default: 5000) + + - ``user``: the name of the database user to connect to + (default: None) + + - ``proxy_user``: the name of the proxy user to connect to. If this + value is not specified, it will be parsed out of user if user is in + the form "user[proxy_user]" + (default: None) + + - ``password``: the password for the database user + (default: None) + + - ``newpassword``: a new password for the database user. The new + password will take effect immediately upon a successful connection to + the database + (default: None) + + - ``wallet_password``: the password to use to decrypt the wallet, if it + is encrypted. This is not the database password. For Oracle + Autonomous Database this is the password created when downloading the + wallet. This value is only used in python-oracledb Thin mode. + (default: None) + + - ``access_token``: a string, or a 2-tuple, or a callable. If it is a + string, it specifies an Entra ID OAuth2 token used for Open + Authorization (OAuth 2.0) token based authentication. If it is a + 2-tuple, it specifies the token and private key strings used for + Oracle Cloud Infrastructure (OCI) Identity and Access Management + (IAM) token based authentication. If it is a callable, it returns + either a string or a 2-tuple used for OAuth 2.0 or OCI IAM token + based authentication and is useful when the pool needs to expand and + create new connections but the current authentication token has + expired + (default: None) + + - ``host``: the hostname or IP address of the machine hosting the + database or the database listener + (default: None) + + - ``port``: the port number on which the database listener is listening + (default: 1521) + + - ``protocol``: one of the strings "tcp" or "tcps" indicating whether + to use unencrypted network traffic or encrypted network traffic (TLS) + (default: "tcp") + + - ``https_proxy``: the hostname or IP address of a proxy host to use + for tunneling secure connections + (default: None) + + - ``https_proxy_port``: the port on which to communicate with the proxy + host + (default: 0) + + - ``service_name``: the service name of the database + (default: None) + + - ``instance_name``: the instance name of the database + (default: None) + + - ``sid``: the system identifier (SID) of the database. Note using a + service_name instead is recommended + (default: None) + + - ``server_type``: the type of server connection that should be + established. If specified, it should be one of strings "dedicated", + "shared" or "pooled" + (default: None) + + - ``cclass``: the connection class to use for Database Resident + Connection Pooling (DRCP) + (default: None) + + - ``purity``: the connection purity to use for Database Resident + Connection Pooling (DRCP) + (default: :attr:`oracledb.PURITY_DEFAULT`) + + - ``expire_time``: the number of minutes between the sending of + keepalive probes. If this parameter is set to a value greater than + zero it enables keepalive + (default: 0) + + - ``retry_count``: the number of times that initial connection + establishment should be retried before the connection attempt is + terminated + (default: 0) + + - ``retry_delay``: the number of seconds to wait before retrying to + establish a connection + (default: 1) + + - ``tcp_connect_timeout``: a float indicating the maximum number of + seconds to wait when establishing a connection to the database host + (default: 20.0) + + - ``ssl_server_dn_match``: a boolean indicating whether the server + certificate distinguished name (DN) should be matched in addition to + the regular certificate verification that is performed. Note that if + the ssl_server_cert_dn parameter is not privided, host name matching + is performed instead + (default: True) + + - ``ssl_server_cert_dn``: the distinguished name (DN) which should be + matched with the server. This value is ignored if the + ssl_server_dn_match parameter is not set to the value True. If + specified this value is used for any verfication. Otherwise the + hostname will be used + (default: None) + + - ``wallet_location``: the directory where the wallet can be found. In + python-oracledb Thin mode this must be the directory containing the + PEM-encoded wallet file ewallet.pem. In python-oracledb Thick mode + this must be the directory containing the file cwallet.sso + (default: None) + + - ``events``: a boolean specifying whether events mode should be + enabled. This value is only used in python-oracledb Thick mode and is + needed for continuous query notification and high availability event + notifications + (default: False) + + - ``externalauth``: a boolean indicating whether to use external + authentication + (default: False) + + - ``mode``: the authorization mode to use. One of the constants + :data:`oracledb.AUTH_MODE_DEFAULT`, + :data:`oracledb.AUTH_MODE_PRELIM`, :data:`oracledb.AUTH_MODE_SYSASM`, + :data:`oracledb.AUTH_MODE_SYSBKP`, :data:`oracledb.AUTH_MODE_SYSDBA`, + :data:`oracledb.AUTH_MODE_SYSDGD`, :data:`oracledb.AUTH_MODE_SYSKMT`, + :data:`oracledb.AUTH_MODE_SYSOPER`, or + :data:`oracledb.AUTH_MODE_SYSRAC` + (default: :attr:`oracledb.AUTH_MODE_DEFAULT`) + + - ``disable_oob``: a boolean indicating whether out-of-band breaks + should be disabled. This value is only used in python-oracledb Thin + mode. It has no effect on Windows which does not support this + functionality + (default: False) + + - ``stmtcachesize``: the size of the statement cache + (default: :attr:`oracledb.defaults.stmtcachesize + `) + + - ``edition``: edition to use for the connection. This parameter cannot + be used simultaneously with the cclass parameter + (default: None) + + - ``tag``: identifies the type of connection that should be returned + from a pool. This value is only used in python-oracledb Thick mode + (default: None) + + - ``matchanytag``: a boolean specifying whether any tag can be used + when acquiring a connection from the pool. This value is only used in + python-oracledb Thick mode + (default: False) + + - ``config_dir``: a directory in which the optional tnsnames.ora + configuration file is located. This value is only used in python- + oracledb Thin mode. For python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()` + (default: :attr:`oracledb.defaults.config_dir + `) + + - ``appcontext``: application context used by the connection. It should + be a list of 3-tuples (namespace, name, value) and each entry in the + tuple should be a string + (default: None) + + - ``shardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + (default: None) + + - ``supershardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + (default: None) + + - ``debug_jdwp``: a string with the format "host=;port=" + that specifies the host and port of the PL/SQL debugger. This value + is only used in python-oracledb Thin mode. For python-oracledb Thick + mode set the ORA_DEBUG_JDWP environment variable + (default: None) + + - ``connection_id_prefix``: an application specific prefix that is + added to the connection identifier used for tracing + (default: None) + + - ``ssl_context``: an SSLContext object used for connecting to the + database using TLS. This SSL context will be modified to include the + private key or any certificates found in a separately supplied + wallet. This parameter should only be specified if the default + SSLContext object cannot be used + (default: None) + + - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes. + The value tunes internal buffers used for communication to the + database. Bigger values can increase throughput for large queries or + bulk data loads, but at the cost of higher memory use. The SDU size + that will actually be used is negotiated down to the lower of this + value and the database network SDU configuration value + (default: 8192) + + - ``pool_boundary``: one of the values "statement" or "transaction" + indicating when pooled DRCP connections can be returned to the pool. + This requires the use of DRCP with Oracle Database 23.4 or higher + (default: None) + + - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast + open. This is an Oracle Autonomous Database Serverless (ADB-S) + specific property for clients connecting from within OCI Cloud + network. Please refer to the ADB-S documentation for more information + (default: False) + + - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or + ssl.TLSVersion.TLSv1_3 indicating which TLS version to use + (default: None) + + - ``program``: a string recorded by Oracle Database as the program from + which the connection originates + (default: :attr:`oracledb.defaults.program + `) + + - ``machine``: a string recorded by Oracle Database as the name of the + machine from which the connection originates + (default: :attr:`oracledb.defaults.machine + `) + + - ``terminal``: a string recorded by Oracle Database as the terminal + identifier from which the connection originates + (default: :attr:`oracledb.defaults.terminal + `) + + - ``osuser``: a string recorded by Oracle Database as the operating + system user who originated the connection + (default: :attr:`oracledb.defaults.osuser + `) + + - ``driver_name``: a string recorded by Oracle Database as the name of + the driver which originated the connection + (default: :attr:`oracledb.defaults.driver_name + `) + + - ``use_sni``: a boolean indicating whether to use the TLS SNI + extension to bypass the second TLS neogiation that would otherwise be + required + (default: False) + + - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass + the connect string to the Oracle Client libraries unchanged without + parsing by the driver. Setting this to False makes python-oracledb + Thick and Thin mode applications behave similarly regarding + connection string parameter handling and locating any optional + tnsnames.ora configuration file + (default: :attr:`oracledb.defaults.thick_mode_dsn_passthrough + `) + + - ``extra_auth_params``: a dictionary containing configuration + parameters necessary for Oracle Database authentication using + plugins, such as the Azure and OCI cloud-native authentication + plugins + (default: None) + + - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP + with Oracle Database 23.4, or higher + (default: None) + + - ``on_connect_callback``: a callable that is invoked immediately after + a standalone connection is created or a connection is acquired from a + connection pool, but before it is returned to the caller. A common + use of this callback is for creating and setting an end user security + context object for DeepSec support + (default: None) + + - ``handle``: an integer representing a pointer to a valid service + context handle. This value is only used in python-oracledb Thick + mode. It should be used with extreme caution + (default: 0) + """ + pass + + def __repr__(self): + return ( + self.__class__.__qualname__ + "(" + f"min={self.min!r}, " + f"max={self.max!r}, " + f"increment={self.increment!r}, " + f"connectiontype={self.connectiontype!r}, " + f"getmode={self.getmode!r}, " + f"homogeneous={self.homogeneous!r}, " + f"timeout={self.timeout!r}, " + f"wait_timeout={self.wait_timeout!r}, " + f"max_lifetime_session={self.max_lifetime_session!r}, " + f"session_callback={self.session_callback!r}, " + f"max_sessions_per_shard={self.max_sessions_per_shard!r}, " + f"soda_metadata_cache={self.soda_metadata_cache!r}, " + f"ping_interval={self.ping_interval!r}, " + f"ping_timeout={self.ping_timeout!r}, " + f"user={self.user!r}, " + f"proxy_user={self.proxy_user!r}, " + f"host={self.host!r}, " + f"port={self.port!r}, " + f"protocol={self.protocol!r}, " + f"https_proxy={self.https_proxy!r}, " + f"https_proxy_port={self.https_proxy_port!r}, " + f"service_name={self.service_name!r}, " + f"instance_name={self.instance_name!r}, " + f"sid={self.sid!r}, " + f"server_type={self.server_type!r}, " + f"cclass={self.cclass!r}, " + f"purity={self.purity!r}, " + f"expire_time={self.expire_time!r}, " + f"retry_count={self.retry_count!r}, " + f"retry_delay={self.retry_delay!r}, " + f"tcp_connect_timeout={self.tcp_connect_timeout!r}, " + f"ssl_server_dn_match={self.ssl_server_dn_match!r}, " + f"ssl_server_cert_dn={self.ssl_server_cert_dn!r}, " + f"wallet_location={self.wallet_location!r}, " + f"events={self.events!r}, " + f"externalauth={self.externalauth!r}, " + f"mode={self.mode!r}, " + f"disable_oob={self.disable_oob!r}, " + f"stmtcachesize={self.stmtcachesize!r}, " + f"edition={self.edition!r}, " + f"tag={self.tag!r}, " + f"matchanytag={self.matchanytag!r}, " + f"config_dir={self.config_dir!r}, " + f"appcontext={self.appcontext!r}, " + f"shardingkey={self.shardingkey!r}, " + f"supershardingkey={self.supershardingkey!r}, " + f"debug_jdwp={self.debug_jdwp!r}, " + f"connection_id_prefix={self.connection_id_prefix!r}, " + f"ssl_context={self.ssl_context!r}, " + f"sdu={self.sdu!r}, " + f"pool_boundary={self.pool_boundary!r}, " + f"use_tcp_fast_open={self.use_tcp_fast_open!r}, " + f"ssl_version={self.ssl_version!r}, " + f"program={self.program!r}, " + f"machine={self.machine!r}, " + f"terminal={self.terminal!r}, " + f"osuser={self.osuser!r}, " + f"driver_name={self.driver_name!r}, " + f"use_sni={self.use_sni!r}, " + f"thick_mode_dsn_passthrough={self.thick_mode_dsn_passthrough!r}, " + f"extra_auth_params={self.extra_auth_params!r}, " + f"pool_name={self.pool_name!r}, " + f"on_connect_callback={self.on_connect_callback!r}" + ")" + ) + + @property + def connectiontype(self) -> Type["oracledb.Connection"]: + """ + The class of the connection that should be returned during calls to + pool.acquire(). It must be oracledb.Connection or a subclass of + oracledb.Connection. + """ + return self._impl.connectiontype + + @property + def getmode(self) -> oracledb.PoolGetMode: + """ + How pool.acquire() will behave. One of the constants + :data:`oracledb.POOL_GETMODE_WAIT`, + :data:`oracledb.POOL_GETMODE_NOWAIT`, + :data:`oracledb.POOL_GETMODE_FORCEGET`, or + :data:`oracledb.POOL_GETMODE_TIMEDWAIT`. + """ + return oracledb.PoolGetMode(self._impl.getmode) + + @property + def homogeneous(self) -> bool: + """ + A boolean indicating whether the connections in the pool are + homogeneous (same user) or heterogeneous (multiple users). + """ + return self._impl.homogeneous + + @property + def increment(self) -> int: + """ + The number of connections that should be added to the pool whenever the + pool needs to grow. + """ + return self._impl.increment + + @property + def max(self) -> int: + """ + The maximum number of connections the pool should contain. + """ + return self._impl.max + + @property + def max_lifetime_session(self) -> int: + """ + The length of time (in seconds) that connections can remain in the + pool. If it is 0 then connections may remain in the pool indefinitely. + """ + return self._impl.max_lifetime_session + + @property + def max_sessions_per_shard(self) -> int: + """ + The maximum number of connections that may be associated with a + particular shard. + """ + return self._impl.max_sessions_per_shard + + @property + def min(self) -> int: + """ + The minimum number of connections the pool should contain. + """ + return self._impl.min + + @property + def ping_interval(self) -> int: + """ + The length of time (in seconds) after which an unused connection in the + pool will be a candidate for pinging when pool.acquire() is called. If + the ping to the database indicates the connection is not alive a + replacement connection will be returned by pool.acquire(). If + ping_interval is a negative value the ping functionality will be + disabled. + """ + return self._impl.ping_interval + + @property + def ping_timeout(self) -> int: + """ + The maximum length of time (in milliseconds) to wait for a connection + in the pool to respond to an internal ping to the database before being + discarded and replaced during a call to acquire(). + """ + return self._impl.ping_timeout + + @property + def session_callback(self) -> Callable: + """ + A callable that is invoked when a connection is returned from the pool + for the first time, or when the connection tag differs from the one + requested. + """ + return self._impl.session_callback + + @property + def soda_metadata_cache(self) -> bool: + """ + A boolean indicating whether or not the SODA metadata cache should be + enabled. + """ + return self._impl.soda_metadata_cache + + @property + def timeout(self) -> int: + """ + The length of time (in seconds) that a connection may remain idle in + the pool before it is terminated. If it is 0 then connections are never + terminated. + """ + return self._impl.timeout + + @property + def wait_timeout(self) -> int: + """ + The length of time (in milliseconds) that a caller should wait when + acquiring a connection from the pool with getmode set to + :data:`oracledb.POOL_GETMODE_TIMEDWAIT`. + """ + return self._impl.wait_timeout + + def copy(self) -> "PoolParams": + """ + Creates a copy of the parameters and returns it. + """ + params = PoolParams.__new__(PoolParams) + params._impl = self._impl.copy() + return params + + @utils.params_setter + def set( + self, + *, + min: Optional[int] = None, + max: Optional[int] = None, + increment: Optional[int] = None, + connectiontype: Optional[Type["oracledb.Connection"]] = None, + getmode: Optional[oracledb.PoolGetMode] = None, + homogeneous: Optional[bool] = None, + timeout: Optional[int] = None, + wait_timeout: Optional[int] = None, + max_lifetime_session: Optional[int] = None, + session_callback: Optional[Callable] = None, + max_sessions_per_shard: Optional[int] = None, + soda_metadata_cache: Optional[bool] = None, + ping_interval: Optional[int] = None, + ping_timeout: Optional[int] = None, + user: Optional[str] = None, + proxy_user: Optional[str] = None, + password: Optional[str] = None, + newpassword: Optional[str] = None, + wallet_password: Optional[str] = None, + access_token: Optional[Union[str, tuple, Callable]] = None, + host: Optional[str] = None, + port: Optional[int] = None, + protocol: Optional[str] = None, + https_proxy: Optional[str] = None, + https_proxy_port: Optional[int] = None, + service_name: Optional[str] = None, + instance_name: Optional[str] = None, + sid: Optional[str] = None, + server_type: Optional[str] = None, + cclass: Optional[str] = None, + purity: Optional[oracledb.Purity] = None, + expire_time: Optional[int] = None, + retry_count: Optional[int] = None, + retry_delay: Optional[int] = None, + tcp_connect_timeout: Optional[float] = None, + ssl_server_dn_match: Optional[bool] = None, + ssl_server_cert_dn: Optional[str] = None, + wallet_location: Optional[str] = None, + events: Optional[bool] = None, + externalauth: Optional[bool] = None, + mode: Optional[oracledb.AuthMode] = None, + disable_oob: Optional[bool] = None, + stmtcachesize: Optional[int] = None, + edition: Optional[str] = None, + tag: Optional[str] = None, + matchanytag: Optional[bool] = None, + config_dir: Optional[str] = None, + appcontext: Optional[list] = None, + shardingkey: Optional[list] = None, + supershardingkey: Optional[list] = None, + debug_jdwp: Optional[str] = None, + connection_id_prefix: Optional[str] = None, + ssl_context: Optional[Any] = None, + sdu: Optional[int] = None, + pool_boundary: Optional[str] = None, + use_tcp_fast_open: Optional[bool] = None, + ssl_version: Optional[ssl.TLSVersion] = None, + program: Optional[str] = None, + machine: Optional[str] = None, + terminal: Optional[str] = None, + osuser: Optional[str] = None, + driver_name: Optional[str] = None, + use_sni: Optional[bool] = None, + thick_mode_dsn_passthrough: Optional[bool] = None, + extra_auth_params: Optional[dict] = None, + pool_name: Optional[str] = None, + on_connect_callback: Optional[Callable] = None, + handle: Optional[int] = None, + ): + """ + All parameters are optional. A brief description of each parameter + follows: + + - ``min``: the minimum number of connections the pool should contain + + - ``max``: the maximum number of connections the pool should contain + + - ``increment``: the number of connections that should be added to the + pool whenever the pool needs to grow + + - ``connectiontype``: the class of the connection that should be + returned during calls to pool.acquire(). It must be + oracledb.Connection or a subclass of oracledb.Connection + + - ``getmode``: how pool.acquire() will behave. One of the constants + :data:`oracledb.POOL_GETMODE_WAIT`, + :data:`oracledb.POOL_GETMODE_NOWAIT`, + :data:`oracledb.POOL_GETMODE_FORCEGET`, or + :data:`oracledb.POOL_GETMODE_TIMEDWAIT` + + - ``homogeneous``: a boolean indicating whether the connections in the + pool are homogeneous (same user) or heterogeneous (multiple users) + + - ``timeout``: the length of time (in seconds) that a connection may + remain idle in the pool before it is terminated. If it is 0 then + connections are never terminated + + - ``wait_timeout``: the length of time (in milliseconds) that a caller + should wait when acquiring a connection from the pool with getmode + set to :data:`oracledb.POOL_GETMODE_TIMEDWAIT` + + - ``max_lifetime_session``: the length of time (in seconds) that + connections can remain in the pool. If it is 0 then connections may + remain in the pool indefinitely + + - ``session_callback``: a callable that is invoked when a connection is + returned from the pool for the first time, or when the connection tag + differs from the one requested + + - ``max_sessions_per_shard``: the maximum number of connections that + may be associated with a particular shard + + - ``soda_metadata_cache``: a boolean indicating whether or not the SODA + metadata cache should be enabled + + - ``ping_interval``: the length of time (in seconds) after which an + unused connection in the pool will be a candidate for pinging when + pool.acquire() is called. If the ping to the database indicates the + connection is not alive a replacement connection will be returned by + pool.acquire(). If ping_interval is a negative value the ping + functionality will be disabled + + - ``ping_timeout``: the maximum length of time (in milliseconds) to + wait for a connection in the pool to respond to an internal ping to + the database before being discarded and replaced during a call to + acquire() + + - ``user``: the name of the database user to connect to + + - ``proxy_user``: the name of the proxy user to connect to. If this + value is not specified, it will be parsed out of user if user is in + the form "user[proxy_user]" + + - ``password``: the password for the database user + + - ``newpassword``: a new password for the database user. The new + password will take effect immediately upon a successful connection to + the database + + - ``wallet_password``: the password to use to decrypt the wallet, if it + is encrypted. This is not the database password. For Oracle + Autonomous Database this is the password created when downloading the + wallet. This value is only used in python-oracledb Thin mode. + + - ``access_token``: a string, or a 2-tuple, or a callable. If it is a + string, it specifies an Entra ID OAuth2 token used for Open + Authorization (OAuth 2.0) token based authentication. If it is a + 2-tuple, it specifies the token and private key strings used for + Oracle Cloud Infrastructure (OCI) Identity and Access Management + (IAM) token based authentication. If it is a callable, it returns + either a string or a 2-tuple used for OAuth 2.0 or OCI IAM token + based authentication and is useful when the pool needs to expand and + create new connections but the current authentication token has + expired + + - ``host``: the hostname or IP address of the machine hosting the + database or the database listener + + - ``port``: the port number on which the database listener is listening + + - ``protocol``: one of the strings "tcp" or "tcps" indicating whether + to use unencrypted network traffic or encrypted network traffic (TLS) + + - ``https_proxy``: the hostname or IP address of a proxy host to use + for tunneling secure connections + + - ``https_proxy_port``: the port on which to communicate with the proxy + host + + - ``service_name``: the service name of the database + + - ``instance_name``: the instance name of the database + + - ``sid``: the system identifier (SID) of the database. Note using a + service_name instead is recommended + + - ``server_type``: the type of server connection that should be + established. If specified, it should be one of strings "dedicated", + "shared" or "pooled" + + - ``cclass``: the connection class to use for Database Resident + Connection Pooling (DRCP) + + - ``purity``: the connection purity to use for Database Resident + Connection Pooling (DRCP) + + - ``expire_time``: the number of minutes between the sending of + keepalive probes. If this parameter is set to a value greater than + zero it enables keepalive + + - ``retry_count``: the number of times that initial connection + establishment should be retried before the connection attempt is + terminated + + - ``retry_delay``: the number of seconds to wait before retrying to + establish a connection + + - ``tcp_connect_timeout``: a float indicating the maximum number of + seconds to wait when establishing a connection to the database host + + - ``ssl_server_dn_match``: a boolean indicating whether the server + certificate distinguished name (DN) should be matched in addition to + the regular certificate verification that is performed. Note that if + the ssl_server_cert_dn parameter is not privided, host name matching + is performed instead + + - ``ssl_server_cert_dn``: the distinguished name (DN) which should be + matched with the server. This value is ignored if the + ssl_server_dn_match parameter is not set to the value True. If + specified this value is used for any verfication. Otherwise the + hostname will be used + + - ``wallet_location``: the directory where the wallet can be found. In + python-oracledb Thin mode this must be the directory containing the + PEM-encoded wallet file ewallet.pem. In python-oracledb Thick mode + this must be the directory containing the file cwallet.sso + + - ``events``: a boolean specifying whether events mode should be + enabled. This value is only used in python-oracledb Thick mode and is + needed for continuous query notification and high availability event + notifications + + - ``externalauth``: a boolean indicating whether to use external + authentication + + - ``mode``: the authorization mode to use. One of the constants + :data:`oracledb.AUTH_MODE_DEFAULT`, + :data:`oracledb.AUTH_MODE_PRELIM`, :data:`oracledb.AUTH_MODE_SYSASM`, + :data:`oracledb.AUTH_MODE_SYSBKP`, :data:`oracledb.AUTH_MODE_SYSDBA`, + :data:`oracledb.AUTH_MODE_SYSDGD`, :data:`oracledb.AUTH_MODE_SYSKMT`, + :data:`oracledb.AUTH_MODE_SYSOPER`, or + :data:`oracledb.AUTH_MODE_SYSRAC` + + - ``disable_oob``: a boolean indicating whether out-of-band breaks + should be disabled. This value is only used in python-oracledb Thin + mode. It has no effect on Windows which does not support this + functionality + + - ``stmtcachesize``: the size of the statement cache + + - ``edition``: edition to use for the connection. This parameter cannot + be used simultaneously with the cclass parameter + + - ``tag``: identifies the type of connection that should be returned + from a pool. This value is only used in python-oracledb Thick mode + + - ``matchanytag``: a boolean specifying whether any tag can be used + when acquiring a connection from the pool. This value is only used in + python-oracledb Thick mode + + - ``config_dir``: a directory in which the optional tnsnames.ora + configuration file is located. This value is only used in python- + oracledb Thin mode. For python-oracledb Thick mode, it is used if + :attr:`oracledb.defaults.thick_mode_dsn_passthrough + ` is *False*. Otherwise in Thick + mode use the ``config_dir`` parameter of + :meth:`oracledb.init_oracle_client()` + + - ``appcontext``: application context used by the connection. It should + be a list of 3-tuples (namespace, name, value) and each entry in the + tuple should be a string + + - ``shardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + + - ``supershardingkey``: a list of strings, numbers, bytes or dates that + identify the database shard to connect to. This value is only used in + python-oracledb Thick mode + + - ``debug_jdwp``: a string with the format "host=;port=" + that specifies the host and port of the PL/SQL debugger. This value + is only used in python-oracledb Thin mode. For python-oracledb Thick + mode set the ORA_DEBUG_JDWP environment variable + + - ``connection_id_prefix``: an application specific prefix that is + added to the connection identifier used for tracing + + - ``ssl_context``: an SSLContext object used for connecting to the + database using TLS. This SSL context will be modified to include the + private key or any certificates found in a separately supplied + wallet. This parameter should only be specified if the default + SSLContext object cannot be used + + - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes. + The value tunes internal buffers used for communication to the + database. Bigger values can increase throughput for large queries or + bulk data loads, but at the cost of higher memory use. The SDU size + that will actually be used is negotiated down to the lower of this + value and the database network SDU configuration value + + - ``pool_boundary``: one of the values "statement" or "transaction" + indicating when pooled DRCP connections can be returned to the pool. + This requires the use of DRCP with Oracle Database 23.4 or higher + + - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast + open. This is an Oracle Autonomous Database Serverless (ADB-S) + specific property for clients connecting from within OCI Cloud + network. Please refer to the ADB-S documentation for more information + + - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or + ssl.TLSVersion.TLSv1_3 indicating which TLS version to use + + - ``program``: a string recorded by Oracle Database as the program from + which the connection originates + + - ``machine``: a string recorded by Oracle Database as the name of the + machine from which the connection originates + + - ``terminal``: a string recorded by Oracle Database as the terminal + identifier from which the connection originates + + - ``osuser``: a string recorded by Oracle Database as the operating + system user who originated the connection + + - ``driver_name``: a string recorded by Oracle Database as the name of + the driver which originated the connection + + - ``use_sni``: a boolean indicating whether to use the TLS SNI + extension to bypass the second TLS neogiation that would otherwise be + required + + - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass + the connect string to the Oracle Client libraries unchanged without + parsing by the driver. Setting this to False makes python-oracledb + Thick and Thin mode applications behave similarly regarding + connection string parameter handling and locating any optional + tnsnames.ora configuration file + + - ``extra_auth_params``: a dictionary containing configuration + parameters necessary for Oracle Database authentication using + plugins, such as the Azure and OCI cloud-native authentication + plugins + + - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP + with Oracle Database 23.4, or higher + + - ``on_connect_callback``: a callable that is invoked immediately after + a standalone connection is created or a connection is acquired from a + connection pool, but before it is returned to the caller. A common + use of this callback is for creating and setting an end user security + context object for DeepSec support + + - ``handle``: an integer representing a pointer to a valid service + context handle. This value is only used in python-oracledb Thick + mode. It should be used with extreme caution + """ + pass diff --git a/.venv/lib/python3.9/site-packages/oracledb/py.typed b/.venv/lib/python3.9/site-packages/oracledb/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/oracledb/secret_values.py b/.venv/lib/python3.9/site-packages/oracledb/secret_values.py new file mode 100644 index 0000000..1a0bc08 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/secret_values.py @@ -0,0 +1,170 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# secret_values.py +# +# Contains classes that allow storage of secret values that should not be +# exposed in memory dumps. +# ----------------------------------------------------------------------------- + +import datetime +import threading +from typing import Any, Optional, Union + +from .base_impl import SecretValueImpl + + +class SecretValue: + + def __init__( + self, value: str, *, expires: Optional[datetime.datetime] = None + ): + self._impl = SecretValueImpl(value, expires) + + def __hash__(self): + return self._impl.__hash__() + + @property + def value(self) -> Optional[str]: + """ + Returns the secret value as a string. If the value has expired, *None* + will be returned instead. + """ + return self._impl.get_value() + + @value.setter + def value( + self, value: str, expires: Optional[datetime.datetime] = None + ) -> None: + """ + Sets the value of the secret from a string. + """ + self._impl.set_value(value, expires) + + @property + def value_bytes(self) -> Optional[bytes]: + """ + Returns the secret value as bytes. If the value has expired, *None* + will be returned instead. + """ + return self._impl.get_value_as_bytes() + + @value_bytes.setter + def value_bytes( + self, value: bytes, expires: Optional[datetime.datetime] = None + ) -> None: + """ + Sets the value of the secret from bytes. + """ + self._impl.set_value(value, expires) + + +class SecretValueCache: + + def __init__(self): + self.lock = threading.Lock() + self.thread_local_data = threading.local() + self.global_data = dict() + + def get_value( + self, key: Any, thread_local: bool = False + ) -> Optional[SecretValue]: + """ + Returns a value in the cache, or *None* if the key is not found. If the + value has expired, *None* is also returned and the value is removed + from the cache. + """ + with self.lock: + d = ( + self.thread_local_data.__dict__ + if thread_local + else self.global_data + ) + secret_value = d.get(key) + if secret_value is not None and secret_value.value is None: + del d[key] + return None + return secret_value + + def store_value( + self, + key: Any, + value: Union[str, bytes], + thread_local: bool = False, + expires: Optional[datetime.datetime] = None, + ) -> SecretValue: + """ + Stores a value in the cache. + """ + with self.lock: + d = ( + self.thread_local_data.__dict__ + if thread_local + else self.global_data + ) + if value is None: + if key in d: + del d[key] + else: + secret_value = SecretValue(value, expires=expires) + d[key] = secret_value + return secret_value + + +# create an instance of the cache for use by the functions below +secret_value_cache = SecretValueCache() + + +def get_secret( + key: Any, *, thread_local: bool = False +) -> Optional[SecretValue]: + """ + Returns a secret stored in the cache. If the ``thread_local`` parameter is + *True*, it will be specific to the particular thread that is running; + otherwise, it will be the value available to all threads. If the value is + not found in the cache, *None* is returned. If the value is found in the + cache but it has expired, *None* is also returned and the value is removed + from the cache. + """ + return secret_value_cache.get_value(key, thread_local) + + +def save_secret( + key: Any, + value: Optional[Union[str, bytes]], + *, + thread_local: bool = False, + expires: Optional[datetime.datetime] = None, +) -> SecretValue: + """ + Saves a secret in an internal cache for later retrieval. This can help + protect a secret from being exposed in memory dumps. If the + ``thread_local`` parameter is *True*, the cache will be specific to the + particular thread that is running; otherwise, the value will be available + to all threads. If the value supplied is *None* and a value already exists + in the cache for the supplied key, then the stored value will be removed + from the cache. + """ + return secret_value_cache.store_value(key, value, thread_local, expires) diff --git a/.venv/lib/python3.9/site-packages/oracledb/soda.py b/.venv/lib/python3.9/site-packages/oracledb/soda.py new file mode 100644 index 0000000..39a6fa7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/soda.py @@ -0,0 +1,746 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# soda.py +# +# Contains the classes for managing Simple Oracle Document Access (SODA): +# SodaDatabase, SodaCollection, SodaDocument, SodaDocCursor and SodaOperation. +# ----------------------------------------------------------------------------- + +from typing import Any, Optional, Union +from typing_extensions import Self +import json + +from .base import BaseMetaClass +from . import errors + + +class SodaDatabase(metaclass=BaseMetaClass): + def __repr__(self): + cls_name = self.__class__._public_name + return f"<{cls_name} on {self._conn!r}>" + + @classmethod + def _from_impl(cls, conn, impl): + db = cls.__new__(cls) + db._conn = conn + db._impl = impl + return db + + def _create_doc_impl( + self, content: Any, key: str = None, media_type: str = None + ) -> "SodaDocument": + """ + Internal method used for creating a document implementation object with + the given content, key and media type. + """ + if isinstance(content, str): + content_bytes = content.encode() + elif isinstance(content, bytes): + content_bytes = content + elif self._impl.supports_json: + return self._impl.create_json_document(content, key) + else: + content_bytes = json.dumps(content).encode() + return self._impl.create_document(content_bytes, key, media_type) + + def createCollection( + self, + name: str, + metadata: Optional[Union[str, dict]] = None, + mapMode: bool = False, + ) -> "SodaCollection": + """ + Creates a SODA collection with the given name and returns a new SODA + collection object. If you try to create a collection, and a collection + with the same name and metadata already exists, then that existing + collection is opened without error. + + If ``metadata`` is specified, it is expected to be a string containing + valid JSON or a dictionary that will be transformed into a JSON string. + This JSON permits you to specify the configuration of the collection + including storage options; specifying the presence or absence of + columns for creation timestamp, last modified timestamp and version; + whether the collection can store only JSON documents; and methods of + key and version generation. The default metadata creates a collection + that only supports JSON documents and uses system generated keys. + + If the ``mapMode`` parameter is set to *True*, the new collection is + mapped to an existing table instead of creating a table. If a + collection is created in this way, dropping the collection will not + drop the existing table either. + """ + if metadata is not None and not isinstance(metadata, str): + metadata = json.dumps(metadata) + collection_impl = self._impl.create_collection(name, metadata, mapMode) + return SodaCollection._from_impl(self, collection_impl) + + def createDocument( + self, + content: Any, + key: Optional[str] = None, + mediaType: str = "application/json", + ) -> "SodaDocument": + """ + Creates a SODA document usable for SODA write operations. You only need + to use this method if your collection requires client-assigned keys or + has non-JSON content; otherwise, you can pass your content directly to + SODA write operations. SodaDocument attributes + :attr:`~SodaDoc.createdOn`, :attr:`~SodaDoc.lastModified`, and + :attr:`~SodaDoc.version` will be *None*. + + The ``content`` parameter can be a dictionary or list which will be + transformed into a JSON string and then UTF-8 encoded. It can also be a + string which will be UTF-8 encoded or it can be a bytes object which + will be stored unchanged. If a bytes object is provided and the content + is expected to be JSON, note that SODA only supports UTF-8, UTF-16LE, + and UTF-16BE encodings. + + The ``key`` parameter should only be supplied if the collection in + which the document is to be placed requires client-assigned keys. + + The ``mediaType`` parameter should only be supplied if the collection + in which the document is to be placed supports non-JSON documents and + the content for this document is non-JSON. Using a standard MIME type + for this value is recommended but any string will be accepted. + """ + doc_impl = self._create_doc_impl(content, key, mediaType) + return SodaDocument._from_impl(doc_impl) + + def getCollectionNames( + self, startName: Optional[str] = None, limit: int = 0 + ) -> list[str]: + """ + Returns a list of the names of collections in the database that match + the criteria, in alphabetical order. + + If the ``startName`` parameter is specified, the list of names returned + will start with this value and also contain any names that fall after + this value in alphabetical order. + + If the ``limit`` parameter is specified and is non-zero, the number of + collection names returned will be limited to this value. + """ + return self._impl.get_collection_names(startName, limit) + + def openCollection(self, name: str) -> "SodaCollection": + """ + Opens an existing collection with the given name and returns a new SODA + collection object. If a collection with that name does not exist, + *None* is returned. + """ + collection_impl = self._impl.open_collection(name) + if collection_impl is not None: + return SodaCollection._from_impl(self, collection_impl) + + +class SodaCollection(metaclass=BaseMetaClass): + @classmethod + def _from_impl(cls, db, impl): + coll = cls.__new__(cls) + coll._db = db + coll._impl = impl + return coll + + def _process_doc_arg(self, arg): + if isinstance(arg, SodaDocument): + return arg._impl + return self._db._create_doc_impl(arg) + + def createIndex(self, spec: Union[dict, str]) -> None: + """ + Creates an index on a SODA collection. + + The ``spec`` parameter is expected to be a dictionary or a JSON-encoded + string. + + Note that a commit should be performed before attempting to create an + index. + """ + if isinstance(spec, dict): + spec = json.dumps(spec) + elif not isinstance(spec, str): + raise TypeError("expecting a dictionary or string") + self._impl.create_index(spec) + + def drop(self) -> bool: + """ + Drops the collection from the database, if it exists. Note that if the + collection was created with ``mapMode`` set to *True*, the underlying + table will not be dropped. + + A boolean value is returned indicating if the collection was actually + dropped. + """ + return self._impl.drop() + + def dropIndex(self, name: str, force: bool = False) -> bool: + """ + Drops the index with the specified name, if it exists. + + The force parameter, if set to *True*, can be used to force the + dropping of an index that the underlying Oracle Database domain index + does not normally permit. This is only applicable to spatial and JSON + search indexes. + + A boolean value is returned indicating if the index was actually + dropped. + """ + return self._impl.drop_index(name, force) + + def find(self) -> "SodaOperation": + """ + Begins an operation that will act upon documents in the collection. It + creates and returns a SodaOperation object which is used to specify the + criteria and the operation that will be performed on the documents that + match that criteria. + """ + return SodaOperation(self) + + def getDataGuide(self) -> "SodaDocument": + """ + Returns a SODA document object containing property names, data types, + and lengths inferred from the JSON documents in the collection. It can + be useful for exploring the schema of a collection. Note that this + method is only supported for JSON-only collections where a JSON search + index has been created with the ‘dataguide’ option enabled. If there + are no documents in the collection, *None* is returned. + """ + doc_impl = self._impl.get_data_guide() + if doc_impl is not None: + return SodaDocument._from_impl(doc_impl) + + def insertMany(self, docs: list) -> None: + """ + Inserts a list of documents into the collection at one time. Each of + the input documents can be a dictionary or list or an existing SODA + document object. + + This method requires Oracle Client 18.5 (or later) and is available + only as a preview. + """ + doc_impls = [self._process_doc_arg(d) for d in docs] + self._impl.insert_many(doc_impls, hint=None, return_docs=False) + + def insertManyAndGet( + self, docs: list, hint: Optional[str] = None + ) -> list["SodaDocument"]: + """ + Similar to :meth:`SodaCollection.insertMany()`, this method inserts a + list of documents into the collection at one time. The only difference + is that it returns a list of SODA Document objects. Note that for + performance reasons the returned documents do not contain the content. + + The ``hint`` parameter, if specified, supplies a hint to the database + when processing the SODA operation. This is expected to be a string in + the same format as SQL hints but without any comment characters, for + example hint="MONITOR". While you could use this to pass any SQL hint, + the hints MONITOR (turn on monitoring) and NO_MONITOR (turn off + monitoring) are the most useful. Use of the ``hint`` parameter requires + Oracle Client 21.3 or later (or Oracle Client 19 from 19.11). + + This method requires Oracle Client 18.5 (or later). + """ + doc_impls = [self._process_doc_arg(d) for d in docs] + if hint is not None and not isinstance(hint, str): + raise TypeError("expecting a string") + return_doc_impls = self._impl.insert_many( + doc_impls, hint, return_docs=True + ) + return [SodaDocument._from_impl(i) for i in return_doc_impls] + + def insertOne(self, doc: Any) -> None: + """ + Inserts a given document into the collection. The input document can be + a dictionary or list or an existing SODA document object. + """ + doc_impl = self._process_doc_arg(doc) + self._impl.insert_one(doc_impl, hint=None, return_doc=False) + + def insertOneAndGet( + self, doc: Any, hint: Optional[str] = None + ) -> "SodaDocument": + """ + Similar to :meth:`~SodaCollection.insertOne()`, this method inserts a + given document into the collection. The only difference is that it + returns a SODA Document object. Note that for performance reasons the + returned document does not contain the content. + + The ``hint`` parameter, if specified, supplies a hint to the database + when processing the SODA operation. This is expected to be a string in + the same format as SQL hints but without any comment characters, for + example hint="MONITOR". While you could use this to pass any SQL hint, + the hints MONITOR (turn on monitoring) and NO_MONITOR (turn off + monitoring) are the most useful. Use of the ``hint`` parameter requires + Oracle Client 21.3 or later (or Oracle Client 19 from 19.11). + """ + doc_impl = self._process_doc_arg(doc) + if hint is not None and not isinstance(hint, str): + raise TypeError("expecting a string") + return_doc_impl = self._impl.insert_one( + doc_impl, hint, return_doc=True + ) + return SodaDocument._from_impl(return_doc_impl) + + def listIndexes(self) -> list: + """ + Returns a list of specifications for the indexes found on the + collection. + + This method requires Oracle Client 21.3 or later (or Oracle Client 19 + from 19.13). + """ + return [json.loads(s) for s in self._impl.list_indexes()] + + @property + def metadata(self) -> dict: + """ + This read-only attribute returns a dictionary containing the metadata + that was used to create the collection. + """ + return json.loads(self._impl.get_metadata()) + + @property + def name(self) -> str: + """ + This read-only attribute returns the name of the collection. + """ + return self._impl.name + + def save(self, doc: Any) -> None: + """ + Saves a document into the collection. This method is equivalent to + :meth:`~SodaCollection.insertOne()` except that if client-assigned keys + are used, and the document with the specified key already exists in the + collection, it will be replaced with the input document. + + This method requires Oracle Client 19.9 (or later) in addition to the + usual SODA requirements. + """ + doc_impl = self._process_doc_arg(doc) + self._impl.save(doc_impl, hint=None, return_doc=False) + + def saveAndGet( + self, doc: Any, hint: Optional[str] = None + ) -> "SodaDocument": + """ + Saves a document into the collection. This method is equivalent to + :meth:`~SodaCollection.insertOneAndGet()` except that if + client-assigned keys are used, and the document with the specified key + already exists in the collection, it will be replaced with the input + document. + + The ``hint`` parameter, if specified, supplies a hint to the database + when processing the SODA operation. This is expected to be a string in + the same format as SQL hints but without any comment characters, for + example hint="MONITOR". While you could use this to pass any SQL hint, + the hints MONITOR (turn on monitoring) and NO_MONITOR (turn off + monitoring) are the most useful. Use of the ``hint`` parameter requires + Oracle Client 21.3 or later (or Oracle Client 19 from 19.11). + + This method requires Oracle Client 19.9 (or later) in addition to the + usual SODA requirements. + """ + doc_impl = self._process_doc_arg(doc) + if hint is not None and not isinstance(hint, str): + raise TypeError("expecting a string") + return_doc_impl = self._impl.save(doc_impl, hint, return_doc=True) + return SodaDocument._from_impl(return_doc_impl) + + def truncate(self) -> None: + """ + Removes all of the documents in the collection, similarly to what is + done for rows in a table by the TRUNCATE TABLE statement. + """ + self._impl.truncate() + + +class SodaDocument(metaclass=BaseMetaClass): + @classmethod + def _from_impl(cls, impl): + doc = cls.__new__(cls) + doc._impl = impl + return doc + + @property + def createdOn(self) -> str: + """ + This read-only attribute returns the creation time of the document in + ISO 8601 format. Documents created by + :meth:`SodaDatabase.createDocument()` or fetched from collections where + this attribute is not stored will return *None*. + """ + return self._impl.get_created_on() + + def getContent(self) -> Union[dict, list]: + """ + Returns the content of the document as a dictionary or list. This + method assumes that the content is application/json and will raise an + exception if this is not the case. If there is no content, however, + *None* will be returned. + """ + content, encoding = self._impl.get_content() + if isinstance(content, bytes) and self.mediaType == "application/json": + return json.loads(content.decode(encoding)) + return content + + def getContentAsBytes(self) -> bytes: + """ + Returns the content of the document as a bytes object. If there is no + content, however, *None* will be returned. + """ + content, encoding = self._impl.get_content() + if isinstance(content, bytes): + return content + elif content is not None: + return str(content).encode() + + def getContentAsString(self) -> str: + """ + Returns the content of the document as a string. If the document + encoding is not known, UTF-8 will be used. If there is no content, + however, *None* will be returned. + """ + content, encoding = self._impl.get_content() + if isinstance(content, bytes): + return content.decode(encoding) + elif content is not None: + return str(content) + + @property + def key(self) -> str: + """ + This read-only attribute returns the unique key assigned to this + document. Documents created by :meth:`SodaDatabase.createDocument()` + may not have a value assigned to them and return *None*. + """ + return self._impl.get_key() + + @property + def lastModified(self) -> str: + """ + This read-only attribute returns the last modified time of the document + in ISO 8601 format. Documents created by + :meth:`SodaDatabase.createDocument()` or fetched from collections where + this attribute is not stored will return *None*. + """ + return self._impl.get_last_modified() + + @property + def mediaType(self) -> str: + """ + This read-only attribute returns the media type assigned to the + document. By convention this is expected to be a MIME type but no + checks are performed on this value. If a value is not specified when + calling :meth:`SodaDatabase.createDocument()` or the document is + fetched from a collection where this component is not stored, the + string “application/json” is returned. + """ + return self._impl.get_media_type() + + @property + def version(self) -> str: + """ + This read-only attribute returns the version assigned to this document. + Documents created by :meth:`SodaDatabase.createDocument()` or fetched + from collections where this attribute is not stored will return *None*. + """ + return self._impl.get_version() + + +class SodaDocCursor(metaclass=BaseMetaClass): + def __iter__(self): + return self + + def __next__(self): + if self._impl is None: + errors._raise_err(errors.ERR_CURSOR_NOT_OPEN) + doc_impl = self._impl.get_next_doc() + if doc_impl is not None: + return SodaDocument._from_impl(doc_impl) + raise StopIteration + + @classmethod + def _from_impl(cls, impl): + cursor = cls.__new__(cls) + cursor._impl = impl + return cursor + + def close(self) -> None: + """ + Closes the cursor now, rather than whenever __del__ is called. The + cursor will be unusable from this point forward; an Error exception + will be raised if any operation is attempted with the cursor. + """ + if self._impl is None: + errors._raise_err(errors.ERR_CURSOR_NOT_OPEN) + self._impl.close() + self._impl = None + + +class SodaOperation(metaclass=BaseMetaClass): + def __init__(self, collection: SodaCollection) -> None: + self._collection = collection + self._key = None + self._keys = None + self._version = None + self._filter = None + self._hint = None + self._skip = None + self._limit = None + self._fetch_array_size = None + self._lock = False + + def count(self) -> int: + """ + Returns a count of the number of documents in the collection that match + the criteria. If :meth:`~SodaOperation.skip()` or + :meth:`~SodaOperation.limit()` were called on this object, an + exception is raised. + """ + return self._collection._impl.get_count(self) + + def fetchArraySize(self, value: int) -> Self: + """ + This is a tuning method to specify the number of documents that are + internally fetched in batches by calls to + :meth:`~SodaOperation.getCursor()` and + :meth:`~SodaOperation.getDocuments()`. It does not affect how many + documents are returned to the application. + + If ``fetchArraySize()`` is not used, or the ``value`` parameter is *0*, + the array size will default to *100*. + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + + This method is only available when using Oracle Client 19.5, or later. + """ + if not isinstance(value, int) or value < 0: + raise TypeError("expecting integer >= 0") + if value == 0: + self._fetch_array_size = None + else: + self._fetch_array_size = value + return self + + def filter(self, value: Union[dict, str]) -> Self: + """ + Sets a filter specification for complex document queries and ordering + of JSON documents. Filter specifications must be provided as a + dictionary or JSON-encoded string and can include comparisons, regular + expressions, logical and spatial operators, among others. + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + """ + if isinstance(value, dict): + self._filter = json.dumps(value) + elif isinstance(value, str): + self._filter = value + else: + raise TypeError("expecting string or dictionary") + return self + + def getCursor(self) -> "SodaDocCursor": + """ + Returns a SodaDocCursor object that can be used to iterate over the + documents that match the criteria. + """ + impl = self._collection._impl.get_cursor(self) + return SodaDocCursor._from_impl(impl) + + def getDocuments(self) -> list["SodaDocument"]: + """ + Returns a list of SodaDocument objects that match the criteria. + """ + return [d for d in self.getCursor()] + + def getOne(self) -> Union["SodaDocument", None]: + """ + Returns a single SodaDocument object that matches the criteria. Note + that if multiple documents match the criteria only the first one is + returned. + """ + doc_impl = self._collection._impl.get_one(self) + if doc_impl is not None: + return SodaDocument._from_impl(doc_impl) + + def hint(self, value: str) -> Self: + """ + Specifies a hint that will be provided to the SODA operation when it is + performed. This is expected to be a string in the same format as SQL + hints but without any comment characters. While you could use this to + pass any SQL hint, the hints MONITOR (turn on monitoring) and + NO_MONITOR (turn off monitoring) are the most useful. Use of this + method requires Oracle Client 21.3 or later (or Oracle Client 19 from + 19.11). + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + """ + if not isinstance(value, str): + raise TypeError("expecting a string") + self._hint = value + return self + + def lock(self) -> Self: + """ + Specifies whether the documents fetched from the collection should be + locked (equivalent to SQL "select for update"). Use of this method + requires Oracle Client 21.3 or later (or Oracle Client 19 from 19.11). + + The next commit or rollback on the connection made after the operation + is performed will "unlock" the documents. Ensure that the connection is + not in autocommit mode or the documents will be unlocked immediately + after the operation is complete. + + This method should only be used with read operations (other than + :func:`~SodaOperation.count()`) and should not be used in conjunction + with non-terminal methods :meth:`~SodaOperation.skip()` and + :meth:`~SodaOperation.limit()`. + + If this method is specified in conjunction with a write operation, this + method is ignored. + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + """ + self._lock = True + return self + + def key(self, value: str) -> Self: + """ + Specifies that the document with the specified key should be returned. + This causes any previous calls made to this method and + :meth:`~SodaOperation.keys()` to be ignored. + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + """ + if not isinstance(value, str): + raise TypeError("expecting string") + self._key = value + self._keys = None + return self + + def keys(self, value: list) -> Self: + """ + Specifies that documents that match the keys found in the supplied + sequence should be returned. This causes any previous calls made to + this method and :meth:`~SodaOperation.key()` to be ignored. + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + """ + value_as_list = list(value) + for element in value_as_list: + if not isinstance(element, str): + raise TypeError("expecting sequence of strings") + self._keys = value_as_list + self._key = None + return self + + def limit(self, value: int) -> Self: + """ + Specifies that only the specified number of documents should be + returned. This method is only usable for read operations such as + :meth:`~SodaOperation.getCursor()` and + :meth:`~SodaOperation.getDocuments()`. For write operations, any value + set using this method is ignored. + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + """ + if not isinstance(value, int) or value <= 0: + raise TypeError("expecting positive integer") + self._limit = value + return self + + def remove(self) -> int: + """ + Removes all of the documents in the collection that match the criteria. + The number of documents that have been removed is returned. + """ + return self._collection._impl.remove(self) + + def replaceOne(self, doc: Any) -> bool: + """ + Replaces a single document in the collection with the specified + document. The input document can be a dictionary or list or an existing + SODA document object. A boolean indicating if a document was replaced + or not is returned. + + Currently, the method :meth:`~SodaOperation.key()` must be called + before this method can be called. + """ + doc_impl = self._collection._process_doc_arg(doc) + return self._collection._impl.replace_one( + self, doc_impl, return_doc=False + ) + + def replaceOneAndGet(self, doc: Any) -> "SodaDocument": + """ + Similar to :meth:`~SodaOperation.replaceOne()`, this method replaces a + single document in the collection with the specified document. The only + difference is that it returns a SodaDocument object. Note that for + performance reasons the returned document does not contain the content. + """ + doc_impl = self._collection._process_doc_arg(doc) + return_doc_impl = self._collection._impl.replace_one( + self, doc_impl, return_doc=True + ) + return SodaDocument._from_impl(return_doc_impl) + + def skip(self, value: int) -> Self: + """ + Specifies the number of documents that match the other criteria that + will be skipped. This method is only usable for read operations such as + :meth:`~SodaOperation.getOne()`, :meth:`~SodaOperation.getCursor()`, + and :meth:`~SodaOperation.getDocuments()`. For write operations, any + value set using this method is ignored. + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + """ + if not isinstance(value, int) or value < 0: + raise TypeError("expecting integer >= 0") + self._skip = value + return self + + def version(self, value: str) -> Self: + """ + Specifies that documents with the specified version should be returned. + Typically this is used with :meth:`~SodaOperation.key()` to implement + optimistic locking, so that the write operation called later does not + affect a document that someone else has modified. + + As a convenience, the SodaOperation object is returned so that further + criteria can be specified by chaining methods together. + """ + if not isinstance(value, str): + raise TypeError("expecting string") + self._version = value + return self diff --git a/.venv/lib/python3.9/site-packages/oracledb/sparse_vector.py b/.venv/lib/python3.9/site-packages/oracledb/sparse_vector.py new file mode 100644 index 0000000..7898e72 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/sparse_vector.py @@ -0,0 +1,123 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# sparse_vector.py +# +# Contains the SparseVector class which stores information about a sparse +# vector. Sparse vectors are available in Oracle Database 23.6 and higher. +# ----------------------------------------------------------------------------- + +import array +from typing import Union + +from .base import BaseMetaClass +from .base_impl import get_array_type_code_uint32, SparseVectorImpl + +ARRAY_TYPE_CODE_UINT32 = get_array_type_code_uint32() + + +class SparseVector(metaclass=BaseMetaClass): + """ + Provides information about sparse vectors. + """ + + def __init__( + self, + num_dimensions: int, + indices: Union[list, array.array], + values: Union[list, array.array], + ): + """ + Creates and returns a :ref:`SparseVector object `. + + The ``num_dimensions`` parameter is the number of dimensions contained + in the vector. + + The ``indices`` parameter is the indices (zero-based) of non-zero + values in the vector. + + The ``values`` parameter is the non-zero values stored in the vector. + """ + if ( + not isinstance(indices, array.array) + or indices.typecode != ARRAY_TYPE_CODE_UINT32 + ): + indices = array.array(ARRAY_TYPE_CODE_UINT32, indices) + if not isinstance(values, array.array): + values = array.array("d", values) + if len(indices) != len(values): + raise TypeError("indices and values must be of the same length!") + self._impl = SparseVectorImpl.from_values( + num_dimensions, indices, values + ) + + def __eq__(self, other): + if isinstance(other, SparseVector): + return ( + other.num_dimensions == self.num_dimensions + and other.indices == self.indices + and other.values == self.values + ) + return NotImplemented + + def __repr__(self): + cls_name = self.__class__._public_name + return ( + f"{cls_name}({self.num_dimensions}, " + f"{self.indices}, {self.values})" + ) + + def __str__(self): + return ( + f"[{self.num_dimensions}, {list(self.indices)}, " + f"{list(self.values)}]" + ) + + @classmethod + def _from_impl(cls, impl): + vector = cls.__new__(cls) + vector._impl = impl + return vector + + @property + def indices(self) -> array.array: + """ + Returns the indices (zero-based) of non-zero values in the vector. + """ + return self._impl.indices + + @property + def num_dimensions(self) -> int: + """ + Returns the number of dimensions contained in the vector. + """ + return self._impl.num_dimensions + + @property + def values(self) -> array.array: + """ + Returns the non-zero values stored in the vector. + """ + return self._impl.values diff --git a/.venv/lib/python3.9/site-packages/oracledb/subscr.py b/.venv/lib/python3.9/site-packages/oracledb/subscr.py new file mode 100644 index 0000000..419e98a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/subscr.py @@ -0,0 +1,382 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# subscr.py +# +# Contains the Subscription class and Message classes used for managing +# subscriptions to database events and the messages that are sent when those +# events are detected. +# ----------------------------------------------------------------------------- + +from typing import Callable, Optional, Union +from .base import BaseMetaClass +from . import connection, errors + +import oracledb + + +class Subscription(metaclass=BaseMetaClass): + def __repr__(self): + return f"" + + @classmethod + def _from_impl(cls, impl): + subscr = cls.__new__(cls) + subscr._impl = impl + return subscr + + @property + def callback(self) -> Callable: + """ + This read-only attribute returns the callback that was registered when + the subscription was created. + """ + return self._impl.callback + + @property + def connection(self) -> "connection.Connection": + """ + This read-only attribute returns the connection that was used to + register the subscription when it was created. + """ + return self._impl.connection + + @property + def id(self) -> int: + """ + This read-only attribute returns the value of REGID found in the + database view USER_CHANGE_NOTIFICATION_REGS or the value of REG_ID + found in the database view USER_SUBSCR_REGISTRATIONS. For AQ + subscriptions, this value is *0*. + """ + return self._impl.id + + @property + def ip_address(self) -> str: + """ + This read-only attribute returns the IP address used for callback + notifications from the database server. If not set during construction, + this value is *None*. + """ + return self._impl.ip_address + + @property + def ipAddress(self) -> str: + """ + Deprecated. Use property ip_address instead. + """ + return self.ip_address + + @property + def name(self) -> str: + """ + This read-only attribute returns the name used to register the + subscription when it was created. + """ + return self._impl.name + + @property + def namespace(self) -> int: + """ + This read-only attribute returns the namespace used to register the + subscription when it was created. + """ + return self._impl.namespace + + @property + def operations(self) -> int: + """ + This read-only attribute returns the operations that will send + notifications for each table or query that is registered using this + subscription. + """ + return self._impl.operations + + @property + def port(self) -> int: + """ + This read-only attribute returns the port used for callback + notifications from the database server. If not set during + construction, this value is *0*. + """ + return self._impl.port + + @property + def protocol(self) -> int: + """ + This read-only attribute returns the protocol used to register the + subscription when it was created. + """ + return self._impl.protocol + + @property + def qos(self) -> int: + """ + This read-only attribute returns the quality of service flags used to + register the subscription when it was created. + """ + return self._impl.qos + + def registerquery( + self, statement: str, args: Optional[Union[list, dict]] = None + ) -> int: + """ + Registers the query for subsequent notification when tables referenced + by the query are changed. This behaves similarly to + :meth:`Cursor.execute()` but only queries are permitted and the + ``args`` parameter, if specified, must be a sequence or dictionary. If + the ``qos`` parameter included the flag + :data:`oracledb.SUBSCR_QOS_QUERY` when the subscription was created, + then the ID for the registered query is returned; otherwise, *None* is + returned. + """ + if args is not None and not isinstance(args, (list, dict)): + raise TypeError("expecting args to be a dictionary or list") + if self._impl.namespace == oracledb.SUBSCR_NAMESPACE_AQ: + errors._raise_err(errors.ERR_REGISTER_QUERY_ON_AQ_SUBSCR) + return self._impl.register_query(statement, args) + + @property + def timeout(self) -> int: + """ + This read-only attribute returns the timeout (in seconds) that was + specified when the subscription was created. A value of *0* indicates + that there is no timeout. + """ + return self._impl.timeout + + +class Message(metaclass=BaseMetaClass): + def __init__(self, subscription: Subscription) -> None: + self._subscription = subscription + self._consumer_name = None + self._dbname = None + self._queries = [] + self._queue_name = None + self._registered = False + self._tables = [] + self._txid = None + self._type = 0 + self._msgid = None + + @property + def consumer_name(self) -> Union[str, None]: + """ + This read-only attribute returns the name of the consumer which + generated the notification. It will be populated if the + subscription was created with the namespace + :data:`oracledb.SUBSCR_NAMESPACE_AQ` and the queue is a multiple + consumer queue. + """ + return self._consumer_name + + @property + def consumerName(self) -> Union[str, None]: + """ + Deprecated. Use property consumer_name instead. + """ + return self.consumer_name + + @property + def dbname(self) -> Union[str, None]: + """ + This read-only attribute returns the name of the database that + generated the notification. + """ + return self._dbname + + @property + def msgid(self) -> Union[bytes, None]: + """ + This read-only attribute returns the message id of the AQ message that + generated the notification. It will only be populated if the + subscription was created with the namespace + :data:`oracledb.SUBSCR_NAMESPACE_AQ`. + """ + return self._msgid + + @property + def queries(self) -> list["MessageQuery"]: + """ + This read-only attribute returns a list of message query objects that + give information about query result sets changed for this notification. + This attribute will be an empty list if the ``qos`` parameter did not + include the flag :data:`~oracledb.SUBSCR_QOS_QUERY` when the + subscription was created. + """ + return self._queries + + @property + def queue_name(self) -> Union[str, None]: + """ + This read-only attribute returns the name of the queue which generated + the notification. It will only be populated if the subscription was + created with the namespace :data:`oracledb.SUBSCR_NAMESPACE_AQ`. + """ + return self._queue_name + + @property + def queueName(self) -> Union[str, None]: + """ + Deprecated. Use property queue_name instead. + """ + return self.queue_name + + @property + def registered(self) -> bool: + """ + This read-only attribute returns whether the subscription which + generated this notification is still registered with the database. The + subscription is automatically deregistered with the database when the + subscription timeout value is reached or when the first notification is + sent (when the quality of service flag + :data:`oracledb.SUBSCR_QOS_DEREG_NFY` is used). + """ + return self._registered + + @property + def subscription(self) -> Subscription: + """ + This read-only attribute returns the subscription object for which this + notification was generated. + """ + return self._subscription + + @property + def tables(self) -> list["MessageTable"]: + """ + This read-only attribute returns a list of message table objects that + give information about the tables changed for this notification. This + attribute will be an empty list if the ``qos`` parameter included the + flag :data:`~oracledb.SUBSCR_QOS_QUERY` when the subscription was + created. + """ + return self._tables + + @property + def txid(self) -> Union[bytes, None]: + """ + This read-only attribute returns the id of the transaction that + generated the notification. + """ + return self._txid + + @property + def type(self) -> int: + """ + This read-only attribute returns the type of message that has been + sent. + """ + return self._type + + +class MessageQuery(metaclass=BaseMetaClass): + def __init__(self) -> None: + self._id = 0 + self._operation = 0 + self._tables = [] + + @property + def id(self) -> int: + """ + This read-only attribute returns the query id of the query for which + the result set changed. The value will match the value returned by + :meth:`Subscription.registerquery()` when the related query was + registered. + """ + return self._id + + @property + def operation(self) -> int: + """ + This read-only attribute returns the operation that took place on the + query result set that was changed. Valid values for this attribute are + :data:`~oracledb.EVENT_DEREG` and :data:`~oracledb.EVENT_QUERYCHANGE`. + """ + return self._operation + + @property + def tables(self) -> list["MessageTable"]: + """ + This read-only attribute returns a list of message table objects that + give information about the table changes that caused the query result + set to change for this notification. + """ + return self._tables + + +class MessageRow(metaclass=BaseMetaClass): + def __init__(self) -> None: + self._operation = 0 + self._rowid = None + + @property + def operation(self) -> int: + """ + This read-only attribute returns the operation that took place on the + row that was changed. + """ + return self._operation + + @property + def rowid(self) -> Union[str, None]: + """ + This read-only attribute returns the rowid of the row that was changed. + """ + return self._rowid + + +class MessageTable(metaclass=BaseMetaClass): + def __init__(self) -> None: + self._name = None + self._operation = 0 + self._rows = [] + + @property + def name(self) -> Union[str, None]: + """ + This read-only attribute returns the name of the table that was + changed. + """ + return self._name + + @property + def operation(self) -> int: + """ + This read-only attribute returns the operation that took place on the + table that was changed. + """ + return self._operation + + @property + def rows(self) -> list["MessageRow"]: + """ + This read-only attribute returns a list of message row objects that + give information about the rows changed on the table. This value is + only filled in if the ``qos`` parameter to the + :meth:`Connection.subscribe()` method included the flag + :data:`~oracledb.SUBSCR_QOS_ROWIDS`. + """ + return self._rows diff --git a/.venv/lib/python3.9/site-packages/oracledb/thick_impl.cpython-39-x86_64-linux-gnu.so b/.venv/lib/python3.9/site-packages/oracledb/thick_impl.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..da42e260c671ff70afda040c973d609e2c1d723a GIT binary patch literal 1319616 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�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 z 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 z�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

    OKr+OfFl$i)yo!lIdirq?@MfX?;=ZkgJq%g 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

    oFuV%y1S3MKqh)xxVUU^|vY-PBKY%bbmw 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

    bw*wJ4y!kIWgHX^&M!r#gkjjsA@PyHrY4!dw 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

    1iu9 z5rnl^MRw&nJ&!b_v3HU)*spM5pEK3*_Lvm2n`Ge83xcvWNS11hxPc~aHhyOqO&>;< zRHI9#94h5~g>e$!@@~Wn{77{y8k1z!)O6rTfpl0j;uFoE!F;vx6^u7-ycPBLC>`0d zxzO*>M^1V%%|YrVqt=3AhK=F^*?Wa0ahqYhqUyH-LQ|aWn}V zZ=HR&r6AB%PNj7A4Rs-qiBxc1AgTJ`w=>;0G%MYA?XYy;O(RwO_#9LTpRyPP_+6ap zL`RLEz={Ts$>FF{A}|D!0UxVVj5wcph{oe<#B0|<1X05;B?r~}+tJ`Fj=gR}IyoYD z9g@1*w%p5nJkH&cRVHaYg5(yKp$Rmhd*>`N~dIC1KxNT&x`y z>`MinBQZ}X#yB34$npw;p>ViS|4Y+Q7ywaI!-odQQrxonTyPs2^a+2WrY7nBcdXj zM%fKqg)sysOh4GDLV%a%W!`2qoy73zzpC2t(nF>(HP=nkdsHI6ZIfpU7kPMcfRgX}nTs?05IWd3LoY zEayf_+zblMSI|Ej4sgKoX3}z8K=58gjaJKzZDMlUYlpvlCbiD3|)oy{q9ry>_B=|R24 zzK6V)zSkZz>%@QB6*hm_e& zmmdYm6#-y+j&jq=~p`Eu{WO|=QNSsTywIJxKYeFQL(+79o( z?=&YaDa0Jwo?q%C-K8qz@_nX{4_f@dd0J{zWf;8saCFM7b`c|1L5>>j$5=E*XVO91 zq&jqv25&)Nqva%Rm-+srqxL;R=+kjOXoC*te1Q+;C{~Ibarz)Bz-%9m2BfrS!G zgDB#hoeRtUt6Om^0(Y~v!0dnqo3Jx=SuK+ZAB;8sQw@gxzJ7QE+NH_n-!hGip~(y z86^^ye>qH3m(gSeDk3@$DP6wzb;1K8(>eG^z8~xWzGt)~ z-&X|BH{!IW%Dqa-Kh`-^=J+jvkICg{ph~%C$5+DfqI^g(3+ucr?Bofpm6!`4IC7zPu2>PK+Ep}WzvFYly7;0GDlfakTE>IGOIrs7KMkqj5Zmxs@13(JKsH%L-F{7S`_Gj)nG@Z|)2J^{YmohbOS z)x1-|mm{fB?f7zLEF*|7m+iq=)c7*KT50%l$oS&;vI+8tK|e)&xjPv+XF%*}(A<*{bSRX%+A6WC6YL+H%GAG4~^`HS)8?I_3m;oOtNmu;a+PXS-9rpT9#FJIrKY&3P4!k3Rr zhU4JNjmT0OzFdHK8@}wM=@iG8m+1I1@#SElUlLzl&#H#4Ulvk?U~i9$FITZVYDYB> z|2M2(7G79heA)P`Qt;*cCL#$kcr?DOhjey)c|P+AzWm_J^5Dy_euT^$3FD{Xj~!p$ z#fZ}J<&dW2YdO|0&+Sw?zHA;MP+okw&xwH_#FwdPntlCp_ZQ*#ax=sKC46a~qvZYX zSif8mZ{f?qqk%75jyipOS$!u5tc5SvG#7l?=R(1kFW0l-%STYQ`3#JIIKHfd{C0d< zk>PNBx%b@T7d^x*-gQn5d&vDS$@MSYbl#VYiMSV{SUw+3mkK*|9Cn^9A zy^~zOTns~fa`J(+*%Q%*Q{PoLmtps0w^zy0T%NS}@JHG7L zfDy!(J$GO%YJ9o*_rg-vFKa$f9AB>3etP)wx=Vm_sx&xld^xVZ)ru!kBdZlPr4@Mp z0%tVksGpgBza3vbLuFY$e3=I}+3{r#!y$a>yI62xzo#&){R#c?$NaIrwCd#WWvZf6 zL(!>8Ipmxn%~xw7w%Pu2GJxcIWajQM{RzMOh) zdGTfb)>820b!Uqt2wye6T!eIXe7TnS1Yh2PUngF_9P=$rWx~uUG?ljX%ZZFA9beXD zKb8kyu1qN%Uv8xGQv}M3FUQxzzz^cf-CLCGTI-kN5Vo&h4rlnkgfAyVlVg9+`eok> zEPQ$OaNx@ihn_yZoV|$y*20$qoq{hboGbXU{TViVc_GR++X7^SGa->IC2Q7v#=izIq`0`1e&3OWRIW(;NAim5bUEBJli{WDU zvW;Xd7rv~nODP*)?yF~NEO1f|PO1IzeGb$|@Z}#L zVk~NWIs8y*_;SwO#qnidG<*xNZIhEq3IOIm-p!S zGV$fBpi|oZ_+zYU7`{x@_V&2=va)D}e-*w=j43a^?6sj3e0lH;kpw%wybgF^($i!U!g%R~5b+Ep}vwH&Y(zKp0R_;T9Wf-k?T zXv3EuGz7lfiE$c^FRw#>JHAY1I2>P|U;Fs@vTAh>mA?sJ2DWj~H0n2=gT{_88BsdE z98rrscoO^LO|b@40$;WkDkqOG3&E|E!zCsr7{T?+=T>1XYJ6G8EDc|F$|{a8Do$xGYIKK4VX2+L1Yamzo@Z~13$&N3VGaSN~w>MJwG8e-d_!582R;pDe zhcBBbI?WZG7NoPcil9Jh3-4cc{_>rM;QI%aPZD4L56a;b@a0Ps`Lgk)f4Q>JA$)m{ zWH`?H<*Ue2+WO^Vh_~U(7Mf0Re0i3RFB4y0BlJtIUtY|rhT+Q{6d~B#apOjDUqEr+JkhA)2{OH*0u z{hm%$$=7o1k5|HJ0E!oVH`wp@)CdtMFTPw?5d%NCe%S;~v+s|uSQd^i=QI3Y!k6nS zD0!C!6nNzNEARJAKhwgOhi(PFtkvW6@nv8s2dsrJU#=R@nt>K z_oVRU8ms|v@PwVe+(ZSyp(k^V^55^73PXKz`0_^b@5Jku7wKeW;>+6Mbc*52pZ+*p zI=>z5bk6lLJcNS1$m zeA(9__;T(;r-CmF1y0)5FE2Qz#NUWWeg|Vw(x*qDEFL3ce_gFPpIi!TUXHok1R zNZDxWFtvVpmSi{%zPtumO2d~IBi@ED-~XKjm)sv;sN>7Tm*2lt`ugP-#E0X{k=ouK z7hkrMG5@bxzZ_Y)y!i6@H%q~n@rC4U*!}S*kj{=TUtvC3zs$g|6XVNXYiKGHX1ZxA zZTNB`BTC1Y1=L;T!Iv*KDIH(F8X{0$e0keZ4E!LzT(MBeuC;#I7h(JQ<#i1Im+)oQ z5wiU6S-(t;wD9G|>wzy{hi~fBy+7`o&jD-U%k~uoUw&Ol@MY8eHhg&o$~ON82ojDj zCn3KbUyfrq9A6Il_3&};k9RoCq4GDaUp8CGLDQ(;a1I(9zD#FC>G*OHhwjO&Uk=0? zPziiFOsJeZzD$InJ~@1Od^wdG z)xLhY?k7fY{qoDX7>gQTUbnS0d}(wmjxSS@=XBODKdTO$OAo#u*8 z3(`4X=={a_vMa)Kdd@LfZ2b_w(~N}^aATeB^St}% zV8n>{Y7R{@!6Wdbo47q~enDq?xX_@{MmuB=xRQccuZM&+?H2tx4n(??eY!$j#Eqg(I z&(YtVX-20uDl@!(+>MX$p3om3(~NelWdyWm?dc~5ZcMJh2R=thS0(hE+dvV!L=%fN z7CxfeK&MM|zz3&G(fBG3myD%3_-eim5hJ6zx=8sZ@Wn9l@PTH-rwHzORq-;)czm)& z5Owb%)k|KDuXHG4;I)%JnwU$7T@NP%@5QhX7kJO76IsLuh=m)xEb*dB5P=48%@6LA zjCL;ddj!;c8@N#F;6z;4bl-^9Or3}yiTt6xBy~u^*FHM83%@hf?=G1n+Zx%KwNJXQ z3knn5-EJ7O!~4=*Bh!61B9IY_B#S6KOc9mto0}uQ6M7Y5j7hy7A~!%>yI^`q`p;+= z)7kgRG<-?-O`Iivo|uO}oqhR>@ki%e&Ywm*rw*={U|KAkJw3EZep@da!ex`Zk0{;& zEtgF#W)pJnM~`TiP4w87|3e68oGYAcc^=ZGC;b55I*>%T{kw$uCNIaY&t_SWdmTDo zyKJh$PE8t;l959!%{@G06G>5pUNMTDiAk1`;f!(2W z7)bM(Zh=IlaKue#*r&tDH%aGn%FAp)|FaSI>G;<2Mn@>Vua1uk91!0hQXkMs*YPQV zcf;c2b$nvL6N<-+MD-CLm=>x>b)7CMaJQ}gNkd!?ZyPw#1ME9Nsh3uaORKCG`v5h6=$UAv37|D+fqeP5Eih1ZM)aO1#$cqbw z2y@IUX&C%tNE+5kpF$eYV^;T58V1#MT0tjWcX#$>$C>fS7?iMgS%z;UymnL0fznLvory=&0x@h4{rQYMh^LR> zOhx(f$!4R}$U8F7UIxeG< zty-1b?dT<~n)2t^@&DL+6Y!{trGGdq!6@JfLNsE4sL>k~G$_$Th-PG)fyp%rXb=%Z zh$tu^6NrKs%nUFd2I9UeihA955P^iSNI+B;7f`N%0&)%kqgMpn$p81N?lW^HqF3Mh zKJWK_-~Z!z$eiA)tE;Q4tE;=Kp&|YHqxR?cc27|5hKsp`JP>Hc9t&J2kAlqx_mkp} zptV|#;F-<}kg@hn6{g?KGKODu(hpkW5VpPIYzTs6oi&VMdiEFog8v_eFL%NRt$dcB zqsxOXpeH=O!GB!T<=bJ(V9?Wx=Ec#I57qOjVdRDmBkv8DBwBS}qn`mNC*E}&-)cK( zZInb#sHCOiS56*sTW8JJB{8$cJDuw!vjCp{6{0$&8XLjILUEubu+#)9WY_pKX04m7 zs{q*Tq)wb!y0)AoTs{R(@&awy-ATHqH5BmF!>C9)Wf|CCzfG_JpB(9jcY&hMBLE@> zNh7e#6w*;BQ=}RXeyEAeVK|fOhjTp0A{=5HDWsSQhea9gyP_l8sSI)V*R< z=tL!sc=4zI#=JqO$9noJ1-bU=X#E~l|MKgl{uTJKE=2v#izOFQz-sJ?gt*FjP+G}; zaoQ!(H^=0JnP>kDNL^7MAl1I5=Y3VYFY;LrDJ9Lm82v6!SqQ1wY&(~5V#G#&$NYu= zGO#~q4Ont!F6oe9CVurdFl_ncbWFfAzzkrD*|+1D!XT28{aOcc2M%@#CoW{p2fgM? z%L^xA@@v%#*!N17(Gnh#WaaMJUw>d_V`u~%>)`KHvIKtTf}!}X0yN>gUvSm{y3hQB zm^#h8t#la^?uBQ>vzvd9PpE!Ss76(z;ah|Yl_~2u0*oZ)d~q1?M#Fa<-g@RlvZ|a* zkA#}?nf$>&Z%q#oarl*~1HVN&K3)H2>fbE=o1=g8`OBH0sq$Mmc@%{?0(`oD!Z6C7 zL~R`yJ&x`(5o(%&v};Q_mTJn&2mt@A*S|uu>2(tBG0Rs%dTl<^d)jzK!rmlfyNsns zr_wJW$KO|cC08u#@5vHUsx7p4IM~h34?m`-QFPC-*tV`pqN*Lq8-5`spww4u60-u;c}QpdZQ>kv|?jJsnC2#9EONdK~DG zLGH(|VvshkbVvv%PDCEX8JVR}0;;`{+t6+s?7_C7Uw0qEx9XCPKb9{mT4p!--ut3I zJQ8n6?zZYNfeGjEy+%@EE2k0s76V^s{bZaK&4qEM{2+`I`6$Xb{~`}5#<>V@Yg$jS zjJAQcCcH@E(oc>B*#Gs6Q@Y(@oQ_9goHCM9n9km;M7_v$y#KfjeDi_BHz25|{@#ou zaL%wtVx05wesIp2igQMFr+%30a83(2*qkD>kb)1s*}4^cGYWC2BuF$8?6nQ}XP{?* z7A&-#yel24Y$xKs-|YO=!>B!XbWWf(dNdhhroJ#sT*|BT$-}(4b%A`pc^#h5*%>$= zbFZ)b7uXwyb5+KvitpF@B2zNztq$yBMqRE}Y)NW>t>C<7PWF1c<=uzMWJ4&gn|v)# zT3(Wf3QDe!^=Tl-Z(du7G|_9E!H7H(o=H5aYva2c_Tu=matps`tUKm7>yEBV?d{ zl-u?ox+0RD^iNqNSo!GPs$&$|zib8Ca{wW>&U~G@qw9zI?U8jx!N;z3#&9e_ ztR84f(UlMZZo=gQ0M{Fq5&ReUMy)r_W%dEZhcJ27ZUDumq3WttL_U&NnFR3R&#jd6 zf2^-cBx>Q$5q<0hDAEXVDDt?>|J1AU{|VA!ZV*+jKc;gS4SXhMfAlKl_IO`dH2M+| zHpd}%0ahTNaSTP@D*>5Hnp+39?ALll)lrHbd%s9csJ#R8f6Xe;PHK3v04e}`g%1zvYL;GXnt``>BJG|Bh^nQkU7;^QFSIM~Jhba*RAHaWE_C!z6rd`w2T_SvX>u|_lf)@VAMdtdr0 z+RDvYg=lG#ydrWk>1WPSZ*akyI8<6O9?QK0Q`>i`cI1_}+kj>8AO1Z$h;NQ~b61t@ z#Yp(%J`l?6i^mwUH*O>=UxAU&_kO3yBz~qWYqnWiKSN6*DVuhoCkK)wk-Wv{p9mk; zR-h}zW?UP!UYhcdgYR1`VPZz)t0xZ=0~fwKB=Ps~9n%2c(_;9Z5{K{m6p5Vp)q~od z6~dKDkeOSLA1vmDOb4Y`QYrWl4x&lEXI14fMV}Ks*Pn2(B=L)_`gSq_0T~KB(=aaXqy@{KX;ijK6j|_|OM-Wp*e6B6|dt++imnNEpMQ=LV z4=Frm8CSXaj1e7Co^_Lb%W9dj?qFOg>caxzaOO=DSXub<2Nl ze0vU7i~odI<)A!?6X}6@<>$tMQxLn7v1_EZ6^#+wB+$aiyMVD=oXT_cwdXr>8kz7^ z2+;DI7kbU9(C>REQSxoI4MJeUK^4W$S=(U{qofru9c ze{4JvlgJ@x^dDkS^)x4?nJ}L&`?|gFXm~9D*1OC~4|K;M`u1+&pIkK;Sl?~hUvJHV z{35szU-|M>p)2cakLUbM!C40i09>l4{BV8XW4}3u@2>TV;d47sK!n2QZjxH#V@w|* zL?KS^5wO`S&AV)Sdz|RPXR7z;qze2mi#;xbqRGAL(hq@zvOWm~qmf=$8VBK#Fx?4Pn7QNiYkQY!R1o!J)%Np8ka`_s z?PS|Io06|EU|NVlH#UE9j$X|ogHc50e+Ih5%9sCy@mR&SVIZejj2vt8F0;`m`6Qh1(BH_IX5#cYGSb$q7b00RKE_BpWwRb>AER;zw-y|0 zb~1|6K4qOsytW{u`j7P_GitYFfEuvPN?`bD6}GBX4zWLn3IU1Zq@*<)btdw=W*lHR9usC2cMQM?d09{- z7k0uEuj++`sXzscVLvX|^b}&B$aY7v&snF4-Ii3!kRDU%KSm_|IGz3z5xhybf$5Qy zMyzk8s_z3lM22ugTA zKIDN#34P6I$Pc2D+asyu42QlXK@Ki%ksui3MyLXIG)A^&9pySOeZWB(nV7skw7rOo z&bPY$z)(!ox^C)ybxzfR-l+Bxr`n7Pf?ka)R;-T@iDG{R?3y>uI9P4GZf6C*xci)Xc=TD&x^Q<78$GA<1f`GY0wYh5b+I zQK$@Y8uYZi>q*!0shntM%Jhd9E%~yiIT@yp&No7L@MAsN!jBgl3o*i=;kJR5jM?v! zvDhQC7Q{wB)21DHD11>`WiKdn0M#l7h zGUr_d2_{(dNP_YnXzA_N?ggM?gr+n_S+g=pu;vVOu2UAq^2Zo$O!sOK*aSsGh!|Qj z8pYpf3pT-$EW8QBF0B;;G`{54;yn>z&j4!0!a5C)G+3?o{|YV`izjcPV@+Ky(&ubc zjyUXg8y#m!yCjs)P%^5PP$5Ixc>`V!e)->qKnV5wAHB-|C2JM2I?9#Ez7X*i15*y|U0vfpil7q(zjX z-x|vbb6~g<8zJ?+*_}aRQ5>b)n!pB{g$6>c#8Nw@CrSNq0eTfzYo!HuaW~+YX(*zp!FF%YRfJJZ*xttf=reG@Di2JP_h&H ze;0$3uS1!Xso`x#$EF!p+qJZ9jK%K2aVpkILX6#7W-Jk1hu%ZDTP$obtltOGZ@xV< zozgkwuCGK{Tk}s5(wOoKFgdzrTg+cFu5QA(s^UD4GV7Q*lJ|WkX2J_k!y;7mW0z`2 zFGV-vT^78b@_|@zI2KpP9{Fx-D=-y>7HTBk9ph-_%ZQg?R;hhL*4x%e;4P7|4>Ph% z?Ykd9XFDf?0vOO5+#CUS7RCUe{e=D%XfsgI=3~XgLrxZ03#7a{dfqiw{*pL!M9(BT zVFJ+a^{O)q6J7P=*nox^_NzF{G9*|hs${$)6y;pIC3+rKzX-RrY0f(S^oCam0#=da?Cr=A_wJRRxW9uo=P=p%OzwC)|{7#;pDoBe@S zelsIO*&PZnq}enx@tfN*=r|g}d$4?cVV!IFdeH`%!}?>TSGG8nV|p68^6H@t@XwIW zh{r!&$GOchX^e}ceDw()T&1XnyvRL8EX94>!{(47QVQ~dj4*Qr!b8))8xTV(%F`lZIIUXChhs~|paGO!UvG(Phf{xlZ8hvCno z;deOn7I8F!B3<_RBZ2%LiTby8BCJjIMo+Am3}( z54~Y2w?b0$d5WSh$(Xy@2+c#+M@_10CBu-Y2%C5|#aCbeMHhC3(A#%nZj*t>qkf?& zsGqTcWgyR31~6cEa8w2gz1I#&#k;_??wdo>dYU(;2F{_#^B-MnC&3_rNE$zt5Jcb9 zzG!tOm{|a0oyxEKHT2^Vs9k9eNmT-%+}iankignB)QmaI#CNBlF_G-IK9Ih*PG@J; zqKYV44mBW)#W2kR&OzNx4rNG^W-*ckZWW7eq!1GQr^Y15p~Hd8DBT0yXq1{vOu{Ra z*)sGs7=*DStAPM_>hO>!^g&p`s~dTMzazrdBakMhU)B2Br41s49E7wMM<)Tl_HnOS zn5w%ea0#0H9w+4RhAN;+F8SycG50_YtbrVaVFcUNy^`!xfrIrnWE0UCBYk0nHb5z1 zr!8FyELSpMCYBRiB)jXY4w!SGUDST)uGNcd1LA8P60Nnrs2Q2s0SkoqcDxxZi!sd1P4bM}yo{6B3E zSvHY^EoN?v+C!2TLmoKxkR}ZL-)IjxW|6bDbnGFA-T^6G_7ICIagjAXyFRs=NWjyz19E@^utd&p8|j^y=Ag(h-Vn?JCJbXh{~;(8%!5BU(d{~LQq zbMO{t_MqDy@-;f!S>L@E_Pi5}59?hkUyLVV6B*JHsw}$a;oj_K@pe zf<0tyeG{&odY#kI9&*nIe{2sq_Xdoh|51C$$tg#&hxEJh|Fiax(s3?($l&pR)gE%G z8MB9cvieWjLzZAf{=PlrQ(*MJ)E@HvLLeSz4_U^T-?4|Z8{5Dh@(Uu|_K?@#gLt2l z^Iv~vxi)IoXZ{(yyDN;L$=<8K^L`$JY3~k{hwVea~SO*<6aPZ$ar++e`*ie zxH4uBS<_0^=ohqXXb&lU19HV>4;jVqU$uvv%R(-D$f*pw>>;fYKC(Sz&5epEu!qd7 zbWx<;Qclz9B`<$Q%vrAr~^AwufXB&U481pW8z&AQ}G)_K;gKxBb>0 zGU7Fm=RdcHv?Ca?hqUIGV-IPDK%70~led6`%N{a+G#V4hetL=Yy>&c0>wm@`GMbqD z#vU^8RUq)+Vh>sT)bH3s7I8w3*+W)5<`^>GfgFsthx`MwiE3#>d&sM=084ETnLu!n z?2N}9FsDG<_^mypXMC*%(OP?`TI1{?9Td!C7pq<=BT=+Hq^U}pA1(hTl$8edkYu9Q zz#alq%9@|3so=m}4qy!I@6R2U94PW$TW@^}E>Q;iz}3k2B=UJ-$~Q}st&w`R015TlS<=Sp?SaJ6}RCG?#$;Xs~mh)pb7jZCb(f`QndJ zff0NLF|`$fNBA4r>V@ukJ$jk~go~ct%5ZiT(Ft#5iwC1Rg}_>-0fD25K$Xha`8w%~ z_U|Z;It%2nd4Dr%KlTj7-8~+`=k>Yp_nbVm z{trLd_I#9$_8*WxnaIyj$iJ-eEnq&LQ?GE{e=Fac!{IPzO;hx0_^|kY`4#i2$DG>T z+DSIjOqQA?k%eG^(0-0rGx39wWH?+sfhckcyir8HOvIL#$DBBTu2O7nnwh8V zL6JEBg3Bbn^G3wWfftXlU}~;4TEoEx8sMD9su7=K_1E#(gmU7|%dg^a9t8Zsfp-f0 z-ou1Dn5T=xx4fCC#`&*KrJTdvY3x5&<7hCB;RBPU$B|-TKir{UpEljv!TQuSZN};M zo%-kCv&H( zPq_|0Q~C^JAQ`SZiVzruTsYe%xyIqUl;2>R)HiXGJKP5cuY1G8$E!rb7oI~l^@Sg( zh@v#(LB^Q9M=209<}w9)YHBk8&QV5TlL_hA)G3ov-4c%-!NpQCI$t|S;c!XFdeF?? ze>#4|Kgu}(4e7jv5$w(@3A((o@`mBXjV7z;MRoLT|=(cI-YT$aL@(N*deYUregyEf9 zsR6<9x->@85lU~7)T?;LehV(}vT6=zskx*r<_(SoY$SvJtDjNh1q{PZi21+14lvk` zdQT;f)v!TuK7j-K9kJ1W4lBSMfZ!Pjwnos6?f2jf2&*UGJ~5#u=ITh^#feY>S|-H# zC%jr<>_8^&IVGE6FiI`nOgyQW&>IFk(ifTF=ho z&{0!#TaZTg(D}&flY15I_!Zt}*J3sjJ*FV{CR|MCAzpmJv&=^Im1TrhtFKI)vR7ZF zM(8c|m2QMyP+y~r5Ix(V^`q&f&}Puv*l<;&<)kif^Q>de6`514soEn zycgyWIgT%Mk%&ZL0}d>>!{#^}`=J_Vao(}t5GY^}@k*h+V|Qj{VK46D6sAkd#kGz& z*;Dfx)w$B=sc;+NHK4IaJD%Bz@v_B!1q0B@CkzSUi~~Q`d89Au$rK4~FGbV!IE7|H z#zlo-TtjCA&hP}d9l3aZTMK!@`R1uOIP@^+jCbI*9;x;mwciiF5-gW4aNpL&(gkiQ zN=4^i=moL*=jeQ@{&B3I$KOi{H|no&lQoKAVkhSe)=3ouq$sd{$B7rXNiy7+BRb@) zj=B~Zp7yOye!*AK;V7L$;lV9%7rynD^(5-QPnYBURb%Ei3XZ2p(8zcQwYU_Fs6H zy5A7ojbe^}oo&|I#&Q02FbPc?q7?>zc%S_k;2lBE+E3|obV}^n_eiiOM?&6@3vqm7 z1`}c>tWKk44}LDcgIb_!Yri3i->Ic5e&-xi2r}7x{seqMzR71;`MP2|x}Y79 zpigz+Pxd_gSg)v7{WbrEHvLmYQu-=5{RpR6;3)rv9|HmDVA97x-`J_Z(rFKesi%@t zn%#){CFg+fTAi^@#!eX$iSIPjWBDH^-T$0_>{rPvk3iIddF-H6>hkZgU#{UpSK_HU zIbVk}Yk3_1m}9+CCq4?Dk0O55S1iO|S-0FHYDZ!xdTlhb3&z0SyAii+>ML^4)0~FA zjsU+!DJYGZlM0Fo%eCA|Hq*DY|IwF;V%u z-fxaeqHmIx{%+ZkK~zwAc$WuE&3_HEkHJ;kr z0KN=Wo>0=v?2!}h(bb2mGKH8?%SziGHSvTP#iJc@!!c1{fsBjdiS-(w84G$!bhrnM zL?D@qOCECQETvvUkCUiaOJE42sS#-^PH}ZhTv-G?9TaWZ4If76vF1VqTnQo(cE>oR zACzM-j{-%qEE9+V?#dXr5&`G!)^hI^1a}bNVl8vwp;i(8Si$ZZkIrvO!Jw-khk+ig zQU1EXX&@OXKc3QgNGmpO8jz9ikQnEWTW(p`7O~@&Z!b2sEGsrX?U4_{CmYjKVr`7J z&qXRy653KbV1=__P<(Ll*_XS9HaG3S5OujDs(i9IADI}hEH3+w94*)_G4_9p$yE@Fph$kQ#DE0*Rbt30| ziZHq}6>0p^hdnmus5I7%%)&`t+uX`WqW1or?5p%VMRm;0fR|LDufVyghLfXfP> zEGsxbkHB%lr=JPo3&Hj&9}J8V-kZDH2t9%%*D#+2DA88ZK_SWP%dIhjr!qwp6bdQE z+=HV2@J}F(H58;oD`&oks2CE_0X+}V!o(kjFsQ3%l)UT}v zAAr$ylhR|T-_KJ{(#vUO$ zSw8wA@%qa!HY3?rKCNt+H#~?bM0*$Wg+J@E4+_Z=mQnnMg|<)DqsJgB)@~93Ge-w9 zeaVSjRbX1gg4fz|Kfr-9@YTijZ)^ekIj{qDc3=hBGyJt=29;JGNKLS=fIcYM;Z}i+ z$>pz!>{N#6nT`G!@wjEYPsYGioT#*$#Vk%T%A;a7_|gd8Nk*Yi4wd1H+Tg`N%$^`x z5cF8uAF~isyUNiQ4_fIAL)P)027EkN$qYa2q_49Q2!Y;>M4wz|eS06mwm?MwO}hPv zl(yJ(qElh5WhOXh(|YM2`M2oG<$|_fw?QWv!BY?urvS14e3w$TiZ7Dhv)#7yZy!Td zyjo6v>?M3)kI{CND!Lfzvd_NC3HMQ9zYf!2l}=QL099!p?tjOH>#YQa&vMeS@U6R- zZEXRIj;sJEo;YRS7`RDp^8L2Yj9@d4%kV$#UO=dY$yb*K^fa+evw(IN&s;LUX+4-3K;*PPhh z@GPOhyB@Y~XS#G|`woC;=8vHG<$VRfyy6-vxh*Ri<0sb(n?SWFQYn)d!TCaN2E*pY zaZn_}&zrm42(^}Mj*3Kkt=NhBr$_6QJ&|w|Vfhd@9DpduW8HTTNKHE#M$GFE!5%#T z$YQwM_dSM7<~KYhK=%%CD^kQOJcXRrz1FKA=|g{XB>}wuQ46j7KvZ*Mi!vp}L1{jr z0upp}_=S$$xDam;PA{lIA4|NF?LeYh8lZHMt7IQ(Bq!Oh?GOLU54*TSU$42a0=;V4 zov;XQb^x}DC3Kt+6*CkmS`OKdK%#k;T!rM?ZJs4p^LLZVXtzO9w2Wto+}Lr7jc}&{ zo@dE06txQw&C!`^<=w4DXR18|L(2h!eAh7FY0-Qs(R?o=pJ&N%Bu8`Gzk=O8O9r#Z zg&5?XCEUb`C2vJC<~$fr8)2i5ieZ83dMG8ZOIJ6tk48^Z!n|@9x_KY?4L%MxP6acC zmx=EXQ&?CVG9kkjVbC%EROWwK0=TI;4k52eH;%$Mo2;Qs<^UBt8m;gJk_BHft`&-& zCD#%29Ab%ql4@ll6Gc|4-9s9CLtJZ;k zy!F9Xs*F){HB0mb6g2)+!jyVzpir>Gy`CjEv&b5;1=Je#B+2hgFqKsL!lN~N#NwE((*XNQEPSiN9o24g6YhX_Pl8Uj;g3I)WdN4Y877Ws#45tPh@ z(ry*af?!hD{&6vUo8?8=F2k^ZUV}?IsZ|g<_{cByo5LWaao4oiGi^#nT8Adaj9ZXR zuK3tv@df`!%~?2?-=Y^R!y(K2{OQOWBM0y7X)KF5G7~ zLJqDEzPktM+S%FHJ^Jg-@cFlGO*<2c; z-k0cQ~Eu$KcnKfGi?M`+<%f_{mf!ZrH$W^yk^`IL_!swa4)1-b<9mjwJ! zl&C3xO_taDF&7|@4^F^*-TI^(k?s=0=?!uDkhYxD8}?X})y~{uVC^Yi*{E0U*ClWH z%*vT;h0KVw2NS7+u!;n3#{k#*ifUvL3mr#xF`S+pgGDQa4s-h=^J!p<&&Y$|*h8r{INQW{`^7p zC)Xr_zE#D5Rr@CUH@uaLlkAABgoE!Qmt;9#R*S8wMl$1_vGGZGrGQtv%UPGyTca3$ zDHbkbc&Q3kjQ{|fXD3wH>PBSlKs9E5i(*eWbPj0JrP}U}995&3w=G*^Chp)qGkOJA z@1e~h0jOeLN6PCxIkV(g*L(^#6s8Cy^WaF0wKQ2Va-dDs4Ft6g)l`k<7u!YDE5U5F zU%41oyzP%0-(Xzkxf+4{m%-azXG z7PT6|Es+r<4|?Hc6_PN}%WIYkfSMke6i{WQY0XMbl@lo-6I{z}tFPFMcwyclC`jgQ zpC7i z1QJ%wB4Ux0RS-3hGUr=h#pAHZWL3hB+T|?d*GYGBcvFxD)}V5DYOoe^#B)0s0v7MC zkTzIJzo>5!ro1y4JOJk!jcpk>n4=FTT|}-*tX$4W*o3f8Ps)jo{meah&n0@f`CaS-uxs zw^ZJO!3aqLIx=3ci%2)Cqh#{rOu`{zCbl2}a&dNos|I61|Fp87jx~bRnas#l=y4c6 zGRl5xQPP2T+ToHVNIMR?Gu3flLy-ddz_$}eiCEHBGmCjey0~NvZ}4vTk+!+nRE;?} zBI8tgoNV?&HkVCKYi5L=0>Wmfh;?I{=Rq&{8pbB`ZNM)`{`Ey}%dAhSg=Yg#c%`)i za)WIOagHeV99)^7UXoHiIkmYFqUPc$yX}m2Mu_FCg(_>H2b@Y|Kv-5$$#mpxcn=tM z0sM_x*KDKw*i#i|dm?!o8CQU~O7tM!9YfcOe5|uJV+W0+Dzu$k6-ilt7hsyI)T1nQ z0!r1c7W&kLobhA7f!q}oI^G~qcau`dT@J;{RX;1xA!M#92A;rq9N^pi6`!HHYgk z<4tViLv7OgS|}}M$6xWG*1x4wtnJ`C=cwcYRwM^ptaqT^2`(@L(~0*{uw5F#mmExP zB?xs`hkoCH)aLFEQtc5zOWj0pSg~ z%G)Qu{M8_^Z&Y8H$!_RU$sVweL&wRuk(|PZ(VQr!GAlcnBbeS}zm%`caRig+YPY_l z*Y=o+m7e!8atmx9j+3RE56l7%oLhE zP~FGP?)^<4^Wi)8aZP+5V-nv1VA98PRc*I)BRTt^j}Hj3=q_0LxV~W@uba$1UL|(q zAcdIp6yKrymysOGM}+nM9b9XubxL!fAbot$`UD~nU5_`!R3A5!W*l}fIhUBIKF(H1 z?Z1FX^#W3~lT+uuJG8$Z)wI0eEpEh}wT%7z6#!`7cnsx)uwc?P|1!>)L&~D(mrV?K zFdxx?57PF@hkrDEHkUV4E9U`1ZHIV$GV^xGA-d2+|5wgJ2A(HN`CRE16YxTm2tMoe z&tSLX>s%bS*7s9U=oAVR;U9Hkxw>Q)E2rH~dH%1cyqguif=uK-5YA&H_ey5FhQF!W zWten!B1bMzKU@AFLHAeqP&uB-@HB+U`jZ(De+S5U69f9tM+|=NWP2N=jo`&1UgjDi zF#!Tu^9CaUrAR+ z_F_S{PM2Jb9J*v*B*5^n^${?9BxTY;FnlDt6hGFvxA6g&cgZKAb1>o6&bPKhp8@;X zy%9vA=TXS=;{{Y?tKEbHX2}KSO{vP)9S?1aLoc95_w@&@{-~6eTX=TDUg0A4h@V4{ z>U<`9!uk#euY{Q}Xaa^Z4Rl6Tnr^WF14Qj^wTr?&B5i(|0@|E_fHaguKyCHbE<`KF z4ACbn>9UbI-#|c9;i+j36=X0LpeCX$aE#DO-Mx>p)D)CLgBLz5RPr1UDqV~ptEFnb zQ0ZGhsHl8`^zO$3z~wtuJP06acUw)6W zKwacXMA@AX0KsUx8eb*^lU=mxlB0`_%w={xYEVt)lVKPyYX0_xKZ&~ihXtg+ciLVr zDvp`n!2{zM8pfXI2bX#Y)?qJR%Ha$dlAVg%V5Y5MYK~-!JSx68z0>LwI8Dr`z+ZDd zHAOyc`UXOJmFy4i!8%s_V=Ftt-wCdq?y6={CYqr#6q1U9U_|e=14noxZPr6cy*bUM zT#bz%EE;gH1S>o0$=>pugi_c_6MLV>9GT2vW&7RQkY?6uIn)hOe5f5tGQBdnCA@(aSdaj>`CZUpmdrXNs~ zkwpCoTg!Y!6&}5P6%tPH|0tU;nbE!gJ30Yv3piewYHj+gmoo~DI!~}b<8ZVj`{oyl_8Bh1c zSkbs6B4Vc(_`*$*aMujd!CHO`-U9(4(1`GI3ZU8P91oxw$b%;aca|Rlzjs2FpidF( zvYh!rCfLwgWRPTDxDW*;b`*s7!_%@*%g1fWHXzDwI4bKIhWI+{Enm^d*J!WR1RJrw z+%HPD!6xo?DCGCTEo)|Y6L7MgDj`0x4gy|S#v604MnkO>Aj@9E$_AQ9 zv5=@XkL&7j!H(tpgAN6i!MFwCudyRb!Y6}%c$5Vim9KnNBg=CuAcbrEjq3clKa_k8 zvDuZ>0A+0Ys8;Y`75i}lmV*t46LJ|LKWHKnKPLY?OFjS)FzxCYVA}JeczKp=QSq-a zJ{?FyY>h60`Kicg)dPZQ^e8-HCQ_a3i<3u`R2|0v=@Z6e46`pq3DPGFO&1+%bp`ie z$Yp~2Y_5H&GNdEUUWtsH(OWa{90JzS{Fw^LIArrRviO*5&+0A5h6F+X^3(3 zJ!gF>hfTdSE6q6>lY?_#DgsNI+?RTbgI$f_;B$!VW%e%Q>(Zf7gKpMcqABHNkP?t%9Kfo_Du9LSE$t#vu5W@0m_5BRO;ds);47l-!fO?dk^E~DMDp57B#0x z&9au6ihXxD6t-%}NsyCSs6{SRMS$ee)?`t%FUNX7Bq7rw404bO(=@Ijal#81;i2N* zF!9K3r*wRm>TeiSK`z+hQ3^!DM~*M<=2bp2|K>6k?@tx7K&mf1b{qo37)Zy5`&JdN zP>sWcyy`ZL2&sBT8L&kxa>|XWg7B-H5OJ~UK{i9>nXB?R7ptCQiu+>KIyqbDzF0N? zES_1LgkxE*i&fs6$t!Bj^%9am)R&P@E>>9pfs0j@EGHMMuEkd%DG2&s1N!TWRmX!t zVwH%`$QIEyA7yM46*wRox^jJWNpu9L-X zU)?Jx#ZD@ZAxbg5tw54vcgH$2Ig--)4&KH(0Ilnv8=!UF{@x)xEQaS+lm($eVC)NA z6}^o`zt^y(Kn%pc{g}`Gy5>wOKF&R?c9UrqY`JiXSOUszuz(}wlGVV5&5}Yuj#ccm@^um2x?@qUf+97O^e{=GA-^D#XDgtIrLL z;I`0^OpI}Te`|wZy^p>d&4}IKYW~3ix84jkU-mbuF5qt7-@^NVAU)(o138ZK27ITb zLW^|-a}nfwF?pBX0ZT~J8@Os#_qQ?ugB-fWqr9N!KwEai1-|#u0tcS;$XJx(NYwYY#AB~BKC~&XC;0>Czd$B?f$)s*OButD zsxaCSo`%sHNg2Ld%tP1W$NJ`aX;u9FE!8OPk54x->dziM3=1f5&cSB&OT$kn2i|(}fOvkqR4fb$^T~(kx;q(7=d-DHkdpgCn$5pSxk1_lM zPyD;~O+HfliW{`=viSDJy(UCYTITKfJpb06Q&{Xh&P|{(hW6K|Vj$`FI4>sI&B^1` z+$+Zz=s)DQ?{Th?jM4Wvji7YEk>BK0=j!#loHgYS0w7957v76YFZj?`CQ?!+U_

    dd=g3Y0_#PFN5{gC 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
    y~df9_e(FhU{8 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

    BJX<=*7$pp$VY$4EagTInBLy73j2mvX?BZ+um0 z1wRbZGn76wmsTuNf4^LMrqUamZ?c0ntJb9;T$gUSb!ikyj`;I6>f+1)gaSdoqB~BL zIw|_3`8K^{_-1%p+Y5KJM`*`8|3-rt@53WY0JX=DG^h=C zEX8|5Q0T&^#@E&LX*M={AK4y9PNaT4CNW{fWN;{bmHw|tpIIPt!$J{?QZkHUB*Gt6 z;g4$lnD`S%pI(p&8RDA#L+=mKQzk#r{^*x~APX2zUWo8#{)z72;5nV_K%VS|6DSB|$Jjje zQ%Z;=+AAPN5#@MPo^lTJYQIuuu-}!%M{ta{3rtPbW+=nRq4D{%INjC~j*#q;>QJZp z8m}1YtivvPJ!cGggW1)@CiA>6XU!XN>(@4{k*{6u#F+{o;EGjgVW>aS`-UZxUxQK! zF2HzrOr#eDqPjE?^K^l-NE)Dtb{B8h-E3Sem@+5PRozu5h+u7mb4BSXsR)uCLV7FB z&ynkO($o&3&_Hj3>!N7fiXSSpkveNv<>FQ_lwlpD$5^NTK9tVm9sT!D)EbJv@V??N z#CxEt%?7T}nqoM-N$Xtn#N1|MX1%nnT!h8nY*m`4zQ<^?+lgIdJ8Gf!t7NTt8mr($ z%z-|b9*4kExXgG*nyW@sX#uDwm_!uSuGXY-sCJ>vu}fPftZ_Q5GtLRZA9?}j!popw zQ@xw7f~+lptT{Sr5jrE#Xc8d43ZbzaX!!9SU4aHFCZK_BIHX;>-CTMVPqx`hsL6fk z3wo<`vC@m^!qRKJ?n)oeK}&oaMNom#gGraokSSS29MXHiG6=igpd)ky_YLhrHOWU) zM6^S7{;3YtCXTLdRoewqjPox4Rww5dF>UIPpoa;^BM1@IzRtUBBL6D}Up7Og9#*je zYjVY3-~p)VLRRmQ?h1Q^La2_}_?PgX#ygBYo30Ds#r&#Cn=wW(pM=u&G;Q-;?iDNT z3>I2>dn(aC%MW!fDNt6*!AGyz(W5@jS@`(-mu1SSlmsmhahWO#gu5Zd7}YGC5LZmFZp=<14eRZYBOX>}r<7?xO2It=JiE_Uufg%K_9`))jWI|+vvx<3*rDzv!jzj>A4d~HFXjR|Fm zevWEo@}I=asPSa2c&4PeFW7L{a$y5a$U_M~5RC)wQ{}z+nl36Bn^DBCwB5M03HhBI z;>4rUCH_5(G0UgQ8DzluL^QTd!MJeBCT3wvgX$ zxMV`U0RoedD!W0;X4n!2+jO(t80|;kuBgo`SAfVD+c-<6TrN=}|CDz6Q&girjHu+qW{jMd>^>*CQ%|q z=$fM_tA#V$BI0Z^81+Wb$zv6YT7YOgSbg$Kfapaf4FGdukRtgdle7rgPA{4+d2>>9 zxN|LXx%~YYGQ;&Nj2gY6p5IL&-B?wdhtX}>Ysj#yy~BRPjf%*_Z^Yn_eXv|7Wq9r_^lg}h7S>n<5%UgVq&BJKvc8s za<|FK18d6DrvyQQ9<8TZrJESrV_izI?&u;Uv_Y!Vg_;wIq?$@my_rdVB}(%I5E!M78S{mSggE^VCH&Z)9Z# zSLhT(sJp0xWCkZE*rzw`(?C9r$MI-Hf(OqpDo9ryV8yDctjxfMdewVQ&xi&gu8y&Wiy|J zeAYkj7TBPcc{GQ9r#@_$FMvkS)bvLu;xQ^hW+LBw*ke(q}lAY z58UR*0-ddJdRI2ZIeL};7Tc&IbqV&v9n`S_hQly6{W13H-e^cnA}uL)H2l7*2Eoh%bY(A`@nSD;Kn5qd=#uES2Bd#{FYM4( z6P{!!r86p84+M|AgiakJJ5;0yLEloCzE1jBZq$R0zoCA_uYC^j8vSmuOBkN^o&G7mUO)I(yG4Lv&(J|`VmTq+_x-Ox3_k+ zU~-U50jj&Lg&Y+0!ZdN_1jPsV6aa%0>|%*IEXf)P9m6EUj8xCI%M{=2yZ8u(Qrbb| zi+AiWH2#jm)p%z&2i@O`1lIH2dt`1CqTqY z*RwMEmt7dvWEh7V_K^-ZHPKVx08NL$^w0?1gEUlHI(v?mUuk)I9JqU44fuBiKTaN2 znL00uT1T(f#9}r<nv^?|gh?c89 zat95LEoev<)C&jT+7Orp-rUnyG&gNBmHV6t^E~p`QvihWHQN?Ob!LqzaMB~hWdTcs*V!Vd$U-1sKpAdHxsE%?AZO4 zCN6p5p1g37`TIYO3qCWgHmIbg3S9$KZK+Stkz5DwSY_W8bt6JO!dHoO9{3C*8^x5B z7{VX)PPCKFh_;|L+JZ0YP8D9q%yt6dq_m=MQ@mk&0aC2g_Ry|M>4H!*=)JN$b-ej( z`PX3R`JeP+<|R$joE*tDT_oFa7zSDW|j`4_s%fj>4tMH1g)JL!6%q zp>X*ZX7j%#KPx}#{92v;B+Y5q-cnbuU-sj^e4I-31DC&RHh+Mt)F8M+X5aAg_~ai( zuAQGv+y$K8zs9+daeyG{S85ovNBm1Z_&Xzs2j}mFN*B7c0+4#ok^z}QG{4_k?GJoY ztL)P)*-tWgS9?n>zag7{t@5+_IPYvVez)=*e9c+pdT0&1v?{9vH6*fi&~a^ES$vy; zy+k$dV2a`Zi!@jM#d|cE4B~Z#v52isBQsQso+}ELj-8*>J}9~D2L6PS%bDSdH;29~5a2e@H6$K+F;NXJhz4_bET)RMyr6oN{ zI?-^qn3nW8wvy=FNRx4DOr&9J4wFO!pBbYw>A-4l&!wTTB6grsRsK&bWuVW4+c#U! zGaM*%vAL)EGCj~ZC`3j2ZWEp=5TYil3BW0+>0d=UklfR;F~wZI!6GaOszy3m1r$T{ z{UNgWf`UqFJV%{nVz*)*DlqlpcaJ@|UgmdkBIBT>M0X|J;;@+lah1oDDpGSWXY!KU zK z#r|$!zgpv5Oe<=NBN@sPi7&6PLgf~G*YH%<+qII`O!#)XlPZzgLa)~^AgIRVq{lb4 zv>_1eP*`F0fV2iZw=y*XS-Ndk&Lb=WcnG$#U~p>S**E3SbwP~uAe>C)$_6p-b z*}oN2eCUnRU#laX`kI`@dcl6CC^-Lhrzp613>0G#pCpfi-<#X|g^VT>+ZlseO7T*g-vo|2mG*yQIKF)P?A{YPKmB3`FvKVyMVET_E4_uIk7oa? z^p|`O1{YDlPGw9JZqALb{U47{IN)#Mm`sBWP4E%bL2~zp>-F1AtT*j}pKfEKcL}Ec zL^n;{0uvW|PcH#m!ySi=I@%D{p{aB=>PU;;-P`jyY3W!~LsmU{n@C@4d#)^fB$$B8 zFm-%)VND6cKu##GNa+Ogjx;ie8KYq*$Q2zb(rq2S>j7$TooszKvhxvGD|{P`(A3=k zp4+M0sz($!Sxk#JOta!Mvcx{5PLciHOp*18NOVQLK3i$K9@4?TjTb-zzP9=z*69dC zBp~&M_o>n!@&2oQM+pV1dyTwA8cz3gn6LeiLW%r@eNhU1mycpRiyza}PNl;S@$<<_ z-;~3b(MsRr(%#uhoJzv+Kkr1Px5nusNFT2BayCbh?x*zg*);rJ3*X&V(A$xZT0DTw z!2Eo}$$CN9LR6FItsA8Y>8qlANq*4UdtZ=E#X^5OhsWL$GW=8Z7O3%MZ?4jN=h9Cq zz3!XvyKXIYY&f)P6(5cxO&8ehIG*)2PE|?`*X*+POUS zhdgjP1+V>@t<=>G zCiKPT^){MPcd?@>y8$?g|E!iDV=?&M*1Dzi`V2B;ivCyDF3 z1W7WMEnXxf$>SR>$JFxX3^*iy+RV3tmzWpuc)YGvuhv2`e!IS%Ah%9?jnxsQoVd#$Qc59-KY|HU zO+hRC2iZ45?uTjtYESS$-Q1?cAQIAT=LNewn9U2VqqBL0{X*!WfKNh@Y)?%YE##E? z7`o+iapb-BHsVd&uA2ceA$CEQEJV3^bf*hM3Gbc@B%#W1{>rY?fnEXy*kk;aM#0?$ ziU1Mon4i(EKhHm%X1#UgxJAO-!gsql;_RmWY}yRJ~FGDGN1kTzx_C zN)sGo3*49}%SZ14#XT@I-BL z3B?*Bzojs683y3=q3E~VID5}3PaQhUe~UU218Nwq@oEWZPE=#93j9*A$~&Fbn=-wB zq)c?6iPTfZdqUwfyZ45hxPX7e@!;-#)E3-q&mUD<$zWsW5-FT%hs?skbqIHQnGB?9G|az| zcivE!IsdeU8~Uf6q#di*`E-A8WrZV|sRMRT{tcC8C)W@)Pfb(mb!O z7s)b`wYy7jX@(%CUIL-(cJSsxIS@N*xAJA=pQX>G@n_J^6`gyS;)-o%v0%p)*2I$u z1_D8uqL?lgR4o775(O3eg4c=@(^#fC(?=_)SUEw(xMkuQ0l^K>E?>*;Ac_ak__cnlRouL$Q00eQ*9`k%8on-2@e)Bx-X@Vl6wyi$X5mwPt6 z1p^Yn->TrR8}@<$g+aP|@V8g+w>bD)YJYQ27Y`y(SoVd;u{Bw%2j0lyxkxl0F0xtb z45;8L;;z-JKL5NUM(W6E8oRk7pV^Cf1gUv!!l)ac!v`&E!3g%!CqX(Ldw&mDUFg^M zmn+S$@5=g|w^{qHmqPj#rJOsx(}$X`!WpbX)US`@T7Ig5tIflNfY`b3VD|7QzsyD9 z`B0iHzNr6c=h6S`uK(!!k3szWvOO7(`S-c^q3%x8J+#K4r*jO-Wcl~)&y2lGJBVm* z^!>*^Ag(CsRV*tegUgMG*CQH6f7Kt9!A2G1L>v?#N*jEBMw zYWpo3@Sa#HcCz6^hqFbFqke%Ys<4$Cw&a8S0(EeN9?g`NSZDG!OE^Pb8`~op& zUe7Pk#ch8?U0Iw}TUNU!-rhu1ZBy5a-bD(11`lGdT35k0`~nZA33K-QtF^`I2vuz3 z{ReT|zk#c0YWo5Zabk3y_V!^kZu`G~|L}np{(luI?hK&+oO=R<9@#xW=uGUr$?aR! z9pcT0)mLz8&?&j$Owf)&Bp-2zblC2cW`YP^`43PWOnULJCWV5mE5)#r6!gAp(((mO z$i1iO15gviF)eBGOF3+O?*=j?8Qe!5=Wr^j}$=sThy-q1$Mgy$hI z`d80Yc`161bjf!pJfsF$AnULAHnDxL?qp_+V5I`1jz(75rz_Q8TlwQc&@?MDTfXc$T{;*Y_Z4^Yo|w-*Z+2}}(s5+p#0pa?K;ceO5Rt8z@2Fducl+)`S9q3yC(rhzzpU*+ym#Ivy z?>8v_>{4KWT-8VKCgZ*R$sp=aIU%~ZfV^&g$Zrs62FM^y-J&(^v>!uAw_owEtsvfs zf_U;z%nT~EgbeHGXoE4FR30Yu`0WH8J@7|xrgz$gZ73pV2Y1&HvkJ!C&J$Nj#~v-R zK1OHzh`T;c3Hy*IrIEy-k9$wuppWqsQ6DZS#AQ~&`q;w&5$m_BoCpTy#T(uN+NNOE zIu{F$r9wUZFoy1ZdN#NeM1iU2_T_m-1E>}!p3~CtuRf7xom$Uf=qHWQ(CZ3ioC5zs z)lr@r0GC#XA~_oCJmEb`gWCEXDpQ{Mx=SO%-PJ`4wb!XwsjFLO({!5FNg>7?UIv+h zMY+v>%7X7wenF#oC`h6o>b$yqwbbQI&OJG9gZ*H7Y$2;u$*e2;u8KE&L_LJ1%43kB z@cVNPOKk}@OEYD1!fDleG3PGX+B_#(z`ya{<-U2|Eud(c+0lg~H7Zolj ztx?rVA=oAS5_WE6hrM`#mMgon>R~*ZqU|ij6EQrxj33dR_2Ba8&Z-41-OgGn0NKv! z4)|K^EauY6KTtXq^ljmG(gy3Mwj;Zrr2esvC9i61>0yO|DZ@F@o%QZHff$A$8E;5Y zgFB~q!ySTxXh0B9t`#FSg}zxV{F%m`p~5gBp^bFhg7rqq7jzY-u5Zvt7@aQW>I#~x z3hkhI6Y~{~^gpvgfNzagd{?-Y1j8P*R#5j?WcKLZ{b z+zY7Q>eB;eW9_W*K2>_Om1#BeA%N)bNTG=#!nz%p97j>Z-nzHc=cV+~^hypxWnnf<{T}P)Cp}HI(h^gGaV3-<7@5D) zqrx=vS2`1>o4o?1&vo!npLt660v*73b|O*@J7?U00lhyQI`!~$?I#7j7dzB%f%TGH z^SmqBP?Dk~5XF;gY%)Cc+!y|Ja`+cftdvg4VPzY7bXe)l zTMsMw(#ro01&{27MLd&Fo0z)FoB3Bj=`Q^mgswPK#D3}m8)+B?DjW9}#E&~o2p}?F zTTY2pJ9dP%Tsxni*YcCIX#c#`a1g3g^ecH>Sq;B3Fd@U)!vr1|tf@hoCNZJZnV^-! zqAk__ehkCm-^_ccXK`~}8YM=&;R@5~)@yt-AJ+HdG#Arj&b(XcL$hg}yOS}xnR$~w z^t77&HI!A}qEngd%k*q`xXPQQ^mrg)X@uzhAjm^xO1qKgp9=^k{9%PH_(eG1cnBLHc`C*X`i_)>CJx#=}ff_&Mh4jvMCpG(I5y z%#VJZY2;Y^3ur>emSFKeRqx>u$lr&xLU@y2(wO(qviRNuuvxxoe*gG@)qXD;@ix~$ zUejtlqSZQ#Tceo|>Q^bhY`+ZVhrhdSlhUz=wiEUgwSCgi#%rg=_!P1y+9-G#th}dB z4xp30p)X}z>>4B~mFVT&#TH#3e({EXLe)bU_FnAI$l|%SehrQK&6Mzt)30ry;L0vn zLeDZ*q<;3V=5s{A3Ezv##10=Fd4B?La}GVfl?^ISy{%Zy-X?fqJh<{Kz>!vAqpSFDBuNX8c&Tu7K7I{78nOl=iTaNee zLmmaC;ywvkFIOe{m2}xwWPC2a<`x)1&wHJQm&H%bm11!_Z@35@jG)5{ zt(mJYG7J5TKf`p3Cecjx)q@ArQnC#Ap}V`Kj}(skT`yH1rzgx^KWB{a;3*&Q*J&K< zdr0HB6=m!hgE`gbNaMKvGX{FQV8MWq0zYpUOq@O1X&ft3XP|Lh?w!p(m&VcQ;6&ZZ z8NB|!c@h|$s!Kp|_QvkrSb2K4F~wrUV=>Gvs^Y+CK1u140hP)7FxT*Qp_e z-mkO~nxB*j_Lu#&k`6SFhZF|+-Gje& zP~m%^c|4?4`4MH~|M?RIOHO3uPW9+QAIeD~cTKCvETT$@jpS8D@(NULV=j4F{)2`p zP^Y|7!7VcJzdExsO+Uy|=QiW}95(UN6{W3euPM(AU=#n^MhxoG zd8J5MwQ6GGOKr66?Uhf;ISrM~NbWhMGFwUbouT>O>(!86DWAM~`lZJyz327IV@}#5 z|4`yni3P-!A^tZ7qOoN#Jw&z$NnyfY1~2n2R-IYY@kZ#Ee2%>{!aQxsVjP76m3`9Q z_Dc86Y%Q3vSpf3is?mkoVr5DOZ3>*<;}K&+)!M%TZao$$DU64!^z_vK!`zvGM^$8f zACPENu!9;WDr!_v7(`(-O2lZIwWEo~9TgSV!EwVeD2iytbSpjA2+p|RIF7rbIPM|{ zME1o6#1%!woqLIjE32CC_dj)ScPHRB-#hR3@jRq&)va60sk7CoQ>WIyCIo3dtJ`k` zdDn+CtyzsF?Szc5g;i!o#LT+Xf0~TI7l;m9k}qxy$o&xB)z$3>>oC3>*5Y86$LezE7$#(hDSBq>SM4-9;DEIPU_reM2r zgK0(GY%NJ@D#g~X&(m~-hE_UY?L7g~WZI$V@TanUc?06keOEIf_(4k>)urvijDk^F z&yu6E{!FwFDA2f#0;*y7R6w;GUrtGqkF9fgSUJAYxZ!R;Hh?*)>Oao861} zYX5FwUzK6l8CXM(5Zfl=2-uD5^UB*|WIf$KZH;ziLrby|{Ar+{mT5h$7kTeX#D|vF zc6gmEaG`G1eNIPl#XU-Th_g}qm;cwGF zMs7~${_pgUnCTy1BQROTMEZxkC4PhcA>-19`iD;BJGlHN{o@wVRk(k-asA^($w1q` zY^Hx4NA_>hKW;CG^pC#wG(FTm&LUN_yT8YYS^Z-LbSFwFn9>Mnf~)CcM*r9p49Vyp zT~$-6Cxy^Iw%tqm#|8DF{!t!F$=_Z2hy3T9{?TezcjYELE1lPuqD~DdKn>wIJEVIS zt_1zL;k`kAWH zBT_Yv8Y)$z$p0I4M5@LBfw?~Kx$Yc&{QqCo7C&9Ot7%j-Ig< zcsXT-2)4x-x7&!Gv4(0@E_aMtj3C*rM|rUe$8K*TddZRrre|pHhDB-)a{|xNr`~Eu zmz=&afIgvb+%Pyt-`L|6>*u-F&t9f){1LQ7-#AJY{1X#r`SP zu-=Y*;~%4^A0>Ma)zkYDaOfLlN-ULx`c?YIH_|sY*Edtd&zp|m=`B5drzhn}-D z(q!6cp>LcGh3CFQ-%z~y|6JcFL`G|HI#O*rDlPR5wxs7v-{_e`4!Mt!ex>_0Z~rCz zW6Ty2r!f7a)t^lN_+VvA{o_b5SNg~H)~mcB67iw_@gg?^qJO;JFVa6YIgT0q5)uma zk29)BH!@fL33_@-Pb*()sekBd_7?g_?YH~X(1W@3<= zdDzKHm~ny#mSxG4&7T~Pty*I(;csTI(e_o@aF_2{v_AFcF`aOl>>(iH#0Z`3@Z2V` z!cRTu^5g?8cop8r6FMB@yQGM1b`E~lVaezOnNzvsv70*L7sF?!?v z1Gf}-v9nkK%qP> zBH2SHvKXG7Zss`s{W;r3@#jEeRHg+rTgmZXp~DyXv-yrG%^aH0dGMTr68DjmCsWK0 z$jFzA`;VGC<{>yBke82RXD0*4^RNI%q52=9K?cQ3+LDH?PwM~L!psk4hW!v^ak7mf0x=TEh zHw$?aXu$@NCTWJ*@w)f?opdp13R9hSYjwF;J#*}EW0oPL9X$gRevpa|CUE@hOT&ib zj_P!MU%WrSh*k5-6WD2m8Q=rHcJuh(l$h~;+eGWR{>yN1jacYGJa?m8H8ztJF!$MS}$b3-Zhj7sr5!ry6}+>-2!6g#DNXsp_h*+aDf z&#e%}(f0ptb~;j_PHW$%MtzSgWS}SLg|j>@Gz8!Uc3_K=Xa%$vPpg-;m0m;WT>Cb` zO|zg1)ftuya!3T0=)N&q5P|gx9RsYu4qs9FBKx;e^+D7@Qzidry2FC&;SX;8B+i2! zS6xa`vchWbUD8L*dfjKS-ixJPrz;gyECeQYk2*%o#nnp^vBV7O!+vlQydn;Rg5j*u z3nG&-ugX4Rr;Ah;eG`sG=ytI) z2dpDOi+JrQF{mr8Tm9+PE0?vyL4jLQDHcn-p>B>|qt!tv2Jg9v*x_F(nC12FsugX8 z1@2w!y7zf-ON{jA&UI>|H0be z%G04*G7;m>u?O%19A;%=8pq=9vU5w8Y1_J0>2u;$Y%>$vuGpolbvR|k&fdv z5lbFsL%y8(zji!>eUSf{RL-~Dqrh@qL9vVGA~x~R;`IFV^L6ictoyL|ptjt>OdSW| z5YmcHCxJmP09oPnG3%iCO?u`ec%GG&04axx8LLBaJyu=|#T=mD?xrS=i{1YoRYGp-ZE}~^kR`OD{*1K>l0Eyi= zgQxxNX?p(r;XOkPnpuOVFGm#Yd$w=OPk2%_TdJDmUX-m&FVqIu4Ku^H;A$*+H?P$V zCMcq3`&4omJe{s{zK9L_rG>+fL%$0sY-tpZx}*5Hn$R#HO1PSKxWE?=`!hX=@)}iw|SkUpo%UN5_EBsa(Ewy z`(60VCWrDhFWBd)HhgBAlA68F6m+xK$d)2_K|Ou}nZem1o_O6ai)kK^+reIRHnab* z-1p;@JI3LI5O;~v(<1yb#c7a(dIN9N%pg%vesDcAms8K3`fj}Y4nomf=ldR+W&;h5 zrPZ-QlMyP{*|jHp9jf#RE?t%W)?jCVj5nMLNP;38l7kO=O2Wd0Ms!g(vK+E|S8P_G zLz(pFAFL*&V~X$|w%vJ7z8%j4?XULNl+#}5Pm_FQ_?hB$v59<7e}i2NHmc08r5;t0 z+6z!urB|Cq%Dh_NOf9WUua7qjRv&A^^B5KNM}a_n5_KO)vzZx8G7y!6Sk3Yq$3*z; z9an5_Im9REE-fM>LbTs!BIGSeBJVgvi0&2N&m;&3OA3O2(^Y~+`CT-gi>x8$-Oj@o zXfQ?oR=m+vv0I0X4(4U&ONiHiViz&T(Y*JU9pccfC^k{W-A?|O8x9+-D;)MHHqFER z{cm#T?PS4Zh<4Q7-3*10tAR3)X@*W95vU^sq@v!4Ug8a>@mc?#?sB%X-F}g&mviB& zT7uy3$&w}Ba02CQgguuMtr}(4T>xXCpEE zRsF78vsrA+Y^N6#BUd)>)@vzXtU9aX8LSotBVIVx&5hnLeu@osBAmK;k{@rKiZmAnFQ z2jSzOgwGrtq;~-@-N0MnMS9ndOg6HnPqAY$^7@GI4Ss7{f&WcNd-(>PSB$xTX}w)Y zZ-x3`8eK-yiZ@6zvgWN*0@$q~UW#vxrz%$q1m0qj|D;KtXJ>$Gd8Ctl5_Us*$d8(j z+fh;Kl@S0x?=PzhXcRjJcAWE9aP|Y-C>F;B(!Dg<++phPg|4A~=8FNNW2p$qE(WI@ zxK*X!bSuZxL~LgH`x424K+6$-M}Ri=wQ4L57EyryZIpKagLuOk8r&F4W%U8cvvCn0 zzZiY01w78xC(m%SG?FJKv?c;U(>dfp?-ozOCD!GEZv=wiUXP)|y0Xw=hnt%aOLRM- z%~`zROttVbGZFebasStW@N2dv$bqUjxbF{8dxowIbdXw3?g_uLL#82p@q$SxyJAl% zp~yDmk+mi6Ow2YkF;BclpSq_u5D9A*pS)P*Uhc;U-fBv2PORhufzG?B|H zkcJ3@+)D@GQ&SXyuja{W=-B19tKA+>0tq|RbX1vO9iy2YiRXv$T6zH1d0D91?*!d zHf54#vVV#g&t!tL#E5rS(9UZ7$q&wI_JM%56b|)Mm<^>kx(S}9l<8GQPlHkW_Etx= z`qktWtIJ(*W|A!(HLHUSGs+K+Ap7fBLEeYwZPn`Qcx(_7(_aWCX4vFaaD|^4=Ghzc zx-o?LGh7{b@-Hd?xz__v$WQ>4@`Nyo$^& za>`XOjp_RHl3W$vgmDfmj&0Ze>)kOpY?t?q{S>~VpRPA{s-;)4t}e=-!hhUJdVD#- z@n9>gaJ9VMisrPuJ(k~wrlx{clk{h@{=_C8TfAy!`S8NJ4?Cv6tX^W5YX>tV=R>1Zj7NQ69>$YM_?1t|H~ARc>7>i*ig&k8 zT_Oe}pxaptJDI^$9Da&G+T`E=NM=VTsZHq$g09185+dq~^kzgB;d6098G+#-Rp~|@ zAm|Zvk1ktM2Rq(oGumpeToNWrSb z65x5_PVt6|n7rV5yC%#y=)0!BE7y!EsYiJg5?HbS%6_5^$(?azH)!G~2^BybYMBW` zM|QHBXJB*znfUleuK&dhEbLA-GCS{tFQrGJP&?si_k!n@h0IUi!+#l@3A*4lq?deR zkD>KoM`Jv;;!XH{tUq8v@V4pgW)e&I-7?ve$hHL`6YX!C$-Y^ojXYba&P}P)4Mrn! zgVA181V)=DU}>|Atuo$lKIMW^*lY{YY57<9s*b84ny9+_sm>5ua1neWiA}XNXN47h z4!3Dh;V?DSjS5{~42)5C;tdz*?R>+>oF$^7%{H9JE3@8}Ft{LCE;uX~!nkF$;NHt` zvu`+`Cg=q1UcoT5;GFFQ*Wa^oY=(W&23~Y^1qPj<$Cr3%rC^Lgk$8y@YJUmeUQAw94fPIb^11zFFNM?Z%Z zr#ise*elx&NrdZbapaFOv%k`3;h#ci7CdRbZjbx^ zchnT^Rp^>YoKyZVN0k2my&vogJ?ObJu>T5l`=NGiYB)3|?gWBw|-1HtdNSZ)X#_luoRdx%pzJ3n=W zn6vK2-CEVvm+ZSoj=#z&LWCA0)=59*<&L;dn8yZACP1>?Y*=5obYHBea{9)4dH|um z{okj}TSYtBwuhWosxCPHl5RSj(4|}<)*r-3OdBKMMu#jw!fT@cnrgYDOgacs+m*9K;`1geQ0!u9Qjq=wh z-wX2vnpkS3^1oI7#pDMo^mLA%bhDva;F0^ z?k>mC%iso*{$~$w+}$N~#m&0A%;FQNnC6b-ZOpy)T887?Yxm1tAAgWA+x*Y^*FFun zTKd->1rk<94WZZP`qy3p)5v{?zsu873QF;>Jx6sRD7y%}zt+FD^B>&kE)K+5Z$>4|(colMeeE-DB8Jr7MQOT0#qmP$Mpe6)Cs&6BHdld~Gu=ye>-6Qx znC|Rr_woSua!B}cNcfUl&-s!l*RwJHoOJRm?tkejc@ZYh9_xFg8)s(d$seh-E<17b z<)2GBI7@n1cs^ht&d=@h$PiBT2zJw}EWYMEhUIH@_mP1`SH~nuM++>&mp2w}@cvDs zV!Nw|iwkQ$wmrm|%H*QWSAt1Ajm?Gk(A6QlR~zJ7z2x2FxDJ|TSX zO&g~tdw;t<=7M*Gfp^-S*&_CsTcp1$GCo_x9$gVP4_jvepMmd|U7F9w`aOaFQ(5>o zk`AuSz~5i0^kJDaW+KgpE|buF6bEgZ&j;QM8Tc<(p`U^OJiYf?!2bzl8vMue)C~TK zRX>OCmwzPqkLo3`q)+bUAiHsV4~YSy$OUMK?=4Zf8NLq<@qOq|;`@X>n#1=t(z*EV zDV>AwBT4@>z8AN|_gwgH2Izkdz6Sr6@ReY7@SQLC#<`#4>#Fo3UD2^Hb3X9_IT3)ZQj? z^HzS%gn8}PJj9R1$T&r=EZ$Dbl%aEdx+d7dX?uNPXeEmdmT_oVZitLy_yTqoT8bL< zz3l**zm=C)?^?Jf)52ia!ue4P53|jl)51=>Y|z3{l#nltb69ZxBl0S`8Y8`#pE;|t zs+*HvpgdZ8EO~)y_41mQNlx^~mUN#o?8GSmsSN{TtddwO0(uMz>zbA!&jA=xSUF{S zM|9O32dn$?Lz_vmQI*>iEf%&&(@H*Ld1l=DCy(X|`4P?~?x1sWz6xT{ zEigL-+E>m+wiYjjNX&+W<=rtu&mJnt5+58tIev=yw$%bsEO*uAwd;yv*Y3#DPn&js zr_#x7TG!%TbkE{gT|X9CVCR19f)z+)>R5RK2bSwi75DP`eQBuLeSCzfhZ!Pu-&Ps& zLYif$*I)4NFI?UIAYoFoa4thBB3#7<4czWyAK0LekoS+5_x?(2WAX!08`ruv?o@`_ zSk$78eRkTQjelAjU@I3eV1LiHu^x1dd!zQ#H2V8@&cRolrmm+P!Kw@VcROWXfECHl=|dPMeAeKx0FE4*VtdTckM7~bNl>ahN3TW?4fWmh4v>ZDMvp*|BSoi{=#7MzxtS`aCsbOMx1Mu{5BmW{9pyUKocKXK{1+A z-Wo~#XhdWfa~2R3s#bWH0J-J<(|`QZZQ*^7!W*Bu2>1qz`7;&=fKLALr@ObwfAJY$ zJL0>oTj>VUc}-(`NEr&9BENKK_#n{$D~KCzH*$JJ|I@)+FYiE2qad5^i|`cLj^o=3 zu4Pfdpe;)p>|wPSrc!%~c$^zEw9q?m;L?ItHD@JycVDH4!CZw>M1>cT&?1M$E9>Z+ zda{O{`kL^@^x`dw2V{6w9i6y_`v3A{AvE)L!Q@ifWSW*!$ zYS%p-yXHF(uXf#XEaH~)Oe{HsS*cw&F_tVrSkJ9i zY~aj;-`6sTx^N<5JX_xS#dc1?0O3v3SoPI7j{Bpf@Hs(i)v#yYNsukr)(}|U}m<}J%14>NC9Ycc`mHW5zffx-}(<&fVdfuT# zNa*38O%IU}Hv06e%&j#mO@=Ba*30%JSWLDjk?-9icS)jMGzy92RDMjw2!B8#@Mj4_3kDf6CN)gJUN(a*Xg|3FmJ28OQhVq4 zGsLG((H>u2x9Wg4zAyH8G`%)3eBvih%@ew<8@FF(FYb};_@Z!6XIik;po{o z0r}@e`7gSB#wqx?c8+M)&YhGn{?beJKO2_!%6dvJ))!uW2lQ26GLj$v{_Smcf|JE7 zjF0+9@6I~Ksnw|m<(LJ6xXHrqOeH-9o1+-U2{#LcNW*a9*u_C>~RZSGs zfAVd7>fut!$Kd0T4s&UhpP9b-q4ZZ8TZSqrCqN zUo79<5pVha-{F)noM0@U0dEUysf#mQD6ti>ZT1 z$&6eoTPwc>?EbEQ+o*pR=-L$#3H=*NLlO2apl3lD2rYb$Pqm~DCt}}PkFJ4w9t?K< zVm|MpUjNLny{E$V>^p7!1*>3<%{b4{i1QQxz4+8+D)fo5ROT-}^#!G8MEuk#n08#& z2>33H^&?4c^CbNC>5-Qpj7)j-Ul8?>LOfeN8SAPqVFHb z{XV$VUN7=*&{vP}m4=#BB4!ReP5z}y90`f4@;@nYpe3BBI)My><&I?P+eDPn$}$*2 zTSf#hC2IZO^EL~Rhv44vsez!pP+Z+B+qxKZe4Xn*!bN22CZHb{xl*&~m93POq`q*? zIHT0H{P<^XV;?lW#Os&c>jm!h^LpLiy%s}G{VQ8vwQKSYKJZU>O*SqS&}w!OOMfe& z7|O4RO09=Z7S_^P7zu73$iu9ga|6X54-&@&roY1HdxeAq5kzUH4?{+EvU>?Yc{Ade*MHDwe8d zdYa*`AK~sLI0(k4E*De}gGk{&Rt~}D9d%};L5z+{C#>`*D!mh>4JBj>4z z33Rb;GmCZ@-;15y-y}W;&qY2ja(jtHfTHx_x>!vUYQyVCJ2-(Kkhkl7KhidMHbD&le$_;xt<(T!1+VRw30nYjCdIijZly&!Ul+5Qt}7oV zTiZ9E2*}~e8e4_+(e4#x-A(8T!_12GP~51>Syo%Xvq=VE14`1yNv_2gu1we3D=)8O ze}$zk2f1-dutRyrwu)WfhxQeV*y|6A`ub3>BOQbpI;`I$!G(6F*C|Fp;Sz zJZ@XMIR(9Jknnmws`m*H^VV#PEJ*A7j!BjSjuefYfTsA5|} z&@8>>ydWJ^Df+%xIM9n5)xi3u!gXh`0%U&FK_L;R<5pwEt+1=W&WbwX>Po+@;r9|e z%DJAA;}eNtp(D$u{$xCq{2Pr=VRPsUa+$LemIK6WMcv%iRi(o@`l_h6Rq5|xRl#04 z`W~3vg}b8wj(`U)Gv5w%BU}~^GYjVV1S0obC7>8qMmTxuM;pP(R|Ib_Z^~I4!AYwr3-_zU*m! zD$^hOC4VF!e)_|P&f>iFW&dK^!QYiUjLRZ_#Qd=~;$e^m=VJS}su`|>F4JfxS3sOS zHkU9aiCt$e37o9tUuKKX_G@-ChSt+Y68?`{y0KOVLv3kW4r{~yL#{2hhI>lBMY8cP zq24M+F`ta!6GS_5PY%MG#=Q*8+WYQ(B-5BO`Z;C>rj0hOgQZq^E&U1Gy(ZIc66MJC zXSqL2_4an_rv%H-AxaqZ8Jp#|xo;F@$1&A{i_~c(_SUu_Ld}hM!&*!SL0?LKyzu05!#4J1tGds9i&u z+apnD;KSmNLqRSKm&8&XnNiUyou>^D-WZHnN)H5jxPHS!*sCiN-FQx8@tzf=(|tyS zN}-yoGN2(yI1WZLDiC}J#VS6;SA}RF&Ks+&^JEBbJdwOZn|+xCrW6Obuq{15w#6); zw{pa%WEUkf>qa&M!rQX*ogAb2n<>EL$WDQ-ds5b9F+?M>!_XaCd{lF+xEU%BK|B=u zr)6}9)Yi&``VP$(gCSw?5Iy!Hr|~w&Z>0HlQTk?=R;-F5rSHn7^Hsyij;@-HLYO&b zCvlltYzvPc&^e@1^Op*O#T9VSe&Y-+(c4|ECJT9OF|p8{ybzuQ?_JS%aCobj2pHN#@YU) zma?s;DSCY@wTi!XlC8!mJo*0AO&wXAepwvI=n&3}qci_D3K)cg1d9vtE5WD0ugm10 z0=LM(M;letC6Mo<5!RR7qI)a7yje4)@AvXOgDZt>-&o2*ec>+Kw4>Epb=0mJIbtHG zvZpb@P5z5SoHkz365Y1bsdl;99thP3NASnd7x?1mfiLfe_~Mmp|C+(gX&}bSmOt%) z2jZgu2!gvYdq%myP%gb_1B5PxhykRj=5Rr%IC#jW134+!_egBgr$9VyRxZC>nLDHY zVEW={GbNixuzNJ0>3J|n$6E6_X5#cob>&h-PuPXoQJ1VMbgAbmtP1MLw1aJ;$`R<; zzlL{gKB>#wYEm`F^pcIqS2)#)=BltUU^fdae@<9}mr!{^R9?bF+}xpEtKc%an3+%G z|Duz>+ZP~QFq=ho&imE=2)(K=JV75H6par)gDRw<{1D+KA$`If^Gl?Pq(76i$)6@? z)8H~AXYgF-f2l863Qn7RUhVs!S`=mEI@8{eCOWWw6~NU3+9V+m*OhYp)2CJ!+Go1Fj*#F_;z1-!fw2W*8_aleynBk@;f z+=!}867|vtwv1i>G}RGYK%tSeV)M9_2CsK%u;)r!^zu$=(3WV)wXMx7(0>j<*^F{? zSuCk|0|rWyJs%s2DqRrVogJrE+ZhR&6_3Gl5#GR0*IW!eXiiLn{R1a84E})Fc#1I& zxEsv`iHPo5nb?#vU$7LLE)4anruC*%!J8&+49*du__JDvG!k4)9T|Miey^`>zHjC0 z%zJgd3k#Tns@AK6wuW0)FZ?;aXlt;Yo=aUyJ|5DvNV*l}vIqzr8v?>*3;_*LAzh1V z^I_ZcjspdS#ZKQ`N%iFUGg|=wvoX{c z{;Rz(l>I;JOQ8LejGQ!Of-f*0+rq9#&MJ7p?-$GZq>&{oaq+$*tsj8mpK0&J@GI zyrwNl_43P@#gM1m2Nj8-bP=A2Ju*(ANXa&%2?FjmyfW0~=YKCCMJA(qmu7|q52Fmr~nH$#LZOb%{T-3|7G zn=)PX1W1#_VfK6ZW0_v{a=zx{NzI(r3&MwBDRxDh$C{(UW)Zug1`Ga5dvP4W_=#>w zKojztegNF!2!G#z+a<4GR_RTvrJ+ji{9zn5!j$#2+D*6Zl<-pW z4X*TV8mAv5Uav~;_B-wQ3K5Acl}r>Tl2ZDF9~HE&eQV3aWG7W1_K&XE%g$`2c^Zm6 ztQy5|5VniVxswy~?bFD3(#?_tt_xQ@>lv$VIN+{oEWTBAh9_c8RiTKIRE)E1T@wWu zJj^k~$cO0`OJ?hm>LsZ6qI3389z7)VpqmT09B+FJ$0gr>)#UAm@8b%T{KIvDY*LjHw7=6|xi>Ws% zVOOW<$O4AXiuBE{U|9w6jkpCbdzYTH02Q65Yc-tb+fBxIbuAy>d3REsIe;yqQC(Gp z){L*^GXJ@exmSJ3pVD3Rh1r&JBa8im2kSI2Kyw%hmA48`lQ`Zxk}rldm#SU|yGn#? z3s`k!)(GQw;6!YHrG6}Rk!I2BU#>3z7wA>86<@`kskJM-<_)M(J7>q!1BSJz$y9Gu zVR%9n+HAJ-a=LVF{AdGY-djhaZHcTHWm7eFayMmd7+xrfbdd<(5ojII#=QY%_jhNi ztXqgEjG&WLU)U>wn5Bksm<3qzY?I zTe0o>cX6||9BHFZ=_-D~d@aLF@@5{w*+N7u^E+Iw+1k5xTwc4M*<|T1;zW=zGw+G3_$F6Ug~j8(pAPEjk;dEWg5fr)%SA_bGDB zo;1?HDI|ZKmQ-P2uJvAjn9cBn8?;yU&#f>IKdZj*uXbK}jUIK_{$*k8Tr~&Q&UA2C z_M_miHv~7Q<`iv;Ctsqt!GKLK!Jz$R*~_(R4s#c4ZEj@%z}OR-0RUyWRq&*#O65%V zYJb>j#L*#e*>K%5gtQ&KlAJ^aRVzKg$xYcg%2oa%Q+)Zp$?u`G7Kr}D@0RN_@TqM@ z-m`Od)W%leODx_g2Ca^lYeCLV7+B7(GmLXyc>%8hST*dIX2oI&zMs(UFbg2|g8iZc zbP$Lq?GG2JCPTNwHG8mR;43bUTuxLHor-xpfFqwRuuNQ^osCw;7^Z`2>`M$*_!Mge zeaAuke6ZK72i8>fTsVBgZB#r3aE*5?rPDdQL-kV|hbC2JfnS48YSg8Q=(t|c*J9kn zsKFvLE(cm3KCbDi5yIDb{m&C1(*1{WIJNsK^u=_42p+LinRbFLZ2~QkcG4^zN;4B= z{=LUHn`^2j%nX{A?pI35-^cAOi3_K0Am6{3DGRRUDLcPIl+_1zX6sKB`$~DmaUCNY zxcIMX8vXOeXfE1yV&_?L)Z_t|M`IZ&B-2|MUu~Thdy!5c>m2#=otq!#C#bI#STmjP zE9<)-h%0DNVU~%0WPo2Ue@lOkcI#Sy76}LmE_rNGu##e~-~NPb{t$D@3iJP-&94qd zXUa>r8lieae@cJ-*P=0u5+H6Yc`}njm!7mP!5D&r3>@Y32md#H_nPaE=%a_yR{%o6 zi*;bJ(u1Qk6X$P5j!j{(zh#$;u7oQ2{x{!fJUj(ousosDNr8j+*!lGS)y(^b-1mBk zZmz}o<6(&cvzi2>RctJs*H!SqbHz8nb1j*neGL0ea}>QO{JuEEPVh9?)rM>Ew|;g( zEh_d0h9$dzjk%>utaPpV?LYYy;}I{-@`0eqxUIb>_cqtBqv)4O$&=|DD)+OG*a~Tz zfvgu$x_1;1`?w*~55D`i`)&t~r)zdRtNq8Ax?r;qKlY`43QwajGZ`eU>2iI4zx)1e zHbjHKRzlQ^kbQifSt$JU-7eO~2&O1(PKXK!AK(-29<)W+YCo>###;qe@8hoCt5xp} zIrWx?_4W+w{fc*CHyZC39<8CPft*;3&PsL-%eM~8@9X-Z>Vu1oJJVmghi?~nZI+Ic zUjla#SPxBr`N#O(zlm9hj=`o*4 zibcs=mYlqr z{IH&`63k#zL%*ycz|m$BHCZFR`#vJ&D#;UpuYWFd|2X> zpa((xfsX|7Uh(4q_&vz66Hf?6i)G7*^d4(MoayR*VDEXI+0aTRsnXJm2(*&u-M$+M zoVm4VD!s&Fuap#7)+YIyppvB|DoQW4H)TIQpu*a)(2a>Kno(e-Sc63gx?<>5Z4X|_ zL({j0Ysh`iC^15`rs^J%liJf-G4;-SkV=gZT?FccH*%QxiCeiZv#A~l(>M%I90Fq6 zdR{7Q!kbb{Qw{lHPCEcV3Vg)_7X281YgtG(G)b@U1uentDjfWl@8K*IwV*N zRxi2^71<~kk%&E0r?oJp;^A@_hy>3OYDTMKtH?fgy9~44=WpFFAX&om)H3t>QoeMO{RLoWF?y~CQMVXHwi-vf4?kuo`nPUj7FGw zH7bh5Jxg^()cd=t|6>b!1p+hwao@A}tQKXk zan$dGH>}{B*oDM0FGs2|Q(9kYmyz{nBGy$)%V}M-oS|%HRrx9tF3y0rgghd7s@78v zJ(-oTmzywKm!TuCa#(GZRCtrr8^iEKn*?Tze+cmm*;^&RMI) zm$Uv>+lYT=t$v-A1nx9EVvx+wJu1BFArUQ)glGI!#V* z$Soq~0DqgXd`sMze#Bh()h)2^Z{xaHfn`!G`8`8)rz_e*CUS_{7740L7u>xY+cRGk z>34Egd}oN9ba_W;10A9?G&m$jmYfjg<&NQqFfUgQ^$+uM<&ZYbGK^f#JvU2*w6*Sa zJo(pt3PN42r}m#j`Y}X&4xh!JI|twgPYKmcFFA>_hUMn(rb9WcdK7OukI-z)(R*}yka4?s1*X4)VcWy2tZTP%5=SXO=E z{+}W;zX0Z=ZU*MH2^Jh)YAicx=2rt>*2CVH{%5LO3=FmAcFl&Rzzaf4YO zEpLiHccFTbo*vXd_#6k=Q*e(Wk9VM~kws9=TL@irl<%+mILcPIsjzgh?Lr#W`fpJ{ z)K)Bw0MiK{1@B2>I#(BDimG`sEEN`b(F(A})w^3VP0Y4z+s@LG`O4@cw`6`NTWh|5 zdiX9sc+J)2SCbRGp+tRQH{IU|0QNe~sbjgQyJ?7$xv1-lNTfvMp!oA)UM}iBY#FbA`hS6}$#Ca4_D@%SN)O~Iw&kM)IZQSusuO(0F;MyBhqgF~dL zxdL@7xXE?D&OUAO&)261=~FN7t~-$T^(D`~pQEJTZa@H8gX36^#h)8Y%{pho*4D?t zry_&i>X43N`91Ztm!9_2(^h)gNl#xguOgBHCDc#V@NxXPQ>iStOPJ)9>^I3RzT5rX zExvcq@-zMIG?k&b;A8sDd4cE7&^PD1Z`M5HzFG1&_f2QMnPvqhQreH7kvTbTN;1f! z8ORS7GZeU_arB6Vmk$v(I@T@@%7WJw=%V~V74yo6GBd4$7`P4(XH!`;TpZi_JC=x7 zexW~K`=?&vNV`|=Z5vsyv{CdutCI0~kByf*JuFwP7RBJZZ2Z0ag=m6X_+o*bO_h?I&}8+fy6d z-^QVf+!fyA0-|gh;;aYqRbk~ME2^vydH=Z0spa&) z@J2p_WMeGMS!b}yD3hwxiGrE+D*R#GGBRH^iMGi1l(-~JT&ctjmRROrM1tTjPf&kQ z1}TYTPga53px-G+2)hp9kRxK=YY1;>OhKM`@WiOx`Jei9jYzn#e78 zDxZCI4T6{zY_p`7Il0(o6~x0-T5(-I_JPKWBz^0>NCGbka|WI+<94Rj;ZuT19P#nX z-<1fufR0K8eI+*r6Upx|7%DQZ<9pN=48v@w;a#c3Q#RJ+{zXd20`B_L2W}NL5=$LV z1N3{Rf6(vxl6H;GI4Ss9ncx6*V9_b!IL#*SK7bn>3;@IZ>CFCl7)LBYrHKjfF|YlR zhx21$dY0RM;ZD7jp#$UxNZRY*i3`)y<$LkHWw~K`KH&=m(aE_3&vqrs(DQ9RYNYVX zIMO?B!8q1INyRIHNM`4;|Kyc?p3e`YP|Wl|duPIOO23RH?YOL0Hc+E3T@y39QH!xh*cfpu((zqYB1R$M3Db@sav3Ak~9eD+wu934yjwL^#)3`V_ zRPfr=!6V7Abve8I%_{QB{<2Q%Yb`*c`uuCCi|xw_?kY2PbFL|yB``#Z`>py_Vf6sz zYly6}ciA-n1Sc4?SmdoG5lcOp&v)J^Oa)r^*Q*xq=~}v#=v{I=C5Y5I%#BwQQuekQ zcB}juZbA-J#2>Hy?uSJaa-`*#ZJ`WJ$Yt3H`SGS`LT>!U2|@B_W`s49n~}0NG$Xu{ zf2Q^LBzkO1X_ia2bIvWIWA*V80Kdg~SZ*ueUmg53~o1J{L)2gIQR=Ms?T@ zj2KyFD%QUricWY~81|oN|FPr?f~3s{3C)KQ;2a^nJ8^dT&BT5oL~q_#040_(D0$OH z3-UIw6?{{fHiwo_PL^BmYz=px5Ygo51fI~`j|Ov14-lzXyqWsK9`B-C_E&}VWu5+t zZn<*b&zhzooxsD{&Ao9l_D(VIqPJkI^2jp&P*va^S+Hs*M6@pu25IX)EKYbQMudVkfL?L!vm4y{V-Z;4^9lWwyugpY=@MiQ7@+NjZK)v3j~WItUgtb0u2s0# zJBZr)vd(FS|K%T~TH7h7LcnE^2=$Ur1f?u*iq0c!r4^d^(`tVcI%{|~9pT_iF%wNs z#{R+B0~dIpmA_O8x!r~O1@N4&tgWJPF7qcT-P(=M)&ojcx%WzsBMoT>-O2Jjy*x)_ zbovVQjZoIfOrz$rS2Qtm-$_kei6Y(T0~x? z^m`@)Tlrfmaa*>1uWZ3rHXnx$wD~xUAODg!G#?hnE43LKTyUk;)(-_~N9Y3<9&AIl z)lWfN|Gg2?O>niVJjoQ$bMAGee*etZt;WWOLpfaGom^DqorTp;XPAi$9gemgRDv>p z!7LdO^Q+RIm~RI69Nb1AYXs%&)(A?3S8;q2(6BwAV!LOkuM|zMe-FFaEQ>$vfmNnC zN4>3ek9Z^f>7DhPd|IeXa|n6$>*~8=#F7Ki2is)fQ(rjwEy!+w#!_GQ?`y!j5j`Tj zOI=ApKy0YzKSnjdMN$1UdWY3ZqiwVG>6#Jmsv>bVF<#U0*;X4E`2k|kG+!wbL12$v zuNT`cE6TLvRqVH2ywb3iS*qEQVnH`IAAUF5Y_{Lguf1v%7o@Gb z<*gc|gy-M|gR*!Ato{5YuQ9HBqH(S4`MEz=Id_pW*7Q1mqS6Z2J68BOo|Iv1>TuA; zmAFwQbmLiOoMmfuM7zH5iGGH6Px9mc=z3**;C2QC;pZ58#Sa?}S3ecN%8keR>F=-F zTdREu;VKn*+0i2gzM_O~qA)-^>$xGUl+2=AvlnMH-gH+`^H7U zJ3Vi#(@41v2IQeqMcry$bErgEQP7(n`x9Q3O6n@LxpOsIi4ChQbJaGE&#o61`9rCq z@!@EEEB!&FgXIqX(9?|ffYi3HxcOUbWL=J8Hq-GF?{9XDp!AKJzL*<_6QHkf+!#se zH){SMlJ;(M@7LGt4uj-<>6MZ9NG)b~EKgtExC$BQrgXm^?t*q# z1Ad!m7{E6|iJM+w2&E*@;wIPAo%)hL&$mUB|ExyKBE@2+m0fS|hH~`Xirw@KyR zcVJd1yYE0-f3Y#9^Jnin*b;_VK|c+FLAvsvzwcmYbczk{JD5xVBYffj@chQEIb@al z2!3;6cHMN=i}>S>;j^E=|KLRlC%gaPepf#M))gO|>%5=H* zRL%GU3Fho~yK}SyS+Gaj+!6rndi)sPlVkUr%_7f_!`2dKyqun4POjP~s9TGAy2RSP z<}tu*hw*LqVKrx+*_InnV6vuZtb2=qL%TW?2oq4^!0SXMe$BqFzuF-qew_3-+dsJ2 z=3zjAZJn)dvZ%fGVzfTj)=((AC6}DMo~|b#P!2!SDoG0Y%~XNf0o0E^g*3sDP6YXA9N9XgC$UQ znQZPEX6SgI@(js#ub=uW(6HU>cUMqdeMz^uB3JUXdwrb9yv4{y2wBL>9a)s8kwp+V zQRV6jw?xZqsI=#@F;}%ivGI$$;sPDriQwn#N26~<^a=miUR`td1H|bYo4$+R(xxx- zK*jCPUTXcFFvr-7-4E~p!k_yAWF>`^e(HXJmtbIalA_rq0oPa5_h)Ke=9u0GWww{6RNUmO}kU7`C3Cc}L(tP3Vx+@w{FAR-ny1Z(v97czibA$7kc^ z3@RrNmelm}Zb&oE`jVqwaD4J_3zs+f-C=S<+SHZs{mHaQU^PnnB`<*`%JaMFNs+Jo zU86kQMW9Iw>Pc~*{MmXM z$W!w%aG`ZXk;w~yr=8>Ixga=Ku&poL?nNfO+D-aDMxjb|-!oLDYBoc&T|_A-(9cr! z(@8cQ<D3jmQj) zPV>8+Z#6^v@Io43&!tuv9gv#=0JMqu;rlgS8R1`L`U3-5)-GFaaIC1CEgM@+r5QUn zc0a%$Oal!sBA{sQ{Q$?k94VmcDb-8}Zf7`F*MD?BKpuFaaUD-BvS0%PMP0;+%K?Lf z^XV^THvNz82N-j$Sfx0Q-48J3Q<+b<1oZy9=gE9ZuB?N`R89s*g|IJyULf`0YxtCx zJ-~)Kz5~G*&oBgstu#qXxL3Me)_>n<<_m`5_k8(<&K0 zKS)_ywNNqfEg(bnA~lRms`n)K>q{R;H*Ou1o*QXH`A(I-m3efh32^Xr{`!~+H?dBj zdnZcs7Jb8U3wOC&@4TZpq7X~|69~wYpa^4xcv8&(`E#@OkIO&gY;eyx+pkB+>8ci# z`jN%vhTxsiCE=ahBi5lW=Aynm1j-y~bP!+W#t>0DcWYefoWmu~D!@8eeiGB?G1rHH z-@sEBG8UU|@&Y};3fqY=+rxMF{&FYn30-8dizAhbsgU6;ZBjg4)p+ zPK$>|sbcb5`Fr$T2QHnb84BqtwGCfLy<&&y3)9H`4nMBa%G_q^CcdgLw#Q5rNq<~* z^+V(p*KC*YjzS#2f|HYX6n%K5rfnj9^q|W08PydKf}yrdA`%75<}$!1No46!+4GfM zPd4NBrzr8P%Gmlt@5d|a8TVc^H!de_AOIAmp%`BKo6muwFt`@UXSLiu7f5=lF+^e@ICPCVIhi0A39Veas41gw#a zK9?U%_4VDDNZ#noSaqx6lS15QQx1Dhd|eZ0FCYo&YYHP!5i3-OQkF7|#)&rlzh&0v z&~sHE%$6|HSSFFf07lf>0A>t!1K3>f9zYu^Je9(YX<$42OiDhYl5oK{ROAkdkawW_ zdP?~93ye3&55K;WuPquB<@&gCw-vco?oqj`tlUcfIF(bNXUeq^IK5tt|1ea2kxaWH zDYPs6U-HuuI!BIoD%=~Z9k@Y6P28n+=o z?F3H!zvidIW-`nFEBy40vR}bZXRP_3=BHz3Fu)D@=?G;<{PbKUn)A~^%F5xV-20nJ zZ-k#telCZfe&6di^V48D)wkfM?{W#@PxI5?z3^N3>AYtAwA*Ckr!P*A`03lP!cPl# z+<>3H5b@Jsq_Lwd202D?Inc=Ar`_m%Gk*HwFY?p*z5lEH^j7Ah89(jf25`~wZUB=7 z?}(qCN8v0#Jw+wqr`Kr4Lw>sAavT1+;nySeb;M8i=Ie-`e(lN~Mr<5aakR=s{B%>5 z3;F32u8sc=KmCMGY?PmNy6YGD>4SW`fqr_--~Us7`h>#x{2KjqEyCvK`RP7E4nKXO z?Z)`&Yv9!XYkpchjamL*;iuQYWqwgVz37|&X?}XhR0g;qKkcIIh@bALM00+cudEz? zx@Jl?y%BzT&a*lE^x=JfGe5mm)wkfM^=*ERpU#`}TlndSX8d$17r>*RUNI%&r?;~* z_2&?NyM=ywRm4wky~G&Gvs?rvM)7-~lfzG!GWurxwDuSI>4^RRtNgTr9yQ~qONQG3 zb`1w`j^G{f(~cC*^3$y}RK~c!Fd*co|8QUL7=GPNUq}4(y~!jLtrWfUZdY!-Lfufs zCMp;4(}^k<^3&5@8$ZcUIZeEXSWFdMV}D%ySa+&TSB(vl&9>Oq9<15Ql}fmk2%83T zc&cRIKB0qYuMla8wAle(W!a2i25B>gow3 z+s2X|nZ+vaWZvwzsREh0^H#BBCAH*CH~V?)7x;}EzaLpX&(Z$CdzD@1yVF8MiAW#Q zwz#77?O5_%>lBqYPK@>k6ca!zvgUp5o1Z!Iwmp`7Jgo|(-;eI5@r8QNEZi;he zW4<88zs54zm1OVG{mgh91_<#w9k_T%&&QvP%Om(=%Aw z&j^a0`PrG0+tYJ@hj4JoCM|^u$TGhXFYl{A0}1Tp<~MQ9n`SA$cfKs;^b(-9KWMh0 za{PGgS64i;CFAl(p%@H0QJxccB6VwBBQxDyGTJt1Wc6i*Lt!Q(I>?4Ld(g)2Aya?H zPlV>M`p6&Cj^NAt5=+#IN{;toC?N#J!pte_0r>g2puKKqoKisQ$NYIn(XwVthWTwR{T>CBxK_;e& zwp}XHH@eC3y6;7u!SO(pRW=cwkLlDa_b8kpcWSOJkEvOHB&lAqE$c{tY{?As&lfrH z)1O`F58D)b&dUM*b2HV|!o{!K9Q;YZZ$(c}In~Vg+D>m=Rx>?RlUWMWD`sdV;*P~fmTY`ZZvng#1e_CEzW@`5LftYjO)jS;RMio}q z#a0)SAyn!j;8fx!LI@T4Qj%qcKlv`MGYcYn062cUhjh@uwlvV`BtN#L9>P?a%Tx4w ze$6g9?2!0=_!m!Z;a^PAW(YoPScu^Dd0(@biKTSwlt1%W7pcLl;yOo8!>PYH3(J5D z`2wJd+@9kT=5NYFHh-W+AW0*SAxGEcLx4)n$vO7!BOyBHe9DV{punS4S0R)4ZrXeA z`g|h-T_$gwdVAO|&q}}TlT^BUn7DNR6`|#D_(HoT!Ji|3qz+EU-<}%pyTFj@#^(%M z{Y}A^;65EY8N9EMs$C}=l@7ERm1XUP@#DkGHGh<>vjG0a{=B^BsZzdqa>MD;&+Aho zd~vb9*t6^<3utkFbzy=04UxZBN%Jq;vNJ!WBZ^`v4yl87-M{XnYqKzWZO=uKcCga? zY`v1r=gY&d*$ssgIb&>_1HxiwHRD$wpUE2yIH`D0*uigHymc#c-;e=w^#LoIccqQ6W&5S&a zshfxdb}%u#5pA$MK$4wmd8dDRKf=Ei(!;sbux*-kIPd<+LRHSW9A1BBr(qS*9gpY= zwS4AZ%NO!Z8^o0*a`(+RX*bxs%SpTKW>(+7$*4@vu)4(OK(is@pF`!q`Lej%Q1L)+ zR-5V1fQZ9dbN#s8Jr-bQ7=f8H;PP_9B{>1q&Fv<+w>`<9VOyTeAM`6G$1NM$$u4~F zBg;d6Rkk^^q@5Vq_(y09XqbQYrtIK`_hz&)w3qpxkTf9Srr~6SjV@&lYDX2fN}Pey zNG$!C1-9;watH<9ffAc2oyA}hvBO`LK79R6E-QB3Qa!k1){WY3L3K8dj_N^16R%|^ zc^w7KD+K299tQ=rqgBJa*`^B6ua!G~){)158?f0x@uuQvw3-pB?QX;18sFY|)Bhxz zJYC4sJMWvJN_+w-5%qJJ;c*df!n-Hh^T?*cfX5uWP1cJItr`8jes{+4d!Zf(3q!=Owr(RyaHL$iqV}bhyiZ7uGtL2wk3v00p zUU=!oaF>Q|Y`Sz7_hLAf_1YiRiS{qqk5x=}!buowizRi+o8s08IshgryE*4gt#znQ z1*klcuDeqiJQmxyti1fMTvocSHhj&^1bN5NY%J-kWBBpBf^X+%4~rS$c|ARrthFvG z%7EI`0sjhbGcc=|uPW2z+r2Em0EB#TF#{XOC*KCmZ2PiQcMaZpx67}0|0%N-B z2n1jLrQitiE;tXpE8_=i%=trjvbie5Hx7Zx_-n>f@7k!H<-V`)9%G#XB60&3ymXN4FtU!$4gS#QWzfEWZ zB_j^9I!TsBuCv#yUjVA41($6+8bFy7&vBS+w0j}8<))`)&xCfqQqM`JX z97nUWv3D^453qiH-HlIhU!wHO;e6uHKc93kh|z@jFiGh@M(H>G@k(D3rP=>(mR{zM zR=O<0FXEpoUF7fwf0m&}jEypU=oTPR=6fXA!FFo?ykNbRt)=(i6XyF^a+;Oyi@y_r zRW@rKd}t;5sfwL$s0q<-0#mH{&R2W7Hd6g37Gm&{&8@4C`S$PUeRwY?TyNJixc#-E z9g``A^z-I=Xt1NhN8!n1`ff;sM@{~nN-uNc)IA4dm7bFsw<#(9NHPuCgS&V$)<0K; zE~b(Y{vy`6T~`r2MmG`Co6lxE^@Zz-^i#5)AAjzBEOB%rHNo|M)In1(@7&W1=x@AX zGa+F{b>^YKz-A2m)aFTUAZ{8OkdeI$+Ci`Ql-FcLvGlh4- zb|galaP!d}qO9~rnwx)ctg#Bm?`%3(YT~@S`KJ}g?cnG8IK>uzt^9jXsBlOM`Y=4^ zO?Xg^2A>iF?b0eU9hG4l*yBCOZV>;n#o>;fc%li%nBY;a&SZ)g?aV1KXnmO6St3526Nic?%4hP&`mDbZ5R&B`;j^@Wdn2>o9d`5FvxH(msKS?O}{8z0}6qq1M!OVPEKSKDp9wMiMi7=~>zPz#{ z)t_x$e;RMh$kCF&4AUa2$*(xd!R0$0woiW)ZxEan*WRX@aTW#pKvZFU;Me#&Li{Sy zk!3U~oXkG5u6GxV^o4!PX(ZDbEv!b^F2$s0B*My;CoZ#ib+;0p^;sEuO(VqTfX()gn6JY4d~`KUjlVr9-pNhy;xU(~28%NW!0&_FOm z$>3_;bfEh$)XJL<-;kP1h5{N@gVJLDQPx#GQ<9 z6>>-Xx3?09fRz>Aam3ykP)scAUiP(j;?P8TP%rc(+Y&U3+=?pLKH=CSN{p zIQ&z`n`3c_gX9pS9= zZnizqp$~-7e5O5#3i`wvsugs(OoIVb~P4z>%vGmRO)WPK?c{M1jvcLD4<3*V3E zgoEz_o(#S^FOUmgf9D+d&Z3lq??`Lu=iy7lrhQru&-44=ZW>8V%qZCT!S^IjK#rMz zvox2L{!Zj&-B)e6fxJ62{MPBk9j3iN0eQPexClX2QPBz|8I`|?+NL@&oiR`Z=2J9bq2s2rT@o%62J?PK);RtcgO+o ze@OqgZiN2H+kpPb`&INmc4PEEt_A&*Zbtt~=hDB@x%98}tq@d1|4LsKrJ;YN?}*aS zztXR{w10*Y&ydKWe`U>f?;ZW8e*^vNW8@b}Q?JVlud=+8GWMt57F4iuI=D ziH$q|jpqJqJmQwa{xTkMPncNa#71lCwzE&1*w~4+Wh~hw7STKJ&Ucmg2jxPqbvv;! zb6a73bYkO7X3p`IwR~jmJin5;9LSfsCpMJM)h(3HqP&IHGyH4v3vOnr<4!*Pch75F z(&1P5!=3ix|CB$Rj`m3x-sdI;__V}f=KPehi!r$RD(Rq!3w)@TgaA{TF!XIwbQc&?H&ucvMuixSiH&=+4Ij`};b;kR* zy)*KMTktr{|LHHZ8Q<)@#zH=`^BUs#y=E^k^B2!g-L&X_?xcgNu^oKi2;QVi$*GSQcjq=mk zHNVJDEBN-;^HaI4#F9VDPpilON`86^vgqge=}S{{_-Qrnf*bPFKZ8~OZ~5u;vCQ)S z3P0TgE+Z5#*3Lk_7S|g)|2FS`nx8Hk!vHtrr}LE^@zW_vH0P(|m6gL!$K|9q!cRB9 zK8K%Ha(~8eJ^!ZaTkzBFZ~PoT{o}2_g`ZAo#!p9HYy5QfKO%m5=ELyQvw{uysT5mx z{_Rj>MH;12&Wc1DW>Fi(Rr$t-*SNUmB--4fxsIURd=CZ-$><$=4A-?c>Vb_JQN4_o&=e2xTo&k5jpjpSBS= zf0mzCq!*gA6(J6}FdHk?H*A(;p}cF7W|F=0FbIZ>?Y2Sw0K5P4xUHz4xJE_TXBs=7 z2YdM}FQw)UiF@`|?nUOQ#lD+1;+sN`iVrE*-@8T?nA=t#QxDmwM^!k8kJy4uq}$p7 z)8rf0;565tlH!|$tOGGWTkvpWv>#JKK5f%2%-UR1aaXsva0hKv%QViO7(L^{)6Y>m zFH2}AYy!>7Xo<#)8J}hkKpY7#J&icW$MIQ*CU!pH}2CjmAsxR6l~@ro1zpk0raA zpF!VZHmu9*{9y;hF5P*u_UIF_duCj`4bpq->FsIXwyv+%ZfB);pWsxLUdu^e;3$~O z`N6fG{typ{ew`}SW2U0`#1jmBg|rejxK8@9U03)%PrBr?vh<2hI7Ljz5xw&w_i3Ly5eG2)sn3=#TdU+w(UuiF3gtM3h*8?CT0_f_+5 zyv?f$?-V@ipw>FqGpF+_gd zwG2MtfwRJQYvM`4)%(}D@P&&1ALiZ!KFaF){}0PZ6mWtPLF*E0(4e9qq$XlCQGyek z*jPbv$D)Yh0-97*mS|>_aU6_RTeVfORqNJPtx`8)Km~UZ_pP{~JdY8<4Fs3`-=A}z zXJ&%bZ~J}yey{&8uNTa7_wC$s&OP_sbEfNPH8oe;jBx5z&GcyERl=HE;HigQAGphE zw8j5qDcfV0!4iU7Y!YMw2s!l_gT!ER1_qlodApdrB|S^&LP47zahP?ycK=UgkpJl= zURerkA*q;?tEtg4Z)+m8S<3v??ogdj1&;rpqojO@Pi{#b0}L*Bx?O?(canyhM zHF7!q#m%!f^+PF^a-uURh$c*sw8@c9Vp9TIk8t+FYKS_Ty?+y=F#_AN^{G#7pQirB z_Tje0yd$EU#+F~98YDt;;=4po!!De5|Ls0{=FzVEDBL$}A?>B~U$v_OKa8K$jLq#L zp@|Z<(g`P8%NMI9sn13evaas7(l}v++*TURxahCVgH4qk}H9Sz_u9Y{p^Ai@ zv^&#wUdg5IYPJv@Dy@gIZjB{51&Be&(6F7Hr~RP*>Ym=a1e*4mle?JygTgO`;gzn_ zj}vL*^$%z8dFyHE16gfv9$5_Xl@B>ZSMX1E0AsDDkmYKemaTDHYRt-^S9;?~@Sk$` zq-__tNj&3no5YXyh57K_3+4}dr%aH8vK_6Cg0>6E-|<4WfAy&k!}S1!>1A7n40Uz| zG{LCt@)SZ9*Q4dhV2qNp_%$TAW_R99iUm8b%(hyBro*VVW>Wnkt8b-uE!FswTz@Fi zc99albaE_D{D90Q_Yd?jnE%Pjf1^u>`n&ym1d(q4UO-BAJmL;2lz+7WoM^Y}`z}Pf z^=T2paM8R4@wNyO3jI&0NbCC)Z~~||4sqIXx_K7HILVf8EOvs?)YLU*LgYxwo@Ns= zH;v2NF42hOtB&<7?{}>3VOM$!N4R^~mAXg__dD~Sqd7rA*)0mwb6beD@t>ya6dfh( z(P2rp%OF^`8oKNpnPBizzF}tlY9`SQzm#Y*g$n-gK!t+Yv@>kv7&BArmkJ@ut zbnXqLqC^T?(Aim(dffYq1DI&?Fv?+pqUpL?S$cktY+N5+2c@Y?|FT4I^pqUMP631J zcI8&WYBSMHG1sPqs?8Krxs#}s_Z~a&c_dW`>kHr2JgUz5C%FAXH%ipQZ0D|+NP;x@ z?uaUtHv|_XyR6*97i$KwcZIoM@r!Mz~tu?gW9z;L+#F_ zE>QH6;b51`-oZt~Od<>pHICjIoxeBjPHLsI>*+VDhjjfMLQ~i^2z%I0W7St!Q~%C9 z_$J5GHqL1Ba-z+>cUc||7QIyu8e9)*)q_HM@F1;qb}UnSm5^&|uW_qMt*(s~b{-M_ zCf#T9Ox#54Qiytmfwg>F`kR?8-=5es6A1CQrRBO5*VS%v#xprPjI7e+{M_i;;%?0s zmayVymqb$s2TX{pTF;rTIik)vrd3smpE+q>zbYxp+$PeLDJd6kvC1c-mw&1c={w5& zE(?ENiwGGj7dC9GvS@!be2^MWyH$CrM62Qq*}SC|#eSu$>Tb%rf+1Re&5olA^}D<( zK_&~D_f#XAkdmh(p}I}qSs`g`&(;SF92cd$@RE)wk_DLDx2ad_BCUWEm?;nd_^{A> zX*MRJ1WnvMby=~o5y_Eeofn;da7ldd7q^#06WUd=%%P|~pBuYfO3$CSd)-^!>lK~< zRCN9~Xgt3V>-GZP>|JjG_2fCMFN@!E7K=Z{N>{~(vG~2;0{ngewbpf89O_+v;h#sp z1X{loZcp#qT#pZJapet(T3eQqptQgYKw8ky=E`EY0-DS8)r ze|odShUa%z9gvmxXMtIl*#xZiULl}awddBHQm)?5&cq9-NeAAqnHzdPS``Pqzl@5# zdMfp+={=L^RnG|YZ0;t)kGcVGts-Z;z8s|@+o?!j6-h_-a;+Q{v~q=O<-Hjc3ASjd zimb$ZwEvb(MdaH`>sV<}^7-BrxnD*8LXkY#L;n4)Q|`FP98I=7Hi!Q8 zjNvX$x;N7apoEhsZPo{W`c@A8>ATf^+P8Q){V9H)eYx-3gYW32@7H^s=@yljL!C_V zVWoXR=4)dUdtPjwCLR4_?yKYJQ_7r4t6I#s)mKFO=~u4B&y4Y1qP+mFt8IvFbRUA)UZk>vydX|#0ntzyp>TLYAS>zm9bs}@dQ&v!9#J(04E{Z0%Dx^mvt9DUL zB0@m#NWhw6<#?V{~(YVsi|wWy=e>A~QgGJQIn`zqO# zA9BOKtU_{MI}(qPYIGAQYYY;NeROM$xv)N^(hP!WKjRt2ylPxRbTALjqTBQ@jSkjx zGv3$qjLBG>sKOwt%U(HR3XFGn9lZqqvD8vbrPA&SwL55#wR@f&RCT4etm$9zG^hSp zky`mmfHsejD)5G&P2f%+cxiKa>Fs>Wt6Q~>ANYDKpka8&Q>aYds)@lIvsp@>X#xje zOKRWg@_}<;Ak)|0L-{A}zarPf;ZGE`t*763fze{vwJ4BorVVi!#z zP~aZO2-GO*NDFn0us6!l#8}B2V4CysK{Tmmv>$Of24q`M`sD13r=@8^MpcdAu8HK9kt^GfSfVPQe)7nblsm zw|%!ga;g~quHanuFmsfqOJ-t4k&R8!!eWv7Kv)Ht$g+Hm2DiH1~b*$_jnond_z0Mn_! zEa2<06fe7Xn5omJd;W8=m8gb-^hc=BTx5I_TTK3A7zy2!K-T4*$w5bZ7Y{c3SnapF z+CP??U(qpD-Y&cy6o?rc8CE{WRSxjSt@6)0U(#M`rH5gG;bDQ1k!y!(Ku1~keo2#h zcqG5dXaJSQ*8rv--1TO=_~VfrG`2tjk}_*+G$JD-bU1Aq)s_EG1f4ukrOR zi>hAw*Xcx>!?w?bTTEzeO}OtsXP<}rEjqX{58Il6*uRpM;v5-Ep98hnLPb~Vzg4l+ z2qPJ9Qo)CMY>jnJoN`6C*%NAUhNuN7Iy=w4jK3RwFxdSUixZvSE(EOi(s}#Rc>XT4 zlileH8B_jL=I?Z8ud)lPKqbwT(4S))F4_{7?F`4|eLYl9(scTL!D|b!BmxwG2hxX+cdcx1oN2 ziA}%tce$t-ESMyR2LxF`)#A;#HGqCnhksF+UyS@fa{14O?XC0*6;6lYPVbv@2v2kJ z284%J^9tgOmRgtTdy(Htovrq|sJqQovzA8krw3Kuck^dL5sl){R)PAm9}t+Gf8>jr zmm;qvoBjj!X4AQ_@+Pak76-Sgf4suu0yri;rf_+f{-Rf*@M;?|+?qVBKWe+vZ?`c8 z{aoo4DW5!JYCnJ$yv}LjV72uft}vksU16T*glpm!@Ktg~=XYJfZ>dQXUodTLFdaOC z7fHz!pK&P%j(gcADi0m5`o}I3_r`fEpSL@_AW`6BQVUVwMmhe(BSP#1T{MrPHpUXo7Xl zdezxr{FAHIY9l$CI0Z7hQBH3?JIJ6c=HRW7H}6O-_gUscB!exi{-r+9zHRWH-lC(^ zD?J-UL@Wh7Ahga5h&j}se4r4VX91TKasv7Ds&9=)e|2f&n;lKO+KOt*@}?DM5>T?amoR8AWsKw`*&a(L`0V6KrrML+<|@;MiY04teIfAkuOz5 zZD0yW2lkw;qAXV{KrHb-W0z_^sEK@rT54br%!zcGI%-;E9qN14O9uG5+7fz8)u#ac zwbik-c+1+MFu3rYXU2$YAkTQ^v4fuDWGPgdRMv*>*CP_U-oz&o2zUM-e3DFNq#yMS!}bdpTywx{0W=yovw zjEVHizn%o|H7d_xS3A9MX7LZ<%??tJfxC;ieJ0{|gSu9vBEvymTA}22AUZOgTV`^O zJtsN=OygOuyV2x*Yv^L9jRriX5_${f`eMXeFF>+#41XH0q}*1zzf?R?EVX}W%mhsY znzIL=t0%9f$9v{;N&a#sBe&|_`%{G%^fVXP1`^&ER@nZ9JgktD0ca^g1}cA9@|VkN z-3)^N;c7Jk(aXYW-5GB3-~>fpu7D8Oly_syZkSmi4d;8!`6Wz=kdGW_Ww)#Rjm8D( zI0*3u(UjMGx+*59UTBZ&Pv7(GD~qhc&B)18*J`_WYn&*cMmUrQYp_rKf~&a(Cw%PI zI9f9UR?2}P2M<&NAXC9RXkPxfchJdg6bZ3Ab_x)%Ie|Er9fuL<_^saBj?&jXaN1gc z5}O@E{N5fUXku)O1>C?%z`E^dLm8xLZx?w5WOZm{qx`#(UyUrc3DLIJcJ)ti)p$=4 z?XM!hmFjrIgM3WDW3LNMAT+sd$>_;8eYDizzrq^jt>C3rZy+=(^3UebspYv}JLovL zr&?{QMXQ448TBx zqeA2$N2g4vyEyn$sI zh3EPu)edjkWxK|kXEA84D*}_iqjMBlnki#sWr#*A(E#WvwR%))`uJSQVNY9@-N{mu zu00N+&(2DWrL^sp-PIFI%UTqt>TQEYTn3E8Noj_~?rZ?j2YH5&$30hhyc;cxuw0`L zD25(5z3A;fnH7^75*1!Xafg;U9z(?)r5;3iYA# z$Vyd}K7VQ~b@X&;n>sP)Ll*l`Ge7avw5i$iD0Txa#SLAO9obU5L;1SQ0F*D9H2Hd_ zcxDQAQSbcV6c=ub?6UtN-D&Ry-R*-Zygp!XXuWsXsoJr)srZ&%VtlGrx`J50pF598 z&R(W)qe*fAP59gaVKLp4I{wz;J0}Izm3NI_8OHa@#b=7&oI@WQTpxE(AEz$tz~3)f zoKt&uW1`F4Jej)sb1l{RCs~h~DYUZaQX*(VOPU-)n*R$GY=tG7rgp}C)ip}@+Tn@py5=nUq84|x774Us)9$*FT#o2j(O=n~Tm|A`VnZ|` zFNLx66|((dU?uV$OHYG&SvzaTVeMJ^K630r80fLetvlDs#ZBm_M6THx{F6o!n<>BQ z1mPgu_}E+O{lO3m)cN3E)AcK(%IVkKQ<(5f@f92n*b$kk*9Or2!E`?`VP8#6AnzhCM4vA)0S$BjmWe5*98%0N`(^PJ%EB9BGE1;a9 zKghj;{K4pmL?pQTm}ldb<2@H!l)&dhc%Ssur6ivjtYK|32Nx8^7v1&DHl&G4)lb zKDUF_-bG5E;?kc~`aq@2i35Ok`Hn{DW=?gwrx`8LA9XpF`X+Ce<>Vg-?g~^@<)Ucf zCUJ_K_c~%Di?7~E*Ekts%zqQjZb7pKgomrmTNcpf-hy%j03%Ah6~A`g^hz|dx#|P@ z`oDkw#BesLuiw8`d-x~))m%r}F8caICCVJAM^Giu@azMqGDpxW46B!d)%5@hB^K!N zMlNe^k|l+#%>O4`)_e?=$sPuT_f6|9VW}ya!OXX$7h+JL_Ra&(Qk7ci9C+Z|afSB)mo7x8~^I=k)fazxBWO zTk{A*l|XN|2@LRW8h5LL0~Kr~$o}?vE3iOm0sZ9t(}_gMM7Z`p^wi4>Z$e-H=o5s* zB|ZR2{}FeS|E0cuO4V!c``ug`Fb|PG57vyJ3~2lu64Zic1&2FzW%d}J`W+(JbH%8{q*~%x7Is_ zl>f8-YMugHX?ZK@k$e9nTRGs&r?#~L^a}=XwB|e1*Y88-oWA}K%E>W%R{=%%{>hc@ z9hCl=N@w3c9Zw*9|K##@-0P<4ODfLl>))n);rk~|=TGYE*Nm$(O?}w{msN?DPp3;u zUx%KUtt}r7;fFEpovlj=8yEdEameZ88#r0Co~C=AbK(B6CAQA1nFyQ)YBW0tCgi6) z?_TE)AuF+_UvR<+U8Y47J+l>-|8ue`ypRg3IC43azotCb%mbi2%^t z)}+|M((67x^nlDXacTiH+BC{rNht8>z}o6PYN2PxIcMX5}`Y^52`xitSWXo1wdNR^Tor!8GkPWy#$$+gWu zi0L^+bY{y`eSjH6@A;$M6=f}znWzf@=zN(IsyCc1VA)Ol8R$E!QafBdNo96)V#DRV z4VfdbYI$P%MwY-w5ev6Fk0~{4*5FkEWUIoL1$bEV?QfsM!|9D?5r_zIvIasc-1hk= z!}$b!p2_)Vl#ciRqPQ;ftxQYV1rCzmkjbA6$y2`y)wFCx2;Zk8cWfhZ8!t&JyuGZX zuKY56Ke>>Nosw33rtb+{tLwWcn)r})Tky5bwqO-qfbn_guvKa`q29_oCR;1!OsStD zQ41Ro(wF+o8*#t!JJTPe8=ZOQQ_-Kvl=BmAo-}Xc72e5()&H2n1z~!pSE2CxjL_&8 z=Rd+7SBCs>WM>Al;4AeQ@MbiT*4`S8Bs!qLqOyQM2sm@iO7hVG3Xt2CiYepNP-rj-N#~j{7y*Q`j8$-aSrv&DOILbqf7Z``GQTBKy=`^J=xO)DFS= z$l~X>E-JuP-IIKt!zapF)rDRY7^wKS3MOx~Eg_w32@R^F^H)jPZv^$_i$Gpdts#a} zm&-WnW(_@uF9xCs=?`bIr1F()I^Q3Z51a)@`?)=H`az`}X-YpRd9L@)nom#~dCmYQX-@IQCT$ z1sRL?vI4(l({YgR}|*IR8a5Na8bEossE#iNGoqs0spmDlnda z;8Bt%2eYTZkXRK!zdy^GdEF~e-gC(7?W+B5>kh0s;ocJOr1?@w$gXx4kc1;bk{WX> zmIVXvozGbRcM$iwc4r0^qfXF{?X6{gceRauov6*!S!3Kx&8H{UJ#xsqYYv}h{ju+I zeBd)BuzM)TDMsb4u4Q(~Y}j97udIEd zyW^1r!(Y%}{a$bcs!^#^fbhPv4^}UFmLl~mzVH~W_wgL&tJ-JMGE+ovn@+_Red>f_f1x=!L$6?1-3Qb%Wa$e)M*0hF_PcKehuAVMQ&e0El z+#?3ew$oY5-YbU6oJ(rUf_y`R--_V3TE9+NCYGwle5-t_%CSgl+=MJ!7*EZ_`uB>) zNbqj+lOOnkh%%6A8uXN6`cV?rEE=Z^?cRb=F11`^A1j281)jH*{00_affc0X4 zlyTDnrPxL;fEv2E0D3`n;{pi9@|*{t#uM_m8N;vU|ED-B4^21FRyz#wvc}=^{ewPP z|BZeBRGaUg&lwe18{a<<=l1g^{K3@p6>Q3zGIbTQt^VSIV7{1RNLd$GDr`Gc_mCm#frvah?%-fm3GjPI%o8q4)W zP&>V`Fo@YDjG9#|;9JMgRXkz3S>b;?!zQ32>)J*w1qv1g^eOF>U z*+)JNpg^k^$Mq7^rOwwMf3Y-Pt0#%e^a~ zWvO7p8~3w=S0_ZlNu9s8+rV{5uxF|DJtzkgny_s^mx-UGcsZ?6Jx3Ghcr@TEy$&vv zZOMbh7kB^XzdhZ7@qD5@t_9m26QGkM(Mx!Ed&~(q{!G_F4 zR-e|Vpy^<5v(D$Q;uy!77WF3ecA{L`R8NK1pYuy4z zF~1Gc`T>wXZvI!i?(>na4onhEYIPx}k4io-} zCiR4^Yv1$yqrGYDN#GyNR|TPev|n-f!9UuAOh$TB{?QHqF^=rTa%IXBF~@oBAICr1 z>%tLQQk^~)ur{3?1H=8GE%X~23H+eFZ0^%|qrNq9;D?@67y8u7y8+!#si{>K6S_Pj zEOg*ZYA41BEj=;5D<#wW_2pj0;iQHB&Kgs8qD#uojJH?N(Zp~<{wV%qM4NBskfr%K zyX|!2)E+%H&(+r0qkzhQNxQnnn6zuyk@Vfi@mh#410{k2j8pj#ugC40SV8 zeod_d-VG=ziEE1CllCvUC6>;{o$%7Q@q#lfTHI>ak~vr+6acV{Whk? zTGLgzt>k}0DZZ$8*T0~`8wOWH8!%M5o0MoNgrB!1OU#7`_!y|vk$yH z8ZjGC6hgUPG&~)d)SVImjp#`cR`BgATR{NW_>pO3GM9it1{K?)w%q-JEF`jBFbFnjsU0mD1<3!X=(&c?8 zW<91%k9h|^>uVL}!1{6@>G<*5sgS6$B?kpk8`P81SIPTIbpEe)m@}@S<%7a#Vu|g6 z$tAILJ?Dv;D5ddI%Y@J$QBz$C1J&uOhsTG{afikph9v2)*^vM^ERJ&$dY=JXK&YBf zg&j}4KY$F3XEbxP+(Apmjr>|}Uy$aN1vaRkcv6?8feq?Ic+}+XO4n?uY`m8kb(_}Z zjM6f9)2a6TRs3g6z@=2i98NCK9HOjLxh9$@F?uy~s>BCxI3G_8y(+;ma}!sieFSTs!5YWk84TiQd>}j1*cTYZ##(5jcf{!Z#Mxa$qWnjFr*u)E} z1w~7$10XnPLd=ejwbiMa6Kn~+uWA`~aMz=Hkge2L@Lz59u%|VJ?=g4PhvL|awq|f%SCxH}d#kN`XTi)`%var=(>&&K7hgV0vb-1NT$U)8ne^(hIJo z(VR!o%{92xHHu8vP9O_z+7>hus!1j1@srEB#2&NFq_u0BNr+dj!=D%pnTMt^2Wur9 z^&DcYvx4dAQytX2Ls8ybv9^<^#xi4g_+4L6U-@-3q4!_)sQklFvb}C1RF@j(w#S2% znS}1%^yvI?4Rc!O(4_x!JBUOP3!p1a!fpxYace8ZYq>6heQqy`w?Z@OU^7oJ_}3 zwI_qJQnKs~UjA!eEk)ng+EL%HjA69ua0UX$uz(2Lh_BPKLptg5)}y7<$9tEXh3=P# zxJyk_M)VEG?5o+M^2ALx-;oAa`Dxk8D_!LcVdX8FH4_-of3$v7`6KgG`J%3sGiPR( zMwMTt%599yPIJuyAO}M+Z%bW>0X?@N3h9zBLG|V_O@&xU=&)X}A_3tTrfVXOfYqcG zcvDz@9d!|Qkb~}HECxu{P|}gJ>NGv$Kmw*_LWa7)cc8Rwk(-Pyt@i4y1_jwdpw}^( zv3r7*mv}`C#cGv$uL)D|GlvtMw zjyoBrWqAPoP{|VqFo^}mp!0+_W2aQ1x?3$T= zG~1(_o~63WH9wqL-rZY1DvuUOU&4l8M-PUr)yS8RffES;FVnyk20O2u)NJc*D#Pwh z_5vzm4jaT%h7|I4%y(Sa^4t^>IDrSs zQ@h0`uJtZ{my?C&_)43hnJjtjP*=^qG+=~bVudIA(QkmOO#Lj7ca=8{yWfH zNBwu#NJRZd-`EA&1AhhnYSjOw@6+j(?GN|noGv+hpzs;?BBEe_&c{o6w}A4da9T+$ zeL+RKZgMOYtMIDN{>(wlA+#d`iTu-1T+Ob?{8>A~hF_wFLiqL`8A;_AP@_8!dUq*2 zmhb{8eYR$o{vULb`tq#O4;x{cITyq0n;zbGoLRl?*%?OLJCaQAq(g9ZGk8Bim2+;T zR{>q*4GS)#m5w`D=*Iq{q>|@wpF<})R*0`Oe5lX|u7A3{DpVKmHK!}2qyMxY;VWI( z>rkMPfXh#9MuJ}Oa7V0A0jk!hcqHvt0Nph1bGt1nU94P0BFb0-2Qa-z6cCE3Eb=R5A}^ zZH%lF{{IwC0RbkL$N!hYd%LjhF&@`b$%1LB>9 zn%6ZI)OQx|fvDg6kO1>8;vb8rCztpUJruI}e@gkvUAx{R1VE_G+JYxpoIb6;^OO(W zFV|oEzbV`vhIzRH{LHZ8Jxl!?T|Dg9`6A2Gf9605{z_)pOd_||Wn^8>ZcE75;os;h zTjiU_*ebW|8?N%b;Isv^G|WqlxykmcQ2n^u`A4#sLx-?Dx`8drt@wN9Zp-bTH})m} z!Bz+U4;6TfqhYXq=}78JwO_v9NG=$fX-*0hAJK%d2tgQbW$=<0J@8)lV(g6FJrPi)d0g4 zlGRHE#aJq|BCx4R+wf|u{F~{i_#j?)aeuLgtNtkxjT=f{YCV75d#s$EUqB!y|FWgh zeI!ZRZyng8ik$knEko-Fw+x!U1y^dEa1xR z9D4c#eaQjq03Hb14*4yW+73xlv6Z{r%5?$lTkS<1Q%^U)9}%F1T}0v1kp*k4r`zxx zMPR(6mgd*C(&XoQj!9*HY+kYNr?R@UvuO;b&o5)=c(;<~A4{DJuGKgZDrM{QW<0}B(<*}^_#)Cfa@e86F*C;U+NP|KUEruH`$pQq3!07|Rrf zGd*o-s4}+qS5uX{&%fkwlM-KdV0fE`)N`*I!yo7FVMDJOi)89-7zew`-;0%NGrihO z)uNA)$2HC6Hves3${cQ7YO?8i9vY(y=uGoEInBwzg+8l%G;>>5*;vXYJeGByr8m*! zM`E2Te`8VQ4_ee#*4rJ9=&gJCA*Zt~TP`fAh$c@Yo?STiD1P0&d}~3#SYx0p(nC3~ z#eCAD>eJvf`f>JIQtNK2Q^yw)E;8dGmjn7-!$*@x=zzukodRLd@0Y__&D5DN#C^+3 zbqz1;8tLLv9;5L57Cxz}@`T`ao_qLJFeZo-co;b3=TSvVdBJXK0jhy4e)#C^X$C0C zpYGz@Ulfe75mQqJ#!_5hgm>{R?k>JX#{m7smK+=lew~D3$-(1;a7pl67W}#qE;+a& z2v_Sjyo*1Sb7=N1{)h?i}v&pZW| zlp_XO(zfi&m-HTgY(G_Z@4iWc(?=HC37>5fi=~mF@tO>LR1HBb9Fyt)ks8tkAD8kY z2CTj4E`mLA@F$>6?-<2s(($wxh6L%&z9A zK#J`klhngjuW~53<|w|n`*>4iyuyvu6e3=+u_kp3Ap9`<=Ul|Es4j>mo~6pVmM0(` z-*s>76UIKEDaIgnwcXSEqtz0dGu-j%hMx> z!ET5-Fx;THgM?dohs9u3^8CB?q+XRJ1O#?Deh)a-U5?*o*mfP(Mo&`N-%+2*hcm^W z#Z`WtR~eRXdS2D-M>eA}-8w@2*7w)@+r0i|SG&Qv52MYY+EQ_vT67sE{B{KlfTmjd z0&~R!(c@?T!~!~TQ}R>#f*-yTt62CTQ(U@t4ii3zsd{fpN{Xz~0qDcHmoZ_+zcOnK z;l{lfg03yp(JK|$lDY79`@0i7fIf_Tgm?I_F<1&3W$MAObb1x5T<4rbOZwrA(2BC6 zw?6Fcj@-TdYca_%f%5oZycmue!A8s8Vl>7D@pDbT&hG6c8G$nZS^WWUQ*{Cy@d8Z` z;wPM1yEXon%9DB% zL4mcRn!$a`^^Px|QfhRKRliPL%S~kTZu+aQqC9V8RXQFMoMrXx9_N8Dyg<%D>mQn+ygih)LgWYFB-`KLfj6^zAOD?_$`u*wggw zIH334cc*}&L+JmpkJkJ6A_#rMkzzVb-!4*Z`gUy8LCZEHHcR72P)m5HdxR!Fpz(jK z@5#4z=l|>acHQ>~BvaAEXd~w$G>3`&=Jf5Pe&^`Cm#?G$ztgvSUUmOS-|nnDN^a+R z(=Yk&==-Mi?>s@qPto^4-DlxP?7KYrUOJkMwh8*a22RNP?wNl}-;WFF`}7r5X!QNf zTHCX$cgmyh+X07J`tF`a|lCEdrQhX9A3B6pK(y{uz1F4e9UpxaT?OnrbDQ?tlO0? z^`|nE?-22^B0ix%-i*I&npF3;>4Q{f!gLl5_248OM%_*ZksZ}Gb-Q69 zKO6gzUPX1jzFpk(9d=Y>8|mA9$jn=XhIqQ_+x22==chrpFJp98*D^jfrrXkk_z~US z;0#hoJ(@1W5Nx{bBa}{nZ<^{-4qJIxN9Q6H%}nU!1>nIJOIt7mYqdP7;($aqOM&% zq$ZoLkENkslij(?4wtZb)iJaXIDwV#yg`?UO{N1sBu;0d$vS!#Pd821(>Cq^ke#oz z=ioZeb{2(a*n^32#ViTwZL{QIw9y8=wo zPd`126ZMVAlH{H@P|u+O_^>yu`JRt@Fw$?xf0x1YO;Q7)ON< zBt{+WrzZAMART%2?GP9B{lyT&I~NWxN`DD%FGG}6JhPf4D7|peL^zR<(*K&FOQ8SQ zPSkiuFoOFO_=13UyT0D#OQ+sHC~%$fWQxyjWJEG?02=#n8E9-T4aeT^ZVB*6@_d!c zS*x5^x||OwXU`y~vzaoQN|pNK>|H*Uq7EnQrX@O=Ex(P)vJ;(5zy>}iq$@>iNlQ@6h+l77uEjPUdv~)Rt zPdos~(E0m7?~}*u{2fi4#~z^Jq@J=;=$tnx6wvJv%AP4-**~P)#bU6;*LpwWD%&%$#jH3S9gN9e%k)Z zwv;vdD<#w=6CNm&ff1psy}p35rZ2rm@Vb#FYOIRQQ?yp3%&>dljC!ES6^1>%q*<%8U3)D5`rUtEkLBsZ|4-RtS!j52 zrT6>o7@&-m=zOu#o1>siHi^DmsKDb&3+}yFdXp8^?$SjY#^;4MVUOkMfnbl&9!sCA z{u_HNpKAxM-kFf?)*vtis@llh|_N$>N}Sk0sVQn{bB z$MVM2|5xm>ykJOcrFRGG;l{F%7%*Xl8^A^P820m?)_jNdSZ0tpXOHD9<>cP+cUtkl z9?OQ8ZTJ@krPC@M+G9C@(xE+;?yi+%&v30wRKD2&k&fisC|_WYWsz&6<9gwwy&oU)Alw>$za0`}+95NWp1WKzGPJAyGQDHr1 zUh*u5lzzuHDB6n+d84mgfx^ynQ?2|Hl<7_~g|_SSO^Z5hEL>Aco>eAlvZgq@Shv;+ipwrBQCN`j-%=a^MSikQRlp)#kW%EB@SZ= zSryWCL0tY3FOYk_ukpKKPWC!TvvvhBbnU$!_#n6^QY?4!XDV7P|ii$ zMNepzH@?mrrLLg3ZpzUdt~e?Vl`azMcO^K&U=n2uQb#}?=A1~kv&6VKN2bT;kc9iY9wzH?s!aIRj&*9iM+FI?KRdA#!dXi^SWqw^PW zT!d~PwNy9K=M^??USGMAw-D-GHE|9-MJth8Tb*YwAe1_I zD0inu+8=Pkh|YbE58ZIO3(Z3O-w15%oIJAcPPErZKR)7lDX9q&%h^OY$zWxTb% zZInQ!wj?(3LRiRy%VG;x_Vm6g2FXu6LJ<|QO#h{^)DesrrlL2w>(agIT4w77M+3~j zfau)ssc+b_j#2nWv)=v&;EYeKVOrI9d1#esUP;?i*z2Jd*~qC+w$C~a;S=lDb4^|4 zQAJ$xP!BfIULP2n_yrFpxe(_LY&xYX;Zy1uO|0^Kmi0s?HIBF7I;HX4H+t#UrW@Pd z)EqYO3g>^ZkY}a7h-ZqoY43xu{rT9$MYzg1t$n9t$KeY*cZx0iX3*eorhIeq;0>wQ z*Da66HlSzRvZ{Ng=Yg?nYoh<`*?m$CtAP`q#lzZLIyaBr*k0ESA8b#>2Ybo2=l88y zT-!Osoa42u>W2LX-nvHXma<;D;bFepW*dx~!-0YEiEGfj5FF@OTR-?KuN%y!q;}|Y z$PAKR$}Ws1bcKS(cZs~3T_NboOapD4@4TA*0LL?HFAOQSl~A>WfhCecaJx@6-aX(O zRmfgZoT}!ES5nBitz$MNW`J|J2>+mST#k_V8X*%e`5PazZbtA@%VvCERMA--j?4NMN+1Q zq(pBvCU~o^%4>!PFmDMn*b|I@fL8+{(zS+mBh#Mad>|F<3hxq(@dO%)$67w=i%;aM zwe2SQ06u=mh(cB0Cwjx`2)}thpAuXoM-zX6ylhMtUJl~&>4Fn1b`?!M8|2HU3rm8y ze7f*BaW%N{j3zr#PBKj_yJyeG_uzUoror#PG!jG*e-Nl9P!a|z2n-AZ>2l5ZnxkR<4I%09Zwdz{p})fs-|n*~qLuLJP|hs( zDF%`uirZKpYnkzcVy|=ng=iMx|>8 z)~tJ@eqy`f-eiK3Gyoz1h)>*F=l(ucASQ0?2O$^(uRnr7>z1?&GW;hf6T-i(LO^~w z&wkxsSCwvss-5o-2ya$(Uj*8SvfpIt#MMw4tnLUoZ4GiVl*9_q`DpS}a(K^g6~wAL zi8qNdI9zZsQ0pIwTHYuu{no5|tA64q{&-Sb>BBVokZb55cWyypn;mx6(*ZM-`UDPs zV8ldByI?!naZvD1(@S$Arh;u&cH(qe43RNP{zs@GhH?qFE<)A;cDcS z3icjp#XnTI^{B{3I&lbpd9FtC04{DE}~-`lZn^Kbk)Dj2S(ccBXJ zLSY9_-V}vpXd?(8tMDGV@SzIpmM};ksjv(OyD(I`yHMbhIuTAlB&kPF>8hCn;IOxe zT=Ff5FDqIw7TViFK~@q_kgL!Xy&RsYvQce{bo=XYI{-kMySfYQ?$z zkd6#~ibYSCZ}Db7c#zK43hlDglw^Wde}!uNaR<^%gu z@zkEZ;?ckFDJd;Nm}iT56 z7CDbk^e{#hdeP*|08(6h=riJ^;H>lDnJvuIKwd@JSO&nhQmLDOA7JcgepG788CuiF z=`$uWOO_lg1J97Fb>5v(b>U$4h%>yuE8~{xtXT+&r4NOWz*xsL8!hYM9*^ZqZj!Hy zty>=(#_;_E_2~4PMX{Ym!kc3Rav(skpzx+BoBXf8Zxc|EK3u3Ow(x@;W1DZNOD(Ni_l7ek zGMp{wAJm0TjwtmO^m1mh4<{j@hs(X&iS+-1PPU!T$_E$cZN9rRZu80S9nPWz%jx1? z%jo$>ehjcwwX2>XATT9RW5D%%&rftACfDUs2@L= z4qs%&A|a(ZR6EOiLw}gpedTh?Z& zOnTksi|SLa`nxiDIeeH|3r*`B>|H+ z4pc}eR_nq0qC$nMgK#?X&_cu44}UJExWaoT^GRo0TJ?`33vhUyOTX_+mwuhBGOvaR})DgSxY&Bq0drtP=t&#kmb`b+ILo^!r({oQam{k>l4Nu_I7 z_p-Wq%vG7An`)P&PkX9+BppPO%@>ichmkwvvqk2P270w%Vz#TJM`4WSB_6HGWB$!I_S7YQLjMmhAdD z<=t0}FXD^6d+run75J}!i-)xjTkGEi;Ci>alwpumU-z4Bf2Kyim(}1F;1bKhEDr!h z3FT_)rv;IAL^3bjVaicKikl7LHi2;svHtM{G_P&9sf|B_KG8xbgm$9N$yV+Ll`|<- zx@xP{{Q%Up-gXcH=>%kNQSH{GQ-cRW4J0B#GK{^BGE85Bl1H zKc+SDZoJ38jw#h~DAmdbEw#83@t{P45*^QBF7jiNwJ^iGQ-yWyM%F-teP?3)VVbOw zksB!8bRgAS%?FA2`@!n0>QBm9gD-1oR$6nAJkHf11o%!j2XA#mQO^zwsHbs>i%0QBkI#vp z=i;An@knszx%k^%{9+f6w0Dk+*YzFsJm}(){Z4i954!jwcwpMaFYb63-|phKaq&n@ zs$Kk3F22yk7jp0C;+MMkK`wstXrhSthdJ>TbZnE||B|xRRK6OW`z7&pEswt5s#4QE zmagBU1~b>+Z!iNBuoR8~PDo1DCu1T6BiT3MZA48-44(4GpQPq5v*jEEz za)^uoov&*9n#xxLUy0IY+9NQ*0&1PWR13_rKua?}7S@DC`?V;Kh1*?tUKn2L!pdgp z@40Y0KM0()_<2gD!8xyf;@5(uChhoud)pS+tXueT4~E*Y<(Sl{L5MM*D6FsixN+p6 z=^48fd4&KvaNG2uW4w|c5Uq1r2>@w+MCvAf@9mOT;}T_nMdhv1WYMC+=88$tM5Qq! zkv~OXMgYB-j@3FXdbhI&z!-)eo`W$_2OFslV7Iu-ftbfAT;R2-CxJhu3&g^h;5S`$ zpBC^kBjcq|gbu9x%#u(q>ZZWNsUXTg zNn2kL?}ZWX1rck)h&4e(0l!wH04$;++I1Eo>(h!T2_s5^2+f-17#c)WhY=p7G-1=E3yLTSF7oWt@vvK#}z*9n;Q>~o>HwWAqS-<|M?b6gY1|6UbxZff>%88C@(5I0R0GKr5AJK!dgkAu*4K_h61$0wmHZ<;lTX4W8$c{q5O|oK zU*J!mJ@9i)VGeQliXK_!Y_*@RAv7 zscVnEA-WgNB7Qc}0&If-|HAe=od`ty+d_4VYd@FH#V+M<(^AE3X z-Y_Ye+yj`cOV6H;qxr%IU@@KH8_t040&WbLoQs-4tevQG;jmTcsnuaIJjK>Fr@P#> zAPq7tpw;lIkb=&`())W(7g6prvO)$u=!uW4y7_)JqemuOKNiAp6>V85E0E;?q32mA=xEW1rNqXonSN@>4k;i$ZUand|*$i7-xhJ7C&| z?39So<(2U9%wv9YA9rc4kWg?HGQ>5q_6cj`>}(_Nx<-x+8yU25Blp8WZ`8==K_gC~ z;LjSrdo}n5OMo0)T>i}aG&ifs$-LbDb8W!m5V)Y7S`8F4LM)%93{_QiXBuPpolKlh zIG%157l#MaXre#cv_5?d9!%bzHFVgrJmkRn4+vN`Fjo0OG;xrssay}Apbyxzy2_WE z-ZT6J4in{z)jdLz{+j*2(IuTrhOMfpII^S$0yu*ELy~GFqnT72Z3CO@CtfS1pO({!c!nJ16B*ZTd$_|zMDY*)=l+EACG$(u>98L6hMbI3tJLX&DojxOUc zZ=cp%Vh-CsnmmMbsb@TW3PPHy5gl6;csqUdv1t@e(fX#)CHa+P)!Q=Gn<8W?lT3NEoI%B`bZSm^XreTKlPPo6-BR*Q*`iZ zJoUXEzp}@)S<^e|PKu{rI-q2Z0B;O1>w0%lQT`%;B7`0MtwAxZ-d*(B-pxY7MycDY zy=xV99!&sGLP&EImJV$Yp04oXT>4~%e+F_g`2+f23J3Qp!Q%Kbmh9#;viUuBF4*wZ z7J{|~@&l?f<*ykb^N}gO_lqqG;H(~D1(0o4J$ySP?t#NFI-GWvs76ffo%J3J*drAr)I%#ZDq0Zv%sq%bI1JP+~Bo*NB@z9d<(s_d3(L% zUHzu3cJ2fjWr{zUte^4@e!SmdMIDY__|80EkE{u;+yR5(g^m zGjBLa9gA8`*LpY0hOr;B%cA2;vBh97MrLfhm23?L*R&1vaF4rf_pJDM3)?k&e(^Dq zEdK#ptVLaDfg4ZyD&gK(EBjr$3t(zlchkg+J1N+ z<2Qa}Kl~CcQJ(Gdx^%+Mp6rExtYeqrOfAi^SBCAKw=X6?QH~sA?~_#uE}7 z#QnbBMs>DI7Gx?5SA;2!E_JrvPD&`TI9mW94|Xb*{|ah0rBIxkEDO-h6v$EU6%19q zR0H)Xmzs_Z)un*HTb3w3LvuzH!3|5i)vJ_?8(KTXB?hZc4v`GwGvFxKXl}vU&W`z`6hUu( zd_47D9#@gu-|Vo{?qGXJ7vycQsUD9ReMj0TyW6#uAF}Cll%4-wcskN}?OdDiVW{ zI8RepV_M9RsKOsA9FoOHqC(!MppvRYLv*N4}BpSK1>*RuxrmR1J>`{vVV_=FSv^JrBFd|3yy zxd#E@a7%ie1C-?JGy$M{e5nS4h;&{|Jq)7r(u&wheM0vZCa+DpwyfBp z^H{MRM+YmG6nms9k5l$>1iU}d9bI-zG@3(~Kf7d(K-r^pnhBkWF+Z)KY$|MIAk;?ObweQk{!VA?>)?uHTMWj$$_ZS?>AeecxUf(??1blcqgXDm){;(hOq)>vfB zt>k8~XpR*xlfN?H|2-qd0RJlJw*R%@=F8Lap7id|p3U>05#>Ov)B6vO{=LEh{-RHH zO3H3aaVQfMnyeWyx#coVO}Y*w{d_%WcJ3le;5>LV=RrpT|8D5|fKZ*P0`m8f%FEKp z1kuB~OdK`|S>@V`1N%kS6{^;4HSsqc$`-DHr z^Pdr=R6OvX@fJ$1`8JFy>MGxiCazTuvvH91pMepuX4)qO*2EmoEPR>s{)KBf!@3HRLejn}0cn zJi|;1t80rHE=~RZersyzMokSGU`?%vCVXp3gbd;>k;wz^|46*>r=YRLpj3qYUN`Gx zZ(67WwOD_q5lCOy=&kgHdfWxTbc)f1o__)ZR@QQgJ%fn|tnSI(BeObHFrtqM`ta`f zM5WuU#=FU^cV3fg(N89au7&_0+B0HEpjn_=LJN1AQ9QH_<3w;HP;EMv5-LsgenXW~ zMROjYc+&t@DhwES4qH?zCZ53?6OZtSn0RWTUL10+MehxiXw^#0DLkh$HRs$ivHBQv zU*z2a$_uO$X$Dh^5S7R*vRp3u48qaXf7q9qa!T1}8Of*HmmR+Ks?wn@8*p{=zXFW5G2o?-;|8fR7n}j9O!m($;O!!eoj^d<2Q= z5QJx{-nh;&9n%kl={O4%9Y8u1(k?q%hnc&^L?RC=UqNf5G$~QudyH6Q0QL)b2jws zp0sVMljH=i|4IknBC%{vq+i&{O0yz|XiCU?t^(gf5+xy; zq`<{N%FzmRP?jp~cpD=^AmHC@*-?l`CO$ljyvWs|Q!_9DleDd+*pkC3jkjd3X2RqR z@2j>jc`ujjtsvGP49qbbxx6oQ$t%0A9Dh%exl;*Jbtb|xKdM+8kU=xZSo#XPE7vI| zV~J?uC)du}aaenJ-xC`-cHuyDxs@A@7$gx*p8_G}Hvl2&F;dss2hfP2bqpxL5WE8_ zb~3(;Rbi(1x9_t-SKGd-+V^+tq_;+9chcvfTmjAL?*TNog!ALwWwd9pe`J^owQRO_&7)tcb29-8 zS~x&WcC#j*=(y8cGQlynCBY_Vas6#r*pR99Zlev2qK~a0FZ0qpM0QvlBK3q`1%*KK z?92U2TTBl9;)9_OqedVj>f#q}eRS>?Y9q(bdIuVr3i#Ls#!q`wKxS4uZ8bjX|IL<$ z`}E~3&0WF1IaPt}0KR(U?Q>=N)o_XSaW$O-ukp@I7Hg^%6;qT57q;Pe(u{rYkKO3@ z($yIQf#gXGlN}S7n%gsv~8nmN)5N$ZjR# zD$3$6|3Ix3tiuH1B}JD30FHMcpu6h=|4H<)H3Pd+K6EuZ<~q8NDIeKk*wi~zbNjFX z!#D6=PMEbQniwFZM~)jE_*g!bUh^i57=J1`z4J~8-stPmvcCgE%)vXz?ZJ1c(m627 z+0Q%l!+!AO5>GxA7`m0#&�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

    KdMuJt-w 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°%nmdfNM1xBCm>CmFmZm~P4orc)`6+FA8+D4595@-AhhL__N()zqB` z&9%kYteNwr>ZMoOBbo6Qh!W`lU1dL6fUpckB2ss%AA5tZY`t(I093{s7Xtfg|GS@Z z@}7tBK>AQ&A@1GY$I;4A!4UV)p;%rHdZYR3E8L&<#}w!acIL-hI4#Hjqt=j|J<_{d zWbd{zsWRS4Yoabzz{}D)>|WT_aEmD)tkMGp;`+5o6PTasB;K{k_XY z1n+LKU3!+kyX#Nm8BLa()#}}K@$TGmX&oG8V6%^<)>2E-avP1ZK}~qSrwK_b96s`j zQPuo8lDV7FkNhvG70j2nlPYJMsMGC&tU#T1Hkju@vMJR5`pN=q? zpU014dt5F9U6A_m)knBW);IXOL(%Sga-b9RImTYO;z>DrlMYR zE0c9)p3ZY3KD`d5!mY^uyxhGXuL1SMt?vrJ8KtKmK*#hJ4$j91X#5~5w`972eFCRE3oq8g9I;)RQ0pR&fy}z9gc=9KS6DX>!)93o6=v zG<7nIMtCXh6RJsB7=H+~s11nJovW01$EgwVG}`mIWW>>!{kMTkyj;WG&PMN8vU@I? z{teUN&oJs|UnYI4m&#|0&#nT8PuqtIa8dZ!5AC^6*dOKjR*_F;7|L_sK$$%!l;oG9 z3B_wSpji%-)-YliTO6fs5kB+VxDIUNu6OIfv9=x{?XTJ*-r|i|-B((ad%qFOF6IYv zwhIEd?nAAVBTx%L{(Efd-jv`L9_w`Vkq0O`%l~;c%l&3Hc7By9VB<8~8u-wILC_pW zuQ~_5)kKA(XQf*~9Xb9=uNavA#@jTg-?jfr z{wRb8ruVE&?^W!0wFa84yMRfr%Dhl2JAGzasmJ%6Exw3vvbQ^1ybcwVDzSP!f>aMn zRRpODOAQKA&K5sBNDa4dqk@#P#gDU8vUD8X+UJQuhA6@^?hi8V4>O((GM)`HW&{~C z$ne%oXGTI>yq4qY{joE?yt+L$kQTOZlpVMg=tY=c^Q99`U-PVLAe`>e+Mg}H;s}IO z2a_M=AF+{U|GZ=Z!f6I2BdcQMr>(E!3WRxNMl#7xm%h!eTWx(`rkv;`=+=M@umJG? zKY;jar)>`Le^@2N*Gl|n%BFU3h;R9YL;QvLRiOv#<@Bwc#9rGEX;Z;Bx4+FC&b8e5 zou>5p$1sIr-1`oI3$KD(D>K8m3CY73Gru6@&+Pw5u-G-rNNW}TLCmMgKecv^gm|X# zA1gz{z_SuRnZt{$XX7sHQMNwBZY&i~L0nh|c%?b%nNV`pf&7MA^=(6aq6zSiJijOX z3?R`jb3VGzX9Guk>u)FO3wJ)!pTgw>5{)GvMo^gO7Z4SmcaXlbZ?ttU08BUU53yFX zwxsAoUn~6GH9AvzFcnF=@)v$B4CIQipYg_5`h&wd+t# zei1q7xq{S3{K_2OC39Ks+C13k>K`roaj2{C{?R)aH!vIO{v_F)SCpSR(4j6aZvfyLV*Q=S%b`w+qJP^rl*$x7^G%4lSwM`Z4U8eT(P2W_=_F!R3ldmzu#g}dpA|i%Uk@!T>$LOnS7{R5g6<4D zd)w>VeS0*v3 zFL(t(4dKg_C(WTq=kFGx+j`CPpEODHMFNci+XyF#EYw~*5fL?#r;CI$#S6cd zapM44eo_a+Al{WC|NViTeSuTie(D~=-Y7VNP1wA6xCy(rX+Qolo)k``bN%{%GzwYe z{es>h?fQN&h0yEVxF|kik^dOTL<7xPtPGhC*qr5?xFcv{YS2W3kR4dBPOyP!%pB$2 zJX|U5w#@;K-L?}kv1jJ7?KY+P76xI@NpXM9+0VWK{cc#aFhNFG&bwl%+fA1_RciBV zwgnfDcl#K%c@`7Bq$>T1e?gv9E4+>Y^Ho@v{@Kt`Q@UpnFs@JVC5oVK!RQv3IRs_J zyX-xtk#?S4)w^lAe-fgVnuXJREOlw1E}ytB^EHx$*IjZ`Tet7bFsWmPQ_Wt1GUp

    Kj`AM!$gO53t`xeSLyG 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 E9|KNkHUIzs literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/oracledb/utils.py b/.venv/lib/python3.9/site-packages/oracledb/utils.py new file mode 100644 index 0000000..aceb5e0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/utils.py @@ -0,0 +1,448 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2020, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# utils.py +# +# Contains utility classes and methods. +# ----------------------------------------------------------------------------- + +import functools +from typing import Any, Callable, Optional, Union +import uuid + +from .arrow_array import ArrowArray +from .dataframe import DataFrame + +from . import base_impl +from . import driver_mode +from . import errors +from . import thick_impl + + +def check_parameter_length(name: str, value: str, max_length: int) -> None: + """ + Checks the maximum parameter length and raises an error if it exceeds it. + """ + if value is not None and len(value) > max_length: + errors._raise_err( + errors.ERR_PARAM_SIZE_TOO_LARGE, name=name, max_length=max_length + ) + + +def clientversion() -> tuple: + """ + This function can only be called when python-oracledb is in Thick mode. + Using it in Thin mode will throw an exception. + """ + return thick_impl.clientversion() + + +def enable_thin_mode(): + """ + Makes python-oracledb be in Thin mode. After this method is called, Thick + mode cannot be enabled. If python-oracledb is already in Thick mode, then + calling ``enable_thin_mode()`` will fail. If Thin mode connections have + already been opened, or a connection pool created in Thin mode, then + calling ``enable_thin_mode()`` is a no-op. + + Since python-oracledb defaults to Thin mode, almost all applications do not + need to call this method. However, because it bypasses python-oracledb's + internal mode-determination heuristic, it may be useful for applications + with multiple threads that concurrently create :ref:`standalone connections + ` when the application starts. + """ + with driver_mode.get_manager(requested_thin_mode=True): + pass + + +def enquote_literal(value: str) -> str: + """ + Returns the supplied string as a new string that is safe to include as a + literal in a SQL statement. + """ + return "'" + value.replace("'", "''") + "'" + + +def enquote_name(value: str, capitalize: bool = True) -> str: + """ + Returns the supplied string as a new string that is safe to include as a + quoted name in a SQL statement. Since embedded quotes are not allowed in + quoted identifiers, an error is returned if embedded quotes are detected. + If the ``capitalize`` parameter is *true*, the string is converted to + uppercase. + """ + if '"' in value: + errors._raise_err(errors.ERR_NAME_HAS_EMBEDDED_QUOTES) + if capitalize: + value = value.upper() + return f'"{value}"' + + +def from_arrow(obj: Any) -> Union[DataFrame, ArrowArray]: + """ + This method converts a data frame to a + :ref:`DataFrame ` or + :ref:`ArrowArray ` instance. + + If ``obj`` supports the Arrow PyCapsule interface ``__arrow_c_stream__`` + method, then ``from_arrow()`` returns the instance as a :ref:`DataFrame + `. If ``obj`` does not support that method, but does + support ``__arrow_c_array__``, then an :ref:`ArrowArray + ` is returned. + """ + if hasattr(obj, "__arrow_c_stream__"): + return DataFrame._from_arrow(obj) + elif hasattr(obj, "__arrow_c_array__"): + return ArrowArray._from_arrow(obj) + msg = "object must implement the PyCapsule stream or array interfaces" + raise ValueError(msg) + + +def init_oracle_client( + lib_dir: Optional[Union[str, bytes]] = None, + config_dir: Optional[Union[str, bytes]] = None, + error_url: Optional[str] = None, + driver_name: Optional[str] = None, +): + """ + Enables python-oracledb Thick mode by initializing the Oracle Client + library, see :ref:`enablingthick`. If a standalone connection or pool has + already been created in Thin mode, ``init_oracle_client()`` will raise an + exception and python-oracledb will remain in Thin mode. + + If a standalone connection or pool has *not* already been created in Thin + mode, but ``init_oracle_client()`` raises an exception, python-oracledb + will remain in Thin mode but further calls to ``init_oracle_client()`` can + be made, if desired. + + The ``init_oracle_client()`` method can be called multiple times in each + Python process as long as the arguments are the same each time. + + The ``lib_dir`` parameter is a string or a bytes object that specifies the + directory containing Oracle Client libraries. If the ``lib_dir`` parameter + is set, then the specified directory is the only one searched for the + Oracle Client libraries; otherwise, the operating system library search + path is used to locate the Oracle Client library. If you are using Python + 3.11 and later, then the value specified in this parameter is encoded + using `locale.getencoding() `__. For all other Python versions, the encoding + "utf-8" is used. If a bytes object is specified in this parameter, then + this value will be used as is without any encoding. + + The ``config_dir`` parameter is a string or a bytes object that specifies + the directory in which the + :ref:`Optional Oracle Net Configuration ` and + :ref:`Optional Oracle Client Configuration ` files reside. + If the ``config_dir`` parameter is set, then the specified directory is + used to find Oracle Client library configuration files. This is + equivalent to setting the environment variable ``TNS_ADMIN`` and overrides + any value already set in ``TNS_ADMIN``. If this parameter is not set, the + :ref:`Oracle standard ` way of locating Oracle Client + library configuration files is used. If you are using Python 3.11 and + later, then the value specified in this parameter is encoded using + `locale.getencoding() `__. For all other Python versions, the encoding + "utf-8" is used. If a bytes object is specified in this parameter, then + this value will be used as is without any encoding. + + The ``error_url`` parameter is a string that specifies the URL which is + included in the python-oracledb exception message if the Oracle Client + libraries cannot be loaded. If the ``error_url`` parameter is set, then + the specified value is included in the message of the exception raised + when the Oracle Client library cannot be loaded; otherwise, the + :ref:`installation` URL is included. This parameter lets your application + display custom installation instructions. + + The ``driver_name`` parameter is a string that specifies the driver name + value. If the ``driver_name`` parameter is set, then the specified value + can be found in database views that give information about connections. + For example, it is in the CLIENT_DRIVER column of the + V$SESSION_CONNECT_INFO view. From Oracle Database 12.2, the name displayed + can be 30 characters. The standard is to set this value to ``" : + version>"``, where is the name of the driver and is its + version. There should be a single space character before and after the + colon. If this parameter is not set, then the value specified in + :attr:`oracledb.defaults.driver_name ` is used. If + the value of this attribute is *None*, then the default value in + python-oracledb Thick mode is like "python-oracledb thk : ". See + :ref:`otherinit`. + + At successful completion of a call to ``oracledb.init_oracle_client()``, + the attribute :attr:`oracledb.defaults.config_dir ` + will be set as determined below (first one wins): + + - the value of the ``oracledb.init_oracle_client()`` parameter + ``config_dir``, if one was passed. + + - the value of :attr:`oracledb.defaults.config_dir ` + if it has one. i.e. + :attr:`oracledb.defaults.config_dir ` remains + unchanged after ``oracledb.init_oracle_client()`` completes. + + - the value of the environment variable ``$TNS_ADMIN``, if it is set. + + - the value of ``$ORACLE_HOME/network/admin`` if the environment variable + ``$ORACLE_HOME`` is set. + + - the directory of the loaded Oracle Client library, appended with + ``network/admin``. Note this directory is not determinable on AIX. + + - otherwise the value *None* is used. (Leaving + :attr:`oracledb.defaults.config_dir ` unchanged). + """ + thick_impl.init_oracle_client(lib_dir, config_dir, error_url, driver_name) + + +def is_qualified_sql_name(value: str) -> bool: + """ + Returns a boolean indicating if the supplied string contains a valid + qualified SQL name. Leading and trailing spaces are ignored. The name must + be one or more simple SQL names separated by periods (and any amount of + whitespace), optionally followed by the '@' symbol and one or more simple + SQL names referring to a database link name. + """ + return base_impl.is_qualified_sql_name(value) + + +def is_simple_sql_name(value: str) -> bool: + """ + Returns a boolean indicating if the supplied string contains a valid simple + SQL name. Leading and trailing spaces are ignored. If the value is not + quoted, the first character must be alphabetic and the remaining characters + must be alphanumeric or contain the characters '_', '$', or '#'. A quoted + name may not contain embedded quotes and no characters other than + whitespace are allowed outside the quotes. + """ + return base_impl.is_simple_sql_name(value) + + +def normalize_sessionless_transaction_id( + value: Optional[Union[bytes, str]] = None, +) -> bytes: + """ + Normalize and validate the transaction_id. + + - If `value` is a string, it's UTF-8 encoded. + - If `value` is None, a UUID4-based transaction_id is generated. + - If `value` is not str/bytes/None, raises TypeError. + - If transaction_id exceeds 64 bytes, raises ValueError. + + Returns: + bytes: Normalized transaction_id + """ + if value is None: + value = uuid.uuid4().bytes + elif isinstance(value, str): + value = value.encode("utf-8") + elif not isinstance(value, bytes): + raise TypeError("invalid transaction_id: must be str, bytes, or None") + + if len(value) > 64: + raise ValueError( + f"transaction_id size exceeds 64 bytes (got {len(value)})" + ) + + return value + + +def params_initer(f): + """ + Decorator function which is used on the ConnectParams and PoolParams + classes. It creates the implementation object using the implementation + class stored on the parameter class. It first, however, calls the original + method to ensure that the keyword parameters supplied are valid (the + original method itself does nothing). + """ + + @functools.wraps(f) + def wrapped_f(self, *args, **kwargs): + f(self, *args, **kwargs) + self._impl = self._impl_class() + if kwargs: + self._impl.set(kwargs) + + return wrapped_f + + +def params_setter(f): + """ + Decorator function which is used on the ConnectParams and PoolParams + classes. It calls the set() method on the parameter implementation object + with the supplied keyword arguments. It first, however, calls the original + method to ensure that the keyword parameters supplied are valid (the + original method itself does nothing). + """ + + @functools.wraps(f) + def wrapped_f(self, *args, **kwargs): + f(self, *args, **kwargs) + self._impl.set(kwargs) + + return wrapped_f + + +def register_params_hook(hook_function: Callable) -> None: + """ + Registers a user parameter hook function that will be called internally by + python-oracledb prior to connection or pool creation. The hook function + accepts a copy of the parameters that will be used to create the pool or + standalone connection and may modify them. For example, the cloud native + authentication plugins modify the "access_token" parameter with a function + that will acquire the token using information found in the + "extra_auth_parms" parameter. + + Multiple hooks may be registered. They will be invoked in order of + registration. + """ + if hook_function is None or not callable(hook_function): + raise TypeError("hook_function must be a callable and cannot be None") + base_impl.REGISTERED_PARAMS_HOOKS.append(hook_function) + + +def register_password_type( + password_type: str, hook_function: Callable +) -> None: + """ + Registers a user password hook function that will be called internally by + python-oracledb when a password is supplied as a dictionary containing the + given ``password_type`` as the key "type". The hook function is called for + passwords specified as the ``password``, ``newpassword`` and + ``wallet_parameter`` parameters in calls to :meth:`oracledb.connect()`, + :meth:`oracledb.create_pool()`, :meth:`oracledb.connect_async()`, and + :meth:`oracledb.create_pool_async()`. + + Your hook function is expected to accept the dictionary supplied by the + application and return the valid password. + + Calling :meth:`~oracledb.register_password_type()` with the + ``hook_function`` parameter set to *None* will result in a previously + registered user function being removed and the default behavior restored. + """ + if not isinstance(password_type, str): + raise TypeError("password_type must be a string") + if hook_function is not None and not callable(hook_function): + raise TypeError("hook_function must be a callable") + password_type = password_type.lower() + if hook_function is None: + base_impl.REGISTERED_PASSWORD_TYPES.pop(password_type) + else: + base_impl.REGISTERED_PASSWORD_TYPES[password_type] = hook_function + + +def register_protocol(protocol: str, hook_function: Callable) -> None: + """ + Registers a user protocol hook function that will be called internally by + python-oracledb Thin mode prior to connection or pool creation. The hook + function will be invoked when :func:`oracledb.connect`, + :func:`oracledb.create_pool`, :meth:`oracledb.connect_async()`, or + :meth:`oracledb.create_pool_async()` are called with a ``dsn`` parameter + value prefixed with the specified protocol. The user function will also be + invoked when :meth:`ConnectParams.parse_connect_string()` is called in Thin + or Thick modes with a similar ``connect_string`` parameter value. + + Your hook function is expected to construct valid connection details. For + example, if a hook function is registered for the "ldaps" protocol, then + calling :func:`oracledb.connect` with a connection string prefixed with + "ldaps://" will invoke the function. The function can then perform LDAP + lookup to retrieve and set the actual database information that will be + used internally by python-oracledb to complete the connection creation. + + The ``protocol`` parameter is a string that will be matched against the + prefix appearing before "://" in connection strings. + + The ``hook_function`` parameter should be a function with the signature:: + + hook_function(protocol, protocol_arg, params) + + The hook function will be called with the following arguments: + + - The ``protocol`` parameter is the value that was registered. + + - The ``protocol_arg`` parameter is the section after "://" in the + connection string used in the connection or pool creation call, or passed + to :meth:`~ConnectParams.parse_connect_string()`. + + - The ``params`` parameter is an instance of :ref:`ConnectParams + `. + + When your hook function is invoked internally prior to connection or pool + creation, ``params`` will be the ConnectParams instance originally passed + to the :func:`oracledb.connect`, :func:`oracledb.create_pool`, + :meth:`oracledb.connect_async()`, or :meth:`oracledb.create_pool_async()` + call, if such an instance was passed. Otherwise it will be a new + ConnectParams instance. The hook function should parse ``protocol`` and + ``protocol_arg`` and take any desired action to update ``params`` + :ref:`attributes ` with appropriate connection + parameters. Attributes can be set using :meth:`ConnectParams.set()` or + :meth:`ConnectParams.parse_connect_string()`. The ConnectParams instance + will then be used to complete the connection or pool creation. + + When your hook function is invoked by + :meth:`ConnectParams.parse_connect_string()`, then ``params`` will be the + invoking ConnectParams instance that you can update using + :meth:`ConnectParams.set()` or + :meth:`ConnectParams.parse_connect_string()`. + + Internal hook functions for the "tcp" and "tcps" protocols are + pre-registered but can be overridden if needed. If any other protocol has + not been registered, then connecting will result in the error ``DPY-4021: + invalid protocol``. + + Calling :meth:`~oracledb.register_protocol()` with the ``hook_function`` + parameter set to *None* will result in a previously registered user + function being removed and the default behavior restored. + """ + if not isinstance(protocol, str): + raise TypeError("protocol must be a string") + if hook_function is not None and not callable(hook_function): + raise TypeError("hook_function must be a callable") + protocol = protocol.lower() + if hook_function is None: + base_impl.REGISTERED_PROTOCOLS.pop(protocol) + else: + base_impl.REGISTERED_PROTOCOLS[protocol] = hook_function + + +def unregister_params_hook(hook_function: Callable) -> None: + """ + Unregisters a user parameter function that was earlier registered with a + call to :meth:`oracledb.register_params_hook()`. + """ + base_impl.REGISTERED_PARAMS_HOOKS.remove(hook_function) + + +def verify_stored_proc_args( + parameters: Union[list, tuple], keyword_parameters: dict +) -> None: + """ + Verifies that the arguments to a call to a stored procedure or function + are acceptable. + """ + if parameters is not None and not isinstance(parameters, (list, tuple)): + errors._raise_err(errors.ERR_ARGS_MUST_BE_LIST_OR_TUPLE) + if keyword_parameters is not None and not isinstance( + keyword_parameters, dict + ): + errors._raise_err(errors.ERR_KEYWORD_ARGS_MUST_BE_DICT) diff --git a/.venv/lib/python3.9/site-packages/oracledb/var.py b/.venv/lib/python3.9/site-packages/oracledb/var.py new file mode 100644 index 0000000..85e6836 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/var.py @@ -0,0 +1,186 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2025, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# var.py +# +# Contains the Var class used for managing variables used during bind and +# fetch. These hold the metadata as well as any necessary buffers. +# ----------------------------------------------------------------------------- + +from typing import Any, Callable, Optional, Union +from .dbobject import DbObjectType +from .base import BaseMetaClass +from .base_impl import DbType + + +class Var(metaclass=BaseMetaClass): + def __repr__(self): + value = self._impl.get_all_values() + if not self._impl.is_array and len(value) == 1: + value = value[0] + typ = self._type + return f"" + + @classmethod + def _from_impl(cls, impl, typ=None): + var = cls.__new__(cls) + var._impl = impl + if typ is not None: + var._type = typ + elif impl.metadata.objtype is not None: + var._type = DbObjectType._from_impl(impl.metadata.objtype) + else: + var._type = impl.metadata.dbtype + return var + + @property + def actual_elements(self) -> int: + """ + This read-only attribute returns the actual number of elements in the + variable. This corresponds to the number of elements in a PL/SQL + index-by table for variables that are created using the method + :meth:`Cursor.arrayvar()`. For all other variables, this value will be + identical to the attribute num_elements. + """ + if self._impl.is_array: + return self._impl.num_elements_in_array + return self._impl.num_elements + + @property + def actualElements(self) -> int: + """ + Deprecated. Use property actual_elements instead. + """ + return self.actual_elements + + @property + def buffer_size(self) -> int: + """ + This read-only attribute returns the size of the buffer allocated for + each element in bytes. + """ + return self._impl.metadata.buffer_size + + @property + def bufferSize(self) -> int: + """ + Deprecated. Use property buffer_size intead(). + """ + return self.buffer_size + + @property + def convert_nulls(self) -> bool: + """ + This read-only attribute returns whether null values are converted + using the supplied ``outconverter``. + """ + return self._impl.convert_nulls + + def getvalue(self, pos: int = 0) -> Any: + """ + Returns the value at the given position in the variable. For variables + created using the method :meth:`Cursor.arrayvar()`, the value returned + will be a list of each of the values in the PL/SQL index-by table. For + variables bound to DML returning statements, the value returned will + also be a list corresponding to the returned data for the given + execution of the statement (as identified by the ``pos`` parameter). + """ + return self._impl.get_value(pos) + + @property + def inconverter(self) -> Optional[Callable]: + """ + This read-only attribute specifies the method used to convert data from + Python to the Oracle database. The method signature is converter(value) + and the expected return value is the value to bind to the database. If + this attribute is *None*, the value is bound directly without any + conversion. + """ + return self._impl.inconverter + + @property + def num_elements(self) -> int: + """ + This read-only attribute returns the number of elements allocated in an + array, or the number of scalar items that can be fetched into the + variable or bound to the variable. + """ + return self._impl.num_elements + + @property + def numElements(self) -> int: + """ + Deprecated. Use property num_elements instead. + """ + return self.num_elements + + @property + def outconverter(self) -> Optional[Callable]: + """ + This read-only attribute specifies the method used to convert data from + the Oracle database to Python. The method signature is converter(value) + and the expected return value is the value to return to Python. If this + attribute is *None*, the value is returned directly without any + conversion. + """ + return self._impl.outconverter + + def setvalue(self, pos: int, value: Any) -> None: + """ + Sets the value at the given position in the variable. + """ + self._impl.set_value(pos, value) + + @property + def size(self) -> int: + """ + This read-only attribute returns the size of the variable. For strings + this value is the size in characters. For all others, this is the same + value as the attribute buffer_size. + """ + return self._impl.metadata.max_size + + @property + def type(self) -> Union[DbType, DbObjectType]: + """ + This read-only attribute returns the type of the variable. This will be + an :ref:`Oracle Object Type ` if the variable binds + Oracle objects; otherwise, it will be one of the + :ref:`database type constants `. + + Database type constants are now used when the variable is not used for + binding Oracle objects. + """ + return self._type + + @property + def values(self) -> list: + """ + This read-only attribute returns a copy of the value of all actual + positions in the variable as a list. This is the equivalent of calling + getvalue() for each valid position and the length will correspond to + the value of the actual_elements attribute. + """ + return self._impl.get_all_values() diff --git a/.venv/lib/python3.9/site-packages/oracledb/version.py b/.venv/lib/python3.9/site-packages/oracledb/version.py new file mode 100644 index 0000000..bfd7d07 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/oracledb/version.py @@ -0,0 +1,33 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2021, 2026, Oracle and/or its affiliates. +# +# This software is dual-licensed to you under the Universal Permissive License +# (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License +# 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose +# either license. +# +# If you elect to accept the software under the Apache License, Version 2.0, +# the following applies: +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# version.py +# +# Defines the version of the package. This is the only place where this is +# found. The pyproject.toml configuration file and the documentation +# configuration file doc/src/conf.py both reference this file directly. +# ----------------------------------------------------------------------------- + +__version__ = "4.0.1" diff --git a/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/INSTALLER b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/METADATA b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/METADATA new file mode 100644 index 0000000..2dcf673 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/METADATA @@ -0,0 +1,84 @@ +Metadata-Version: 2.4 +Name: paramiko +Version: 5.0.0 +Summary: SSH2 protocol library +Author-email: Jeff Forcier +License-Expression: LGPL-2.1 +Project-URL: Docs, https://docs.paramiko.org +Project-URL: Source, https://github.com/paramiko/paramiko +Project-URL: Changelog, https://www.paramiko.org/changelog.html +Project-URL: CI, https://app.circleci.com/pipelines/github/paramiko/paramiko +Project-URL: Issues, https://github.com/paramiko/paramiko/issues +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Operating System :: OS Independent +Classifier: Topic :: Internet +Classifier: Topic :: Security :: Cryptography +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +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 :: 3.13 +Requires-Python: >=3.9 +Description-Content-Type: text/x-rst +License-File: LICENSE +Requires-Dist: bcrypt>=3.2 +Requires-Dist: cryptography>=3.3 +Requires-Dist: invoke>=2.0 +Requires-Dist: pynacl>=1.5 +Dynamic: license-file + +|version| |python| |license| |ci| |coverage| + +.. |version| image:: https://img.shields.io/pypi/v/paramiko + :target: https://pypi.org/project/paramiko/ + :alt: PyPI - Package Version +.. |python| image:: https://img.shields.io/pypi/pyversions/paramiko + :target: https://pypi.org/project/paramiko/ + :alt: PyPI - Python Version +.. |license| image:: https://img.shields.io/pypi/l/paramiko + :target: https://github.com/paramiko/paramiko/blob/main/LICENSE + :alt: PyPI - License +.. |ci| image:: https://img.shields.io/circleci/build/github/paramiko/paramiko/main + :target: https://app.circleci.com/pipelines/github/paramiko/paramiko + :alt: CircleCI +.. |coverage| image:: https://img.shields.io/codecov/c/gh/paramiko/paramiko + :target: https://app.codecov.io/gh/paramiko/paramiko + :alt: Codecov + +Welcome to Paramiko! +==================== + +Paramiko is a pure-Python [#]_ implementation of the SSHv2 protocol [#]_, +providing both client and server functionality. It provides the foundation for +the high-level SSH library `Fabric `_, which is what we +recommend you use for common client use-cases such as running remote shell +commands or transferring files. + +Direct use of Paramiko itself is only intended for users who need +advanced/low-level primitives or want to run an in-Python sshd. + +For installation information, changelogs, FAQs and similar, please visit `our +main project website `_; for API details, see `the +versioned docs `_. Additionally, the project +maintainer keeps a `roadmap `_ on his +personal site. + +.. [#] + Paramiko relies on `cryptography `_ for crypto + functionality, which makes use of C and Rust extensions but has many + precompiled options available. See `our installation page + `_ for details. + +.. [#] + OpenSSH's RFC specification page is a fantastic resource and collection of + links that we won't bother replicating here: + https://www.openssh.com/specs.html + + OpenSSH itself also happens to be our primary reference implementation: + when in doubt, we consult how they do things, unless there are good reasons + not to. There are always some gaps, but we do our best to reconcile them + when possible. diff --git a/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/RECORD b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/RECORD new file mode 100644 index 0000000..761817e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/RECORD @@ -0,0 +1,89 @@ +paramiko-5.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +paramiko-5.0.0.dist-info/METADATA,sha256=lAYbF_PV5_6TXMfTvQG67WVTPkPi_POYJecD02KZmPI,3666 +paramiko-5.0.0.dist-info/RECORD,, +paramiko-5.0.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +paramiko-5.0.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91 +paramiko-5.0.0.dist-info/licenses/LICENSE,sha256=X6Jb9fOV_SbnAcLh3kyn0WKBaYbceRwi-PQiaFetG7I,26436 +paramiko-5.0.0.dist-info/top_level.txt,sha256=R9n-eCc_1kx1DnijF7Glmm-H67k9jUz5rm2YoPL8n54,9 +paramiko/__init__.py,sha256=dw8O3efZzwWP6gefU24IGJKtRTNWPkY1Oi_e3HWEMk4,3450 +paramiko/__pycache__/__init__.cpython-39.pyc,, +paramiko/__pycache__/_winapi.cpython-39.pyc,, +paramiko/__pycache__/agent.cpython-39.pyc,, +paramiko/__pycache__/auth_handler.cpython-39.pyc,, +paramiko/__pycache__/auth_strategy.cpython-39.pyc,, +paramiko/__pycache__/ber.cpython-39.pyc,, +paramiko/__pycache__/buffered_pipe.cpython-39.pyc,, +paramiko/__pycache__/channel.cpython-39.pyc,, +paramiko/__pycache__/client.cpython-39.pyc,, +paramiko/__pycache__/common.cpython-39.pyc,, +paramiko/__pycache__/compress.cpython-39.pyc,, +paramiko/__pycache__/config.cpython-39.pyc,, +paramiko/__pycache__/ecdsakey.cpython-39.pyc,, +paramiko/__pycache__/ed25519key.cpython-39.pyc,, +paramiko/__pycache__/file.cpython-39.pyc,, +paramiko/__pycache__/hostkeys.cpython-39.pyc,, +paramiko/__pycache__/kex_curve25519.cpython-39.pyc,, +paramiko/__pycache__/kex_ecdh_nist.cpython-39.pyc,, +paramiko/__pycache__/kex_gex.cpython-39.pyc,, +paramiko/__pycache__/kex_group14.cpython-39.pyc,, +paramiko/__pycache__/kex_group16.cpython-39.pyc,, +paramiko/__pycache__/message.cpython-39.pyc,, +paramiko/__pycache__/packet.cpython-39.pyc,, +paramiko/__pycache__/pipe.cpython-39.pyc,, +paramiko/__pycache__/pkey.cpython-39.pyc,, +paramiko/__pycache__/primes.cpython-39.pyc,, +paramiko/__pycache__/proxy.cpython-39.pyc,, +paramiko/__pycache__/rsakey.cpython-39.pyc,, +paramiko/__pycache__/server.cpython-39.pyc,, +paramiko/__pycache__/sftp.cpython-39.pyc,, +paramiko/__pycache__/sftp_attr.cpython-39.pyc,, +paramiko/__pycache__/sftp_client.cpython-39.pyc,, +paramiko/__pycache__/sftp_file.cpython-39.pyc,, +paramiko/__pycache__/sftp_handle.cpython-39.pyc,, +paramiko/__pycache__/sftp_server.cpython-39.pyc,, +paramiko/__pycache__/sftp_si.cpython-39.pyc,, +paramiko/__pycache__/ssh_exception.cpython-39.pyc,, +paramiko/__pycache__/transport.cpython-39.pyc,, +paramiko/__pycache__/util.cpython-39.pyc,, +paramiko/__pycache__/win_openssh.cpython-39.pyc,, +paramiko/__pycache__/win_pageant.cpython-39.pyc,, +paramiko/_winapi.py,sha256=e4PyDmHmyLcAkZo4WAX7ah_I6fq4ex7A8FhxOPYAoA8,11204 +paramiko/agent.py,sha256=f2tb3WC9WvEFIqBBmEPEOT5AcgipjCmYWw6_mdd5sLE,15917 +paramiko/auth_handler.py,sha256=_l89V0pqB9PK-A2XyilJLMiaH8JgaBmv75xgX5TIk0s,29568 +paramiko/auth_strategy.py,sha256=Bhv-DVELdQODZweV1-jPx7Na8TK-bHE9AwhoNBsaE9Y,11491 +paramiko/ber.py,sha256=uFb-YokU4Rg2fKjyX8VMAu05STVk37YRgghlNHmdoYo,4369 +paramiko/buffered_pipe.py,sha256=AlkTLHYWbj4W-ZD7ORQZFjEFv7kC7QSvEYypfiHpwxw,7225 +paramiko/channel.py,sha256=MXO-C5dipy8Q0Shh9ceR-CPPiBB-ssT_9oIgwzBhQ_o,49222 +paramiko/client.py,sha256=0uwJStY1rSyNAnSvoCw-kT7xmdYP7z2rHrIYezwDTMc,33314 +paramiko/common.py,sha256=sBJW8KJz_EE8TsT7wLWTPuUiL2nNsLa_cfrTCe9Fyio,7756 +paramiko/compress.py,sha256=RCHTino0cHz1dy1pLbOhFhdWfGl4u50VmBcbT7qBWNc,1282 +paramiko/config.py,sha256=9uIVAypeC5EzimVr1RismlUzu8stiZE4ISgZnogr-XU,27442 +paramiko/ecdsakey.py,sha256=8LDco88dubUs2JZwxqse04EcNWhKrJzeOGTsm8H0Zbo,11340 +paramiko/ed25519key.py,sha256=HoLBQ4u9sPrih_jRSDvzMA0D9f9gcTbvICwoqEpDjJU,7695 +paramiko/file.py,sha256=NgbhUjYgrLh-HQtsdYlPZ3CyvS0jhXqePk45GhHPMSo,19063 +paramiko/hostkeys.py,sha256=-7pkcIanp3rzYhtfng84BN62cPxs4vFMwVtPA_AHLMc,13173 +paramiko/kex_curve25519.py,sha256=voEFDs_zkgEdWOqDakU-5DLYO3qotWcXYiqOCUP4GDo,4436 +paramiko/kex_ecdh_nist.py,sha256=RbHPwv8Gu5iR9LwMf-N0yUjXEQgRKKBLaAT3dacv44Q,5012 +paramiko/kex_gex.py,sha256=A6CrMxcGfhr6VlUuWvFQDBG-EBIY-98MQRFUeNcg0ts,10139 +paramiko/kex_group14.py,sha256=eiOGa6WrwvfN9Z5sx5cC4j5Bg0JJ68oTTYRRMlXq6lY,6079 +paramiko/kex_group16.py,sha256=whjIRs3UI9nZnHYC4jEopuLMhw8OxZwqtjzMHsQ9g7A,2304 +paramiko/message.py,sha256=eiLHvNMolnwp-5JyWQe-DtdbGgdYOrIfZb2-EV2Dqmo,9400 +paramiko/packet.py,sha256=CocYnZ2Vbz7VRo-6BGMhlRWro7FLIISpxTiYeoEsyaM,24314 +paramiko/pipe.py,sha256=cmWwOyMdys62IGLC9lDznwTu11xLg6wB9mV-60lr86A,3902 +paramiko/pkey.py,sha256=5Pq2JN6FgGXOJaj4UzfETNhKivPCFJd1sRFZ7adzbfc,38342 +paramiko/primes.py,sha256=6Uv0fFsTmIJxInMqeNhryw9jrzvgNksKbA7ecBI0g5E,5107 +paramiko/proxy.py,sha256=I5XxN1aDren3Fw1f3SOoQLP4O9O7jeyey9meG6Og0q4,4648 +paramiko/rsakey.py,sha256=WZ5Ic0I6HvtBU-YOlBBV4OTgr4NPg5GbL23EPKq6Mrs,7514 +paramiko/server.py,sha256=nJA2eIcp7F5WNG2Se-X7Ixer1TEv3YLQ9DzYETXmIxQ,27018 +paramiko/sftp.py,sha256=pyZPnR0fv94YopfPDpslloTiYelu5GuM70cXUGOaKHM,6471 +paramiko/sftp_attr.py,sha256=AX-cG_FiPinftQQq8Ndo1Mc_bZz-AhXFQQpac-oV0wg,8258 +paramiko/sftp_client.py,sha256=e_zi6V233tjx3DH9TH7rRDKRO-TCZ_zyOkBw4sSRIjo,35855 +paramiko/sftp_file.py,sha256=NgVfDhxxURhFrEqniIJQgKQ6wlgCTgOVu5GwQczW_hk,21820 +paramiko/sftp_handle.py,sha256=ho-eyiEvhYHt-_VytznNzNeGktfaIsQX5l4bespWZAk,7424 +paramiko/sftp_server.py,sha256=BshiTSnD8PXer8VeJEz7d8aeRGYJrEBEZiAlFakwVlQ,19704 +paramiko/sftp_si.py,sha256=Uf90bFme6Jy6yl7k4jJ28IJboq6KiyPWLjXgP9DR6gk,12544 +paramiko/ssh_exception.py,sha256=AkY1KrDnwUIQm-9w8pYi63Qj9juVKF5tsbohoJVx6rA,7597 +paramiko/transport.py,sha256=74sXi3HUu9b5M3OzNOBAz9qyFATRy85iHHGuV89WcTY,129014 +paramiko/util.py,sha256=apQO4wbXSM8u8IEZhxhnrwYE4axpoBGNvnZxIKGhTIk,9556 +paramiko/win_openssh.py,sha256=DbWJT0hiE6UImAbMqehcGuVLDWIl-2rObe-AhaGuWpk,1918 +paramiko/win_pageant.py,sha256=i5TG472VzJKVnK08oxM4hK_qb9IzL_Fo96B8ouaxXHo,4177 diff --git a/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/REQUESTED b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/WHEEL b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/WHEEL new file mode 100644 index 0000000..14a883f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/licenses/LICENSE b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..d12bef0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/licenses/LICENSE @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/top_level.txt b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/top_level.txt new file mode 100644 index 0000000..8608c1b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko-5.0.0.dist-info/top_level.txt @@ -0,0 +1 @@ +paramiko diff --git a/.venv/lib/python3.9/site-packages/paramiko/__init__.py b/.venv/lib/python3.9/site-packages/paramiko/__init__.py new file mode 100644 index 0000000..ada9dc1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/__init__.py @@ -0,0 +1,119 @@ +# Copyright (C) 2003-2011 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from importlib import metadata + +__version__ = metadata.version("paramiko") + +# flake8: noqa +from paramiko.transport import ( + SecurityOptions, + ServiceRequestingTransport, + Transport, +) +from paramiko.client import ( + AutoAddPolicy, + MissingHostKeyPolicy, + RejectPolicy, + SSHClient, + WarningPolicy, +) +from paramiko.auth_handler import AuthHandler +from paramiko.auth_strategy import ( + AuthFailure, + AuthStrategy, + AuthResult, + AuthSource, + InMemoryPrivateKey, + NoneAuth, + OnDiskPrivateKey, + Password, + PrivateKey, + SourceResult, +) +from paramiko.channel import ( + Channel, + ChannelFile, + ChannelStderrFile, + ChannelStdinFile, +) +from paramiko.ssh_exception import ( + AuthenticationException, + BadAuthenticationType, + BadHostKeyException, + ChannelException, + ConfigParseError, + CouldNotCanonicalize, + IncompatiblePeer, + MessageOrderError, + PasswordRequiredException, + ProxyCommandFailure, + SSHException, +) +from paramiko.server import ServerInterface, SubsystemHandler, InteractiveQuery +from paramiko.rsakey import RSAKey +from paramiko.ecdsakey import ECDSAKey +from paramiko.ed25519key import Ed25519Key +from paramiko.sftp import SFTPError, BaseSFTP +from paramiko.sftp_client import SFTP, SFTPClient +from paramiko.sftp_server import SFTPServer +from paramiko.sftp_attr import SFTPAttributes +from paramiko.sftp_handle import SFTPHandle +from paramiko.sftp_si import SFTPServerInterface +from paramiko.sftp_file import SFTPFile +from paramiko.message import Message +from paramiko.packet import Packetizer +from paramiko.file import BufferedFile +from paramiko.agent import Agent, AgentKey +from paramiko.pkey import PKey, PublicBlob, UnknownKeyType +from paramiko.hostkeys import HostKeys +from paramiko.config import SSHConfig, SSHConfigDict +from paramiko.proxy import ProxyCommand + +from paramiko.common import ( + AUTH_SUCCESSFUL, + AUTH_PARTIALLY_SUCCESSFUL, + AUTH_FAILED, + OPEN_SUCCEEDED, + OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED, + OPEN_FAILED_CONNECT_FAILED, + OPEN_FAILED_UNKNOWN_CHANNEL_TYPE, + OPEN_FAILED_RESOURCE_SHORTAGE, +) + +from paramiko.sftp import ( + SFTP_OK, + SFTP_EOF, + SFTP_NO_SUCH_FILE, + SFTP_PERMISSION_DENIED, + SFTP_FAILURE, + SFTP_BAD_MESSAGE, + SFTP_NO_CONNECTION, + SFTP_CONNECTION_LOST, + SFTP_OP_UNSUPPORTED, +) + +from paramiko.common import io_sleep + + +# TODO: I guess a real plugin system might be nice for future expansion... +key_classes = [RSAKey, Ed25519Key, ECDSAKey] + + +__author__ = "Jeff Forcier " +__license__ = "GNU Lesser General Public License (LGPL)" diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..abe5eb05cd0dd2c8bd51b0b624ac822090568895 GIT binary patch literal 3227 zcmZuz*;?C561Lg#0%i|nBRkH5vvIO7#unJY*otL`Nu5PUwi*z0NuHKW;ylMZz|7pu zE9rKw<`w2@x>^Rqe1VUjs`{&|OI6(^S?P2lCV&3O~&NFHrTU+VL2mQI{Ryv`GMmeG=$~)9Zv+|??@5Xpwu6>S#Imfc;3p6KbqIgze1i*Taqxs3e7OwBDi z{_%NEw|xJbC+skB&YFs%Me(yE;dtTDa$Uy5WM9~FI16X`iV@gM2xZC)OpZ&IY%*M; zt>xo7ZHua_eQz^W=5S%tvM+LtUWbKq(%diL!1pxpd5h=nI|sTYe5MKEiEzH)b-7*j zf`a9GuH240KUkP4yKN6Ua_<&rI%6W7*=4?O9k7~^c}Gi^Ps>0ZcLcKs`^@RW``#;f zh_Wwd&5%tzbBRunIANmf22AW*vJV-f+wyyUz_8y=%0rS?J8(|e=PnaH+3&Hsk(V8! zgQ*pYr*cBGpKfeCc}2`nIB9G(^eD@TP0MGbO7jT)4-o7`)KQ%(2S^}e~%PK~C$`hE7*bIN<6S{kP5iYT$@v;*4i zd=Ih{;dH*)D49mHP|yrxt62$`l|j$f8|8eZ^7TBGRMb|!T+xc*R87~a5vvuYeoyHU zY37T&$OsOv)qu5E9V^xwQ5x>G|Ya`)$?4lx>K#~Rn0;vFP$o8 zLYHKW$77c|o-)#{D>ww9d?$EoOMZ6~U}snxc^8D*;0DBF^`CDRWVl}Xp? zyJf>D*Q#bwtCnSQDP^Z@nsrScJ&LuNFPgiuIx>DZdm5^rxLg{}E8D;5ym{@&#B(;w%C+G;TbI5{qPaM4ev9?`p zu2$q7lOEg5m4}|MM#o^aB8RH$v(>fAwqD6rvz>6#K^m*vX$kqpkA>s%@cMF0gh|uv zi>3*)r_*{}4!~#-3;I+LBLt%oVEW9Zt){COBWj#rf?$$>K0aXK%+r#S$&{mw=B-E) zw|J5B`}0<$Xtn%ciHRwKX@U&F48bhH9Kk%nf&|E%MQTUGQ!Emg4+_#6+sqXmQUOv>Mp^(i@flyW7ZREWSu!n zm9_22o+bO-z#dH`T5+G4^cmyt%jQ3jHt~>%`3r>EZ^a|x*MGwIv&<1S=rP4KEjhWw zz{;0>{Z5+BNM1L@$4w`3pe+*SimyrU)Wi5hGrZ`b#p`0)S! zh@LAxl7F6Hlb}FQB+v-92(}4I1Z9Fx1Um#3f?a|tL5)Bs_$&dEGE3P&`F+6rFkzZ> zSv+BybTj2hr+aLg|B8t{T0!t%CwJ%}%Q>B6-|u$lTIX7hfB4NhVl2pYJC5nN-z;I9 zR8O-dUuJf0{e-zEIeGnaot}*EK3jj4^PPY_qE5&f`?=GK=S;cW2~2anBfn|hqGxwG zdr!B{|0p3flo*~Ly)vGPKTcg5d!C+;r_^sIp6N@GPMC=kEA2yT$%m=bNMd*-{y)|i B-8cXM literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/_winapi.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/_winapi.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ebb8075e68dd154281e80edc149a4ef65ca5ceb GIT binary patch literal 9652 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/auth_handler.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/auth_handler.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d973ed74be22d1a92a99e654137ab5794cf97d27 GIT binary patch literal 17886 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 XFRm@Gy}b7L+7oMEUu~?l)-L`JJb_-+ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/ber.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/ber.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22982bd9093ab104e4f64ed1d43caff58f1485d9 GIT binary patch literal 3360 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/channel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/channel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f124ecef70e546f66a0c777d3cedc5f0cbce574c GIT binary patch literal 44351 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%0AC;*?ZY7doR0{b#L2uvs-yvN_XVNl$@uwi^K?g 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/ecdsakey.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/ecdsakey.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..377be724a9e623a27ca0ca267e7b6fc2c1d859ee GIT binary patch literal 9459 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/ed25519key.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/ed25519key.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..236f2af18985e591c59feb1a1f27b3dc5587b834 GIT binary patch literal 5090 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/file.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/file.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e3a9e45fb881fa26a4090a93a43bb18ed2868ee GIT binary patch literal 13990 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_ecdh_nist.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_ecdh_nist.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f4abd755754a24131d7c08f4b29a4ae42c886ea5 GIT binary patch literal 4431 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 Mz>% literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_group16.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/kex_group16.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4428661d38804491eb630645e2a16301d5251356 GIT binary patch literal 1268 zcmYjReM}Q)7{6<;rL@pN1*zc2SrDn%FDRWISiULBM}{4Qb;awocWsYe?~c1(OAETp z55mkgbXzcUOXeKehLL~R;`m2!36t^9mPPr)x-A%&WhRUB4>JucZf~hZp3C#x^E~g} z^Lu`8p7+IbbCnQ~OCK5sp==1cmku@y0)hshf*BYBazg}6NN6}BaZBK|FQugs#Erm^ z6Cw~ob_yb7Byv*fmJxCnq|ZuDC|yyUA#k2RU9NUCOeRor*dM}~Ac-A%xdhs(_c*K@K~4R^%*J zS9@bsjm@9_WV65^XaFjpz>ts|2Kyi(V7HWzxDg`F75JpwokbvkvusmE8>k3Sk~@eD zkx+(+A-I8OGh~{eH2~qiH#5(t+ipNzd~vetrMJ48`1xb3c5cL9+9`gs#Z~iNpCg-s zE=V<=yxLz&IP9n@E~E$m*kWk4uX!~QRUu7X?78JF?LL}&-T)5uPHF`U;l zC3$=69Fec9Kk(FWr`gvx>5?8RQ#X2gYy;l$><9g#>}IW)KUyShzoybwI?B%Jn`6~` zud8j_kk;GsN7$lCD4M}rl5@h3<~@h6>#LG;J3lag+!H>w;{P4*QaL=IM3%f4!@b+Z zRwetbCBNX8V0Za>|Kq{4`@X7vgyvi4v^U+S`!DMZPQDOT{^?&d>jo})+r18N$vovWUx8q+L~E@|c!WxEDCj+ftZFUXe;t{bGutDdJtS85h47mVZC*DUoW zUu;nIevwAK(l=B7#8sli_&Wtx8g6T+TnSqn`Iteh+lAc~XEd{RpL3d(!O_m23UmiF z?V7HWC967%f6;oX=d@zw_}S6tlL15bC13!%^@@}N!x%h5VpvLvVG))P>9n7NVM8KL zKU+c4?-cxM3U>18|J>OjTnJ$}9b~5=J_lqr%o=S9u@TZlabZCaIgaI{CLbk);`ks* zMol6|VH6Vw=NAi50L6z3Bw;efNG4{YDW8c;L_;i7ZM2&NDoPqS+#kk+q+sH39*1#&;BNAjoH}c(jc`6IT2-XkCWTm?W2$|jsp4T(JsAuJ+ gX%gv*FX&{vT#!pC>M}dy*a9L!4h$m8k>p7K2gm%8I{*Lx literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/message.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/message.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46d92b73774c04e478a1d3991875e764b6cf6fa0 GIT binary patch literal 9470 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/packet.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/packet.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..584c7f8b93eab03bd3fca5c915b451facdb5745b GIT binary patch literal 15578 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/pipe.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/pipe.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12956663e5cf2ad0066df9f5bfe5bd95dabbfca1 GIT binary patch literal 4299 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/primes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/primes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af388f3e4c3ab979701f961450d004c2ff89b706 GIT binary patch literal 2766 zcmZuzOK)4p6`q;bI#1%d7krq=Pyk;iGwFZ?nX1+E@)nQTVbZ(9mck0@qwj6AGeO^%p7qZCR$!jrdNP>#`gb;HeHrYs);kkuaT)$u z?6MuU^s#S9BNt*Bv_Z>eOy4_hj_6IGoIi~L~NoZ4w!{dn(#p~`<9ulj*F? zXZ7&PnaydpmFl`E($(F6h@;Id2qtduEq=4t=P|#7R?K~_0ZKNekDG-I@)*_JhfoY? zWFt6j?12N$QE~50xDcjhPNh+AUAWD)-!Gb(NS?V^wJ|F|)}uJ5h<5 zkEifI&DvWXxrtP2)3ZLLXT1rLvzDdokR+amYxDhq=zKD3*OR#!!x2gnC5$R2&Veg& z6N|ezg|7gZ^dap>6ksCci(4BH-&;=^)4A(H;ecT1?(r`)T7J$h*yqtwEWM?_43^=x0~{RTtq<)(2hag@2pvL4&=GVj`I%V8;E^1KbeG1BZv zoO@UmPQX0`5xl*PWHb}{Ybmg!e;%|kSlMfPZ8-Dvx1?pf!(4m4x(7an7kp!n9(ImS zxc)oY^eAe3kFNAC!+B8~znVMf?_ZJ+wBsUKPdjQ#v=)i1l}W1FCM9T*fCl*({63!N zT9t$k$6FoH+`D--uC)f5ic`!XN-3FulgWz7$sd=4xC=~!K-hVCW%V|ebz#;ts*;ZQ zy5~j^8q3V;x6v8&^$v~sh?A=8SqhOhE1NC`5L0{Fs4lP=GEh2K1_;R)n0Tlvr88UW zE^>&Sn@$`Q-$%}k6ofU1tt*QB3@4dSAy_Z`x8Se+L=29ue*GwXAw>9J;f4QsS%Z*= zFMQ7@CI@|fi-&y6_4~Zf7k6I6;%kS#hDb6$`N1LbPiU-|0c0Twor$kLUy4@zoc-Y! zORx3L#f6L9gihd1m~Fz{E@C|J^XPbcaie93>K-BMGj_bq8U22b7S;QxpE2qCNE&BI zY}K0&n9=v$9GV3*`e0(P_{0&I;>JUrp zkR0~CYkeus_?O6{$bvq6@}nhK*os-8--Y&O+-dOK?1S&*6O1o|<9DxmU%FL^Tg9>J zi>p?l~b}5$n`_ABtx2igE zK+lux1U|_Q3U&Dc1=%w+j;&Yjn5k2v_wag6ws2`_5U-r!m3cJ^8?7cvcV3x28^x4$ z!8tSX59?ZX{6Jr)Rg`5ng7mdRW!F4w@yXnUV4Sib7z1`CJainp4Ohj1W16_h7dx9y z+t_0tu>^siaFM26KV9uj?X5IDo@d3?mncnTJx)`7o9;un(ho?yPvX@bU5m1brtJI^ zR72T;$c)SE#c#NAM59ME=NiN)UMG7Ox<+rTyL;ohEbD6ZH)Z?fD3WKY)_>ey8P@Il c|1Q$SkDRyEPw8)g*@E!>SZu*yTVA~VKi-P0-~a#s literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/proxy.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/proxy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9bf0880540d2ab77bd490ba48a8d9819a03c2f03 GIT binary patch literal 3569 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/rsakey.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/rsakey.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ebd12b2320950eb55bdabbfe3c18a8bcba52de6 GIT binary patch literal 5956 zcmbVQ&2!tv6~_V~2!ftJ0ox=489jnr|O*jxgn2 zgZdY>_cxg?kmIp=a_S%ZQ?f0Xa^$=(&RhF7JyK&G7y;fCCE7!vvuNCmM zU^DdMp77I!55lO|?RG@$^Oe?SM+9-Rja{?cZ+N{{>~47VZ9nALY&5;7=|^cf@6*R~_BYZ5gAI$2-rpFLlS{FY_EX?lGs}TRhLrd&(|zihhX~xFy?VzvR#O zvs;zpAkvqNmw5S}jx}>wGs9=)nt5K~bN3YI2%qOi@Ls^&0zWF}j`Br*3}cIYi66)N z7(c;J;=RPH{1iWplaKQ={5g!A@K5qrxXsVrV}O5(KhIyl=xKhAe+Ta~{6+o}-p_Fz zEc$M0fJ30kz_DyRxBag0BR`BKE$vRj_CkBaL;G$ss5k98MmBuA7x~2&=N zTWa-AduqdL7cWh1K=05EtMxpXHh!p`LwOq|`T`YK62;AGmKa>=F>x+Y_SD2k^nFqk zWlc#mIsO*LwM3g5haB`2v7V@Mem&L`b(alUl9PR&j|$N zY<4X zbg4FmQfCBV^iW$vk)pVWMhsEhVteX7Oa%$brh1ITKwA|vm=&|Az;eA6L~&|dTY zC04hzT^vg!T9f)AUc%%9J+*=;2&32wA&?|4nKYJ38Z!aE0hz1P1j)`ceWnz^!_*kb zF=eKvpN-+m*mwZL6OxJgK6DI^HXgQFu7AKZT60>q37iC;%2R(2JbEw)ESO5JCS%#wz-zLh)B zGe*5UT`9YcDQ!e*!Ns~!EZ}CvF@SUmG$55L>F1mQx5rUv)x9qu1S?KJPw1yNyPCM)^`qtVn;7){7b3Z7v^GO?w~T5D)yGU};G z)>4{NV(VjiJp&i0b&E&+2`=hmT(YUBaG7W`Nej-Ou#icP9d?d*6HAAaGuXtUjdA^7 z4tWJ|4m%{f`9=^&zkJ3?H22g=6Vj4(oL0dRNd=kf!_Py=0<*Ol?jCa9c&<+H#}BzI zqT1Ui(w0h>uZS5U<1k~Uny^^ggW_W>m#D{~Q=Hw`hFWYuyYxig%O~od$yKiHXF5hB zn$#!?y>v3GWN6cZHx6_MM-TP*6?Cjz#LS5rm%T3vw8#hCnAZvIto+PF$fKBy!dK6oV)_a)=M^ zL?klD@gqziYzi8UC%HD0L6v;N#@}FJ^gJqJn}wi-jH#)cY##juRmI4{BU8iJW7lyI zLS6c9f`ErGBxR61JcULqEo`F1D#RVJ?N9~hAmaBy#j5U|1Hoj>k6glj*AIPxh|~7$ z(7$VsJl;5+sM+>%~n9ed<}( zg3+2a*>_pSc{ZX_o9xPEJM*xV+fd)eR(lMaONddk(`#`gIa&HbR~Z56iq0nTqsS#> zFWVo4lm$ILDGP6K0&e?hEmM$BC-(+glcfR4UR6UFkj3f#XWdSSD`eu5A1Ap?a=)s} z7{^%{qd6VQ%kWy1!5Rt{=|)cZ0GgQqJ)!H6=SjUB5EV=qim~UW3U)gV1cAG*2cc)BjwIlFmHOC zi;afX|2cyhWy)YF&c|kg&keimbM_G#J&gZCzw=f0z5oLlwj|^NApZ$$v;bG#S3fa^ zxuHHZhWVj6EX2jFQlcZ>MR+wt`npw4%%p(S*+@*TFDZ)(T7^+7pIAJ1KfgCa*zL2S z7FvKi3qgT+#Fa$D{<&Q>`s;hj=MWmC!SgZ=HpnkZ_TRv@9V3vBm_z3wnPa4qtedhs zDdUdL+ue&)-?^CT!JT$j#-7z9&MEiS?du<|tY39+T>aR6=jQGASJvH|x39l@eRbu> zg6z4oAhTM;e$!GZwJEhe^jbatDn*KEVI7&aYzmS%Q9=bD8Vl#-p=aE>x{6OA5cnP} z&a0Q)I+ph8vD*tN@sx@zD9v%^AP2XyjAfKSi)9*LbT>QnnTwN7xQ&izd$AkvEQ_Gr zA+rg^$8N(hyW82iOxGu&w^*a)>s0-Os@qh_X!8lBB6>M85m;)hU0cDYBKgKQpUm@~rI}*Ah0g|UAK5(@FVct!!`H=UioTGs zCpof=;F4@a-R$;sOYsI(m#LzlSA3tUx2PhO6Yrr)OGq=}RYpg=Pvc~M1Sz$&0aMOc zQq-mivc)f;MAuN6OwZ}~Rv>@>HVQK6$U={=t+Oh#EEG*;izt?1=1qh8ruN$&(F^WYe_mP?>$#59eQ}eA%rhZ5{XGAKX>m{{<=%>OeY6_8-VMcy9mz literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/server.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/server.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc80d160db607bbe839aea047fabfc45f60f1e4e GIT binary patch literal 28331 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 XhR-XN>ez|$^VL&-UgBTp)NB6>dJR^- literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a71b1270bcca1c0114de3c60675ef38ac0724a8b GIT binary patch literal 4693 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_attr.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_attr.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b49806282ab43ee870cd51d4201efefabd3341f GIT binary patch literal 5749 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_client.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_client.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f032c80cc84c265d8c45f8c38779f3de3e805069 GIT binary patch literal 31048 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�D4L01 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_handle.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_handle.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53faa1a12c6d2d28dedec053b3cc0515a5c48e14 GIT binary patch literal 6822 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_server.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_server.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..554090026f492f110511bd89b60e84b71c268ca3 GIT binary patch literal 12152 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 Q&s<{YtN5zttIF;F1;v#|9RL6T literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_si.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/sftp_si.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b561eb9f8d4b35dc1a4ea41443a606db7e20457e GIT binary patch literal 12911 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/ssh_exception.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/ssh_exception.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0bf72a7ef0a84998e7e9e2000619a05c9d738489 GIT binary patch literal 8172 zcmbtZ&2JmW72hS76fH|O{S`;Colev=mKvFg6xTtN)UczvO%PZyY&Qo10lC^8k}EBD znVF?NXsMT^$gwEUd#zpy1MQ{%MNS2JWDf<}lP|sWP#{2?{@$BilKP+xH*4>TGduhC z&70r6_j_;M$;ojG$M1eqS^wh|%lZd3h7SjgTR8PUaq%tR4y{$|XO^Gy^IuwiUfN&e zS954PegW-*%%Pn}yXcRhJtp&LJ7|~u6KJ2{b^+~i|0LQcxm`qi!k{Ehdo}Op z@KnAx@!-LSceXv*PJ%e3AAJUsIW6jQ@gB;+_|_ z=F~kXyA><{zWlrsU^)YP-hY-oMLT^?1R6Mn8GN!*CkkV4L%6_ju<0gJY)Akc_(}0P zdOjyHmmdzz$5GUCWIhC{z1?@+-b}1 z*Uy^Y5y&KXM9hT2hU`y$mge5UwwM!ZorI+U076TJ<;1<{Y9ib)jJJZQA(Ez>2ogd- zNnsX8;f@(0+MTs9@UFpJa|BBkCb!*I8>V{(Ocr>cM<~e-`dz@ej8hXr66>+OYwg;* zx&6FNf30e6H-~H9w;ote?3G!Eu|u9Dh=K&(f4X4U27exujls3 zyXIE97a#4tXN*VCBh{9~qu10P6fDAmEjM8m6+QpNR%h_%ke)rbMV+W>^$zYCU2VrM zecQb?7e@?=brc8aX5Xo_l#F7zTrQ&$)0(s#7x7jN1L+*rh^=_XuY$;p?-6!m&I z4;=p&(C@j5oY6tBckePtZbt|(iByprioRb4ELFTkckoLJ4^Cdhbs(JO9CDjx4|}9p zcF^zsN|AHVz_y>uphh55lejgTXP6lik+EiTW>wDO_mH{RQe?;bIN7~f_5=WQ?BqrR zi1q;kh|HS-XrBT)!1HD*?9dF42UJd-g9x*}=jqpAX<1iV?oV;{A>;r;qqH>;Qe>+k zIV_QdUBr!#NmvRI$H|o(MZHHL(kCD^!+|fP8TQWqJaQ4a9>zmhkSkb%L&zOWWuU^# z5ce6WK&xA_6}6ANypK&e%BN@^aISA{h?i%Ra-h-_973iP!MI zNg`Wq_{>@x ze!q)fHIO$Phaul{NVA@k$n6B{!2akJ*iK!d%U~V)@LxxN3MuxWQ->`$8vFe%Im&rn zJ}hg7T<4r|pwNy1KhSOz>SI!o{ej(m`LIZ+m-@@%Vbrm|e738cf@n9h0J+LiK~dj# z2I4t5_YY&8d@OhR*mGaOUSc3Ugcoe$E)$nV0J=*Qogf2ho`rTl@I@38RZP65*rLe3 zCGlTLcvi5!1OfjbFkuK5OMKjblU_nCa<>P?4+Huhv=m4Jsvrh~=UBNmQU-9(BbcT% zBi#=Cw9yFR`>2TQ)^qm(;VC=lHwC?Aocax1GM5idk>7VRw{IB6ZXP_t8H9iWbAGcQ zN|_0Id8pQ#$h09vK}mRn5Pw-6OAVj|TF32_U!b4;rDd1FHNZA5AG65EZx=#ue>(I6 z-`=x#?E&9-oZlzz;n3gxya^w-2tbD0QVL-R-_=KZSA`#g`S-E0L~AGL#$1XFEEhFr z3ucSa{M7ewSsic4gp;fr*Lj|4aO~wG+wa zVdpZ&4@n#Nd?fvrrju-e?KWO2D(XA3-TFa?T+2bf58LE><&PpSZnZ%j5q|DTsk$2s z=-Wt}wA)ZpwkUIQRSc@3WCIB%(PI}5K5WDa`Be+uCKurZ4QL>~g6Ppe7QwQPCQOT! zclplB=mcXL`u+-MmM~2y>Nzq$!ow{ZCU7}8zhmRtxqB+!-dT=YEjRLiYEt>`-&q;* zCDX&Vr!k>UY)da%5+porh%ktdqmmm!Leh|t zR4_m19B9LKrUYT=Tk0CfA@M7Wq%>5zZG=fcw65Y7dnJ@2ws-pPi91QVlcY2-5Bp>X z{eFR*<7jLgOQ+H+uqIi2d>wMt59o4CeEdE7hvVbrVN<6oar~Yq43isMCJCcL7;Z zL}A;GAxcu8hx5RZPg{BhKZarbl~uQyvXusu?JHPkm1tYBcX1{D)C~iFIR<${V2dMt zhYC>cH;~9EzuO6u0BI^vk`2kYn>I1A<@ypEoMI+OTPp|ys*ZF#kIM!r#ve9^v1*Da zVoSMgEn3+drcpQvr%`0^r3!Zl;Y06a;OIHl2^lNJ)vacL_^f0aDzmcB&_gN7MD^wa z>AA?|3H7)dVenF>azhTi(E-Ioyv6naC8am4^@F#jK+ex_CMsrv3iA9xod~z0*r-<1 zD3Hjc!lP?2!y4C%=0rk z;z-tNGys;?aq1Ex;4|`Ia%LK^GQTh-FD(QzmK9OT916HuAMT_x)fl3I-w*H92vR{=^UX;oFoll9;uemEAW@C4jIrz_x+Vqqp`1J}o?2z#k(G=zSE`UY!}fPWJHnsSuu2 z*nJU(-lb9o2H_F<8k9x(<1(%1uGFLnAjVtPT;dMK6*D#__6zCo=T-U_pPddr9 zxPA?4!a~SU%*WD{45ge?Nl&7BgHJQY_%z#T^5viw8*+OZU*-JK>Ezp$>(2w{dzjL{ zhbCE6)H8dAydn|2-ibRI9Wpf!`e4W3w7A~S6?ED`E1$2dAVFJpF4Z4JYGKaKXSeKBme*a literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/transport.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/transport.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9eb49c81e5d828fa8175d34890e20486355513bb GIT binary patch literal 87645 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

    %kpdkP@S2YVXwW`HaEj9;1)<==LYtt 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/util.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/util.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f840c279685cb030cf3f1537c55e4a14c34e189 GIT binary patch literal 8875 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 Gss9F{RW|7W literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/win_openssh.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/win_openssh.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c34ef269b90e67e8a115fcb2bf0bf86ce1979e72 GIT binary patch literal 1589 zcmbVML2nyH6n-x#cJDSLVv8XKtK$Z(Wz9X@$f{@6GJIH}Adu-ZvA^&NcwY@4tjw zPip{w(#P51;m2(h6QYtJSqdFi&b-4V?|9Oa{xNj?uR&I1^%!LJh<7TIwV_#ij%T1X zobPtSZjltKn-?lGrhk(pexfqlBai7|xTv5|PV*Tm3tQ}jTW`#|{1ASIXK><=akiD8 zV3SEE`Eg+3q&k8zy9YN57{#qu@e}>fIkEVJ6u8= zPFbtTTqVu-m2Ps!!v)8(Q|A0E-d3mZcN+EcZ51WOz?j{l$hD0&64T$0x0JHcZjp#2 z+mE#rn@Os~Mr@Rf!abGkMQO4T6$iGTXSc#HBa>Klvxs{Ggup~atmExukVpGTCSCv( z76-1rhybY{3cd6pR{a+W46pa%OxQRb2%C!%z;H3mdvR)(!k6yNn&Y`~ei7TgtC%89 ztgAn`|6oP5mcLukgs$`A?7-F1#8{c=ChPb(2_2wGS4q{$>75JN2tPv(;J?iRrZ3~_ zTnouWh~GvrH&CgPE=Uz>7W_+>30aURH5uT3Ro1a}4R>V~8PaZlvrOc;n`fEo*(A>{ zbd*SYmvVfMYB-N1V3s3YJQV*9jQI#eWgT`pKG^EPw+s#$gW=qWZPg?jc>41nVI3YJ zp%2+pmd#A&1z5lnHaMwEK1Tl?w3mc>eg(5U`R!L4e|*(!=o$QWJ~d0fMa$}{Si85r z=7Lpm=YDH>?UAbpBD|}uwpX;ywW}ztv)uVM*;d$;RH*_f<{Oo6I;JMbm++U!2Lh>- zSRt-sbaM$6aL(r0C9lEea5cR4dYr=PxgIrPI;K~k1dM_aTqD@xBR1x3&}46Vlb@>W zYhhj4#P~TzYA4Uf{w?TwbX{e}c!qK$#Zt{u=-(1GVsyVw34% z5yCZu*v{oHJ{rQ!2(hyprxT05h5_|Qq=*S+jx%{*5=Os^){jvPZ3Qft4ZOfBcbipL k%S}j+LD^w_l>!lK%iCM}ye^~*7AG|=y>})q_r0M05C2?d6951J literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/__pycache__/win_pageant.cpython-39.pyc b/.venv/lib/python3.9/site-packages/paramiko/__pycache__/win_pageant.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58dfa06854910b83950fd1427921fdb89e69fcfc GIT binary patch literal 3518 zcmZuzOK%&=5$>KD4u{mkk}TV6XAyJ^>|&X@-G~``8Y7R2cP;o5Ker;DYp{pQ`1_$ZCb~7Ok4A7(AtTc*8Ms~ zUMKO=hTkxKD{1-*yvE&RFiKU7SqK7-Xv zvqI*3GECdemtYOD-J)gVNXR_sj5F=2$f{3VPd z_}+TZ$eZvfxB;TcfDWt^G%TH>`qs9p!~9IamQ%Ws9u-2BE-IKLr8`tY-n`*2dF7^53M>&r{Kfi+!brMUhM0>Bg#m7!HKcona9NadsF=9`xcw1aNr4JM9CJ z9dweo+bKr6pJzAQcRMQ9;%X5_`(O>#DMBzsyq|YKji9K^*DglorC?9!`2^Ylj2PtI zfr#{{ct{Hfp>h%EDNEp*u>>lwiKfTon1T)H(Lb6Dp3T09_LvKztJ4;uPZ35>C(Jwx|u%4#sw{P9OcKzB%H|`w#{6Mwu z{N$q>ciW*Vo*A*emkrZ^hdL}9NCOog3Ewl_B#*XR&C&~kEKEfZl+7SWb3O!*4a&tJ z_;wg3vz2-f@H~R)#@7!YZ9fPe?>>cwK_n$s`a=-MV;2@8AP=MTCEE2AQ z_g##{!2AV#3jNZfj_cAU_5Nq(BaHd^gV)%A&p7daprgq#nb0v+%N!h;TbiC&fNS=j zoWEETOWP;T*wQs<-6@&c6MJm`;ct|T?UVYLOerPWJMp-q8)NI3>gEM9wIY3z<`$M&SImj`DCD<`XCs@L@L$=PvzN}*lHcIr&LvBzusj{GM`KgVk* z9eU@vJEfC`zHssZua6s3i`OoaNpsx5wQ+MwFOa7IUz|F`A;&f)J1~Ad!c$!*>fhH0 zHSae-ajxYZh2~B-Ut=x!kHK1m*mVW8|*IeR$gLQ99f@#)w*bcu5>}X2zl8+h>AJ5 zwX6Y)-`FyL*b0ksHQ0FY#rAHnwejmS7|wnG^B+LvAVTT+Ns*}o&I6Q zeGhDC0?4lwBk21J5tuos)b!83F$hA=B`D#qyg6wC(vG+)JyHV^H?#?nwn9Io z^2e~_6z-vw@4=_80eKtuxDEAy!yR6O7OD)n#*AM*~(>1JdjchFtfvc9QB!TRseeNOqoB6(-7REDj@_Ul^9aS3^79n z1;;Z6C>ADHd7g%G#uWTOX!c2{7~1`qaM{U4K|CS!U`K?lfoJ49mYYgxumB>ETh(JM*^{qtQ-K)sAlV0o^^`O{h; z%Uc>Cu;90e`|bf5lL4H6NTfmcYBZ+5vj9OY9F0LU9HE`eDur71v&wGcs<;iJKqPvNzw~N$sN=+dG}P%; zLXek$L*7Dy`9LxxA0qh?60B9L@@p}aQ6Hc_(nBe*d>BGSar>4$4;=I1%^PK7$6zq< z7}T$P(j4+Vr!T$FszT;-G@QaCApBMDA^@UiE!qxsY{&K-uem}!%eB{*ypR76;w^%B literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/paramiko/_winapi.py b/.venv/lib/python3.9/site-packages/paramiko/_winapi.py new file mode 100644 index 0000000..4295457 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/_winapi.py @@ -0,0 +1,413 @@ +""" +Windows API functions implemented as ctypes functions and classes as found +in jaraco.windows (3.4.1). + +If you encounter issues with this module, please consider reporting the issues +in jaraco.windows and asking the author to port the fixes back here. +""" + +import builtins +import ctypes.wintypes + +from paramiko.util import u + + +###################### +# jaraco.windows.error + + +def format_system_message(errno): + """ + Call FormatMessage with a system error number to retrieve + the descriptive error message. + """ + # first some flags used by FormatMessageW + ALLOCATE_BUFFER = 0x100 + FROM_SYSTEM = 0x1000 + + # Let FormatMessageW allocate the buffer (we'll free it below) + # Also, let it know we want a system error message. + flags = ALLOCATE_BUFFER | FROM_SYSTEM + source = None + message_id = errno + language_id = 0 + result_buffer = ctypes.wintypes.LPWSTR() + buffer_size = 0 + arguments = None + bytes = ctypes.windll.kernel32.FormatMessageW( + flags, + source, + message_id, + language_id, + ctypes.byref(result_buffer), + buffer_size, + arguments, + ) + # note the following will cause an infinite loop if GetLastError + # repeatedly returns an error that cannot be formatted, although + # this should not happen. + handle_nonzero_success(bytes) + message = result_buffer.value + ctypes.windll.kernel32.LocalFree(result_buffer) + return message + + +class WindowsError(builtins.WindowsError): + """more info about errors at + http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx""" + + def __init__(self, value=None): + if value is None: + value = ctypes.windll.kernel32.GetLastError() + strerror = format_system_message(value) + args = 0, strerror, None, value + super().__init__(*args) + + @property + def message(self): + return self.strerror + + @property + def code(self): + return self.winerror + + def __str__(self): + return self.message + + def __repr__(self): + return "{self.__class__.__name__}({self.winerror})".format(**vars()) + + +def handle_nonzero_success(result): + if result == 0: + raise WindowsError() + + +########################### +# jaraco.windows.api.memory + +GMEM_MOVEABLE = 0x2 + +GlobalAlloc = ctypes.windll.kernel32.GlobalAlloc +GlobalAlloc.argtypes = ctypes.wintypes.UINT, ctypes.c_size_t +GlobalAlloc.restype = ctypes.wintypes.HANDLE + +GlobalLock = ctypes.windll.kernel32.GlobalLock +GlobalLock.argtypes = (ctypes.wintypes.HGLOBAL,) +GlobalLock.restype = ctypes.wintypes.LPVOID + +GlobalUnlock = ctypes.windll.kernel32.GlobalUnlock +GlobalUnlock.argtypes = (ctypes.wintypes.HGLOBAL,) +GlobalUnlock.restype = ctypes.wintypes.BOOL + +GlobalSize = ctypes.windll.kernel32.GlobalSize +GlobalSize.argtypes = (ctypes.wintypes.HGLOBAL,) +GlobalSize.restype = ctypes.c_size_t + +CreateFileMapping = ctypes.windll.kernel32.CreateFileMappingW +CreateFileMapping.argtypes = [ + ctypes.wintypes.HANDLE, + ctypes.c_void_p, + ctypes.wintypes.DWORD, + ctypes.wintypes.DWORD, + ctypes.wintypes.DWORD, + ctypes.wintypes.LPWSTR, +] +CreateFileMapping.restype = ctypes.wintypes.HANDLE + +MapViewOfFile = ctypes.windll.kernel32.MapViewOfFile +MapViewOfFile.restype = ctypes.wintypes.HANDLE + +UnmapViewOfFile = ctypes.windll.kernel32.UnmapViewOfFile +UnmapViewOfFile.argtypes = (ctypes.wintypes.HANDLE,) + +RtlMoveMemory = ctypes.windll.kernel32.RtlMoveMemory +RtlMoveMemory.argtypes = (ctypes.c_void_p, ctypes.c_void_p, ctypes.c_size_t) + +ctypes.windll.kernel32.LocalFree.argtypes = (ctypes.wintypes.HLOCAL,) + +##################### +# jaraco.windows.mmap + + +class MemoryMap: + """ + A memory map object which can have security attributes overridden. + """ + + def __init__(self, name, length, security_attributes=None): + self.name = name + self.length = length + self.security_attributes = security_attributes + self.pos = 0 + + def __enter__(self): + p_SA = ( + ctypes.byref(self.security_attributes) + if self.security_attributes + else None + ) + INVALID_HANDLE_VALUE = -1 + PAGE_READWRITE = 0x4 + FILE_MAP_WRITE = 0x2 + filemap = ctypes.windll.kernel32.CreateFileMappingW( + INVALID_HANDLE_VALUE, + p_SA, + PAGE_READWRITE, + 0, + self.length, + u(self.name), + ) + handle_nonzero_success(filemap) + if filemap == INVALID_HANDLE_VALUE: + raise Exception("Failed to create file mapping") + self.filemap = filemap + self.view = MapViewOfFile(filemap, FILE_MAP_WRITE, 0, 0, 0) + return self + + def seek(self, pos): + self.pos = pos + + def write(self, msg): + assert isinstance(msg, bytes) + n = len(msg) + if self.pos + n >= self.length: # A little safety. + raise ValueError(f"Refusing to write {n} bytes") + dest = self.view + self.pos + length = ctypes.c_size_t(n) + ctypes.windll.kernel32.RtlMoveMemory(dest, msg, length) + self.pos += n + + def read(self, n): + """ + Read n bytes from mapped view. + """ + out = ctypes.create_string_buffer(n) + source = self.view + self.pos + length = ctypes.c_size_t(n) + ctypes.windll.kernel32.RtlMoveMemory(out, source, length) + self.pos += n + return out.raw + + def __exit__(self, exc_type, exc_val, tb): + ctypes.windll.kernel32.UnmapViewOfFile(self.view) + ctypes.windll.kernel32.CloseHandle(self.filemap) + + +############################# +# jaraco.windows.api.security + +# from WinNT.h +READ_CONTROL = 0x00020000 +STANDARD_RIGHTS_REQUIRED = 0x000F0000 +STANDARD_RIGHTS_READ = READ_CONTROL +STANDARD_RIGHTS_WRITE = READ_CONTROL +STANDARD_RIGHTS_EXECUTE = READ_CONTROL +STANDARD_RIGHTS_ALL = 0x001F0000 + +# from NTSecAPI.h +POLICY_VIEW_LOCAL_INFORMATION = 0x00000001 +POLICY_VIEW_AUDIT_INFORMATION = 0x00000002 +POLICY_GET_PRIVATE_INFORMATION = 0x00000004 +POLICY_TRUST_ADMIN = 0x00000008 +POLICY_CREATE_ACCOUNT = 0x00000010 +POLICY_CREATE_SECRET = 0x00000020 +POLICY_CREATE_PRIVILEGE = 0x00000040 +POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x00000080 +POLICY_SET_AUDIT_REQUIREMENTS = 0x00000100 +POLICY_AUDIT_LOG_ADMIN = 0x00000200 +POLICY_SERVER_ADMIN = 0x00000400 +POLICY_LOOKUP_NAMES = 0x00000800 +POLICY_NOTIFICATION = 0x00001000 + +POLICY_ALL_ACCESS = ( + STANDARD_RIGHTS_REQUIRED + | POLICY_VIEW_LOCAL_INFORMATION + | POLICY_VIEW_AUDIT_INFORMATION + | POLICY_GET_PRIVATE_INFORMATION + | POLICY_TRUST_ADMIN + | POLICY_CREATE_ACCOUNT + | POLICY_CREATE_SECRET + | POLICY_CREATE_PRIVILEGE + | POLICY_SET_DEFAULT_QUOTA_LIMITS + | POLICY_SET_AUDIT_REQUIREMENTS + | POLICY_AUDIT_LOG_ADMIN + | POLICY_SERVER_ADMIN + | POLICY_LOOKUP_NAMES +) + + +POLICY_READ = ( + STANDARD_RIGHTS_READ + | POLICY_VIEW_AUDIT_INFORMATION + | POLICY_GET_PRIVATE_INFORMATION +) + +POLICY_WRITE = ( + STANDARD_RIGHTS_WRITE + | POLICY_TRUST_ADMIN + | POLICY_CREATE_ACCOUNT + | POLICY_CREATE_SECRET + | POLICY_CREATE_PRIVILEGE + | POLICY_SET_DEFAULT_QUOTA_LIMITS + | POLICY_SET_AUDIT_REQUIREMENTS + | POLICY_AUDIT_LOG_ADMIN + | POLICY_SERVER_ADMIN +) + +POLICY_EXECUTE = ( + STANDARD_RIGHTS_EXECUTE + | POLICY_VIEW_LOCAL_INFORMATION + | POLICY_LOOKUP_NAMES +) + + +class TokenAccess: + TOKEN_QUERY = 0x8 + + +class TokenInformationClass: + TokenUser = 1 + + +class TOKEN_USER(ctypes.Structure): + num = 1 + _fields_ = [ + ("SID", ctypes.c_void_p), + ("ATTRIBUTES", ctypes.wintypes.DWORD), + ] + + +class SECURITY_DESCRIPTOR(ctypes.Structure): + """ + typedef struct _SECURITY_DESCRIPTOR + { + UCHAR Revision; + UCHAR Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; + } SECURITY_DESCRIPTOR; + """ + + SECURITY_DESCRIPTOR_CONTROL = ctypes.wintypes.USHORT + REVISION = 1 + + _fields_ = [ + ("Revision", ctypes.c_ubyte), + ("Sbz1", ctypes.c_ubyte), + ("Control", SECURITY_DESCRIPTOR_CONTROL), + ("Owner", ctypes.c_void_p), + ("Group", ctypes.c_void_p), + ("Sacl", ctypes.c_void_p), + ("Dacl", ctypes.c_void_p), + ] + + +class SECURITY_ATTRIBUTES(ctypes.Structure): + """ + typedef struct _SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; + } SECURITY_ATTRIBUTES; + """ + + _fields_ = [ + ("nLength", ctypes.wintypes.DWORD), + ("lpSecurityDescriptor", ctypes.c_void_p), + ("bInheritHandle", ctypes.wintypes.BOOL), + ] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.nLength = ctypes.sizeof(SECURITY_ATTRIBUTES) + + @property + def descriptor(self): + return self._descriptor + + @descriptor.setter + def descriptor(self, value): + self._descriptor = value + self.lpSecurityDescriptor = ctypes.addressof(value) + + +ctypes.windll.advapi32.SetSecurityDescriptorOwner.argtypes = ( + ctypes.POINTER(SECURITY_DESCRIPTOR), + ctypes.c_void_p, + ctypes.wintypes.BOOL, +) + +######################### +# jaraco.windows.security + + +def GetTokenInformation(token, information_class): + """ + Given a token, get the token information for it. + """ + data_size = ctypes.wintypes.DWORD() + ctypes.windll.advapi32.GetTokenInformation( + token, information_class.num, 0, 0, ctypes.byref(data_size) + ) + data = ctypes.create_string_buffer(data_size.value) + handle_nonzero_success( + ctypes.windll.advapi32.GetTokenInformation( + token, + information_class.num, + ctypes.byref(data), + ctypes.sizeof(data), + ctypes.byref(data_size), + ) + ) + return ctypes.cast(data, ctypes.POINTER(TOKEN_USER)).contents + + +def OpenProcessToken(proc_handle, access): + result = ctypes.wintypes.HANDLE() + proc_handle = ctypes.wintypes.HANDLE(proc_handle) + handle_nonzero_success( + ctypes.windll.advapi32.OpenProcessToken( + proc_handle, access, ctypes.byref(result) + ) + ) + return result + + +def get_current_user(): + """ + Return a TOKEN_USER for the owner of this process. + """ + process = OpenProcessToken( + ctypes.windll.kernel32.GetCurrentProcess(), TokenAccess.TOKEN_QUERY + ) + return GetTokenInformation(process, TOKEN_USER) + + +def get_security_attributes_for_user(user=None): + """ + Return a SECURITY_ATTRIBUTES structure with the SID set to the + specified user (uses current user if none is specified). + """ + if user is None: + user = get_current_user() + + assert isinstance(user, TOKEN_USER), "user must be TOKEN_USER instance" + + SD = SECURITY_DESCRIPTOR() + SA = SECURITY_ATTRIBUTES() + # by attaching the actual security descriptor, it will be garbage- + # collected with the security attributes + SA.descriptor = SD + SA.bInheritHandle = 1 + + ctypes.windll.advapi32.InitializeSecurityDescriptor( + ctypes.byref(SD), SECURITY_DESCRIPTOR.REVISION + ) + ctypes.windll.advapi32.SetSecurityDescriptorOwner( + ctypes.byref(SD), user.SID, 0 + ) + return SA diff --git a/.venv/lib/python3.9/site-packages/paramiko/agent.py b/.venv/lib/python3.9/site-packages/paramiko/agent.py new file mode 100644 index 0000000..d93b9ff --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/agent.py @@ -0,0 +1,498 @@ +# Copyright (C) 2003-2007 John Rochester +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +SSH Agent interface +""" + +import os +import socket +import stat +import struct +import sys +import tempfile +import threading +import time +from logging import DEBUG +from select import select + +from paramiko.common import byte_chr, io_sleep +from paramiko.message import Message +from paramiko.pkey import PKey, UnknownKeyType +from paramiko.ssh_exception import AuthenticationException, SSHException +from paramiko.util import asbytes, get_logger + +cSSH2_AGENTC_REQUEST_IDENTITIES = byte_chr(11) +SSH2_AGENT_IDENTITIES_ANSWER = 12 +cSSH2_AGENTC_SIGN_REQUEST = byte_chr(13) +SSH2_AGENT_SIGN_RESPONSE = 14 + +SSH_AGENT_RSA_SHA2_256 = 2 +SSH_AGENT_RSA_SHA2_512 = 4 +# NOTE: RFC mildly confusing; while these flags are OR'd together, OpenSSH at +# least really treats them like "AND"s, in the sense that if it finds the +# SHA256 flag set it won't continue looking at the SHA512 one; it +# short-circuits right away. +# Thus, we never want to eg submit 6 to say "either's good". +ALGORITHM_FLAG_MAP = { + "rsa-sha2-256": SSH_AGENT_RSA_SHA2_256, + "rsa-sha2-512": SSH_AGENT_RSA_SHA2_512, +} +for key, value in list(ALGORITHM_FLAG_MAP.items()): + ALGORITHM_FLAG_MAP[f"{key}-cert-v01@openssh.com"] = value + + +# TODO (backwards incompat): rename all these - including making some of their +# methods public? +class AgentSSH: + def __init__(self): + self._conn = None + self._keys = () + + def get_keys(self): + """ + Return the list of keys available through the SSH agent, if any. If + no SSH agent was running (or it couldn't be contacted), an empty list + will be returned. + + This method performs no IO, just returns the list of keys retrieved + when the connection was made. + + :return: + a tuple of `.AgentKey` objects representing keys available on the + SSH agent + """ + return self._keys + + def _connect(self, conn): + self._conn = conn + ptype, result = self._send_message(cSSH2_AGENTC_REQUEST_IDENTITIES) + if ptype != SSH2_AGENT_IDENTITIES_ANSWER: + raise SSHException("could not get keys from ssh-agent") + keys = [] + for i in range(result.get_int()): + keys.append( + AgentKey( + agent=self, + blob=result.get_binary(), + comment=result.get_text(), + ) + ) + self._keys = tuple(keys) + + def _close(self): + if self._conn is not None: + self._conn.close() + self._conn = None + self._keys = () + + def _send_message(self, msg): + msg = asbytes(msg) + self._conn.send(struct.pack(">I", len(msg)) + msg) + data = self._read_all(4) + msg = Message(self._read_all(struct.unpack(">I", data)[0])) + return ord(msg.get_byte()), msg + + def _read_all(self, wanted): + result = self._conn.recv(wanted) + while len(result) < wanted: + if len(result) == 0: + raise SSHException("lost ssh-agent") + extra = self._conn.recv(wanted - len(result)) + if len(extra) == 0: + raise SSHException("lost ssh-agent") + result += extra + return result + + +class AgentProxyThread(threading.Thread): + """ + Class in charge of communication between two channels. + """ + + def __init__(self, agent): + threading.Thread.__init__(self, target=self.run) + self._agent = agent + self._exit = False + + def run(self): + try: + (r, addr) = self.get_connection() + # Found that r should be either + # a socket from the socket library or None + self.__inr = r + # The address should be an IP address as a string? or None + self.__addr = addr + self._agent.connect() + if not isinstance(self._agent, int) and ( + self._agent._conn is None + or not hasattr(self._agent._conn, "fileno") + ): + raise AuthenticationException("Unable to connect to SSH agent") + self._communicate() + except: + # XXX Not sure what to do here ... raise or pass ? + raise + + def _communicate(self): + import fcntl + + oldflags = fcntl.fcntl(self.__inr, fcntl.F_GETFL) + fcntl.fcntl(self.__inr, fcntl.F_SETFL, oldflags | os.O_NONBLOCK) + while not self._exit: + events = select([self._agent._conn, self.__inr], [], [], 0.5) + for fd in events[0]: + if self._agent._conn == fd: + data = self._agent._conn.recv(512) + if len(data) != 0: + self.__inr.send(data) + else: + self._close() + break + elif self.__inr == fd: + data = self.__inr.recv(512) + if len(data) != 0: + self._agent._conn.send(data) + else: + self._close() + break + time.sleep(io_sleep) + + def _close(self): + self._exit = True + self.__inr.close() + self._agent._conn.close() + + +class AgentLocalProxy(AgentProxyThread): + """ + Class to be used when wanting to ask a local SSH Agent being + asked from a remote fake agent (so use a unix socket for ex.) + """ + + def __init__(self, agent): + AgentProxyThread.__init__(self, agent) + + def get_connection(self): + """ + Return a pair of socket object and string address. + + May block! + """ + conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + try: + conn.bind(self._agent._get_filename()) + conn.listen(1) + (r, addr) = conn.accept() + return r, addr + except: + raise + + +class AgentRemoteProxy(AgentProxyThread): + """ + Class to be used when wanting to ask a remote SSH Agent + """ + + def __init__(self, agent, chan): + AgentProxyThread.__init__(self, agent) + self.__chan = chan + + def get_connection(self): + return self.__chan, None + + +def get_agent_connection(): + """ + Returns some SSH agent object, or None if none were found/supported. + + .. versionadded:: 2.10 + """ + if ("SSH_AUTH_SOCK" in os.environ) and (sys.platform != "win32"): + conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + try: + conn.connect(os.environ["SSH_AUTH_SOCK"]) + return conn + except: + # probably a dangling env var: the ssh agent is gone + return + elif sys.platform == "win32": + from . import win_openssh, win_pageant + + conn = None + if win_pageant.can_talk_to_agent(): + conn = win_pageant.PageantConnection() + elif win_openssh.can_talk_to_agent(): + conn = win_openssh.OpenSSHAgentConnection() + return conn + else: + # no agent support + return + + +class AgentClientProxy: + """ + Class proxying request as a client: + + #. client ask for a request_forward_agent() + #. server creates a proxy and a fake SSH Agent + #. server ask for establishing a connection when needed, + calling the forward_agent_handler at client side. + #. the forward_agent_handler launch a thread for connecting + the remote fake agent and the local agent + #. Communication occurs ... + """ + + def __init__(self, chanRemote): + self._conn = None + self.__chanR = chanRemote + self.thread = AgentRemoteProxy(self, chanRemote) + self.thread.start() + + def __del__(self): + self.close() + + def connect(self): + """ + Method automatically called by ``AgentProxyThread.run``. + """ + conn = get_agent_connection() + if not conn: + return + self._conn = conn + + def close(self): + """ + Close the current connection and terminate the agent + Should be called manually + """ + if hasattr(self, "thread"): + self.thread._exit = True + self.thread.join(1000) + if self._conn is not None: + self._conn.close() + + +class AgentServerProxy(AgentSSH): + """ + Allows an SSH server to access a forwarded agent. + + This also creates a unix domain socket on the system to allow external + programs to also access the agent. For this reason, you probably only want + to create one of these. + + :meth:`connect` must be called before it is usable. This will also load the + list of keys the agent contains. You must also call :meth:`close` in + order to clean up the unix socket and the thread that maintains it. + (:class:`contextlib.closing` might be helpful to you.) + + :param .Transport t: Transport used for SSH Agent communication forwarding + + :raises: `.SSHException` -- mostly if we lost the agent + """ + + def __init__(self, t): + AgentSSH.__init__(self) + self.__t = t + self._dir = tempfile.mkdtemp("sshproxy") + os.chmod(self._dir, stat.S_IRWXU) + self._file = self._dir + "/sshproxy.ssh" + self.thread = AgentLocalProxy(self) + self.thread.start() + + def __del__(self): + self.close() + + def connect(self): + conn_sock = self.__t.open_forward_agent_channel() + if conn_sock is None: + raise SSHException("lost ssh-agent") + conn_sock.set_name("auth-agent") + self._connect(conn_sock) + + def close(self): + """ + Terminate the agent, clean the files, close connections + Should be called manually + """ + os.remove(self._file) + os.rmdir(self._dir) + self.thread._exit = True + self.thread.join(1000) + self._close() + + def get_env(self): + """ + Helper for the environment under unix + + :return: + a dict containing the ``SSH_AUTH_SOCK`` environment variables + """ + return {"SSH_AUTH_SOCK": self._get_filename()} + + def _get_filename(self): + return self._file + + +class AgentRequestHandler: + """ + Primary/default implementation of SSH agent forwarding functionality. + + Simply instantiate this class, handing it a live command-executing session + object, and it will handle forwarding any local SSH agent processes it + finds. + + For example:: + + # Connect + client = SSHClient() + client.connect(host, port, username) + # Obtain session + session = client.get_transport().open_session() + # Forward local agent + AgentRequestHandler(session) + # Commands executed after this point will see the forwarded agent on + # the remote end. + session.exec_command("git clone https://my.git.repository/") + """ + + def __init__(self, chanClient): + self._conn = None + self.__chanC = chanClient + chanClient.request_forward_agent(self._forward_agent_handler) + self.__clientProxys = [] + + def _forward_agent_handler(self, chanRemote): + self.__clientProxys.append(AgentClientProxy(chanRemote)) + + def __del__(self): + self.close() + + def close(self): + for p in self.__clientProxys: + p.close() + + +class Agent(AgentSSH): + """ + Client interface for using private keys from an SSH agent running on the + local machine. If an SSH agent is running, this class can be used to + connect to it and retrieve `.PKey` objects which can be used when + attempting to authenticate to remote SSH servers. + + Upon initialization, a session with the local machine's SSH agent is + opened, if one is running. If no agent is running, initialization will + succeed, but `get_keys` will return an empty tuple. + + :raises: `.SSHException` -- + if an SSH agent is found, but speaks an incompatible protocol + + .. versionchanged:: 2.10 + Added support for native openssh agent on windows (extending previous + putty pageant support) + """ + + def __init__(self): + AgentSSH.__init__(self) + + conn = get_agent_connection() + if not conn: + return + self._connect(conn) + + def close(self): + """ + Close the SSH agent connection. + """ + self._close() + + +class AgentKey(PKey): + """ + Private key held in a local SSH agent. This type of key can be used for + authenticating to a remote server (signing). Most other key operations + work as expected. + + .. versionchanged:: 3.2 + Added the ``comment`` kwarg and attribute. + + .. versionchanged:: 3.2 + Added the ``.inner_key`` attribute holding a reference to the 'real' + key instance this key is a proxy for, if one was obtainable, else None. + """ + + def __init__(self, agent: Agent, blob: bytes, comment: str = ""): + self.agent = agent + self.blob = blob + self.comment = comment + msg = Message(blob) + self.name = msg.get_text() + self._logger = get_logger(__file__) + self.inner_key = None + try: + self.inner_key = PKey.from_type_string( + key_type=self.name, key_bytes=blob + ) + except UnknownKeyType: + # Log, but don't explode, since inner_key is a best-effort thing. + err = "Unable to derive inner_key for agent key of type {!r}" + self.log(DEBUG, err.format(self.name)) + + def log(self, *args, **kwargs): + return self._logger.log(*args, **kwargs) + + def asbytes(self): + # Prefer inner_key.asbytes, since that will differ for eg RSA-CERT + return self.inner_key.asbytes() if self.inner_key else self.blob + + def get_name(self): + return self.name + + def get_bits(self): + # Have to work around PKey's default get_bits being crap + if self.inner_key is not None: + return self.inner_key.get_bits() + return super().get_bits() + + def __getattr__(self, name): + """ + Proxy any un-implemented methods/properties to the inner_key. + """ + if self.inner_key is None: # nothing to proxy to + raise AttributeError(name) + return getattr(self.inner_key, name) + + @property + def _fields(self): + fallback = [self.get_name(), self.blob] + return self.inner_key._fields if self.inner_key else fallback + + def sign_ssh_data(self, data, algorithm=None): + msg = Message() + msg.add_byte(cSSH2_AGENTC_SIGN_REQUEST) + # NOTE: this used to be just self.blob, which is not entirely right for + # RSA-CERT 'keys' - those end up always degrading to ssh-rsa type + # signatures, for reasons probably internal to OpenSSH's agent code, + # even if everything else wants SHA2 (including our flag map). + msg.add_string(self.asbytes()) + msg.add_string(data) + msg.add_int(ALGORITHM_FLAG_MAP.get(algorithm, 0)) + ptype, result = self.agent._send_message(msg) + if ptype != SSH2_AGENT_SIGN_RESPONSE: + raise SSHException("key cannot be used for signing") + return result.get_binary() diff --git a/.venv/lib/python3.9/site-packages/paramiko/auth_handler.py b/.venv/lib/python3.9/site-packages/paramiko/auth_handler.py new file mode 100644 index 0000000..5d58089 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/auth_handler.py @@ -0,0 +1,763 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +`.AuthHandler` +""" + +import threading +import time +import weakref + +from paramiko.common import ( + AUTH_FAILED, + AUTH_PARTIALLY_SUCCESSFUL, + AUTH_SUCCESSFUL, + DEBUG, + DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE, + DISCONNECT_SERVICE_NOT_AVAILABLE, + INFO, + MSG_SERVICE_ACCEPT, + MSG_SERVICE_REQUEST, + MSG_USERAUTH_BANNER, + MSG_USERAUTH_FAILURE, + MSG_USERAUTH_INFO_REQUEST, + MSG_USERAUTH_INFO_RESPONSE, + MSG_USERAUTH_REQUEST, + MSG_USERAUTH_SUCCESS, + WARNING, + cMSG_DISCONNECT, + cMSG_SERVICE_ACCEPT, + cMSG_SERVICE_REQUEST, + cMSG_USERAUTH_BANNER, + cMSG_USERAUTH_FAILURE, + cMSG_USERAUTH_INFO_REQUEST, + cMSG_USERAUTH_INFO_RESPONSE, + cMSG_USERAUTH_PK_OK, + cMSG_USERAUTH_REQUEST, + cMSG_USERAUTH_SUCCESS, +) +from paramiko.message import Message +from paramiko.server import InteractiveQuery +from paramiko.ssh_exception import ( + AuthenticationException, + BadAuthenticationType, + PartialAuthentication, + SSHException, +) +from paramiko.util import b, u + + +class AuthHandler: + """ + Internal class to handle the mechanics of authentication. + """ + + def __init__(self, transport): + self.transport = weakref.proxy(transport) + self.username = None + self.authenticated = False + self.auth_event = None + self.auth_method = "" + self.banner = None + self.password = None + self.private_key = None + self.interactive_handler = None + self.submethods = None + # for server mode: + self.auth_username = None + self.auth_fail_count = 0 + + def _log(self, *args): + return self.transport._log(*args) + + def is_authenticated(self): + return self.authenticated + + def get_username(self): + if self.transport.server_mode: + return self.auth_username + else: + return self.username + + def auth_none(self, username, event): + self.transport.lock.acquire() + try: + self.auth_event = event + self.auth_method = "none" + self.username = username + self._request_auth() + finally: + self.transport.lock.release() + + def auth_publickey(self, username, key, event): + self.transport.lock.acquire() + try: + self.auth_event = event + self.auth_method = "publickey" + self.username = username + self.private_key = key + self._request_auth() + finally: + self.transport.lock.release() + + def auth_password(self, username, password, event): + self.transport.lock.acquire() + try: + self.auth_event = event + self.auth_method = "password" + self.username = username + self.password = password + self._request_auth() + finally: + self.transport.lock.release() + + def auth_interactive(self, username, handler, event, submethods=""): + """ + response_list = handler(title, instructions, prompt_list) + """ + self.transport.lock.acquire() + try: + self.auth_event = event + self.auth_method = "keyboard-interactive" + self.username = username + self.interactive_handler = handler + self.submethods = submethods + self._request_auth() + finally: + self.transport.lock.release() + + def abort(self): + if self.auth_event is not None: + self.auth_event.set() + + # ...internals... + + def _request_auth(self): + m = Message() + m.add_byte(cMSG_SERVICE_REQUEST) + m.add_string("ssh-userauth") + self.transport._send_message(m) + + def _disconnect_service_not_available(self): + m = Message() + m.add_byte(cMSG_DISCONNECT) + m.add_int(DISCONNECT_SERVICE_NOT_AVAILABLE) + m.add_string("Service not available") + m.add_string("en") + self.transport._send_message(m) + self.transport.close() + + def _disconnect_no_more_auth(self): + m = Message() + m.add_byte(cMSG_DISCONNECT) + m.add_int(DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE) + m.add_string("No more auth methods available") + m.add_string("en") + self.transport._send_message(m) + self.transport.close() + + def _get_key_type_and_bits(self, key): + """ + Given any key, return its type/algorithm & bits-to-sign. + + Intended for input to or verification of, key signatures. + """ + # Use certificate contents, if available, plain pubkey otherwise + if key.public_blob: + return key.public_blob.key_type, key.public_blob.key_blob + else: + return key.get_name(), key + + def _get_session_blob(self, key, service, username, algorithm): + m = Message() + m.add_string(self.transport.session_id) + m.add_byte(cMSG_USERAUTH_REQUEST) + m.add_string(username) + m.add_string(service) + m.add_string("publickey") + m.add_boolean(True) + _, bits = self._get_key_type_and_bits(key) + m.add_string(algorithm) + m.add_string(bits) + return m.asbytes() + + def wait_for_response(self, event): + max_ts = None + if self.transport.auth_timeout is not None: + max_ts = time.time() + self.transport.auth_timeout + while True: + event.wait(0.1) + if not self.transport.is_active(): + e = self.transport.get_exception() + if (e is None) or issubclass(e.__class__, EOFError): + e = AuthenticationException( + "Authentication failed: transport shut down or saw EOF" + ) + raise e + if event.is_set(): + break + if max_ts is not None and max_ts <= time.time(): + raise AuthenticationException("Authentication timeout.") + + if not self.is_authenticated(): + e = self.transport.get_exception() + if e is None: + e = AuthenticationException("Authentication failed.") + # this is horrible. Python Exception isn't yet descended from + # object, so type(e) won't work. :( + # TODO (backwards incompat): lol. just lmao. + if issubclass(e.__class__, PartialAuthentication): + return e.allowed_types + raise e + return [] + + def _parse_service_request(self, m): + service = m.get_text() + if self.transport.server_mode and (service == "ssh-userauth"): + # accepted + m = Message() + m.add_byte(cMSG_SERVICE_ACCEPT) + m.add_string(service) + self.transport._send_message(m) + banner, language = self.transport.server_object.get_banner() + if banner: + m = Message() + m.add_byte(cMSG_USERAUTH_BANNER) + m.add_string(banner) + m.add_string(language) + self.transport._send_message(m) + return + # dunno this one + self._disconnect_service_not_available() + + def _generate_key_from_request(self, algorithm, keyblob): + # For use in server mode. + options = self.transport.preferred_pubkeys + if algorithm.replace("-cert-v01@openssh.com", "") not in options: + err = ( + "Auth rejected: pubkey algorithm '{}' unsupported or disabled" + ) + self._log(INFO, err.format(algorithm)) + return None + return self.transport._key_info[algorithm](Message(keyblob)) + + def _finalize_pubkey_algorithm(self, key_type): + """ + Given a key type, decide which pubkey algorithm to use with it. + + In most cases this is simply "that key type, again". + + For RSA, this will be one of the SHA2 algorithms, depending on our + (transport's) configured pubkey algorithms list. + """ + # Short-circuit for non-RSA keys + if "rsa" not in key_type: + return key_type + self._log( + DEBUG, + "Finalizing pubkey algorithm for key of type {!r}".format( + key_type + ), + ) + # Normal attempts to handshake follow from here. + # Only consider RSA algos from our list, lest we agree on another! + my_algos = [x for x in self.transport.preferred_pubkeys if "rsa" in x] + self._log(DEBUG, "Our pubkey algorithm list: {}".format(my_algos)) + # Short-circuit negatively if user disabled all RSA algos (heh) + if not my_algos: + raise SSHException( + "An RSA key was specified, but no RSA pubkey algorithms are configured!" # noqa + ) + # Check for server-sig-algs if supported & sent + server_algo_str = u( + self.transport.server_extensions.get("server-sig-algs", b("")) + ) + pubkey_algo = None + # Prefer to match against server-sig-algs + if server_algo_str: + server_algos = server_algo_str.split(",") + self._log( + DEBUG, "Server-side algorithm list: {}".format(server_algos) + ) + # Only use algos from our list that the server likes, in our own + # preference order. (NOTE: purposefully using same style as in + # Transport...expect to refactor later) + agreement = list(filter(server_algos.__contains__, my_algos)) + if agreement: + pubkey_algo = agreement[0] + self._log( + DEBUG, + "Agreed upon {!r} pubkey algorithm".format(pubkey_algo), + ) + else: + self._log(DEBUG, "No common pubkey algorithms exist! Dying.") + # TODO: MAY want to use IncompatiblePeer again here but that's + # technically for initial key exchange, not pubkey auth. + err = "Unable to agree on a pubkey algorithm for signing a {!r} key!" # noqa + raise AuthenticationException(err.format(key_type)) + # Fallback to first item in our preferred algorithm list (which won't + # be empty due to guardrail above) + else: + pubkey_algo = my_algos[0] + msg = f"Server did not send a server-sig-algs list; defaulting to first RSA algorithm in our list: {pubkey_algo}" # noqa + self._log(DEBUG, msg) + # If we had loaded a cert-type key, tack that on to the algorithm name + # to get the final correct result. + if key_type.endswith("-cert-v01@openssh.com"): + pubkey_algo += "-cert-v01@openssh.com" + self.transport._agreed_pubkey_algorithm = pubkey_algo + return pubkey_algo + + def _parse_service_accept(self, m): + service = m.get_text() + if service == "ssh-userauth": + self._log(DEBUG, "userauth is OK") + m = Message() + m.add_byte(cMSG_USERAUTH_REQUEST) + m.add_string(self.username) + m.add_string("ssh-connection") + m.add_string(self.auth_method) + if self.auth_method == "password": + m.add_boolean(False) + password = b(self.password) + m.add_string(password) + elif self.auth_method == "publickey": + m.add_boolean(True) + key_type, bits = self._get_key_type_and_bits(self.private_key) + algorithm = self._finalize_pubkey_algorithm(key_type) + m.add_string(algorithm) + m.add_string(bits) + blob = self._get_session_blob( + self.private_key, + "ssh-connection", + self.username, + algorithm, + ) + sig = self.private_key.sign_ssh_data(blob, algorithm) + m.add_string(sig) + elif self.auth_method == "keyboard-interactive": + m.add_string("") + m.add_string(self.submethods) + elif self.auth_method == "none": + pass + else: + raise SSHException( + 'Unknown auth method "{}"'.format(self.auth_method) + ) + self.transport._send_message(m) + else: + self._log( + DEBUG, 'Service request "{}" accepted (?)'.format(service) + ) + + def _send_auth_result(self, username, method, result): + # okay, send result + m = Message() + if result == AUTH_SUCCESSFUL: + self._log(INFO, "Auth granted ({}).".format(method)) + m.add_byte(cMSG_USERAUTH_SUCCESS) + self.authenticated = True + else: + self._log(INFO, "Auth rejected ({}).".format(method)) + m.add_byte(cMSG_USERAUTH_FAILURE) + m.add_string( + self.transport.server_object.get_allowed_auths(username) + ) + if result == AUTH_PARTIALLY_SUCCESSFUL: + m.add_boolean(True) + else: + m.add_boolean(False) + self.auth_fail_count += 1 + self.transport._send_message(m) + if self.auth_fail_count >= 10: + self._disconnect_no_more_auth() + if result == AUTH_SUCCESSFUL: + self.transport._auth_trigger() + + def _interactive_query(self, q): + # make interactive query instead of response + m = Message() + m.add_byte(cMSG_USERAUTH_INFO_REQUEST) + m.add_string(q.name) + m.add_string(q.instructions) + m.add_string(bytes()) + m.add_int(len(q.prompts)) + for p in q.prompts: + m.add_string(p[0]) + m.add_boolean(p[1]) + self.transport._send_message(m) + + def _parse_userauth_request(self, m): + if not self.transport.server_mode: + # er, uh... what? + m = Message() + m.add_byte(cMSG_USERAUTH_FAILURE) + m.add_string("none") + m.add_boolean(False) + self.transport._send_message(m) + return + if self.authenticated: + # ignore + return + username = m.get_text() + service = m.get_text() + method = m.get_text() + self._log( + DEBUG, + "Auth request (type={}) service={}, username={}".format( + method, service, username + ), + ) + if service != "ssh-connection": + self._disconnect_service_not_available() + return + if (self.auth_username is not None) and ( + self.auth_username != username + ): + self._log( + WARNING, + "Auth rejected because the client attempted to change username in mid-flight", # noqa + ) + self._disconnect_no_more_auth() + return + self.auth_username = username + + if method == "none": + result = self.transport.server_object.check_auth_none(username) + elif method == "password": + changereq = m.get_boolean() + password = m.get_binary() + try: + password = password.decode("UTF-8") + except UnicodeError: + # some clients/servers expect non-utf-8 passwords! + # in this case, just return the raw byte string. + pass + if changereq: + # always treated as failure, since we don't support changing + # passwords, but collect the list of valid auth types from + # the callback anyway + self._log(DEBUG, "Auth request to change passwords (rejected)") + newpassword = m.get_binary() + try: + newpassword = newpassword.decode("UTF-8", "replace") + except UnicodeError: + pass + result = AUTH_FAILED + else: + result = self.transport.server_object.check_auth_password( + username, password + ) + elif method == "publickey": + sig_attached = m.get_boolean() + # NOTE: server never wants to guess a client's algo, they're + # telling us directly. No need for _finalize_pubkey_algorithm + # anywhere in this flow. + # TODO: ok is this a spot where it can say a SHA2 dealie in some + # fields but still ssh-rsa within the pubkey blob part? + # TODO: ok so this would be rsa-sha2-256 or w/e, if this field says + # ssh-rsa the request can get stuffed. + algorithm = m.get_text() + # TODO: This part would, if deconstructed, still be allowed to have + # "ssh-rsa" in its first field. + keyblob = m.get_binary() + try: + key = self._generate_key_from_request(algorithm, keyblob) + except SSHException as e: + self._log(INFO, "Auth rejected: public key: {}".format(str(e))) + key = None + except Exception as e: + msg = "Auth rejected: unsupported or mangled public key ({}: {})" # noqa + self._log(INFO, msg.format(e.__class__.__name__, e)) + key = None + if key is None: + self._disconnect_no_more_auth() + return + # first check if this key is okay... if not, we can skip the verify + result = self.transport.server_object.check_auth_publickey( + username, key + ) + if result != AUTH_FAILED: + # key is okay, verify it + if not sig_attached: + # client wants to know if this key is acceptable, before it + # signs anything... send special "ok" message + m = Message() + m.add_byte(cMSG_USERAUTH_PK_OK) + m.add_string(algorithm) + m.add_string(keyblob) + self.transport._send_message(m) + return + sig = Message(m.get_binary()) + blob = self._get_session_blob( + key, service, username, algorithm + ) + if not key.verify_ssh_sig(blob, sig): + self._log(INFO, "Auth rejected: invalid signature") + result = AUTH_FAILED + elif method == "keyboard-interactive": + submethods = m.get_string() + result = self.transport.server_object.check_auth_interactive( + username, submethods + ) + if isinstance(result, InteractiveQuery): + # make interactive query instead of response + self._interactive_query(result) + return + else: + result = self.transport.server_object.check_auth_none(username) + # okay, send result + self._send_auth_result(username, method, result) + + def _parse_userauth_success(self, m): + self._log( + INFO, "Authentication ({}) successful!".format(self.auth_method) + ) + self.authenticated = True + self.transport._auth_trigger() + if self.auth_event is not None: + self.auth_event.set() + + def _parse_userauth_failure(self, m): + authlist = m.get_list() + # TODO (backwards incompat): we aren't giving callers access to + # authlist _unless_ it's partial authentication, so eg authtype=none + # can't work unless we tweak this. + partial = m.get_boolean() + if partial: + self._log(INFO, "Authentication continues...") + self._log(DEBUG, "Methods: " + str(authlist)) + self.transport.saved_exception = PartialAuthentication(authlist) + elif self.auth_method not in authlist: + for msg in ( + "Authentication type ({}) not permitted.".format( + self.auth_method + ), + "Allowed methods: {}".format(authlist), + ): + self._log(DEBUG, msg) + self.transport.saved_exception = BadAuthenticationType( + "Bad authentication type", authlist + ) + else: + self._log( + INFO, "Authentication ({}) failed.".format(self.auth_method) + ) + self.authenticated = False + self.username = None + if self.auth_event is not None: + self.auth_event.set() + + def _parse_userauth_banner(self, m): + banner = m.get_string() + self.banner = banner + self._log(INFO, "Auth banner: {}".format(banner)) + # who cares. + + def _parse_userauth_info_request(self, m): + if self.auth_method != "keyboard-interactive": + raise SSHException("Illegal info request from server") + title = m.get_text() + instructions = m.get_text() + m.get_binary() # lang + prompts = m.get_int() + prompt_list = [] + for i in range(prompts): + prompt_list.append((m.get_text(), m.get_boolean())) + response_list = self.interactive_handler( + title, instructions, prompt_list + ) + + m = Message() + m.add_byte(cMSG_USERAUTH_INFO_RESPONSE) + m.add_int(len(response_list)) + for r in response_list: + m.add_string(r) + self.transport._send_message(m) + + def _parse_userauth_info_response(self, m): + if not self.transport.server_mode: + raise SSHException("Illegal info response from server") + n = m.get_int() + responses = [] + for i in range(n): + responses.append(m.get_text()) + result = self.transport.server_object.check_auth_interactive_response( + responses + ) + if isinstance(result, InteractiveQuery): + # make interactive query instead of response + self._interactive_query(result) + return + self._send_auth_result( + self.auth_username, "keyboard-interactive", result + ) + + # TODO (backwards incompat): MAY make sense to make these tables into + # actual classes/instances that can be fed a mode bool or whatever. Or, + # alternately (both?) make the message types small classes or enums that + # embed this info within themselves (which could also then tidy up the + # current 'integer -> human readable short string' stuff in common.py). + # TODO: if we do that, also expose 'em publicly. + + # Messages which should be handled _by_ servers (sent by clients) + @property + def _server_handler_table(self): + return { + # TODO (backwards incompat): MSG_SERVICE_REQUEST ought to + # eventually move into Transport's server mode like the client side + # did, just for consistency. + MSG_SERVICE_REQUEST: self._parse_service_request, + MSG_USERAUTH_REQUEST: self._parse_userauth_request, + MSG_USERAUTH_INFO_RESPONSE: self._parse_userauth_info_response, + } + + # Messages which should be handled _by_ clients (sent by servers) + @property + def _client_handler_table(self): + return { + MSG_SERVICE_ACCEPT: self._parse_service_accept, + MSG_USERAUTH_SUCCESS: self._parse_userauth_success, + MSG_USERAUTH_FAILURE: self._parse_userauth_failure, + MSG_USERAUTH_BANNER: self._parse_userauth_banner, + MSG_USERAUTH_INFO_REQUEST: self._parse_userauth_info_request, + } + + # NOTE: prior to the fix for #1283, this was a static dict instead of a + # property. Should be backwards compatible in most/all cases. + @property + def _handler_table(self): + if self.transport.server_mode: + return self._server_handler_table + else: + return self._client_handler_table + + +class AuthOnlyHandler(AuthHandler): + """ + AuthHandler, and just auth, no service requests! + + .. versionadded:: 3.2 + """ + + # NOTE: this purposefully duplicates some of the parent class in order to + # modernize, refactor, etc. The intent is that eventually we will collapse + # this one onto the parent in a backwards incompatible release. + + @property + def _client_handler_table(self): + my_table = super()._client_handler_table.copy() + del my_table[MSG_SERVICE_ACCEPT] + return my_table + + def send_auth_request(self, username, method, finish_message=None): + """ + Submit a userauth request message & wait for response. + + Performs the transport message send call, sets self.auth_event, and + will lock-n-block as necessary to both send, and wait for response to, + the USERAUTH_REQUEST. + + Most callers will want to supply a callback to ``finish_message``, + which accepts a Message ``m`` and may call mutator methods on it to add + more fields. + """ + # Store a few things for reference in handlers, including auth failure + # handler (which needs to know if we were using a bad method, etc) + self.auth_method = method + self.username = username + # Generic userauth request fields + m = Message() + m.add_byte(cMSG_USERAUTH_REQUEST) + m.add_string(username) + m.add_string("ssh-connection") + m.add_string(method) + # Caller usually has more to say, such as injecting password, key etc + finish_message(m) + # TODO (backwards incompat): seems odd to have the client handle the + # lock and not Transport; that _may_ have been an artifact of allowing + # user threading event injection? Regardless, we don't want to move + # _this_ locking into Transport._send_message now, because lots of + # other untouched code also uses that method and we might end up + # double-locking (?) but 4.0 would be a good time to revisit. + with self.transport.lock: + self.transport._send_message(m) + # We have cut out the higher level event args, but self.auth_event is + # still required for self.wait_for_response to function correctly (it's + # the mechanism used by the auth success/failure handlers, the abort + # handler, and a few other spots. + # TODO: interestingly, wait_for_response itself doesn't actually + # enforce that its event argument and self.auth_event are the same... + self.auth_event = threading.Event() + return self.wait_for_response(self.auth_event) + + def auth_none(self, username): + return self.send_auth_request(username, "none") + + def auth_publickey(self, username, key): + # NOTE: key_type here may be just key type ("rsa-sha2-256") or may be + # the cert form if cert was loaded ("ssh-rsa-cert-v01@openssh.com") + key_type, bits = self._get_key_type_and_bits(key) + algorithm = self._finalize_pubkey_algorithm(key_type) + blob = self._get_session_blob( + key, + "ssh-connection", + username, + algorithm, + ) + + def finish(m): + # This field doesn't appear to be named, but is False when querying + # for permission (ie knowing whether to even prompt a user for + # passphrase, etc) or True when just going for it. Paramiko has + # never bothered with the former type of message, apparently. + m.add_boolean(True) + m.add_string(algorithm) + m.add_string(bits) + m.add_string(key.sign_ssh_data(blob, algorithm)) + + return self.send_auth_request(username, "publickey", finish) + + def auth_password(self, username, password): + def finish(m): + # Unnamed field that equates to "I am changing my password", which + # Paramiko clientside never supported and serverside only sort of + # supported. + m.add_boolean(False) + m.add_string(b(password)) + + return self.send_auth_request(username, "password", finish) + + def auth_interactive(self, username, handler, submethods=""): + """ + response_list = handler(title, instructions, prompt_list) + """ + # Unlike most siblings, this auth method _does_ require other + # superclass handlers (eg userauth info request) to understand + # what's going on, so we still set some self attributes. + self.auth_method = "keyboard_interactive" + self.interactive_handler = handler + + def finish(m): + # Empty string for deprecated language tag field, per RFC 4256: + # https://www.rfc-editor.org/rfc/rfc4256#section-3.1 + m.add_string("") + m.add_string(submethods) + + return self.send_auth_request(username, "keyboard-interactive", finish) diff --git a/.venv/lib/python3.9/site-packages/paramiko/auth_strategy.py b/.venv/lib/python3.9/site-packages/paramiko/auth_strategy.py new file mode 100644 index 0000000..91fc9c0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/auth_strategy.py @@ -0,0 +1,308 @@ +""" +Modern, adaptable authentication machinery. + +Replaces certain parts of `.SSHClient`. For a concrete implementation, see the +``OpenSSHAuthStrategy`` class in `Fabric `_. +""" + +from collections import namedtuple + +from .agent import AgentKey +from .ssh_exception import AuthenticationException +from .util import get_logger + + +class AuthSource: + """ + Some SSH authentication source, such as a password, private key, or agent. + + See subclasses in this module for concrete implementations. + + All implementations must accept at least a ``username`` (``str``) kwarg. + """ + + def __init__(self, username): + self.username = username + + def _repr(self, **kwargs): + # TODO: are there any good libs for this? maybe some helper from + # structlog? + pairs = [f"{k}={v!r}" for k, v in kwargs.items()] + joined = ", ".join(pairs) + return f"{self.__class__.__name__}({joined})" + + def __repr__(self): + return self._repr() + + def authenticate(self, transport): + """ + Perform authentication. + """ + raise NotImplementedError + + +class NoneAuth(AuthSource): + """ + Auth type "none", ie https://www.rfc-editor.org/rfc/rfc4252#section-5.2 . + """ + + def authenticate(self, transport): + return transport.auth_none(self.username) + + +class Password(AuthSource): + """ + Password authentication. + + :param callable password_getter: + A lazy callable that should return a `str` password value at + authentication time, such as a `functools.partial` wrapping + `getpass.getpass`, an API call to a secrets store, or similar. + + If you already know the password at instantiation time, you should + simply use something like ``lambda: "my literal"`` (for a literal, but + also, shame on you!) or ``lambda: variable_name`` (for something stored + in a variable). + """ + + def __init__(self, username, password_getter): + super().__init__(username=username) + self.password_getter = password_getter + + def __repr__(self): + # Password auth is marginally more 'username-caring' than pkeys, so may + # as well log that info here. + return super()._repr(user=self.username) + + def authenticate(self, transport): + # Lazily get the password, in case it's prompting a user + # TODO: be nice to log source _of_ the password? + password = self.password_getter() + return transport.auth_password(self.username, password) + + +# TODO (backwards incompat): twiddle this, or PKey, or both, so they're more +# obviously distinct. +# TODO (backwards incompat): the obvious is to make this more wordy +# (PrivateKeyAuth), the minimalist approach might be to rename PKey to just Key +# (esp given all the subclasses are WhateverKey and not WhateverPKey) +class PrivateKey(AuthSource): + """ + Essentially a mixin for private keys. + + Knows how to auth, but leaves key material discovery/loading/decryption to + subclasses. + + Subclasses **must** ensure that they've set ``self.pkey`` to a decrypted + `.PKey` instance before calling ``super().authenticate``; typically + either in their ``__init__``, or in an overridden ``authenticate`` prior to + its `super` call. + """ + + def authenticate(self, transport): + return transport.auth_publickey(self.username, self.pkey) + + +class InMemoryPrivateKey(PrivateKey): + """ + An in-memory, decrypted `.PKey` object. + """ + + def __init__(self, username, pkey): + super().__init__(username=username) + # No decryption (presumably) necessary! + self.pkey = pkey + + def __repr__(self): + # NOTE: most of interesting repr-bits for private keys is in PKey. + # TODO: tacking on agent-ness like this is a bit awkward, but, eh? + rep = super()._repr(pkey=self.pkey) + if isinstance(self.pkey, AgentKey): + rep += " [agent]" + return rep + + +class OnDiskPrivateKey(PrivateKey): + """ + Some on-disk private key that needs opening and possibly decrypting. + + :param str source: + String tracking where this key's path was specified; should be one of + ``"ssh-config"``, ``"python-config"``, or ``"implicit-home"``. + :param Path path: + The filesystem path this key was loaded from. + :param PKey pkey: + The `PKey` object this auth source uses/represents. + """ + + def __init__(self, username, source, path, pkey): + super().__init__(username=username) + self.source = source + allowed = ("ssh-config", "python-config", "implicit-home") + if source not in allowed: + raise ValueError(f"source argument must be one of: {allowed!r}") + self.path = path + # Superclass wants .pkey, other two are mostly for display/debugging. + self.pkey = pkey + + def __repr__(self): + return self._repr( + key=self.pkey, source=self.source, path=str(self.path) + ) + + +# TODO re sources: is there anything in an OpenSSH config file that doesn't fit +# into what Paramiko already had kwargs for? + + +SourceResult = namedtuple("SourceResult", ["source", "result"]) + + +# TODO: tempting to make this an OrderedDict, except the keys essentially want +# to be rich objects (AuthSources) which do not make for useful user indexing? +# TODO: members being vanilla tuples is pretty old-school/expedient; they +# "really" want to be something that's type friendlier (unless the tuple's 2nd +# member being a Union of two types is "fine"?), which I assume means yet more +# classes, eg an abstract SourceResult with concrete AuthSuccess and +# AuthFailure children? +# TODO: arguably we want __init__ typechecking of the members (or to leverage +# mypy by classifying this literally as list-of-AuthSource?) +class AuthResult(list): + """ + Represents a partial or complete SSH authentication attempt. + + This class conceptually extends `AuthStrategy` by pairing the former's + authentication **sources** with the **results** of trying to authenticate + with them. + + `AuthResult` is a (subclass of) `list` of `namedtuple`, which are of the + form ``namedtuple('SourceResult', 'source', 'result')`` (where the + ``source`` member is an `AuthSource` and the ``result`` member is either a + return value from the relevant `.Transport` method, or an exception + object). + + .. note:: + Transport auth method results are always themselves a ``list`` of "next + allowable authentication methods". + + In the simple case of "you just authenticated successfully", it's an + empty list; if your auth was rejected but you're allowed to try again, + it will be a list of string method names like ``pubkey`` or + ``password``. + + The ``__str__`` of this class represents the empty-list scenario as the + word ``success``, which should make reading the result of an + authentication session more obvious to humans. + + Instances also have a `strategy` attribute referencing the `AuthStrategy` + which was attempted. + """ + + def __init__(self, strategy, *args, **kwargs): + self.strategy = strategy + super().__init__(*args, **kwargs) + + def __str__(self): + # NOTE: meaningfully distinct from __repr__, which still wants to use + # superclass' implementation. + # TODO: go hog wild, use rich.Table? how is that on degraded term's? + # TODO: test this lol + return "\n".join( + f"{x.source} -> {x.result or 'success'}" for x in self + ) + + +# TODO (backwards incompat): descend from SSHException or even just Exception +class AuthFailure(AuthenticationException): + """ + Basic exception wrapping an `AuthResult` indicating overall auth failure. + + Note that `AuthFailure` descends from `AuthenticationException` but is + generally "higher level"; the latter is now only raised by individual + `AuthSource` attempts and should typically only be seen by users when + encapsulated in this class. It subclasses `AuthenticationException` + primarily for backwards compatibility reasons. + """ + + def __init__(self, result): + self.result = result + + def __str__(self): + return "\n" + str(self.result) + + +class AuthStrategy: + """ + This class represents one or more attempts to auth with an SSH server. + + By default, subclasses must at least accept an ``ssh_config`` + (`.SSHConfig`) keyword argument, but may opt to accept more as needed for + their particular strategy. + """ + + def __init__( + self, + ssh_config, + ): + self.ssh_config = ssh_config + self.log = get_logger(__name__) + + def get_sources(self): + """ + Generator yielding `AuthSource` instances, in the order to try. + + This is the primary override point for subclasses: you figure out what + sources you need, and ``yield`` them. + + Subclasses _of_ subclasses may find themselves wanting to do things + like filtering or discarding around a call to `super`. + """ + raise NotImplementedError + + def authenticate(self, transport): + """ + Handles attempting `AuthSource` instances yielded from `get_sources`. + + You *normally* won't need to override this, but it's an option for + advanced users. + """ + succeeded = False + overall_result = AuthResult(strategy=self) + # TODO: arguably we could fit in a "send none auth, record allowed auth + # types sent back" thing here as OpenSSH-client does, but that likely + # wants to live in fabric.OpenSSHAuthStrategy as not all target servers + # will implement it! + # TODO: needs better "server told us too many attempts" checking! + for source in self.get_sources(): + self.log.debug(f"Trying {source}") + try: # NOTE: this really wants to _only_ wrap the authenticate()! + result = source.authenticate(transport) + succeeded = True + # TODO: 'except PartialAuthentication' is needed for 2FA and + # similar, as per old SSHClient.connect - it is the only way + # AuthHandler supplies access to the 'name-list' field from + # MSG_USERAUTH_FAILURE, at present. + except Exception as e: + result = e + # TODO: look at what this could possibly raise, we don't really + # want Exception here, right? just SSHException subclasses? or + # do we truly want to capture anything at all with assumption + # it's easy enough for users to look afterwards? + # NOTE: showing type, not message, for tersity & also most of + # the time it's basically just "Authentication failed." + source_class = e.__class__.__name__ + self.log.info( + f"Authentication via {source} failed with {source_class}" + ) + overall_result.append(SourceResult(source, result)) + if succeeded: + break + # Gotta die here if nothing worked, otherwise Transport's main loop + # just kinda hangs out until something times out! + if not succeeded: + raise AuthFailure(result=overall_result) + # Success: give back what was done, in case they care. + return overall_result + + # TODO: is there anything OpenSSH client does which _can't_ cleanly map to + # iterating a generator? diff --git a/.venv/lib/python3.9/site-packages/paramiko/ber.py b/.venv/lib/python3.9/site-packages/paramiko/ber.py new file mode 100644 index 0000000..b8287f5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/ber.py @@ -0,0 +1,139 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +from paramiko.common import max_byte, zero_byte, byte_ord, byte_chr + +import paramiko.util as util +from paramiko.util import b +from paramiko.sftp import int64 + + +class BERException(Exception): + pass + + +class BER: + """ + Robey's tiny little attempt at a BER decoder. + """ + + def __init__(self, content=bytes()): + self.content = b(content) + self.idx = 0 + + def asbytes(self): + return self.content + + def __str__(self): + return self.asbytes() + + def __repr__(self): + return "BER('" + repr(self.content) + "')" + + def decode(self): + return self.decode_next() + + def decode_next(self): + if self.idx >= len(self.content): + return None + ident = byte_ord(self.content[self.idx]) + self.idx += 1 + if (ident & 31) == 31: + # identifier > 30 + ident = 0 + while self.idx < len(self.content): + t = byte_ord(self.content[self.idx]) + self.idx += 1 + ident = (ident << 7) | (t & 0x7F) + if not (t & 0x80): + break + if self.idx >= len(self.content): + return None + # now fetch length + size = byte_ord(self.content[self.idx]) + self.idx += 1 + if size & 0x80: + # more complimicated... + # FIXME: theoretically should handle indefinite-length (0x80) + t = size & 0x7F + if self.idx + t > len(self.content): + return None + size = util.inflate_long( + self.content[self.idx : self.idx + t], True + ) + self.idx += t + if self.idx + size > len(self.content): + # can't fit + return None + data = self.content[self.idx : self.idx + size] + self.idx += size + # now switch on id + if ident == 0x30: + # sequence + return self.decode_sequence(data) + elif ident == 2: + # int + return util.inflate_long(data) + else: + # 1: boolean (00 false, otherwise true) + msg = "Unknown ber encoding type {:d} (robey is lazy)" + raise BERException(msg.format(ident)) + + @staticmethod + def decode_sequence(data): + out = [] + ber = BER(data) + while True: + x = ber.decode_next() + if x is None: + break + out.append(x) + return out + + def encode_tlv(self, ident, val): + # no need to support ident > 31 here + self.content += byte_chr(ident) + if len(val) > 0x7F: + lenstr = util.deflate_long(len(val)) + self.content += byte_chr(0x80 + len(lenstr)) + lenstr + else: + self.content += byte_chr(len(val)) + self.content += val + + def encode(self, x): + if type(x) is bool: + if x: + self.encode_tlv(1, max_byte) + else: + self.encode_tlv(1, zero_byte) + elif (type(x) is int) or (type(x) is int64): + self.encode_tlv(2, util.deflate_long(x)) + elif type(x) is str: + self.encode_tlv(4, x) + elif (type(x) is list) or (type(x) is tuple): + self.encode_tlv(0x30, self.encode_sequence(x)) + else: + raise BERException( + "Unknown type for encoding: {!r}".format(type(x)) + ) + + @staticmethod + def encode_sequence(data): + ber = BER() + for item in data: + ber.encode(item) + return ber.asbytes() diff --git a/.venv/lib/python3.9/site-packages/paramiko/buffered_pipe.py b/.venv/lib/python3.9/site-packages/paramiko/buffered_pipe.py new file mode 100644 index 0000000..c19279c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/buffered_pipe.py @@ -0,0 +1,212 @@ +# Copyright (C) 2006-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Attempt to generalize the "feeder" part of a `.Channel`: an object which can be +read from and closed, but is reading from a buffer fed by another thread. The +read operations are blocking and can have a timeout set. +""" + +import array +import threading +import time +from paramiko.util import b + + +class PipeTimeout(IOError): + """ + Indicates that a timeout was reached on a read from a `.BufferedPipe`. + """ + + pass + + +class BufferedPipe: + """ + A buffer that obeys normal read (with timeout) & close semantics for a + file or socket, but is fed data from another thread. This is used by + `.Channel`. + """ + + def __init__(self): + self._lock = threading.Lock() + self._cv = threading.Condition(self._lock) + self._event = None + self._buffer = array.array("B") + self._closed = False + + def _buffer_frombytes(self, data): + self._buffer.frombytes(data) + + def _buffer_tobytes(self, limit=None): + return self._buffer[:limit].tobytes() + + def set_event(self, event): + """ + Set an event on this buffer. When data is ready to be read (or the + buffer has been closed), the event will be set. When no data is + ready, the event will be cleared. + + :param threading.Event event: the event to set/clear + """ + self._lock.acquire() + try: + self._event = event + # Make sure the event starts in `set` state if we appear to already + # be closed; otherwise, if we start in `clear` state & are closed, + # nothing will ever call `.feed` and the event (& OS pipe, if we're + # wrapping one - see `Channel.fileno`) will permanently stay in + # `clear`, causing deadlock if e.g. `select`ed upon. + if self._closed or len(self._buffer) > 0: + event.set() + else: + event.clear() + finally: + self._lock.release() + + def feed(self, data): + """ + Feed new data into this pipe. This method is assumed to be called + from a separate thread, so synchronization is done. + + :param data: the data to add, as a ``str`` or ``bytes`` + """ + self._lock.acquire() + try: + if self._event is not None: + self._event.set() + self._buffer_frombytes(b(data)) + self._cv.notify_all() + finally: + self._lock.release() + + def read_ready(self): + """ + Returns true if data is buffered and ready to be read from this + feeder. A ``False`` result does not mean that the feeder has closed; + it means you may need to wait before more data arrives. + + :return: + ``True`` if a `read` call would immediately return at least one + byte; ``False`` otherwise. + """ + self._lock.acquire() + try: + if len(self._buffer) == 0: + return False + return True + finally: + self._lock.release() + + def read(self, nbytes, timeout=None): + """ + Read data from the pipe. The return value is a string representing + the data received. The maximum amount of data to be received at once + is specified by ``nbytes``. If a string of length zero is returned, + the pipe has been closed. + + The optional ``timeout`` argument can be a nonnegative float expressing + seconds, or ``None`` for no timeout. If a float is given, a + `.PipeTimeout` will be raised if the timeout period value has elapsed + before any data arrives. + + :param int nbytes: maximum number of bytes to read + :param float timeout: + maximum seconds to wait (or ``None``, the default, to wait forever) + :return: the read data, as a ``str`` or ``bytes`` + + :raises: + `.PipeTimeout` -- if a timeout was specified and no data was ready + before that timeout + """ + out = bytes() + self._lock.acquire() + try: + if len(self._buffer) == 0: + if self._closed: + return out + # should we block? + if timeout == 0.0: + raise PipeTimeout() + # loop here in case we get woken up but a different thread has + # grabbed everything in the buffer. + while (len(self._buffer) == 0) and not self._closed: + then = time.time() + self._cv.wait(timeout) + if timeout is not None: + timeout -= time.time() - then + if timeout <= 0.0: + raise PipeTimeout() + + # something's in the buffer and we have the lock! + if len(self._buffer) <= nbytes: + out = self._buffer_tobytes() + del self._buffer[:] + if (self._event is not None) and not self._closed: + self._event.clear() + else: + out = self._buffer_tobytes(nbytes) + del self._buffer[:nbytes] + finally: + self._lock.release() + + return out + + def empty(self): + """ + Clear out the buffer and return all data that was in it. + + :return: + any data that was in the buffer prior to clearing it out, as a + `str` + """ + self._lock.acquire() + try: + out = self._buffer_tobytes() + del self._buffer[:] + if (self._event is not None) and not self._closed: + self._event.clear() + return out + finally: + self._lock.release() + + def close(self): + """ + Close this pipe object. Future calls to `read` after the buffer + has been emptied will return immediately with an empty string. + """ + self._lock.acquire() + try: + self._closed = True + self._cv.notify_all() + if self._event is not None: + self._event.set() + finally: + self._lock.release() + + def __len__(self): + """ + Return the number of bytes buffered. + + :return: number (`int`) of bytes buffered + """ + self._lock.acquire() + try: + return len(self._buffer) + finally: + self._lock.release() diff --git a/.venv/lib/python3.9/site-packages/paramiko/channel.py b/.venv/lib/python3.9/site-packages/paramiko/channel.py new file mode 100644 index 0000000..25326ca --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/channel.py @@ -0,0 +1,1390 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Abstraction for an SSH2 channel. +""" + +import binascii +import os +import socket +import time +import threading + +from functools import wraps + +from paramiko import util +from paramiko.common import ( + cMSG_CHANNEL_REQUEST, + cMSG_CHANNEL_WINDOW_ADJUST, + cMSG_CHANNEL_DATA, + cMSG_CHANNEL_EXTENDED_DATA, + DEBUG, + ERROR, + cMSG_CHANNEL_SUCCESS, + cMSG_CHANNEL_FAILURE, + cMSG_CHANNEL_EOF, + cMSG_CHANNEL_CLOSE, +) +from paramiko.message import Message +from paramiko.ssh_exception import SSHException +from paramiko.file import BufferedFile +from paramiko.buffered_pipe import BufferedPipe, PipeTimeout +from paramiko import pipe +from paramiko.util import ClosingContextManager + + +def open_only(func): + """ + Decorator for `.Channel` methods which performs an openness check. + + :raises: + `.SSHException` -- If the wrapped method is called on an unopened + `.Channel`. + """ + + @wraps(func) + def _check(self, *args, **kwds): + if ( + self.closed + or self.eof_received + or self.eof_sent + or not self.active + ): + raise SSHException("Channel is not open") + return func(self, *args, **kwds) + + return _check + + +class Channel(ClosingContextManager): + """ + A secure tunnel across an SSH `.Transport`. A Channel is meant to behave + like a socket, and has an API that should be indistinguishable from the + Python socket API. + + Because SSH2 has a windowing kind of flow control, if you stop reading data + from a Channel and its buffer fills up, the server will be unable to send + you any more data until you read some of it. (This won't affect other + channels on the same transport -- all channels on a single transport are + flow-controlled independently.) Similarly, if the server isn't reading + data you send, calls to `send` may block, unless you set a timeout. This + is exactly like a normal network socket, so it shouldn't be too surprising. + + Instances of this class may be used as context managers. + """ + + def __init__(self, chanid): + """ + Create a new channel. The channel is not associated with any + particular session or `.Transport` until the Transport attaches it. + Normally you would only call this method from the constructor of a + subclass of `.Channel`. + + :param int chanid: + the ID of this channel, as passed by an existing `.Transport`. + """ + #: Channel ID + self.chanid = chanid + #: Remote channel ID + self.remote_chanid = 0 + #: `.Transport` managing this channel + self.transport = None + #: Whether the connection is presently active + self.active = False + self.eof_received = 0 + self.eof_sent = 0 + self.in_buffer = BufferedPipe() + self.in_stderr_buffer = BufferedPipe() + self.timeout = None + #: Whether the connection has been closed + self.closed = False + self.ultra_debug = False + self.lock = threading.Lock() + self.out_buffer_cv = threading.Condition(self.lock) + self.in_window_size = 0 + self.out_window_size = 0 + self.in_max_packet_size = 0 + self.out_max_packet_size = 0 + self.in_window_threshold = 0 + self.in_window_sofar = 0 + self.status_event = threading.Event() + self._name = str(chanid) + self.logger = util.get_logger("paramiko.transport") + self._pipe = None + self.event = threading.Event() + self.event_ready = False + self.combine_stderr = False + self.exit_status = -1 + self.origin_addr = None + + def __del__(self): + try: + self.close() + except: + pass + + def __repr__(self): + """ + Return a string representation of this object, for debugging. + """ + out = " 0: + out += " in-buffer={}".format(len(self.in_buffer)) + out += " -> " + repr(self.transport) + out += ">" + return out + + @open_only + def get_pty( + self, + term="vt100", + width=80, + height=24, + width_pixels=0, + height_pixels=0, + ): + """ + Request a pseudo-terminal from the server. This is usually used right + after creating a client channel, to ask the server to provide some + basic terminal semantics for a shell invoked with `invoke_shell`. + It isn't necessary (or desirable) to call this method if you're going + to execute a single command with `exec_command`. + + :param str term: the terminal type to emulate + (for example, ``'vt100'``) + :param int width: width (in characters) of the terminal screen + :param int height: height (in characters) of the terminal screen + :param int width_pixels: width (in pixels) of the terminal screen + :param int height_pixels: height (in pixels) of the terminal screen + + :raises: + `.SSHException` -- if the request was rejected or the channel was + closed + """ + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("pty-req") + m.add_boolean(True) + m.add_string(term) + m.add_int(width) + m.add_int(height) + m.add_int(width_pixels) + m.add_int(height_pixels) + m.add_string(bytes()) + self._event_pending() + self.transport._send_user_message(m) + self._wait_for_event() + + @open_only + def invoke_shell(self): + """ + Request an interactive shell session on this channel. If the server + allows it, the channel will then be directly connected to the stdin, + stdout, and stderr of the shell. + + Normally you would call `get_pty` before this, in which case the + shell will operate through the pty, and the channel will be connected + to the stdin and stdout of the pty. + + When the shell exits, the channel will be closed and can't be reused. + You must open a new channel if you wish to open another shell. + + :raises: + `.SSHException` -- if the request was rejected or the channel was + closed + """ + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("shell") + m.add_boolean(True) + self._event_pending() + self.transport._send_user_message(m) + self._wait_for_event() + + @open_only + def exec_command(self, command): + """ + Execute a command on the server. If the server allows it, the channel + will then be directly connected to the stdin, stdout, and stderr of + the command being executed. + + When the command finishes executing, the channel will be closed and + can't be reused. You must open a new channel if you wish to execute + another command. + + :param str command: a shell command to execute. + + :raises: + `.SSHException` -- if the request was rejected or the channel was + closed + """ + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("exec") + m.add_boolean(True) + m.add_string(command) + self._event_pending() + self.transport._send_user_message(m) + self._wait_for_event() + + @open_only + def invoke_subsystem(self, subsystem): + """ + Request a subsystem on the server (for example, ``sftp``). If the + server allows it, the channel will then be directly connected to the + requested subsystem. + + When the subsystem finishes, the channel will be closed and can't be + reused. + + :param str subsystem: name of the subsystem being requested. + + :raises: + `.SSHException` -- if the request was rejected or the channel was + closed + """ + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("subsystem") + m.add_boolean(True) + m.add_string(subsystem) + self._event_pending() + self.transport._send_user_message(m) + self._wait_for_event() + + @open_only + def resize_pty(self, width=80, height=24, width_pixels=0, height_pixels=0): + """ + Resize the pseudo-terminal. This can be used to change the width and + height of the terminal emulation created in a previous `get_pty` call. + + :param int width: new width (in characters) of the terminal screen + :param int height: new height (in characters) of the terminal screen + :param int width_pixels: new width (in pixels) of the terminal screen + :param int height_pixels: new height (in pixels) of the terminal screen + + :raises: + `.SSHException` -- if the request was rejected or the channel was + closed + """ + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("window-change") + m.add_boolean(False) + m.add_int(width) + m.add_int(height) + m.add_int(width_pixels) + m.add_int(height_pixels) + self.transport._send_user_message(m) + + @open_only + def update_environment(self, environment): + """ + Updates this channel's remote shell environment. + + .. note:: + This operation is additive - i.e. the current environment is not + reset before the given environment variables are set. + + .. warning:: + Servers may silently reject some environment variables; see the + warning in `set_environment_variable` for details. + + :param dict environment: + a dictionary containing the name and respective values to set + :raises: + `.SSHException` -- if any of the environment variables was rejected + by the server or the channel was closed + """ + for name, value in environment.items(): + try: + self.set_environment_variable(name, value) + except SSHException as e: + err = 'Failed to set environment variable "{}".' + raise SSHException(err.format(name), e) + + @open_only + def set_environment_variable(self, name, value): + """ + Set the value of an environment variable. + + .. warning:: + The server may reject this request depending on its ``AcceptEnv`` + setting; such rejections will fail silently (which is common client + practice for this particular request type). Make sure you + understand your server's configuration before using! + + :param str name: name of the environment variable + :param str value: value of the environment variable + + :raises: + `.SSHException` -- if the request was rejected or the channel was + closed + """ + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("env") + m.add_boolean(False) + m.add_string(name) + m.add_string(value) + self.transport._send_user_message(m) + + def exit_status_ready(self): + """ + Return true if the remote process has exited and returned an exit + status. You may use this to poll the process status if you don't + want to block in `recv_exit_status`. Note that the server may not + return an exit status in some cases (like bad servers). + + :return: + ``True`` if `recv_exit_status` will return immediately, else + ``False``. + + .. versionadded:: 1.7.3 + """ + return self.closed or self.status_event.is_set() + + def recv_exit_status(self): + """ + Return the exit status from the process on the server. This is + mostly useful for retrieving the results of an `exec_command`. + If the command hasn't finished yet, this method will wait until + it does, or until the channel is closed. If no exit status is + provided by the server, -1 is returned. + + .. warning:: + In some situations, receiving remote output larger than the current + `.Transport` or session's ``window_size`` (e.g. that set by the + ``default_window_size`` kwarg for `.Transport.__init__`) will cause + `.recv_exit_status` to hang indefinitely if it is called prior to a + sufficiently large `.Channel.recv` (or if there are no threads + calling `.Channel.recv` in the background). + + In these cases, ensuring that `.recv_exit_status` is called *after* + `.Channel.recv` (or, again, using threads) can avoid the hang. + + :return: the exit code (as an `int`) of the process on the server. + + .. versionadded:: 1.2 + """ + self.status_event.wait() + assert self.status_event.is_set() + return self.exit_status + + def send_exit_status(self, status): + """ + Send the exit status of an executed command to the client. (This + really only makes sense in server mode.) Many clients expect to + get some sort of status code back from an executed command after + it completes. + + :param int status: the exit code of the process + + .. versionadded:: 1.2 + """ + # in many cases, the channel will not still be open here. + # that's fine. + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("exit-status") + m.add_boolean(False) + m.add_int(status) + self.transport._send_user_message(m) + + @open_only + def request_x11( + self, + screen_number=0, + auth_protocol=None, + auth_cookie=None, + single_connection=False, + handler=None, + ): + """ + Request an x11 session on this channel. If the server allows it, + further x11 requests can be made from the server to the client, + when an x11 application is run in a shell session. + + From :rfc:`4254`:: + + It is RECOMMENDED that the 'x11 authentication cookie' that is + sent be a fake, random cookie, and that the cookie be checked and + replaced by the real cookie when a connection request is received. + + If you omit the auth_cookie, a new secure random 128-bit value will be + generated, used, and returned. You will need to use this value to + verify incoming x11 requests and replace them with the actual local + x11 cookie (which requires some knowledge of the x11 protocol). + + If a handler is passed in, the handler is called from another thread + whenever a new x11 connection arrives. The default handler queues up + incoming x11 connections, which may be retrieved using + `.Transport.accept`. The handler's calling signature is:: + + handler(channel: Channel, (address: str, port: int)) + + :param int screen_number: the x11 screen number (0, 10, etc.) + :param str auth_protocol: + the name of the X11 authentication method used; if none is given, + ``"MIT-MAGIC-COOKIE-1"`` is used + :param str auth_cookie: + hexadecimal string containing the x11 auth cookie; if none is + given, a secure random 128-bit value is generated + :param bool single_connection: + if True, only a single x11 connection will be forwarded (by + default, any number of x11 connections can arrive over this + session) + :param handler: + an optional callable handler to use for incoming X11 connections + :return: the auth_cookie used + """ + if auth_protocol is None: + auth_protocol = "MIT-MAGIC-COOKIE-1" + if auth_cookie is None: + auth_cookie = binascii.hexlify(os.urandom(16)) + + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("x11-req") + m.add_boolean(True) + m.add_boolean(single_connection) + m.add_string(auth_protocol) + m.add_string(auth_cookie) + m.add_int(screen_number) + self._event_pending() + self.transport._send_user_message(m) + self._wait_for_event() + self.transport._set_x11_handler(handler) + return auth_cookie + + @open_only + def request_forward_agent(self, handler): + """ + Request for a forward SSH Agent on this channel. + This is only valid for an ssh-agent from OpenSSH !!! + + :param handler: + a required callable handler to use for incoming SSH Agent + connections + + :return: True if we are ok, else False + (at that time we always return ok) + + :raises: SSHException in case of channel problem. + """ + m = Message() + m.add_byte(cMSG_CHANNEL_REQUEST) + m.add_int(self.remote_chanid) + m.add_string("auth-agent-req@openssh.com") + m.add_boolean(False) + self.transport._send_user_message(m) + self.transport._set_forward_agent_handler(handler) + return True + + def get_transport(self): + """ + Return the `.Transport` associated with this channel. + """ + return self.transport + + def set_name(self, name): + """ + Set a name for this channel. Currently it's only used to set the name + of the channel in logfile entries. The name can be fetched with the + `get_name` method. + + :param str name: new channel name + """ + self._name = name + + def get_name(self): + """ + Get the name of this channel that was previously set by `set_name`. + """ + return self._name + + def get_id(self): + """ + Return the `int` ID # for this channel. + + The channel ID is unique across a `.Transport` and usually a small + number. It's also the number passed to + `.ServerInterface.check_channel_request` when determining whether to + accept a channel request in server mode. + """ + return self.chanid + + def set_combine_stderr(self, combine): + """ + Set whether stderr should be combined into stdout on this channel. + The default is ``False``, but in some cases it may be convenient to + have both streams combined. + + If this is ``False``, and `exec_command` is called (or ``invoke_shell`` + with no pty), output to stderr will not show up through the `recv` + and `recv_ready` calls. You will have to use `recv_stderr` and + `recv_stderr_ready` to get stderr output. + + If this is ``True``, data will never show up via `recv_stderr` or + `recv_stderr_ready`. + + :param bool combine: + ``True`` if stderr output should be combined into stdout on this + channel. + :return: the previous setting (a `bool`). + + .. versionadded:: 1.1 + """ + data = bytes() + self.lock.acquire() + try: + old = self.combine_stderr + self.combine_stderr = combine + if combine and not old: + # copy old stderr buffer into primary buffer + data = self.in_stderr_buffer.empty() + finally: + self.lock.release() + if len(data) > 0: + self._feed(data) + return old + + # ...socket API... + + def settimeout(self, timeout): + """ + Set a timeout on blocking read/write operations. The ``timeout`` + argument can be a nonnegative float expressing seconds, or ``None``. + If a float is given, subsequent channel read/write operations will + raise a timeout exception if the timeout period value has elapsed + before the operation has completed. Setting a timeout of ``None`` + disables timeouts on socket operations. + + ``chan.settimeout(0.0)`` is equivalent to ``chan.setblocking(0)``; + ``chan.settimeout(None)`` is equivalent to ``chan.setblocking(1)``. + + :param float timeout: + seconds to wait for a pending read/write operation before raising + ``socket.timeout``, or ``None`` for no timeout. + """ + self.timeout = timeout + + def gettimeout(self): + """ + Returns the timeout in seconds (as a float) associated with socket + operations, or ``None`` if no timeout is set. This reflects the last + call to `setblocking` or `settimeout`. + """ + return self.timeout + + def setblocking(self, blocking): + """ + Set blocking or non-blocking mode of the channel: if ``blocking`` is 0, + the channel is set to non-blocking mode; otherwise it's set to blocking + mode. Initially all channels are in blocking mode. + + In non-blocking mode, if a `recv` call doesn't find any data, or if a + `send` call can't immediately dispose of the data, an error exception + is raised. In blocking mode, the calls block until they can proceed. An + EOF condition is considered "immediate data" for `recv`, so if the + channel is closed in the read direction, it will never block. + + ``chan.setblocking(0)`` is equivalent to ``chan.settimeout(0)``; + ``chan.setblocking(1)`` is equivalent to ``chan.settimeout(None)``. + + :param int blocking: + 0 to set non-blocking mode; non-0 to set blocking mode. + """ + if blocking: + self.settimeout(None) + else: + self.settimeout(0.0) + + def getpeername(self): + """ + Return the address of the remote side of this Channel, if possible. + + This simply wraps `.Transport.getpeername`, used to provide enough of a + socket-like interface to allow asyncore to work. (asyncore likes to + call ``'getpeername'``.) + """ + return self.transport.getpeername() + + def close(self): + """ + Close the channel. All future read/write operations on the channel + will fail. The remote end will receive no more data (after queued data + is flushed). Channels are automatically closed when their `.Transport` + is closed or when they are garbage collected. + """ + self.lock.acquire() + try: + # only close the pipe when the user explicitly closes the channel. + # otherwise they will get unpleasant surprises. (and do it before + # checking self.closed, since the remote host may have already + # closed the connection.) + if self._pipe is not None: + self._pipe.close() + self._pipe = None + + if not self.active or self.closed: + return + msgs = self._close_internal() + finally: + self.lock.release() + for m in msgs: + if m is not None: + self.transport._send_user_message(m) + + def recv_ready(self): + """ + Returns true if data is buffered and ready to be read from this + channel. A ``False`` result does not mean that the channel has closed; + it means you may need to wait before more data arrives. + + :return: + ``True`` if a `recv` call on this channel would immediately return + at least one byte; ``False`` otherwise. + """ + return self.in_buffer.read_ready() + + def recv(self, nbytes): + """ + Receive data from the channel. The return value is a string + representing the data received. The maximum amount of data to be + received at once is specified by ``nbytes``. If a string of + length zero is returned, the channel stream has closed. + + :param int nbytes: maximum number of bytes to read. + :return: received data, as a `bytes`. + + :raises socket.timeout: + if no data is ready before the timeout set by `settimeout`. + """ + try: + out = self.in_buffer.read(nbytes, self.timeout) + except PipeTimeout: + raise socket.timeout() + + ack = self._check_add_window(len(out)) + # no need to hold the channel lock when sending this + if ack > 0: + m = Message() + m.add_byte(cMSG_CHANNEL_WINDOW_ADJUST) + m.add_int(self.remote_chanid) + m.add_int(ack) + self.transport._send_user_message(m) + + return out + + def recv_stderr_ready(self): + """ + Returns true if data is buffered and ready to be read from this + channel's stderr stream. Only channels using `exec_command` or + `invoke_shell` without a pty will ever have data on the stderr + stream. + + :return: + ``True`` if a `recv_stderr` call on this channel would immediately + return at least one byte; ``False`` otherwise. + + .. versionadded:: 1.1 + """ + return self.in_stderr_buffer.read_ready() + + def recv_stderr(self, nbytes): + """ + Receive data from the channel's stderr stream. Only channels using + `exec_command` or `invoke_shell` without a pty will ever have data + on the stderr stream. The return value is a string representing the + data received. The maximum amount of data to be received at once is + specified by ``nbytes``. If a string of length zero is returned, the + channel stream has closed. + + :param int nbytes: maximum number of bytes to read. + :return: received data as a `bytes` + + :raises socket.timeout: if no data is ready before the timeout set by + `settimeout`. + + .. versionadded:: 1.1 + """ + try: + out = self.in_stderr_buffer.read(nbytes, self.timeout) + except PipeTimeout: + raise socket.timeout() + + ack = self._check_add_window(len(out)) + # no need to hold the channel lock when sending this + if ack > 0: + m = Message() + m.add_byte(cMSG_CHANNEL_WINDOW_ADJUST) + m.add_int(self.remote_chanid) + m.add_int(ack) + self.transport._send_user_message(m) + + return out + + def send_ready(self): + """ + Returns true if data can be written to this channel without blocking. + This means the channel is either closed (so any write attempt would + return immediately) or there is at least one byte of space in the + outbound buffer. If there is at least one byte of space in the + outbound buffer, a `send` call will succeed immediately and return + the number of bytes actually written. + + :return: + ``True`` if a `send` call on this channel would immediately succeed + or fail + """ + self.lock.acquire() + try: + if self.closed or self.eof_sent: + return True + return self.out_window_size > 0 + finally: + self.lock.release() + + def send(self, s): + """ + Send data to the channel. Returns the number of bytes sent, or 0 if + the channel stream is closed. Applications are responsible for + checking that all data has been sent: if only some of the data was + transmitted, the application needs to attempt delivery of the remaining + data. + + :param bytes s: data to send + :return: number of bytes actually sent, as an `int` + + :raises socket.timeout: if no data could be sent before the timeout set + by `settimeout`. + """ + + m = Message() + m.add_byte(cMSG_CHANNEL_DATA) + m.add_int(self.remote_chanid) + return self._send(s, m) + + def send_stderr(self, s): + """ + Send data to the channel on the "stderr" stream. This is normally + only used by servers to send output from shell commands -- clients + won't use this. Returns the number of bytes sent, or 0 if the channel + stream is closed. Applications are responsible for checking that all + data has been sent: if only some of the data was transmitted, the + application needs to attempt delivery of the remaining data. + + :param bytes s: data to send. + :return: number of bytes actually sent, as an `int`. + + :raises socket.timeout: + if no data could be sent before the timeout set by `settimeout`. + + .. versionadded:: 1.1 + """ + + m = Message() + m.add_byte(cMSG_CHANNEL_EXTENDED_DATA) + m.add_int(self.remote_chanid) + m.add_int(1) + return self._send(s, m) + + def sendall(self, s): + """ + Send data to the channel, without allowing partial results. Unlike + `send`, this method continues to send data from the given string until + either all data has been sent or an error occurs. Nothing is returned. + + :param bytes s: data to send. + + :raises socket.timeout: + if sending stalled for longer than the timeout set by `settimeout`. + :raises socket.error: + if an error occurred before the entire string was sent. + + .. note:: + If the channel is closed while only part of the data has been + sent, there is no way to determine how much data (if any) was sent. + This is irritating, but identically follows Python's API. + """ + while s: + sent = self.send(s) + s = s[sent:] + return None + + def sendall_stderr(self, s): + """ + Send data to the channel's "stderr" stream, without allowing partial + results. Unlike `send_stderr`, this method continues to send data + from the given bytestring until all data has been sent or an error + occurs. Nothing is returned. + + :param bytes s: data to send to the client as "stderr" output. + + :raises socket.timeout: + if sending stalled for longer than the timeout set by `settimeout`. + :raises socket.error: + if an error occurred before the entire string was sent. + + .. versionadded:: 1.1 + """ + while s: + sent = self.send_stderr(s) + s = s[sent:] + return None + + def makefile(self, *params): + """ + Return a file-like object associated with this channel. The optional + ``mode`` and ``bufsize`` arguments are interpreted the same way as by + the built-in ``file()`` function in Python. + + :return: `.ChannelFile` object which can be used for Python file I/O. + """ + return ChannelFile(*([self] + list(params))) + + def makefile_stderr(self, *params): + """ + Return a file-like object associated with this channel's stderr + stream. Only channels using `exec_command` or `invoke_shell` + without a pty will ever have data on the stderr stream. + + The optional ``mode`` and ``bufsize`` arguments are interpreted the + same way as by the built-in ``file()`` function in Python. For a + client, it only makes sense to open this file for reading. For a + server, it only makes sense to open this file for writing. + + :returns: + `.ChannelStderrFile` object which can be used for Python file I/O. + + .. versionadded:: 1.1 + """ + return ChannelStderrFile(*([self] + list(params))) + + def makefile_stdin(self, *params): + """ + Return a file-like object associated with this channel's stdin + stream. + + The optional ``mode`` and ``bufsize`` arguments are interpreted the + same way as by the built-in ``file()`` function in Python. For a + client, it only makes sense to open this file for writing. For a + server, it only makes sense to open this file for reading. + + :returns: + `.ChannelStdinFile` object which can be used for Python file I/O. + + .. versionadded:: 2.6 + """ + return ChannelStdinFile(*([self] + list(params))) + + def fileno(self): + """ + Returns an OS-level file descriptor which can be used for polling, but + but not for reading or writing. This is primarily to allow Python's + ``select`` module to work. + + The first time ``fileno`` is called on a channel, a pipe is created to + simulate real OS-level file descriptor (FD) behavior. Because of this, + two OS-level FDs are created, which will use up FDs faster than normal. + (You won't notice this effect unless you have hundreds of channels + open at the same time.) + + :return: an OS-level file descriptor (`int`) + + .. warning:: + This method causes channel reads to be slightly less efficient. + """ + self.lock.acquire() + try: + if self._pipe is not None: + return self._pipe.fileno() + # create the pipe and feed in any existing data + self._pipe = pipe.make_pipe() + p1, p2 = pipe.make_or_pipe(self._pipe) + self.in_buffer.set_event(p1) + self.in_stderr_buffer.set_event(p2) + return self._pipe.fileno() + finally: + self.lock.release() + + def shutdown(self, how): + """ + Shut down one or both halves of the connection. If ``how`` is 0, + further receives are disallowed. If ``how`` is 1, further sends + are disallowed. If ``how`` is 2, further sends and receives are + disallowed. This closes the stream in one or both directions. + + :param int how: + 0 (stop receiving), 1 (stop sending), or 2 (stop receiving and + sending). + """ + if (how == 0) or (how == 2): + # feign "read" shutdown + self.eof_received = 1 + if (how == 1) or (how == 2): + self.lock.acquire() + try: + m = self._send_eof() + finally: + self.lock.release() + if m is not None and self.transport is not None: + self.transport._send_user_message(m) + + def shutdown_read(self): + """ + Shutdown the receiving side of this socket, closing the stream in + the incoming direction. After this call, future reads on this + channel will fail instantly. This is a convenience method, equivalent + to ``shutdown(0)``, for people who don't make it a habit to + memorize unix constants from the 1970s. + + .. versionadded:: 1.2 + """ + self.shutdown(0) + + def shutdown_write(self): + """ + Shutdown the sending side of this socket, closing the stream in + the outgoing direction. After this call, future writes on this + channel will fail instantly. This is a convenience method, equivalent + to ``shutdown(1)``, for people who don't make it a habit to + memorize unix constants from the 1970s. + + .. versionadded:: 1.2 + """ + self.shutdown(1) + + @property + def _closed(self): + # Concession to Python 3's socket API, which has a private ._closed + # attribute instead of a semipublic .closed attribute. + return self.closed + + # ...calls from Transport + + def _set_transport(self, transport): + self.transport = transport + self.logger = util.get_logger(self.transport.get_log_channel()) + + def _set_window(self, window_size, max_packet_size): + self.in_window_size = window_size + self.in_max_packet_size = max_packet_size + # threshold of bytes we receive before we bother to send + # a window update + self.in_window_threshold = window_size // 10 + self.in_window_sofar = 0 + self._log(DEBUG, "Max packet in: {} bytes".format(max_packet_size)) + + def _set_remote_channel(self, chanid, window_size, max_packet_size): + self.remote_chanid = chanid + self.out_window_size = window_size + self.out_max_packet_size = self.transport._sanitize_packet_size( + max_packet_size + ) + self.active = 1 + self._log( + DEBUG, "Max packet out: {} bytes".format(self.out_max_packet_size) + ) + + def _request_success(self, m): + self._log(DEBUG, "Sesch channel {} request ok".format(self.chanid)) + self.event_ready = True + self.event.set() + return + + def _request_failed(self, m): + self.lock.acquire() + try: + msgs = self._close_internal() + finally: + self.lock.release() + for m in msgs: + if m is not None: + self.transport._send_user_message(m) + + def _feed(self, m): + if isinstance(m, bytes): + # passed from _feed_extended + s = m + else: + s = m.get_binary() + self.in_buffer.feed(s) + + def _feed_extended(self, m): + code = m.get_int() + s = m.get_binary() + if code != 1: + self._log( + ERROR, "unknown extended_data type {}; discarding".format(code) + ) + return + if self.combine_stderr: + self._feed(s) + else: + self.in_stderr_buffer.feed(s) + + def _window_adjust(self, m): + nbytes = m.get_int() + self.lock.acquire() + try: + if self.ultra_debug: + self._log(DEBUG, "window up {}".format(nbytes)) + self.out_window_size += nbytes + self.out_buffer_cv.notify_all() + finally: + self.lock.release() + + def _handle_request(self, m): + key = m.get_text() + want_reply = m.get_boolean() + server = self.transport.server_object + ok = False + if key == "exit-status": + self.exit_status = m.get_int() + self.status_event.set() + ok = True + elif key == "xon-xoff": + # ignore + ok = True + elif key == "pty-req": + term = m.get_string() + width = m.get_int() + height = m.get_int() + pixelwidth = m.get_int() + pixelheight = m.get_int() + modes = m.get_string() + if server is None: + ok = False + else: + ok = server.check_channel_pty_request( + self, term, width, height, pixelwidth, pixelheight, modes + ) + elif key == "shell": + if server is None: + ok = False + else: + ok = server.check_channel_shell_request(self) + elif key == "env": + name = m.get_string() + value = m.get_string() + if server is None: + ok = False + else: + ok = server.check_channel_env_request(self, name, value) + elif key == "exec": + cmd = m.get_string() + if server is None: + ok = False + else: + ok = server.check_channel_exec_request(self, cmd) + elif key == "subsystem": + name = m.get_text() + if server is None: + ok = False + else: + ok = server.check_channel_subsystem_request(self, name) + elif key == "window-change": + width = m.get_int() + height = m.get_int() + pixelwidth = m.get_int() + pixelheight = m.get_int() + if server is None: + ok = False + else: + ok = server.check_channel_window_change_request( + self, width, height, pixelwidth, pixelheight + ) + elif key == "x11-req": + single_connection = m.get_boolean() + auth_proto = m.get_text() + auth_cookie = m.get_binary() + screen_number = m.get_int() + if server is None: + ok = False + else: + ok = server.check_channel_x11_request( + self, + single_connection, + auth_proto, + auth_cookie, + screen_number, + ) + elif key == "auth-agent-req@openssh.com": + if server is None: + ok = False + else: + ok = server.check_channel_forward_agent_request(self) + else: + self._log(DEBUG, 'Unhandled channel request "{}"'.format(key)) + ok = False + if want_reply: + m = Message() + if ok: + m.add_byte(cMSG_CHANNEL_SUCCESS) + else: + m.add_byte(cMSG_CHANNEL_FAILURE) + m.add_int(self.remote_chanid) + self.transport._send_user_message(m) + + def _handle_eof(self, m): + self.lock.acquire() + try: + if not self.eof_received: + self.eof_received = True + self.in_buffer.close() + self.in_stderr_buffer.close() + if self._pipe is not None: + self._pipe.set_forever() + finally: + self.lock.release() + self._log(DEBUG, "EOF received ({})".format(self._name)) + + def _handle_close(self, m): + self.lock.acquire() + try: + msgs = self._close_internal() + self.transport._unlink_channel(self.chanid) + finally: + self.lock.release() + for m in msgs: + if m is not None: + self.transport._send_user_message(m) + + # ...internals... + + def _send(self, s, m): + size = len(s) + self.lock.acquire() + try: + if self.closed: + # this doesn't seem useful, but it is the documented behavior + # of Socket + raise socket.error("Socket is closed") + size = self._wait_for_send_window(size) + if size == 0: + # eof or similar + return 0 + m.add_string(s[:size]) + finally: + self.lock.release() + # Note: We release self.lock before calling _send_user_message. + # Otherwise, we can deadlock during re-keying. + self.transport._send_user_message(m) + return size + + def _log(self, level, msg, *args): + self.logger.log(level, "[chan " + self._name + "] " + msg, *args) + + def _event_pending(self): + self.event.clear() + self.event_ready = False + + def _wait_for_event(self): + self.event.wait() + assert self.event.is_set() + if self.event_ready: + return + e = self.transport.get_exception() + if e is None: + e = SSHException("Channel closed.") + raise e + + def _set_closed(self): + # you are holding the lock. + self.closed = True + self.in_buffer.close() + self.in_stderr_buffer.close() + self.out_buffer_cv.notify_all() + # Notify any waiters that we are closed + self.event.set() + self.status_event.set() + if self._pipe is not None: + self._pipe.set_forever() + + def _send_eof(self): + # you are holding the lock. + if self.eof_sent: + return None + m = Message() + m.add_byte(cMSG_CHANNEL_EOF) + m.add_int(self.remote_chanid) + self.eof_sent = True + self._log(DEBUG, "EOF sent ({})".format(self._name)) + return m + + def _close_internal(self): + # you are holding the lock. + if not self.active or self.closed: + return None, None + m1 = self._send_eof() + m2 = Message() + m2.add_byte(cMSG_CHANNEL_CLOSE) + m2.add_int(self.remote_chanid) + self._set_closed() + # can't unlink from the Transport yet -- the remote side may still + # try to send meta-data (exit-status, etc) + return m1, m2 + + def _unlink(self): + # server connection could die before we become active: + # still signal the close! + if self.closed: + return + self.lock.acquire() + try: + self._set_closed() + self.transport._unlink_channel(self.chanid) + finally: + self.lock.release() + + def _check_add_window(self, n): + self.lock.acquire() + try: + if self.closed or self.eof_received or not self.active: + return 0 + if self.ultra_debug: + self._log(DEBUG, "addwindow {}".format(n)) + self.in_window_sofar += n + if self.in_window_sofar <= self.in_window_threshold: + return 0 + if self.ultra_debug: + self._log( + DEBUG, "addwindow send {}".format(self.in_window_sofar) + ) + out = self.in_window_sofar + self.in_window_sofar = 0 + return out + finally: + self.lock.release() + + def _wait_for_send_window(self, size): + """ + (You are already holding the lock.) + Wait for the send window to open up, and allocate up to ``size`` bytes + for transmission. If no space opens up before the timeout, a timeout + exception is raised. Returns the number of bytes available to send + (may be less than requested). + """ + # you are already holding the lock + if self.closed or self.eof_sent: + return 0 + if self.out_window_size == 0: + # should we block? + if self.timeout == 0.0: + raise socket.timeout() + # loop here in case we get woken up but a different thread has + # filled the buffer + timeout = self.timeout + while self.out_window_size == 0: + if self.closed or self.eof_sent: + return 0 + then = time.time() + self.out_buffer_cv.wait(timeout) + if timeout is not None: + timeout -= time.time() - then + if timeout <= 0.0: + raise socket.timeout() + # we have some window to squeeze into + if self.closed or self.eof_sent: + return 0 + if self.out_window_size < size: + size = self.out_window_size + if self.out_max_packet_size - 64 < size: + size = self.out_max_packet_size - 64 + self.out_window_size -= size + if self.ultra_debug: + self._log(DEBUG, "window down to {}".format(self.out_window_size)) + return size + + +class ChannelFile(BufferedFile): + """ + A file-like wrapper around `.Channel`. A ChannelFile is created by calling + `Channel.makefile`. + + .. warning:: + To correctly emulate the file object created from a socket's `makefile + ` method, a `.Channel` and its + `.ChannelFile` should be able to be closed or garbage-collected + independently. Currently, closing the `ChannelFile` does nothing but + flush the buffer. + """ + + def __init__(self, channel, mode="r", bufsize=-1): + self.channel = channel + BufferedFile.__init__(self) + self._set_mode(mode, bufsize) + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + """ + return "" + + def _read(self, size): + return self.channel.recv(size) + + def _write(self, data): + self.channel.sendall(data) + return len(data) + + +class ChannelStderrFile(ChannelFile): + """ + A file-like wrapper around `.Channel` stderr. + + See `Channel.makefile_stderr` for details. + """ + + def _read(self, size): + return self.channel.recv_stderr(size) + + def _write(self, data): + self.channel.sendall_stderr(data) + return len(data) + + +class ChannelStdinFile(ChannelFile): + """ + A file-like wrapper around `.Channel` stdin. + + See `Channel.makefile_stdin` for details. + """ + + def close(self): + super().close() + self.channel.shutdown_write() diff --git a/.venv/lib/python3.9/site-packages/paramiko/client.py b/.venv/lib/python3.9/site-packages/paramiko/client.py new file mode 100644 index 0000000..2eb9ce2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/client.py @@ -0,0 +1,854 @@ +# Copyright (C) 2006-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +SSH client & key policies +""" + +import getpass +import inspect +import os +import socket +import warnings +from binascii import hexlify +from errno import ECONNREFUSED, EHOSTUNREACH + +from paramiko.agent import Agent +from paramiko.common import DEBUG +from paramiko.config import SSH_PORT +from paramiko.ecdsakey import ECDSAKey +from paramiko.ed25519key import Ed25519Key +from paramiko.hostkeys import HostKeys +from paramiko.rsakey import RSAKey +from paramiko.ssh_exception import ( + BadHostKeyException, + NoValidConnectionsError, + SSHException, +) +from paramiko.transport import Transport +from paramiko.util import ClosingContextManager + + +class SSHClient(ClosingContextManager): + """ + A high-level representation of a session with an SSH server. This class + wraps `.Transport`, `.Channel`, and `.SFTPClient` to take care of most + aspects of authenticating and opening channels. A typical use case is:: + + client = SSHClient() + client.load_system_host_keys() + client.connect('ssh.example.com') + stdin, stdout, stderr = client.exec_command('ls -l') + + You may pass in explicit overrides for authentication and server host key + checking. The default mechanism is to try to use local key files or an + SSH agent (if one is running). + + Instances of this class may be used as context managers. + + .. versionadded:: 1.6 + """ + + def __init__(self): + """ + Create a new SSHClient. + """ + self._system_host_keys = HostKeys() + self._host_keys = HostKeys() + self._host_keys_filename = None + self._log_channel = None + self._policy = RejectPolicy() + self._transport = None + self._agent = None + + def load_system_host_keys(self, filename=None): + """ + Load host keys from a system (read-only) file. Host keys read with + this method will not be saved back by `save_host_keys`. + + This method can be called multiple times. Each new set of host keys + will be merged with the existing set (new replacing old if there are + conflicts). + + If ``filename`` is left as ``None``, an attempt will be made to read + keys from the user's local "known hosts" file, as used by OpenSSH, + and no exception will be raised if the file can't be read. This is + probably only useful on posix. + + :param str filename: the filename to read, or ``None`` + + :raises: ``IOError`` -- + if a filename was provided and the file could not be read + """ + if filename is None: + # try the user's .ssh key file, and mask exceptions + filename = os.path.expanduser("~/.ssh/known_hosts") + try: + self._system_host_keys.load(filename) + except IOError: + pass + return + self._system_host_keys.load(filename) + + def load_host_keys(self, filename): + """ + Load host keys from a local host-key file. Host keys read with this + method will be checked after keys loaded via `load_system_host_keys`, + but will be saved back by `save_host_keys` (so they can be modified). + The missing host key policy `.AutoAddPolicy` adds keys to this set and + saves them, when connecting to a previously-unknown server. + + This method can be called multiple times. Each new set of host keys + will be merged with the existing set (new replacing old if there are + conflicts). When automatically saving, the last hostname is used. + + :param str filename: the filename to read + + :raises: ``IOError`` -- if the filename could not be read + """ + self._host_keys_filename = filename + self._host_keys.load(filename) + + def save_host_keys(self, filename): + """ + Save the host keys back to a file. Only the host keys loaded with + `load_host_keys` (plus any added directly) will be saved -- not any + host keys loaded with `load_system_host_keys`. + + :param str filename: the filename to save to + + :raises: ``IOError`` -- if the file could not be written + """ + + # update local host keys from file (in case other SSH clients + # have written to the known_hosts file meanwhile. + if self._host_keys_filename is not None: + self.load_host_keys(self._host_keys_filename) + + with open(filename, "w") as f: + for hostname, keys in self._host_keys.items(): + for keytype, key in keys.items(): + f.write( + "{} {} {}\n".format( + hostname, keytype, key.get_base64() + ) + ) + + def get_host_keys(self): + """ + Get the local `.HostKeys` object. This can be used to examine the + local host keys or change them. + + :return: the local host keys as a `.HostKeys` object. + """ + return self._host_keys + + def set_log_channel(self, name): + """ + Set the channel for logging. The default is ``"paramiko.transport"`` + but it can be set to anything you want. + + :param str name: new channel name for logging + """ + self._log_channel = name + + def set_missing_host_key_policy(self, policy): + """ + Set policy to use when connecting to servers without a known host key. + + Specifically: + + * A **policy** is a "policy class" (or instance thereof), namely some + subclass of `.MissingHostKeyPolicy` such as `.RejectPolicy` (the + default), `.AutoAddPolicy`, `.WarningPolicy`, or a user-created + subclass. + * A host key is **known** when it appears in the client object's cached + host keys structures (those manipulated by `load_system_host_keys` + and/or `load_host_keys`). + + :param .MissingHostKeyPolicy policy: + the policy to use when receiving a host key from a + previously-unknown server + """ + if inspect.isclass(policy): + policy = policy() + self._policy = policy + + def _families_and_addresses(self, hostname, port): + """ + Yield pairs of address families and addresses to try for connecting. + + :param str hostname: the server to connect to + :param int port: the server port to connect to + :returns: Yields an iterable of ``(family, address)`` tuples + """ + guess = True + addrinfos = socket.getaddrinfo( + hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM + ) + for family, socktype, proto, canonname, sockaddr in addrinfos: + if socktype == socket.SOCK_STREAM: + yield family, sockaddr + guess = False + + # some OS like AIX don't indicate SOCK_STREAM support, so just + # guess. :( We only do this if we did not get a single result marked + # as socktype == SOCK_STREAM. + if guess: + for family, _, _, _, sockaddr in addrinfos: + yield family, sockaddr + + def connect( + self, + hostname, + port=SSH_PORT, + username=None, + password=None, + pkey=None, + key_filename=None, + timeout=None, + allow_agent=True, + look_for_keys=True, + compress=False, + sock=None, + banner_timeout=None, + auth_timeout=None, + channel_timeout=None, + passphrase=None, + disabled_algorithms=None, + transport_factory=None, + auth_strategy=None, + ): + """ + Connect to an SSH server and authenticate to it. The server's host key + is checked against the system host keys (see `load_system_host_keys`) + and any local host keys (`load_host_keys`). If the server's hostname + is not found in either set of host keys, the missing host key policy + is used (see `set_missing_host_key_policy`). The default policy is + to reject the key and raise an `.SSHException`. + + Authentication is attempted in the following order of priority: + + - The ``pkey`` or ``key_filename`` passed in (if any) + + - ``key_filename`` may contain OpenSSH public certificate paths + as well as regular private-key paths; when files ending in + ``-cert.pub`` are found, they are assumed to match a private + key, and both components will be loaded. (The private key + itself does *not* need to be listed in ``key_filename`` for + this to occur - *just* the certificate.) + + - Any key we can find through an SSH agent + - Any ``id_*`` keys discoverable in ``~/.ssh/`` + + - When OpenSSH-style public certificates exist that match an + existing such private key (so e.g. one has ``id_rsa`` and + ``id_rsa-cert.pub``) the certificate will be loaded alongside + the private key and used for authentication. + + - Plain username/password auth, if a password was given + + If a private key requires a password to unlock it, and a password is + passed in, that password will be used to attempt to unlock the key. + + :param str hostname: the server to connect to + :param int port: the server port to connect to + :param str username: + the username to authenticate as (defaults to the current local + username) + :param str password: + Used for password authentication; is also used for private key + decryption if ``passphrase`` is not given. + :param str passphrase: + Used for decrypting private keys. + :param .PKey pkey: an optional private key to use for authentication + :param str key_filename: + the filename, or list of filenames, of optional private key(s) + and/or certs to try for authentication + :param float timeout: + an optional timeout (in seconds) for the TCP connect + :param bool allow_agent: + set to False to disable connecting to the SSH agent + :param bool look_for_keys: + set to False to disable searching for discoverable private key + files in ``~/.ssh/`` + :param bool compress: set to True to turn on compression + :param socket sock: + an open socket or socket-like object (such as a `.Channel`) to use + for communication to the target host + :param float banner_timeout: an optional timeout (in seconds) to wait + for the SSH banner to be presented. + :param float auth_timeout: an optional timeout (in seconds) to wait for + an authentication response. + :param float channel_timeout: an optional timeout (in seconds) to wait + for a channel open response. + :param dict disabled_algorithms: + an optional dict passed directly to `.Transport` and its keyword + argument of the same name. + :param transport_factory: + an optional callable which is handed a subset of the constructor + arguments (primarily those related to the socket and algorithm + selection) and generates a `.Transport` instance to be used by this + client. Defaults to `.Transport.__init__`. + :param auth_strategy: + an optional instance of `.AuthStrategy`, triggering use of this + newer authentication mechanism instead of SSHClient's legacy auth + method. + + .. warning:: + This parameter is **incompatible** with all other + authentication-related parameters (such as, but not limited to, + ``password``, ``key_filename`` and ``allow_agent``) and will + trigger an exception if given alongside them. + + :returns: + `.AuthResult` if ``auth_strategy`` is non-``None``; otherwise, + returns ``None``. + + :raises BadHostKeyException: + if the server's host key could not be verified. + :raises AuthenticationException: + if authentication failed. + :raises UnableToAuthenticate: + if authentication failed (when ``auth_strategy`` is non-``None``; + and note that this is a subclass of ``AuthenticationException``). + :raises socket.error: + if a socket error (other than connection-refused or + host-unreachable) occurred while connecting. + :raises NoValidConnectionsError: + if all valid connection targets for the requested hostname (eg IPv4 + and IPv6) yielded connection-refused or host-unreachable socket + errors. + :raises SSHException: + if there was any other error connecting or establishing an SSH + session. + + .. versionchanged:: 1.15 + Added the ``banner_timeout`` argument. + .. versionchanged:: 2.4 + Added the ``passphrase`` argument. + .. versionchanged:: 2.6 + Added the ``disabled_algorithms`` argument. + .. versionchanged:: 2.12 + Added the ``transport_factory`` argument. + .. versionchanged:: 3.2 + Added the ``auth_strategy`` argument. + """ + if not sock: + errors = {} + # Try multiple possible address families (e.g. IPv4 vs IPv6) + to_try = list(self._families_and_addresses(hostname, port)) + for af, addr in to_try: + try: + sock = socket.socket(af, socket.SOCK_STREAM) + if timeout is not None: + try: + sock.settimeout(timeout) + except: + pass + sock.connect(addr) + # Break out of the loop on success + break + except socket.error as e: + # As mentioned in socket docs it is better + # to close sockets explicitly + if sock: + sock.close() + # Raise anything that isn't a straight up connection error + # (such as a resolution error) + if e.errno not in (ECONNREFUSED, EHOSTUNREACH): + raise + # Capture anything else so we know how the run looks once + # iteration is complete. Retain info about which attempt + # this was. + errors[addr] = e + + # Make sure we explode usefully if no address family attempts + # succeeded. We've no way of knowing which error is the "right" + # one, so we construct a hybrid exception containing all the real + # ones, of a subclass that client code should still be watching for + # (socket.error) + if len(errors) == len(to_try): + raise NoValidConnectionsError(errors) + + if transport_factory is None: + transport_factory = Transport + t = self._transport = transport_factory( + sock, + disabled_algorithms=disabled_algorithms, + ) + t.use_compression(compress=compress) + if self._log_channel is not None: + t.set_log_channel(self._log_channel) + if banner_timeout is not None: + t.banner_timeout = banner_timeout + if auth_timeout is not None: + t.auth_timeout = auth_timeout + if channel_timeout is not None: + t.channel_timeout = channel_timeout + + if port == SSH_PORT: + server_hostkey_name = hostname + else: + server_hostkey_name = "[{}]:{}".format(hostname, port) + our_server_keys = None + + our_server_keys = self._system_host_keys.get(server_hostkey_name) + if our_server_keys is None: + # TODO: this is getting us the test suite _test_connection host key + # setup by virtue of that code doing tc.get_host_keys().add() (that + # method wraps self._host_keys) + # TODO: it should be analogous to running paramiko w/ a + # ~/.ssh/known_hosts file + our_server_keys = self._host_keys.get(server_hostkey_name) + if our_server_keys is not None: + # TODO: keytype needs to turn into one of the rsa-sha2 keys if it's + # an RSAKey. + # TODO: where is the equivalent on our server-side? hopefully the + # tests exercise that lol + # TODO: also, is it just me or does this [0] mean we literally do + # not actually implement real HostKeyAlgorithms agreement like + # ssh.c does?! eesh + keytype = our_server_keys.keys()[0] + sec_opts = t.get_security_options() + # TODO: clean this up a bit, but it does help some tests pass! + if keytype == "ssh-rsa": + if "rsa-sha2-512" in sec_opts.key_types: + keytype = "rsa-sha2-512" + elif "rsa-sha2-256" in sec_opts.key_types: + keytype = "rsa-sha2-256" + else: + # TODO: vvv + raise Exception( + "TODO: REPLACEME with appropriate exception for 'what even is this key type in your known_hosts files?'" # noqa + ) + other_types = [x for x in sec_opts.key_types if x != keytype] + sec_opts.key_types = [keytype] + other_types + + t.start_client(timeout=timeout) + + server_key = t.get_remote_server_key() + if our_server_keys is None: + # will raise exception if the key is rejected + self._policy.missing_host_key( + self, server_hostkey_name, server_key + ) + else: + # TODO: this should 'just work' but dblcheck (HostKeys will be + # offering an ssh-rsa-via-sha2 key as "ssh-rsa" still, and the + # key would be RSAKey whose .get_name would still say + # "ssh-rsa") + our_key = our_server_keys.get(server_key.get_name()) + if our_key != server_key: + if our_key is None: + our_key = list(our_server_keys.values())[0] + raise BadHostKeyException(hostname, server_key, our_key) + + if username is None: + username = getpass.getuser() + + # New auth flow! + if auth_strategy is not None: + return auth_strategy.authenticate(transport=t) + + # Old auth flow! + if key_filename is None: + key_filenames = [] + elif isinstance(key_filename, str): + key_filenames = [key_filename] + else: + key_filenames = key_filename + + self._auth( + username, + password, + pkey, + key_filenames, + allow_agent, + look_for_keys, + passphrase, + ) + + def close(self): + """ + Close this SSHClient and its underlying `.Transport`. + + This should be called anytime you are done using the client object. + + .. warning:: + Paramiko registers garbage collection hooks that will try to + automatically close connections for you, but this is not presently + reliable. Failure to explicitly close your client after use may + lead to end-of-process hangs! + """ + if self._transport is None: + return + self._transport.close() + self._transport = None + + if self._agent is not None: + self._agent.close() + self._agent = None + + def exec_command( + self, + command, + bufsize=-1, + timeout=None, + get_pty=False, + environment=None, + ): + """ + Execute a command on the SSH server. A new `.Channel` is opened and + the requested command is executed. The command's input and output + streams are returned as Python ``file``-like objects representing + stdin, stdout, and stderr. + + :param str command: the command to execute + :param int bufsize: + interpreted the same way as by the built-in ``file()`` function in + Python + :param int timeout: + set command's channel timeout. See `.Channel.settimeout` + :param bool get_pty: + Request a pseudo-terminal from the server (default ``False``). + See `.Channel.get_pty` + :param dict environment: + a dict of shell environment variables, to be merged into the + default environment that the remote command executes within. + + .. warning:: + Servers may silently reject some environment variables; see the + warning in `.Channel.set_environment_variable` for details. + + :return: + the stdin, stdout, and stderr of the executing command, as a + 3-tuple + + :raises: `.SSHException` -- if the server fails to execute the command + + .. versionchanged:: 1.10 + Added the ``get_pty`` kwarg. + """ + chan = self._transport.open_session(timeout=timeout) + if get_pty: + chan.get_pty() + chan.settimeout(timeout) + if environment: + chan.update_environment(environment) + chan.exec_command(command) + stdin = chan.makefile_stdin("wb", bufsize) + stdout = chan.makefile("r", bufsize) + stderr = chan.makefile_stderr("r", bufsize) + return stdin, stdout, stderr + + def invoke_shell( + self, + term="vt100", + width=80, + height=24, + width_pixels=0, + height_pixels=0, + environment=None, + ): + """ + Start an interactive shell session on the SSH server. A new `.Channel` + is opened and connected to a pseudo-terminal using the requested + terminal type and size. + + :param str term: + the terminal type to emulate (for example, ``"vt100"``) + :param int width: the width (in characters) of the terminal window + :param int height: the height (in characters) of the terminal window + :param int width_pixels: the width (in pixels) of the terminal window + :param int height_pixels: the height (in pixels) of the terminal window + :param dict environment: the command's environment + :return: a new `.Channel` connected to the remote shell + + :raises: `.SSHException` -- if the server fails to invoke a shell + """ + chan = self._transport.open_session() + chan.get_pty(term, width, height, width_pixels, height_pixels) + chan.invoke_shell() + return chan + + def open_sftp(self): + """ + Open an SFTP session on the SSH server. + + :return: a new `.SFTPClient` session object + """ + return self._transport.open_sftp_client() + + def get_transport(self): + """ + Return the underlying `.Transport` object for this SSH connection. + This can be used to perform lower-level tasks, like opening specific + kinds of channels. + + :return: the `.Transport` for this connection + """ + return self._transport + + def _key_from_filepath(self, filename, klass, password): + """ + Attempt to derive a `.PKey` from given string path ``filename``: + + - If ``filename`` appears to be a cert, the matching private key is + loaded. + - Otherwise, the filename is assumed to be a private key, and the + matching public cert will be loaded if it exists. + """ + cert_suffix = "-cert.pub" + # Assume privkey, not cert, by default + if filename.endswith(cert_suffix): + key_path = filename[: -len(cert_suffix)] + cert_path = filename + else: + key_path = filename + cert_path = filename + cert_suffix + # Blindly try the key path; if no private key, nothing will work. + key = klass.from_private_key_file(key_path, password) + # TODO: change this to 'Loading' instead of 'Trying' sometime; probably + # when #387 is released, since this is a critical log message users are + # likely testing/filtering for (bah.) + msg = "Trying discovered key {} in {}".format( + hexlify(key.get_fingerprint()), key_path + ) + self._log(DEBUG, msg) + # Attempt to load cert if it exists. + if os.path.isfile(cert_path): + key.load_certificate(cert_path) + self._log(DEBUG, "Adding public certificate {}".format(cert_path)) + return key + + def _auth( + self, + username, + password, + pkey, + key_filenames, + allow_agent, + look_for_keys, + passphrase, + ): + """ + Try, in order: + + - The key(s) passed in, if one was passed in. + - Any key we can find through an SSH agent (if allowed). + - Any id_* key discoverable in ~/.ssh/ (if allowed). + - Plain username/password auth, if a password was given. + + (The password might be needed to unlock a private key [if 'passphrase' + isn't also given], or for two-factor authentication [for which it is + required].) + """ + saved_exception = None + two_factor = False + allowed_types = set() + two_factor_types = {"keyboard-interactive", "password"} + if passphrase is None and password is not None: + passphrase = password + + if pkey is not None: + try: + self._log( + DEBUG, + "Trying SSH key {}".format( + hexlify(pkey.get_fingerprint()) + ), + ) + allowed_types = set( + self._transport.auth_publickey(username, pkey) + ) + two_factor = allowed_types & two_factor_types + if not two_factor: + return + except SSHException as e: + saved_exception = e + + if not two_factor: + for key_filename in key_filenames: + # TODO (backwards incompat): leverage PKey.from_path() if we + # don't end up just killing SSHClient entirely + for pkey_class in (RSAKey, ECDSAKey, Ed25519Key): + try: + key = self._key_from_filepath( + key_filename, pkey_class, passphrase + ) + allowed_types = set( + self._transport.auth_publickey(username, key) + ) + two_factor = allowed_types & two_factor_types + if not two_factor: + return + break + except SSHException as e: + saved_exception = e + + if not two_factor and allow_agent: + if self._agent is None: + self._agent = Agent() + + for key in self._agent.get_keys(): + try: + id_ = hexlify(key.get_fingerprint()) + self._log(DEBUG, "Trying SSH agent key {}".format(id_)) + # for 2-factor auth a successfully auth'd key password + # will return an allowed 2fac auth method + allowed_types = set( + self._transport.auth_publickey(username, key) + ) + two_factor = allowed_types & two_factor_types + if not two_factor: + return + break + except SSHException as e: + saved_exception = e + + if not two_factor: + keyfiles = [] + + for keytype, name in [ + (RSAKey, "rsa"), + (ECDSAKey, "ecdsa"), + (Ed25519Key, "ed25519"), + ]: + # ~/ssh/ is for windows + for directory in [".ssh", "ssh"]: + full_path = os.path.expanduser( + "~/{}/id_{}".format(directory, name) + ) + if os.path.isfile(full_path): + # TODO: only do this append if below did not run + keyfiles.append((keytype, full_path)) + if os.path.isfile(full_path + "-cert.pub"): + keyfiles.append((keytype, full_path + "-cert.pub")) + + if not look_for_keys: + keyfiles = [] + + for pkey_class, filename in keyfiles: + try: + key = self._key_from_filepath( + filename, pkey_class, passphrase + ) + # for 2-factor auth a successfully auth'd key will result + # in ['password'] + allowed_types = set( + self._transport.auth_publickey(username, key) + ) + two_factor = allowed_types & two_factor_types + if not two_factor: + return + break + except (SSHException, IOError) as e: + saved_exception = e + + if password is not None: + try: + self._transport.auth_password(username, password) + return + except SSHException as e: + saved_exception = e + elif two_factor: + try: + self._transport.auth_interactive_dumb(username) + return + except SSHException as e: + saved_exception = e + + # if we got an auth-failed exception earlier, re-raise it + if saved_exception is not None: + raise saved_exception + raise SSHException("No authentication methods available") + + def _log(self, level, msg): + self._transport._log(level, msg) + + +class MissingHostKeyPolicy: + """ + Interface for defining the policy that `.SSHClient` should use when the + SSH server's hostname is not in either the system host keys or the + application's keys. Pre-made classes implement policies for automatically + adding the key to the application's `.HostKeys` object (`.AutoAddPolicy`), + and for automatically rejecting the key (`.RejectPolicy`). + + This function may be used to ask the user to verify the key, for example. + """ + + def missing_host_key(self, client, hostname, key): + """ + Called when an `.SSHClient` receives a server key for a server that + isn't in either the system or local `.HostKeys` object. To accept + the key, simply return. To reject, raised an exception (which will + be passed to the calling application). + """ + pass + + +class AutoAddPolicy(MissingHostKeyPolicy): + """ + Policy for automatically adding the hostname and new host key to the + local `.HostKeys` object, and saving it. This is used by `.SSHClient`. + """ + + def missing_host_key(self, client, hostname, key): + client._host_keys.add(hostname, key.get_name(), key) + if client._host_keys_filename is not None: + client.save_host_keys(client._host_keys_filename) + client._log( + DEBUG, + "Adding {} host key for {}: {}".format( + key.get_name(), hostname, hexlify(key.get_fingerprint()) + ), + ) + + +class RejectPolicy(MissingHostKeyPolicy): + """ + Policy for automatically rejecting the unknown hostname & key. This is + used by `.SSHClient`. + """ + + def missing_host_key(self, client, hostname, key): + client._log( + DEBUG, + "Rejecting {} host key for {}: {}".format( + key.get_name(), hostname, hexlify(key.get_fingerprint()) + ), + ) + raise SSHException( + "Server {!r} not found in known_hosts".format(hostname) + ) + + +class WarningPolicy(MissingHostKeyPolicy): + """ + Policy for logging a Python-style warning for an unknown host key, but + accepting it. This is used by `.SSHClient`. + """ + + def missing_host_key(self, client, hostname, key): + warnings.warn( + "Unknown {} host key for {}: {}".format( + key.get_name(), hostname, hexlify(key.get_fingerprint()) + ) + ) diff --git a/.venv/lib/python3.9/site-packages/paramiko/common.py b/.venv/lib/python3.9/site-packages/paramiko/common.py new file mode 100644 index 0000000..b57149b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/common.py @@ -0,0 +1,245 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Common constants and global variables. +""" +import logging +import struct + +# +# Formerly of py3compat.py. May be fully delete'able with a deeper look? +# + + +def byte_chr(c): + assert isinstance(c, int) + return struct.pack("B", c) + + +def byte_mask(c, mask): + assert isinstance(c, int) + return struct.pack("B", c & mask) + + +def byte_ord(c): + # In case we're handed a string instead of an int. + if not isinstance(c, int): + c = ord(c) + return c + + +( + MSG_DISCONNECT, + MSG_IGNORE, + MSG_UNIMPLEMENTED, + MSG_DEBUG, + MSG_SERVICE_REQUEST, + MSG_SERVICE_ACCEPT, + MSG_EXT_INFO, +) = range(1, 8) +(MSG_KEXINIT, MSG_NEWKEYS) = range(20, 22) +( + MSG_USERAUTH_REQUEST, + MSG_USERAUTH_FAILURE, + MSG_USERAUTH_SUCCESS, + MSG_USERAUTH_BANNER, +) = range(50, 54) +MSG_USERAUTH_PK_OK = 60 +(MSG_USERAUTH_INFO_REQUEST, MSG_USERAUTH_INFO_RESPONSE) = range(60, 62) +(MSG_USERAUTH_GSSAPI_RESPONSE, MSG_USERAUTH_GSSAPI_TOKEN) = range(60, 62) +( + MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE, + MSG_USERAUTH_GSSAPI_ERROR, + MSG_USERAUTH_GSSAPI_ERRTOK, + MSG_USERAUTH_GSSAPI_MIC, +) = range(63, 67) +HIGHEST_USERAUTH_MESSAGE_ID = 79 +(MSG_GLOBAL_REQUEST, MSG_REQUEST_SUCCESS, MSG_REQUEST_FAILURE) = range(80, 83) +( + MSG_CHANNEL_OPEN, + MSG_CHANNEL_OPEN_SUCCESS, + MSG_CHANNEL_OPEN_FAILURE, + MSG_CHANNEL_WINDOW_ADJUST, + MSG_CHANNEL_DATA, + MSG_CHANNEL_EXTENDED_DATA, + MSG_CHANNEL_EOF, + MSG_CHANNEL_CLOSE, + MSG_CHANNEL_REQUEST, + MSG_CHANNEL_SUCCESS, + MSG_CHANNEL_FAILURE, +) = range(90, 101) + +cMSG_DISCONNECT = byte_chr(MSG_DISCONNECT) +cMSG_IGNORE = byte_chr(MSG_IGNORE) +cMSG_UNIMPLEMENTED = byte_chr(MSG_UNIMPLEMENTED) +cMSG_DEBUG = byte_chr(MSG_DEBUG) +cMSG_SERVICE_REQUEST = byte_chr(MSG_SERVICE_REQUEST) +cMSG_SERVICE_ACCEPT = byte_chr(MSG_SERVICE_ACCEPT) +cMSG_EXT_INFO = byte_chr(MSG_EXT_INFO) +cMSG_KEXINIT = byte_chr(MSG_KEXINIT) +cMSG_NEWKEYS = byte_chr(MSG_NEWKEYS) +cMSG_USERAUTH_REQUEST = byte_chr(MSG_USERAUTH_REQUEST) +cMSG_USERAUTH_FAILURE = byte_chr(MSG_USERAUTH_FAILURE) +cMSG_USERAUTH_SUCCESS = byte_chr(MSG_USERAUTH_SUCCESS) +cMSG_USERAUTH_BANNER = byte_chr(MSG_USERAUTH_BANNER) +cMSG_USERAUTH_PK_OK = byte_chr(MSG_USERAUTH_PK_OK) +cMSG_USERAUTH_INFO_REQUEST = byte_chr(MSG_USERAUTH_INFO_REQUEST) +cMSG_USERAUTH_INFO_RESPONSE = byte_chr(MSG_USERAUTH_INFO_RESPONSE) +cMSG_USERAUTH_GSSAPI_RESPONSE = byte_chr(MSG_USERAUTH_GSSAPI_RESPONSE) +cMSG_USERAUTH_GSSAPI_TOKEN = byte_chr(MSG_USERAUTH_GSSAPI_TOKEN) +cMSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE = byte_chr( + MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE +) +cMSG_USERAUTH_GSSAPI_ERROR = byte_chr(MSG_USERAUTH_GSSAPI_ERROR) +cMSG_USERAUTH_GSSAPI_ERRTOK = byte_chr(MSG_USERAUTH_GSSAPI_ERRTOK) +cMSG_USERAUTH_GSSAPI_MIC = byte_chr(MSG_USERAUTH_GSSAPI_MIC) +cMSG_GLOBAL_REQUEST = byte_chr(MSG_GLOBAL_REQUEST) +cMSG_REQUEST_SUCCESS = byte_chr(MSG_REQUEST_SUCCESS) +cMSG_REQUEST_FAILURE = byte_chr(MSG_REQUEST_FAILURE) +cMSG_CHANNEL_OPEN = byte_chr(MSG_CHANNEL_OPEN) +cMSG_CHANNEL_OPEN_SUCCESS = byte_chr(MSG_CHANNEL_OPEN_SUCCESS) +cMSG_CHANNEL_OPEN_FAILURE = byte_chr(MSG_CHANNEL_OPEN_FAILURE) +cMSG_CHANNEL_WINDOW_ADJUST = byte_chr(MSG_CHANNEL_WINDOW_ADJUST) +cMSG_CHANNEL_DATA = byte_chr(MSG_CHANNEL_DATA) +cMSG_CHANNEL_EXTENDED_DATA = byte_chr(MSG_CHANNEL_EXTENDED_DATA) +cMSG_CHANNEL_EOF = byte_chr(MSG_CHANNEL_EOF) +cMSG_CHANNEL_CLOSE = byte_chr(MSG_CHANNEL_CLOSE) +cMSG_CHANNEL_REQUEST = byte_chr(MSG_CHANNEL_REQUEST) +cMSG_CHANNEL_SUCCESS = byte_chr(MSG_CHANNEL_SUCCESS) +cMSG_CHANNEL_FAILURE = byte_chr(MSG_CHANNEL_FAILURE) + +# for debugging: +MSG_NAMES = { + MSG_DISCONNECT: "disconnect", + MSG_IGNORE: "ignore", + MSG_UNIMPLEMENTED: "unimplemented", + MSG_DEBUG: "debug", + MSG_SERVICE_REQUEST: "service-request", + MSG_SERVICE_ACCEPT: "service-accept", + MSG_KEXINIT: "kexinit", + MSG_EXT_INFO: "ext-info", + MSG_NEWKEYS: "newkeys", + 30: "kex30", + 31: "kex31", + 32: "kex32", + 33: "kex33", + 34: "kex34", + 40: "kex40", + 41: "kex41", + MSG_USERAUTH_REQUEST: "userauth-request", + MSG_USERAUTH_FAILURE: "userauth-failure", + MSG_USERAUTH_SUCCESS: "userauth-success", + MSG_USERAUTH_BANNER: "userauth--banner", + MSG_USERAUTH_PK_OK: "userauth-60(pk-ok/info-request)", + MSG_USERAUTH_INFO_RESPONSE: "userauth-info-response", + MSG_GLOBAL_REQUEST: "global-request", + MSG_REQUEST_SUCCESS: "request-success", + MSG_REQUEST_FAILURE: "request-failure", + MSG_CHANNEL_OPEN: "channel-open", + MSG_CHANNEL_OPEN_SUCCESS: "channel-open-success", + MSG_CHANNEL_OPEN_FAILURE: "channel-open-failure", + MSG_CHANNEL_WINDOW_ADJUST: "channel-window-adjust", + MSG_CHANNEL_DATA: "channel-data", + MSG_CHANNEL_EXTENDED_DATA: "channel-extended-data", + MSG_CHANNEL_EOF: "channel-eof", + MSG_CHANNEL_CLOSE: "channel-close", + MSG_CHANNEL_REQUEST: "channel-request", + MSG_CHANNEL_SUCCESS: "channel-success", + MSG_CHANNEL_FAILURE: "channel-failure", + MSG_USERAUTH_GSSAPI_RESPONSE: "userauth-gssapi-response", + MSG_USERAUTH_GSSAPI_TOKEN: "userauth-gssapi-token", + MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE: "userauth-gssapi-exchange-complete", + MSG_USERAUTH_GSSAPI_ERROR: "userauth-gssapi-error", + MSG_USERAUTH_GSSAPI_ERRTOK: "userauth-gssapi-error-token", + MSG_USERAUTH_GSSAPI_MIC: "userauth-gssapi-mic", +} + + +# authentication request return codes: +AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED = range(3) + + +# channel request failed reasons: +( + OPEN_SUCCEEDED, + OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED, + OPEN_FAILED_CONNECT_FAILED, + OPEN_FAILED_UNKNOWN_CHANNEL_TYPE, + OPEN_FAILED_RESOURCE_SHORTAGE, +) = range(0, 5) + + +CONNECTION_FAILED_CODE = { + 1: "Administratively prohibited", + 2: "Connect failed", + 3: "Unknown channel type", + 4: "Resource shortage", +} + + +( + DISCONNECT_SERVICE_NOT_AVAILABLE, + DISCONNECT_AUTH_CANCELLED_BY_USER, + DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE, +) = (7, 13, 14) + +zero_byte = byte_chr(0) +one_byte = byte_chr(1) +four_byte = byte_chr(4) +max_byte = byte_chr(0xFF) +cr_byte = byte_chr(13) +linefeed_byte = byte_chr(10) +crlf = cr_byte + linefeed_byte +cr_byte_value = 13 +linefeed_byte_value = 10 + + +xffffffff = 0xFFFFFFFF +x80000000 = 0x80000000 +o666 = 438 +o660 = 432 +o644 = 420 +o600 = 384 +o777 = 511 +o700 = 448 +o70 = 56 + +DEBUG = logging.DEBUG +INFO = logging.INFO +WARNING = logging.WARNING +ERROR = logging.ERROR +CRITICAL = logging.CRITICAL + +# Common IO/select/etc sleep period, in seconds +io_sleep = 0.01 + +DEFAULT_WINDOW_SIZE = 64 * 2**15 +DEFAULT_MAX_PACKET_SIZE = 2**15 + +# lower bound on the max packet size we'll accept from the remote host +# Minimum packet size is 32768 bytes according to +# http://www.ietf.org/rfc/rfc4254.txt +MIN_WINDOW_SIZE = 2**15 + +# However, according to http://www.ietf.org/rfc/rfc4253.txt it is perfectly +# legal to accept a size much smaller, as OpenSSH client does as size 16384. +MIN_PACKET_SIZE = 2**12 + +# Max windows size according to http://www.ietf.org/rfc/rfc4254.txt +MAX_WINDOW_SIZE = 2**32 - 1 diff --git a/.venv/lib/python3.9/site-packages/paramiko/compress.py b/.venv/lib/python3.9/site-packages/paramiko/compress.py new file mode 100644 index 0000000..18ff484 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/compress.py @@ -0,0 +1,40 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Compression implementations for a Transport. +""" + +import zlib + + +class ZlibCompressor: + def __init__(self): + # Use the default level of zlib compression + self.z = zlib.compressobj() + + def __call__(self, data): + return self.z.compress(data) + self.z.flush(zlib.Z_FULL_FLUSH) + + +class ZlibDecompressor: + def __init__(self): + self.z = zlib.decompressobj() + + def __call__(self, data): + return self.z.decompress(data) diff --git a/.venv/lib/python3.9/site-packages/paramiko/config.py b/.venv/lib/python3.9/site-packages/paramiko/config.py new file mode 100644 index 0000000..0fe2b34 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/config.py @@ -0,0 +1,696 @@ +# Copyright (C) 2006-2007 Robey Pointer +# Copyright (C) 2012 Olle Lundberg +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Configuration file (aka ``ssh_config``) support. +""" + +import fnmatch +import getpass +import os +import re +import shlex +import socket +from functools import partial +from hashlib import sha1 +from io import StringIO + +invoke, invoke_import_error = None, None +try: + import invoke +except ImportError as e: + invoke_import_error = e + +from .ssh_exception import ConfigParseError, CouldNotCanonicalize + +SSH_PORT = 22 + + +class SSHConfig: + """ + Representation of config information as stored in the format used by + OpenSSH. Queries can be made via `lookup`. The format is described in + OpenSSH's ``ssh_config`` man page. This class is provided primarily as a + convenience to posix users (since the OpenSSH format is a de-facto + standard on posix) but should work fine on Windows too. + + .. versionadded:: 1.6 + """ + + SETTINGS_REGEX = re.compile(r"(\w+)(?:\s*=\s*|\s+)(.+)") + + # TODO: do a full scan of ssh.c & friends to make sure we're fully + # compatible across the board, e.g. OpenSSH 8.1 added %n to ProxyCommand. + TOKENS_BY_CONFIG_KEY = { + "controlpath": ["%C", "%h", "%l", "%L", "%n", "%p", "%r", "%u"], + "hostname": ["%h"], + "identityfile": ["%C", "~", "%d", "%h", "%l", "%u", "%r"], + "proxycommand": ["~", "%h", "%p", "%r"], + "proxyjump": ["%h", "%p", "%r"], + # Doesn't seem worth making this 'special' for now, it will fit well + # enough (no actual match-exec config key to be confused with). + "match-exec": ["%C", "%d", "%h", "%L", "%l", "%n", "%p", "%r", "%u"], + } + + def __init__(self): + """ + Create a new OpenSSH config object. + + Note: the newer alternate constructors `from_path`, `from_file` and + `from_text` are simpler to use, as they parse on instantiation. For + example, instead of:: + + config = SSHConfig() + config.parse(open("some-path.config") + + you could:: + + config = SSHConfig.from_file(open("some-path.config")) + # Or more directly: + config = SSHConfig.from_path("some-path.config") + # Or if you have arbitrary ssh_config text from some other source: + config = SSHConfig.from_text("Host foo\\n\\tUser bar") + """ + self._config = [] + + @classmethod + def from_text(cls, text): + """ + Create a new, parsed `SSHConfig` from ``text`` string. + + .. versionadded:: 2.7 + """ + return cls.from_file(StringIO(text)) + + @classmethod + def from_path(cls, path): + """ + Create a new, parsed `SSHConfig` from the file found at ``path``. + + .. versionadded:: 2.7 + """ + with open(path) as flo: + return cls.from_file(flo) + + @classmethod + def from_file(cls, flo): + """ + Create a new, parsed `SSHConfig` from file-like object ``flo``. + + .. versionadded:: 2.7 + """ + obj = cls() + obj.parse(flo) + return obj + + def parse(self, file_obj): + """ + Read an OpenSSH config from the given file object. + + :param file_obj: a file-like object to read the config file from + """ + # Start out w/ implicit/anonymous global host-like block to hold + # anything not contained by an explicit one. + context = {"host": ["*"], "config": {}} + for line in file_obj: + # Strip any leading or trailing whitespace from the line. + # Refer to https://github.com/paramiko/paramiko/issues/499 + line = line.strip() + # Skip blanks, comments + if not line or line.startswith("#"): + continue + + # Parse line into key, value + match = re.match(self.SETTINGS_REGEX, line) + if not match: + raise ConfigParseError("Unparsable line {}".format(line)) + key = match.group(1).lower() + value = match.group(2) + + # Host keyword triggers switch to new block/context + if key in ("host", "match"): + self._config.append(context) + context = {"config": {}} + if key == "host": + # TODO (backwards incompat): make these real objects or at + # least name this "hosts" to acknowledge it's an iterable. + # (Doing so prior to 3.0, despite it being a private API, + # feels bad - surely such an old codebase has folks + # actually relying on these keys.) + context["host"] = self._get_hosts(value) + else: + context["matches"] = self._get_matches(value) + # Special-case for noop ProxyCommands + elif key == "proxycommand" and value.lower() == "none": + # Store 'none' as None - not as a string implying that the + # proxycommand is the literal shell command "none"! + context["config"][key] = None + # All other keywords get stored, directly or via append + else: + if value.startswith('"') and value.endswith('"'): + value = value[1:-1] + + # identityfile, localforward, remoteforward keys are special + # cases, since they are allowed to be specified multiple times + # and they should be tried in order of specification. + if key in ["identityfile", "localforward", "remoteforward"]: + if key in context["config"]: + context["config"][key].append(value) + else: + context["config"][key] = [value] + elif key not in context["config"]: + context["config"][key] = value + # Store last 'open' block and we're done + self._config.append(context) + + def lookup(self, hostname): + """ + Return a dict (`SSHConfigDict`) of config options for a given hostname. + + The host-matching rules of OpenSSH's ``ssh_config`` man page are used: + For each parameter, the first obtained value will be used. The + configuration files contain sections separated by ``Host`` and/or + ``Match`` specifications, and that section is only applied for hosts + which match the given patterns or keywords + + Since the first obtained value for each parameter is used, more host- + specific declarations should be given near the beginning of the file, + and general defaults at the end. + + The keys in the returned dict are all normalized to lowercase (look for + ``"port"``, not ``"Port"``. The values are processed according to the + rules for substitution variable expansion in ``ssh_config``. + + Finally, please see the docs for `SSHConfigDict` for deeper info on + features such as optional type conversion methods, e.g.:: + + conf = my_config.lookup('myhost') + assert conf['passwordauthentication'] == 'yes' + assert conf.as_bool('passwordauthentication') is True + + .. note:: + If there is no explicitly configured ``HostName`` value, it will be + set to the being-looked-up hostname, which is as close as we can + get to OpenSSH's behavior around that particular option. + + :param str hostname: the hostname to lookup + + .. versionchanged:: 2.5 + Returns `SSHConfigDict` objects instead of dict literals. + .. versionchanged:: 2.7 + Added canonicalization support. + .. versionchanged:: 2.7 + Added ``Match`` support. + .. versionchanged:: 3.3 + Added ``Match final`` support. + """ + # First pass + options = self._lookup(hostname=hostname) + # Inject HostName if it was not set (this used to be done incidentally + # during tokenization, for some reason). + if "hostname" not in options: + options["hostname"] = hostname + # Handle canonicalization + canon = options.get("canonicalizehostname", None) in ("yes", "always") + maxdots = int(options.get("canonicalizemaxdots", 1)) + if canon and hostname.count(".") <= maxdots: + # NOTE: OpenSSH manpage does not explicitly state this, but its + # implementation for CanonicalDomains is 'split on any whitespace'. + domains = options["canonicaldomains"].split() + hostname = self.canonicalize(hostname, options, domains) + # Overwrite HostName again here (this is also what OpenSSH does) + options["hostname"] = hostname + options = self._lookup( + hostname, options, canonical=True, final=True + ) + else: + options = self._lookup( + hostname, options, canonical=False, final=True + ) + return options + + def _lookup(self, hostname, options=None, canonical=False, final=False): + # Init + if options is None: + options = SSHConfigDict() + # Iterate all stanzas, applying any that match, in turn (so that things + # like Match can reference currently understood state) + for context in self._config: + if not ( + self._pattern_matches(context.get("host", []), hostname) + or self._does_match( + context.get("matches", []), + hostname, + canonical, + final, + options, + ) + ): + continue + for key, value in context["config"].items(): + if key not in options: + # Create a copy of the original value, + # else it will reference the original list + # in self._config and update that value too + # when the extend() is being called. + options[key] = value[:] if value is not None else value + elif key == "identityfile": + options[key].extend( + x for x in value if x not in options[key] + ) + if final: + # Expand variables in resulting values + # (besides 'Match exec' which was already handled above) + options = self._expand_variables(options, hostname) + return options + + def canonicalize(self, hostname, options, domains): + """ + Return canonicalized version of ``hostname``. + + :param str hostname: Target hostname. + :param options: An `SSHConfigDict` from a previous lookup pass. + :param domains: List of domains (e.g. ``["paramiko.org"]``). + + :returns: A canonicalized hostname if one was found, else ``None``. + + .. versionadded:: 2.7 + """ + found = False + for domain in domains: + candidate = "{}.{}".format(hostname, domain) + family_specific = _addressfamily_host_lookup(candidate, options) + if family_specific is not None: + # TODO: would we want to dig deeper into other results? e.g. to + # find something that satisfies PermittedCNAMEs when that is + # implemented? + found = family_specific[0] + else: + # TODO: what does ssh use here and is there a reason to use + # that instead of gethostbyname? + try: + found = socket.gethostbyname(candidate) + except socket.gaierror: + pass + if found: + # TODO: follow CNAME (implied by found != candidate?) if + # CanonicalizePermittedCNAMEs allows it + return candidate + # If we got here, it means canonicalization failed. + # When CanonicalizeFallbackLocal is undefined or 'yes', we just spit + # back the original hostname. + if options.get("canonicalizefallbacklocal", "yes") == "yes": + return hostname + # And here, we failed AND fallback was set to a non-yes value, so we + # need to get mad. + raise CouldNotCanonicalize(hostname) + + def get_hostnames(self): + """ + Return the set of literal hostnames defined in the SSH config (both + explicit hostnames and wildcard entries). + """ + hosts = set() + for entry in self._config: + hosts.update(entry["host"]) + return hosts + + def _pattern_matches(self, patterns, target): + # Convenience auto-splitter if not already a list + if hasattr(patterns, "split"): + patterns = patterns.split(",") + match = False + for pattern in patterns: + # Short-circuit if target matches a negated pattern + if pattern.startswith("!") and fnmatch.fnmatch( + target, pattern[1:] + ): + return False + # Flag a match, but continue (in case of later negation) if regular + # match occurs + elif fnmatch.fnmatch(target, pattern): + match = True + return match + + def _does_match( + self, match_list, target_hostname, canonical, final, options + ): + matched = [] + candidates = match_list[:] + local_username = getpass.getuser() + while candidates: + candidate = candidates.pop(0) + passed = None + # Obtain latest host/user value every loop, so later Match may + # reference values assigned within a prior Match. + configured_host = options.get("hostname", None) + configured_user = options.get("user", None) + type_, param = candidate["type"], candidate["param"] + # Canonical is a hard pass/fail based on whether this is a + # canonicalized re-lookup. + if type_ == "canonical": + if self._should_fail(canonical, candidate): + return False + if type_ == "final": + passed = final + # The parse step ensures we only see this by itself or after + # canonical, so it's also an easy hard pass. (No negation here as + # that would be uh, pretty weird?) + elif type_ == "all": + return True + # From here, we are testing various non-hard criteria, + # short-circuiting only on fail + elif type_ == "host": + hostval = configured_host or target_hostname + passed = self._pattern_matches(param, hostval) + elif type_ == "originalhost": + passed = self._pattern_matches(param, target_hostname) + elif type_ == "user": + user = configured_user or local_username + passed = self._pattern_matches(param, user) + elif type_ == "localuser": + passed = self._pattern_matches(param, local_username) + elif type_ == "exec": + exec_cmd = self._tokenize( + options, target_hostname, "match-exec", param + ) + # This is the laziest spot in which we can get mad about an + # inability to import Invoke. + if invoke is None: + raise invoke_import_error + # Like OpenSSH, we 'redirect' stdout but let stderr bubble up + passed = invoke.run(exec_cmd, hide="stdout", warn=True).ok + # Tackle any 'passed, but was negated' results from above + if passed is not None and self._should_fail(passed, candidate): + return False + # Made it all the way here? Everything matched! + matched.append(candidate) + # Did anything match? (To be treated as bool, usually.) + return matched + + def _should_fail(self, would_pass, candidate): + return would_pass if candidate["negate"] else not would_pass + + def _tokenize(self, config, target_hostname, key, value): + """ + Tokenize a string based on current config/hostname data. + + :param config: Current config data. + :param target_hostname: Original target connection hostname. + :param key: Config key being tokenized (used to filter token list). + :param value: Config value being tokenized. + + :returns: The tokenized version of the input ``value`` string. + """ + allowed_tokens = self._allowed_tokens(key) + # Short-circuit if no tokenization possible + if not allowed_tokens: + return value + # Obtain potentially configured hostname, for use with %h. + # Special-case where we are tokenizing the hostname itself, to avoid + # replacing %h with a %h-bearing value, etc. + configured_hostname = target_hostname + if key != "hostname": + configured_hostname = config.get("hostname", configured_hostname) + # Ditto the rest of the source values + if "port" in config: + port = config["port"] + else: + port = SSH_PORT + user = getpass.getuser() + if "user" in config: + remoteuser = config["user"] + else: + remoteuser = user + local_hostname = socket.gethostname().split(".")[0] + local_fqdn = LazyFqdn(config, local_hostname) + homedir = os.path.expanduser("~") + tohash = local_hostname + target_hostname + repr(port) + remoteuser + # The actual tokens! + replacements = { + # TODO: %%??? + # TODO: sha1 bad / this is offspec from rfc/openssh + "%C": sha1(tohash.encode()).hexdigest(), + "%d": homedir, + "%h": configured_hostname, + # TODO: %i? + "%L": local_hostname, + "%l": local_fqdn, + # also this is pseudo buggy when not in Match exec mode so document + # that. also WHY is that the case?? don't we do all of this late? + "%n": target_hostname, + "%p": port, + "%r": remoteuser, + # TODO: %T? don't believe this is possible however + "%u": user, + "~": homedir, + } + # Do the thing with the stuff + tokenized = value + for find, replace in replacements.items(): + if find not in allowed_tokens: + continue + tokenized = tokenized.replace(find, str(replace)) + # TODO: log? eg that value -> tokenized + return tokenized + + def _allowed_tokens(self, key): + """ + Given config ``key``, return list of token strings to tokenize. + + .. note:: + This feels like it wants to eventually go away, but is used to + preserve as-strict-as-possible compatibility with OpenSSH, which + for whatever reason only applies some tokens to some config keys. + """ + return self.TOKENS_BY_CONFIG_KEY.get(key, []) + + def _expand_variables(self, config, target_hostname): + """ + Return a dict of config options with expanded substitutions + for a given original & current target hostname. + + Please refer to :doc:`/api/config` for details. + + :param dict config: the currently parsed config + :param str hostname: the hostname whose config is being looked up + """ + for k in config: + if config[k] is None: + continue + tokenizer = partial(self._tokenize, config, target_hostname, k) + if isinstance(config[k], list): + for i, value in enumerate(config[k]): + config[k][i] = tokenizer(value) + else: + config[k] = tokenizer(config[k]) + return config + + def _get_hosts(self, host): + """ + Return a list of host_names from host value. + """ + try: + return shlex.split(host) + except ValueError: + raise ConfigParseError("Unparsable host {}".format(host)) + + def _get_matches(self, match): + """ + Parse a specific Match config line into a list-of-dicts for its values. + + Performs some parse-time validation as well. + """ + matches = [] + tokens = shlex.split(match) + while tokens: + match = {"type": None, "param": None, "negate": False} + type_ = tokens.pop(0) + # Handle per-keyword negation + if type_.startswith("!"): + match["negate"] = True + type_ = type_[1:] + match["type"] = type_ + # all/canonical have no params (everything else does) + if type_ in ("all", "canonical", "final"): + matches.append(match) + continue + if not tokens: + raise ConfigParseError( + "Missing parameter to Match '{}' keyword".format(type_) + ) + match["param"] = tokens.pop(0) + matches.append(match) + # Perform some (easier to do now than in the middle) validation that is + # better handled here than at lookup time. + keywords = [x["type"] for x in matches] + if "all" in keywords: + allowable = ("all", "canonical") + ok, bad = ( + list(filter(lambda x: x in allowable, keywords)), + list(filter(lambda x: x not in allowable, keywords)), + ) + err = None + if any(bad): + err = "Match does not allow 'all' mixed with anything but 'canonical'" # noqa + elif "canonical" in ok and ok.index("canonical") > ok.index("all"): + err = "Match does not allow 'all' before 'canonical'" + if err is not None: + raise ConfigParseError(err) + return matches + + +def _addressfamily_host_lookup(hostname, options): + """ + Try looking up ``hostname`` in an IPv4 or IPv6 specific manner. + + This is an odd duck due to needing use in two divergent use cases. It looks + up ``AddressFamily`` in ``options`` and if it is ``inet`` or ``inet6``, + this function uses `socket.getaddrinfo` to perform a family-specific + lookup, returning the result if successful. + + In any other situation -- lookup failure, or ``AddressFamily`` being + unspecified or ``any`` -- ``None`` is returned instead and the caller is + expected to do something situation-appropriate like calling + `socket.gethostbyname`. + + :param str hostname: Hostname to look up. + :param options: `SSHConfigDict` instance w/ parsed options. + :returns: ``getaddrinfo``-style tuples, or ``None``, depending. + """ + address_family = options.get("addressfamily", "any").lower() + if address_family == "any": + return + try: + family = socket.AF_INET6 + if address_family == "inet": + family = socket.AF_INET + return socket.getaddrinfo( + hostname, + None, + family, + socket.SOCK_DGRAM, + socket.IPPROTO_IP, + socket.AI_CANONNAME, + ) + except socket.gaierror: + pass + + +class LazyFqdn: + """ + Returns the host's fqdn on request as string. + """ + + def __init__(self, config, host=None): + self.fqdn = None + self.config = config + self.host = host + + def __str__(self): + if self.fqdn is None: + # + # If the SSH config contains AddressFamily, use that when + # determining the local host's FQDN. Using socket.getfqdn() from + # the standard library is the most general solution, but can + # result in noticeable delays on some platforms when IPv6 is + # misconfigured or not available, as it calls getaddrinfo with no + # address family specified, so both IPv4 and IPv6 are checked. + # + + # Handle specific option + fqdn = None + results = _addressfamily_host_lookup(self.host, self.config) + if results is not None: + for res in results: + af, socktype, proto, canonname, sa = res + if canonname and "." in canonname: + fqdn = canonname + break + # Handle 'any' / unspecified / lookup failure + if fqdn is None: + fqdn = socket.getfqdn() + # Cache + self.fqdn = fqdn + return self.fqdn + + +class SSHConfigDict(dict): + """ + A dictionary wrapper/subclass for per-host configuration structures. + + This class introduces some usage niceties for consumers of `SSHConfig`, + specifically around the issue of variable type conversions: normal value + access yields strings, but there are now methods such as `as_bool` and + `as_int` that yield casted values instead. + + For example, given the following ``ssh_config`` file snippet:: + + Host foo.example.com + PasswordAuthentication no + Compression yes + ServerAliveInterval 60 + + the following code highlights how you can access the raw strings as well as + usefully Python type-casted versions (recalling that keys are all + normalized to lowercase first):: + + my_config = SSHConfig() + my_config.parse(open('~/.ssh/config')) + conf = my_config.lookup('foo.example.com') + + assert conf['passwordauthentication'] == 'no' + assert conf.as_bool('passwordauthentication') is False + assert conf['compression'] == 'yes' + assert conf.as_bool('compression') is True + assert conf['serveraliveinterval'] == '60' + assert conf.as_int('serveraliveinterval') == 60 + + .. versionadded:: 2.5 + """ + + def as_bool(self, key): + """ + Express given key's value as a boolean type. + + Typically, this is used for ``ssh_config``'s pseudo-boolean values + which are either ``"yes"`` or ``"no"``. In such cases, ``"yes"`` yields + ``True`` and any other value becomes ``False``. + + .. note:: + If (for whatever reason) the stored value is already boolean in + nature, it's simply returned. + + .. versionadded:: 2.5 + """ + val = self[key] + if isinstance(val, bool): + return val + return val.lower() == "yes" + + def as_int(self, key): + """ + Express given key's value as an integer, if possible. + + This method will raise ``ValueError`` or similar if the value is not + int-appropriate, same as the builtin `int` type. + + .. versionadded:: 2.5 + """ + return int(self[key]) diff --git a/.venv/lib/python3.9/site-packages/paramiko/ecdsakey.py b/.venv/lib/python3.9/site-packages/paramiko/ecdsakey.py new file mode 100644 index 0000000..07eac69 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/ecdsakey.py @@ -0,0 +1,330 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +ECDSA keys +""" + +from typing import Optional + +from cryptography.exceptions import InvalidSignature, UnsupportedAlgorithm +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric.utils import ( + decode_dss_signature, + encode_dss_signature, +) + +from paramiko.common import four_byte +from paramiko.message import Message +from paramiko.pkey import PKey +from paramiko.ssh_exception import SSHException +from paramiko.util import deflate_long + + +class _ECDSACurve: + """ + Represents a specific ECDSA Curve (nistp256, nistp384, etc). + + Handles the generation of the key format identifier and the selection of + the proper hash function. Also grabs the proper curve from the 'ecdsa' + package. + """ + + def __init__(self, curve_class, nist_name): + self.nist_name = nist_name + self.key_length = curve_class.key_size + + # Defined in RFC 5656 6.2 + self.key_format_identifier = "ecdsa-sha2-" + self.nist_name + + # Defined in RFC 5656 6.2.1 + if self.key_length <= 256: + self.hash_object = hashes.SHA256 + elif self.key_length <= 384: + self.hash_object = hashes.SHA384 + else: + self.hash_object = hashes.SHA512 + + self.curve_class = curve_class + + +class _ECDSACurveSet: + """ + A collection to hold the ECDSA curves. Allows querying by oid and by key + format identifier. The two ways in which ECDSAKey needs to be able to look + up curves. + """ + + def __init__(self, ecdsa_curves): + self.ecdsa_curves = ecdsa_curves + + def get_key_format_identifier_list(self): + return [curve.key_format_identifier for curve in self.ecdsa_curves] + + def get_by_curve_class(self, curve_class): + for curve in self.ecdsa_curves: + if curve.curve_class == curve_class: + return curve + + def get_by_key_format_identifier(self, key_format_identifier): + for curve in self.ecdsa_curves: + if curve.key_format_identifier == key_format_identifier: + return curve + + def get_by_key_length(self, key_length): + for curve in self.ecdsa_curves: + if curve.key_length == key_length: + return curve + + +class ECDSAKey(PKey): + """ + Representation of an ECDSA key which can be used to sign and verify SSH2 + data. + """ + + _ECDSA_CURVES = _ECDSACurveSet( + [ + _ECDSACurve(ec.SECP256R1, "nistp256"), + _ECDSACurve(ec.SECP384R1, "nistp384"), + _ECDSACurve(ec.SECP521R1, "nistp521"), + ] + ) + + def __init__( + self, + msg=None, + data=None, + filename=None, + password=None, + vals=None, + file_obj=None, + # TODO (backwards incompat): remove; it does nothing since porting to + # cryptography.io + validate_point=True, + ): + self.verifying_key = None + self.signing_key = None + self.public_blob = None + if file_obj is not None: + self._from_private_key(file_obj, password) + return + if filename is not None: + self._from_private_key_file(filename, password) + return + if (msg is None) and (data is not None): + msg = Message(data) + if vals is not None: + self.signing_key, self.verifying_key = vals + c_class = self.signing_key.curve.__class__ + self.ecdsa_curve = self._ECDSA_CURVES.get_by_curve_class(c_class) + else: + # Must set ecdsa_curve first; subroutines called herein may need to + # spit out our get_name(), which relies on this. + key_type = msg.get_text() + # But this also means we need to hand it a real key/curve + # identifier, so strip out any cert business. (NOTE: could push + # that into _ECDSACurveSet.get_by_key_format_identifier(), but it + # feels more correct to do it here?) + suffix = "-cert-v01@openssh.com" + if key_type.endswith(suffix): + key_type = key_type[: -len(suffix)] + self.ecdsa_curve = self._ECDSA_CURVES.get_by_key_format_identifier( + key_type + ) + key_types = self._ECDSA_CURVES.get_key_format_identifier_list() + cert_types = [ + "{}-cert-v01@openssh.com".format(x) for x in key_types + ] + self._check_type_and_load_cert( + msg=msg, key_type=key_types, cert_type=cert_types + ) + curvename = msg.get_text() + if curvename != self.ecdsa_curve.nist_name: + raise SSHException( + "Can't handle curve of type {}".format(curvename) + ) + + pointinfo = msg.get_binary() + try: + key = ec.EllipticCurvePublicKey.from_encoded_point( + self.ecdsa_curve.curve_class(), pointinfo + ) + self.verifying_key = key + except ValueError: + raise SSHException("Invalid public key") + + @classmethod + def identifiers(cls): + return cls._ECDSA_CURVES.get_key_format_identifier_list() + + # TODO (backwards incompat): deprecate/remove + @classmethod + def supported_key_format_identifiers(cls): + return cls.identifiers() + + def asbytes(self): + key = self.verifying_key + m = Message() + m.add_string(self.ecdsa_curve.key_format_identifier) + m.add_string(self.ecdsa_curve.nist_name) + + numbers = key.public_numbers() + + key_size_bytes = (key.curve.key_size + 7) // 8 + + x_bytes = deflate_long(numbers.x, add_sign_padding=False) + x_bytes = b"\x00" * (key_size_bytes - len(x_bytes)) + x_bytes + + y_bytes = deflate_long(numbers.y, add_sign_padding=False) + y_bytes = b"\x00" * (key_size_bytes - len(y_bytes)) + y_bytes + + point_str = four_byte + x_bytes + y_bytes + m.add_string(point_str) + return m.asbytes() + + def __str__(self): + return self.asbytes() + + @property + def _fields(self): + return ( + self.get_name(), + self.verifying_key.public_numbers().x, + self.verifying_key.public_numbers().y, + ) + + def get_name(self): + return self.ecdsa_curve.key_format_identifier + + def get_bits(self): + return self.ecdsa_curve.key_length + + def can_sign(self): + return self.signing_key is not None + + def sign_ssh_data(self, data, algorithm=None): + ecdsa = ec.ECDSA(self.ecdsa_curve.hash_object()) + sig = self.signing_key.sign(data, ecdsa) + r, s = decode_dss_signature(sig) + + m = Message() + m.add_string(self.ecdsa_curve.key_format_identifier) + m.add_string(self._sigencode(r, s)) + return m + + def verify_ssh_sig(self, data, msg): + if msg.get_text() != self.ecdsa_curve.key_format_identifier: + return False + sig = msg.get_binary() + sigR, sigS = self._sigdecode(sig) + signature = encode_dss_signature(sigR, sigS) + + try: + self.verifying_key.verify( + signature, data, ec.ECDSA(self.ecdsa_curve.hash_object()) + ) + except InvalidSignature: + return False + else: + return True + + @property + def private_key(self) -> Optional[ec.EllipticCurvePrivateKey]: + return self.signing_key + + @classmethod + def generate(cls, curve=ec.SECP256R1(), progress_func=None, bits=None): + """ + Generate a new private ECDSA key. This factory function can be used to + generate a new host key or authentication key. + + :param progress_func: Not used for this type of key. + :returns: A new private key (`.ECDSAKey`) object + """ + if bits is not None: + curve = cls._ECDSA_CURVES.get_by_key_length(bits) + if curve is None: + raise ValueError("Unsupported key length: {:d}".format(bits)) + curve = curve.curve_class() + + private_key = ec.generate_private_key(curve, backend=default_backend()) + return ECDSAKey(vals=(private_key, private_key.public_key())) + + # ...internals... + + def _from_private_key_file(self, filename, password): + data = self._read_private_key_file("EC", filename, password) + self._decode_key(data) + + def _from_private_key(self, file_obj, password): + data = self._read_private_key("EC", file_obj, password) + self._decode_key(data) + + def _decode_key(self, data): + pkformat, data = data + if pkformat == self._PRIVATE_KEY_FORMAT_ORIGINAL: + try: + key = serialization.load_der_private_key( + data, password=None, backend=default_backend() + ) + except ( + ValueError, + AssertionError, + TypeError, + UnsupportedAlgorithm, + ) as e: + raise SSHException(str(e)) + elif pkformat == self._PRIVATE_KEY_FORMAT_OPENSSH: + try: + msg = Message(data) + curve_name = msg.get_text() + verkey = msg.get_binary() # noqa: F841 + sigkey = msg.get_mpint() + name = "ecdsa-sha2-" + curve_name + curve = self._ECDSA_CURVES.get_by_key_format_identifier(name) + if not curve: + raise SSHException("Invalid key curve identifier") + key = ec.derive_private_key( + sigkey, curve.curve_class(), default_backend() + ) + except Exception as e: + # PKey._read_private_key_openssh() should check or return + # keytype - parsing could fail for any reason due to wrong type + raise SSHException(str(e)) + else: + self._got_bad_key_format_id(pkformat) + + self.signing_key = key + self.verifying_key = key.public_key() + curve_class = key.curve.__class__ + self.ecdsa_curve = self._ECDSA_CURVES.get_by_curve_class(curve_class) + + def _sigencode(self, r, s): + msg = Message() + msg.add_mpint(r) + msg.add_mpint(s) + return msg.asbytes() + + def _sigdecode(self, sig): + msg = Message(sig) + r = msg.get_mpint() + s = msg.get_mpint() + return r, s diff --git a/.venv/lib/python3.9/site-packages/paramiko/ed25519key.py b/.venv/lib/python3.9/site-packages/paramiko/ed25519key.py new file mode 100644 index 0000000..aac8d12 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/ed25519key.py @@ -0,0 +1,215 @@ +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from typing import Union + +import bcrypt +import nacl.signing +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives.ciphers import Cipher + +from paramiko.message import Message +from paramiko.pkey import OPENSSH_AUTH_MAGIC, PKey, _unpad_openssh +from paramiko.ssh_exception import PasswordRequiredException, SSHException +from paramiko.util import b + + +class Ed25519Key(PKey): + """ + Representation of an `Ed25519 `_ key. + + .. note:: + Ed25519 key support was added to OpenSSH in version 6.5. + + .. versionadded:: 2.2 + .. versionchanged:: 2.3 + Added a ``file_obj`` parameter to match other key classes. + """ + + name = "ssh-ed25519" + + def __init__( + self, msg=None, data=None, filename=None, password=None, file_obj=None + ): + self.public_blob = None + self._verifying_key, self._signing_key = None, None + if msg is None and data is not None: + msg = Message(data) + if msg is not None: + self._check_type_and_load_cert( + msg=msg, + key_type=self.name, + cert_type="ssh-ed25519-cert-v01@openssh.com", + ) + self._verifying_key = nacl.signing.VerifyKey(msg.get_binary()) + elif filename is not None: + with open(filename, "r") as f: + pkformat, data = self._read_private_key("OPENSSH", f) + elif file_obj is not None: + pkformat, data = self._read_private_key("OPENSSH", file_obj) + + if filename or file_obj: + self._signing_key = self._parse_signing_key_data(data, password) + + if self._signing_key is None and self._verifying_key is None: + raise ValueError("need a key") + + def _parse_signing_key_data(self, data, password): + from paramiko.transport import Transport + + # We may eventually want this to be usable for other key types, as + # OpenSSH moves to it, but for now this is just for Ed25519 keys. + # This format is described here: + # https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key + # The description isn't totally complete, and I had to refer to the + # source for a full implementation. + message = Message(data) + if message.get_bytes(len(OPENSSH_AUTH_MAGIC)) != OPENSSH_AUTH_MAGIC: + raise SSHException("Invalid key") + + ciphername = message.get_text() + kdfname = message.get_text() + kdfoptions = message.get_binary() + num_keys = message.get_int() + + if kdfname == "none": + # kdfname of "none" must have an empty kdfoptions, the ciphername + # must be "none" + if kdfoptions or ciphername != "none": + raise SSHException("Invalid key") + elif kdfname == "bcrypt": + if not password: + raise PasswordRequiredException( + "Private key file is encrypted" + ) + kdf = Message(kdfoptions) + bcrypt_salt = kdf.get_binary() + bcrypt_rounds = kdf.get_int() + else: + raise SSHException("Invalid key") + + if ciphername != "none" and ciphername not in Transport._cipher_info: + raise SSHException("Invalid key") + + public_keys = [] + for _ in range(num_keys): + pubkey = Message(message.get_binary()) + if pubkey.get_text() != self.name: + raise SSHException("Invalid key") + public_keys.append(pubkey.get_binary()) + + private_ciphertext = message.get_binary() + if ciphername == "none": + private_data = private_ciphertext + else: + cipher = Transport._cipher_info[ciphername] + key = bcrypt.kdf( + password=b(password), + salt=bcrypt_salt, + desired_key_bytes=cipher["key-size"] + cipher["block-size"], + rounds=bcrypt_rounds, + # We can't control how many rounds are on disk, so no sense + # warning about it. + ignore_few_rounds=True, + ) + decryptor = Cipher( + cipher["class"](key[: cipher["key-size"]]), + cipher["mode"](key[cipher["key-size"] :]), + backend=default_backend(), + ).decryptor() + private_data = ( + decryptor.update(private_ciphertext) + decryptor.finalize() + ) + + message = Message(_unpad_openssh(private_data)) + if message.get_int() != message.get_int(): + raise SSHException("Invalid key") + + signing_keys = [] + for i in range(num_keys): + if message.get_text() != self.name: + raise SSHException("Invalid key") + # A copy of the public key, again, ignore. + public = message.get_binary() + key_data = message.get_binary() + # The second half of the key data is yet another copy of the public + # key... + signing_key = nacl.signing.SigningKey(key_data[:32]) + # Verify that all the public keys are the same... + assert ( + signing_key.verify_key.encode() + == public + == public_keys[i] + == key_data[32:] + ) + signing_keys.append(signing_key) + # Comment, ignore. + message.get_binary() + + if len(signing_keys) != 1: + raise SSHException("Invalid key") + return signing_keys[0] + + def asbytes(self): + v = self.verifying_key + # Handle not-fully-initialized situations gracefully + my_bytes = v.encode() if v is not None else b"" + m = Message() + m.add_string(self.name) + m.add_string(my_bytes) + return m.asbytes() + + @property + def _fields(self): + return (self.get_name(), self.verifying_key) + + # TODO (backwards incompat): remove + def get_name(self): + return self.name + + def get_bits(self): + return 256 + + def can_sign(self): + return self._signing_key is not None + + def can_verify(self): + return self._verifying_key is not None + + @property + def verifying_key(self) -> Union[nacl.signing.VerifyKey, None]: + if self.can_sign(): + return self._signing_key.verify_key + elif self.can_verify(): + return self._verifying_key + return None + + def sign_ssh_data(self, data, algorithm=None): + m = Message() + m.add_string(self.name) + m.add_string(self._signing_key.sign(data).signature) + return m + + def verify_ssh_sig(self, data, msg): + if msg.get_text() != self.name: + return False + + try: + self._verifying_key.verify(data, msg.get_binary()) + except nacl.exceptions.BadSignatureError: + return False + else: + return True diff --git a/.venv/lib/python3.9/site-packages/paramiko/file.py b/.venv/lib/python3.9/site-packages/paramiko/file.py new file mode 100644 index 0000000..a36abb9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/file.py @@ -0,0 +1,528 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +from io import BytesIO + +from paramiko.common import ( + linefeed_byte_value, + crlf, + cr_byte, + linefeed_byte, + cr_byte_value, +) + +from paramiko.util import ClosingContextManager, u + + +class BufferedFile(ClosingContextManager): + """ + Reusable base class to implement Python-style file buffering around a + simpler stream. + """ + + _DEFAULT_BUFSIZE = 8192 + + SEEK_SET = 0 + SEEK_CUR = 1 + SEEK_END = 2 + + FLAG_READ = 0x1 + FLAG_WRITE = 0x2 + FLAG_APPEND = 0x4 + FLAG_BINARY = 0x10 + FLAG_BUFFERED = 0x20 + FLAG_LINE_BUFFERED = 0x40 + FLAG_UNIVERSAL_NEWLINE = 0x80 + + def __init__(self): + self.newlines = None + self._flags = 0 + self._bufsize = self._DEFAULT_BUFSIZE + self._wbuffer = BytesIO() + self._rbuffer = bytes() + self._at_trailing_cr = False + self._closed = False + # pos - position within the file, according to the user + # realpos - position according the OS + # (these may be different because we buffer for line reading) + self._pos = self._realpos = 0 + # size only matters for seekable files + self._size = 0 + + def __del__(self): + self.close() + + def __iter__(self): + """ + Returns an iterator that can be used to iterate over the lines in this + file. This iterator happens to return the file itself, since a file is + its own iterator. + + :raises: ``ValueError`` -- if the file is closed. + """ + if self._closed: + raise ValueError("I/O operation on closed file") + return self + + def close(self): + """ + Close the file. Future read and write operations will fail. + """ + self.flush() + self._closed = True + + def flush(self): + """ + Write out any data in the write buffer. This may do nothing if write + buffering is not turned on. + """ + self._write_all(self._wbuffer.getvalue()) + self._wbuffer = BytesIO() + return + + def __next__(self): + """ + Returns the next line from the input, or raises ``StopIteration`` + when EOF is hit. Unlike python file objects, it's okay to mix + calls to `.next` and `.readline`. + + :raises: ``StopIteration`` -- when the end of the file is reached. + + :returns: + a line (`str`, or `bytes` if the file was opened in binary mode) + read from the file. + """ + line = self.readline() + if not line: + raise StopIteration + return line + + def readable(self): + """ + Check if the file can be read from. + + :returns: + `True` if the file can be read from. If `False`, `read` will raise + an exception. + """ + return (self._flags & self.FLAG_READ) == self.FLAG_READ + + def writable(self): + """ + Check if the file can be written to. + + :returns: + `True` if the file can be written to. If `False`, `write` will + raise an exception. + """ + return (self._flags & self.FLAG_WRITE) == self.FLAG_WRITE + + def seekable(self): + """ + Check if the file supports random access. + + :returns: + `True` if the file supports random access. If `False`, `seek` will + raise an exception. + """ + return False + + def readinto(self, buff): + """ + Read up to ``len(buff)`` bytes into ``bytearray`` *buff* and return the + number of bytes read. + + :returns: + The number of bytes read. + """ + data = self.read(len(buff)) + buff[: len(data)] = data + return len(data) + + def read(self, size=None): + """ + Read at most ``size`` bytes from the file (less if we hit the end of + the file first). If the ``size`` argument is negative or omitted, + read all the remaining data in the file. + + .. note:: + ``'b'`` mode flag is ignored (``self.FLAG_BINARY`` in + ``self._flags``), because SSH treats all files as binary, since we + have no idea what encoding the file is in, or even if the file is + text data. + + :param int size: maximum number of bytes to read + :returns: + data read from the file (as bytes), or an empty string if EOF was + encountered immediately + """ + if self._closed: + raise IOError("File is closed") + if not (self._flags & self.FLAG_READ): + raise IOError("File is not open for reading") + if (size is None) or (size < 0): + # go for broke + result = bytearray(self._rbuffer) + self._rbuffer = bytes() + self._pos += len(result) + while True: + try: + new_data = self._read(self._DEFAULT_BUFSIZE) + except EOFError: + new_data = None + if (new_data is None) or (len(new_data) == 0): + break + result.extend(new_data) + self._realpos += len(new_data) + self._pos += len(new_data) + return bytes(result) + if size <= len(self._rbuffer): + result = self._rbuffer[:size] + self._rbuffer = self._rbuffer[size:] + self._pos += len(result) + return result + while len(self._rbuffer) < size: + read_size = size - len(self._rbuffer) + if self._flags & self.FLAG_BUFFERED: + read_size = max(self._bufsize, read_size) + try: + new_data = self._read(read_size) + except EOFError: + new_data = None + if (new_data is None) or (len(new_data) == 0): + break + self._rbuffer += new_data + self._realpos += len(new_data) + result = self._rbuffer[:size] + self._rbuffer = self._rbuffer[size:] + self._pos += len(result) + return result + + def readline(self, size=None): + """ + Read one entire line from the file. A trailing newline character is + kept in the string (but may be absent when a file ends with an + incomplete line). If the size argument is present and non-negative, it + is a maximum byte count (including the trailing newline) and an + incomplete line may be returned. An empty string is returned only when + EOF is encountered immediately. + + .. note:: + Unlike stdio's ``fgets``, the returned string contains null + characters (``'\\0'``) if they occurred in the input. + + :param int size: maximum length of returned string. + :returns: + next line of the file, or an empty string if the end of the + file has been reached. + + If the file was opened in binary (``'b'``) mode: bytes are returned + Else: the encoding of the file is assumed to be UTF-8 and character + strings (`str`) are returned + """ + # it's almost silly how complex this function is. + if self._closed: + raise IOError("File is closed") + if not (self._flags & self.FLAG_READ): + raise IOError("File not open for reading") + line = self._rbuffer + truncated = False + while True: + if ( + self._at_trailing_cr + and self._flags & self.FLAG_UNIVERSAL_NEWLINE + and len(line) > 0 + ): + # edge case: the newline may be '\r\n' and we may have read + # only the first '\r' last time. + if line[0] == linefeed_byte_value: + line = line[1:] + self._record_newline(crlf) + else: + self._record_newline(cr_byte) + self._at_trailing_cr = False + # check size before looking for a linefeed, in case we already have + # enough. + if (size is not None) and (size >= 0): + if len(line) >= size: + # truncate line + self._rbuffer = line[size:] + line = line[:size] + truncated = True + break + n = size - len(line) + else: + n = self._bufsize + if linefeed_byte in line or ( + self._flags & self.FLAG_UNIVERSAL_NEWLINE and cr_byte in line + ): + break + try: + new_data = self._read(n) + except EOFError: + new_data = None + if (new_data is None) or (len(new_data) == 0): + self._rbuffer = bytes() + self._pos += len(line) + return line if self._flags & self.FLAG_BINARY else u(line) + line += new_data + self._realpos += len(new_data) + # find the newline + pos = line.find(linefeed_byte) + if self._flags & self.FLAG_UNIVERSAL_NEWLINE: + rpos = line.find(cr_byte) + if (rpos >= 0) and (rpos < pos or pos < 0): + pos = rpos + if pos == -1: + # we couldn't find a newline in the truncated string, return it + self._pos += len(line) + return line if self._flags & self.FLAG_BINARY else u(line) + xpos = pos + 1 + if ( + line[pos] == cr_byte_value + and xpos < len(line) + and line[xpos] == linefeed_byte_value + ): + xpos += 1 + # if the string was truncated, _rbuffer needs to have the string after + # the newline character plus the truncated part of the line we stored + # earlier in _rbuffer + if truncated: + self._rbuffer = line[xpos:] + self._rbuffer + else: + self._rbuffer = line[xpos:] + + lf = line[pos:xpos] + line = line[:pos] + linefeed_byte + if (len(self._rbuffer) == 0) and (lf == cr_byte): + # we could read the line up to a '\r' and there could still be a + # '\n' following that we read next time. note that and eat it. + self._at_trailing_cr = True + else: + self._record_newline(lf) + self._pos += len(line) + return line if self._flags & self.FLAG_BINARY else u(line) + + def readlines(self, sizehint=None): + """ + Read all remaining lines using `readline` and return them as a list. + If the optional ``sizehint`` argument is present, instead of reading up + to EOF, whole lines totalling approximately sizehint bytes (possibly + after rounding up to an internal buffer size) are read. + + :param int sizehint: desired maximum number of bytes to read. + :returns: list of lines read from the file. + """ + lines = [] + byte_count = 0 + while True: + line = self.readline() + if len(line) == 0: + break + lines.append(line) + byte_count += len(line) + if (sizehint is not None) and (byte_count >= sizehint): + break + return lines + + def seek(self, offset, whence=0): + """ + Set the file's current position, like stdio's ``fseek``. Not all file + objects support seeking. + + .. note:: + If a file is opened in append mode (``'a'`` or ``'a+'``), any seek + operations will be undone at the next write (as the file position + will move back to the end of the file). + + :param int offset: + position to move to within the file, relative to ``whence``. + :param int whence: + type of movement: 0 = absolute; 1 = relative to the current + position; 2 = relative to the end of the file. + + :raises: ``IOError`` -- if the file doesn't support random access. + """ + raise IOError("File does not support seeking.") + + def tell(self): + """ + Return the file's current position. This may not be accurate or + useful if the underlying file doesn't support random access, or was + opened in append mode. + + :returns: file position (`number ` of bytes). + """ + return self._pos + + def write(self, data): + """ + Write data to the file. If write buffering is on (``bufsize`` was + specified and non-zero), some or all of the data may not actually be + written yet. (Use `flush` or `close` to force buffered data to be + written out.) + + :param data: ``str``/``bytes`` data to write + """ + if isinstance(data, str): + # Accept text and encode as utf-8 for compatibility only. + data = data.encode("utf-8") + if self._closed: + raise IOError("File is closed") + if not (self._flags & self.FLAG_WRITE): + raise IOError("File not open for writing") + if not (self._flags & self.FLAG_BUFFERED): + self._write_all(data) + return + self._wbuffer.write(data) + if self._flags & self.FLAG_LINE_BUFFERED: + # only scan the new data for linefeed, to avoid wasting time. + last_newline_pos = data.rfind(linefeed_byte) + if last_newline_pos >= 0: + wbuf = self._wbuffer.getvalue() + last_newline_pos += len(wbuf) - len(data) + self._write_all(wbuf[: last_newline_pos + 1]) + self._wbuffer = BytesIO() + self._wbuffer.write(wbuf[last_newline_pos + 1 :]) + return + # even if we're line buffering, if the buffer has grown past the + # buffer size, force a flush. + if self._wbuffer.tell() >= self._bufsize: + self.flush() + return + + def writelines(self, sequence): + """ + Write a sequence of strings to the file. The sequence can be any + iterable object producing strings, typically a list of strings. (The + name is intended to match `readlines`; `writelines` does not add line + separators.) + + :param sequence: an iterable sequence of strings. + """ + for line in sequence: + self.write(line) + return + + def xreadlines(self): + """ + Identical to ``iter(f)``. This is a deprecated file interface that + predates Python iterator support. + """ + return self + + @property + def closed(self): + return self._closed + + # ...overrides... + + def _read(self, size): + """ + (subclass override) + Read data from the stream. Return ``None`` or raise ``EOFError`` to + indicate EOF. + """ + raise EOFError() + + def _write(self, data): + """ + (subclass override) + Write data into the stream. + """ + raise IOError("write not implemented") + + def _get_size(self): + """ + (subclass override) + Return the size of the file. This is called from within `_set_mode` + if the file is opened in append mode, so the file position can be + tracked and `seek` and `tell` will work correctly. If the file is + a stream that can't be randomly accessed, you don't need to override + this method, + """ + return 0 + + # ...internals... + + def _set_mode(self, mode="r", bufsize=-1): + """ + Subclasses call this method to initialize the BufferedFile. + """ + # set bufsize in any event, because it's used for readline(). + self._bufsize = self._DEFAULT_BUFSIZE + if bufsize < 0: + # do no buffering by default, because otherwise writes will get + # buffered in a way that will probably confuse people. + bufsize = 0 + if bufsize == 1: + # apparently, line buffering only affects writes. reads are only + # buffered if you call readline (directly or indirectly: iterating + # over a file will indirectly call readline). + self._flags |= self.FLAG_BUFFERED | self.FLAG_LINE_BUFFERED + elif bufsize > 1: + self._bufsize = bufsize + self._flags |= self.FLAG_BUFFERED + self._flags &= ~self.FLAG_LINE_BUFFERED + elif bufsize == 0: + # unbuffered + self._flags &= ~(self.FLAG_BUFFERED | self.FLAG_LINE_BUFFERED) + + if ("r" in mode) or ("+" in mode): + self._flags |= self.FLAG_READ + if ("w" in mode) or ("+" in mode): + self._flags |= self.FLAG_WRITE + if "a" in mode: + self._flags |= self.FLAG_WRITE | self.FLAG_APPEND + self._size = self._get_size() + self._pos = self._realpos = self._size + if "b" in mode: + self._flags |= self.FLAG_BINARY + if "U" in mode: + self._flags |= self.FLAG_UNIVERSAL_NEWLINE + # built-in file objects have this attribute to store which kinds of + # line terminations they've seen: + # + self.newlines = None + + def _write_all(self, raw_data): + # the underlying stream may be something that does partial writes (like + # a socket). + data = memoryview(raw_data) + while len(data) > 0: + count = self._write(data) + data = data[count:] + if self._flags & self.FLAG_APPEND: + self._size += count + self._pos = self._realpos = self._size + else: + self._pos += count + self._realpos += count + return None + + def _record_newline(self, newline): + # silliness about tracking what kinds of newlines we've seen. + # i don't understand why it can be None, a string, or a tuple, instead + # of just always being a tuple, but we'll emulate that behavior anyway. + if not (self._flags & self.FLAG_UNIVERSAL_NEWLINE): + return + if self.newlines is None: + self.newlines = newline + elif self.newlines != newline and isinstance(self.newlines, bytes): + self.newlines = (self.newlines, newline) + elif newline not in self.newlines: + self.newlines += (newline,) diff --git a/.venv/lib/python3.9/site-packages/paramiko/hostkeys.py b/.venv/lib/python3.9/site-packages/paramiko/hostkeys.py new file mode 100644 index 0000000..09b69c8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/hostkeys.py @@ -0,0 +1,383 @@ +# Copyright (C) 2006-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +import binascii +import os +import re +from base64 import decodebytes, encodebytes +from collections.abc import MutableMapping +from hashlib import sha1 +from hmac import HMAC + +from paramiko.pkey import PKey, UnknownKeyType +from paramiko.ssh_exception import SSHException +from paramiko.util import b, constant_time_bytes_eq, get_logger, u + + +class HostKeys(MutableMapping): + """ + Representation of an OpenSSH-style "known hosts" file. Host keys can be + read from one or more files, and then individual hosts can be looked up to + verify server keys during SSH negotiation. + + A `.HostKeys` object can be treated like a dict; any dict lookup is + equivalent to calling `lookup`. + + .. versionadded:: 1.5.3 + """ + + def __init__(self, filename=None): + """ + Create a new HostKeys object, optionally loading keys from an OpenSSH + style host-key file. + + :param str filename: filename to load host keys from, or ``None`` + """ + # emulate a dict of { hostname: { keytype: PKey } } + self._entries = [] + if filename is not None: + self.load(filename) + + def add(self, hostname, keytype, key): + """ + Add a host key entry to the table. Any existing entry for a + ``(hostname, keytype)`` pair will be replaced. + + :param str hostname: the hostname (or IP) to add + :param str keytype: key type (in ``"ssh-"`` format) + :param .PKey key: the key to add + """ + for e in self._entries: + if (hostname in e.hostnames) and (e.key.get_name() == keytype): + e.key = key + return + self._entries.append(HostKeyEntry([hostname], key)) + + def load(self, filename): + """ + Read a file of known SSH host keys, in the format used by OpenSSH. + This type of file unfortunately doesn't exist on Windows, but on + posix, it will usually be stored in + ``os.path.expanduser("~/.ssh/known_hosts")``. + + If this method is called multiple times, the host keys are merged, + not cleared. So multiple calls to `load` will just call `add`, + replacing any existing entries and adding new ones. + + :param str filename: name of the file to read host keys from + + :raises: ``IOError`` -- if there was an error reading the file + """ + with open(filename, "r") as f: + for lineno, line in enumerate(f, 1): + line = line.strip() + if (len(line) == 0) or (line[0] == "#"): + continue + try: + entry = HostKeyEntry.from_line(line, lineno) + except SSHException: + continue + if entry is not None: + _hostnames = entry.hostnames + for h in _hostnames: + if self.check(h, entry.key): + entry.hostnames.remove(h) + if len(entry.hostnames): + self._entries.append(entry) + + def save(self, filename): + """ + Save host keys into a file, in the format used by OpenSSH. The order + of keys in the file will be preserved when possible (if these keys were + loaded from a file originally). The single exception is that combined + lines will be split into individual key lines, which is arguably a bug. + + :param str filename: name of the file to write + + :raises: ``IOError`` -- if there was an error writing the file + + .. versionadded:: 1.6.1 + """ + with open(filename, "w") as f: + for e in self._entries: + line = e.to_line() + if line: + f.write(line) + + def lookup(self, hostname): + """ + Find a hostkey entry for a given hostname or IP. If no entry is found, + ``None`` is returned. Otherwise a dictionary of keytype to key is + returned. + + :param str hostname: the hostname (or IP) to lookup + :return: dict of `str` -> `.PKey` keys associated with this host + (or ``None``) + """ + + class SubDict(MutableMapping): + def __init__(self, hostname, entries, hostkeys): + self._hostname = hostname + self._entries = entries + self._hostkeys = hostkeys + + def __iter__(self): + for k in self.keys(): + yield k + + def __len__(self): + return len(self.keys()) + + def __delitem__(self, key): + for e in list(self._entries): + if e.key.get_name() == key: + self._entries.remove(e) + break + else: + raise KeyError(key) + + def __getitem__(self, key): + for e in self._entries: + if e.key.get_name() == key: + return e.key + raise KeyError(key) + + def __setitem__(self, key, val): + for e in self._entries: + if e.key is None: + continue + if e.key.get_name() == key: + # replace + e.key = val + break + else: + # add a new one + e = HostKeyEntry([hostname], val) + self._entries.append(e) + self._hostkeys._entries.append(e) + + def keys(self): + return [ + e.key.get_name() + for e in self._entries + if e.key is not None + ] + + entries = [] + for e in self._entries: + if self._hostname_matches(hostname, e): + entries.append(e) + if len(entries) == 0: + return None + return SubDict(hostname, entries, self) + + def _hostname_matches(self, hostname, entry): + """ + Tests whether ``hostname`` string matches given SubDict ``entry``. + + :returns bool: + """ + for h in entry.hostnames: + if ( + h == hostname + or h.startswith("|1|") + and not hostname.startswith("|1|") + and constant_time_bytes_eq(self.hash_host(hostname, h), h) + ): + return True + return False + + def check(self, hostname, key): + """ + Return True if the given key is associated with the given hostname + in this dictionary. + + :param str hostname: hostname (or IP) of the SSH server + :param .PKey key: the key to check + :return: + ``True`` if the key is associated with the hostname; else ``False`` + """ + k = self.lookup(hostname) + if k is None: + return False + host_key = k.get(key.get_name(), None) + if host_key is None: + return False + return host_key.asbytes() == key.asbytes() + + def clear(self): + """ + Remove all host keys from the dictionary. + """ + self._entries = [] + + def __iter__(self): + for k in self.keys(): + yield k + + def __len__(self): + return len(self.keys()) + + def __getitem__(self, key): + ret = self.lookup(key) + if ret is None: + raise KeyError(key) + return ret + + def __delitem__(self, key): + index = None + for i, entry in enumerate(self._entries): + if self._hostname_matches(key, entry): + index = i + break + if index is None: + raise KeyError(key) + self._entries.pop(index) + + def __setitem__(self, hostname, entry): + # don't use this please. + if len(entry) == 0: + self._entries.append(HostKeyEntry([hostname], None)) + return + for key_type in entry.keys(): + found = False + for e in self._entries: + if (hostname in e.hostnames) and e.key.get_name() == key_type: + # replace + e.key = entry[key_type] + found = True + if not found: + self._entries.append(HostKeyEntry([hostname], entry[key_type])) + + def keys(self): + ret = [] + for e in self._entries: + for h in e.hostnames: + if h not in ret: + ret.append(h) + return ret + + def values(self): + ret = [] + for k in self.keys(): + ret.append(self.lookup(k)) + return ret + + @staticmethod + def hash_host(hostname, salt=None): + """ + Return a "hashed" form of the hostname, as used by OpenSSH when storing + hashed hostnames in the known_hosts file. + + :param str hostname: the hostname to hash + :param str salt: optional salt to use when hashing + (must be 20 bytes long) + :return: the hashed hostname as a `str` + """ + if salt is None: + salt = os.urandom(sha1().digest_size) + else: + if salt.startswith("|1|"): + salt = salt.split("|")[2] + salt = decodebytes(b(salt)) + assert len(salt) == sha1().digest_size + hmac = HMAC(salt, b(hostname), sha1).digest() + hostkey = "|1|{}|{}".format(u(encodebytes(salt)), u(encodebytes(hmac))) + return hostkey.replace("\n", "") + + +class InvalidHostKey(Exception): + def __init__(self, line, exc): + self.line = line + self.exc = exc + self.args = (line, exc) + + +class HostKeyEntry: + """ + Representation of a line in an OpenSSH-style "known hosts" file. + """ + + def __init__(self, hostnames=None, key=None): + self.valid = (hostnames is not None) and (key is not None) + self.hostnames = hostnames + self.key = key + + @classmethod + def from_line(cls, line, lineno=None): + """ + Parses the given line of text to find the names for the host, + the type of key, and the key data. The line is expected to be in the + format used by the OpenSSH known_hosts file. Fields are separated by a + single space or tab. + + Lines are expected to not have leading or trailing whitespace. + We don't bother to check for comments or empty lines. All of + that should be taken care of before sending the line to us. + + :param str line: a line from an OpenSSH known_hosts file + """ + log = get_logger("paramiko.hostkeys") + fields = re.split(" |\t", line) + if len(fields) < 3: + # Bad number of fields + msg = "Not enough fields found in known_hosts in line {} ({!r})" + log.info(msg.format(lineno, line)) + return None + fields = fields[:3] + + names, key_type, key = fields + names = names.split(",") + + # Decide what kind of key we're looking at and create an object + # to hold it accordingly. + try: + # TODO: this grew organically and doesn't seem /wrong/ per se (file + # read -> unicode str -> bytes for base64 decode -> decoded bytes); + # but in Python 3 forever land, can we simply use + # `base64.b64decode(str-from-file)` here? + key_bytes = decodebytes(b(key)) + except binascii.Error as e: + raise InvalidHostKey(line, e) + + try: + return cls(names, PKey.from_type_string(key_type, key_bytes)) + except UnknownKeyType: + # TODO (backwards incompat): consider changing HostKeys API so this + # just raises naturally and the exception is muted higher up in the + # stack? + log.info("Unable to handle key of type {}".format(key_type)) + return None + + def to_line(self): + """ + Returns a string in OpenSSH known_hosts file format, or None if + the object is not in a valid state. A trailing newline is + included. + """ + if self.valid: + return "{} {} {}\n".format( + ",".join(self.hostnames), + self.key.get_name(), + self.key.get_base64(), + ) + return None + + def __repr__(self): + return "".format(self.hostnames, self.key) diff --git a/.venv/lib/python3.9/site-packages/paramiko/kex_curve25519.py b/.venv/lib/python3.9/site-packages/paramiko/kex_curve25519.py new file mode 100644 index 0000000..20c23e4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/kex_curve25519.py @@ -0,0 +1,131 @@ +import binascii +import hashlib + +from cryptography.exceptions import UnsupportedAlgorithm +from cryptography.hazmat.primitives import constant_time, serialization +from cryptography.hazmat.primitives.asymmetric.x25519 import ( + X25519PrivateKey, + X25519PublicKey, +) + +from paramiko.message import Message +from paramiko.common import byte_chr +from paramiko.ssh_exception import SSHException + + +_MSG_KEXECDH_INIT, _MSG_KEXECDH_REPLY = range(30, 32) +c_MSG_KEXECDH_INIT, c_MSG_KEXECDH_REPLY = [byte_chr(c) for c in range(30, 32)] + + +class KexCurve25519: + hash_algo = hashlib.sha256 + + def __init__(self, transport): + self.transport = transport + self.key = None + + @classmethod + def is_available(cls): + try: + X25519PrivateKey.generate() + except UnsupportedAlgorithm: + return False + else: + return True + + def _perform_exchange(self, peer_key): + secret = self.key.exchange(peer_key) + if constant_time.bytes_eq(secret, b"\x00" * 32): + raise SSHException( + "peer's curve25519 public value has wrong order" + ) + return secret + + def start_kex(self): + self.key = X25519PrivateKey.generate() + if self.transport.server_mode: + self.transport._expect_packet(_MSG_KEXECDH_INIT) + return + + m = Message() + m.add_byte(c_MSG_KEXECDH_INIT) + m.add_string( + self.key.public_key().public_bytes( + serialization.Encoding.Raw, serialization.PublicFormat.Raw + ) + ) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXECDH_REPLY) + + def parse_next(self, ptype, m): + if self.transport.server_mode and (ptype == _MSG_KEXECDH_INIT): + return self._parse_kexecdh_init(m) + elif not self.transport.server_mode and (ptype == _MSG_KEXECDH_REPLY): + return self._parse_kexecdh_reply(m) + raise SSHException( + "KexCurve25519 asked to handle packet type {:d}".format(ptype) + ) + + def _parse_kexecdh_init(self, m): + peer_key_bytes = m.get_string() + peer_key = X25519PublicKey.from_public_bytes(peer_key_bytes) + K = self._perform_exchange(peer_key) + K = int(binascii.hexlify(K), 16) + # compute exchange hash + hm = Message() + hm.add( + self.transport.remote_version, + self.transport.local_version, + self.transport.remote_kex_init, + self.transport.local_kex_init, + ) + server_key_bytes = self.transport.get_server_key().asbytes() + exchange_key_bytes = self.key.public_key().public_bytes( + serialization.Encoding.Raw, serialization.PublicFormat.Raw + ) + hm.add_string(server_key_bytes) + hm.add_string(peer_key_bytes) + hm.add_string(exchange_key_bytes) + hm.add_mpint(K) + H = self.hash_algo(hm.asbytes()).digest() + self.transport._set_K_H(K, H) + sig = self.transport.get_server_key().sign_ssh_data( + H, self.transport.host_key_type + ) + # construct reply + m = Message() + m.add_byte(c_MSG_KEXECDH_REPLY) + m.add_string(server_key_bytes) + m.add_string(exchange_key_bytes) + m.add_string(sig) + self.transport._send_message(m) + self.transport._activate_outbound() + + def _parse_kexecdh_reply(self, m): + peer_host_key_bytes = m.get_string() + peer_key_bytes = m.get_string() + sig = m.get_binary() + + peer_key = X25519PublicKey.from_public_bytes(peer_key_bytes) + + K = self._perform_exchange(peer_key) + K = int(binascii.hexlify(K), 16) + # compute exchange hash and verify signature + hm = Message() + hm.add( + self.transport.local_version, + self.transport.remote_version, + self.transport.local_kex_init, + self.transport.remote_kex_init, + ) + hm.add_string(peer_host_key_bytes) + hm.add_string( + self.key.public_key().public_bytes( + serialization.Encoding.Raw, serialization.PublicFormat.Raw + ) + ) + hm.add_string(peer_key_bytes) + hm.add_mpint(K) + self.transport._set_K_H(K, self.hash_algo(hm.asbytes()).digest()) + self.transport._verify_key(peer_host_key_bytes, sig) + self.transport._activate_outbound() diff --git a/.venv/lib/python3.9/site-packages/paramiko/kex_ecdh_nist.py b/.venv/lib/python3.9/site-packages/paramiko/kex_ecdh_nist.py new file mode 100644 index 0000000..41fab46 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/kex_ecdh_nist.py @@ -0,0 +1,151 @@ +""" +Ephemeral Elliptic Curve Diffie-Hellman (ECDH) key exchange +RFC 5656, Section 4 +""" + +from hashlib import sha256, sha384, sha512 +from paramiko.common import byte_chr +from paramiko.message import Message +from paramiko.ssh_exception import SSHException +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives import serialization +from binascii import hexlify + +_MSG_KEXECDH_INIT, _MSG_KEXECDH_REPLY = range(30, 32) +c_MSG_KEXECDH_INIT, c_MSG_KEXECDH_REPLY = [byte_chr(c) for c in range(30, 32)] + + +class KexNistp256: + + name = "ecdh-sha2-nistp256" + hash_algo = sha256 + curve = ec.SECP256R1() + + def __init__(self, transport): + self.transport = transport + # private key, client public and server public keys + self.P = 0 + self.Q_C = None + self.Q_S = None + + def start_kex(self): + self._generate_key_pair() + if self.transport.server_mode: + self.transport._expect_packet(_MSG_KEXECDH_INIT) + return + m = Message() + m.add_byte(c_MSG_KEXECDH_INIT) + # SEC1: V2.0 2.3.3 Elliptic-Curve-Point-to-Octet-String Conversion + m.add_string( + self.Q_C.public_bytes( + serialization.Encoding.X962, + serialization.PublicFormat.UncompressedPoint, + ) + ) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXECDH_REPLY) + + def parse_next(self, ptype, m): + if self.transport.server_mode and (ptype == _MSG_KEXECDH_INIT): + return self._parse_kexecdh_init(m) + elif not self.transport.server_mode and (ptype == _MSG_KEXECDH_REPLY): + return self._parse_kexecdh_reply(m) + raise SSHException( + "KexECDH asked to handle packet type {:d}".format(ptype) + ) + + def _generate_key_pair(self): + self.P = ec.generate_private_key(self.curve, default_backend()) + if self.transport.server_mode: + self.Q_S = self.P.public_key() + return + self.Q_C = self.P.public_key() + + def _parse_kexecdh_init(self, m): + Q_C_bytes = m.get_string() + self.Q_C = ec.EllipticCurvePublicKey.from_encoded_point( + self.curve, Q_C_bytes + ) + K_S = self.transport.get_server_key().asbytes() + K = self.P.exchange(ec.ECDH(), self.Q_C) + K = int(hexlify(K), 16) + # compute exchange hash + hm = Message() + hm.add( + self.transport.remote_version, + self.transport.local_version, + self.transport.remote_kex_init, + self.transport.local_kex_init, + ) + hm.add_string(K_S) + hm.add_string(Q_C_bytes) + # SEC1: V2.0 2.3.3 Elliptic-Curve-Point-to-Octet-String Conversion + hm.add_string( + self.Q_S.public_bytes( + serialization.Encoding.X962, + serialization.PublicFormat.UncompressedPoint, + ) + ) + hm.add_mpint(int(K)) + H = self.hash_algo(hm.asbytes()).digest() + self.transport._set_K_H(K, H) + sig = self.transport.get_server_key().sign_ssh_data( + H, self.transport.host_key_type + ) + # construct reply + m = Message() + m.add_byte(c_MSG_KEXECDH_REPLY) + m.add_string(K_S) + m.add_string( + self.Q_S.public_bytes( + serialization.Encoding.X962, + serialization.PublicFormat.UncompressedPoint, + ) + ) + m.add_string(sig) + self.transport._send_message(m) + self.transport._activate_outbound() + + def _parse_kexecdh_reply(self, m): + K_S = m.get_string() + Q_S_bytes = m.get_string() + self.Q_S = ec.EllipticCurvePublicKey.from_encoded_point( + self.curve, Q_S_bytes + ) + sig = m.get_binary() + K = self.P.exchange(ec.ECDH(), self.Q_S) + K = int(hexlify(K), 16) + # compute exchange hash and verify signature + hm = Message() + hm.add( + self.transport.local_version, + self.transport.remote_version, + self.transport.local_kex_init, + self.transport.remote_kex_init, + ) + hm.add_string(K_S) + # SEC1: V2.0 2.3.3 Elliptic-Curve-Point-to-Octet-String Conversion + hm.add_string( + self.Q_C.public_bytes( + serialization.Encoding.X962, + serialization.PublicFormat.UncompressedPoint, + ) + ) + hm.add_string(Q_S_bytes) + hm.add_mpint(K) + self.transport._set_K_H(K, self.hash_algo(hm.asbytes()).digest()) + self.transport._verify_key(K_S, sig) + self.transport._activate_outbound() + + +class KexNistp384(KexNistp256): + name = "ecdh-sha2-nistp384" + hash_algo = sha384 + curve = ec.SECP384R1() + + +class KexNistp521(KexNistp256): + name = "ecdh-sha2-nistp521" + hash_algo = sha512 + curve = ec.SECP521R1() diff --git a/.venv/lib/python3.9/site-packages/paramiko/kex_gex.py b/.venv/lib/python3.9/site-packages/paramiko/kex_gex.py new file mode 100644 index 0000000..40f2d1a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/kex_gex.py @@ -0,0 +1,280 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Variant on the (now deprecated/removed) ``KexGroup1`` where the prime "p" and +generator "g" are provided by the server. A bit more work is required on the +client side, and a **lot** more on the server side. +""" + +import os +from hashlib import sha256 + +from paramiko import util +from paramiko.common import DEBUG, byte_chr, byte_mask, byte_ord +from paramiko.message import Message +from paramiko.ssh_exception import SSHException + +( + _MSG_KEXDH_GEX_REQUEST_OLD, + _MSG_KEXDH_GEX_GROUP, + _MSG_KEXDH_GEX_INIT, + _MSG_KEXDH_GEX_REPLY, + _MSG_KEXDH_GEX_REQUEST, +) = range(30, 35) + +( + c_MSG_KEXDH_GEX_REQUEST_OLD, + c_MSG_KEXDH_GEX_GROUP, + c_MSG_KEXDH_GEX_INIT, + c_MSG_KEXDH_GEX_REPLY, + c_MSG_KEXDH_GEX_REQUEST, +) = [byte_chr(c) for c in range(30, 35)] + + +class KexGexSHA256: + name = "diffie-hellman-group-exchange-sha256" + min_bits = 2048 + max_bits = 8192 + preferred_bits = 2048 + hash_algo = sha256 + + def __init__(self, transport): + self.transport = transport + self.p = None + self.q = None + self.g = None + self.x = None + self.e = None + self.f = None + self.old_style = False + + def start_kex(self, _test_old_style=False): + if self.transport.server_mode: + self.transport._expect_packet( + _MSG_KEXDH_GEX_REQUEST, _MSG_KEXDH_GEX_REQUEST_OLD + ) + return + # request a bit range: we accept (min_bits) to (max_bits), but prefer + # (preferred_bits). + m = Message() + if _test_old_style: + # only used for unit tests: we shouldn't ever send this + m.add_byte(c_MSG_KEXDH_GEX_REQUEST_OLD) + m.add_int(self.preferred_bits) + self.old_style = True + else: + m.add_byte(c_MSG_KEXDH_GEX_REQUEST) + m.add_int(self.min_bits) + m.add_int(self.preferred_bits) + m.add_int(self.max_bits) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_GEX_GROUP) + + def parse_next(self, ptype, m): + if ptype == _MSG_KEXDH_GEX_REQUEST: + return self._parse_kexdh_gex_request(m) + elif ptype == _MSG_KEXDH_GEX_GROUP: + return self._parse_kexdh_gex_group(m) + elif ptype == _MSG_KEXDH_GEX_INIT: + return self._parse_kexdh_gex_init(m) + elif ptype == _MSG_KEXDH_GEX_REPLY: + return self._parse_kexdh_gex_reply(m) + elif ptype == _MSG_KEXDH_GEX_REQUEST_OLD: + return self._parse_kexdh_gex_request_old(m) + msg = "KexGex {} asked to handle packet type {:d}" + raise SSHException(msg.format(self.name, ptype)) + + # ...internals... + + def _generate_x(self): + # generate an "x" (1 < x < (p-1)/2). + q = (self.p - 1) // 2 + qnorm = util.deflate_long(q, 0) + qhbyte = byte_ord(qnorm[0]) + byte_count = len(qnorm) + qmask = 0xFF + while not (qhbyte & 0x80): + qhbyte <<= 1 + qmask >>= 1 + while True: + x_bytes = os.urandom(byte_count) + x_bytes = byte_mask(x_bytes[0], qmask) + x_bytes[1:] + x = util.inflate_long(x_bytes, 1) + if (x > 1) and (x < q): + break + self.x = x + + def _parse_kexdh_gex_request(self, m): + minbits = m.get_int() + preferredbits = m.get_int() + maxbits = m.get_int() + # smoosh the user's preferred size into our own limits + if preferredbits > self.max_bits: + preferredbits = self.max_bits + if preferredbits < self.min_bits: + preferredbits = self.min_bits + # fix min/max if they're inconsistent. technically, we could just pout + # and hang up, but there's no harm in giving them the benefit of the + # doubt and just picking a bitsize for them. + if minbits > preferredbits: + minbits = preferredbits + if maxbits < preferredbits: + maxbits = preferredbits + # now save a copy + self.min_bits = minbits + self.preferred_bits = preferredbits + self.max_bits = maxbits + # generate prime + pack = self.transport._get_modulus_pack() + if pack is None: + raise SSHException("Can't do server-side gex with no modulus pack") + self.transport._log( + DEBUG, + "Picking p ({} <= {} <= {} bits)".format( + minbits, preferredbits, maxbits + ), + ) + self.g, self.p = pack.get_modulus(minbits, preferredbits, maxbits) + m = Message() + m.add_byte(c_MSG_KEXDH_GEX_GROUP) + m.add_mpint(self.p) + m.add_mpint(self.g) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_GEX_INIT) + + def _parse_kexdh_gex_request_old(self, m): + # same as above, but without min_bits or max_bits (used by older + # clients like putty) + self.preferred_bits = m.get_int() + # smoosh the user's preferred size into our own limits + if self.preferred_bits > self.max_bits: + self.preferred_bits = self.max_bits + if self.preferred_bits < self.min_bits: + self.preferred_bits = self.min_bits + # generate prime + pack = self.transport._get_modulus_pack() + if pack is None: + raise SSHException("Can't do server-side gex with no modulus pack") + self.transport._log( + DEBUG, "Picking p (~ {} bits)".format(self.preferred_bits) + ) + self.g, self.p = pack.get_modulus( + self.min_bits, self.preferred_bits, self.max_bits + ) + m = Message() + m.add_byte(c_MSG_KEXDH_GEX_GROUP) + m.add_mpint(self.p) + m.add_mpint(self.g) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_GEX_INIT) + self.old_style = True + + def _parse_kexdh_gex_group(self, m): + self.p = m.get_mpint() + self.g = m.get_mpint() + # reject if p's bit length < 1024 or > 8192 + bitlen = util.bit_length(self.p) + if (bitlen < 1024) or (bitlen > 8192): + raise SSHException( + "Server-generated gex p (don't ask) is out of range " + "({} bits)".format(bitlen) + ) + self.transport._log(DEBUG, "Got server p ({} bits)".format(bitlen)) + self._generate_x() + # now compute e = g^x mod p + self.e = pow(self.g, self.x, self.p) + m = Message() + m.add_byte(c_MSG_KEXDH_GEX_INIT) + m.add_mpint(self.e) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_GEX_REPLY) + + def _parse_kexdh_gex_init(self, m): + self.e = m.get_mpint() + if (self.e < 1) or (self.e > self.p - 1): + raise SSHException('Client kex "e" is out of range') + self._generate_x() + self.f = pow(self.g, self.x, self.p) + K = pow(self.e, self.x, self.p) + key = self.transport.get_server_key().asbytes() + # okay, build up the hash H of + # (V_C || V_S || I_C || I_S || K_S || min || n || max || p || g || e || f || K) # noqa + hm = Message() + hm.add( + self.transport.remote_version, + self.transport.local_version, + self.transport.remote_kex_init, + self.transport.local_kex_init, + key, + ) + if not self.old_style: + hm.add_int(self.min_bits) + hm.add_int(self.preferred_bits) + if not self.old_style: + hm.add_int(self.max_bits) + hm.add_mpint(self.p) + hm.add_mpint(self.g) + hm.add_mpint(self.e) + hm.add_mpint(self.f) + hm.add_mpint(K) + H = self.hash_algo(hm.asbytes()).digest() + self.transport._set_K_H(K, H) + # sign it + sig = self.transport.get_server_key().sign_ssh_data( + H, self.transport.host_key_type + ) + # send reply + m = Message() + m.add_byte(c_MSG_KEXDH_GEX_REPLY) + m.add_string(key) + m.add_mpint(self.f) + m.add_string(sig) + self.transport._send_message(m) + self.transport._activate_outbound() + + def _parse_kexdh_gex_reply(self, m): + host_key = m.get_string() + self.f = m.get_mpint() + sig = m.get_string() + if (self.f < 1) or (self.f > self.p - 1): + raise SSHException('Server kex "f" is out of range') + K = pow(self.f, self.x, self.p) + # okay, build up the hash H of + # (V_C || V_S || I_C || I_S || K_S || min || n || max || p || g || e || f || K) # noqa + hm = Message() + hm.add( + self.transport.local_version, + self.transport.remote_version, + self.transport.local_kex_init, + self.transport.remote_kex_init, + host_key, + ) + if not self.old_style: + hm.add_int(self.min_bits) + hm.add_int(self.preferred_bits) + if not self.old_style: + hm.add_int(self.max_bits) + hm.add_mpint(self.p) + hm.add_mpint(self.g) + hm.add_mpint(self.e) + hm.add_mpint(self.f) + hm.add_mpint(K) + self.transport._set_K_H(K, self.hash_algo(hm.asbytes()).digest()) + self.transport._verify_key(host_key, sig) + self.transport._activate_outbound() diff --git a/.venv/lib/python3.9/site-packages/paramiko/kex_group14.py b/.venv/lib/python3.9/site-packages/paramiko/kex_group14.py new file mode 100644 index 0000000..108dfa7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/kex_group14.py @@ -0,0 +1,154 @@ +# Copyright (C) 2003-2007 Robey Pointer +# Copyright (C) 2013 Torsten Landschoff +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Standard SSH key exchange ("kex" if you wanna sound cool). Diffie-Hellman of +1024 bit key halves, using a known "p" prime and "g" generator. +""" + +import os +from hashlib import sha256 + +from paramiko import util +from paramiko.common import byte_chr, byte_mask, max_byte, zero_byte +from paramiko.message import Message +from paramiko.ssh_exception import SSHException + +_MSG_KEXDH_INIT, _MSG_KEXDH_REPLY = range(30, 32) +c_MSG_KEXDH_INIT, c_MSG_KEXDH_REPLY = [byte_chr(c) for c in range(30, 32)] + +b7fffffffffffffff = byte_chr(0x7F) + max_byte * 7 +b0000000000000000 = zero_byte * 8 + + +class KexGroup14SHA256: + # http://tools.ietf.org/html/rfc3526#section-3 + P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF # noqa + G = 2 + + name = "diffie-hellman-group14-sha256" + hash_algo = sha256 + + def __init__(self, transport): + self.transport = transport + self.x = 0 + self.e = 0 + self.f = 0 + + def start_kex(self): + self._generate_x() + if self.transport.server_mode: + # compute f = g^x mod p, but don't send it yet + self.f = pow(self.G, self.x, self.P) + self.transport._expect_packet(_MSG_KEXDH_INIT) + return + # compute e = g^x mod p (where g=2), and send it + self.e = pow(self.G, self.x, self.P) + m = Message() + m.add_byte(c_MSG_KEXDH_INIT) + m.add_mpint(self.e) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_REPLY) + + def parse_next(self, ptype, m): + if self.transport.server_mode and (ptype == _MSG_KEXDH_INIT): + return self._parse_kexdh_init(m) + elif not self.transport.server_mode and (ptype == _MSG_KEXDH_REPLY): + return self._parse_kexdh_reply(m) + msg = "KexGroup14SHA256 asked to handle packet type {:d}" + raise SSHException(msg.format(ptype)) + + # ...internals... + + def _generate_x(self): + # generate an "x" (1 < x < q), where q is (p-1)/2. + # p is a 128-byte (1024-bit) number, where the first 64 bits are 1. + # therefore q can be approximated as a 2^1023. we drop the subset of + # potential x where the first 63 bits are 1, because some of those + # will be larger than q (but this is a tiny tiny subset of + # potential x). + while 1: + x_bytes = os.urandom(128) + x_bytes = byte_mask(x_bytes[0], 0x7F) + x_bytes[1:] + if ( + x_bytes[:8] != b7fffffffffffffff + and x_bytes[:8] != b0000000000000000 + ): + break + self.x = util.inflate_long(x_bytes) + + def _parse_kexdh_reply(self, m): + # client mode + host_key = m.get_string() + self.f = m.get_mpint() + if (self.f < 1) or (self.f > self.P - 1): + raise SSHException('Server kex "f" is out of range') + sig = m.get_binary() + K = pow(self.f, self.x, self.P) + # okay, build up the hash H of + # (V_C || V_S || I_C || I_S || K_S || e || f || K) + hm = Message() + hm.add( + self.transport.local_version, + self.transport.remote_version, + self.transport.local_kex_init, + self.transport.remote_kex_init, + ) + hm.add_string(host_key) + hm.add_mpint(self.e) + hm.add_mpint(self.f) + hm.add_mpint(K) + self.transport._set_K_H(K, self.hash_algo(hm.asbytes()).digest()) + self.transport._verify_key(host_key, sig) + self.transport._activate_outbound() + + def _parse_kexdh_init(self, m): + # server mode + self.e = m.get_mpint() + if (self.e < 1) or (self.e > self.P - 1): + raise SSHException('Client kex "e" is out of range') + K = pow(self.e, self.x, self.P) + key = self.transport.get_server_key().asbytes() + # okay, build up the hash H of + # (V_C || V_S || I_C || I_S || K_S || e || f || K) + hm = Message() + hm.add( + self.transport.remote_version, + self.transport.local_version, + self.transport.remote_kex_init, + self.transport.local_kex_init, + ) + hm.add_string(key) + hm.add_mpint(self.e) + hm.add_mpint(self.f) + hm.add_mpint(K) + H = self.hash_algo(hm.asbytes()).digest() + self.transport._set_K_H(K, H) + # sign it + sig = self.transport.get_server_key().sign_ssh_data( + H, self.transport.host_key_type + ) + # send reply + m = Message() + m.add_byte(c_MSG_KEXDH_REPLY) + m.add_string(key) + m.add_mpint(self.f) + m.add_string(sig) + self.transport._send_message(m) + self.transport._activate_outbound() diff --git a/.venv/lib/python3.9/site-packages/paramiko/kex_group16.py b/.venv/lib/python3.9/site-packages/paramiko/kex_group16.py new file mode 100644 index 0000000..47fe961 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/kex_group16.py @@ -0,0 +1,36 @@ +# Copyright (C) 2019 Edgar Sousa +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Standard SSH key exchange ("kex" if you wanna sound cool). Diffie-Hellman of +4096 bit key halves, using a known "p" prime and "g" generator. +""" + +from hashlib import sha512 + +from paramiko.kex_group14 import KexGroup14SHA256 + + +class KexGroup16SHA512(KexGroup14SHA256): + name = "diffie-hellman-group16-sha512" + # http://tools.ietf.org/html/rfc3526#section-5 + P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF # noqa + G = 2 + + name = "diffie-hellman-group16-sha512" + hash_algo = sha512 diff --git a/.venv/lib/python3.9/site-packages/paramiko/message.py b/.venv/lib/python3.9/site-packages/paramiko/message.py new file mode 100644 index 0000000..03e836d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/message.py @@ -0,0 +1,318 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Implementation of an SSH2 "message". +""" + +import struct +from io import BytesIO + +from paramiko import util +from paramiko.common import max_byte, one_byte, zero_byte +from paramiko.util import u + + +class Message: + """ + An SSH2 message is a stream of bytes that encodes some combination of + strings, integers, bools, and infinite-precision integers. This class + builds or breaks down such a byte stream. + + Normally you don't need to deal with anything this low-level, but it's + exposed for people implementing custom extensions, or features that + paramiko doesn't support yet. + """ + + big_int = 0xFF000000 + + def __init__(self, content=None): + """ + Create a new SSH2 message. + + :param bytes content: + the byte stream to use as the message content (passed in only when + decomposing a message). + """ + if content is not None: + self.packet = BytesIO(content) + else: + self.packet = BytesIO() + + def __bytes__(self): + return self.asbytes() + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + """ + return "paramiko.Message(" + repr(self.packet.getvalue()) + ")" + + # TODO (backwards incompat): just merge into __bytes__ (everywhere) + def asbytes(self): + """ + Return the byte stream content of this Message, as a `bytes`. + """ + return self.packet.getvalue() + + def rewind(self): + """ + Rewind the message to the beginning as if no items had been parsed + out of it yet. + """ + self.packet.seek(0) + + def get_remainder(self): + """ + Return the `bytes` of this message that haven't already been parsed and + returned. + """ + position = self.packet.tell() + remainder = self.packet.read() + self.packet.seek(position) + return remainder + + def get_so_far(self): + """ + Returns the `bytes` of this message that have been parsed and + returned. The string passed into a message's constructor can be + regenerated by concatenating ``get_so_far`` and `get_remainder`. + """ + position = self.packet.tell() + self.rewind() + return self.packet.read(position) + + def get_bytes(self, n): + """ + Return the next ``n`` bytes of the message, without decomposing into an + int, decoded string, etc. Just the raw bytes are returned. Returns a + string of ``n`` zero bytes if there weren't ``n`` bytes remaining in + the message. + """ + b = self.packet.read(n) + max_pad_size = 1 << 20 # Limit padding to 1 MB + if len(b) < n < max_pad_size: + return b + zero_byte * (n - len(b)) + return b + + def get_byte(self): + """ + Return the next byte of the message, without decomposing it. This + is equivalent to `get_bytes(1) `. + + :return: + the next (`bytes`) byte of the message, or ``b'\000'`` if there + aren't any bytes remaining. + """ + return self.get_bytes(1) + + def get_boolean(self): + """ + Fetch a boolean from the stream. + """ + b = self.get_bytes(1) + return b != zero_byte + + def get_adaptive_int(self): + """ + Fetch an int from the stream. + + :return: a 32-bit unsigned `int`. + """ + byte = self.get_bytes(1) + if byte == max_byte: + return util.inflate_long(self.get_binary()) + byte += self.get_bytes(3) + return struct.unpack(">I", byte)[0] + + def get_int(self): + """ + Fetch an int from the stream. + """ + return struct.unpack(">I", self.get_bytes(4))[0] + + def get_int64(self): + """ + Fetch a 64-bit int from the stream. + + :return: a 64-bit unsigned integer (`int`). + """ + return struct.unpack(">Q", self.get_bytes(8))[0] + + def get_mpint(self): + """ + Fetch a long int (mpint) from the stream. + + :return: an arbitrary-length integer (`int`). + """ + return util.inflate_long(self.get_binary()) + + # TODO (backwards incompat): depending on where this is used internally or + # downstream, force users to specify get_binary instead and delete this. + def get_string(self): + """ + Fetch a "string" from the stream. This will actually be a `bytes` + object, and may contain unprintable characters. (It's not unheard of + for a string to contain another byte-stream message.) + """ + return self.get_bytes(self.get_int()) + + # TODO (backwards incompat): also consider having this take over the + # get_string name, and remove this name instead. + def get_text(self): + """ + Fetch a Unicode string from the stream. + + This currently operates by attempting to encode the next "string" as + ``utf-8``. + """ + return u(self.get_string()) + + def get_binary(self): + """ + Alias for `get_string` (obtains a bytestring). + """ + return self.get_bytes(self.get_int()) + + def get_list(self): + """ + Fetch a list of `strings ` from the stream. + + These are trivially encoded as comma-separated values in a string. + """ + return self.get_text().split(",") + + def add_bytes(self, b): + """ + Write bytes to the stream, without any formatting. + + :param bytes b: bytes to add + """ + self.packet.write(b) + return self + + def add_byte(self, b): + """ + Write a single byte to the stream, without any formatting. + + :param bytes b: byte to add + """ + self.packet.write(b) + return self + + def add_boolean(self, b): + """ + Add a boolean value to the stream. + + :param bool b: boolean value to add + """ + if b: + self.packet.write(one_byte) + else: + self.packet.write(zero_byte) + return self + + def add_int(self, n): + """ + Add an integer to the stream. + + :param int n: integer to add + """ + self.packet.write(struct.pack(">I", n)) + return self + + def add_adaptive_int(self, n): + """ + Add an integer to the stream. + + :param int n: integer to add + """ + if n >= Message.big_int: + self.packet.write(max_byte) + self.add_string(util.deflate_long(n)) + else: + self.packet.write(struct.pack(">I", n)) + return self + + def add_int64(self, n): + """ + Add a 64-bit int to the stream. + + :param int n: long int to add + """ + self.packet.write(struct.pack(">Q", n)) + return self + + def add_mpint(self, z): + """ + Add a long int to the stream, encoded as an infinite-precision + integer. This method only works on positive numbers. + + :param int z: long int to add + """ + self.add_string(util.deflate_long(z)) + return self + + # TODO: see the TODO for get_string/get_text/et al, this should change + # to match. + def add_string(self, s): + """ + Add a bytestring to the stream. + + :param byte s: bytestring to add + """ + s = util.asbytes(s) + self.add_int(len(s)) + self.packet.write(s) + return self + + def add_list(self, l): # noqa: E741 + """ + Add a list of strings to the stream. They are encoded identically to + a single string of values separated by commas. (Yes, really, that's + how SSH2 does it.) + + :param l: list of strings to add + """ + self.add_string(",".join(l)) + return self + + def _add(self, i): + if type(i) is bool: + return self.add_boolean(i) + elif isinstance(i, int): + return self.add_adaptive_int(i) + elif type(i) is list: + return self.add_list(i) + else: + return self.add_string(i) + + # TODO: this would never have worked for unicode strings under Python 3, + # guessing nobody/nothing ever used it for that purpose? + def add(self, *seq): + """ + Add a sequence of items to the stream. The values are encoded based + on their type: bytes, str, int, bool, or list. + + .. warning:: + Longs are encoded non-deterministically. Don't use this method. + + :param seq: the sequence of items + """ + for item in seq: + self._add(item) diff --git a/.venv/lib/python3.9/site-packages/paramiko/packet.py b/.venv/lib/python3.9/site-packages/paramiko/packet.py new file mode 100644 index 0000000..f1de4b0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/packet.py @@ -0,0 +1,696 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Packet handling +""" + +import errno +import os +import socket +import struct +import threading +import time +from hmac import HMAC + +from paramiko import util +from paramiko.common import ( + linefeed_byte, + cr_byte_value, + MSG_NAMES, + DEBUG, + xffffffff, + zero_byte, + byte_ord, +) +from paramiko.util import u +from paramiko.ssh_exception import SSHException, ProxyCommandFailure +from paramiko.message import Message + + +def compute_hmac(key, message, digest_class): + return HMAC(key, message, digest_class).digest() + + +class NeedRekeyException(Exception): + """ + Exception indicating a rekey is needed. + """ + + pass + + +def first_arg(e): + arg = None + if type(e.args) is tuple and len(e.args) > 0: + arg = e.args[0] + return arg + + +class Packetizer: + """ + Implementation of the base SSH packet protocol. + """ + + # READ the secsh RFC's before raising these values. if anything, + # they should probably be lower. + REKEY_PACKETS = pow(2, 29) + REKEY_BYTES = pow(2, 29) + + # Allow receiving this many packets after a re-key request before + # terminating + REKEY_PACKETS_OVERFLOW_MAX = pow(2, 29) + # Allow receiving this many bytes after a re-key request before terminating + REKEY_BYTES_OVERFLOW_MAX = pow(2, 29) + + def __init__(self, socket): + self.__socket = socket + self.__logger = None + self.__closed = False + self.__dump_packets = False + self.__need_rekey = False + self.__init_count = 0 + self.__remainder = bytes() + self._initial_kex_done = False + + # used for noticing when to re-key: + self.__sent_bytes = 0 + self.__sent_packets = 0 + self.__received_bytes = 0 + self.__received_packets = 0 + self.__received_bytes_overflow = 0 + self.__received_packets_overflow = 0 + + # current inbound/outbound ciphering: + self.__block_size_out = 8 + self.__block_size_in = 8 + self.__mac_size_out = 0 + self.__mac_size_in = 0 + self.__block_engine_out = None + self.__block_engine_in = None + self.__sdctr_out = False + self.__mac_engine_out = None + self.__mac_engine_in = None + self.__mac_key_out = bytes() + self.__mac_key_in = bytes() + self.__compress_engine_out = None + self.__compress_engine_in = None + self.__sequence_number_out = 0 + self.__sequence_number_in = 0 + self.__etm_out = False + self.__etm_in = False + + # AEAD (eg aes128-gcm/aes256-gcm) cipher use + self.__aead_out = False + self.__aead_in = False + self.__iv_out = None + self.__iv_in = None + + # lock around outbound writes (packet computation) + self.__write_lock = threading.RLock() + + # keepalives: + self.__keepalive_interval = 0 + self.__keepalive_last = time.time() + self.__keepalive_callback = None + + self.__timer = None + self.__handshake_complete = False + self.__timer_expired = False + + @property + def closed(self): + return self.__closed + + def reset_seqno_out(self): + self.__sequence_number_out = 0 + + def reset_seqno_in(self): + self.__sequence_number_in = 0 + + def set_log(self, log): + """ + Set the Python log object to use for logging. + """ + self.__logger = log + + def set_outbound_cipher( + self, + block_engine, + block_size, + mac_engine, + mac_size, + mac_key, + sdctr=False, + etm=False, + aead=False, + iv_out=None, + ): + """ + Switch outbound data cipher. + :param etm: Set encrypt-then-mac from OpenSSH + """ + self.__block_engine_out = block_engine + self.__sdctr_out = sdctr + self.__block_size_out = block_size + self.__mac_engine_out = mac_engine + self.__mac_size_out = mac_size + self.__mac_key_out = mac_key + self.__sent_bytes = 0 + self.__sent_packets = 0 + self.__etm_out = etm + self.__aead_out = aead + self.__iv_out = iv_out + # wait until the reset happens in both directions before clearing + # rekey flag + self.__init_count |= 1 + if self.__init_count == 3: + self.__init_count = 0 + self.__need_rekey = False + + def set_inbound_cipher( + self, + block_engine, + block_size, + mac_engine, + mac_size, + mac_key, + etm=False, + aead=False, + iv_in=None, + ): + """ + Switch inbound data cipher. + :param etm: Set encrypt-then-mac from OpenSSH + """ + self.__block_engine_in = block_engine + self.__block_size_in = block_size + self.__mac_engine_in = mac_engine + self.__mac_size_in = mac_size + self.__mac_key_in = mac_key + self.__received_bytes = 0 + self.__received_packets = 0 + self.__received_bytes_overflow = 0 + self.__received_packets_overflow = 0 + self.__etm_in = etm + self.__aead_in = aead + self.__iv_in = iv_in + # wait until the reset happens in both directions before clearing + # rekey flag + self.__init_count |= 2 + if self.__init_count == 3: + self.__init_count = 0 + self.__need_rekey = False + + def set_outbound_compressor(self, compressor): + self.__compress_engine_out = compressor + + def set_inbound_compressor(self, compressor): + self.__compress_engine_in = compressor + + def close(self): + self.__closed = True + self.__socket.close() + + def set_hexdump(self, hexdump): + self.__dump_packets = hexdump + + def get_hexdump(self): + return self.__dump_packets + + def get_mac_size_in(self): + return self.__mac_size_in + + def get_mac_size_out(self): + return self.__mac_size_out + + def need_rekey(self): + """ + Returns ``True`` if a new set of keys needs to be negotiated. This + will be triggered during a packet read or write, so it should be + checked after every read or write, or at least after every few. + """ + return self.__need_rekey + + def set_keepalive(self, interval, callback): + """ + Turn on/off the callback keepalive. If ``interval`` seconds pass with + no data read from or written to the socket, the callback will be + executed and the timer will be reset. + """ + self.__keepalive_interval = interval + self.__keepalive_callback = callback + self.__keepalive_last = time.time() + + def read_timer(self): + self.__timer_expired = True + + def start_handshake(self, timeout): + """ + Tells `Packetizer` that the handshake process started. + Starts a book keeping timer that can signal a timeout in the + handshake process. + + :param float timeout: amount of seconds to wait before timing out + """ + if not self.__timer: + self.__timer = threading.Timer(float(timeout), self.read_timer) + self.__timer.start() + + def handshake_timed_out(self): + """ + Checks if the handshake has timed out. + + If `start_handshake` wasn't called before the call to this function, + the return value will always be `False`. If the handshake completed + before a timeout was reached, the return value will be `False` + + :return: handshake time out status, as a `bool` + """ + if not self.__timer: + return False + if self.__handshake_complete: + return False + return self.__timer_expired + + def complete_handshake(self): + """ + Tells `Packetizer` that the handshake has completed. + """ + if self.__timer: + self.__timer.cancel() + self.__timer_expired = False + self.__handshake_complete = True + + def read_all(self, n, check_rekey=False): + """ + Read as close to N bytes as possible, blocking as long as necessary. + + :param int n: number of bytes to read + :return: the data read, as a `str` + + :raises: + ``EOFError`` -- if the socket was closed before all the bytes could + be read + """ + out = bytes() + # handle over-reading from reading the banner line + if len(self.__remainder) > 0: + out = self.__remainder[:n] + self.__remainder = self.__remainder[n:] + n -= len(out) + while n > 0: + got_timeout = False + if self.handshake_timed_out(): + raise EOFError() + try: + x = self.__socket.recv(n) + if len(x) == 0: + raise EOFError() + out += x + n -= len(x) + except socket.timeout: + got_timeout = True + except socket.error as e: + # on Linux, sometimes instead of socket.timeout, we get + # EAGAIN. this is a bug in recent (> 2.6.9) kernels but + # we need to work around it. + arg = first_arg(e) + if arg == errno.EAGAIN: + got_timeout = True + elif self.__closed: + raise EOFError() + else: + raise + if got_timeout: + if self.__closed: + raise EOFError() + if check_rekey and (len(out) == 0) and self.__need_rekey: + raise NeedRekeyException() + self._check_keepalive() + return out + + def write_all(self, out): + self.__keepalive_last = time.time() + iteration_with_zero_as_return_value = 0 + while len(out) > 0: + retry_write = False + try: + n = self.__socket.send(out) + except socket.timeout: + retry_write = True + except socket.error as e: + arg = first_arg(e) + if arg == errno.EAGAIN: + retry_write = True + else: + n = -1 + except ProxyCommandFailure: + raise # so it doesn't get swallowed by the below catchall + except Exception: + # could be: (32, 'Broken pipe') + n = -1 + if retry_write: + n = 0 + if self.__closed: + n = -1 + else: + if n == 0 and iteration_with_zero_as_return_value > 10: + # We shouldn't retry the write, but we didn't + # manage to send anything over the socket. This might be an + # indication that we have lost contact with the remote + # side, but are yet to receive an EOFError or other socket + # errors. Let's give it some iteration to try and catch up. + n = -1 + iteration_with_zero_as_return_value += 1 + if n < 0: + raise EOFError() + if n == len(out): + break + out = out[n:] + return + + def readline(self, timeout): + """ + Read a line from the socket. We assume no data is pending after the + line, so it's okay to attempt large reads. + """ + buf = self.__remainder + while linefeed_byte not in buf: + buf += self._read_timeout(timeout) + n = buf.index(linefeed_byte) + self.__remainder = buf[n + 1 :] + buf = buf[:n] + if (len(buf) > 0) and (buf[-1] == cr_byte_value): + buf = buf[:-1] + return u(buf) + + def _inc_iv_counter(self, iv): + # Per https://www.rfc-editor.org/rfc/rfc5647.html#section-7.1 , + # we increment the last 8 bytes of the 12-byte IV... + iv_counter_b = iv[4:] + iv_counter = int.from_bytes(iv_counter_b, "big") + inc_iv_counter = iv_counter + 1 + inc_iv_counter_b = inc_iv_counter.to_bytes(8, "big") + # ...then re-concatenate it with the static first 4 bytes + new_iv = iv[0:4] + inc_iv_counter_b + return new_iv + + def send_message(self, data): + """ + Write a block of data using the current cipher, as an SSH block. + """ + # encrypt this sucka + data = data.asbytes() + cmd = byte_ord(data[0]) + if cmd in MSG_NAMES: + cmd_name = MSG_NAMES[cmd] + else: + cmd_name = "${:x}".format(cmd) + orig_len = len(data) + self.__write_lock.acquire() + try: + if self.__compress_engine_out is not None: + data = self.__compress_engine_out(data) + packet = self._build_packet(data) + if self.__dump_packets: + self._log( + DEBUG, + "Write packet <{}>, length {}".format(cmd_name, orig_len), + ) + self._log(DEBUG, util.format_binary(packet, "OUT: ")) + if self.__block_engine_out is not None: + if self.__etm_out: + # packet length is not encrypted in EtM + out = packet[0:4] + self.__block_engine_out.update( + packet[4:] + ) + elif self.__aead_out: + # Packet-length field is used as the 'associated data' + # under AES-GCM, so like EtM, it's not encrypted. See + # https://www.rfc-editor.org/rfc/rfc5647#section-7.3 + out = packet[0:4] + self.__block_engine_out.encrypt( + self.__iv_out, packet[4:], packet[0:4] + ) + self.__iv_out = self._inc_iv_counter(self.__iv_out) + else: + out = self.__block_engine_out.update(packet) + else: + out = packet + # Append an MAC when needed (eg, not under AES-GCM) + if self.__block_engine_out is not None and not self.__aead_out: + packed = struct.pack(">I", self.__sequence_number_out) + payload = packed + (out if self.__etm_out else packet) + out += compute_hmac( + self.__mac_key_out, payload, self.__mac_engine_out + )[: self.__mac_size_out] + next_seq = (self.__sequence_number_out + 1) & xffffffff + if next_seq == 0 and not self._initial_kex_done: + raise SSHException( + "Sequence number rolled over during initial kex!" + ) + self.__sequence_number_out = next_seq + self.write_all(out) + + self.__sent_bytes += len(out) + self.__sent_packets += 1 + sent_too_much = ( + self.__sent_packets >= self.REKEY_PACKETS + or self.__sent_bytes >= self.REKEY_BYTES + ) + if sent_too_much and not self.__need_rekey: + # only ask once for rekeying + msg = "Rekeying (hit {} packets, {} bytes sent)" + self._log( + DEBUG, msg.format(self.__sent_packets, self.__sent_bytes) + ) + self.__received_bytes_overflow = 0 + self.__received_packets_overflow = 0 + self._trigger_rekey() + finally: + self.__write_lock.release() + + def read_message(self): + """ + Only one thread should ever be in this function (no other locking is + done). + + :raises: `.SSHException` -- if the packet is mangled + :raises: `.NeedRekeyException` -- if the transport should rekey + """ + header = self.read_all(self.__block_size_in, check_rekey=True) + if self.__etm_in: + packet_size = struct.unpack(">I", header[:4])[0] + remaining = packet_size - self.__block_size_in + 4 + packet = header[4:] + self.read_all(remaining, check_rekey=False) + mac = self.read_all(self.__mac_size_in, check_rekey=False) + mac_payload = ( + struct.pack(">II", self.__sequence_number_in, packet_size) + + packet + ) + my_mac = compute_hmac( + self.__mac_key_in, mac_payload, self.__mac_engine_in + )[: self.__mac_size_in] + if not util.constant_time_bytes_eq(my_mac, mac): + raise SSHException("Mismatched MAC") + header = packet + + if self.__aead_in: + # Grab unencrypted (considered 'additional data' under GCM) packet + # length. + packet_size = struct.unpack(">I", header[:4])[0] + aad = header[:4] + remaining = ( + packet_size - self.__block_size_in + 4 + self.__mac_size_in + ) + packet = header[4:] + self.read_all(remaining, check_rekey=False) + header = self.__block_engine_in.decrypt(self.__iv_in, packet, aad) + + self.__iv_in = self._inc_iv_counter(self.__iv_in) + + if self.__block_engine_in is not None and not self.__aead_in: + header = self.__block_engine_in.update(header) + if self.__dump_packets: + self._log(DEBUG, util.format_binary(header, "IN: ")) + + # When ETM or AEAD (GCM) are in use, we've already read the packet size + # & decrypted everything, so just set the packet back to the header we + # obtained. + if self.__etm_in or self.__aead_in: + packet = header + # Otherwise, use the older non-ETM logic + else: + packet_size = struct.unpack(">I", header[:4])[0] + + # leftover contains decrypted bytes from the first block (after the + # length field) + leftover = header[4:] + if (packet_size - len(leftover)) % self.__block_size_in != 0: + raise SSHException("Invalid packet blocking") + buf = self.read_all( + packet_size + self.__mac_size_in - len(leftover) + ) + packet = buf[: packet_size - len(leftover)] + post_packet = buf[packet_size - len(leftover) :] + + if self.__block_engine_in is not None: + packet = self.__block_engine_in.update(packet) + packet = leftover + packet + + if self.__dump_packets: + self._log(DEBUG, util.format_binary(packet, "IN: ")) + + if self.__mac_size_in > 0 and not self.__etm_in and not self.__aead_in: + mac = post_packet[: self.__mac_size_in] + mac_payload = ( + struct.pack(">II", self.__sequence_number_in, packet_size) + + packet + ) + my_mac = compute_hmac( + self.__mac_key_in, mac_payload, self.__mac_engine_in + )[: self.__mac_size_in] + if not util.constant_time_bytes_eq(my_mac, mac): + raise SSHException("Mismatched MAC") + padding = byte_ord(packet[0]) + payload = packet[1 : packet_size - padding] + + if self.__dump_packets: + self._log( + DEBUG, + "Got payload ({} bytes, {} padding)".format( + packet_size, padding + ), + ) + + if self.__compress_engine_in is not None: + payload = self.__compress_engine_in(payload) + + msg = Message(payload[1:]) + msg.seqno = self.__sequence_number_in + next_seq = (self.__sequence_number_in + 1) & xffffffff + if next_seq == 0 and not self._initial_kex_done: + raise SSHException( + "Sequence number rolled over during initial kex!" + ) + self.__sequence_number_in = next_seq + + # check for rekey + raw_packet_size = packet_size + self.__mac_size_in + 4 + self.__received_bytes += raw_packet_size + self.__received_packets += 1 + if self.__need_rekey: + # we've asked to rekey -- give them some packets to comply before + # dropping the connection + self.__received_bytes_overflow += raw_packet_size + self.__received_packets_overflow += 1 + if ( + self.__received_packets_overflow + >= self.REKEY_PACKETS_OVERFLOW_MAX + ) or ( + self.__received_bytes_overflow >= self.REKEY_BYTES_OVERFLOW_MAX + ): + raise SSHException( + "Remote transport is ignoring rekey requests" + ) + elif (self.__received_packets >= self.REKEY_PACKETS) or ( + self.__received_bytes >= self.REKEY_BYTES + ): + # only ask once for rekeying + err = "Rekeying (hit {} packets, {} bytes received)" + self._log( + DEBUG, + err.format(self.__received_packets, self.__received_bytes), + ) + self.__received_bytes_overflow = 0 + self.__received_packets_overflow = 0 + self._trigger_rekey() + + cmd = byte_ord(payload[0]) + if cmd in MSG_NAMES: + cmd_name = MSG_NAMES[cmd] + else: + cmd_name = "${:x}".format(cmd) + if self.__dump_packets: + self._log( + DEBUG, + "Read packet <{}>, length {}".format(cmd_name, len(payload)), + ) + return cmd, msg + + # ...protected... + + def _log(self, level, msg): + if self.__logger is None: + return + if issubclass(type(msg), list): + for m in msg: + self.__logger.log(level, m) + else: + self.__logger.log(level, msg) + + def _check_keepalive(self): + if ( + not self.__keepalive_interval + or not self.__block_engine_out + or self.__need_rekey + ): + # wait till we're encrypting, and not in the middle of rekeying + return + now = time.time() + if now > self.__keepalive_last + self.__keepalive_interval: + self.__keepalive_callback() + self.__keepalive_last = now + + def _read_timeout(self, timeout): + start = time.time() + while True: + try: + x = self.__socket.recv(128) + if len(x) == 0: + raise EOFError() + break + except socket.timeout: + pass + if self.__closed: + raise EOFError() + now = time.time() + if now - start >= timeout: + raise socket.timeout() + return x + + def _build_packet(self, payload): + # pad up at least 4 bytes, to nearest block-size (usually 8) + bsize = self.__block_size_out + # do not include payload length in computations for padding in EtM mode + # (payload length won't be encrypted) + addlen = 4 if self.__etm_out or self.__aead_out else 8 + padding = 3 + bsize - ((len(payload) + addlen) % bsize) + packet = struct.pack(">IB", len(payload) + padding + 1, padding) + packet += payload + if self.__sdctr_out or self.__block_engine_out is None: + # cute trick i caught openssh doing: if we're not encrypting or + # SDCTR mode (RFC4344), + # don't waste random bytes for the padding + packet += zero_byte * padding + else: + packet += os.urandom(padding) + return packet + + def _trigger_rekey(self): + # outside code should check for this flag + self.__need_rekey = True diff --git a/.venv/lib/python3.9/site-packages/paramiko/pipe.py b/.venv/lib/python3.9/site-packages/paramiko/pipe.py new file mode 100644 index 0000000..65944fa --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/pipe.py @@ -0,0 +1,148 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Abstraction of a one-way pipe where the read end can be used in +`select.select`. Normally this is trivial, but Windows makes it nearly +impossible. + +The pipe acts like an Event, which can be set or cleared. When set, the pipe +will trigger as readable in `select `. +""" + +import sys +import os +import socket + + +def make_pipe(): + if sys.platform[:3] != "win": + p = PosixPipe() + else: + p = WindowsPipe() + return p + + +class PosixPipe: + def __init__(self): + self._rfd, self._wfd = os.pipe() + self._set = False + self._forever = False + self._closed = False + + def close(self): + os.close(self._rfd) + os.close(self._wfd) + # used for unit tests: + self._closed = True + + def fileno(self): + return self._rfd + + def clear(self): + if not self._set or self._forever: + return + os.read(self._rfd, 1) + self._set = False + + def set(self): + if self._set or self._closed: + return + self._set = True + os.write(self._wfd, b"*") + + def set_forever(self): + self._forever = True + self.set() + + +class WindowsPipe: + """ + On Windows, only an OS-level "WinSock" may be used in select(), but reads + and writes must be to the actual socket object. + """ + + def __init__(self): + serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + serv.bind(("127.0.0.1", 0)) + serv.listen(1) + + # need to save sockets in _rsock/_wsock so they don't get closed + self._rsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self._rsock.connect(("127.0.0.1", serv.getsockname()[1])) + + self._wsock, addr = serv.accept() + serv.close() + self._set = False + self._forever = False + self._closed = False + + def close(self): + self._rsock.close() + self._wsock.close() + # used for unit tests: + self._closed = True + + def fileno(self): + return self._rsock.fileno() + + def clear(self): + if not self._set or self._forever: + return + self._rsock.recv(1) + self._set = False + + def set(self): + if self._set or self._closed: + return + self._set = True + self._wsock.send(b"*") + + def set_forever(self): + self._forever = True + self.set() + + +class OrPipe: + def __init__(self, pipe): + self._set = False + self._partner = None + self._pipe = pipe + + def set(self): + self._set = True + if not self._partner._set: + self._pipe.set() + + def clear(self): + self._set = False + if not self._partner._set: + self._pipe.clear() + + +def make_or_pipe(pipe): + """ + wraps a pipe into two pipe-like objects which are "or"d together to + affect the real pipe. if either returned pipe is set, the wrapped pipe + is set. when both are cleared, the wrapped pipe is cleared. + """ + p1 = OrPipe(pipe) + p2 = OrPipe(pipe) + p1._partner = p2 + p2._partner = p1 + return p1, p2 diff --git a/.venv/lib/python3.9/site-packages/paramiko/pkey.py b/.venv/lib/python3.9/site-packages/paramiko/pkey.py new file mode 100644 index 0000000..4600cb9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/pkey.py @@ -0,0 +1,1014 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Common API for all public keys. +""" + +import base64 +import os +import re +import struct +from base64 import decodebytes, encodebytes +from binascii import unhexlify +from hashlib import md5, sha256 +from io import RawIOBase +from pathlib import Path +from typing import NamedTuple, Optional, Union + +import bcrypt +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import asymmetric, padding, serialization +from cryptography.hazmat.primitives.asymmetric.ec import ( + EllipticCurvePrivateKey, +) +from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey +from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes + +from paramiko import util +from paramiko.common import o600 +from paramiko.message import Message +from paramiko.ssh_exception import PasswordRequiredException, SSHException +from paramiko.util import b, u + +# TripleDES is moving from `cryptography.hazmat.primitives.ciphers.algorithms` +# in cryptography>=43.0.0 to `cryptography.hazmat.decrepit.ciphers.algorithms` +# It will be removed from `cryptography.hazmat.primitives.ciphers.algorithms` +# in cryptography==48.0.0. +# +# Source References: +# - https://github.com/pyca/cryptography/commit/722a6393e61b3ac +# - https://github.com/pyca/cryptography/pull/11407/files +try: + from cryptography.hazmat.decrepit.ciphers.algorithms import TripleDES +except ImportError: + from cryptography.hazmat.primitives.ciphers.algorithms import TripleDES + + +OPENSSH_AUTH_MAGIC = b"openssh-key-v1\x00" + + +def _unpad_openssh(data): + # At the moment, this is only used for unpadding private keys on disk. This + # really ought to be made constant time (possibly by upstreaming this logic + # into pyca/cryptography). + padding_length = data[-1] + if 0x20 <= padding_length < 0x7F: + return data # no padding, last byte part comment (printable ascii) + if padding_length > 15: + raise SSHException("Invalid key") + for i in range(padding_length): + if data[i - padding_length] != i + 1: + raise SSHException("Invalid key") + return data[:-padding_length] + + +class UnknownKeyType(Exception): + """ + An unknown public/private key algorithm was attempted to be read. + """ + + def __init__(self, key_type=None, key_bytes=None): + self.key_type = key_type + self.key_bytes = key_bytes + + def __str__(self): + return f"UnknownKeyType(type={self.key_type!r}, bytes=<{len(self.key_bytes)}>)" # noqa + + +class FileFormat(NamedTuple): + format: serialization.PrivateFormat + encoding: serialization.Encoding + + +# While these have no apparent interface/protocol within Cryptography, all can +# be duck typed as eg "having .private_bytes", which we have always relied upon +# implicitly since the switch to this library. +PrivateKey = Union[RSAPrivateKey, EllipticCurvePrivateKey, Ed25519PrivateKey] + +# NOTE: considered making these part of an Enum but that was a bit +# annoying/fussy, so this is an okay middle ground? +PEM = FileFormat( + format=serialization.PrivateFormat.TraditionalOpenSSL, + encoding=serialization.Encoding.PEM, +) +OPENSSH = FileFormat( + format=serialization.PrivateFormat.OpenSSH, + encoding=serialization.Encoding.PEM, +) +# TODO: others as desired? + + +class PKey: + """ + Base class for public keys. + + Also includes some "meta" level convenience constructors such as + `.from_type_string`. + """ + + # known encryption types for private key files: + _CIPHER_TABLE = { + "AES-128-CBC": { + "cipher": algorithms.AES, + "keysize": 16, + "blocksize": 16, + "mode": modes.CBC, + }, + "AES-256-CBC": { + "cipher": algorithms.AES, + "keysize": 32, + "blocksize": 16, + "mode": modes.CBC, + }, + "DES-EDE3-CBC": { + "cipher": TripleDES, + "keysize": 24, + "blocksize": 8, + "mode": modes.CBC, + }, + } + _PRIVATE_KEY_FORMAT_ORIGINAL = 1 + _PRIVATE_KEY_FORMAT_OPENSSH = 2 + BEGIN_TAG = re.compile(r"^-{5}BEGIN (RSA|EC|OPENSSH) PRIVATE KEY-{5}\s*$") + END_TAG = re.compile(r"^-{5}END (RSA|EC|OPENSSH) PRIVATE KEY-{5}\s*$") + + @staticmethod + def from_path(path, password: Optional[str] = None): + """ + Attempt to instantiate appropriate key subclass from given file path. + + :param pathlib.Path path: The path to load (may also be a `str`). + :param str password: Optional decryption password. + + :returns: + A `PKey` subclass instance. + + :raises: + `UnknownKeyType`, if our crypto backend doesn't know this key type. + + .. versionadded:: 3.2 + .. versionchanged:: 5.0 + Renamed ``passphrase`` argument to ``password`` for consistency + with older methods. + """ + + # Lazy import to avoid circular import issues + from paramiko import ECDSAKey, Ed25519Key, RSAKey + + # Normalize to string, as cert suffix isn't quite an extension, so + # pathlib isn't useful for this. + path = str(path) + + # Sort out cert vs key, i.e. it is 'legal' to hand this kind of API + # /either/ the key /or/ the cert, when there is a key/cert pair. + cert_suffix = "-cert.pub" + if str(path).endswith(cert_suffix): + key_path = path[: -len(cert_suffix)] + cert_path = path + else: + key_path = path + cert_path = path + cert_suffix + + key_path = Path(key_path).expanduser() + cert_path = Path(cert_path).expanduser() + + data = key_path.read_bytes() + # Like OpenSSH, try modern/OpenSSH-specific key load first + try: + loaded = serialization.load_ssh_private_key( + data=data, password=password + ) + # Then fall back to assuming legacy PEM type + except ValueError: + loaded = serialization.load_pem_private_key( + data=data, password=password + ) + # TODO Python 3.10: match statement? (NOTE: we cannot use a dict + # because the results from the loader are literal backend, eg openssl, + # private classes, so isinstance tests work but exact 'x class is y' + # tests will not work) + # TODO: leverage already-parsed/math'd obj to avoid duplicate cpu + # cycles? seemingly requires most of our key subclasses to be rewritten + # to be cryptography-object-forward. this is still likely faster than + # the old SSHClient code that just tried instantiating every class! + key_class = None + if isinstance(loaded, asymmetric.rsa.RSAPrivateKey): + key_class = RSAKey + elif isinstance(loaded, asymmetric.ed25519.Ed25519PrivateKey): + key_class = Ed25519Key + elif isinstance(loaded, asymmetric.ec.EllipticCurvePrivateKey): + key_class = ECDSAKey + else: + raise UnknownKeyType(key_bytes=data, key_type=loaded.__class__) + with key_path.open() as fd: + key = key_class.from_private_key(fd, password=password) + if cert_path.exists(): + # load_certificate can take Message, path-str, or value-str + key.load_certificate(str(cert_path)) + return key + + @staticmethod + def from_type_string( + key_type: str, key_bytes: bytes, password: Optional[str] = None + ): + """ + Given type `str` & raw `bytes`, return a `PKey` subclass instance. + + For example, ``PKey.from_type_string("ssh-ed25519", )`` + will (if successful) return a new `.Ed25519Key`. + + :param str key_type: + The key type, eg ``"ssh-ed25519"``. + :param bytes key_bytes: + The raw byte data forming the key material, as expected by + subclasses' ``data`` parameter. + :param str password: + Optional password used to decrypt ``key_bytes``. + + :returns: + A `PKey` subclass instance. + + :raises: + `UnknownKeyType`, if no registered classes knew about this type. + + .. versionadded:: 3.2 + .. versionchanged:: 5.0 + Added the ``password`` kwarg. + """ + from paramiko import key_classes + + for key_class in key_classes: + if key_type in key_class.identifiers(): + return key_class(data=key_bytes, password=password) + raise UnknownKeyType(key_type=key_type, key_bytes=key_bytes) + + @classmethod + def identifiers(cls): + """ + returns an iterable of key format/name strings this class can handle. + + Most classes only have a single identifier, and thus this default + implementation suffices; see `.ECDSAKey` for one example of an + override. + """ + return [cls.name] + + # TODO (backwards incompat): make this and subclasses consistent, some of + # our own classmethods even assume kwargs we don't define! + # TODO (backwards incompat): prob also raise NotImplementedError instead of + # pass'ing; the contract is pretty obviously that you need to handle + # msg/data/filename appropriately. (If 'pass' is a concession to testing, + # see about doing the work to fix the tests instead) + def __init__(self, msg=None, data=None): + """ + Create a new instance of this public key type. If ``msg`` is given, + the key's public part(s) will be filled in from the message. If + ``data`` is given, the key's public part(s) will be filled in from + the string. + + :param .Message msg: + an optional SSH `.Message` containing a public key of this type. + :param bytes data: + optional, the bytes of a public key of this type + + :raises: `.SSHException` -- + if a key cannot be created from the ``data`` or ``msg`` given, or + no key was passed in. + """ + pass + + # TODO: arguably this might want to be __str__ instead? ehh + # TODO: ditto the interplay between showing class name (currently we just + # say PKey writ large) and algorithm (usually == class name, but not + # always, also sometimes shows certificate-ness) + # TODO: if we do change it, we also want to tweak eg AgentKey, as it + # currently displays agent-ness with a suffix + def __repr__(self): + comment = "" + # Works for AgentKey, may work for others? + if hasattr(self, "comment") and self.comment: + comment = f", comment={self.comment!r}" + return f"PKey(alg={self.algorithm_name}, bits={self.get_bits()}, fp={self.fingerprint}{comment})" # noqa + + # TODO (backwards incompat): just merge into __bytes__ (everywhere) + def asbytes(self): + """ + Return a string of an SSH `.Message` made up of the public part(s) of + this key. This string is suitable for passing to `__init__` to + re-create the key object later. + """ + return bytes() + + def __bytes__(self): + return self.asbytes() + + def __eq__(self, other): + return isinstance(other, PKey) and self._fields == other._fields + + def __hash__(self): + return hash(self._fields) + + @property + def _fields(self): + raise NotImplementedError + + def get_name(self): + """ + Return the name of this private key implementation. + + :return: + name of this private key type, in SSH terminology, as a `str` (for + example, ``"ssh-rsa"``). + """ + return "" + + @property + def algorithm_name(self): + """ + Return the key algorithm identifier for this key. + + Similar to `get_name`, but aimed at pure algorithm name instead of SSH + protocol field value. + """ + # Nuke the leading 'ssh-' + # TODO in Python 3.9: use .removeprefix() + name = self.get_name().replace("ssh-", "") + # Trim any cert suffix (but leave the -cert, as OpenSSH does) + cert_tail = "-cert-v01@openssh.com" + if cert_tail in name: + name = name.replace(cert_tail, "-cert") + # Nuke any eg ECDSA suffix, OpenSSH does basically this too. + else: + name = name.split("-")[0] + return name.upper() + + def get_bits(self): + """ + Return the number of significant bits in this key. This is useful + for judging the relative security of a key. + + :return: bits in the key (as an `int`) + """ + # TODO (backwards incompat): raise NotImplementedError, 0 is unlikely + # to ever be _correct_ and nothing in the critical path seems to use + # this. + return 0 + + def can_sign(self): + """ + Return ``True`` if this key has the private part necessary for signing + data. + """ + return False + + def get_fingerprint(self): + """ + Return an MD5 fingerprint of the public part of this key. Nothing + secret is revealed. + + :return: + a 16-byte `string ` (binary) of the MD5 fingerprint, in SSH + format. + """ + return md5(self.asbytes()).digest() + + @property + def fingerprint(self): + """ + Modern fingerprint property designed to be comparable to OpenSSH. + + Currently only does SHA256 (the OpenSSH default). + + .. versionadded:: 3.2 + """ + hashy = sha256(bytes(self)) + hash_name = hashy.name.upper() + b64ed = encodebytes(hashy.digest()) + cleaned = u(b64ed).strip().rstrip("=") # yes, OpenSSH does this too! + return f"{hash_name}:{cleaned}" + + def get_base64(self): + """ + Return a base64 string containing the public part of this key. Nothing + secret is revealed. This format is compatible with that used to store + public key files or recognized host keys. + + :return: a base64 `string ` containing the public part of the key. + """ + return u(encodebytes(self.asbytes())).replace("\n", "") + + def sign_ssh_data(self, data, algorithm=None): + """ + Sign a blob of data with this private key, and return a `.Message` + representing an SSH signature message. + + :param bytes data: + the data to sign. + :param str algorithm: + the signature algorithm to use, if different from the key's + internal name. Default: ``None``. + :return: an SSH signature `message <.Message>`. + + .. versionchanged:: 2.9 + Added the ``algorithm`` kwarg. + """ + return bytes() + + def verify_ssh_sig(self, data, msg): + """ + Given a blob of data, and an SSH message representing a signature of + that data, verify that it was signed with this key. + + :param bytes data: the data that was signed. + :param .Message msg: an SSH signature message + :return: + ``True`` if the signature verifies correctly; ``False`` otherwise. + """ + return False + + @classmethod + def from_private_key_file(cls, filename, password=None): + """ + Create a key object by reading a private key file. If the private + key is encrypted and ``password`` is not ``None``, the given password + will be used to decrypt the key (otherwise `.PasswordRequiredException` + is thrown). Through the magic of Python, this factory method will + exist in all subclasses of PKey (such as `.RSAKey`), but + is useless on the abstract PKey class. + + :param str filename: name of the file to read + :param str password: + an optional password to use to decrypt the key file, if it's + encrypted + :return: a new `.PKey` based on the given private key + + :raises: ``IOError`` -- if there was an error reading the file + :raises: `.PasswordRequiredException` -- if the private key file is + encrypted, and ``password`` is ``None`` + :raises: `.SSHException` -- if the key file is invalid + """ + key = cls(filename=filename, password=password) + return key + + @classmethod + def from_private_key(cls, file_obj, password=None): + """ + Create a key object by reading a private key from a file (or file-like) + object. If the private key is encrypted and ``password`` is not + ``None``, the given password will be used to decrypt the key (otherwise + `.PasswordRequiredException` is thrown). + + :param file_obj: the file-like object to read from + :param str password: + an optional password to use to decrypt the key, if it's encrypted + :return: a new `.PKey` based on the given private key + + :raises: ``IOError`` -- if there was an error reading the key + :raises: `.PasswordRequiredException` -- + if the private key file is encrypted, and ``password`` is ``None`` + :raises: `.SSHException` -- if the key file is invalid + """ + key = cls(file_obj=file_obj, password=password) + return key + + def write_private_key_file( + self, + filename: str, + password: Optional[str] = None, + file_format: FileFormat = PEM, + ): + """ + Write private key contents into a file. If the password is not + ``None``, the key is encrypted before writing. + + :param str filename: name of the file to write + :param str password: + an optional password to use to encrypt the key file + :param FileFormat file_format: + what format+encoding pair to use; defaults to the original + behavior, namely PEM. + + :raises: ``IOError`` -- if there was an error writing the file + :raises: `.SSHException` -- if the key is invalid + """ + self._write_private_key_file( + filename, + self.private_key, + file_format=file_format, + password=password, + ) + + def write_private_key( + self, + file_obj: RawIOBase, + password: Optional[str] = None, + file_format: FileFormat = PEM, + ): + """ + Write private key contents into a file (or file-like) object. If the + password is not ``None``, the key is encrypted before writing. + + :param file_obj: the file-like object to write into + :param str password: an optional password to use to encrypt the key + :param FileFormat file_format: + what format+encoding pair to use; defaults to the original + behavior, namely PEM. + + :raises: ``IOError`` -- if there was an error writing to the file + :raises: `.SSHException` -- if the key is invalid + """ + self._write_private_key( + file_obj, + self.private_key, + file_format=file_format, + password=password, + ) + + def _read_private_key_file(self, tag, filename, password=None): + """ + Read an SSH2-format private key file, looking for a string of the type + ``"BEGIN xxx PRIVATE KEY"`` for some ``xxx``, base64-decode the text we + find, and return it as a string. If the private key is encrypted and + ``password`` is not ``None``, the given password will be used to + decrypt the key (otherwise `.PasswordRequiredException` is thrown). + + :param str tag: + ``"RSA"`` (or etc), the tag used to mark the data block. + :param str filename: + name of the file to read. + :param str password: + an optional password to use to decrypt the key file, if it's + encrypted. + :return: + the `bytes` that make up the private key. + + :raises: ``IOError`` -- if there was an error reading the file. + :raises: `.PasswordRequiredException` -- if the private key file is + encrypted, and ``password`` is ``None``. + :raises: `.SSHException` -- if the key file is invalid. + """ + with open(filename, "r") as f: + data = self._read_private_key(tag, f, password) + return data + + def _read_private_key(self, tag, f, password=None): + lines = f.readlines() + if not lines: + raise SSHException("no lines in {} private key file".format(tag)) + + # find the BEGIN tag + start = 0 + m = self.BEGIN_TAG.match(lines[start]) + line_range = len(lines) - 1 + while start < line_range and not m: + start += 1 + m = self.BEGIN_TAG.match(lines[start]) + start += 1 + keytype = m.group(1) if m else None + if start >= len(lines) or keytype is None: + raise SSHException("not a valid {} private key file".format(tag)) + + # find the END tag + end = start + m = self.END_TAG.match(lines[end]) + while end < line_range and not m: + end += 1 + m = self.END_TAG.match(lines[end]) + + if keytype == tag: + data = self._read_private_key_pem(lines, end, password) + pkformat = self._PRIVATE_KEY_FORMAT_ORIGINAL + elif keytype == "OPENSSH": + data = self._read_private_key_openssh(lines[start:end], password) + pkformat = self._PRIVATE_KEY_FORMAT_OPENSSH + else: + raise SSHException( + "encountered {} key, expected {} key".format(keytype, tag) + ) + + return pkformat, data + + def _got_bad_key_format_id(self, id_): + err = "{}._read_private_key() spat out an unknown key format id '{}'" + raise SSHException(err.format(self.__class__.__name__, id_)) + + def _read_private_key_pem(self, lines, end, password): + start = 0 + # parse any headers first + headers = {} + start += 1 + while start < len(lines): + line = lines[start].split(": ") + if len(line) == 1: + break + headers[line[0].lower()] = line[1].strip() + start += 1 + # if we trudged to the end of the file, just try to cope. + try: + data = decodebytes(b("".join(lines[start:end]))) + except base64.binascii.Error as e: + raise SSHException("base64 decoding error: {}".format(e)) + if "proc-type" not in headers: + # unencryped: done + return data + # encrypted keyfile: will need a password + proc_type = headers["proc-type"] + if proc_type != "4,ENCRYPTED": + raise SSHException( + 'Unknown private key structure "{}"'.format(proc_type) + ) + try: + encryption_type, saltstr = headers["dek-info"].split(",") + except: + raise SSHException("Can't parse DEK-info in private key file") + if encryption_type not in self._CIPHER_TABLE: + raise SSHException( + 'Unknown private key cipher "{}"'.format(encryption_type) + ) + # if no password was passed in, + # raise an exception pointing out that we need one + if password is None: + raise PasswordRequiredException("Private key file is encrypted") + cipher = self._CIPHER_TABLE[encryption_type]["cipher"] + keysize = self._CIPHER_TABLE[encryption_type]["keysize"] + mode = self._CIPHER_TABLE[encryption_type]["mode"] + salt = unhexlify(b(saltstr)) + key = util.generate_key_bytes(md5, salt, password, keysize) + decryptor = Cipher( + cipher(key), mode(salt), backend=default_backend() + ).decryptor() + decrypted_data = decryptor.update(data) + decryptor.finalize() + unpadder = padding.PKCS7(cipher.block_size).unpadder() + try: + return unpadder.update(decrypted_data) + unpadder.finalize() + except ValueError: + raise SSHException("Bad password or corrupt private key file") + + def _read_private_key_openssh(self, lines, password): + """ + Read the new OpenSSH SSH2 private key format available + since OpenSSH version 6.5 + Reference: + https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key + """ + try: + data = decodebytes(b("".join(lines))) + except base64.binascii.Error as e: + raise SSHException("base64 decoding error: {}".format(e)) + + # read data struct + auth_magic = data[:15] + if auth_magic != OPENSSH_AUTH_MAGIC: + raise SSHException("unexpected OpenSSH key header encountered") + + cstruct = self._uint32_cstruct_unpack(data[15:], "sssur") + cipher, kdfname, kdf_options, num_pubkeys, remainder = cstruct + # For now, just support 1 key. + if num_pubkeys > 1: + raise SSHException( + "unsupported: private keyfile has multiple keys" + ) + pubkey, privkey_blob = self._uint32_cstruct_unpack(remainder, "ss") + + if kdfname == b("bcrypt"): + if cipher == b("aes256-cbc"): + mode = modes.CBC + elif cipher == b("aes256-ctr"): + mode = modes.CTR + else: + raise SSHException( + "unknown cipher `{}` used in private key file".format( + cipher.decode("utf-8") + ) + ) + # Encrypted private key. + # If no password was passed in, raise an exception pointing + # out that we need one + if password is None: + raise PasswordRequiredException( + "private key file is encrypted" + ) + + # Unpack salt and rounds from kdfoptions + salt, rounds = self._uint32_cstruct_unpack(kdf_options, "su") + + # run bcrypt kdf to derive key and iv/nonce (32 + 16 bytes) + key_iv = bcrypt.kdf( + b(password), + b(salt), + 48, + rounds, + # We can't control how many rounds are on disk, so no sense + # warning about it. + ignore_few_rounds=True, + ) + key = key_iv[:32] + iv = key_iv[32:] + + # decrypt private key blob + decryptor = Cipher( + algorithms.AES(key), mode(iv), default_backend() + ).decryptor() + decrypted_privkey = decryptor.update(privkey_blob) + decrypted_privkey += decryptor.finalize() + elif cipher == b("none") and kdfname == b("none"): + # Unencrypted private key + decrypted_privkey = privkey_blob + else: + raise SSHException( + "unknown cipher or kdf used in private key file" + ) + + # Unpack private key and verify checkints + cstruct = self._uint32_cstruct_unpack(decrypted_privkey, "uusr") + checkint1, checkint2, keytype, keydata = cstruct + + if checkint1 != checkint2: + raise SSHException( + "OpenSSH private key file checkints do not match" + ) + + return _unpad_openssh(keydata) + + def _uint32_cstruct_unpack(self, data, strformat): + """ + Used to read new OpenSSH private key format. + Unpacks a c data structure containing a mix of 32-bit uints and + variable length strings prefixed by 32-bit uint size field, + according to the specified format. Returns the unpacked vars + in a tuple. + Format strings: + s - denotes a string + i - denotes a long integer, encoded as a byte string + u - denotes a 32-bit unsigned integer + r - the remainder of the input string, returned as a string + """ + arr = [] + idx = 0 + try: + for f in strformat: + if f == "s": + # string + s_size = struct.unpack(">L", data[idx : idx + 4])[0] + idx += 4 + s = data[idx : idx + s_size] + idx += s_size + arr.append(s) + if f == "i": + # long integer + s_size = struct.unpack(">L", data[idx : idx + 4])[0] + idx += 4 + s = data[idx : idx + s_size] + idx += s_size + i = util.inflate_long(s, True) + arr.append(i) + elif f == "u": + # 32-bit unsigned int + u = struct.unpack(">L", data[idx : idx + 4])[0] + idx += 4 + arr.append(u) + elif f == "r": + # remainder as string + s = data[idx:] + arr.append(s) + break + except Exception as e: + # PKey-consuming code frequently wants to save-and-skip-over issues + # with loading keys, and uses SSHException as the (really friggin + # awful) signal for this. So for now...we do this. + raise SSHException(str(e)) + return tuple(arr) + + def _write_private_key_file( + self, + filename: str, + key: PrivateKey, + file_format: FileFormat, + password: Optional[str] = None, + ): + # Ensure that we create new key files directly with a user-only mode, + # instead of opening, writing, then chmodding, which leaves us open to + # CVE-2022-24302. + with os.fdopen( + os.open( + filename, + # NOTE: O_TRUNC is a noop on new files, and O_CREAT is a noop + # on existing files, so using all 3 in both cases is fine. + flags=os.O_WRONLY | os.O_TRUNC | os.O_CREAT, + # Ditto the use of the 'mode' argument; it should be safe to + # give even for existing files (though it will not act like a + # chmod in that case). + mode=o600, + ), + # Yea, you still gotta inform the FLO that it is in "write" mode. + "w", + ) as f: + self._write_private_key(f, key, file_format, password=password) + + def _write_private_key( + self, + f: RawIOBase, + key: PrivateKey, + file_format: FileFormat, + password: Optional[str] = None, + ): + if password is None: + encryption = serialization.NoEncryption() + else: + encryption = serialization.BestAvailableEncryption(b(password)) + + f.write( + key.private_bytes( + file_format.encoding, file_format.format, encryption + ).decode() + ) + + def _check_type_and_load_cert(self, msg, key_type, cert_type): + """ + Perform message type-checking & optional certificate loading. + + This includes fast-forwarding cert ``msg`` objects past the nonce, so + that the subsequent fields are the key numbers; thus the caller may + expect to treat the message as key material afterwards either way. + + The obtained key type is returned for classes which need to know what + it was (e.g. ECDSA.) + """ + # Normalization; most classes have a single key type and give a string, + # but eg ECDSA is a 1:N mapping. + key_types = key_type + cert_types = cert_type + if isinstance(key_type, str): + key_types = [key_types] + if isinstance(cert_types, str): + cert_types = [cert_types] + # Can't do much with no message, that should've been handled elsewhere + if msg is None: + raise SSHException("Key object may not be empty") + # First field is always key type, in either kind of object. (make sure + # we rewind before grabbing it - sometimes caller had to do their own + # introspection first!) + msg.rewind() + type_ = msg.get_text() + # Regular public key - nothing special to do besides the implicit + # type check. + if type_ in key_types: + pass + # OpenSSH-compatible certificate - store full copy as .public_blob + # (so signing works correctly) and then fast-forward past the + # nonce. + elif type_ in cert_types: + # This seems the cleanest way to 'clone' an already-being-read + # message; they're *IO objects at heart and their .getvalue() + # always returns the full value regardless of pointer position. + self.load_certificate(Message(msg.asbytes())) + # Read out nonce as it comes before the public numbers - our caller + # is likely going to use the (only borrowed by us, not owned) + # 'msg' object for loading those numbers right after this. + # TODO: usefully interpret it & other non-public-number fields + # (requires going back into per-type subclasses.) + msg.get_string() + else: + err = "Invalid key (class: {}, data type: {}" + raise SSHException(err.format(self.__class__.__name__, type_)) + + def load_certificate(self, value): + """ + Supplement the private key contents with data loaded from an OpenSSH + public key (``.pub``) or certificate (``-cert.pub``) file, a string + containing such a file, or a `.Message` object. + + The .pub contents adds no real value, since the private key + file includes sufficient information to derive the public + key info. For certificates, however, this can be used on + the client side to offer authentication requests to the server + based on certificate instead of raw public key. + + See: + https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.certkeys + + Note: very little effort is made to validate the certificate contents, + that is for the server to decide if it is good enough to authenticate + successfully. + """ + if isinstance(value, Message): + constructor = "from_message" + elif os.path.isfile(value): + constructor = "from_file" + else: + constructor = "from_string" + blob = getattr(PublicBlob, constructor)(value) + if not blob.key_type.startswith(self.get_name()): + err = "PublicBlob type {} incompatible with key type {}" + raise ValueError(err.format(blob.key_type, self.get_name())) + self.public_blob = blob + + +# General construct for an OpenSSH style Public Key blob +# readable from a one-line file of the format: +# [] +# Of little value in the case of standard public keys +# {ssh-rsa, ssh-ecdsa, ssh-ed25519}, but should +# provide rudimentary support for {*-cert.v01} +class PublicBlob: + """ + OpenSSH plain public key or OpenSSH signed public key (certificate). + + Tries to be as dumb as possible and barely cares about specific + per-key-type data. + + .. note:: + + Most of the time you'll want to call `from_file`, `from_string` or + `from_message` for useful instantiation, the main constructor is + basically "I should be using ``attrs`` for this." + """ + + def __init__(self, type_, blob, comment=None): + """ + Create a new public blob of given type and contents. + + :param str type_: Type indicator, eg ``ssh-rsa``. + :param bytes blob: The blob bytes themselves. + :param str comment: A comment, if one was given (e.g. file-based.) + """ + self.key_type = type_ + self.key_blob = blob + self.comment = comment + + @classmethod + def from_file(cls, filename): + """ + Create a public blob from a ``-cert.pub``-style file on disk. + """ + with open(filename) as f: + string = f.read() + return cls.from_string(string) + + @classmethod + def from_string(cls, string): + """ + Create a public blob from a ``-cert.pub``-style string. + """ + fields = string.split(None, 2) + if len(fields) < 2: + msg = "Not enough fields for public blob: {}" + raise ValueError(msg.format(fields)) + key_type = fields[0] + key_blob = decodebytes(b(fields[1])) + try: + comment = fields[2].strip() + except IndexError: + comment = None + # Verify that the blob message first (string) field matches the + # key_type + m = Message(key_blob) + blob_type = m.get_text() + if blob_type != key_type: + deets = "key type={!r}, but blob type={!r}".format( + key_type, blob_type + ) + raise ValueError("Invalid PublicBlob contents: {}".format(deets)) + # All good? All good. + return cls(type_=key_type, blob=key_blob, comment=comment) + + @classmethod + def from_message(cls, message): + """ + Create a public blob from a network `.Message`. + + Specifically, a cert-bearing pubkey auth packet, because by definition + OpenSSH-style certificates 'are' their own network representation." + """ + type_ = message.get_text() + return cls(type_=type_, blob=message.asbytes()) + + def __str__(self): + ret = "{} public key/certificate".format(self.key_type) + if self.comment: + ret += "- {}".format(self.comment) + return ret + + def __eq__(self, other): + # Just piggyback on Message/BytesIO, since both of these should be one. + return self and other and self.key_blob == other.key_blob + + def __ne__(self, other): + return not self == other diff --git a/.venv/lib/python3.9/site-packages/paramiko/primes.py b/.venv/lib/python3.9/site-packages/paramiko/primes.py new file mode 100644 index 0000000..663c58e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/primes.py @@ -0,0 +1,148 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Utility functions for dealing with primes. +""" + +import os + +from paramiko import util +from paramiko.common import byte_mask +from paramiko.ssh_exception import SSHException + + +def _roll_random(n): + """returns a random # from 0 to N-1""" + bits = util.bit_length(n - 1) + byte_count = (bits + 7) // 8 + hbyte_mask = pow(2, bits % 8) - 1 + + # so here's the plan: + # we fetch as many random bits as we'd need to fit N-1, and if the + # generated number is >= N, we try again. in the worst case (N-1 is a + # power of 2), we have slightly better than 50% odds of getting one that + # fits, so i can't guarantee that this loop will ever finish, but the odds + # of it looping forever should be infinitesimal. + while True: + x = os.urandom(byte_count) + if hbyte_mask > 0: + x = byte_mask(x[0], hbyte_mask) + x[1:] + num = util.inflate_long(x, 1) + if num < n: + break + return num + + +class ModulusPack: + """ + convenience object for holding the contents of the /etc/ssh/moduli file, + on systems that have such a file. + """ + + def __init__(self): + # pack is a hash of: bits -> [ (generator, modulus) ... ] + self.pack = {} + self.discarded = [] + + def _parse_modulus(self, line): + ( + timestamp, + mod_type, + tests, + tries, + size, + generator, + modulus, + ) = line.split() + mod_type = int(mod_type) + tests = int(tests) + tries = int(tries) + size = int(size) + generator = int(generator) + modulus = int(modulus, 16) + + # weed out primes that aren't at least: + # type 2 (meets basic structural requirements) + # test 4 (more than just a small-prime sieve) + # tries < 100 if test & 4 (at least 100 tries of miller-rabin) + if ( + mod_type < 2 + or tests < 4 + or (tests & 4 and tests < 8 and tries < 100) + ): + self.discarded.append( + (modulus, "does not meet basic requirements") + ) + return + if generator == 0: + generator = 2 + + # there's a bug in the ssh "moduli" file (yeah, i know: shock! dismay! + # call cnn!) where it understates the bit lengths of these primes by 1. + # this is okay. + bl = util.bit_length(modulus) + if (bl != size) and (bl != size + 1): + self.discarded.append( + (modulus, "incorrectly reported bit length {}".format(size)) + ) + return + if bl not in self.pack: + self.pack[bl] = [] + self.pack[bl].append((generator, modulus)) + + def read_file(self, filename): + """ + :raises IOError: passed from any file operations that fail. + """ + self.pack = {} + with open(filename, "r") as f: + for line in f: + line = line.strip() + if (len(line) == 0) or (line[0] == "#"): + continue + try: + self._parse_modulus(line) + except: + continue + + def get_modulus(self, min, prefer, max): + bitsizes = sorted(self.pack.keys()) + if len(bitsizes) == 0: + raise SSHException("no moduli available") + good = -1 + # find nearest bitsize >= preferred + for b in bitsizes: + if (b >= prefer) and (b <= max) and (b < good or good == -1): + good = b + # if that failed, find greatest bitsize >= min + if good == -1: + for b in bitsizes: + if (b >= min) and (b <= max) and (b > good): + good = b + if good == -1: + # their entire (min, max) range has no intersection with our range. + # if their range is below ours, pick the smallest. otherwise pick + # the largest. it'll be out of their range requirement either way, + # but we'll be sending them the closest one we have. + good = bitsizes[0] + if min > good: + good = bitsizes[-1] + # now pick a random modulus of this bitsize + n = _roll_random(len(self.pack[good])) + return self.pack[good][n] diff --git a/.venv/lib/python3.9/site-packages/paramiko/proxy.py b/.venv/lib/python3.9/site-packages/paramiko/proxy.py new file mode 100644 index 0000000..f7609c9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/proxy.py @@ -0,0 +1,134 @@ +# Copyright (C) 2012 Yipit, Inc +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +import os +import shlex +import signal +from select import select +import socket +import time + +# Try-and-ignore import so platforms w/o subprocess (eg Google App Engine) can +# still import paramiko. +subprocess, subprocess_import_error = None, None +try: + import subprocess +except ImportError as e: + subprocess_import_error = e + +from paramiko.ssh_exception import ProxyCommandFailure +from paramiko.util import ClosingContextManager + + +class ProxyCommand(ClosingContextManager): + """ + Wraps a subprocess running ProxyCommand-driven programs. + + This class implements a the socket-like interface needed by the + `.Transport` and `.Packetizer` classes. Using this class instead of a + regular socket makes it possible to talk with a Popen'd command that will + proxy traffic between the client and a server hosted in another machine. + + Instances of this class may be used as context managers. + """ + + def __init__(self, command_line): + """ + Create a new CommandProxy instance. The instance created by this + class can be passed as an argument to the `.Transport` class. + + :param str command_line: + the command that should be executed and used as the proxy. + """ + if subprocess is None: + raise subprocess_import_error + self.cmd = shlex.split(command_line) + self.process = subprocess.Popen( + self.cmd, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + bufsize=0, + ) + self.timeout = None + + def send(self, content): + """ + Write the content received from the SSH client to the standard + input of the forked command. + + :param str content: string to be sent to the forked command + """ + try: + self.process.stdin.write(content) + except IOError as e: + # There was a problem with the child process. It probably + # died and we can't proceed. The best option here is to + # raise an exception informing the user that the informed + # ProxyCommand is not working. + raise ProxyCommandFailure(" ".join(self.cmd), e.strerror) + return len(content) + + def recv(self, size): + """ + Read from the standard output of the forked program. + + :param int size: how many chars should be read + + :return: the string of bytes read, which may be shorter than requested + """ + try: + buffer = b"" + start = time.time() + while len(buffer) < size: + select_timeout = None + if self.timeout is not None: + elapsed = time.time() - start + if elapsed >= self.timeout: + raise socket.timeout() + select_timeout = self.timeout - elapsed + + r, w, x = select([self.process.stdout], [], [], select_timeout) + if r and r[0] == self.process.stdout: + buffer += os.read( + self.process.stdout.fileno(), size - len(buffer) + ) + return buffer + except socket.timeout: + if buffer: + # Don't raise socket.timeout, return partial result instead + return buffer + raise # socket.timeout is a subclass of IOError + except IOError as e: + raise ProxyCommandFailure(" ".join(self.cmd), e.strerror) + + def close(self): + os.kill(self.process.pid, signal.SIGTERM) + + @property + def closed(self): + return self.process.returncode is not None + + @property + def _closed(self): + # Concession to Python 3 socket-like API + return self.closed + + def settimeout(self, timeout): + self.timeout = timeout diff --git a/.venv/lib/python3.9/site-packages/paramiko/rsakey.py b/.venv/lib/python3.9/site-packages/paramiko/rsakey.py new file mode 100644 index 0000000..bcef762 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/rsakey.py @@ -0,0 +1,223 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +RSA keys. +""" + +from typing import Optional + +from cryptography.exceptions import InvalidSignature, UnsupportedAlgorithm +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric import padding, rsa + +from paramiko.message import Message +from paramiko.pkey import PKey +from paramiko.ssh_exception import SSHException + + +class RSAKey(PKey): + """ + Representation of an RSA key which can be used to sign and verify SSH2 + data. + """ + + name = "ssh-rsa" + HASHES = { + "rsa-sha2-256": hashes.SHA256, + "rsa-sha2-256-cert-v01@openssh.com": hashes.SHA256, + "rsa-sha2-512": hashes.SHA512, + "rsa-sha2-512-cert-v01@openssh.com": hashes.SHA512, + } + + def __init__( + self, + msg=None, + data=None, + filename=None, + password=None, + key=None, + file_obj=None, + ): + self.key = None + self.public_blob = None + if file_obj is not None: + self._from_private_key(file_obj, password) + return + if filename is not None: + self._from_private_key_file(filename, password) + return + if (msg is None) and (data is not None): + msg = Message(data) + if key is not None: + self.key = key + else: + self._check_type_and_load_cert( + msg=msg, + # NOTE: this does NOT change when using rsa2 signatures; it's + # purely about key loading, not exchange or verification + key_type=self.name, + cert_type="ssh-rsa-cert-v01@openssh.com", + ) + self.key = rsa.RSAPublicNumbers( + e=msg.get_mpint(), n=msg.get_mpint() + ).public_key(default_backend()) + + @classmethod + def identifiers(cls): + # NOTE: we no longer want to have ssh-rsa+SHA1 in HASHES but we still + # need to advertise we can be used to read ssh-rsa keys (w/ assumption + # other parts of system will enforce the use of SHA2 signing algos). + # Thus, just say so here. + return list(cls.HASHES.keys()) + [ + "ssh-rsa", + "ssh-rsa-cert-v01@openssh.com", + ] + + @property + def size(self): + return self.key.key_size + + @property + def private_key(self) -> Optional[rsa.RSAPrivateKey]: + return self.key if isinstance(self.key, rsa.RSAPrivateKey) else None + + @property + def public_numbers(self): + if isinstance(self.key, rsa.RSAPrivateKey): + return self.key.private_numbers().public_numbers + else: + return self.key.public_numbers() + + def asbytes(self): + m = Message() + m.add_string(self.name) + m.add_mpint(self.public_numbers.e) + m.add_mpint(self.public_numbers.n) + return m.asbytes() + + def __str__(self): + # NOTE: see #853 to explain some legacy behavior. + # TODO (backwards incompat): replace with a nice clean fingerprint + # display or something + return self.asbytes().decode("utf8", errors="ignore") + + @property + def _fields(self): + return (self.get_name(), self.public_numbers.e, self.public_numbers.n) + + def get_name(self): + return self.name + + def get_bits(self): + return self.size + + def can_sign(self): + return isinstance(self.key, rsa.RSAPrivateKey) + + def sign_ssh_data(self, data, algorithm=None): + if algorithm is None: + algorithm = self.name + sig = self.key.sign( + data, + padding=padding.PKCS1v15(), + # HASHES being just a map from long identifier to algo; cert'ness + # is not truly relevant. + algorithm=self.HASHES[algorithm](), + ) + m = Message() + # And here again, cert'ness is irrelevant, so it is stripped out. + m.add_string(algorithm.replace("-cert-v01@openssh.com", "")) + m.add_string(sig) + return m + + def verify_ssh_sig(self, data, msg): + sig_algorithm = msg.get_text() + if sig_algorithm not in self.HASHES: + return False + key = self.key + if isinstance(key, rsa.RSAPrivateKey): + key = key.public_key() + + # NOTE: pad received signature with leading zeros, key.verify() + # expects a signature of key size (e.g. PuTTY doesn't pad) + sign = msg.get_binary() + diff = key.key_size - len(sign) * 8 + if diff > 0: + sign = b"\x00" * ((diff + 7) // 8) + sign + + try: + key.verify( + sign, data, padding.PKCS1v15(), self.HASHES[sig_algorithm]() + ) + except InvalidSignature: + return False + else: + return True + + @staticmethod + def generate(bits, progress_func=None): + """ + Generate a new private RSA key. This factory function can be used to + generate a new host key or authentication key. + + :param int bits: number of bits the generated key should be. + :param progress_func: Unused + :return: new `.RSAKey` private key + """ + key = rsa.generate_private_key( + public_exponent=65537, key_size=bits, backend=default_backend() + ) + return RSAKey(key=key) + + # ...internals... + + def _from_private_key_file(self, filename, password): + data = self._read_private_key_file("RSA", filename, password) + self._decode_key(data) + + def _from_private_key(self, file_obj, password): + data = self._read_private_key("RSA", file_obj, password) + self._decode_key(data) + + def _decode_key(self, data): + pkformat, data = data + if pkformat == self._PRIVATE_KEY_FORMAT_ORIGINAL: + try: + key = serialization.load_der_private_key( + data, password=None, backend=default_backend() + ) + except (ValueError, TypeError, UnsupportedAlgorithm) as e: + raise SSHException(str(e)) + elif pkformat == self._PRIVATE_KEY_FORMAT_OPENSSH: + n, e, d, iqmp, p, q = self._uint32_cstruct_unpack(data, "iiiiii") + public_numbers = rsa.RSAPublicNumbers(e=e, n=n) + key = rsa.RSAPrivateNumbers( + p=p, + q=q, + d=d, + dmp1=d % (p - 1), + dmq1=d % (q - 1), + iqmp=iqmp, + public_numbers=public_numbers, + ).private_key(default_backend()) + else: + self._got_bad_key_format_id(pkformat) + assert isinstance(key, rsa.RSAPrivateKey) + self.key = key diff --git a/.venv/lib/python3.9/site-packages/paramiko/server.py b/.venv/lib/python3.9/site-packages/paramiko/server.py new file mode 100644 index 0000000..e4a888b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/server.py @@ -0,0 +1,658 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +`.ServerInterface` is an interface to override for server support. +""" + +import threading + +from paramiko import util +from paramiko.common import ( + AUTH_FAILED, + DEBUG, + ERROR, + OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED, +) + + +class ServerInterface: + """ + This class defines an interface for controlling the behavior of Paramiko + in server mode. + + Methods on this class are called from Paramiko's primary thread, so you + shouldn't do too much work in them. (Certainly nothing that blocks or + sleeps.) + """ + + def check_channel_request(self, kind, chanid): + """ + Determine if a channel request of a given type will be granted, and + return ``OPEN_SUCCEEDED`` or an error code. This method is + called in server mode when the client requests a channel, after + authentication is complete. + + If you allow channel requests (and an ssh server that didn't would be + useless), you should also override some of the channel request methods + below, which are used to determine which services will be allowed on + a given channel: + + - `check_channel_pty_request` + - `check_channel_shell_request` + - `check_channel_subsystem_request` + - `check_channel_window_change_request` + - `check_channel_x11_request` + - `check_channel_forward_agent_request` + + The ``chanid`` parameter is a small number that uniquely identifies the + channel within a `.Transport`. A `.Channel` object is not created + unless this method returns ``OPEN_SUCCEEDED`` -- once a + `.Channel` object is created, you can call `.Channel.get_id` to + retrieve the channel ID. + + The return value should either be ``OPEN_SUCCEEDED`` (or + ``0``) to allow the channel request, or one of the following error + codes to reject it: + + - ``OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED`` + - ``OPEN_FAILED_CONNECT_FAILED`` + - ``OPEN_FAILED_UNKNOWN_CHANNEL_TYPE`` + - ``OPEN_FAILED_RESOURCE_SHORTAGE`` + + The default implementation always returns + ``OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED``. + + :param str kind: + the kind of channel the client would like to open (usually + ``"session"``). + :param int chanid: ID of the channel + :return: an `int` success or failure code (listed above) + """ + return OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED + + def get_allowed_auths(self, username): + """ + Return a list of authentication methods supported by the server. + This list is sent to clients attempting to authenticate, to inform them + of authentication methods that might be successful. + + The "list" is actually a string of comma-separated names of types of + authentication. Possible values are ``"password"``, ``"publickey"``, + and ``"none"``. + + The default implementation always returns ``"password"``. + + :param str username: the username requesting authentication. + :return: a comma-separated `str` of authentication types + """ + return "password" + + def check_auth_none(self, username): + """ + Determine if a client may open channels with no (further) + authentication. + + Return ``AUTH_FAILED`` if the client must authenticate, or + ``AUTH_SUCCESSFUL`` if it's okay for the client to not + authenticate. + + The default implementation always returns ``AUTH_FAILED``. + + :param str username: the username of the client. + :return: + ``AUTH_FAILED`` if the authentication fails; ``AUTH_SUCCESSFUL`` if + it succeeds. + :rtype: int + """ + return AUTH_FAILED + + def check_auth_password(self, username, password): + """ + Determine if a given username and password supplied by the client is + acceptable for use in authentication. + + Return ``AUTH_FAILED`` if the password is not accepted, + ``AUTH_SUCCESSFUL`` if the password is accepted and completes + the authentication, or ``AUTH_PARTIALLY_SUCCESSFUL`` if your + authentication is stateful, and this key is accepted for + authentication, but more authentication is required. (In this latter + case, `get_allowed_auths` will be called to report to the client what + options it has for continuing the authentication.) + + The default implementation always returns ``AUTH_FAILED``. + + :param str username: the username of the authenticating client. + :param str password: the password given by the client. + :return: + ``AUTH_FAILED`` if the authentication fails; ``AUTH_SUCCESSFUL`` if + it succeeds; ``AUTH_PARTIALLY_SUCCESSFUL`` if the password auth is + successful, but authentication must continue. + :rtype: int + """ + return AUTH_FAILED + + def check_auth_publickey(self, username, key): + """ + Determine if a given key supplied by the client is acceptable for use + in authentication. You should override this method in server mode to + check the username and key and decide if you would accept a signature + made using this key. + + Return ``AUTH_FAILED`` if the key is not accepted, + ``AUTH_SUCCESSFUL`` if the key is accepted and completes the + authentication, or ``AUTH_PARTIALLY_SUCCESSFUL`` if your + authentication is stateful, and this password is accepted for + authentication, but more authentication is required. (In this latter + case, `get_allowed_auths` will be called to report to the client what + options it has for continuing the authentication.) + + Note that you don't have to actually verify any key signtature here. + If you're willing to accept the key, Paramiko will do the work of + verifying the client's signature. + + The default implementation always returns ``AUTH_FAILED``. + + :param str username: the username of the authenticating client + :param .PKey key: the key object provided by the client + :return: + ``AUTH_FAILED`` if the client can't authenticate with this key; + ``AUTH_SUCCESSFUL`` if it can; ``AUTH_PARTIALLY_SUCCESSFUL`` if it + can authenticate with this key but must continue with + authentication + :rtype: int + """ + return AUTH_FAILED + + def check_auth_interactive(self, username, submethods): + """ + Begin an interactive authentication challenge, if supported. You + should override this method in server mode if you want to support the + ``"keyboard-interactive"`` auth type, which requires you to send a + series of questions for the client to answer. + + Return ``AUTH_FAILED`` if this auth method isn't supported. Otherwise, + you should return an `.InteractiveQuery` object containing the prompts + and instructions for the user. The response will be sent via a call + to `check_auth_interactive_response`. + + The default implementation always returns ``AUTH_FAILED``. + + :param str username: the username of the authenticating client + :param str submethods: + a comma-separated list of methods preferred by the client (usually + empty) + :return: + ``AUTH_FAILED`` if this auth method isn't supported; otherwise an + object containing queries for the user + :rtype: int or `.InteractiveQuery` + """ + return AUTH_FAILED + + def check_auth_interactive_response(self, responses): + """ + Continue or finish an interactive authentication challenge, if + supported. You should override this method in server mode if you want + to support the ``"keyboard-interactive"`` auth type. + + Return ``AUTH_FAILED`` if the responses are not accepted, + ``AUTH_SUCCESSFUL`` if the responses are accepted and complete + the authentication, or ``AUTH_PARTIALLY_SUCCESSFUL`` if your + authentication is stateful, and this set of responses is accepted for + authentication, but more authentication is required. (In this latter + case, `get_allowed_auths` will be called to report to the client what + options it has for continuing the authentication.) + + If you wish to continue interactive authentication with more questions, + you may return an `.InteractiveQuery` object, which should cause the + client to respond with more answers, calling this method again. This + cycle can continue indefinitely. + + The default implementation always returns ``AUTH_FAILED``. + + :param responses: list of `str` responses from the client + :return: + ``AUTH_FAILED`` if the authentication fails; ``AUTH_SUCCESSFUL`` if + it succeeds; ``AUTH_PARTIALLY_SUCCESSFUL`` if the interactive auth + is successful, but authentication must continue; otherwise an + object containing queries for the user + :rtype: int or `.InteractiveQuery` + """ + return AUTH_FAILED + + def check_port_forward_request(self, address, port): + """ + Handle a request for port forwarding. The client is asking that + connections to the given address and port be forwarded back across + this ssh connection. An address of ``"0.0.0.0"`` indicates a global + address (any address associated with this server) and a port of ``0`` + indicates that no specific port is requested (usually the OS will pick + a port). + + The default implementation always returns ``False``, rejecting the + port forwarding request. If the request is accepted, you should return + the port opened for listening. + + :param str address: the requested address + :param int port: the requested port + :return: + the port number (`int`) that was opened for listening, or ``False`` + to reject + """ + return False + + def cancel_port_forward_request(self, address, port): + """ + The client would like to cancel a previous port-forwarding request. + If the given address and port is being forwarded across this ssh + connection, the port should be closed. + + :param str address: the forwarded address + :param int port: the forwarded port + """ + pass + + def check_global_request(self, kind, msg): + """ + Handle a global request of the given ``kind``. This method is called + in server mode and client mode, whenever the remote host makes a global + request. If there are any arguments to the request, they will be in + ``msg``. + + There aren't any useful global requests defined, aside from port + forwarding, so usually this type of request is an extension to the + protocol. + + If the request was successful and you would like to return contextual + data to the remote host, return a tuple. Items in the tuple will be + sent back with the successful result. (Note that the items in the + tuple can only be strings, ints, or bools.) + + The default implementation always returns ``False``, indicating that it + does not support any global requests. + + .. note:: Port forwarding requests are handled separately, in + `check_port_forward_request`. + + :param str kind: the kind of global request being made. + :param .Message msg: any extra arguments to the request. + :return: + ``True`` or a `tuple` of data if the request was granted; ``False`` + otherwise. + """ + return False + + # ...Channel requests... + + def check_channel_pty_request( + self, channel, term, width, height, pixelwidth, pixelheight, modes + ): + """ + Determine if a pseudo-terminal of the given dimensions (usually + requested for shell access) can be provided on the given channel. + + The default implementation always returns ``False``. + + :param .Channel channel: the `.Channel` the pty request arrived on. + :param str term: type of terminal requested (for example, ``"vt100"``). + :param int width: width of screen in characters. + :param int height: height of screen in characters. + :param int pixelwidth: + width of screen in pixels, if known (may be ``0`` if unknown). + :param int pixelheight: + height of screen in pixels, if known (may be ``0`` if unknown). + :return: + ``True`` if the pseudo-terminal has been allocated; ``False`` + otherwise. + """ + return False + + def check_channel_shell_request(self, channel): + """ + Determine if a shell will be provided to the client on the given + channel. If this method returns ``True``, the channel should be + connected to the stdin/stdout of a shell (or something that acts like + a shell). + + The default implementation always returns ``False``. + + :param .Channel channel: the `.Channel` the request arrived on. + :return: + ``True`` if this channel is now hooked up to a shell; ``False`` if + a shell can't or won't be provided. + """ + return False + + def check_channel_exec_request(self, channel, command): + """ + Determine if a shell command will be executed for the client. If this + method returns ``True``, the channel should be connected to the stdin, + stdout, and stderr of the shell command. + + The default implementation always returns ``False``. + + :param .Channel channel: the `.Channel` the request arrived on. + :param str command: the command to execute. + :return: + ``True`` if this channel is now hooked up to the stdin, stdout, and + stderr of the executing command; ``False`` if the command will not + be executed. + + .. versionadded:: 1.1 + """ + return False + + def check_channel_subsystem_request(self, channel, name): + """ + Determine if a requested subsystem will be provided to the client on + the given channel. If this method returns ``True``, all future I/O + through this channel will be assumed to be connected to the requested + subsystem. An example of a subsystem is ``sftp``. + + The default implementation checks for a subsystem handler assigned via + `.Transport.set_subsystem_handler`. + If one has been set, the handler is invoked and this method returns + ``True``. Otherwise it returns ``False``. + + .. note:: Because the default implementation uses the `.Transport` to + identify valid subsystems, you probably won't need to override this + method. + + :param .Channel channel: the `.Channel` the pty request arrived on. + :param str name: name of the requested subsystem. + :return: + ``True`` if this channel is now hooked up to the requested + subsystem; ``False`` if that subsystem can't or won't be provided. + """ + transport = channel.get_transport() + handler_class, args, kwargs = transport._get_subsystem_handler(name) + if handler_class is None: + return False + handler = handler_class(channel, name, self, *args, **kwargs) + handler.start() + return True + + def check_channel_window_change_request( + self, channel, width, height, pixelwidth, pixelheight + ): + """ + Determine if the pseudo-terminal on the given channel can be resized. + This only makes sense if a pty was previously allocated on it. + + The default implementation always returns ``False``. + + :param .Channel channel: the `.Channel` the pty request arrived on. + :param int width: width of screen in characters. + :param int height: height of screen in characters. + :param int pixelwidth: + width of screen in pixels, if known (may be ``0`` if unknown). + :param int pixelheight: + height of screen in pixels, if known (may be ``0`` if unknown). + :return: ``True`` if the terminal was resized; ``False`` if not. + """ + return False + + def check_channel_x11_request( + self, + channel, + single_connection, + auth_protocol, + auth_cookie, + screen_number, + ): + """ + Determine if the client will be provided with an X11 session. If this + method returns ``True``, X11 applications should be routed through new + SSH channels, using `.Transport.open_x11_channel`. + + The default implementation always returns ``False``. + + :param .Channel channel: the `.Channel` the X11 request arrived on + :param bool single_connection: + ``True`` if only a single X11 channel should be opened, else + ``False``. + :param str auth_protocol: the protocol used for X11 authentication + :param str auth_cookie: the cookie used to authenticate to X11 + :param int screen_number: the number of the X11 screen to connect to + :return: ``True`` if the X11 session was opened; ``False`` if not + """ + return False + + def check_channel_forward_agent_request(self, channel): + """ + Determine if the client will be provided with an forward agent session. + If this method returns ``True``, the server will allow SSH Agent + forwarding. + + The default implementation always returns ``False``. + + :param .Channel channel: the `.Channel` the request arrived on + :return: ``True`` if the AgentForward was loaded; ``False`` if not + + If ``True`` is returned, the server should create an + :class:`AgentServerProxy` to access the agent. + """ + return False + + def check_channel_direct_tcpip_request(self, chanid, origin, destination): + """ + Determine if a local port forwarding channel will be granted, and + return ``OPEN_SUCCEEDED`` or an error code. This method is + called in server mode when the client requests a channel, after + authentication is complete. + + The ``chanid`` parameter is a small number that uniquely identifies the + channel within a `.Transport`. A `.Channel` object is not created + unless this method returns ``OPEN_SUCCEEDED`` -- once a + `.Channel` object is created, you can call `.Channel.get_id` to + retrieve the channel ID. + + The origin and destination parameters are (ip_address, port) tuples + that correspond to both ends of the TCP connection in the forwarding + tunnel. + + The return value should either be ``OPEN_SUCCEEDED`` (or + ``0``) to allow the channel request, or one of the following error + codes to reject it: + + - ``OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED`` + - ``OPEN_FAILED_CONNECT_FAILED`` + - ``OPEN_FAILED_UNKNOWN_CHANNEL_TYPE`` + - ``OPEN_FAILED_RESOURCE_SHORTAGE`` + + The default implementation always returns + ``OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED``. + + :param int chanid: ID of the channel + :param tuple origin: + 2-tuple containing the IP address and port of the originator + (client side) + :param tuple destination: + 2-tuple containing the IP address and port of the destination + (server side) + :return: an `int` success or failure code (listed above) + """ + return OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED + + def check_channel_env_request(self, channel, name, value): + """ + Check whether a given environment variable can be specified for the + given channel. This method should return ``True`` if the server + is willing to set the specified environment variable. Note that + some environment variables (e.g., PATH) can be exceedingly + dangerous, so blindly allowing the client to set the environment + is almost certainly not a good idea. + + The default implementation always returns ``False``. + + :param channel: the `.Channel` the env request arrived on + :param str name: name + :param str value: Channel value + :returns: A boolean + """ + return False + + def get_banner(self): + """ + A pre-login banner to display to the user. The message may span + multiple lines separated by crlf pairs. The language should be in + rfc3066 style, for example: en-US + + The default implementation always returns ``(None, None)``. + + :returns: A tuple containing the banner and language code. + + .. versionadded:: 2.3 + """ + return (None, None) + + +class InteractiveQuery: + """ + A query (set of prompts) for a user during interactive authentication. + """ + + def __init__(self, name="", instructions="", *prompts): + """ + Create a new interactive query to send to the client. The name and + instructions are optional, but are generally displayed to the end + user. A list of prompts may be included, or they may be added via + the `add_prompt` method. + + :param str name: name of this query + :param str instructions: + user instructions (usually short) about this query + :param str prompts: one or more authentication prompts + """ + self.name = name + self.instructions = instructions + self.prompts = [] + for x in prompts: + if isinstance(x, str): + self.add_prompt(x) + else: + self.add_prompt(x[0], x[1]) + + def add_prompt(self, prompt, echo=True): + """ + Add a prompt to this query. The prompt should be a (reasonably short) + string. Multiple prompts can be added to the same query. + + :param str prompt: the user prompt + :param bool echo: + ``True`` (default) if the user's response should be echoed; + ``False`` if not (for a password or similar) + """ + self.prompts.append((prompt, echo)) + + +class SubsystemHandler(threading.Thread): + """ + Handler for a subsystem in server mode. If you create a subclass of this + class and pass it to `.Transport.set_subsystem_handler`, an object of this + class will be created for each request for this subsystem. Each new object + will be executed within its own new thread by calling `start_subsystem`. + When that method completes, the channel is closed. + + For example, if you made a subclass ``MP3Handler`` and registered it as the + handler for subsystem ``"mp3"``, then whenever a client has successfully + authenticated and requests subsystem ``"mp3"``, an object of class + ``MP3Handler`` will be created, and `start_subsystem` will be called on + it from a new thread. + """ + + def __init__(self, channel, name, server): + """ + Create a new handler for a channel. This is used by `.ServerInterface` + to start up a new handler when a channel requests this subsystem. You + don't need to override this method, but if you do, be sure to pass the + ``channel`` and ``name`` parameters through to the original + ``__init__`` method here. + + :param .Channel channel: the channel associated with this + subsystem request. + :param str name: name of the requested subsystem. + :param .ServerInterface server: + the server object for the session that started this subsystem + """ + threading.Thread.__init__(self, target=self._run) + self.__channel = channel + self.__transport = channel.get_transport() + self.__name = name + self.__server = server + + def get_server(self): + """ + Return the `.ServerInterface` object associated with this channel and + subsystem. + """ + return self.__server + + def _run(self): + try: + self.__transport._log( + DEBUG, "Starting handler for subsystem {}".format(self.__name) + ) + self.start_subsystem(self.__name, self.__transport, self.__channel) + except Exception as e: + self.__transport._log( + ERROR, + 'Exception in subsystem handler for "{}": {}'.format( + self.__name, e + ), + ) + self.__transport._log(ERROR, util.tb_strings()) + try: + self.finish_subsystem() + except: + pass + + def start_subsystem(self, name, transport, channel): + """ + Process an ssh subsystem in server mode. This method is called on a + new object (and in a new thread) for each subsystem request. It is + assumed that all subsystem logic will take place here, and when the + subsystem is finished, this method will return. After this method + returns, the channel is closed. + + The combination of ``transport`` and ``channel`` are unique; this + handler corresponds to exactly one `.Channel` on one `.Transport`. + + .. note:: + It is the responsibility of this method to exit if the underlying + `.Transport` is closed. This can be done by checking + `.Transport.is_active` or noticing an EOF on the `.Channel`. If + this method loops forever without checking for this case, your + Python interpreter may refuse to exit because this thread will + still be running. + + :param str name: name of the requested subsystem. + :param .Transport transport: the server-mode `.Transport`. + :param .Channel channel: the channel associated with this subsystem + request. + """ + pass + + def finish_subsystem(self): + """ + Perform any cleanup at the end of a subsystem. The default + implementation just closes the channel. + + .. versionadded:: 1.1 + """ + self.__channel.close() diff --git a/.venv/lib/python3.9/site-packages/paramiko/sftp.py b/.venv/lib/python3.9/site-packages/paramiko/sftp.py new file mode 100644 index 0000000..b3528d4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/sftp.py @@ -0,0 +1,224 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import select +import socket +import struct + +from paramiko import util +from paramiko.common import DEBUG, byte_chr, byte_ord +from paramiko.message import Message + + +( + CMD_INIT, + CMD_VERSION, + CMD_OPEN, + CMD_CLOSE, + CMD_READ, + CMD_WRITE, + CMD_LSTAT, + CMD_FSTAT, + CMD_SETSTAT, + CMD_FSETSTAT, + CMD_OPENDIR, + CMD_READDIR, + CMD_REMOVE, + CMD_MKDIR, + CMD_RMDIR, + CMD_REALPATH, + CMD_STAT, + CMD_RENAME, + CMD_READLINK, + CMD_SYMLINK, +) = range(1, 21) +(CMD_STATUS, CMD_HANDLE, CMD_DATA, CMD_NAME, CMD_ATTRS) = range(101, 106) +(CMD_EXTENDED, CMD_EXTENDED_REPLY) = range(200, 202) + +SFTP_OK = 0 +( + SFTP_EOF, + SFTP_NO_SUCH_FILE, + SFTP_PERMISSION_DENIED, + SFTP_FAILURE, + SFTP_BAD_MESSAGE, + SFTP_NO_CONNECTION, + SFTP_CONNECTION_LOST, + SFTP_OP_UNSUPPORTED, +) = range(1, 9) + +SFTP_DESC = [ + "Success", + "End of file", + "No such file", + "Permission denied", + "Failure", + "Bad message", + "No connection", + "Connection lost", + "Operation unsupported", +] + +SFTP_FLAG_READ = 0x1 +SFTP_FLAG_WRITE = 0x2 +SFTP_FLAG_APPEND = 0x4 +SFTP_FLAG_CREATE = 0x8 +SFTP_FLAG_TRUNC = 0x10 +SFTP_FLAG_EXCL = 0x20 + +_VERSION = 3 + + +# for debugging +CMD_NAMES = { + CMD_INIT: "init", + CMD_VERSION: "version", + CMD_OPEN: "open", + CMD_CLOSE: "close", + CMD_READ: "read", + CMD_WRITE: "write", + CMD_LSTAT: "lstat", + CMD_FSTAT: "fstat", + CMD_SETSTAT: "setstat", + CMD_FSETSTAT: "fsetstat", + CMD_OPENDIR: "opendir", + CMD_READDIR: "readdir", + CMD_REMOVE: "remove", + CMD_MKDIR: "mkdir", + CMD_RMDIR: "rmdir", + CMD_REALPATH: "realpath", + CMD_STAT: "stat", + CMD_RENAME: "rename", + CMD_READLINK: "readlink", + CMD_SYMLINK: "symlink", + CMD_STATUS: "status", + CMD_HANDLE: "handle", + CMD_DATA: "data", + CMD_NAME: "name", + CMD_ATTRS: "attrs", + CMD_EXTENDED: "extended", + CMD_EXTENDED_REPLY: "extended_reply", +} + + +# TODO: rewrite SFTP file/server modules' overly-flexible "make a request with +# xyz components" so we don't need this very silly method of signaling whether +# a given Python integer should be 32- or 64-bit. +# NOTE: this only became an issue when dropping Python 2 support; prior to +# doing so, we had to support actual-longs, which served as that signal. This +# is simply recreating that structure in a more tightly scoped fashion. +class int64(int): + pass + + +class SFTPError(Exception): + pass + + +class BaseSFTP: + def __init__(self): + self.logger = util.get_logger("paramiko.sftp") + self.sock = None + self.ultra_debug = False + + # ...internals... + + def _send_version(self): + m = Message() + m.add_int(_VERSION) + self._send_packet(CMD_INIT, m) + t, data = self._read_packet() + if t != CMD_VERSION: + raise SFTPError("Incompatible sftp protocol") + version = struct.unpack(">I", data[:4])[0] + # if version != _VERSION: + # raise SFTPError('Incompatible sftp protocol') + return version + + def _send_server_version(self): + # winscp will freak out if the server sends version info before the + # client finishes sending INIT. + t, data = self._read_packet() + if t != CMD_INIT: + raise SFTPError("Incompatible sftp protocol") + version = struct.unpack(">I", data[:4])[0] + # advertise that we support "check-file" + extension_pairs = ["check-file", "md5,sha1"] + msg = Message() + msg.add_int(_VERSION) + msg.add(*extension_pairs) + self._send_packet(CMD_VERSION, msg) + return version + + def _log(self, level, msg, *args): + self.logger.log(level, msg, *args) + + def _write_all(self, out): + while len(out) > 0: + n = self.sock.send(out) + if n <= 0: + raise EOFError() + if n == len(out): + return + out = out[n:] + return + + def _read_all(self, n): + out = bytes() + while n > 0: + if isinstance(self.sock, socket.socket): + # sometimes sftp is used directly over a socket instead of + # through a paramiko channel. in this case, check periodically + # if the socket is closed. (for some reason, recv() won't ever + # return or raise an exception, but calling select on a closed + # socket will.) + while True: + read, write, err = select.select([self.sock], [], [], 0.1) + if len(read) > 0: + x = self.sock.recv(n) + break + else: + x = self.sock.recv(n) + + if len(x) == 0: + raise EOFError() + out += x + n -= len(x) + return out + + def _send_packet(self, t, packet): + packet = packet.asbytes() + out = struct.pack(">I", len(packet) + 1) + byte_chr(t) + packet + if self.ultra_debug: + self._log(DEBUG, util.format_binary(out, "OUT: ")) + self._write_all(out) + + def _read_packet(self): + x = self._read_all(4) + # most sftp servers won't accept packets larger than about 32k, so + # anything with the high byte set (> 16MB) is just garbage. + if byte_ord(x[0]): + raise SFTPError("Garbage packet received") + size = struct.unpack(">I", x)[0] + data = self._read_all(size) + if self.ultra_debug: + self._log(DEBUG, util.format_binary(data, "IN: ")) + if size > 0: + t = byte_ord(data[0]) + return t, data[1:] + return 0, bytes() diff --git a/.venv/lib/python3.9/site-packages/paramiko/sftp_attr.py b/.venv/lib/python3.9/site-packages/paramiko/sftp_attr.py new file mode 100644 index 0000000..18ffbf8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/sftp_attr.py @@ -0,0 +1,239 @@ +# Copyright (C) 2003-2006 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import stat +import time +from paramiko.common import x80000000, o700, o70, xffffffff + + +class SFTPAttributes: + """ + Representation of the attributes of a file (or proxied file) for SFTP in + client or server mode. It attempts to mirror the object returned by + `os.stat` as closely as possible, so it may have the following fields, + with the same meanings as those returned by an `os.stat` object: + + - ``st_size`` + - ``st_uid`` + - ``st_gid`` + - ``st_mode`` + - ``st_atime`` + - ``st_mtime`` + + Because SFTP allows flags to have other arbitrary named attributes, these + are stored in a dict named ``attr``. Occasionally, the filename is also + stored, in ``filename``. + """ + + FLAG_SIZE = 1 + FLAG_UIDGID = 2 + FLAG_PERMISSIONS = 4 + FLAG_AMTIME = 8 + FLAG_EXTENDED = x80000000 + + def __init__(self): + """ + Create a new (empty) SFTPAttributes object. All fields will be empty. + """ + self._flags = 0 + self.st_size = None + self.st_uid = None + self.st_gid = None + self.st_mode = None + self.st_atime = None + self.st_mtime = None + self.attr = {} + + @classmethod + def from_stat(cls, obj, filename=None): + """ + Create an `.SFTPAttributes` object from an existing ``stat`` object (an + object returned by `os.stat`). + + :param object obj: an object returned by `os.stat` (or equivalent). + :param str filename: the filename associated with this file. + :return: new `.SFTPAttributes` object with the same attribute fields. + """ + attr = cls() + attr.st_size = obj.st_size + attr.st_uid = obj.st_uid + attr.st_gid = obj.st_gid + attr.st_mode = obj.st_mode + attr.st_atime = obj.st_atime + attr.st_mtime = obj.st_mtime + if filename is not None: + attr.filename = filename + return attr + + def __repr__(self): + return "".format(self._debug_str()) + + # ...internals... + @classmethod + def _from_msg(cls, msg, filename=None, longname=None): + attr = cls() + attr._unpack(msg) + if filename is not None: + attr.filename = filename + if longname is not None: + attr.longname = longname + return attr + + def _unpack(self, msg): + self._flags = msg.get_int() + if self._flags & self.FLAG_SIZE: + self.st_size = msg.get_int64() + if self._flags & self.FLAG_UIDGID: + self.st_uid = msg.get_int() + self.st_gid = msg.get_int() + if self._flags & self.FLAG_PERMISSIONS: + self.st_mode = msg.get_int() + if self._flags & self.FLAG_AMTIME: + self.st_atime = msg.get_int() + self.st_mtime = msg.get_int() + if self._flags & self.FLAG_EXTENDED: + count = msg.get_int() + for i in range(count): + self.attr[msg.get_string()] = msg.get_string() + + def _pack(self, msg): + self._flags = 0 + if self.st_size is not None: + self._flags |= self.FLAG_SIZE + if (self.st_uid is not None) and (self.st_gid is not None): + self._flags |= self.FLAG_UIDGID + if self.st_mode is not None: + self._flags |= self.FLAG_PERMISSIONS + if (self.st_atime is not None) and (self.st_mtime is not None): + self._flags |= self.FLAG_AMTIME + if len(self.attr) > 0: + self._flags |= self.FLAG_EXTENDED + msg.add_int(self._flags) + if self._flags & self.FLAG_SIZE: + msg.add_int64(self.st_size) + if self._flags & self.FLAG_UIDGID: + msg.add_int(self.st_uid) + msg.add_int(self.st_gid) + if self._flags & self.FLAG_PERMISSIONS: + msg.add_int(self.st_mode) + if self._flags & self.FLAG_AMTIME: + # throw away any fractional seconds + msg.add_int(int(self.st_atime)) + msg.add_int(int(self.st_mtime)) + if self._flags & self.FLAG_EXTENDED: + msg.add_int(len(self.attr)) + for key, val in self.attr.items(): + msg.add_string(key) + msg.add_string(val) + return + + def _debug_str(self): + out = "[ " + if self.st_size is not None: + out += "size={} ".format(self.st_size) + if (self.st_uid is not None) and (self.st_gid is not None): + out += "uid={} gid={} ".format(self.st_uid, self.st_gid) + if self.st_mode is not None: + out += "mode=" + oct(self.st_mode) + " " + if (self.st_atime is not None) and (self.st_mtime is not None): + out += "atime={} mtime={} ".format(self.st_atime, self.st_mtime) + for k, v in self.attr.items(): + out += '"{}"={!r} '.format(str(k), v) + out += "]" + return out + + @staticmethod + def _rwx(n, suid, sticky=False): + if suid: + suid = 2 + out = "-r"[n >> 2] + "-w"[(n >> 1) & 1] + if sticky: + out += "-xTt"[suid + (n & 1)] + else: + out += "-xSs"[suid + (n & 1)] + return out + + def __str__(self): + """create a unix-style long description of the file (like ls -l)""" + if self.st_mode is not None: + kind = stat.S_IFMT(self.st_mode) + if kind == stat.S_IFIFO: + ks = "p" + elif kind == stat.S_IFCHR: + ks = "c" + elif kind == stat.S_IFDIR: + ks = "d" + elif kind == stat.S_IFBLK: + ks = "b" + elif kind == stat.S_IFREG: + ks = "-" + elif kind == stat.S_IFLNK: + ks = "l" + elif kind == stat.S_IFSOCK: + ks = "s" + else: + ks = "?" + ks += self._rwx( + (self.st_mode & o700) >> 6, self.st_mode & stat.S_ISUID + ) + ks += self._rwx( + (self.st_mode & o70) >> 3, self.st_mode & stat.S_ISGID + ) + ks += self._rwx( + self.st_mode & 7, self.st_mode & stat.S_ISVTX, True + ) + else: + ks = "?---------" + # compute display date + if (self.st_mtime is None) or (self.st_mtime == xffffffff): + # shouldn't really happen + datestr = "(unknown date)" + else: + time_tuple = time.localtime(self.st_mtime) + if abs(time.time() - self.st_mtime) > 15_552_000: + # (15,552,000s = 6 months) + datestr = time.strftime("%d %b %Y", time_tuple) + else: + datestr = time.strftime("%d %b %H:%M", time_tuple) + filename = getattr(self, "filename", "?") + + # not all servers support uid/gid + uid = self.st_uid + gid = self.st_gid + size = self.st_size + if uid is None: + uid = 0 + if gid is None: + gid = 0 + if size is None: + size = 0 + + # TODO: not sure this actually worked as expected beforehand, leaving + # it untouched for the time being, re: .format() upgrade, until someone + # has time to doublecheck + return "%s 1 %-8d %-8d %8d %-12s %s" % ( + ks, + uid, + gid, + size, + datestr, + filename, + ) + + def asbytes(self): + return str(self).encode() diff --git a/.venv/lib/python3.9/site-packages/paramiko/sftp_client.py b/.venv/lib/python3.9/site-packages/paramiko/sftp_client.py new file mode 100644 index 0000000..066cd83 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/sftp_client.py @@ -0,0 +1,965 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of Paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +from binascii import hexlify +import errno +import os +import stat +import threading +import time +import weakref +from paramiko import util +from paramiko.channel import Channel +from paramiko.message import Message +from paramiko.common import INFO, DEBUG, o777 +from paramiko.sftp import ( + BaseSFTP, + CMD_OPENDIR, + CMD_HANDLE, + SFTPError, + CMD_READDIR, + CMD_NAME, + CMD_CLOSE, + SFTP_FLAG_READ, + SFTP_FLAG_WRITE, + SFTP_FLAG_CREATE, + SFTP_FLAG_TRUNC, + SFTP_FLAG_APPEND, + SFTP_FLAG_EXCL, + CMD_OPEN, + CMD_REMOVE, + CMD_RENAME, + CMD_MKDIR, + CMD_RMDIR, + CMD_STAT, + CMD_ATTRS, + CMD_LSTAT, + CMD_SYMLINK, + CMD_SETSTAT, + CMD_READLINK, + CMD_REALPATH, + CMD_STATUS, + CMD_EXTENDED, + SFTP_OK, + SFTP_EOF, + SFTP_NO_SUCH_FILE, + SFTP_PERMISSION_DENIED, + int64, +) + +from paramiko.sftp_attr import SFTPAttributes +from paramiko.ssh_exception import SSHException +from paramiko.sftp_file import SFTPFile +from paramiko.util import ClosingContextManager, b, u + + +def _to_unicode(s): + """ + decode a string as ascii or utf8 if possible (as required by the sftp + protocol). if neither works, just return a byte string because the server + probably doesn't know the filename's encoding. + """ + try: + return s.encode("ascii") + except (UnicodeError, AttributeError): + try: + return s.decode("utf-8") + except UnicodeError: + return s + + +b_slash = b"/" + + +class SFTPClient(BaseSFTP, ClosingContextManager): + """ + SFTP client object. + + Used to open an SFTP session across an open SSH `.Transport` and perform + remote file operations. + + Instances of this class may be used as context managers. + """ + + def __init__(self, sock): + """ + Create an SFTP client from an existing `.Channel`. The channel + should already have requested the ``"sftp"`` subsystem. + + An alternate way to create an SFTP client context is by using + `from_transport`. + + :param .Channel sock: an open `.Channel` using the ``"sftp"`` subsystem + + :raises: + `.SSHException` -- if there's an exception while negotiating sftp + """ + BaseSFTP.__init__(self) + self.sock = sock + self.ultra_debug = False + self.request_number = 1 + # lock for request_number + self._lock = threading.Lock() + self._cwd = None + # request # -> SFTPFile + self._expecting = weakref.WeakValueDictionary() + if type(sock) is Channel: + # override default logger + transport = self.sock.get_transport() + self.logger = util.get_logger( + transport.get_log_channel() + ".sftp" + ) + self.ultra_debug = transport.get_hexdump() + try: + server_version = self._send_version() + except EOFError: + raise SSHException("EOF during negotiation") + self._log( + INFO, + "Opened sftp connection (server version {})".format( + server_version + ), + ) + + @classmethod + def from_transport(cls, t, window_size=None, max_packet_size=None): + """ + Create an SFTP client channel from an open `.Transport`. + + Setting the window and packet sizes might affect the transfer speed. + The default settings in the `.Transport` class are the same as in + OpenSSH and should work adequately for both files transfers and + interactive sessions. + + :param .Transport t: an open `.Transport` which is already + authenticated + :param int window_size: + optional window size for the `.SFTPClient` session. + :param int max_packet_size: + optional max packet size for the `.SFTPClient` session.. + + :return: + a new `.SFTPClient` object, referring to an sftp session (channel) + across the transport + + .. versionchanged:: 1.15 + Added the ``window_size`` and ``max_packet_size`` arguments. + """ + chan = t.open_session( + window_size=window_size, max_packet_size=max_packet_size + ) + if chan is None: + return None + chan.invoke_subsystem("sftp") + return cls(chan) + + def _log(self, level, msg, *args): + if isinstance(msg, list): + for m in msg: + self._log(level, m, *args) + else: + # NOTE: these bits MUST continue using %-style format junk because + # logging.Logger.log() explicitly requires it. Grump. + # escape '%' in msg (they could come from file or directory names) + # before logging + msg = msg.replace("%", "%%") + super()._log( + level, + "[chan %s] " + msg, + *([self.sock.get_name()] + list(args)) + ) + + def close(self): + """ + Close the SFTP session and its underlying channel. + + .. versionadded:: 1.4 + """ + self._log(INFO, "sftp session closed.") + self.sock.close() + + def get_channel(self): + """ + Return the underlying `.Channel` object for this SFTP session. This + might be useful for doing things like setting a timeout on the channel. + + .. versionadded:: 1.7.1 + """ + return self.sock + + def listdir(self, path="."): + """ + Return a list containing the names of the entries in the given + ``path``. + + The list is in arbitrary order. It does not include the special + entries ``'.'`` and ``'..'`` even if they are present in the folder. + This method is meant to mirror ``os.listdir`` as closely as possible. + For a list of full `.SFTPAttributes` objects, see `listdir_attr`. + + :param str path: path to list (defaults to ``'.'``) + """ + return [f.filename for f in self.listdir_attr(path)] + + def listdir_attr(self, path="."): + """ + Return a list containing `.SFTPAttributes` objects corresponding to + files in the given ``path``. The list is in arbitrary order. It does + not include the special entries ``'.'`` and ``'..'`` even if they are + present in the folder. + + The returned `.SFTPAttributes` objects will each have an additional + field: ``longname``, which may contain a formatted string of the file's + attributes, in unix format. The content of this string will probably + depend on the SFTP server implementation. + + :param str path: path to list (defaults to ``'.'``) + :return: list of `.SFTPAttributes` objects + + .. versionadded:: 1.2 + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "listdir({!r})".format(path)) + t, msg = self._request(CMD_OPENDIR, path) + if t != CMD_HANDLE: + raise SFTPError("Expected handle") + handle = msg.get_binary() + filelist = [] + while True: + try: + t, msg = self._request(CMD_READDIR, handle) + except EOFError: + # done with handle + break + if t != CMD_NAME: + raise SFTPError("Expected name response") + count = msg.get_int() + for i in range(count): + filename = msg.get_text() + longname = msg.get_text() + attr = SFTPAttributes._from_msg(msg, filename, longname) + if (filename != ".") and (filename != ".."): + filelist.append(attr) + self._request(CMD_CLOSE, handle) + return filelist + + def listdir_iter(self, path=".", read_aheads=50): + """ + Generator version of `.listdir_attr`. + + See the API docs for `.listdir_attr` for overall details. + + This function adds one more kwarg on top of `.listdir_attr`: + ``read_aheads``, an integer controlling how many + ``SSH_FXP_READDIR`` requests are made to the server. The default of 50 + should suffice for most file listings as each request/response cycle + may contain multiple files (dependent on server implementation.) + + .. versionadded:: 1.15 + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "listdir({!r})".format(path)) + t, msg = self._request(CMD_OPENDIR, path) + + if t != CMD_HANDLE: + raise SFTPError("Expected handle") + + handle = msg.get_string() + + nums = list() + while True: + try: + # Send out a bunch of readdir requests so that we can read the + # responses later on Section 6.7 of the SSH file transfer RFC + # explains this + # http://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt + for i in range(read_aheads): + num = self._async_request(type(None), CMD_READDIR, handle) + nums.append(num) + + # For each of our sent requests + # Read and parse the corresponding packets + # If we're at the end of our queued requests, then fire off + # some more requests + # Exit the loop when we've reached the end of the directory + # handle + for num in nums: + t, pkt_data = self._read_packet() + msg = Message(pkt_data) + new_num = msg.get_int() + if num == new_num: + if t == CMD_STATUS: + self._convert_status(msg) + count = msg.get_int() + for i in range(count): + filename = msg.get_text() + longname = msg.get_text() + attr = SFTPAttributes._from_msg( + msg, filename, longname + ) + if (filename != ".") and (filename != ".."): + yield attr + + # If we've hit the end of our queued requests, reset nums. + nums = list() + + except EOFError: + self._request(CMD_CLOSE, handle) + return + + def open(self, filename, mode="r", bufsize=-1): + """ + Open a file on the remote server. The arguments are the same as for + Python's built-in `python:file` (aka `python:open`). A file-like + object is returned, which closely mimics the behavior of a normal + Python file object, including the ability to be used as a context + manager. + + The mode indicates how the file is to be opened: ``'r'`` for reading, + ``'w'`` for writing (truncating an existing file), ``'a'`` for + appending, ``'r+'`` for reading/writing, ``'w+'`` for reading/writing + (truncating an existing file), ``'a+'`` for reading/appending. The + Python ``'b'`` flag is ignored, since SSH treats all files as binary. + The ``'U'`` flag is supported in a compatible way. + + Since 1.5.2, an ``'x'`` flag indicates that the operation should only + succeed if the file was created and did not previously exist. This has + no direct mapping to Python's file flags, but is commonly known as the + ``O_EXCL`` flag in posix. + + The file will be buffered in standard Python style by default, but + can be altered with the ``bufsize`` parameter. ``<=0`` turns off + buffering, ``1`` uses line buffering, and any number greater than 1 + (``>1``) uses that specific buffer size. + + :param str filename: name of the file to open + :param str mode: mode (Python-style) to open in + :param int bufsize: desired buffering (default: ``-1``) + :return: an `.SFTPFile` object representing the open file + + :raises: ``IOError`` -- if the file could not be opened. + """ + filename = self._adjust_cwd(filename) + self._log(DEBUG, "open({!r}, {!r})".format(filename, mode)) + imode = 0 + if ("r" in mode) or ("+" in mode): + imode |= SFTP_FLAG_READ + if ("w" in mode) or ("+" in mode) or ("a" in mode): + imode |= SFTP_FLAG_WRITE + if "w" in mode: + imode |= SFTP_FLAG_CREATE | SFTP_FLAG_TRUNC + if "a" in mode: + imode |= SFTP_FLAG_CREATE | SFTP_FLAG_APPEND + if "x" in mode: + imode |= SFTP_FLAG_CREATE | SFTP_FLAG_EXCL + attrblock = SFTPAttributes() + t, msg = self._request(CMD_OPEN, filename, imode, attrblock) + if t != CMD_HANDLE: + raise SFTPError("Expected handle") + handle = msg.get_binary() + self._log( + DEBUG, + "open({!r}, {!r}) -> {}".format( + filename, mode, u(hexlify(handle)) + ), + ) + return SFTPFile(self, handle, mode, bufsize) + + # Python continues to vacillate about "open" vs "file"... + file = open + + def remove(self, path): + """ + Remove the file at the given path. This only works on files; for + removing folders (directories), use `rmdir`. + + :param str path: path (absolute or relative) of the file to remove + + :raises: ``IOError`` -- if the path refers to a folder (directory) + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "remove({!r})".format(path)) + self._request(CMD_REMOVE, path) + + unlink = remove + + def rename(self, oldpath, newpath): + """ + Rename a file or folder from ``oldpath`` to ``newpath``. + + .. note:: + This method implements 'standard' SFTP ``RENAME`` behavior; those + seeking the OpenSSH "POSIX rename" extension behavior should use + `posix_rename`. + + :param str oldpath: + existing name of the file or folder + :param str newpath: + new name for the file or folder, must not exist already + + :raises: + ``IOError`` -- if ``newpath`` is a folder, or something else goes + wrong + """ + oldpath = self._adjust_cwd(oldpath) + newpath = self._adjust_cwd(newpath) + self._log(DEBUG, "rename({!r}, {!r})".format(oldpath, newpath)) + self._request(CMD_RENAME, oldpath, newpath) + + def posix_rename(self, oldpath, newpath): + """ + Rename a file or folder from ``oldpath`` to ``newpath``, following + posix conventions. + + :param str oldpath: existing name of the file or folder + :param str newpath: new name for the file or folder, will be + overwritten if it already exists + + :raises: + ``IOError`` -- if ``newpath`` is a folder, posix-rename is not + supported by the server or something else goes wrong + + :versionadded: 2.2 + """ + oldpath = self._adjust_cwd(oldpath) + newpath = self._adjust_cwd(newpath) + self._log(DEBUG, "posix_rename({!r}, {!r})".format(oldpath, newpath)) + self._request( + CMD_EXTENDED, "posix-rename@openssh.com", oldpath, newpath + ) + + def mkdir(self, path, mode=o777): + """ + Create a folder (directory) named ``path`` with numeric mode ``mode``. + The default mode is 0777 (octal). On some systems, mode is ignored. + Where it is used, the current umask value is first masked out. + + :param str path: name of the folder to create + :param int mode: permissions (posix-style) for the newly-created folder + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "mkdir({!r}, {!r})".format(path, mode)) + attr = SFTPAttributes() + attr.st_mode = mode + self._request(CMD_MKDIR, path, attr) + + def rmdir(self, path): + """ + Remove the folder named ``path``. + + :param str path: name of the folder to remove + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "rmdir({!r})".format(path)) + self._request(CMD_RMDIR, path) + + def stat(self, path): + """ + Retrieve information about a file on the remote system. The return + value is an object whose attributes correspond to the attributes of + Python's ``stat`` structure as returned by ``os.stat``, except that it + contains fewer fields. An SFTP server may return as much or as little + info as it wants, so the results may vary from server to server. + + Unlike a Python `python:stat` object, the result may not be accessed as + a tuple. This is mostly due to the author's slack factor. + + The fields supported are: ``st_mode``, ``st_size``, ``st_uid``, + ``st_gid``, ``st_atime``, and ``st_mtime``. + + :param str path: the filename to stat + :return: + an `.SFTPAttributes` object containing attributes about the given + file + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "stat({!r})".format(path)) + t, msg = self._request(CMD_STAT, path) + if t != CMD_ATTRS: + raise SFTPError("Expected attributes") + return SFTPAttributes._from_msg(msg) + + def lstat(self, path): + """ + Retrieve information about a file on the remote system, without + following symbolic links (shortcuts). This otherwise behaves exactly + the same as `stat`. + + :param str path: the filename to stat + :return: + an `.SFTPAttributes` object containing attributes about the given + file + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "lstat({!r})".format(path)) + t, msg = self._request(CMD_LSTAT, path) + if t != CMD_ATTRS: + raise SFTPError("Expected attributes") + return SFTPAttributes._from_msg(msg) + + def symlink(self, source, dest): + """ + Create a symbolic link to the ``source`` path at ``destination``. + + :param str source: path of the original file + :param str dest: path of the newly created symlink + """ + dest = self._adjust_cwd(dest) + self._log(DEBUG, "symlink({!r}, {!r})".format(source, dest)) + source = b(source) + self._request(CMD_SYMLINK, source, dest) + + def chmod(self, path, mode): + """ + Change the mode (permissions) of a file. The permissions are + unix-style and identical to those used by Python's `os.chmod` + function. + + :param str path: path of the file to change the permissions of + :param int mode: new permissions + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "chmod({!r}, {!r})".format(path, mode)) + attr = SFTPAttributes() + attr.st_mode = mode + self._request(CMD_SETSTAT, path, attr) + + def chown(self, path, uid, gid): + """ + Change the owner (``uid``) and group (``gid``) of a file. As with + Python's `os.chown` function, you must pass both arguments, so if you + only want to change one, use `stat` first to retrieve the current + owner and group. + + :param str path: path of the file to change the owner and group of + :param int uid: new owner's uid + :param int gid: new group id + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "chown({!r}, {!r}, {!r})".format(path, uid, gid)) + attr = SFTPAttributes() + attr.st_uid, attr.st_gid = uid, gid + self._request(CMD_SETSTAT, path, attr) + + def utime(self, path, times): + """ + Set the access and modified times of the file specified by ``path``. + If ``times`` is ``None``, then the file's access and modified times + are set to the current time. Otherwise, ``times`` must be a 2-tuple + of numbers, of the form ``(atime, mtime)``, which is used to set the + access and modified times, respectively. This bizarre API is mimicked + from Python for the sake of consistency -- I apologize. + + :param str path: path of the file to modify + :param tuple times: + ``None`` or a tuple of (access time, modified time) in standard + internet epoch time (seconds since 01 January 1970 GMT) + """ + path = self._adjust_cwd(path) + if times is None: + times = (time.time(), time.time()) + self._log(DEBUG, "utime({!r}, {!r})".format(path, times)) + attr = SFTPAttributes() + attr.st_atime, attr.st_mtime = times + self._request(CMD_SETSTAT, path, attr) + + def truncate(self, path, size): + """ + Change the size of the file specified by ``path``. This usually + extends or shrinks the size of the file, just like the `~file.truncate` + method on Python file objects. + + :param str path: path of the file to modify + :param int size: the new size of the file + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "truncate({!r}, {!r})".format(path, size)) + attr = SFTPAttributes() + attr.st_size = size + self._request(CMD_SETSTAT, path, attr) + + def readlink(self, path): + """ + Return the target of a symbolic link (shortcut). You can use + `symlink` to create these. The result may be either an absolute or + relative pathname. + + :param str path: path of the symbolic link file + :return: target path, as a `str` + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "readlink({!r})".format(path)) + t, msg = self._request(CMD_READLINK, path) + if t != CMD_NAME: + raise SFTPError("Expected name response") + count = msg.get_int() + if count == 0: + return None + if count != 1: + raise SFTPError("Readlink returned {} results".format(count)) + return _to_unicode(msg.get_string()) + + def normalize(self, path): + """ + Return the normalized path (on the server) of a given path. This + can be used to quickly resolve symbolic links or determine what the + server is considering to be the "current folder" (by passing ``'.'`` + as ``path``). + + :param str path: path to be normalized + :return: normalized form of the given path (as a `str`) + + :raises: ``IOError`` -- if the path can't be resolved on the server + """ + path = self._adjust_cwd(path) + self._log(DEBUG, "normalize({!r})".format(path)) + t, msg = self._request(CMD_REALPATH, path) + if t != CMD_NAME: + raise SFTPError("Expected name response") + count = msg.get_int() + if count != 1: + raise SFTPError("Realpath returned {} results".format(count)) + return msg.get_text() + + def chdir(self, path=None): + """ + Change the "current directory" of this SFTP session. Since SFTP + doesn't really have the concept of a current working directory, this is + emulated by Paramiko. Once you use this method to set a working + directory, all operations on this `.SFTPClient` object will be relative + to that path. You can pass in ``None`` to stop using a current working + directory. + + :param str path: new current working directory + + :raises: + ``IOError`` -- if the requested path doesn't exist on the server + + .. versionadded:: 1.4 + """ + if path is None: + self._cwd = None + return + if not stat.S_ISDIR(self.stat(path).st_mode): + code = errno.ENOTDIR + raise SFTPError(code, "{}: {}".format(os.strerror(code), path)) + self._cwd = b(self.normalize(path)) + + def getcwd(self): + """ + Return the "current working directory" for this SFTP session, as + emulated by Paramiko. If no directory has been set with `chdir`, + this method will return ``None``. + + .. versionadded:: 1.4 + """ + # TODO: make class initialize with self._cwd set to self.normalize('.') + return self._cwd and u(self._cwd) + + def _transfer_with_callback(self, reader, writer, file_size, callback): + size = 0 + while True: + data = reader.read(32768) + writer.write(data) + size += len(data) + if len(data) == 0: + break + if callback is not None: + callback(size, file_size) + return size + + def putfo(self, fl, remotepath, file_size=0, callback=None, confirm=True): + """ + Copy the contents of an open file object (``fl``) to the SFTP server as + ``remotepath``. Any exception raised by operations will be passed + through. + + The SFTP operations use pipelining for speed. + + :param fl: opened file or file-like object to copy + :param str remotepath: the destination path on the SFTP server + :param int file_size: + optional size parameter passed to callback. If none is specified, + size defaults to 0 + :param callable callback: + optional callback function (form: ``func(int, int)``) that accepts + the bytes transferred so far and the total bytes to be transferred + (since 1.7.4) + :param bool confirm: + whether to do a stat() on the file afterwards to confirm the file + size (since 1.7.7) + + :return: + an `.SFTPAttributes` object containing attributes about the given + file. + + .. versionadded:: 1.10 + """ + with self.file(remotepath, "wb") as fr: + fr.set_pipelined(True) + size = self._transfer_with_callback( + reader=fl, writer=fr, file_size=file_size, callback=callback + ) + if confirm: + s = self.stat(remotepath) + if s.st_size != size: + raise IOError( + "size mismatch in put! {} != {}".format(s.st_size, size) + ) + else: + s = SFTPAttributes() + return s + + def put(self, localpath, remotepath, callback=None, confirm=True): + """ + Copy a local file (``localpath``) to the SFTP server as ``remotepath``. + Any exception raised by operations will be passed through. This + method is primarily provided as a convenience. + + The SFTP operations use pipelining for speed. + + :param str localpath: the local file to copy + :param str remotepath: the destination path on the SFTP server. Note + that the filename should be included. Only specifying a directory + may result in an error. + :param callable callback: + optional callback function (form: ``func(int, int)``) that accepts + the bytes transferred so far and the total bytes to be transferred + :param bool confirm: + whether to do a stat() on the file afterwards to confirm the file + size + + :return: an `.SFTPAttributes` object containing attributes about the + given file + + .. versionadded:: 1.4 + .. versionchanged:: 1.7.4 + ``callback`` and rich attribute return value added. + .. versionchanged:: 1.7.7 + ``confirm`` param added. + """ + file_size = os.stat(localpath).st_size + with open(localpath, "rb") as fl: + return self.putfo(fl, remotepath, file_size, callback, confirm) + + def getfo( + self, + remotepath, + fl, + callback=None, + prefetch=True, + max_concurrent_prefetch_requests=None, + ): + """ + Copy a remote file (``remotepath``) from the SFTP server and write to + an open file or file-like object, ``fl``. Any exception raised by + operations will be passed through. This method is primarily provided + as a convenience. + + :param object remotepath: opened file or file-like object to copy to + :param str fl: + the destination path on the local host or open file object + :param callable callback: + optional callback function (form: ``func(int, int)``) that accepts + the bytes transferred so far and the total bytes to be transferred + :param bool prefetch: + controls whether prefetching is performed (default: True) + :param int max_concurrent_prefetch_requests: + The maximum number of concurrent read requests to prefetch. See + `.SFTPClient.get` (its ``max_concurrent_prefetch_requests`` param) + for details. + :return: the `number ` of bytes written to the opened file object + + .. versionadded:: 1.10 + .. versionchanged:: 2.8 + Added the ``prefetch`` keyword argument. + .. versionchanged:: 3.3 + Added ``max_concurrent_prefetch_requests``. + """ + file_size = self.stat(remotepath).st_size + with self.open(remotepath, "rb") as fr: + if prefetch: + fr.prefetch(file_size, max_concurrent_prefetch_requests) + return self._transfer_with_callback( + reader=fr, writer=fl, file_size=file_size, callback=callback + ) + + def get( + self, + remotepath, + localpath, + callback=None, + prefetch=True, + max_concurrent_prefetch_requests=None, + ): + """ + Copy a remote file (``remotepath``) from the SFTP server to the local + host as ``localpath``. Any exception raised by operations will be + passed through. This method is primarily provided as a convenience. + + :param str remotepath: the remote file to copy + :param str localpath: the destination path on the local host + :param callable callback: + optional callback function (form: ``func(int, int)``) that accepts + the bytes transferred so far and the total bytes to be transferred + :param bool prefetch: + controls whether prefetching is performed (default: True) + :param int max_concurrent_prefetch_requests: + The maximum number of concurrent read requests to prefetch. + When this is ``None`` (the default), do not limit the number of + concurrent prefetch requests. Note: OpenSSH's sftp internally + imposes a limit of 64 concurrent requests, while Paramiko imposes + no limit by default; consider setting a limit if a file can be + successfully received with sftp but hangs with Paramiko. + + .. versionadded:: 1.4 + .. versionchanged:: 1.7.4 + Added the ``callback`` param + .. versionchanged:: 2.8 + Added the ``prefetch`` keyword argument. + .. versionchanged:: 3.3 + Added ``max_concurrent_prefetch_requests``. + """ + with open(localpath, "wb") as fl: + size = self.getfo( + remotepath, + fl, + callback, + prefetch, + max_concurrent_prefetch_requests, + ) + s = os.stat(localpath) + if s.st_size != size: + raise IOError( + "size mismatch in get! {} != {}".format(s.st_size, size) + ) + + # ...internals... + + def _request(self, t, *args): + num = self._async_request(type(None), t, *args) + return self._read_response(num) + + def _async_request(self, fileobj, t, *args): + # this method may be called from other threads (prefetch) + self._lock.acquire() + try: + msg = Message() + msg.add_int(self.request_number) + for item in args: + if isinstance(item, int64): + msg.add_int64(item) + elif isinstance(item, int): + msg.add_int(item) + elif isinstance(item, SFTPAttributes): + item._pack(msg) + else: + # For all other types, rely on as_string() to either coerce + # to bytes before writing or raise a suitable exception. + msg.add_string(item) + num = self.request_number + self._expecting[num] = fileobj + self.request_number += 1 + finally: + self._lock.release() + self._send_packet(t, msg) + return num + + def _read_response(self, waitfor=None): + while True: + try: + t, data = self._read_packet() + except EOFError as e: + raise SSHException("Server connection dropped: {}".format(e)) + msg = Message(data) + num = msg.get_int() + self._lock.acquire() + try: + if num not in self._expecting: + # might be response for a file that was closed before + # responses came back + self._log(DEBUG, "Unexpected response #{}".format(num)) + if waitfor is None: + # just doing a single check + break + continue + fileobj = self._expecting[num] + del self._expecting[num] + finally: + self._lock.release() + if num == waitfor: + # synchronous + if t == CMD_STATUS: + self._convert_status(msg) + return t, msg + + # can not rewrite this to deal with E721, either as a None check + # nor as not an instance of None or NoneType + if fileobj is not type(None): # noqa + fileobj._async_response(t, msg, num) + if waitfor is None: + # just doing a single check + break + return None, None + + def _finish_responses(self, fileobj): + while fileobj in self._expecting.values(): + self._read_response() + fileobj._check_exception() + + def _convert_status(self, msg): + """ + Raises EOFError or IOError on error status; otherwise does nothing. + """ + code = msg.get_int() + text = msg.get_text() + if code == SFTP_OK: + return + elif code == SFTP_EOF: + raise EOFError(text) + elif code == SFTP_NO_SUCH_FILE: + # clever idea from john a. meinel: map the error codes to errno + raise IOError(errno.ENOENT, text) + elif code == SFTP_PERMISSION_DENIED: + raise IOError(errno.EACCES, text) + else: + raise IOError(text) + + def _adjust_cwd(self, path): + """ + Return an adjusted path if we're emulating a "current working + directory" for the server. + """ + path = b(path) + if self._cwd is None: + return path + if len(path) and path[0:1] == b_slash: + # absolute path + return path + if self._cwd == b_slash: + return self._cwd + path + return self._cwd + b_slash + path + + +class SFTP(SFTPClient): + """ + An alias for `.SFTPClient` for backwards compatibility. + """ + + pass diff --git a/.venv/lib/python3.9/site-packages/paramiko/sftp_file.py b/.venv/lib/python3.9/site-packages/paramiko/sftp_file.py new file mode 100644 index 0000000..c74695e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/sftp_file.py @@ -0,0 +1,594 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +SFTP file object +""" + + +from binascii import hexlify +from collections import deque +import socket +import threading +import time +from paramiko.common import DEBUG, io_sleep + +from paramiko.file import BufferedFile +from paramiko.util import u +from paramiko.sftp import ( + CMD_CLOSE, + CMD_READ, + CMD_DATA, + SFTPError, + CMD_WRITE, + CMD_STATUS, + CMD_FSTAT, + CMD_ATTRS, + CMD_FSETSTAT, + CMD_EXTENDED, + int64, +) +from paramiko.sftp_attr import SFTPAttributes + + +class SFTPFile(BufferedFile): + """ + Proxy object for a file on the remote server, in client mode SFTP. + + Instances of this class may be used as context managers in the same way + that built-in Python file objects are. + """ + + # Some sftp servers will choke if you send read/write requests larger than + # this size. + MAX_REQUEST_SIZE = 32768 + + def __init__(self, sftp, handle, mode="r", bufsize=-1): + BufferedFile.__init__(self) + self.sftp = sftp + self.handle = handle + BufferedFile._set_mode(self, mode, bufsize) + self.pipelined = False + self._prefetching = False + self._prefetch_done = False + self._prefetch_data = {} + self._prefetch_extents = {} + self._prefetch_lock = threading.Lock() + self._saved_exception = None + self._reqs = deque() + + def __del__(self): + self._close(async_=True) + + def close(self): + """ + Close the file. + """ + self._close(async_=False) + + def _close(self, async_=False): + # We allow double-close without signaling an error, because real + # Python file objects do. However, we must protect against actually + # sending multiple CMD_CLOSE packets, because after we close our + # handle, the same handle may be re-allocated by the server, and we + # may end up mysteriously closing some random other file. (This is + # especially important because we unconditionally call close() from + # __del__.) + if self._closed: + return + self.sftp._log(DEBUG, "close({})".format(u(hexlify(self.handle)))) + if self.pipelined: + self.sftp._finish_responses(self) + BufferedFile.close(self) + try: + if async_: + # GC'd file handle could be called from an arbitrary thread + # -- don't wait for a response + self.sftp._async_request(type(None), CMD_CLOSE, self.handle) + else: + self.sftp._request(CMD_CLOSE, self.handle) + except EOFError: + # may have outlived the Transport connection + pass + except (IOError, socket.error): + # may have outlived the Transport connection + pass + + def _data_in_prefetch_requests(self, offset, size): + k = [ + x for x in list(self._prefetch_extents.values()) if x[0] <= offset + ] + if len(k) == 0: + return False + k.sort(key=lambda x: x[0]) + buf_offset, buf_size = k[-1] + if buf_offset + buf_size <= offset: + # prefetch request ends before this one begins + return False + if buf_offset + buf_size >= offset + size: + # inclusive + return True + # well, we have part of the request. see if another chunk has + # the rest. + return self._data_in_prefetch_requests( + buf_offset + buf_size, offset + size - buf_offset - buf_size + ) + + def _data_in_prefetch_buffers(self, offset): + """ + if a block of data is present in the prefetch buffers, at the given + offset, return the offset of the relevant prefetch buffer. otherwise, + return None. this guarantees nothing about the number of bytes + collected in the prefetch buffer so far. + """ + k = [i for i in self._prefetch_data.keys() if i <= offset] + if len(k) == 0: + return None + index = max(k) + buf_offset = offset - index + if buf_offset >= len(self._prefetch_data[index]): + # it's not here + return None + return index + + def _read_prefetch(self, size): + """ + read data out of the prefetch buffer, if possible. if the data isn't + in the buffer, return None. otherwise, behaves like a normal read. + """ + # while not closed, and haven't fetched past the current position, + # and haven't reached EOF... + while True: + offset = self._data_in_prefetch_buffers(self._realpos) + if offset is not None: + break + if self._prefetch_done or self._closed: + break + self.sftp._read_response() + self._check_exception() + if offset is None: + self._prefetching = False + return None + prefetch = self._prefetch_data[offset] + del self._prefetch_data[offset] + + buf_offset = self._realpos - offset + if buf_offset > 0: + self._prefetch_data[offset] = prefetch[:buf_offset] + prefetch = prefetch[buf_offset:] + if size < len(prefetch): + self._prefetch_data[self._realpos + size] = prefetch[size:] + prefetch = prefetch[:size] + return prefetch + + def _read(self, size): + size = min(size, self.MAX_REQUEST_SIZE) + if self._prefetching: + data = self._read_prefetch(size) + if data is not None: + return data + t, msg = self.sftp._request( + CMD_READ, self.handle, int64(self._realpos), int(size) + ) + if t != CMD_DATA: + raise SFTPError("Expected data") + return msg.get_string() + + def _write(self, data): + # may write less than requested if it would exceed max packet size + chunk = min(len(data), self.MAX_REQUEST_SIZE) + sftp_async_request = self.sftp._async_request( + type(None), + CMD_WRITE, + self.handle, + int64(self._realpos), + data[:chunk], + ) + self._reqs.append(sftp_async_request) + if not self.pipelined or ( + len(self._reqs) > 100 and self.sftp.sock.recv_ready() + ): + while len(self._reqs): + req = self._reqs.popleft() + t, msg = self.sftp._read_response(req) + if t != CMD_STATUS: + raise SFTPError("Expected status") + # convert_status already called + return chunk + + def settimeout(self, timeout): + """ + Set a timeout on read/write operations on the underlying socket or + ssh `.Channel`. + + :param float timeout: + seconds to wait for a pending read/write operation before raising + ``socket.timeout``, or ``None`` for no timeout + + .. seealso:: `.Channel.settimeout` + """ + self.sftp.sock.settimeout(timeout) + + def gettimeout(self): + """ + Returns the timeout in seconds (as a `float`) associated with the + socket or ssh `.Channel` used for this file. + + .. seealso:: `.Channel.gettimeout` + """ + return self.sftp.sock.gettimeout() + + def setblocking(self, blocking): + """ + Set blocking or non-blocking mode on the underiying socket or ssh + `.Channel`. + + :param int blocking: + 0 to set non-blocking mode; non-0 to set blocking mode. + + .. seealso:: `.Channel.setblocking` + """ + self.sftp.sock.setblocking(blocking) + + def seekable(self): + """ + Check if the file supports random access. + + :return: + `True` if the file supports random access. If `False`, + :meth:`seek` will raise an exception + """ + return True + + def seek(self, offset, whence=0): + """ + Set the file's current position. + + See `file.seek` for details. + """ + self.flush() + if whence == self.SEEK_SET: + self._realpos = self._pos = offset + elif whence == self.SEEK_CUR: + self._pos += offset + self._realpos = self._pos + else: + self._realpos = self._pos = self._get_size() + offset + self._rbuffer = bytes() + + def stat(self): + """ + Retrieve information about this file from the remote system. This is + exactly like `.SFTPClient.stat`, except that it operates on an + already-open file. + + :returns: + an `.SFTPAttributes` object containing attributes about this file. + """ + t, msg = self.sftp._request(CMD_FSTAT, self.handle) + if t != CMD_ATTRS: + raise SFTPError("Expected attributes") + return SFTPAttributes._from_msg(msg) + + def chmod(self, mode): + """ + Change the mode (permissions) of this file. The permissions are + unix-style and identical to those used by Python's `os.chmod` + function. + + :param int mode: new permissions + """ + self.sftp._log( + DEBUG, "chmod({}, {!r})".format(hexlify(self.handle), mode) + ) + attr = SFTPAttributes() + attr.st_mode = mode + self.sftp._request(CMD_FSETSTAT, self.handle, attr) + + def chown(self, uid, gid): + """ + Change the owner (``uid``) and group (``gid``) of this file. As with + Python's `os.chown` function, you must pass both arguments, so if you + only want to change one, use `stat` first to retrieve the current + owner and group. + + :param int uid: new owner's uid + :param int gid: new group id + """ + self.sftp._log( + DEBUG, + "chown({}, {!r}, {!r})".format(hexlify(self.handle), uid, gid), + ) + attr = SFTPAttributes() + attr.st_uid, attr.st_gid = uid, gid + self.sftp._request(CMD_FSETSTAT, self.handle, attr) + + def utime(self, times): + """ + Set the access and modified times of this file. If + ``times`` is ``None``, then the file's access and modified times are + set to the current time. Otherwise, ``times`` must be a 2-tuple of + numbers, of the form ``(atime, mtime)``, which is used to set the + access and modified times, respectively. This bizarre API is mimicked + from Python for the sake of consistency -- I apologize. + + :param tuple times: + ``None`` or a tuple of (access time, modified time) in standard + internet epoch time (seconds since 01 January 1970 GMT) + """ + if times is None: + times = (time.time(), time.time()) + self.sftp._log( + DEBUG, "utime({}, {!r})".format(hexlify(self.handle), times) + ) + attr = SFTPAttributes() + attr.st_atime, attr.st_mtime = times + self.sftp._request(CMD_FSETSTAT, self.handle, attr) + + def truncate(self, size): + """ + Change the size of this file. This usually extends + or shrinks the size of the file, just like the ``truncate()`` method on + Python file objects. + + :param size: the new size of the file + """ + self.sftp._log( + DEBUG, "truncate({}, {!r})".format(hexlify(self.handle), size) + ) + attr = SFTPAttributes() + attr.st_size = size + self.sftp._request(CMD_FSETSTAT, self.handle, attr) + + def check(self, hash_algorithm, offset=0, length=0, block_size=0): + """ + Ask the server for a hash of a section of this file. This can be used + to verify a successful upload or download, or for various rsync-like + operations. + + The file is hashed from ``offset``, for ``length`` bytes. + If ``length`` is 0, the remainder of the file is hashed. Thus, if both + ``offset`` and ``length`` are zero, the entire file is hashed. + + Normally, ``block_size`` will be 0 (the default), and this method will + return a byte string representing the requested hash (for example, a + string of length 16 for MD5, or 20 for SHA-1). If a non-zero + ``block_size`` is given, each chunk of the file (from ``offset`` to + ``offset + length``) of ``block_size`` bytes is computed as a separate + hash. The hash results are all concatenated and returned as a single + string. + + For example, ``check('sha1', 0, 1024, 512)`` will return a string of + length 40. The first 20 bytes will be the SHA-1 of the first 512 bytes + of the file, and the last 20 bytes will be the SHA-1 of the next 512 + bytes. + + :param str hash_algorithm: + the name of the hash algorithm to use (normally ``"sha1"`` or + ``"md5"``) + :param offset: + offset into the file to begin hashing (0 means to start from the + beginning) + :param length: + number of bytes to hash (0 means continue to the end of the file) + :param int block_size: + number of bytes to hash per result (must not be less than 256; 0 + means to compute only one hash of the entire segment) + :return: + `str` of bytes representing the hash of each block, concatenated + together + + :raises: + ``IOError`` -- if the server doesn't support the "check-file" + extension, or possibly doesn't support the hash algorithm requested + + .. note:: Many (most?) servers don't support this extension yet. + + .. versionadded:: 1.4 + """ + t, msg = self.sftp._request( + CMD_EXTENDED, + "check-file", + self.handle, + hash_algorithm, + int64(offset), + int64(length), + block_size, + ) + msg.get_text() # ext + msg.get_text() # alg + data = msg.get_remainder() + return data + + def set_pipelined(self, pipelined=True): + """ + Turn on/off the pipelining of write operations to this file. When + pipelining is on, paramiko won't wait for the server response after + each write operation. Instead, they're collected as they come in. At + the first non-write operation (including `.close`), all remaining + server responses are collected. This means that if there was an error + with one of your later writes, an exception might be thrown from within + `.close` instead of `.write`. + + By default, files are not pipelined. + + :param bool pipelined: + ``True`` if pipelining should be turned on for this file; ``False`` + otherwise + + .. versionadded:: 1.5 + """ + self.pipelined = pipelined + + def prefetch(self, file_size=None, max_concurrent_requests=None): + """ + Pre-fetch the remaining contents of this file in anticipation of future + `.read` calls. If reading the entire file, pre-fetching can + dramatically improve the download speed by avoiding roundtrip latency. + The file's contents are incrementally buffered in a background thread. + + The prefetched data is stored in a buffer until read via the `.read` + method. Once data has been read, it's removed from the buffer. The + data may be read in a random order (using `.seek`); chunks of the + buffer that haven't been read will continue to be buffered. + + :param int file_size: + When this is ``None`` (the default), this method calls `stat` to + determine the remote file size. In some situations, doing so can + cause exceptions or hangs (see `#562 + `_); as a + workaround, one may call `stat` explicitly and pass its value in + via this parameter. + :param int max_concurrent_requests: + The maximum number of concurrent read requests to prefetch. See + `.SFTPClient.get` (its ``max_concurrent_prefetch_requests`` param) + for details. + + .. versionadded:: 1.5.1 + .. versionchanged:: 1.16.0 + The ``file_size`` parameter was added (with no default value). + .. versionchanged:: 1.16.1 + The ``file_size`` parameter was made optional for backwards + compatibility. + .. versionchanged:: 3.3 + Added ``max_concurrent_requests``. + """ + if file_size is None: + file_size = self.stat().st_size + + # queue up async reads for the rest of the file + chunks = [] + n = self._realpos + while n < file_size: + chunk = min(self.MAX_REQUEST_SIZE, file_size - n) + chunks.append((n, chunk)) + n += chunk + if len(chunks) > 0: + self._start_prefetch(chunks, max_concurrent_requests) + + def readv(self, chunks, max_concurrent_prefetch_requests=None): + """ + Read a set of blocks from the file by (offset, length). This is more + efficient than doing a series of `.seek` and `.read` calls, since the + prefetch machinery is used to retrieve all the requested blocks at + once. + + :param chunks: + a list of ``(offset, length)`` tuples indicating which sections of + the file to read + :param int max_concurrent_prefetch_requests: + The maximum number of concurrent read requests to prefetch. See + `.SFTPClient.get` (its ``max_concurrent_prefetch_requests`` param) + for details. + :return: a list of blocks read, in the same order as in ``chunks`` + + .. versionadded:: 1.5.4 + .. versionchanged:: 3.3 + Added ``max_concurrent_prefetch_requests``. + """ + self.sftp._log( + DEBUG, "readv({}, {!r})".format(hexlify(self.handle), chunks) + ) + + read_chunks = [] + for offset, size in chunks: + # don't fetch data that's already in the prefetch buffer + if self._data_in_prefetch_buffers( + offset + ) or self._data_in_prefetch_requests(offset, size): + continue + + # break up anything larger than the max read size + while size > 0: + chunk_size = min(size, self.MAX_REQUEST_SIZE) + read_chunks.append((offset, chunk_size)) + offset += chunk_size + size -= chunk_size + + self._start_prefetch(read_chunks, max_concurrent_prefetch_requests) + # now we can just devolve to a bunch of read()s :) + for x in chunks: + self.seek(x[0]) + yield self.read(x[1]) + + # ...internals... + + def _get_size(self): + try: + return self.stat().st_size + except: + return 0 + + def _start_prefetch(self, chunks, max_concurrent_requests=None): + self._prefetching = True + self._prefetch_done = False + + t = threading.Thread( + target=self._prefetch_thread, + args=(chunks, max_concurrent_requests), + ) + t.daemon = True + t.start() + + def _prefetch_thread(self, chunks, max_concurrent_requests): + # do these read requests in a temporary thread because there may be + # a lot of them, so it may block. + for offset, length in chunks: + # Limit the number of concurrent requests in a busy-loop + if max_concurrent_requests is not None: + while True: + with self._prefetch_lock: + pf_len = len(self._prefetch_extents) + if pf_len < max_concurrent_requests: + break + time.sleep(io_sleep) + + num = self.sftp._async_request( + self, CMD_READ, self.handle, int64(offset), int(length) + ) + with self._prefetch_lock: + self._prefetch_extents[num] = (offset, length) + + def _async_response(self, t, msg, num): + if t == CMD_STATUS: + # save exception and re-raise it on next file operation + try: + self.sftp._convert_status(msg) + except Exception as e: + self._saved_exception = e + return + if t != CMD_DATA: + raise SFTPError("Expected data") + data = msg.get_string() + while True: + with self._prefetch_lock: + # spin if in race with _prefetch_thread + if num in self._prefetch_extents: + offset, length = self._prefetch_extents[num] + self._prefetch_data[offset] = data + del self._prefetch_extents[num] + if len(self._prefetch_extents) == 0: + self._prefetch_done = True + break + + def _check_exception(self): + """if there's a saved exception, raise & clear it""" + if self._saved_exception is not None: + x = self._saved_exception + self._saved_exception = None + raise x diff --git a/.venv/lib/python3.9/site-packages/paramiko/sftp_handle.py b/.venv/lib/python3.9/site-packages/paramiko/sftp_handle.py new file mode 100644 index 0000000..b204652 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/sftp_handle.py @@ -0,0 +1,196 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Abstraction of an SFTP file handle (for server mode). +""" + +import os +from paramiko.sftp import SFTP_OP_UNSUPPORTED, SFTP_OK +from paramiko.util import ClosingContextManager + + +class SFTPHandle(ClosingContextManager): + """ + Abstract object representing a handle to an open file (or folder) in an + SFTP server implementation. Each handle has a string representation used + by the client to refer to the underlying file. + + Server implementations can (and should) subclass SFTPHandle to implement + features of a file handle, like `stat` or `chattr`. + + Instances of this class may be used as context managers. + """ + + def __init__(self, flags=0): + """ + Create a new file handle representing a local file being served over + SFTP. If ``flags`` is passed in, it's used to determine if the file + is open in append mode. + + :param int flags: optional flags as passed to + `.SFTPServerInterface.open` + """ + self.__flags = flags + self.__name = None + # only for handles to folders: + self.__files = {} + self.__tell = None + + def close(self): + """ + When a client closes a file, this method is called on the handle. + Normally you would use this method to close the underlying OS level + file object(s). + + The default implementation checks for attributes on ``self`` named + ``readfile`` and/or ``writefile``, and if either or both are present, + their ``close()`` methods are called. This means that if you are + using the default implementations of `read` and `write`, this + method's default implementation should be fine also. + """ + readfile = getattr(self, "readfile", None) + if readfile is not None: + readfile.close() + writefile = getattr(self, "writefile", None) + if writefile is not None: + writefile.close() + + def read(self, offset, length): + """ + Read up to ``length`` bytes from this file, starting at position + ``offset``. The offset may be a Python long, since SFTP allows it + to be 64 bits. + + If the end of the file has been reached, this method may return an + empty string to signify EOF, or it may also return ``SFTP_EOF``. + + The default implementation checks for an attribute on ``self`` named + ``readfile``, and if present, performs the read operation on the Python + file-like object found there. (This is meant as a time saver for the + common case where you are wrapping a Python file object.) + + :param offset: position in the file to start reading from. + :param int length: number of bytes to attempt to read. + :return: the `bytes` read, or an error code `int`. + """ + readfile = getattr(self, "readfile", None) + if readfile is None: + return SFTP_OP_UNSUPPORTED + try: + if self.__tell is None: + self.__tell = readfile.tell() + if offset != self.__tell: + readfile.seek(offset) + self.__tell = offset + data = readfile.read(length) + except IOError as e: + self.__tell = None + return SFTPServer.convert_errno(e.errno) + self.__tell += len(data) + return data + + def write(self, offset, data): + """ + Write ``data`` into this file at position ``offset``. Extending the + file past its original end is expected. Unlike Python's normal + ``write()`` methods, this method cannot do a partial write: it must + write all of ``data`` or else return an error. + + The default implementation checks for an attribute on ``self`` named + ``writefile``, and if present, performs the write operation on the + Python file-like object found there. The attribute is named + differently from ``readfile`` to make it easy to implement read-only + (or write-only) files, but if both attributes are present, they should + refer to the same file. + + :param offset: position in the file to start reading from. + :param bytes data: data to write into the file. + :return: an SFTP error code like ``SFTP_OK``. + """ + writefile = getattr(self, "writefile", None) + if writefile is None: + return SFTP_OP_UNSUPPORTED + try: + # in append mode, don't care about seeking + if (self.__flags & os.O_APPEND) == 0: + if self.__tell is None: + self.__tell = writefile.tell() + if offset != self.__tell: + writefile.seek(offset) + self.__tell = offset + writefile.write(data) + writefile.flush() + except IOError as e: + self.__tell = None + return SFTPServer.convert_errno(e.errno) + if self.__tell is not None: + self.__tell += len(data) + return SFTP_OK + + def stat(self): + """ + Return an `.SFTPAttributes` object referring to this open file, or an + error code. This is equivalent to `.SFTPServerInterface.stat`, except + it's called on an open file instead of a path. + + :return: + an attributes object for the given file, or an SFTP error code + (like ``SFTP_PERMISSION_DENIED``). + :rtype: `.SFTPAttributes` or error code + """ + return SFTP_OP_UNSUPPORTED + + def chattr(self, attr): + """ + Change the attributes of this file. The ``attr`` object will contain + only those fields provided by the client in its request, so you should + check for the presence of fields before using them. + + :param .SFTPAttributes attr: the attributes to change on this file. + :return: an `int` error code like ``SFTP_OK``. + """ + return SFTP_OP_UNSUPPORTED + + # ...internals... + + def _set_files(self, files): + """ + Used by the SFTP server code to cache a directory listing. (In + the SFTP protocol, listing a directory is a multi-stage process + requiring a temporary handle.) + """ + self.__files = files + + def _get_next_files(self): + """ + Used by the SFTP server code to retrieve a cached directory + listing. + """ + fnlist = self.__files[:16] + self.__files = self.__files[16:] + return fnlist + + def _get_name(self): + return self.__name + + def _set_name(self, name): + self.__name = name + + +from paramiko.sftp_server import SFTPServer diff --git a/.venv/lib/python3.9/site-packages/paramiko/sftp_server.py b/.venv/lib/python3.9/site-packages/paramiko/sftp_server.py new file mode 100644 index 0000000..dff7d90 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/sftp_server.py @@ -0,0 +1,538 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Server-mode SFTP support. +""" + +import errno +import os +import sys +from hashlib import md5, sha1 + +from paramiko import util +from paramiko.common import DEBUG +from paramiko.server import SubsystemHandler + +# known hash algorithms for the "check-file" extension +from paramiko.sftp import ( + CMD_ATTRS, + CMD_CLOSE, + CMD_DATA, + CMD_EXTENDED, + CMD_EXTENDED_REPLY, + CMD_FSETSTAT, + CMD_FSTAT, + CMD_HANDLE, + CMD_LSTAT, + CMD_MKDIR, + CMD_NAME, + CMD_NAMES, + CMD_OPEN, + CMD_OPENDIR, + CMD_READ, + CMD_READDIR, + CMD_READLINK, + CMD_REALPATH, + CMD_REMOVE, + CMD_RENAME, + CMD_RMDIR, + CMD_SETSTAT, + CMD_STAT, + CMD_STATUS, + CMD_SYMLINK, + CMD_WRITE, + SFTP_BAD_MESSAGE, + SFTP_DESC, + SFTP_EOF, + SFTP_FAILURE, + SFTP_FLAG_APPEND, + SFTP_FLAG_CREATE, + SFTP_FLAG_EXCL, + SFTP_FLAG_READ, + SFTP_FLAG_TRUNC, + SFTP_FLAG_WRITE, + SFTP_NO_SUCH_FILE, + SFTP_OK, + SFTP_OP_UNSUPPORTED, + SFTP_PERMISSION_DENIED, + BaseSFTP, + Message, + int64, +) +from paramiko.sftp_attr import SFTPAttributes +from paramiko.sftp_si import SFTPServerInterface +from paramiko.util import b + +# TODO: nuke or update w/ newer algs, see below +_hash_class = {"sha1": sha1, "md5": md5} + + +class SFTPServer(BaseSFTP, SubsystemHandler): + """ + Server-side SFTP subsystem support. Since this is a `.SubsystemHandler`, + it can be (and is meant to be) set as the handler for ``"sftp"`` requests. + Use `.Transport.set_subsystem_handler` to activate this class. + """ + + def __init__( + self, + channel, + name, + server, + sftp_si=SFTPServerInterface, + *args, + **kwargs, + ): + """ + The constructor for SFTPServer is meant to be called from within the + `.Transport` as a subsystem handler. ``server`` and any additional + parameters or keyword parameters are passed from the original call to + `.Transport.set_subsystem_handler`. + + :param .Channel channel: channel passed from the `.Transport`. + :param str name: name of the requested subsystem. + :param .ServerInterface server: + the server object associated with this channel and subsystem + :param sftp_si: + a subclass of `.SFTPServerInterface` to use for handling individual + requests. + """ + BaseSFTP.__init__(self) + SubsystemHandler.__init__(self, channel, name, server) + transport = channel.get_transport() + self.logger = util.get_logger(transport.get_log_channel() + ".sftp") + self.ultra_debug = transport.get_hexdump() + self.next_handle = 1 + # map of handle-string to SFTPHandle for files & folders: + self.file_table = {} + self.folder_table = {} + self.server = sftp_si(server, *args, **kwargs) + + def _log(self, level, msg): + if issubclass(type(msg), list): + for m in msg: + super()._log(level, "[chan " + self.sock.get_name() + "] " + m) + else: + super()._log(level, "[chan " + self.sock.get_name() + "] " + msg) + + def start_subsystem(self, name, transport, channel): + self.sock = channel + self._log(DEBUG, "Started sftp server on channel {!r}".format(channel)) + self._send_server_version() + self.server.session_started() + while True: + try: + t, data = self._read_packet() + except EOFError: + self._log(DEBUG, "EOF -- end of session") + return + except Exception as e: + self._log(DEBUG, "Exception on channel: " + str(e)) + self._log(DEBUG, util.tb_strings()) + return + msg = Message(data) + request_number = msg.get_int() + try: + self._process(t, request_number, msg) + except Exception as e: + self._log(DEBUG, "Exception in server processing: " + str(e)) + self._log(DEBUG, util.tb_strings()) + # send some kind of failure message, at least + try: + self._send_status(request_number, SFTP_FAILURE) + except: + pass + + def finish_subsystem(self): + self.server.session_ended() + super().finish_subsystem() + # close any file handles that were left open + # (so we can return them to the OS quickly) + for f in self.file_table.values(): + f.close() + for f in self.folder_table.values(): + f.close() + self.file_table = {} + self.folder_table = {} + + @staticmethod + def convert_errno(e): + """ + Convert an errno value (as from an ``OSError`` or ``IOError``) into a + standard SFTP result code. This is a convenience function for trapping + exceptions in server code and returning an appropriate result. + + :param int e: an errno code, as from ``OSError.errno``. + :return: an `int` SFTP error code like ``SFTP_NO_SUCH_FILE``. + """ + if e == errno.EACCES: + # permission denied + return SFTP_PERMISSION_DENIED + elif (e == errno.ENOENT) or (e == errno.ENOTDIR): + # no such file + return SFTP_NO_SUCH_FILE + else: + return SFTP_FAILURE + + @staticmethod + def set_file_attr(filename, attr): + """ + Change a file's attributes on the local filesystem. The contents of + ``attr`` are used to change the permissions, owner, group ownership, + and/or modification & access time of the file, depending on which + attributes are present in ``attr``. + + This is meant to be a handy helper function for translating SFTP file + requests into local file operations. + + :param str filename: + name of the file to alter (should usually be an absolute path). + :param .SFTPAttributes attr: attributes to change. + """ + if sys.platform != "win32": + # mode operations are meaningless on win32 + if attr._flags & attr.FLAG_PERMISSIONS: + os.chmod(filename, attr.st_mode) + if attr._flags & attr.FLAG_UIDGID: + os.chown(filename, attr.st_uid, attr.st_gid) + if attr._flags & attr.FLAG_AMTIME: + os.utime(filename, (attr.st_atime, attr.st_mtime)) + if attr._flags & attr.FLAG_SIZE: + with open(filename, "w+") as f: + f.truncate(attr.st_size) + + # ...internals... + + def _response(self, request_number, t, *args): + msg = Message() + msg.add_int(request_number) + for item in args: + # NOTE: this is a very silly tiny class used for SFTPFile mostly + if isinstance(item, int64): + msg.add_int64(item) + elif isinstance(item, int): + msg.add_int(item) + elif isinstance(item, (str, bytes)): + msg.add_string(item) + elif type(item) is SFTPAttributes: + item._pack(msg) + else: + raise Exception( + "unknown type for {!r} type {!r}".format(item, type(item)) + ) + self._send_packet(t, msg) + + def _send_handle_response(self, request_number, handle, folder=False): + if not issubclass(type(handle), SFTPHandle): + # must be error code + self._send_status(request_number, handle) + return + handle._set_name(b("hx{:d}".format(self.next_handle))) + self.next_handle += 1 + if folder: + self.folder_table[handle._get_name()] = handle + else: + self.file_table[handle._get_name()] = handle + self._response(request_number, CMD_HANDLE, handle._get_name()) + + def _send_status(self, request_number, code, desc=None): + if desc is None: + try: + desc = SFTP_DESC[code] + except IndexError: + desc = "Unknown" + # some clients expect a "language" tag at the end + # (but don't mind it being blank) + self._response(request_number, CMD_STATUS, code, desc, "") + + def _open_folder(self, request_number, path): + resp = self.server.list_folder(path) + if issubclass(type(resp), list): + # got an actual list of filenames in the folder + folder = SFTPHandle() + folder._set_files(resp) + self._send_handle_response(request_number, folder, True) + return + # must be an error code + self._send_status(request_number, resp) + + def _read_folder(self, request_number, folder): + flist = folder._get_next_files() + if len(flist) == 0: + self._send_status(request_number, SFTP_EOF) + return + msg = Message() + msg.add_int(request_number) + msg.add_int(len(flist)) + for attr in flist: + msg.add_string(attr.filename) + msg.add_string(attr) + attr._pack(msg) + self._send_packet(CMD_NAME, msg) + + def _check_file(self, request_number, msg): + # this extension actually comes from v6 protocol, but since it's an + # extension, i feel like we can reasonably support it backported. + # it's very useful for verifying uploaded files or checking for + # rsync-like differences between local and remote files. + handle = msg.get_binary() + alg_list = msg.get_list() + start = msg.get_int64() + length = msg.get_int64() + block_size = msg.get_int() + if handle not in self.file_table: + self._send_status( + request_number, SFTP_BAD_MESSAGE, "Invalid handle" + ) + return + f = self.file_table[handle] + for x in alg_list: + # TODO: this only contains sha1 and md5 so uh, is this extension + # actually supported anymore? do we need to update the map for + # newer algos instead? other? + if x in _hash_class: + algname = x + alg = _hash_class[x] + break + else: + self._send_status( + request_number, SFTP_FAILURE, "No supported hash types found" + ) + return + if length == 0: + st = f.stat() + if not issubclass(type(st), SFTPAttributes): + self._send_status(request_number, st, "Unable to stat file") + return + length = st.st_size - start + if block_size == 0: + block_size = length + if block_size < 256: + self._send_status( + request_number, SFTP_FAILURE, "Block size too small" + ) + return + + sum_out = bytes() + offset = start + while offset < start + length: + blocklen = min(block_size, start + length - offset) + # don't try to read more than about 64KB at a time + chunklen = min(blocklen, 65536) + count = 0 + hash_obj = alg() + while count < blocklen: + data = f.read(offset, chunklen) + if not isinstance(data, bytes): + self._send_status( + request_number, data, "Unable to hash file" + ) + return + hash_obj.update(data) + count += len(data) + offset += count + sum_out += hash_obj.digest() + + msg = Message() + msg.add_int(request_number) + msg.add_string("check-file") + msg.add_string(algname) + msg.add_bytes(sum_out) + self._send_packet(CMD_EXTENDED_REPLY, msg) + + def _convert_pflags(self, pflags): + """convert SFTP-style open() flags to Python's os.open() flags""" + if (pflags & SFTP_FLAG_READ) and (pflags & SFTP_FLAG_WRITE): + flags = os.O_RDWR + elif pflags & SFTP_FLAG_WRITE: + flags = os.O_WRONLY + else: + flags = os.O_RDONLY + if pflags & SFTP_FLAG_APPEND: + flags |= os.O_APPEND + if pflags & SFTP_FLAG_CREATE: + flags |= os.O_CREAT + if pflags & SFTP_FLAG_TRUNC: + flags |= os.O_TRUNC + if pflags & SFTP_FLAG_EXCL: + flags |= os.O_EXCL + return flags + + def _process(self, t, request_number, msg): + self._log(DEBUG, "Request: {}".format(CMD_NAMES[t])) + if t == CMD_OPEN: + path = msg.get_text() + flags = self._convert_pflags(msg.get_int()) + attr = SFTPAttributes._from_msg(msg) + self._send_handle_response( + request_number, self.server.open(path, flags, attr) + ) + elif t == CMD_CLOSE: + handle = msg.get_binary() + if handle in self.folder_table: + del self.folder_table[handle] + self._send_status(request_number, SFTP_OK) + return + if handle in self.file_table: + self.file_table[handle].close() + del self.file_table[handle] + self._send_status(request_number, SFTP_OK) + return + self._send_status( + request_number, SFTP_BAD_MESSAGE, "Invalid handle" + ) + elif t == CMD_READ: + handle = msg.get_binary() + offset = msg.get_int64() + length = msg.get_int() + if handle not in self.file_table: + self._send_status( + request_number, SFTP_BAD_MESSAGE, "Invalid handle" + ) + return + data = self.file_table[handle].read(offset, length) + if isinstance(data, (bytes, str)): + if len(data) == 0: + self._send_status(request_number, SFTP_EOF) + else: + self._response(request_number, CMD_DATA, data) + else: + self._send_status(request_number, data) + elif t == CMD_WRITE: + handle = msg.get_binary() + offset = msg.get_int64() + data = msg.get_binary() + if handle not in self.file_table: + self._send_status( + request_number, SFTP_BAD_MESSAGE, "Invalid handle" + ) + return + self._send_status( + request_number, self.file_table[handle].write(offset, data) + ) + elif t == CMD_REMOVE: + path = msg.get_text() + self._send_status(request_number, self.server.remove(path)) + elif t == CMD_RENAME: + oldpath = msg.get_text() + newpath = msg.get_text() + self._send_status( + request_number, self.server.rename(oldpath, newpath) + ) + elif t == CMD_MKDIR: + path = msg.get_text() + attr = SFTPAttributes._from_msg(msg) + self._send_status(request_number, self.server.mkdir(path, attr)) + elif t == CMD_RMDIR: + path = msg.get_text() + self._send_status(request_number, self.server.rmdir(path)) + elif t == CMD_OPENDIR: + path = msg.get_text() + self._open_folder(request_number, path) + return + elif t == CMD_READDIR: + handle = msg.get_binary() + if handle not in self.folder_table: + self._send_status( + request_number, SFTP_BAD_MESSAGE, "Invalid handle" + ) + return + folder = self.folder_table[handle] + self._read_folder(request_number, folder) + elif t == CMD_STAT: + path = msg.get_text() + resp = self.server.stat(path) + if issubclass(type(resp), SFTPAttributes): + self._response(request_number, CMD_ATTRS, resp) + else: + self._send_status(request_number, resp) + elif t == CMD_LSTAT: + path = msg.get_text() + resp = self.server.lstat(path) + if issubclass(type(resp), SFTPAttributes): + self._response(request_number, CMD_ATTRS, resp) + else: + self._send_status(request_number, resp) + elif t == CMD_FSTAT: + handle = msg.get_binary() + if handle not in self.file_table: + self._send_status( + request_number, SFTP_BAD_MESSAGE, "Invalid handle" + ) + return + resp = self.file_table[handle].stat() + if issubclass(type(resp), SFTPAttributes): + self._response(request_number, CMD_ATTRS, resp) + else: + self._send_status(request_number, resp) + elif t == CMD_SETSTAT: + path = msg.get_text() + attr = SFTPAttributes._from_msg(msg) + self._send_status(request_number, self.server.chattr(path, attr)) + elif t == CMD_FSETSTAT: + handle = msg.get_binary() + attr = SFTPAttributes._from_msg(msg) + if handle not in self.file_table: + self._response( + request_number, SFTP_BAD_MESSAGE, "Invalid handle" + ) + return + self._send_status( + request_number, self.file_table[handle].chattr(attr) + ) + elif t == CMD_READLINK: + path = msg.get_text() + resp = self.server.readlink(path) + if isinstance(resp, (bytes, str)): + self._response( + request_number, CMD_NAME, 1, resp, "", SFTPAttributes() + ) + else: + self._send_status(request_number, resp) + elif t == CMD_SYMLINK: + # the sftp 2 draft is incorrect here! + # path always follows target_path + target_path = msg.get_text() + path = msg.get_text() + self._send_status( + request_number, self.server.symlink(target_path, path) + ) + elif t == CMD_REALPATH: + path = msg.get_text() + rpath = self.server.canonicalize(path) + self._response( + request_number, CMD_NAME, 1, rpath, "", SFTPAttributes() + ) + elif t == CMD_EXTENDED: + tag = msg.get_text() + if tag == "check-file": + self._check_file(request_number, msg) + elif tag == "posix-rename@openssh.com": + oldpath = msg.get_text() + newpath = msg.get_text() + self._send_status( + request_number, self.server.posix_rename(oldpath, newpath) + ) + else: + self._send_status(request_number, SFTP_OP_UNSUPPORTED) + else: + self._send_status(request_number, SFTP_OP_UNSUPPORTED) + + +from paramiko.sftp_handle import SFTPHandle diff --git a/.venv/lib/python3.9/site-packages/paramiko/sftp_si.py b/.venv/lib/python3.9/site-packages/paramiko/sftp_si.py new file mode 100644 index 0000000..72b5db9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/sftp_si.py @@ -0,0 +1,316 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +An interface to override for SFTP server support. +""" + +import os +import sys +from paramiko.sftp import SFTP_OP_UNSUPPORTED + + +class SFTPServerInterface: + """ + This class defines an interface for controlling the behavior of paramiko + when using the `.SFTPServer` subsystem to provide an SFTP server. + + Methods on this class are called from the SFTP session's thread, so you can + block as long as necessary without affecting other sessions (even other + SFTP sessions). However, raising an exception will usually cause the SFTP + session to abruptly end, so you will usually want to catch exceptions and + return an appropriate error code. + + All paths are in string form instead of unicode because not all SFTP + clients & servers obey the requirement that paths be encoded in UTF-8. + """ + + def __init__(self, server, *args, **kwargs): + """ + Create a new SFTPServerInterface object. This method does nothing by + default and is meant to be overridden by subclasses. + + :param .ServerInterface server: + the server object associated with this channel and SFTP subsystem + """ + super().__init__(*args, **kwargs) + + def session_started(self): + """ + The SFTP server session has just started. This method is meant to be + overridden to perform any necessary setup before handling callbacks + from SFTP operations. + """ + pass + + def session_ended(self): + """ + The SFTP server session has just ended, either cleanly or via an + exception. This method is meant to be overridden to perform any + necessary cleanup before this `.SFTPServerInterface` object is + destroyed. + """ + pass + + def open(self, path, flags, attr): + """ + Open a file on the server and create a handle for future operations + on that file. On success, a new object subclassed from `.SFTPHandle` + should be returned. This handle will be used for future operations + on the file (read, write, etc). On failure, an error code such as + ``SFTP_PERMISSION_DENIED`` should be returned. + + ``flags`` contains the requested mode for opening (read-only, + write-append, etc) as a bitset of flags from the ``os`` module: + + - ``os.O_RDONLY`` + - ``os.O_WRONLY`` + - ``os.O_RDWR`` + - ``os.O_APPEND`` + - ``os.O_CREAT`` + - ``os.O_TRUNC`` + - ``os.O_EXCL`` + + (One of ``os.O_RDONLY``, ``os.O_WRONLY``, or ``os.O_RDWR`` will always + be set.) + + The ``attr`` object contains requested attributes of the file if it + has to be created. Some or all attribute fields may be missing if + the client didn't specify them. + + .. note:: The SFTP protocol defines all files to be in "binary" mode. + There is no equivalent to Python's "text" mode. + + :param str path: + the requested path (relative or absolute) of the file to be opened. + :param int flags: + flags or'd together from the ``os`` module indicating the requested + mode for opening the file. + :param .SFTPAttributes attr: + requested attributes of the file if it is newly created. + :return: a new `.SFTPHandle` or error code. + """ + return SFTP_OP_UNSUPPORTED + + def list_folder(self, path): + """ + Return a list of files within a given folder. The ``path`` will use + posix notation (``"/"`` separates folder names) and may be an absolute + or relative path. + + The list of files is expected to be a list of `.SFTPAttributes` + objects, which are similar in structure to the objects returned by + ``os.stat``. In addition, each object should have its ``filename`` + field filled in, since this is important to a directory listing and + not normally present in ``os.stat`` results. The method + `.SFTPAttributes.from_stat` will usually do what you want. + + In case of an error, you should return one of the ``SFTP_*`` error + codes, such as ``SFTP_PERMISSION_DENIED``. + + :param str path: the requested path (relative or absolute) to be + listed. + :return: + a list of the files in the given folder, using `.SFTPAttributes` + objects. + + .. note:: + You should normalize the given ``path`` first (see the `os.path` + module) and check appropriate permissions before returning the list + of files. Be careful of malicious clients attempting to use + relative paths to escape restricted folders, if you're doing a + direct translation from the SFTP server path to your local + filesystem. + """ + return SFTP_OP_UNSUPPORTED + + def stat(self, path): + """ + Return an `.SFTPAttributes` object for a path on the server, or an + error code. If your server supports symbolic links (also known as + "aliases"), you should follow them. (`lstat` is the corresponding + call that doesn't follow symlinks/aliases.) + + :param str path: + the requested path (relative or absolute) to fetch file statistics + for. + :return: + an `.SFTPAttributes` object for the given file, or an SFTP error + code (like ``SFTP_PERMISSION_DENIED``). + """ + return SFTP_OP_UNSUPPORTED + + def lstat(self, path): + """ + Return an `.SFTPAttributes` object for a path on the server, or an + error code. If your server supports symbolic links (also known as + "aliases"), you should not follow them -- instead, you should + return data on the symlink or alias itself. (`stat` is the + corresponding call that follows symlinks/aliases.) + + :param str path: + the requested path (relative or absolute) to fetch file statistics + for. + :type path: str + :return: + an `.SFTPAttributes` object for the given file, or an SFTP error + code (like ``SFTP_PERMISSION_DENIED``). + """ + return SFTP_OP_UNSUPPORTED + + def remove(self, path): + """ + Delete a file, if possible. + + :param str path: + the requested path (relative or absolute) of the file to delete. + :return: an SFTP error code `int` like ``SFTP_OK``. + """ + return SFTP_OP_UNSUPPORTED + + def rename(self, oldpath, newpath): + """ + Rename (or move) a file. The SFTP specification implies that this + method can be used to move an existing file into a different folder, + and since there's no other (easy) way to move files via SFTP, it's + probably a good idea to implement "move" in this method too, even for + files that cross disk partition boundaries, if at all possible. + + .. note:: You should return an error if a file with the same name as + ``newpath`` already exists. (The rename operation should be + non-desctructive.) + + .. note:: + This method implements 'standard' SFTP ``RENAME`` behavior; those + seeking the OpenSSH "POSIX rename" extension behavior should use + `posix_rename`. + + :param str oldpath: + the requested path (relative or absolute) of the existing file. + :param str newpath: the requested new path of the file. + :return: an SFTP error code `int` like ``SFTP_OK``. + """ + return SFTP_OP_UNSUPPORTED + + def posix_rename(self, oldpath, newpath): + """ + Rename (or move) a file, following posix conventions. If newpath + already exists, it will be overwritten. + + :param str oldpath: + the requested path (relative or absolute) of the existing file. + :param str newpath: the requested new path of the file. + :return: an SFTP error code `int` like ``SFTP_OK``. + + :versionadded: 2.2 + """ + return SFTP_OP_UNSUPPORTED + + def mkdir(self, path, attr): + """ + Create a new directory with the given attributes. The ``attr`` + object may be considered a "hint" and ignored. + + The ``attr`` object will contain only those fields provided by the + client in its request, so you should use ``hasattr`` to check for + the presence of fields before using them. In some cases, the ``attr`` + object may be completely empty. + + :param str path: + requested path (relative or absolute) of the new folder. + :param .SFTPAttributes attr: requested attributes of the new folder. + :return: an SFTP error code `int` like ``SFTP_OK``. + """ + return SFTP_OP_UNSUPPORTED + + def rmdir(self, path): + """ + Remove a directory if it exists. The ``path`` should refer to an + existing, empty folder -- otherwise this method should return an + error. + + :param str path: + requested path (relative or absolute) of the folder to remove. + :return: an SFTP error code `int` like ``SFTP_OK``. + """ + return SFTP_OP_UNSUPPORTED + + def chattr(self, path, attr): + """ + Change the attributes of a file. The ``attr`` object will contain + only those fields provided by the client in its request, so you + should check for the presence of fields before using them. + + :param str path: + requested path (relative or absolute) of the file to change. + :param attr: + requested attributes to change on the file (an `.SFTPAttributes` + object) + :return: an error code `int` like ``SFTP_OK``. + """ + return SFTP_OP_UNSUPPORTED + + def canonicalize(self, path): + """ + Return the canonical form of a path on the server. For example, + if the server's home folder is ``/home/foo``, the path + ``"../betty"`` would be canonicalized to ``"/home/betty"``. Note + the obvious security issues: if you're serving files only from a + specific folder, you probably don't want this method to reveal path + names outside that folder. + + You may find the Python methods in ``os.path`` useful, especially + ``os.path.normpath`` and ``os.path.realpath``. + + The default implementation returns ``os.path.normpath('/' + path)``. + """ + if os.path.isabs(path): + out = os.path.normpath(path) + else: + out = os.path.normpath("/" + path) + if sys.platform == "win32": + # on windows, normalize backslashes to sftp/posix format + out = out.replace("\\", "/") + return out + + def readlink(self, path): + """ + Return the target of a symbolic link (or shortcut) on the server. + If the specified path doesn't refer to a symbolic link, an error + should be returned. + + :param str path: path (relative or absolute) of the symbolic link. + :return: + the target `str` path of the symbolic link, or an error code like + ``SFTP_NO_SUCH_FILE``. + """ + return SFTP_OP_UNSUPPORTED + + def symlink(self, target_path, path): + """ + Create a symbolic link on the server, as new pathname ``path``, + with ``target_path`` as the target of the link. + + :param str target_path: + path (relative or absolute) of the target for this new symbolic + link. + :param str path: + path (relative or absolute) of the symbolic link to create. + :return: an error code `int` like ``SFTP_OK``. + """ + return SFTP_OP_UNSUPPORTED diff --git a/.venv/lib/python3.9/site-packages/paramiko/ssh_exception.py b/.venv/lib/python3.9/site-packages/paramiko/ssh_exception.py new file mode 100644 index 0000000..8ce9382 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/ssh_exception.py @@ -0,0 +1,254 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import socket + + +class SSHException(Exception): + """ + Exception raised by failures in SSH2 protocol negotiation or logic errors. + """ + + pass + + +class AuthenticationException(SSHException): + """ + Exception raised when authentication failed for some reason. It may be + possible to retry with different credentials. (Other classes specify more + specific reasons.) + + .. versionadded:: 1.6 + """ + + pass + + +class PasswordRequiredException(AuthenticationException): + """ + Exception raised when a password is needed to unlock a private key file. + """ + + pass + + +class BadAuthenticationType(AuthenticationException): + """ + Exception raised when an authentication type (like password) is used, but + the server isn't allowing that type. (It may only allow public-key, for + example.) + + .. versionadded:: 1.1 + """ + + allowed_types = [] + + # TODO (backwards incompat): remove explanation kwarg + def __init__(self, explanation, types): + # TODO (backwards incompat): remove this supercall unless it's actually + # required for pickling (after fixing pickling) + AuthenticationException.__init__(self, explanation, types) + self.explanation = explanation + self.allowed_types = types + + def __str__(self): + return "{}; allowed types: {!r}".format( + self.explanation, self.allowed_types + ) + + +class PartialAuthentication(AuthenticationException): + """ + An internal exception thrown in the case of partial authentication. + """ + + allowed_types = [] + + def __init__(self, types): + AuthenticationException.__init__(self, types) + self.allowed_types = types + + def __str__(self): + return "Partial authentication; allowed types: {!r}".format( + self.allowed_types + ) + + +# TODO (backwards incompat): stop inheriting from SSHException, move to auth.py +class UnableToAuthenticate(AuthenticationException): + pass + + +class ChannelException(SSHException): + """ + Exception raised when an attempt to open a new `.Channel` fails. + + :param int code: the error code returned by the server + + .. versionadded:: 1.6 + """ + + def __init__(self, code, text): + SSHException.__init__(self, code, text) + self.code = code + self.text = text + + def __str__(self): + return "ChannelException({!r}, {!r})".format(self.code, self.text) + + +class BadHostKeyException(SSHException): + """ + The host key given by the SSH server did not match what we were expecting. + + :param str hostname: the hostname of the SSH server + :param PKey got_key: the host key presented by the server + :param PKey expected_key: the host key expected + + .. versionadded:: 1.6 + """ + + def __init__(self, hostname, got_key, expected_key): + SSHException.__init__(self, hostname, got_key, expected_key) + self.hostname = hostname + self.key = got_key + self.expected_key = expected_key + + def __str__(self): + msg = ( + "Host key for server '{}' does not match: got '{}', expected '{}'" + ) + return msg.format( + self.hostname, + self.key.get_base64(), + self.expected_key.get_base64(), + ) + + +class IncompatiblePeer(SSHException): + """ + A disagreement arose regarding an algorithm required for key exchange. + + .. versionadded:: 2.9 + """ + + # TODO (backwards incompat): consider making this annotate w/ 1..N + # 'missing' algorithms, either just the first one that would halt kex, or + # even updating the Transport logic so we record /all/ that /could/ halt + # kex. + # TODO: update docstrings where this may end up raised so they are more + # specific. + pass + + +class ProxyCommandFailure(SSHException): + """ + The "ProxyCommand" found in the .ssh/config file returned an error. + + :param str command: The command line that is generating this exception. + :param str error: The error captured from the proxy command output. + """ + + def __init__(self, command, error): + SSHException.__init__(self, command, error) + self.command = command + self.error = error + + def __str__(self): + return 'ProxyCommand("{}") returned nonzero exit status: {}'.format( + self.command, self.error + ) + + +class NoValidConnectionsError(socket.error): + """ + Multiple connection attempts were made and no families succeeded. + + This exception class wraps multiple "real" underlying connection errors, + all of which represent failed connection attempts. Because these errors are + not guaranteed to all be of the same error type (i.e. different errno, + `socket.error` subclass, message, etc) we expose a single unified error + message and a ``None`` errno so that instances of this class match most + normal handling of `socket.error` objects. + + To see the wrapped exception objects, access the ``errors`` attribute. + ``errors`` is a dict whose keys are address tuples (e.g. ``('127.0.0.1', + 22)``) and whose values are the exception encountered trying to connect to + that address. + + It is implied/assumed that all the errors given to a single instance of + this class are from connecting to the same hostname + port (and thus that + the differences are in the resolution of the hostname - e.g. IPv4 vs v6). + + .. versionadded:: 1.16 + """ + + def __init__(self, errors): + """ + :param dict errors: + The errors dict to store, as described by class docstring. + """ + addrs = sorted(errors.keys()) + body = ", ".join([x[0] for x in addrs[:-1]]) + tail = addrs[-1][0] + if body: + msg = "Unable to connect to port {0} on {1} or {2}" + else: + msg = "Unable to connect to port {0} on {2}" + super().__init__( + None, + msg.format(addrs[0][1], body, tail), # stand-in for errno + ) + self.errors = errors + + def __reduce__(self): + return (self.__class__, (self.errors,)) + + +class CouldNotCanonicalize(SSHException): + """ + Raised when hostname canonicalization fails & fallback is disabled. + + .. versionadded:: 2.7 + """ + + pass + + +class ConfigParseError(SSHException): + """ + A fatal error was encountered trying to parse SSH config data. + + Typically this means a config file violated the ``ssh_config`` + specification in a manner that requires exiting immediately, such as not + matching ``key = value`` syntax or misusing certain ``Match`` keywords. + + .. versionadded:: 2.7 + """ + + pass + + +class MessageOrderError(SSHException): + """ + Out-of-order protocol messages were received, violating "strict kex" mode. + + .. versionadded:: 3.4 + """ + + pass diff --git a/.venv/lib/python3.9/site-packages/paramiko/transport.py b/.venv/lib/python3.9/site-packages/paramiko/transport.py new file mode 100644 index 0000000..dd23f1f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/transport.py @@ -0,0 +1,3306 @@ +# Copyright (C) 2003-2007 Robey Pointer +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Core protocol implementation +""" + +import os +import socket +import sys +import threading +import time +import weakref +from hashlib import md5, sha1, sha256, sha512 + +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives.ciphers import ( + Cipher, + aead, + algorithms, + modes, +) + +import paramiko +from paramiko import util +from paramiko.auth_handler import AuthHandler, AuthOnlyHandler +from paramiko.channel import Channel +from paramiko.common import ( + CONNECTION_FAILED_CODE, + DEBUG, + DEFAULT_MAX_PACKET_SIZE, + DEFAULT_WINDOW_SIZE, + ERROR, + HIGHEST_USERAUTH_MESSAGE_ID, + INFO, + MAX_WINDOW_SIZE, + MIN_PACKET_SIZE, + MIN_WINDOW_SIZE, + MSG_CHANNEL_CLOSE, + MSG_CHANNEL_DATA, + MSG_CHANNEL_EOF, + MSG_CHANNEL_EXTENDED_DATA, + MSG_CHANNEL_FAILURE, + MSG_CHANNEL_OPEN, + MSG_CHANNEL_OPEN_FAILURE, + MSG_CHANNEL_OPEN_SUCCESS, + MSG_CHANNEL_REQUEST, + MSG_CHANNEL_SUCCESS, + MSG_CHANNEL_WINDOW_ADJUST, + MSG_DEBUG, + MSG_DISCONNECT, + MSG_EXT_INFO, + MSG_GLOBAL_REQUEST, + MSG_IGNORE, + MSG_KEXINIT, + MSG_NAMES, + MSG_NEWKEYS, + MSG_REQUEST_FAILURE, + MSG_REQUEST_SUCCESS, + MSG_SERVICE_ACCEPT, + MSG_UNIMPLEMENTED, + OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED, + OPEN_SUCCEEDED, + WARNING, + byte_ord, + cMSG_CHANNEL_OPEN, + cMSG_CHANNEL_OPEN_FAILURE, + cMSG_CHANNEL_OPEN_SUCCESS, + cMSG_EXT_INFO, + cMSG_GLOBAL_REQUEST, + cMSG_IGNORE, + cMSG_KEXINIT, + cMSG_NEWKEYS, + cMSG_REQUEST_FAILURE, + cMSG_REQUEST_SUCCESS, + cMSG_SERVICE_REQUEST, + cMSG_UNIMPLEMENTED, + xffffffff, +) +from paramiko.compress import ZlibCompressor, ZlibDecompressor +from paramiko.ecdsakey import ECDSAKey +from paramiko.ed25519key import Ed25519Key +from paramiko.kex_curve25519 import KexCurve25519 +from paramiko.kex_ecdh_nist import KexNistp256, KexNistp384, KexNistp521 +from paramiko.kex_gex import KexGexSHA256 +from paramiko.kex_group14 import KexGroup14SHA256 +from paramiko.kex_group16 import KexGroup16SHA512 +from paramiko.message import Message +from paramiko.packet import NeedRekeyException, Packetizer +from paramiko.pkey import PKey +from paramiko.primes import ModulusPack +from paramiko.rsakey import RSAKey +from paramiko.server import ServerInterface +from paramiko.sftp_client import SFTPClient +from paramiko.ssh_exception import ( + BadAuthenticationType, + ChannelException, + IncompatiblePeer, + MessageOrderError, + ProxyCommandFailure, + SSHException, +) +from paramiko.util import ( + ClosingContextManager, + b, + clamp_value, +) + +# TripleDES is moving from `cryptography.hazmat.primitives.ciphers.algorithms` +# in cryptography>=43.0.0 to `cryptography.hazmat.decrepit.ciphers.algorithms` +# It will be removed from `cryptography.hazmat.primitives.ciphers.algorithms` +# in cryptography==48.0.0. +# +# Source References: +# - https://github.com/pyca/cryptography/commit/722a6393e61b3ac +# - https://github.com/pyca/cryptography/pull/11407/files +try: + from cryptography.hazmat.decrepit.ciphers.algorithms import TripleDES +except ImportError: + from cryptography.hazmat.primitives.ciphers.algorithms import TripleDES + + +# for thread cleanup +_active_threads = [] + + +def _join_lingering_threads(): + for thr in _active_threads: + thr.stop_thread() + + +import atexit + +atexit.register(_join_lingering_threads) + + +class Transport(threading.Thread, ClosingContextManager): + """ + An SSH Transport attaches to a stream (usually a socket), negotiates an + encrypted session, authenticates, and then creates stream tunnels, called + `channels <.Channel>`, across the session. Multiple channels can be + multiplexed across a single session (and often are, in the case of port + forwardings). + + Instances of this class may be used as context managers. + """ + + _ENCRYPT = object() + _DECRYPT = object() + + _PROTO_ID = "2.0" + _CLIENT_ID = "paramiko_{}".format(paramiko.__version__) + + # These tuples of algorithm identifiers are in preference order; do not + # reorder without reason! + # NOTE: if you need to modify these, we suggest leveraging the + # `disabled_algorithms` constructor argument (also available in SSHClient) + # instead of monkeypatching or subclassing. + _preferred_ciphers = ( + "aes128-ctr", + "aes192-ctr", + "aes256-ctr", + "aes128-cbc", + "aes192-cbc", + "aes256-cbc", + "3des-cbc", + "aes128-gcm@openssh.com", + "aes256-gcm@openssh.com", + ) + _preferred_macs = ( + "hmac-sha2-256", + "hmac-sha2-512", + "hmac-sha2-256-etm@openssh.com", + "hmac-sha2-512-etm@openssh.com", + "hmac-sha1", + "hmac-md5", + "hmac-sha1-96", + "hmac-md5-96", + ) + # ~= HostKeyAlgorithms in OpenSSH land + _preferred_keys = ( + "ssh-ed25519", + "ecdsa-sha2-nistp256", + "ecdsa-sha2-nistp384", + "ecdsa-sha2-nistp521", + "rsa-sha2-512", + "rsa-sha2-256", + ) + # ~= PubkeyAcceptedAlgorithms + _preferred_pubkeys = ( + "ssh-ed25519", + "ecdsa-sha2-nistp256", + "ecdsa-sha2-nistp384", + "ecdsa-sha2-nistp521", + "rsa-sha2-512", + "rsa-sha2-256", + ) + _preferred_kex = ( + "ecdh-sha2-nistp256", + "ecdh-sha2-nistp384", + "ecdh-sha2-nistp521", + "diffie-hellman-group16-sha512", + "diffie-hellman-group-exchange-sha256", + "diffie-hellman-group14-sha256", + ) + if KexCurve25519.is_available(): + _preferred_kex = ("curve25519-sha256@libssh.org",) + _preferred_kex + _preferred_compression = ("none",) + + _cipher_info = { + "aes128-ctr": { + "class": algorithms.AES, + "mode": modes.CTR, + "block-size": 16, + "key-size": 16, + }, + "aes192-ctr": { + "class": algorithms.AES, + "mode": modes.CTR, + "block-size": 16, + "key-size": 24, + }, + "aes256-ctr": { + "class": algorithms.AES, + "mode": modes.CTR, + "block-size": 16, + "key-size": 32, + }, + "aes128-cbc": { + "class": algorithms.AES, + "mode": modes.CBC, + "block-size": 16, + "key-size": 16, + }, + "aes192-cbc": { + "class": algorithms.AES, + "mode": modes.CBC, + "block-size": 16, + "key-size": 24, + }, + "aes256-cbc": { + "class": algorithms.AES, + "mode": modes.CBC, + "block-size": 16, + "key-size": 32, + }, + "3des-cbc": { + "class": TripleDES, + "mode": modes.CBC, + "block-size": 8, + "key-size": 24, + }, + "aes128-gcm@openssh.com": { + "class": aead.AESGCM, + "block-size": 16, + "iv-size": 12, + "key-size": 16, + "is_aead": True, + }, + "aes256-gcm@openssh.com": { + "class": aead.AESGCM, + "block-size": 16, + "iv-size": 12, + "key-size": 32, + "is_aead": True, + }, + } + + _mac_info = { + "hmac-sha1": {"class": sha1, "size": 20}, + "hmac-sha1-96": {"class": sha1, "size": 12}, + "hmac-sha2-256": {"class": sha256, "size": 32}, + "hmac-sha2-256-etm@openssh.com": {"class": sha256, "size": 32}, + "hmac-sha2-512": {"class": sha512, "size": 64}, + "hmac-sha2-512-etm@openssh.com": {"class": sha512, "size": 64}, + "hmac-md5": {"class": md5, "size": 16}, + "hmac-md5-96": {"class": md5, "size": 12}, + } + + _key_info = { + # TODO: do some downstream uses of this need to be able to 'see' + # ssh-rsa in not-using-SHA1 contexts? + # TODO: NO!!! good. + # TODO: it's used in: + # - Transport._verify_key - verification - do not want ssh-rsa + # - SecurityOptions - only really uses this as a filter for what's + # allowed to be overwritten into its .key_types (which == + # transport._preferred_keys), and since the latter doesn't want ssh-rsa + # in it, this use case doesn't require that string in here either. + # - AuthHandler._generate_key_from_request - server-side auth + # support - is looking at the 'algorithm' field in the request when it + # references this structure, so yup, do not want ssh-rsa + "rsa-sha2-256": RSAKey, + "rsa-sha2-256-cert-v01@openssh.com": RSAKey, + "rsa-sha2-512": RSAKey, + "rsa-sha2-512-cert-v01@openssh.com": RSAKey, + "ecdsa-sha2-nistp256": ECDSAKey, + "ecdsa-sha2-nistp256-cert-v01@openssh.com": ECDSAKey, + "ecdsa-sha2-nistp384": ECDSAKey, + "ecdsa-sha2-nistp384-cert-v01@openssh.com": ECDSAKey, + "ecdsa-sha2-nistp521": ECDSAKey, + "ecdsa-sha2-nistp521-cert-v01@openssh.com": ECDSAKey, + "ssh-ed25519": Ed25519Key, + "ssh-ed25519-cert-v01@openssh.com": Ed25519Key, + } + + _kex_info = { + "diffie-hellman-group-exchange-sha256": KexGexSHA256, + "diffie-hellman-group14-sha256": KexGroup14SHA256, + "diffie-hellman-group16-sha512": KexGroup16SHA512, + "ecdh-sha2-nistp256": KexNistp256, + "ecdh-sha2-nistp384": KexNistp384, + "ecdh-sha2-nistp521": KexNistp521, + } + if KexCurve25519.is_available(): + _kex_info["curve25519-sha256@libssh.org"] = KexCurve25519 + + _compression_info = { + # zlib@openssh.com is just zlib, but only turned on after a successful + # authentication. openssh servers may only offer this type because + # they've had troubles with security holes in zlib in the past. + "zlib@openssh.com": (ZlibCompressor, ZlibDecompressor), + "zlib": (ZlibCompressor, ZlibDecompressor), + "none": (None, None), + } + + _modulus_pack = None + _active_check_timeout = 0.1 + + def __init__( + self, + sock, + default_window_size=DEFAULT_WINDOW_SIZE, + default_max_packet_size=DEFAULT_MAX_PACKET_SIZE, + disabled_algorithms=None, + server_sig_algs=True, + strict_kex=True, + packetizer_class=None, + ): + """ + Create a new SSH session over an existing socket, or socket-like + object. This only creates the `.Transport` object; it doesn't begin + the SSH session yet. Use `connect` or `start_client` to begin a client + session, or `start_server` to begin a server session. + + If the object is not actually a socket, it must have the following + methods: + + - ``send(bytes)``: Writes from 1 to ``len(bytes)`` bytes, and returns + an int representing the number of bytes written. Returns + 0 or raises ``EOFError`` if the stream has been closed. + - ``recv(int)``: Reads from 1 to ``int`` bytes and returns them as a + string. Returns 0 or raises ``EOFError`` if the stream has been + closed. + - ``close()``: Closes the socket. + - ``settimeout(n)``: Sets a (float) timeout on I/O operations. + + For ease of use, you may also pass in an address (as a tuple) or a host + string as the ``sock`` argument. (A host string is a hostname with an + optional port (separated by ``":"``) which will be converted into a + tuple of ``(hostname, port)``.) A socket will be connected to this + address and used for communication. Exceptions from the ``socket`` + call may be thrown in this case. + + .. note:: + Modifying the the window and packet sizes might have adverse + effects on your channels created from this transport. The default + values are the same as in the OpenSSH code base and have been + battle tested. + + :param socket sock: + a socket or socket-like object to create the session over. + :param int default_window_size: + sets the default window size on the transport. (defaults to + 2097152) + :param int default_max_packet_size: + sets the default max packet size on the transport. (defaults to + 32768) + :param dict disabled_algorithms: + If given, must be a dictionary mapping algorithm type to an + iterable of algorithm identifiers, which will be disabled for the + lifetime of the transport. + + Keys should match the last word in the class' builtin algorithm + tuple attributes, such as ``"ciphers"`` to disable names within + ``_preferred_ciphers``; or ``"kex"`` to disable something defined + inside ``_preferred_kex``. Values should exactly match members of + the matching attribute. + + For example, if you need to disable + ``diffie-hellman-group16-sha512`` key exchange (perhaps because + your code talks to a server which implements it differently from + Paramiko), specify ``disabled_algorithms={"kex": + ["diffie-hellman-group16-sha512"]}``. + :param bool server_sig_algs: + Whether to send an extra message to compatible clients, in server + mode, with a list of supported pubkey algorithms. Default: + ``True``. + :param bool strict_kex: + Whether to advertise (and implement, if client also advertises + support for) a "strict kex" mode for safer handshaking. Default: + ``True``. + :param packetizer_class: + Which class to use for instantiating the internal packet handler. + Default: ``None`` (i.e.: use `Packetizer` as normal). + + .. versionchanged:: 1.15 + Added the ``default_window_size`` and ``default_max_packet_size`` + arguments. + .. versionchanged:: 2.6 + Added the ``disabled_algorithms`` kwarg. + .. versionchanged:: 2.9 + Added the ``server_sig_algs`` kwarg. + .. versionchanged:: 3.4 + Added the ``strict_kex`` kwarg. + .. versionchanged:: 3.4 + Added the ``packetizer_class`` kwarg. + """ + self.active = False + self.hostname = None + self.server_extensions = {} + self.advertise_strict_kex = strict_kex + self.agreed_on_strict_kex = False + + # TODO: these two overrides on sock's type should go away sometime, too + # many ways to do it! + if isinstance(sock, str): + # convert "host:port" into (host, port) + hl = sock.split(":", 1) + self.hostname = hl[0] + if len(hl) == 1: + sock = (hl[0], 22) + else: + sock = (hl[0], int(hl[1])) + if type(sock) is tuple: + # connect to the given (host, port) + hostname, port = sock + self.hostname = hostname + reason = "No suitable address family" + addrinfos = socket.getaddrinfo( + hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM + ) + for family, socktype, proto, canonname, sockaddr in addrinfos: + if socktype == socket.SOCK_STREAM: + af = family + # addr = sockaddr + sock = socket.socket(af, socket.SOCK_STREAM) + try: + sock.connect((hostname, port)) + except socket.error as e: + reason = str(e) + else: + break + else: + raise SSHException( + "Unable to connect to {}: {}".format(hostname, reason) + ) + # okay, normal socket-ish flow here... + threading.Thread.__init__(self) + self.daemon = True + self.sock = sock + # we set the timeout so we can check self.active periodically to + # see if we should bail. socket.timeout exception is never propagated. + self.sock.settimeout(self._active_check_timeout) + + # negotiated crypto parameters + self.packetizer = (packetizer_class or Packetizer)(sock) + self.local_version = "SSH-" + self._PROTO_ID + "-" + self._CLIENT_ID + self.remote_version = "" + self.local_cipher = self.remote_cipher = "" + self.local_kex_init = self.remote_kex_init = None + self.local_mac = self.remote_mac = None + self.local_compression = self.remote_compression = None + self.session_id = None + self.host_key_type = None + self.host_key = None + + # state used during negotiation + self.kex_engine = None + self.H = None + self.K = None + + self.initial_kex_done = False + self.in_kex = False + self.authenticated = False + self._expected_packet = tuple() + # synchronization (always higher level than write_lock) + self.lock = threading.Lock() + + # tracking open channels + self._channels = ChannelMap() + self.channel_events = {} # (id -> Event) + self.channels_seen = {} # (id -> True) + self._channel_counter = 0 + self.default_max_packet_size = default_max_packet_size + self.default_window_size = default_window_size + self._forward_agent_handler = None + self._x11_handler = None + self._tcp_handler = None + + self.saved_exception = None + self.clear_to_send = threading.Event() + self.clear_to_send_lock = threading.Lock() + self.clear_to_send_timeout = 30.0 + self.log_name = "paramiko.transport" + self.logger = util.get_logger(self.log_name) + self.packetizer.set_log(self.logger) + self.auth_handler = None + # response Message from an arbitrary global request + self.global_response = None + # user-defined event callbacks + self.completion_event = None + # how long (seconds) to wait for the SSH banner + self.banner_timeout = 15 + # how long (seconds) to wait for the handshake to finish after SSH + # banner sent. + self.handshake_timeout = 15 + # how long (seconds) to wait for the auth response. + self.auth_timeout = 30 + # how long (seconds) to wait for opening a channel + self.channel_timeout = 60 * 60 + self.disabled_algorithms = disabled_algorithms or {} + self.server_sig_algs = server_sig_algs + + # server mode: + self.server_mode = False + self.server_object = None + self.server_key_dict = {} + self.server_accepts = [] + self.server_accept_cv = threading.Condition(self.lock) + self.subsystem_table = {} + + # Handler table, now set at init time for easier per-instance + # manipulation and subclass twiddling. + self._handler_table = { + MSG_EXT_INFO: self._parse_ext_info, + MSG_NEWKEYS: self._parse_newkeys, + MSG_GLOBAL_REQUEST: self._parse_global_request, + MSG_REQUEST_SUCCESS: self._parse_request_success, + MSG_REQUEST_FAILURE: self._parse_request_failure, + MSG_CHANNEL_OPEN_SUCCESS: self._parse_channel_open_success, + MSG_CHANNEL_OPEN_FAILURE: self._parse_channel_open_failure, + MSG_CHANNEL_OPEN: self._parse_channel_open, + MSG_KEXINIT: self._negotiate_keys, + } + + def _filter_algorithm(self, type_): + default = getattr(self, "_preferred_{}".format(type_)) + return tuple( + x + for x in default + if x not in self.disabled_algorithms.get(type_, []) + ) + + @property + def preferred_ciphers(self): + return self._filter_algorithm("ciphers") + + @property + def preferred_macs(self): + return self._filter_algorithm("macs") + + @property + def preferred_keys(self): + # Interleave cert variants here; resistant to various background + # overwriting of _preferred_keys, and necessary as hostkeys can't use + # the logic pubkey auth does re: injecting/checking for certs at + # runtime + filtered = self._filter_algorithm("keys") + return tuple( + filtered + + tuple("{}-cert-v01@openssh.com".format(x) for x in filtered) + ) + + @property + def preferred_pubkeys(self): + return self._filter_algorithm("pubkeys") + + @property + def preferred_kex(self): + return self._filter_algorithm("kex") + + @property + def preferred_compression(self): + return self._filter_algorithm("compression") + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + """ + id_ = hex(id(self) & xffffffff) + out = "` or + `auth_publickey `. + + .. note:: `connect` is a simpler method for connecting as a client. + + .. note:: + After calling this method (or `start_server` or `connect`), you + should no longer directly read from or write to the original socket + object. + + :param .threading.Event event: + an event to trigger when negotiation is complete (optional) + + :param float timeout: + a timeout, in seconds, for SSH2 session negotiation (optional) + + :raises: + `.SSHException` -- if negotiation fails (and no ``event`` was + passed in) + """ + self.active = True + if event is not None: + # async, return immediately and let the app poll for completion + self.completion_event = event + self.start() + return + + # synchronous, wait for a result + self.completion_event = event = threading.Event() + self.start() + max_time = time.time() + timeout if timeout is not None else None + while True: + event.wait(0.1) + if not self.active: + e = self.get_exception() + if e is not None: + raise e + raise SSHException("Negotiation failed.") + if event.is_set() or ( + timeout is not None and time.time() >= max_time + ): + break + + def start_server(self, event=None, server=None): + """ + Negotiate a new SSH2 session as a server. This is the first step after + creating a new `.Transport` and setting up your server host key(s). A + separate thread is created for protocol negotiation. + + If an event is passed in, this method returns immediately. When + negotiation is done (successful or not), the given ``Event`` will + be triggered. On failure, `is_active` will return ``False``. + + (Since 1.4) If ``event`` is ``None``, this method will not return until + negotiation is done. On success, the method returns normally. + Otherwise an SSHException is raised. + + After a successful negotiation, the client will need to authenticate. + Override the methods `get_allowed_auths + <.ServerInterface.get_allowed_auths>`, `check_auth_none + <.ServerInterface.check_auth_none>`, `check_auth_password + <.ServerInterface.check_auth_password>`, and `check_auth_publickey + <.ServerInterface.check_auth_publickey>` in the given ``server`` object + to control the authentication process. + + After a successful authentication, the client should request to open a + channel. Override `check_channel_request + <.ServerInterface.check_channel_request>` in the given ``server`` + object to allow channels to be opened. + + .. note:: + After calling this method (or `start_client` or `connect`), you + should no longer directly read from or write to the original socket + object. + + :param .threading.Event event: + an event to trigger when negotiation is complete. + :param .ServerInterface server: + an object used to perform authentication and create `channels + <.Channel>` + + :raises: + `.SSHException` -- if negotiation fails (and no ``event`` was + passed in) + """ + if server is None: + server = ServerInterface() + self.server_mode = True + self.server_object = server + self.active = True + if event is not None: + # async, return immediately and let the app poll for completion + self.completion_event = event + self.start() + return + + # synchronous, wait for a result + self.completion_event = event = threading.Event() + self.start() + while True: + event.wait(0.1) + if not self.active: + e = self.get_exception() + if e is not None: + raise e + raise SSHException("Negotiation failed.") + if event.is_set(): + break + + def add_server_key(self, key): + """ + Add a host key to the list of keys used for server mode. When behaving + as a server, the host key is used to sign certain packets during the + SSH2 negotiation, so that the client can trust that we are who we say + we are. Because this is used for signing, the key must contain private + key info, not just the public half. Only one key of each type is kept. + + :param .PKey key: + the host key (instance of some subclass) to add + """ + self.server_key_dict[key.get_name()] = key + # Handle SHA-2 extensions for RSA by ensuring that lookups into + # self.server_key_dict will yield this key for any of the algorithm + # names. + if isinstance(key, RSAKey): + self.server_key_dict["rsa-sha2-256"] = key + self.server_key_dict["rsa-sha2-512"] = key + + def get_server_key(self): + """ + Return the active host key, in server mode. After negotiating with the + client, this method will return the negotiated host key. If only one + type of host key was set with `add_server_key`, that's the only key + that will ever be returned. But in cases where you have set more than + one type of host key, the key type will be negotiated by the client, + and this method will return the key of the type agreed on. If the host + key has not been negotiated yet, ``None`` is returned. In client mode, + the behavior is undefined. + + :return: + host key (`.PKey`) of the type negotiated by the client, or + ``None``. + """ + try: + return self.server_key_dict[self.host_key_type] + except KeyError: + pass + return None + + @staticmethod + def load_server_moduli(filename=None): + """ + (optional) + Load a file of prime moduli for use in doing group-exchange key + negotiation in server mode. It's a rather obscure option and can be + safely ignored. + + In server mode, the remote client may request "group-exchange" key + negotiation, which asks the server to send a random prime number that + fits certain criteria. These primes are pretty difficult to compute, + so they can't be generated on demand. But many systems contain a file + of suitable primes (usually named something like ``/etc/ssh/moduli``). + If you call `load_server_moduli` and it returns ``True``, then this + file of primes has been loaded and we will support "group-exchange" in + server mode. Otherwise server mode will just claim that it doesn't + support that method of key negotiation. + + :param str filename: + optional path to the moduli file, if you happen to know that it's + not in a standard location. + :return: + True if a moduli file was successfully loaded; False otherwise. + + .. note:: This has no effect when used in client mode. + """ + Transport._modulus_pack = ModulusPack() + # places to look for the openssh "moduli" file + file_list = ["/etc/ssh/moduli", "/usr/local/etc/moduli"] + if filename is not None: + file_list.insert(0, filename) + for fn in file_list: + try: + Transport._modulus_pack.read_file(fn) + return True + except IOError: + pass + # none succeeded + Transport._modulus_pack = None + return False + + def close(self): + """ + Close this session, and any open channels that are tied to it. + """ + if not self.active: + return + self.stop_thread() + for chan in list(self._channels.values()): + chan._unlink() + self.sock.close() + + def get_remote_server_key(self): + """ + Return the host key of the server (in client mode). + + .. note:: + Previously this call returned a tuple of ``(key type, key + string)``. You can get the same effect by calling `.PKey.get_name` + for the key type, and ``str(key)`` for the key string. + + :raises: `.SSHException` -- if no session is currently active. + + :return: public key (`.PKey`) of the remote server + """ + if (not self.active) or (not self.initial_kex_done): + raise SSHException("No existing session") + return self.host_key + + def is_active(self): + """ + Return true if this session is active (open). + + :return: + True if the session is still active (open); False if the session is + closed + """ + return self.active + + def open_session( + self, window_size=None, max_packet_size=None, timeout=None + ): + """ + Request a new channel to the server, of type ``"session"``. This is + just an alias for calling `open_channel` with an argument of + ``"session"``. + + .. note:: Modifying the the window and packet sizes might have adverse + effects on the session created. The default values are the same + as in the OpenSSH code base and have been battle tested. + + :param int window_size: + optional window size for this session. + :param int max_packet_size: + optional max packet size for this session. + + :return: a new `.Channel` + + :raises: + `.SSHException` -- if the request is rejected or the session ends + prematurely + + .. versionchanged:: 1.13.4/1.14.3/1.15.3 + Added the ``timeout`` argument. + .. versionchanged:: 1.15 + Added the ``window_size`` and ``max_packet_size`` arguments. + """ + return self.open_channel( + "session", + window_size=window_size, + max_packet_size=max_packet_size, + timeout=timeout, + ) + + def open_x11_channel(self, src_addr=None): + """ + Request a new channel to the client, of type ``"x11"``. This + is just an alias for ``open_channel('x11', src_addr=src_addr)``. + + :param tuple src_addr: + the source address (``(str, int)``) of the x11 server (port is the + x11 port, ie. 6010) + :return: a new `.Channel` + + :raises: + `.SSHException` -- if the request is rejected or the session ends + prematurely + """ + return self.open_channel("x11", src_addr=src_addr) + + def open_forward_agent_channel(self): + """ + Request a new channel to the client, of type + ``"auth-agent@openssh.com"``. + + This is just an alias for ``open_channel('auth-agent@openssh.com')``. + + :return: a new `.Channel` + + :raises: `.SSHException` -- + if the request is rejected or the session ends prematurely + """ + return self.open_channel("auth-agent@openssh.com") + + def open_forwarded_tcpip_channel(self, src_addr, dest_addr): + """ + Request a new channel back to the client, of type ``forwarded-tcpip``. + + This is used after a client has requested port forwarding, for sending + incoming connections back to the client. + + :param src_addr: originator's address + :param dest_addr: local (server) connected address + """ + return self.open_channel("forwarded-tcpip", dest_addr, src_addr) + + def open_channel( + self, + kind, + dest_addr=None, + src_addr=None, + window_size=None, + max_packet_size=None, + timeout=None, + ): + """ + Request a new channel to the server. `Channels <.Channel>` are + socket-like objects used for the actual transfer of data across the + session. You may only request a channel after negotiating encryption + (using `connect` or `start_client`) and authenticating. + + .. note:: Modifying the the window and packet sizes might have adverse + effects on the channel created. The default values are the same + as in the OpenSSH code base and have been battle tested. + + :param str kind: + the kind of channel requested (usually ``"session"``, + ``"forwarded-tcpip"``, ``"direct-tcpip"``, or ``"x11"``) + :param tuple dest_addr: + the destination address (address + port tuple) of this port + forwarding, if ``kind`` is ``"forwarded-tcpip"`` or + ``"direct-tcpip"`` (ignored for other channel types) + :param src_addr: the source address of this port forwarding, if + ``kind`` is ``"forwarded-tcpip"``, ``"direct-tcpip"``, or ``"x11"`` + :param int window_size: + optional window size for this session. + :param int max_packet_size: + optional max packet size for this session. + :param float timeout: + optional timeout opening a channel, default 3600s (1h) + + :return: a new `.Channel` on success + + :raises: + `.SSHException` -- if the request is rejected, the session ends + prematurely or there is a timeout opening a channel + + .. versionchanged:: 1.15 + Added the ``window_size`` and ``max_packet_size`` arguments. + """ + if not self.active: + raise SSHException("SSH session not active") + timeout = self.channel_timeout if timeout is None else timeout + self.lock.acquire() + try: + window_size = self._sanitize_window_size(window_size) + max_packet_size = self._sanitize_packet_size(max_packet_size) + chanid = self._next_channel() + m = Message() + m.add_byte(cMSG_CHANNEL_OPEN) + m.add_string(kind) + m.add_int(chanid) + m.add_int(window_size) + m.add_int(max_packet_size) + if (kind == "forwarded-tcpip") or (kind == "direct-tcpip"): + m.add_string(dest_addr[0]) + m.add_int(dest_addr[1]) + m.add_string(src_addr[0]) + m.add_int(src_addr[1]) + elif kind == "x11": + m.add_string(src_addr[0]) + m.add_int(src_addr[1]) + chan = Channel(chanid) + self._channels.put(chanid, chan) + self.channel_events[chanid] = event = threading.Event() + self.channels_seen[chanid] = True + chan._set_transport(self) + chan._set_window(window_size, max_packet_size) + finally: + self.lock.release() + self._send_user_message(m) + start_ts = time.time() + while True: + event.wait(0.1) + if not self.active: + e = self.get_exception() + if e is None: + e = SSHException("Unable to open channel.") + raise e + if event.is_set(): + break + elif start_ts + timeout < time.time(): + raise SSHException("Timeout opening channel.") + chan = self._channels.get(chanid) + if chan is not None: + return chan + e = self.get_exception() + if e is None: + e = SSHException("Unable to open channel.") + raise e + + def request_port_forward(self, address, port, handler=None): + """ + Ask the server to forward TCP connections from a listening port on + the server, across this SSH session. + + If a handler is given, that handler is called from a different thread + whenever a forwarded connection arrives. The handler parameters are:: + + handler( + channel, + (origin_addr, origin_port), + (server_addr, server_port), + ) + + where ``server_addr`` and ``server_port`` are the address and port that + the server was listening on. + + If no handler is set, the default behavior is to send new incoming + forwarded connections into the accept queue, to be picked up via + `accept`. + + :param str address: the address to bind when forwarding + :param int port: + the port to forward, or 0 to ask the server to allocate any port + :param callable handler: + optional handler for incoming forwarded connections, of the form + ``func(Channel, (str, int), (str, int))``. + + :return: the port number (`int`) allocated by the server + + :raises: + `.SSHException` -- if the server refused the TCP forward request + """ + if not self.active: + raise SSHException("SSH session not active") + port = int(port) + response = self.global_request( + "tcpip-forward", (address, port), wait=True + ) + if response is None: + raise SSHException("TCP forwarding request denied") + if port == 0: + port = response.get_int() + if handler is None: + + def default_handler(channel, src_addr, dest_addr_port): + # src_addr, src_port = src_addr_port + # dest_addr, dest_port = dest_addr_port + self._queue_incoming_channel(channel) + + handler = default_handler + self._tcp_handler = handler + return port + + def cancel_port_forward(self, address, port): + """ + Ask the server to cancel a previous port-forwarding request. No more + connections to the given address & port will be forwarded across this + ssh connection. + + :param str address: the address to stop forwarding + :param int port: the port to stop forwarding + """ + if not self.active: + return + self._tcp_handler = None + self.global_request("cancel-tcpip-forward", (address, port), wait=True) + + def open_sftp_client(self): + """ + Create an SFTP client channel from an open transport. On success, an + SFTP session will be opened with the remote host, and a new + `.SFTPClient` object will be returned. + + :return: + a new `.SFTPClient` referring to an sftp session (channel) across + this transport + """ + return SFTPClient.from_transport(self) + + def send_ignore(self, byte_count=None): + """ + Send a junk packet across the encrypted link. This is sometimes used + to add "noise" to a connection to confuse would-be attackers. It can + also be used as a keep-alive for long lived connections traversing + firewalls. + + :param int byte_count: + the number of random bytes to send in the payload of the ignored + packet -- defaults to a random number from 10 to 41. + """ + m = Message() + m.add_byte(cMSG_IGNORE) + if byte_count is None: + byte_count = (byte_ord(os.urandom(1)) % 32) + 10 + m.add_bytes(os.urandom(byte_count)) + self._send_user_message(m) + + def renegotiate_keys(self): + """ + Force this session to switch to new keys. Normally this is done + automatically after the session hits a certain number of packets or + bytes sent or received, but this method gives you the option of forcing + new keys whenever you want. Negotiating new keys causes a pause in + traffic both ways as the two sides swap keys and do computations. This + method returns when the session has switched to new keys. + + :raises: + `.SSHException` -- if the key renegotiation failed (which causes + the session to end) + """ + self.completion_event = threading.Event() + self._send_kex_init() + while True: + self.completion_event.wait(0.1) + if not self.active: + e = self.get_exception() + if e is not None: + raise e + raise SSHException("Negotiation failed.") + if self.completion_event.is_set(): + break + return + + def set_keepalive(self, interval): + """ + Turn on/off keepalive packets (default is off). If this is set, after + ``interval`` seconds without sending any data over the connection, a + "keepalive" packet will be sent (and ignored by the remote host). This + can be useful to keep connections alive over a NAT, for example. + + :param int interval: + seconds to wait before sending a keepalive packet (or + 0 to disable keepalives). + """ + + def _request(x=weakref.proxy(self)): + return x.global_request("keepalive@lag.net", wait=False) + + self.packetizer.set_keepalive(interval, _request) + + def global_request(self, kind, data=None, wait=True): + """ + Make a global request to the remote host. These are normally + extensions to the SSH2 protocol. + + :param str kind: name of the request. + :param tuple data: + an optional tuple containing additional data to attach to the + request. + :param bool wait: + ``True`` if this method should not return until a response is + received; ``False`` otherwise. + :return: + a `.Message` containing possible additional data if the request was + successful (or an empty `.Message` if ``wait`` was ``False``); + ``None`` if the request was denied. + """ + if wait: + self.completion_event = threading.Event() + m = Message() + m.add_byte(cMSG_GLOBAL_REQUEST) + m.add_string(kind) + m.add_boolean(wait) + if data is not None: + m.add(*data) + self._log(DEBUG, 'Sending global request "{}"'.format(kind)) + self._send_user_message(m) + if not wait: + return None + while True: + self.completion_event.wait(0.1) + if not self.active: + return None + if self.completion_event.is_set(): + break + return self.global_response + + def accept(self, timeout=None): + """ + Return the next channel opened by the client over this transport, in + server mode. If no channel is opened before the given timeout, + ``None`` is returned. + + :param int timeout: + seconds to wait for a channel, or ``None`` to wait forever + :return: a new `.Channel` opened by the client + """ + self.lock.acquire() + try: + if len(self.server_accepts) > 0: + chan = self.server_accepts.pop(0) + else: + self.server_accept_cv.wait(timeout) + if len(self.server_accepts) > 0: + chan = self.server_accepts.pop(0) + else: + # timeout + chan = None + finally: + self.lock.release() + return chan + + def connect( + self, + hostkey=None, + username="", + password=None, + pkey=None, + ): + """ + Negotiate an SSH2 session, and optionally verify the server's host key + and authenticate using a password or private key. This is a shortcut + for `start_client`, `get_remote_server_key`, and + `Transport.auth_password` or `Transport.auth_publickey`. Use those + methods if you want more control. + + You can use this method immediately after creating a Transport to + negotiate encryption with a server. If it fails, an exception will be + thrown. On success, the method will return cleanly, and an encrypted + session exists. You may immediately call `open_channel` or + `open_session` to get a `.Channel` object, which is used for data + transfer. + + .. note:: + If you fail to supply a password or private key, this method may + succeed, but a subsequent `open_channel` or `open_session` call may + fail because you haven't authenticated yet. + + :param .PKey hostkey: + the host key expected from the server, or ``None`` if you don't + want to do host key verification. + :param str username: the username to authenticate as. + :param str password: + a password to use for authentication, if you want to use password + authentication; otherwise ``None``. + :param .PKey pkey: + a private key to use for authentication, if you want to use private + key authentication; otherwise ``None``. + + :raises: `.SSHException` -- if the SSH2 negotiation fails, the host key + supplied by the server is incorrect, or authentication fails. + """ + if hostkey is not None: + # TODO: a more robust implementation would be to ask each key class + # for its nameS plural, and just use that. + # TODO: that could be used in a bunch of other spots too + # TODO: don't we have that now, lol + # TODO: either way this is ~= like using SecurityOptions.key_types + # = xxx, but different, which sucks sigh + if isinstance(hostkey, RSAKey): + self._preferred_keys = [ + "rsa-sha2-512", + "rsa-sha2-256", + ] + else: + self._preferred_keys = [hostkey.get_name()] + + self.start_client() + + # check host key if we were given one + if hostkey is not None: + key = self.get_remote_server_key() + if ( + key.get_name() != hostkey.get_name() + or key.asbytes() != hostkey.asbytes() + ): + self._log(DEBUG, "Bad host key from server") + self._log( + DEBUG, + "Expected: {}: {}".format( + hostkey.get_name(), repr(hostkey.asbytes()) + ), + ) + self._log( + DEBUG, + "Got : {}: {}".format( + key.get_name(), repr(key.asbytes()) + ), + ) + raise SSHException("Bad host key from server") + self._log( + DEBUG, "Host key verified ({})".format(hostkey.get_name()) + ) + + if (pkey is not None) or (password is not None): + if pkey is not None: + self._log(DEBUG, "Attempting public-key auth...") + self.auth_publickey(username, pkey) + else: + self._log(DEBUG, "Attempting password auth...") + self.auth_password(username, password) + + return + + def get_exception(self): + """ + Return any exception that happened during the last server request. + This can be used to fetch more specific error information after using + calls like `start_client`. The exception (if any) is cleared after + this call. + + :return: + an exception, or ``None`` if there is no stored exception. + + .. versionadded:: 1.1 + """ + self.lock.acquire() + try: + e = self.saved_exception + self.saved_exception = None + return e + finally: + self.lock.release() + + def set_subsystem_handler(self, name, handler, *args, **kwargs): + """ + Set the handler class for a subsystem in server mode. If a request + for this subsystem is made on an open ssh channel later, this handler + will be constructed and called -- see `.SubsystemHandler` for more + detailed documentation. + + Any extra parameters (including keyword arguments) are saved and + passed to the `.SubsystemHandler` constructor later. + + :param str name: name of the subsystem. + :param handler: + subclass of `.SubsystemHandler` that handles this subsystem. + """ + try: + self.lock.acquire() + self.subsystem_table[name] = (handler, args, kwargs) + finally: + self.lock.release() + + def is_authenticated(self): + """ + Return true if this session is active and authenticated. + + :return: + True if the session is still open and has been authenticated + successfully; False if authentication failed and/or the session is + closed. + """ + return ( + self.active + and self.auth_handler is not None + and self.auth_handler.is_authenticated() + ) + + def get_username(self): + """ + Return the username this connection is authenticated for. If the + session is not authenticated (or authentication failed), this method + returns ``None``. + + :return: username that was authenticated (a `str`), or ``None``. + """ + if not self.active or (self.auth_handler is None): + return None + return self.auth_handler.get_username() + + def get_banner(self): + """ + Return the banner supplied by the server upon connect. If no banner is + supplied, this method returns ``None``. + + :returns: server supplied banner (`str`), or ``None``. + + .. versionadded:: 1.13 + """ + if not self.active or (self.auth_handler is None): + return None + return self.auth_handler.banner + + def auth_none(self, username): + """ + Try to authenticate to the server using no authentication at all. + This will almost always fail. It may be useful for determining the + list of authentication types supported by the server, by catching the + `.BadAuthenticationType` exception raised. + + :param str username: the username to authenticate as + :return: + list of auth types permissible for the next stage of + authentication (normally empty) + + :raises: + `.BadAuthenticationType` -- if "none" authentication isn't allowed + by the server for this user + :raises: + `.SSHException` -- if the authentication failed due to a network + error + + .. versionadded:: 1.5 + """ + if (not self.active) or (not self.initial_kex_done): + raise SSHException("No existing session") + my_event = threading.Event() + self.auth_handler = AuthHandler(self) + self.auth_handler.auth_none(username, my_event) + return self.auth_handler.wait_for_response(my_event) + + def auth_password(self, username, password, event=None, fallback=True): + """ + Authenticate to the server using a password. The username and password + are sent over an encrypted link. + + If an ``event`` is passed in, this method will return immediately, and + the event will be triggered once authentication succeeds or fails. On + success, `is_authenticated` will return ``True``. On failure, you may + use `get_exception` to get more detailed error information. + + Since 1.1, if no event is passed, this method will block until the + authentication succeeds or fails. On failure, an exception is raised. + Otherwise, the method simply returns. + + Since 1.5, if no event is passed and ``fallback`` is ``True`` (the + default), if the server doesn't support plain password authentication + but does support so-called "keyboard-interactive" mode, an attempt + will be made to authenticate using this interactive mode. If it fails, + the normal exception will be thrown as if the attempt had never been + made. This is useful for some recent Gentoo and Debian distributions, + which turn off plain password authentication in a misguided belief + that interactive authentication is "more secure". (It's not.) + + If the server requires multi-step authentication (which is very rare), + this method will return a list of auth types permissible for the next + step. Otherwise, in the normal case, an empty list is returned. + + :param str username: the username to authenticate as + :param basestring password: the password to authenticate with + :param .threading.Event event: + an event to trigger when the authentication attempt is complete + (whether it was successful or not) + :param bool fallback: + ``True`` if an attempt at an automated "interactive" password auth + should be made if the server doesn't support normal password auth + :return: + list of auth types permissible for the next stage of + authentication (normally empty) + + :raises: + `.BadAuthenticationType` -- if password authentication isn't + allowed by the server for this user (and no event was passed in) + :raises: + `.AuthenticationException` -- if the authentication failed (and no + event was passed in) + :raises: `.SSHException` -- if there was a network error + """ + if (not self.active) or (not self.initial_kex_done): + # we should never try to send the password unless we're on a secure + # link + raise SSHException("No existing session") + if event is None: + my_event = threading.Event() + else: + my_event = event + self.auth_handler = AuthHandler(self) + self.auth_handler.auth_password(username, password, my_event) + if event is not None: + # caller wants to wait for event themselves + return [] + try: + return self.auth_handler.wait_for_response(my_event) + except BadAuthenticationType as e: + # if password auth isn't allowed, but keyboard-interactive *is*, + # try to fudge it + if not fallback or ("keyboard-interactive" not in e.allowed_types): + raise + try: + + def handler(title, instructions, fields): + if len(fields) > 1: + raise SSHException("Fallback authentication failed.") + if len(fields) == 0: + # for some reason, at least on os x, a 2nd request will + # be made with zero fields requested. maybe it's just + # to try to fake out automated scripting of the exact + # type we're doing here. *shrug* :) + return [] + return [password] + + return self.auth_interactive(username, handler) + except SSHException: + # attempt failed; just raise the original exception + raise e + + def auth_publickey(self, username, key, event=None): + """ + Authenticate to the server using a private key. The key is used to + sign data from the server, so it must include the private part. + + If an ``event`` is passed in, this method will return immediately, and + the event will be triggered once authentication succeeds or fails. On + success, `is_authenticated` will return ``True``. On failure, you may + use `get_exception` to get more detailed error information. + + Since 1.1, if no event is passed, this method will block until the + authentication succeeds or fails. On failure, an exception is raised. + Otherwise, the method simply returns. + + If the server requires multi-step authentication (which is very rare), + this method will return a list of auth types permissible for the next + step. Otherwise, in the normal case, an empty list is returned. + + :param str username: the username to authenticate as + :param .PKey key: the private key to authenticate with + :param .threading.Event event: + an event to trigger when the authentication attempt is complete + (whether it was successful or not) + :return: + list of auth types permissible for the next stage of + authentication (normally empty) + + :raises: + `.BadAuthenticationType` -- if public-key authentication isn't + allowed by the server for this user (and no event was passed in) + :raises: + `.AuthenticationException` -- if the authentication failed (and no + event was passed in) + :raises: `.SSHException` -- if there was a network error + """ + if (not self.active) or (not self.initial_kex_done): + # we should never try to authenticate unless we're on a secure link + raise SSHException("No existing session") + if event is None: + my_event = threading.Event() + else: + my_event = event + self.auth_handler = AuthHandler(self) + self.auth_handler.auth_publickey(username, key, my_event) + if event is not None: + # caller wants to wait for event themselves + return [] + return self.auth_handler.wait_for_response(my_event) + + def auth_interactive(self, username, handler, submethods=""): + """ + Authenticate to the server interactively. A handler is used to answer + arbitrary questions from the server. On many servers, this is just a + dumb wrapper around PAM. + + This method will block until the authentication succeeds or fails, + periodically calling the handler asynchronously to get answers to + authentication questions. The handler may be called more than once + if the server continues to ask questions. + + The handler is expected to be a callable that will handle calls of the + form: ``handler(title, instructions, prompt_list)``. The ``title`` is + meant to be a dialog-window title, and the ``instructions`` are user + instructions (both are strings). ``prompt_list`` will be a list of + prompts, each prompt being a tuple of ``(str, bool)``. The string is + the prompt and the boolean indicates whether the user text should be + echoed. + + A sample call would thus be: + ``handler('title', 'instructions', [('Password:', False)])``. + + The handler should return a list or tuple of answers to the server's + questions. + + If the server requires multi-step authentication (which is very rare), + this method will return a list of auth types permissible for the next + step. Otherwise, in the normal case, an empty list is returned. + + :param str username: the username to authenticate as + :param callable handler: a handler for responding to server questions + :param str submethods: a string list of desired submethods (optional) + :return: + list of auth types permissible for the next stage of + authentication (normally empty). + + :raises: `.BadAuthenticationType` -- if public-key authentication isn't + allowed by the server for this user + :raises: `.AuthenticationException` -- if the authentication failed + :raises: `.SSHException` -- if there was a network error + + .. versionadded:: 1.5 + """ + if (not self.active) or (not self.initial_kex_done): + # we should never try to authenticate unless we're on a secure link + raise SSHException("No existing session") + my_event = threading.Event() + self.auth_handler = AuthHandler(self) + self.auth_handler.auth_interactive( + username, handler, my_event, submethods + ) + return self.auth_handler.wait_for_response(my_event) + + def auth_interactive_dumb(self, username, handler=None, submethods=""): + """ + Authenticate to the server interactively but dumber. + Just print the prompt and / or instructions to stdout and send back + the response. This is good for situations where partial auth is + achieved by key and then the user has to enter a 2fac token. + """ + + if not handler: + + def handler(title, instructions, prompt_list): + answers = [] + if title: + print(title.strip()) + if instructions: + print(instructions.strip()) + for prompt, show_input in prompt_list: + print(prompt.strip(), end=" ") + answers.append(input()) + return answers + + return self.auth_interactive(username, handler, submethods) + + def set_log_channel(self, name): + """ + Set the channel for this transport's logging. The default is + ``"paramiko.transport"`` but it can be set to anything you want. (See + the `.logging` module for more info.) SSH Channels will log to a + sub-channel of the one specified. + + :param str name: new channel name for logging + + .. versionadded:: 1.1 + """ + self.log_name = name + self.logger = util.get_logger(name) + self.packetizer.set_log(self.logger) + + def get_log_channel(self): + """ + Return the channel name used for this transport's logging. + + :return: channel name as a `str` + + .. versionadded:: 1.2 + """ + return self.log_name + + def set_hexdump(self, hexdump): + """ + Turn on/off logging a hex dump of protocol traffic at DEBUG level in + the logs. Normally you would want this off (which is the default), + but if you are debugging something, it may be useful. + + :param bool hexdump: + ``True`` to log protocol traffix (in hex) to the log; ``False`` + otherwise. + """ + self.packetizer.set_hexdump(hexdump) + + def get_hexdump(self): + """ + Return ``True`` if the transport is currently logging hex dumps of + protocol traffic. + + :return: ``True`` if hex dumps are being logged, else ``False``. + + .. versionadded:: 1.4 + """ + return self.packetizer.get_hexdump() + + def use_compression(self, compress=True): + """ + Turn on/off compression. This will only have an affect before starting + the transport (ie before calling `connect`, etc). By default, + compression is off since it negatively affects interactive sessions. + + :param bool compress: + ``True`` to ask the remote client/server to compress traffic; + ``False`` to refuse compression + + .. versionadded:: 1.5.2 + """ + if compress: + self._preferred_compression = ("zlib@openssh.com", "zlib", "none") + else: + self._preferred_compression = ("none",) + + def getpeername(self): + """ + Return the address of the remote side of this Transport, if possible. + + This is effectively a wrapper around ``getpeername`` on the underlying + socket. If the socket-like object has no ``getpeername`` method, then + ``("unknown", 0)`` is returned. + + :return: + the address of the remote host, if known, as a ``(str, int)`` + tuple. + """ + gp = getattr(self.sock, "getpeername", None) + if gp is None: + return "unknown", 0 + return gp() + + def stop_thread(self): + self.active = False + self.packetizer.close() + # Keep trying to join() our main thread, quickly, until: + # * We join()ed successfully (self.is_alive() == False) + # * Or it looks like we've hit issue #520 (socket.recv hitting some + # race condition preventing it from timing out correctly), wherein + # our socket and packetizer are both closed (but where we'd + # otherwise be sitting forever on that recv()). + while ( + self.is_alive() + and self is not threading.current_thread() + and not self.sock._closed + and not self.packetizer.closed + ): + self.join(0.1) + + # internals... + + # TODO (backwards incompat): make a public alias for this because multiple + # other classes already explicitly rely on it...or just rewrite logging :D + def _log(self, level, msg, *args): + if issubclass(type(msg), list): + for m in msg: + self.logger.log(level, m) + else: + self.logger.log(level, msg, *args) + + def _get_modulus_pack(self): + """used by KexGex to find primes for group exchange""" + return self._modulus_pack + + def _next_channel(self): + """you are holding the lock""" + chanid = self._channel_counter + while self._channels.get(chanid) is not None: + self._channel_counter = (self._channel_counter + 1) & 0xFFFFFF + chanid = self._channel_counter + self._channel_counter = (self._channel_counter + 1) & 0xFFFFFF + return chanid + + def _unlink_channel(self, chanid): + """used by a Channel to remove itself from the active channel list""" + self._channels.delete(chanid) + + def _send_message(self, data): + self.packetizer.send_message(data) + + def _send_user_message(self, data): + """ + send a message, but block if we're in key negotiation. this is used + for user-initiated requests. + """ + start = time.time() + while True: + self.clear_to_send.wait(0.1) + if not self.active: + self._log( + DEBUG, "Dropping user packet because connection is dead." + ) # noqa + return + self.clear_to_send_lock.acquire() + if self.clear_to_send.is_set(): + break + self.clear_to_send_lock.release() + if time.time() > start + self.clear_to_send_timeout: + raise SSHException( + "Key-exchange timed out waiting for key negotiation" + ) # noqa + try: + self._send_message(data) + finally: + self.clear_to_send_lock.release() + + def _set_K_H(self, k, h): + """ + Used by a kex obj to set the K (root key) and H (exchange hash). + """ + self.K = k + self.H = h + if self.session_id is None: + self.session_id = h + + def _expect_packet(self, *ptypes): + """ + Used by a kex obj to register the next packet type it expects to see. + """ + self._expected_packet = tuple(ptypes) + + def _verify_key(self, host_key, sig): + key: PKey = self._key_info[self.host_key_type](Message(host_key)) + if key is None: + raise SSHException("Unknown host key type") + # TODO: like, here, can a host offer "ssh-rsa" but request SHA2, or are + # those baked in? + if not key.verify_ssh_sig(self.H, Message(sig)): + raise SSHException( + "Signature verification ({}) failed.".format( + self.host_key_type + ) + ) # noqa + self.host_key = key + + def _compute_key(self, id, nbytes): + """id is 'A' - 'F' for the various keys used by ssh""" + m = Message() + m.add_mpint(self.K) + m.add_bytes(self.H) + m.add_byte(b(id)) + m.add_bytes(self.session_id) + # Fallback to SHA1 for kex engines that fail to specify a hex + # algorithm, or for e.g. transport tests that don't run kexinit. + hash_algo = getattr(self.kex_engine, "hash_algo", None) + hash_select_msg = "kex engine {} specified hash_algo {!r}".format( + self.kex_engine.__class__.__name__, hash_algo + ) + if hash_algo is None: + hash_algo = sha1 + hash_select_msg += ", falling back to sha1" + if not hasattr(self, "_logged_hash_selection"): + self._log(DEBUG, hash_select_msg) + setattr(self, "_logged_hash_selection", True) + out = sofar = hash_algo(m.asbytes()).digest() + while len(out) < nbytes: + m = Message() + m.add_mpint(self.K) + m.add_bytes(self.H) + m.add_bytes(sofar) + digest = hash_algo(m.asbytes()).digest() + out += digest + sofar += digest + return out[:nbytes] + + def _get_engine(self, name, key, iv=None, operation=None, aead=False): + if name not in self._cipher_info: + raise SSHException("Unknown cipher " + name) + info = self._cipher_info[name] + algorithm = info["class"](key) + # AEAD types (eg GCM) use their algorithm class /as/ the encryption + # engine (they expose the same encrypt/decrypt API as a CipherContext) + if aead: + return algorithm + # All others go through the Cipher class. + cipher = Cipher( + algorithm=algorithm, + # TODO: why is this getting tickled in aesgcm mode??? + mode=info["mode"](iv), + backend=default_backend(), + ) + if operation is self._ENCRYPT: + return cipher.encryptor() + else: + return cipher.decryptor() + + def _set_forward_agent_handler(self, handler): + if handler is None: + + def default_handler(channel): + self._queue_incoming_channel(channel) + + self._forward_agent_handler = default_handler + else: + self._forward_agent_handler = handler + + def _set_x11_handler(self, handler): + # only called if a channel has turned on x11 forwarding + if handler is None: + # by default, use the same mechanism as accept() + def default_handler(channel, src_addr_port): + self._queue_incoming_channel(channel) + + self._x11_handler = default_handler + else: + self._x11_handler = handler + + def _queue_incoming_channel(self, channel): + self.lock.acquire() + try: + self.server_accepts.append(channel) + self.server_accept_cv.notify() + finally: + self.lock.release() + + def _sanitize_window_size(self, window_size): + if window_size is None: + window_size = self.default_window_size + return clamp_value(MIN_WINDOW_SIZE, window_size, MAX_WINDOW_SIZE) + + def _sanitize_packet_size(self, max_packet_size): + if max_packet_size is None: + max_packet_size = self.default_max_packet_size + return clamp_value(MIN_PACKET_SIZE, max_packet_size, MAX_WINDOW_SIZE) + + def _ensure_authed(self, ptype, message): + """ + Checks message type against current auth state. + + If server mode, and auth has not succeeded, and the message is of a + post-auth type (channel open or global request) an appropriate error + response Message is crafted and returned to caller for sending. + + Otherwise (client mode, authed, or pre-auth message) returns None. + """ + if ( + not self.server_mode + or ptype <= HIGHEST_USERAUTH_MESSAGE_ID + or self.is_authenticated() + ): + return None + # WELP. We must be dealing with someone trying to do non-auth things + # without being authed. Tell them off, based on message class. + reply = Message() + # Global requests have no details, just failure. + if ptype == MSG_GLOBAL_REQUEST: + reply.add_byte(cMSG_REQUEST_FAILURE) + # Channel opens let us reject w/ a specific type + message. + elif ptype == MSG_CHANNEL_OPEN: + kind = message.get_text() # noqa + chanid = message.get_int() + reply.add_byte(cMSG_CHANNEL_OPEN_FAILURE) + reply.add_int(chanid) + reply.add_int(OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED) + reply.add_string("") + reply.add_string("en") + # NOTE: Post-open channel messages do not need checking; the above will + # reject attempts to open channels, meaning that even if a malicious + # user tries to send a MSG_CHANNEL_REQUEST, it will simply fall under + # the logic that handles unknown channel IDs (as the channel list will + # be empty.) + return reply + + def _enforce_strict_kex(self, ptype): + """ + Conditionally raise `MessageOrderError` during strict initial kex. + + This method should only be called inside code that handles non-KEXINIT + messages; it does not interrogate ``ptype`` besides using it to log + more accurately. + """ + if self.agreed_on_strict_kex and not self.initial_kex_done: + name = MSG_NAMES.get(ptype, f"msg {ptype}") + raise MessageOrderError( + f"In strict-kex mode, but was sent {name!r}!" + ) + + def run(self): + # (use the exposed "run" method, because if we specify a thread target + # of a private method, threading.Thread will keep a reference to it + # indefinitely, creating a GC cycle and not letting Transport ever be + # GC'd. it's a bug in Thread.) + + # Hold reference to 'sys' so we can test sys.modules to detect + # interpreter shutdown. + self.sys = sys + + # active=True occurs before the thread is launched, to avoid a race + _active_threads.append(self) + tid = hex(id(self) & xffffffff) + if self.server_mode: + self._log(DEBUG, "starting thread (server mode): {}".format(tid)) + else: + self._log(DEBUG, "starting thread (client mode): {}".format(tid)) + try: + try: + self.packetizer.write_all(b(self.local_version + "\r\n")) + self._log( + DEBUG, + "Local version/idstring: {}".format(self.local_version), + ) # noqa + self._check_banner() + # The above is actually very much part of the handshake, but + # sometimes the banner can be read but the machine is not + # responding, for example when the remote ssh daemon is loaded + # in to memory but we can not read from the disk/spawn a new + # shell. + # Make sure we can specify a timeout for the initial handshake. + # Reuse the banner timeout for now. + self.packetizer.start_handshake(self.handshake_timeout) + self._send_kex_init() + self._expect_packet(MSG_KEXINIT) + + while self.active: + if self.packetizer.need_rekey() and not self.in_kex: + self._send_kex_init() + try: + ptype, m = self.packetizer.read_message() + except NeedRekeyException: + continue + if ptype == MSG_IGNORE: + self._enforce_strict_kex(ptype) + continue + elif ptype == MSG_DISCONNECT: + self._parse_disconnect(m) + break + elif ptype == MSG_DEBUG: + self._enforce_strict_kex(ptype) + self._parse_debug(m) + continue + if len(self._expected_packet) > 0: + if ptype not in self._expected_packet: + exc_class = SSHException + if self.agreed_on_strict_kex: + exc_class = MessageOrderError + raise exc_class( + "Expecting packet from {!r}, got {:d}".format( + self._expected_packet, ptype + ) + ) # noqa + self._expected_packet = tuple() + # These message IDs indicate key exchange & will differ + # depending on exact exchange algorithm + if (ptype >= 30) and (ptype <= 41): + self.kex_engine.parse_next(ptype, m) + continue + + if ptype in self._handler_table: + error_msg = self._ensure_authed(ptype, m) + if error_msg: + self._send_message(error_msg) + else: + self._handler_table[ptype](m) + elif ptype in self._channel_handler_table: + chanid = m.get_int() + chan = self._channels.get(chanid) + if chan is not None: + self._channel_handler_table[ptype](chan, m) + elif chanid in self.channels_seen: + self._log( + DEBUG, + "Ignoring message for dead channel {:d}".format( # noqa + chanid + ), + ) + else: + self._log( + ERROR, + "Channel request for unknown channel {:d}".format( # noqa + chanid + ), + ) + break + elif ( + self.auth_handler is not None + and ptype in self.auth_handler._handler_table + ): + handler = self.auth_handler._handler_table[ptype] + handler(m) + if len(self._expected_packet) > 0: + continue + else: + # Respond with "I don't implement this particular + # message type" message (unless the message type was + # itself literally MSG_UNIMPLEMENTED, in which case, we + # just shut up to avoid causing a useless loop). + name = MSG_NAMES[ptype] + warning = "Oops, unhandled type {} ({!r})".format( + ptype, name + ) + self._log(WARNING, warning) + if ptype != MSG_UNIMPLEMENTED: + msg = Message() + msg.add_byte(cMSG_UNIMPLEMENTED) + msg.add_int(m.seqno) + self._send_message(msg) + self.packetizer.complete_handshake() + except SSHException as e: + self._log( + ERROR, + "Exception ({}): {}".format( + "server" if self.server_mode else "client", e + ), + ) + self._log(ERROR, util.tb_strings()) + self.saved_exception = e + except EOFError as e: + self._log(DEBUG, "EOF in transport thread") + self.saved_exception = e + except socket.error as e: + if type(e.args) is tuple: + if e.args: + emsg = "{} ({:d})".format(e.args[1], e.args[0]) + else: # empty tuple, e.g. socket.timeout + emsg = str(e) or repr(e) + else: + emsg = e.args + self._log(ERROR, "Socket exception: " + emsg) + self.saved_exception = e + except Exception as e: + self._log(ERROR, "Unknown exception: " + str(e)) + self._log(ERROR, util.tb_strings()) + self.saved_exception = e + _active_threads.remove(self) + for chan in list(self._channels.values()): + chan._unlink() + if self.active: + self.active = False + self.packetizer.close() + if self.completion_event is not None: + self.completion_event.set() + if self.auth_handler is not None: + self.auth_handler.abort() + for event in self.channel_events.values(): + event.set() + try: + self.lock.acquire() + self.server_accept_cv.notify() + finally: + self.lock.release() + self.sock.close() + except: + # Don't raise spurious 'NoneType has no attribute X' errors when we + # wake up during interpreter shutdown. Or rather -- raise + # everything *if* sys.modules (used as a convenient sentinel) + # appears to still exist. + if self.sys.modules is not None: + raise + + def _log_agreement(self, which, local, remote): + # Log useful, non-duplicative line re: an agreed-upon algorithm. + # Old code implied algorithms could be asymmetrical (different for + # inbound vs outbound) so we preserve that possibility. + msg = "{}: ".format(which) + if local == remote: + msg += local + else: + msg += "local={}, remote={}".format(local, remote) + self._log(DEBUG, msg) + + # protocol stages + + def _negotiate_keys(self, m): + # throws SSHException on anything unusual + self.clear_to_send_lock.acquire() + try: + self.clear_to_send.clear() + finally: + self.clear_to_send_lock.release() + if self.local_kex_init is None: + # remote side wants to renegotiate + self._send_kex_init() + self._parse_kex_init(m) + self.kex_engine.start_kex() + + def _check_banner(self): + # this is slow, but we only have to do it once + for i in range(100): + # give them 15 seconds for the first line, then just 2 seconds + # each additional line. (some sites have very high latency.) + if i == 0: + timeout = self.banner_timeout + else: + timeout = 2 + try: + buf = self.packetizer.readline(timeout) + except ProxyCommandFailure: + raise + except Exception as e: + raise SSHException( + "Error reading SSH protocol banner" + str(e) + ) + if buf[:4] == "SSH-": + break + self._log(DEBUG, "Banner: " + buf) + if buf[:4] != "SSH-": + raise SSHException('Indecipherable protocol version "' + buf + '"') + # save this server version string for later + self.remote_version = buf + self._log(DEBUG, "Remote version/idstring: {}".format(buf)) + # pull off any attached comment + # NOTE: comment used to be stored in a variable and then...never used. + # since 2003. ca 877cd974b8182d26fa76d566072917ea67b64e67 + i = buf.find(" ") + if i >= 0: + buf = buf[:i] + # parse out version string and make sure it matches + segs = buf.split("-", 2) + if len(segs) < 3: + raise SSHException("Invalid SSH banner") + version = segs[1] + client = segs[2] + if version != "1.99" and version != "2.0": + msg = "Incompatible version ({} instead of 2.0)" + raise IncompatiblePeer(msg.format(version)) + msg = "Connected (version {}, client {})".format(version, client) + self._log(INFO, msg) + + def _send_kex_init(self): + """ + announce to the other side that we'd like to negotiate keys, and what + kind of key negotiation we support. + """ + self.clear_to_send_lock.acquire() + try: + self.clear_to_send.clear() + finally: + self.clear_to_send_lock.release() + self.in_kex = True + kex_algos = list(self.preferred_kex) + if self.server_mode: + mp_required_prefix = "diffie-hellman-group-exchange-sha" + kex_mp = [k for k in kex_algos if k.startswith(mp_required_prefix)] + if (self._modulus_pack is None) and (len(kex_mp) > 0): + # can't do group-exchange if we don't have a pack of potential + # primes + pkex = [ + k + for k in self.get_security_options().kex + if not k.startswith(mp_required_prefix) + ] + self.get_security_options().kex = pkex + available_server_keys = list( + filter( + list(self.server_key_dict.keys()).__contains__, + # TODO: ensure tests will catch if somebody streamlines + # this by mistake - case is the admittedly silly one where + # the only calls to add_server_key() contain keys which + # were filtered out of the below via disabled_algorithms. + # If this is streamlined, we would then be allowing the + # disabled algorithm(s) for hostkey use + # TODO: honestly this prob just wants to get thrown out + # when we make kex configuration more straightforward + self.preferred_keys, + ) + ) + else: + available_server_keys = self.preferred_keys + # Signal support for MSG_EXT_INFO so server will send it to us. + # NOTE: doing this here handily means we don't even consider this + # value when agreeing on real kex algo to use (which is a common + # pitfall when adding this apparently). + kex_algos.append("ext-info-c") + + # Similar to ext-info, but used in both server modes, so done outside + # of above if/else. + if self.advertise_strict_kex: + which = "s" if self.server_mode else "c" + kex_algos.append(f"kex-strict-{which}-v00@openssh.com") + + m = Message() + m.add_byte(cMSG_KEXINIT) + m.add_bytes(os.urandom(16)) + m.add_list(kex_algos) + m.add_list(available_server_keys) + m.add_list(self.preferred_ciphers) + m.add_list(self.preferred_ciphers) + m.add_list(self.preferred_macs) + m.add_list(self.preferred_macs) + m.add_list(self.preferred_compression) + m.add_list(self.preferred_compression) + m.add_string(bytes()) + m.add_string(bytes()) + m.add_boolean(False) + m.add_int(0) + # save a copy for later (needed to compute a hash) + self.local_kex_init = self._latest_kex_init = m.asbytes() + self._send_message(m) + + def _really_parse_kex_init(self, m, ignore_first_byte=False): + parsed = {} + if ignore_first_byte: + m.get_byte() + m.get_bytes(16) # cookie, discarded + parsed["kex_algo_list"] = m.get_list() + parsed["server_key_algo_list"] = m.get_list() + parsed["client_encrypt_algo_list"] = m.get_list() + parsed["server_encrypt_algo_list"] = m.get_list() + parsed["client_mac_algo_list"] = m.get_list() + parsed["server_mac_algo_list"] = m.get_list() + parsed["client_compress_algo_list"] = m.get_list() + parsed["server_compress_algo_list"] = m.get_list() + parsed["client_lang_list"] = m.get_list() + parsed["server_lang_list"] = m.get_list() + parsed["kex_follows"] = m.get_boolean() + m.get_int() # unused + return parsed + + def _get_latest_kex_init(self): + return self._really_parse_kex_init( + Message(self._latest_kex_init), + ignore_first_byte=True, + ) + + def _parse_kex_init(self, m): + parsed = self._really_parse_kex_init(m) + kex_algo_list = parsed["kex_algo_list"] + server_key_algo_list = parsed["server_key_algo_list"] + client_encrypt_algo_list = parsed["client_encrypt_algo_list"] + server_encrypt_algo_list = parsed["server_encrypt_algo_list"] + client_mac_algo_list = parsed["client_mac_algo_list"] + server_mac_algo_list = parsed["server_mac_algo_list"] + client_compress_algo_list = parsed["client_compress_algo_list"] + server_compress_algo_list = parsed["server_compress_algo_list"] + client_lang_list = parsed["client_lang_list"] + server_lang_list = parsed["server_lang_list"] + kex_follows = parsed["kex_follows"] + + self._log(DEBUG, "=== Key exchange possibilities ===") + for prefix, value in ( + ("kex algos", kex_algo_list), + ("server key", server_key_algo_list), + # TODO: shouldn't these two lines say "cipher" to match usual + # terminology (including elsewhere in paramiko!)? + ("client encrypt", client_encrypt_algo_list), + ("server encrypt", server_encrypt_algo_list), + ("client mac", client_mac_algo_list), + ("server mac", server_mac_algo_list), + ("client compress", client_compress_algo_list), + ("server compress", server_compress_algo_list), + ("client lang", client_lang_list), + ("server lang", server_lang_list), + ): + if value == [""]: + value = [""] + value = ", ".join(value) + self._log(DEBUG, "{}: {}".format(prefix, value)) + self._log(DEBUG, "kex follows: {}".format(kex_follows)) + self._log(DEBUG, "=== Key exchange agreements ===") + + # Record, and strip out, ext-info and/or strict-kex non-algorithms + self._remote_ext_info = None + self._remote_strict_kex = None + to_pop = [] + for i, algo in enumerate(kex_algo_list): + if algo.startswith("ext-info-"): + self._remote_ext_info = algo + to_pop.insert(0, i) + elif algo.startswith("kex-strict-"): + # NOTE: this is what we are expecting from the /remote/ end. + which = "c" if self.server_mode else "s" + expected = f"kex-strict-{which}-v00@openssh.com" + # Set strict mode if agreed. + self.agreed_on_strict_kex = ( + algo == expected and self.advertise_strict_kex + ) + self._log( + DEBUG, f"Strict kex mode: {self.agreed_on_strict_kex}" + ) + to_pop.insert(0, i) + for i in to_pop: + kex_algo_list.pop(i) + + # CVE mitigation: expect zeroed-out seqno anytime we are performing kex + # init phase, if strict mode was negotiated. + if ( + self.agreed_on_strict_kex + and not self.initial_kex_done + and m.seqno != 0 + ): + raise MessageOrderError( + "In strict-kex mode, but KEXINIT was not the first packet!" + ) + + # as a server, we pick the first item in the client's list that we + # support. + # as a client, we pick the first item in our list that the server + # supports. + if self.server_mode: + agreed_kex = list( + filter(self.preferred_kex.__contains__, kex_algo_list) + ) + else: + agreed_kex = list( + filter(kex_algo_list.__contains__, self.preferred_kex) + ) + if len(agreed_kex) == 0: + # TODO: do an auth-overhaul style aggregate exception here? + # TODO: would let us streamline log output & show all failures up + # front + raise IncompatiblePeer( + "Incompatible ssh peer (no acceptable kex algorithm)" + ) # noqa + self.kex_engine = self._kex_info[agreed_kex[0]](self) + self._log(DEBUG, "Kex: {}".format(agreed_kex[0])) + + if self.server_mode: + available_server_keys = list( + filter( + list(self.server_key_dict.keys()).__contains__, + self.preferred_keys, + ) + ) + agreed_keys = list( + filter( + available_server_keys.__contains__, server_key_algo_list + ) + ) + else: + agreed_keys = list( + filter(server_key_algo_list.__contains__, self.preferred_keys) + ) + if len(agreed_keys) == 0: + raise IncompatiblePeer( + "Incompatible ssh peer (no acceptable host key)" + ) # noqa + self.host_key_type = agreed_keys[0] + if self.server_mode and (self.get_server_key() is None): + raise IncompatiblePeer( + "Incompatible ssh peer (can't match requested host key type)" + ) # noqa + self._log_agreement("HostKey", agreed_keys[0], agreed_keys[0]) + + if self.server_mode: + agreed_local_ciphers = list( + filter( + self.preferred_ciphers.__contains__, + server_encrypt_algo_list, + ) + ) + agreed_remote_ciphers = list( + filter( + self.preferred_ciphers.__contains__, + client_encrypt_algo_list, + ) + ) + else: + agreed_local_ciphers = list( + filter( + client_encrypt_algo_list.__contains__, + self.preferred_ciphers, + ) + ) + agreed_remote_ciphers = list( + filter( + server_encrypt_algo_list.__contains__, + self.preferred_ciphers, + ) + ) + if len(agreed_local_ciphers) == 0 or len(agreed_remote_ciphers) == 0: + raise IncompatiblePeer( + "Incompatible ssh server (no acceptable ciphers)" + ) # noqa + self.local_cipher = agreed_local_ciphers[0] + self.remote_cipher = agreed_remote_ciphers[0] + self._log_agreement( + "Cipher", local=self.local_cipher, remote=self.remote_cipher + ) + + if self.server_mode: + agreed_remote_macs = list( + filter(self.preferred_macs.__contains__, client_mac_algo_list) + ) + agreed_local_macs = list( + filter(self.preferred_macs.__contains__, server_mac_algo_list) + ) + else: + agreed_local_macs = list( + filter(client_mac_algo_list.__contains__, self.preferred_macs) + ) + agreed_remote_macs = list( + filter(server_mac_algo_list.__contains__, self.preferred_macs) + ) + if (len(agreed_local_macs) == 0) or (len(agreed_remote_macs) == 0): + raise IncompatiblePeer( + "Incompatible ssh server (no acceptable macs)" + ) + self.local_mac = agreed_local_macs[0] + self.remote_mac = agreed_remote_macs[0] + self._log_agreement( + "MAC", local=self.local_mac, remote=self.remote_mac + ) + + if self.server_mode: + agreed_remote_compression = list( + filter( + self.preferred_compression.__contains__, + client_compress_algo_list, + ) + ) + agreed_local_compression = list( + filter( + self.preferred_compression.__contains__, + server_compress_algo_list, + ) + ) + else: + agreed_local_compression = list( + filter( + client_compress_algo_list.__contains__, + self.preferred_compression, + ) + ) + agreed_remote_compression = list( + filter( + server_compress_algo_list.__contains__, + self.preferred_compression, + ) + ) + if ( + len(agreed_local_compression) == 0 + or len(agreed_remote_compression) == 0 + ): + msg = "Incompatible ssh server (no acceptable compression)" + msg += " {!r} {!r} {!r}" + raise IncompatiblePeer( + msg.format( + agreed_local_compression, + agreed_remote_compression, + self.preferred_compression, + ) + ) + self.local_compression = agreed_local_compression[0] + self.remote_compression = agreed_remote_compression[0] + self._log_agreement( + "Compression", + local=self.local_compression, + remote=self.remote_compression, + ) + self._log(DEBUG, "=== End of kex handshake ===") + + # save for computing hash later... + # now wait! openssh has a bug (and others might too) where there are + # actually some extra bytes (one NUL byte in openssh's case) added to + # the end of the packet but not parsed. turns out we need to throw + # away those bytes because they aren't part of the hash. + self.remote_kex_init = cMSG_KEXINIT + m.get_so_far() + + def _activate_inbound(self): + """switch on newly negotiated encryption parameters for + inbound traffic""" + info = self._cipher_info[self.remote_cipher] + aead = info.get("is_aead", False) + block_size = info["block-size"] + key_size = info["key-size"] + # Non-AEAD/GCM type ciphers' IV size is their block size. + iv_size = info.get("iv-size", block_size) + if self.server_mode: + iv_in = self._compute_key("A", iv_size) + key_in = self._compute_key("C", key_size) + else: + iv_in = self._compute_key("B", iv_size) + key_in = self._compute_key("D", key_size) + + engine = self._get_engine( + name=self.remote_cipher, + key=key_in, + iv=iv_in, + operation=self._DECRYPT, + aead=aead, + ) + etm = (not aead) and "etm@openssh.com" in self.remote_mac + mac_size = self._mac_info[self.remote_mac]["size"] + mac_engine = self._mac_info[self.remote_mac]["class"] + # initial mac keys are done in the hash's natural size (not the + # potentially truncated transmission size) + if self.server_mode: + mac_key = self._compute_key("E", mac_engine().digest_size) + else: + mac_key = self._compute_key("F", mac_engine().digest_size) + + self.packetizer.set_inbound_cipher( + block_engine=engine, + block_size=block_size, + mac_engine=None if aead else mac_engine, + mac_size=16 if aead else mac_size, + mac_key=None if aead else mac_key, + etm=etm, + aead=aead, + iv_in=iv_in if aead else None, + ) + + compress_in = self._compression_info[self.remote_compression][1] + if compress_in is not None and ( + self.remote_compression != "zlib@openssh.com" or self.authenticated + ): + self._log(DEBUG, "Switching on inbound compression ...") + self.packetizer.set_inbound_compressor(compress_in()) + # Reset inbound sequence number if strict mode. + if self.agreed_on_strict_kex: + self._log( + DEBUG, + "Resetting inbound seqno after NEWKEYS due to strict mode", + ) + self.packetizer.reset_seqno_in() + + def _activate_outbound(self): + """switch on newly negotiated encryption parameters for + outbound traffic""" + m = Message() + m.add_byte(cMSG_NEWKEYS) + self._send_message(m) + # Reset outbound sequence number if strict mode. + if self.agreed_on_strict_kex: + self._log( + DEBUG, + "Resetting outbound seqno after NEWKEYS due to strict mode", + ) + self.packetizer.reset_seqno_out() + info = self._cipher_info[self.local_cipher] + aead = info.get("is_aead", False) + block_size = info["block-size"] + key_size = info["key-size"] + # Non-AEAD/GCM type ciphers' IV size is their block size. + iv_size = info.get("iv-size", block_size) + if self.server_mode: + iv_out = self._compute_key("B", iv_size) + key_out = self._compute_key("D", key_size) + else: + iv_out = self._compute_key("A", iv_size) + key_out = self._compute_key("C", key_size) + + engine = self._get_engine( + name=self.local_cipher, + key=key_out, + iv=iv_out, + operation=self._ENCRYPT, + aead=aead, + ) + etm = (not aead) and "etm@openssh.com" in self.local_mac + mac_size = self._mac_info[self.local_mac]["size"] + mac_engine = self._mac_info[self.local_mac]["class"] + # initial mac keys are done in the hash's natural size (not the + # potentially truncated transmission size) + if self.server_mode: + mac_key = self._compute_key("F", mac_engine().digest_size) + else: + mac_key = self._compute_key("E", mac_engine().digest_size) + sdctr = self.local_cipher.endswith("-ctr") + + self.packetizer.set_outbound_cipher( + block_engine=engine, + block_size=block_size, + mac_engine=None if aead else mac_engine, + mac_size=16 if aead else mac_size, + mac_key=None if aead else mac_key, + sdctr=sdctr, + etm=etm, + aead=aead, + iv_out=iv_out if aead else None, + ) + + compress_out = self._compression_info[self.local_compression][0] + if compress_out is not None and ( + self.local_compression != "zlib@openssh.com" or self.authenticated + ): + self._log(DEBUG, "Switching on outbound compression ...") + self.packetizer.set_outbound_compressor(compress_out()) + if not self.packetizer.need_rekey(): + self.in_kex = False + # If client indicated extension support, send that packet immediately + if ( + self.server_mode + and self.server_sig_algs + and self._remote_ext_info == "ext-info-c" + ): + extensions = {"server-sig-algs": ",".join(self.preferred_pubkeys)} + m = Message() + m.add_byte(cMSG_EXT_INFO) + m.add_int(len(extensions)) + for name, value in sorted(extensions.items()): + m.add_string(name) + m.add_string(value) + self._send_message(m) + # we always expect to receive NEWKEYS now + self._expect_packet(MSG_NEWKEYS) + + def _auth_trigger(self): + self.authenticated = True + # delayed initiation of compression + if self.local_compression == "zlib@openssh.com": + compress_out = self._compression_info[self.local_compression][0] + self._log(DEBUG, "Switching on outbound compression ...") + self.packetizer.set_outbound_compressor(compress_out()) + if self.remote_compression == "zlib@openssh.com": + compress_in = self._compression_info[self.remote_compression][1] + self._log(DEBUG, "Switching on inbound compression ...") + self.packetizer.set_inbound_compressor(compress_in()) + + def _parse_ext_info(self, msg): + # Packet is a count followed by that many key-string to possibly-bytes + # pairs. + extensions = {} + for _ in range(msg.get_int()): + name = msg.get_text() + value = msg.get_string() + extensions[name] = value + self._log(DEBUG, "Got EXT_INFO: {}".format(extensions)) + # NOTE: this should work ok in cases where a server sends /two/ such + # messages; the RFC explicitly states a 2nd one should overwrite the + # 1st. + self.server_extensions = extensions + + def _parse_newkeys(self, m): + self._log(DEBUG, "Switch to new keys ...") + self._activate_inbound() + # can also free a bunch of stuff here + self.local_kex_init = self.remote_kex_init = None + self.K = None + self.kex_engine = None + if self.server_mode and (self.auth_handler is None): + # create auth handler for server mode + self.auth_handler = AuthHandler(self) + if not self.initial_kex_done: + # this was the first key exchange + # (also signal to packetizer as it sometimes wants to know this + # status as well, eg when seqnos rollover) + self.initial_kex_done = self.packetizer._initial_kex_done = True + # send an event? + if self.completion_event is not None: + self.completion_event.set() + # it's now okay to send data again (if this was a re-key) + if not self.packetizer.need_rekey(): + self.in_kex = False + self.clear_to_send_lock.acquire() + try: + self.clear_to_send.set() + finally: + self.clear_to_send_lock.release() + return + + def _parse_disconnect(self, m): + code = m.get_int() + desc = m.get_text() + self._log(INFO, "Disconnect (code {:d}): {}".format(code, desc)) + + def _parse_global_request(self, m): + kind = m.get_text() + self._log(DEBUG, 'Received global request "{}"'.format(kind)) + want_reply = m.get_boolean() + if not self.server_mode: + self._log( + DEBUG, + 'Rejecting "{}" global request from server.'.format(kind), + ) + ok = False + elif kind == "tcpip-forward": + address = m.get_text() + port = m.get_int() + ok = self.server_object.check_port_forward_request(address, port) + if ok: + ok = (ok,) + elif kind == "cancel-tcpip-forward": + address = m.get_text() + port = m.get_int() + self.server_object.cancel_port_forward_request(address, port) + ok = True + else: + ok = self.server_object.check_global_request(kind, m) + extra = () + if type(ok) is tuple: + extra = ok + ok = True + if want_reply: + msg = Message() + if ok: + msg.add_byte(cMSG_REQUEST_SUCCESS) + msg.add(*extra) + else: + msg.add_byte(cMSG_REQUEST_FAILURE) + self._send_message(msg) + + def _parse_request_success(self, m): + self._log(DEBUG, "Global request successful.") + self.global_response = m + if self.completion_event is not None: + self.completion_event.set() + + def _parse_request_failure(self, m): + self._log(DEBUG, "Global request denied.") + self.global_response = None + if self.completion_event is not None: + self.completion_event.set() + + def _parse_channel_open_success(self, m): + chanid = m.get_int() + server_chanid = m.get_int() + server_window_size = m.get_int() + server_max_packet_size = m.get_int() + chan = self._channels.get(chanid) + if chan is None: + self._log(WARNING, "Success for unrequested channel! [??]") + return + self.lock.acquire() + try: + chan._set_remote_channel( + server_chanid, server_window_size, server_max_packet_size + ) + self._log(DEBUG, "Secsh channel {:d} opened.".format(chanid)) + if chanid in self.channel_events: + self.channel_events[chanid].set() + del self.channel_events[chanid] + finally: + self.lock.release() + return + + def _parse_channel_open_failure(self, m): + chanid = m.get_int() + reason = m.get_int() + reason_str = m.get_text() + m.get_text() # ignored language + reason_text = CONNECTION_FAILED_CODE.get(reason, "(unknown code)") + self._log( + ERROR, + "Secsh channel {:d} open FAILED: {}: {}".format( + chanid, reason_str, reason_text + ), + ) + self.lock.acquire() + try: + self.saved_exception = ChannelException(reason, reason_text) + if chanid in self.channel_events: + self._channels.delete(chanid) + if chanid in self.channel_events: + self.channel_events[chanid].set() + del self.channel_events[chanid] + finally: + self.lock.release() + return + + def _parse_channel_open(self, m): + kind = m.get_text() + chanid = m.get_int() + initial_window_size = m.get_int() + max_packet_size = m.get_int() + reject = False + if ( + kind == "auth-agent@openssh.com" + and self._forward_agent_handler is not None + ): + self._log(DEBUG, "Incoming forward agent connection") + self.lock.acquire() + try: + my_chanid = self._next_channel() + finally: + self.lock.release() + elif (kind == "x11") and (self._x11_handler is not None): + origin_addr = m.get_text() + origin_port = m.get_int() + self._log( + DEBUG, + "Incoming x11 connection from {}:{:d}".format( + origin_addr, origin_port + ), + ) + self.lock.acquire() + try: + my_chanid = self._next_channel() + finally: + self.lock.release() + elif (kind == "forwarded-tcpip") and (self._tcp_handler is not None): + server_addr = m.get_text() + server_port = m.get_int() + origin_addr = m.get_text() + origin_port = m.get_int() + self._log( + DEBUG, + "Incoming tcp forwarded connection from {}:{:d}".format( + origin_addr, origin_port + ), + ) + self.lock.acquire() + try: + my_chanid = self._next_channel() + finally: + self.lock.release() + elif not self.server_mode: + self._log( + DEBUG, + 'Rejecting "{}" channel request from server.'.format(kind), + ) + reject = True + reason = OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED + else: + self.lock.acquire() + try: + my_chanid = self._next_channel() + finally: + self.lock.release() + if kind == "direct-tcpip": + # handle direct-tcpip requests coming from the client + dest_addr = m.get_text() + dest_port = m.get_int() + origin_addr = m.get_text() + origin_port = m.get_int() + reason = self.server_object.check_channel_direct_tcpip_request( + my_chanid, + (origin_addr, origin_port), + (dest_addr, dest_port), + ) + else: + reason = self.server_object.check_channel_request( + kind, my_chanid + ) + if reason != OPEN_SUCCEEDED: + self._log( + DEBUG, + 'Rejecting "{}" channel request from client.'.format(kind), + ) + reject = True + if reject: + msg = Message() + msg.add_byte(cMSG_CHANNEL_OPEN_FAILURE) + msg.add_int(chanid) + msg.add_int(reason) + msg.add_string("") + msg.add_string("en") + self._send_message(msg) + return + + chan = Channel(my_chanid) + self.lock.acquire() + try: + self._channels.put(my_chanid, chan) + self.channels_seen[my_chanid] = True + chan._set_transport(self) + chan._set_window( + self.default_window_size, self.default_max_packet_size + ) + chan._set_remote_channel( + chanid, initial_window_size, max_packet_size + ) + finally: + self.lock.release() + m = Message() + m.add_byte(cMSG_CHANNEL_OPEN_SUCCESS) + m.add_int(chanid) + m.add_int(my_chanid) + m.add_int(self.default_window_size) + m.add_int(self.default_max_packet_size) + self._send_message(m) + self._log( + DEBUG, "Secsh channel {:d} ({}) opened.".format(my_chanid, kind) + ) + if kind == "auth-agent@openssh.com": + self._forward_agent_handler(chan) + elif kind == "x11": + self._x11_handler(chan, (origin_addr, origin_port)) + elif kind == "forwarded-tcpip": + chan.origin_addr = (origin_addr, origin_port) + self._tcp_handler( + chan, (origin_addr, origin_port), (server_addr, server_port) + ) + else: + self._queue_incoming_channel(chan) + + def _parse_debug(self, m): + m.get_boolean() # always_display + msg = m.get_string() + m.get_string() # language + self._log(DEBUG, "Debug msg: {}".format(util.safe_string(msg))) + + def _get_subsystem_handler(self, name): + try: + self.lock.acquire() + if name not in self.subsystem_table: + return None, [], {} + return self.subsystem_table[name] + finally: + self.lock.release() + + _channel_handler_table = { + MSG_CHANNEL_SUCCESS: Channel._request_success, + MSG_CHANNEL_FAILURE: Channel._request_failed, + MSG_CHANNEL_DATA: Channel._feed, + MSG_CHANNEL_EXTENDED_DATA: Channel._feed_extended, + MSG_CHANNEL_WINDOW_ADJUST: Channel._window_adjust, + MSG_CHANNEL_REQUEST: Channel._handle_request, + MSG_CHANNEL_EOF: Channel._handle_eof, + MSG_CHANNEL_CLOSE: Channel._handle_close, + } + + +# TODO (backwards incompat): drop this, we barely use it ourselves, it badly +# replicates the Transport-internal algorithm management, AND does so in a way +# which doesn't honor newer things like disabled_algorithms! +class SecurityOptions: + """ + Simple object containing the security preferences of an ssh transport. + These are tuples of acceptable ciphers, digests, key types, and key + exchange algorithms, listed in order of preference. + + Changing the contents and/or order of these fields affects the underlying + `.Transport` (but only if you change them before starting the session). + If you try to add an algorithm that paramiko doesn't recognize, + ``ValueError`` will be raised. If you try to assign something besides a + tuple to one of the fields, ``TypeError`` will be raised. + """ + + __slots__ = "_transport" + + def __init__(self, transport): + self._transport = transport + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + """ + return "".format(self._transport) + + def _set(self, name, orig, x): + if type(x) is list: + x = tuple(x) + if type(x) is not tuple: + raise TypeError("expected tuple or list") + possible = list(getattr(self._transport, orig).keys()) + forbidden = [n for n in x if n not in possible] + if len(forbidden) > 0: + raise ValueError("unknown cipher") + setattr(self._transport, name, x) + + @property + def ciphers(self): + """Symmetric encryption ciphers""" + return self._transport._preferred_ciphers + + @ciphers.setter + def ciphers(self, x): + self._set("_preferred_ciphers", "_cipher_info", x) + + @property + def digests(self): + """Digest (one-way hash) algorithms""" + return self._transport._preferred_macs + + @digests.setter + def digests(self, x): + self._set("_preferred_macs", "_mac_info", x) + + @property + def key_types(self): + """Public-key algorithms""" + return self._transport._preferred_keys + + @key_types.setter + def key_types(self, x): + # TODO: so this reads Transport._key_info.keys(), yells if any values + # in `x` /aren't/ in that list, then overwrites + # Transport._preferred_keys with `x`... + # TODO: so you can read this pretty simply as "replace + # transport._preferred_keys with x". + # TODO: which is...bad...in cases where SSHClient is trying to simply + # load up known_hosts or system known hosts, and use those to determine + # which hostkey /algorithms/ it is willing to accept + self._set("_preferred_keys", "_key_info", x) + + @property + def kex(self): + """Key exchange algorithms""" + return self._transport._preferred_kex + + @kex.setter + def kex(self, x): + self._set("_preferred_kex", "_kex_info", x) + + @property + def compression(self): + """Compression algorithms""" + return self._transport._preferred_compression + + @compression.setter + def compression(self, x): + self._set("_preferred_compression", "_compression_info", x) + + +class ChannelMap: + def __init__(self): + # (id -> Channel) + self._map = weakref.WeakValueDictionary() + self._lock = threading.Lock() + + def put(self, chanid, chan): + self._lock.acquire() + try: + self._map[chanid] = chan + finally: + self._lock.release() + + def get(self, chanid): + self._lock.acquire() + try: + return self._map.get(chanid, None) + finally: + self._lock.release() + + def delete(self, chanid): + self._lock.acquire() + try: + try: + del self._map[chanid] + except KeyError: + pass + finally: + self._lock.release() + + def values(self): + self._lock.acquire() + try: + return list(self._map.values()) + finally: + self._lock.release() + + def __len__(self): + self._lock.acquire() + try: + return len(self._map) + finally: + self._lock.release() + + +class ServiceRequestingTransport(Transport): + """ + Transport, but also handling service requests, like it oughtta! + + .. versionadded:: 3.2 + """ + + # NOTE: this purposefully duplicates some of the parent class in order to + # modernize, refactor, etc. The intent is that eventually we will collapse + # this one onto the parent in a backwards incompatible release. + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._service_userauth_accepted = False + self._handler_table[MSG_SERVICE_ACCEPT] = self._parse_service_accept + + def _parse_service_accept(self, m): + service = m.get_text() + # Short-circuit for any service name not ssh-userauth. + # NOTE: it's technically possible for 'service name' in + # SERVICE_REQUEST/ACCEPT messages to be "ssh-connection" -- + # but I don't see evidence of Paramiko ever initiating or expecting to + # receive one of these. We /do/ see the 'service name' field in + # MSG_USERAUTH_REQUEST/ACCEPT/FAILURE set to this string, but that is a + # different set of handlers, so...! + if service != "ssh-userauth": + self._log( + # TODO (backwards incompat): consider erroring here (with an + # ability to opt out?) instead as it probably means something + # went Very Wrong. + DEBUG, + 'Service request "{}" accepted (?)'.format(service), + ) + return + # Record that we saw a service-userauth acceptance, meaning we are free + # to submit auth requests. + self._service_userauth_accepted = True + self._log(DEBUG, "MSG_SERVICE_ACCEPT received; auth may begin") + + def ensure_session(self): + # Make sure we're not trying to auth on a not-yet-open or + # already-closed transport session; that's our responsibility, not that + # of AuthHandler. + if (not self.active) or (not self.initial_kex_done): + # TODO: better error message? this can happen in many places, eg + # user error (authing before connecting) or developer error (some + # improperly handled pre/mid auth shutdown didn't become fatal + # enough). The latter is much more common & should ideally be fixed + # by terminating things harder? + raise SSHException("No existing session") + # Also make sure we've actually been told we are allowed to auth. + if self._service_userauth_accepted: + return + # Or request to do so, otherwise. + m = Message() + m.add_byte(cMSG_SERVICE_REQUEST) + m.add_string("ssh-userauth") + self._log(DEBUG, "Sending MSG_SERVICE_REQUEST: ssh-userauth") + self._send_message(m) + # Now we wait to hear back; the user is expecting a blocking-style auth + # request so there's no point giving control back anywhere. + while not self._service_userauth_accepted: + # TODO: feels like we're missing an AuthHandler Event like + # 'self.auth_event' which is set when AuthHandler shuts down in + # ways good AND bad. Transport only seems to have completion_event + # which is unclear re: intent, eg it's set by newkeys which always + # happens on connection, so it'll always be set by the time we get + # here. + # NOTE: this copies the timing of event.wait() in + # AuthHandler.wait_for_response, re: 1/10 of a second. Could + # presumably be smaller, but seems unlikely this period is going to + # be "too long" for any code doing ssh networking... + time.sleep(0.1) + self.auth_handler = self.get_auth_handler() + + def get_auth_handler(self): + # NOTE: using new sibling subclass instead of classic AuthHandler + return AuthOnlyHandler(self) + + def auth_none(self, username): + # TODO (backwards incompat): merge to parent, preserving (most of) + # docstring + self.ensure_session() + return self.auth_handler.auth_none(username) + + def auth_password(self, username, password, fallback=True): + # TODO (backwards incompat): merge to parent, preserving (most of) + # docstring + self.ensure_session() + try: + return self.auth_handler.auth_password(username, password) + except BadAuthenticationType as e: + # if password auth isn't allowed, but keyboard-interactive *is*, + # try to fudge it + if not fallback or ("keyboard-interactive" not in e.allowed_types): + raise + try: + + def handler(title, instructions, fields): + if len(fields) > 1: + raise SSHException("Fallback authentication failed.") + if len(fields) == 0: + # for some reason, at least on os x, a 2nd request will + # be made with zero fields requested. maybe it's just + # to try to fake out automated scripting of the exact + # type we're doing here. *shrug* :) + return [] + return [password] + + return self.auth_interactive(username, handler) + except SSHException: + # attempt to fudge failed; just raise the original exception + raise e + + def auth_publickey(self, username, key): + # TODO (backwards incompat): merge to parent, preserving (most of) + # docstring + self.ensure_session() + return self.auth_handler.auth_publickey(username, key) + + def auth_interactive(self, username, handler, submethods=""): + # TODO (backwards incompat): merge to parent, preserving (most of) + # docstring + self.ensure_session() + return self.auth_handler.auth_interactive( + username, handler, submethods + ) + + def auth_interactive_dumb(self, username, handler=None, submethods=""): + # TODO (backwards incompat): merge to parent, preserving (most of) + # docstring + # NOTE: legacy impl omitted equiv of ensure_session since it just wraps + # another call to an auth method. however we reinstate it for + # consistency reasons. + self.ensure_session() + if not handler: + + def handler(title, instructions, prompt_list): + answers = [] + if title: + print(title.strip()) + if instructions: + print(instructions.strip()) + for prompt, show_input in prompt_list: + print(prompt.strip(), end=" ") + answers.append(input()) + return answers + + return self.auth_interactive(username, handler, submethods) diff --git a/.venv/lib/python3.9/site-packages/paramiko/util.py b/.venv/lib/python3.9/site-packages/paramiko/util.py new file mode 100644 index 0000000..67eae0d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/util.py @@ -0,0 +1,336 @@ +# Copyright (C) 2003-2007 Robey Pointer +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +The dreaded ``utils.py`` - clearinghouse for commonly used functions or data +that don't belong anywhere else. +""" + +import logging +import struct +import sys +import threading +import traceback + +from paramiko.common import ( + DEBUG, + byte_chr, + byte_ord, + max_byte, + xffffffff, + zero_byte, +) +from paramiko.config import SSHConfig + + +def inflate_long(s, always_positive=False): + """turns a normalized byte string into a long-int + (adapted from Crypto.Util.number)""" + out = 0 + negative = 0 + if not always_positive and (len(s) > 0) and (byte_ord(s[0]) >= 0x80): + negative = 1 + if len(s) % 4: + filler = zero_byte + if negative: + filler = max_byte + # never convert this to ``s +=`` because this is a string, not a number + # noinspection PyAugmentAssignment + s = filler * (4 - len(s) % 4) + s + for i in range(0, len(s), 4): + out = (out << 32) + struct.unpack(">I", s[i : i + 4])[0] + if negative: + out -= 1 << (8 * len(s)) + return out + + +def deflate_long(n, add_sign_padding=True): + """turns a long-int into a normalized byte string + (adapted from Crypto.Util.number)""" + # after much testing, this algorithm was deemed to be the fastest + s = bytes() + n = int(n) + while (n != 0) and (n != -1): + s = struct.pack(">I", n & xffffffff) + s + n >>= 32 + # strip off leading zeros, FFs + for i in enumerate(s): + if (n == 0) and (i[1] != 0): + break + if (n == -1) and (i[1] != 0xFF): + break + else: + # degenerate case, n was either 0 or -1 + i = (0,) + if n == 0: + s = zero_byte + else: + s = max_byte + s = s[i[0] :] + if add_sign_padding: + if (n == 0) and (byte_ord(s[0]) >= 0x80): + s = zero_byte + s + if (n == -1) and (byte_ord(s[0]) < 0x80): + s = max_byte + s + return s + + +def format_binary(data, prefix=""): + x = 0 + out = [] + while len(data) > x + 16: + out.append(format_binary_line(data[x : x + 16])) + x += 16 + if x < len(data): + out.append(format_binary_line(data[x:])) + return [prefix + line for line in out] + + +def format_binary_line(data): + left = " ".join(["{:02X}".format(byte_ord(c)) for c in data]) + right = "".join( + [".{:c}..".format(byte_ord(c))[(byte_ord(c) + 63) // 95] for c in data] + ) + return "{:50s} {}".format(left, right) + + +def safe_string(s): + out = b"" + for c in s: + i = byte_ord(c) + if 32 <= i <= 127: + out += byte_chr(i) + else: + out += b("%{:02X}".format(i)) + return out + + +def bit_length(n): + try: + return n.bit_length() + except AttributeError: + norm = deflate_long(n, False) + hbyte = byte_ord(norm[0]) + if hbyte == 0: + return 1 + bitlen = len(norm) * 8 + while not (hbyte & 0x80): + hbyte <<= 1 + bitlen -= 1 + return bitlen + + +def tb_strings(): + return "".join(traceback.format_exception(*sys.exc_info())).split("\n") + + +def generate_key_bytes(hash_alg, salt, key, nbytes): + """ + Given a password, passphrase, or other human-source key, scramble it + through a secure hash into some keyworthy bytes. This specific algorithm + is used for encrypting/decrypting private key files. + + :param function hash_alg: A function which creates a new hash object, such + as ``hashlib.sha256``. + :param salt: data to salt the hash with. + :type bytes salt: Hash salt bytes. + :param str key: human-entered password or passphrase. + :param int nbytes: number of bytes to generate. + :return: Key data, as `bytes`. + """ + keydata = bytes() + digest = bytes() + if len(salt) > 8: + salt = salt[:8] + while nbytes > 0: + hash_obj = hash_alg() + if len(digest) > 0: + hash_obj.update(digest) + hash_obj.update(b(key)) + hash_obj.update(salt) + digest = hash_obj.digest() + size = min(nbytes, len(digest)) + keydata += digest[:size] + nbytes -= size + return keydata + + +def load_host_keys(filename): + """ + Read a file of known SSH host keys, in the format used by openssh, and + return a compound dict of ``hostname -> keytype ->`` `PKey + `. The hostname may be an IP address or DNS name. + + This type of file unfortunately doesn't exist on Windows, but on posix, + it will usually be stored in ``os.path.expanduser("~/.ssh/known_hosts")``. + + Since 1.5.3, this is just a wrapper around `.HostKeys`. + + :param str filename: name of the file to read host keys from + :return: + nested dict of `.PKey` objects, indexed by hostname and then keytype + """ + from paramiko.hostkeys import HostKeys + + return HostKeys(filename) + + +def parse_ssh_config(file_obj): + """ + Provided only as a backward-compatible wrapper around `.SSHConfig`. + + .. deprecated:: 2.7 + Use `SSHConfig.from_file` instead. + """ + config = SSHConfig() + config.parse(file_obj) + return config + + +def lookup_ssh_host_config(hostname, config): + """ + Provided only as a backward-compatible wrapper around `.SSHConfig`. + """ + return config.lookup(hostname) + + +def mod_inverse(x, m): + # it's crazy how small Python can make this function. + u1, u2, u3 = 1, 0, m + v1, v2, v3 = 0, 1, x + + while v3 > 0: + q = u3 // v3 + u1, v1 = v1, u1 - v1 * q + u2, v2 = v2, u2 - v2 * q + u3, v3 = v3, u3 - v3 * q + if u2 < 0: + u2 += m + return u2 + + +_g_thread_data = threading.local() +_g_thread_counter = 0 +_g_thread_lock = threading.Lock() + + +def get_thread_id(): + global _g_thread_data, _g_thread_counter, _g_thread_lock # noqa + try: + return _g_thread_data.id + except AttributeError: + with _g_thread_lock: + _g_thread_counter += 1 + _g_thread_data.id = _g_thread_counter + return _g_thread_data.id + + +def log_to_file(filename, level=DEBUG): + """send paramiko logs to a logfile, + if they're not already going somewhere""" + logger = logging.getLogger("paramiko") + if len(logger.handlers) > 0: + return + logger.setLevel(level) + f = open(filename, "a") + handler = logging.StreamHandler(f) + frm = "%(levelname)-.3s [%(asctime)s.%(msecs)03d] thr=%(_threadid)-3d" + frm += " %(name)s: %(message)s" + handler.setFormatter(logging.Formatter(frm, "%Y%m%d-%H:%M:%S")) + logger.addHandler(handler) + + +# make only one filter object, so it doesn't get applied more than once +class PFilter: + def filter(self, record): + record._threadid = get_thread_id() + return True + + +_pfilter = PFilter() + + +def get_logger(name): + logger = logging.getLogger(name) + logger.addFilter(_pfilter) + return logger + + +def constant_time_bytes_eq(a, b): + if len(a) != len(b): + return False + res = 0 + # noinspection PyUnresolvedReferences + for i in range(len(a)): # noqa: F821 + res |= byte_ord(a[i]) ^ byte_ord(b[i]) + return res == 0 + + +class ClosingContextManager: + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.close() + + +def clamp_value(minimum, val, maximum): + return max(minimum, min(val, maximum)) + + +def asbytes(s): + """ + Coerce to bytes if possible or return unchanged. + """ + try: + # Attempt to run through our version of b(), which does the Right Thing + # for unicode strings vs bytestrings, and raises TypeError if it's not + # one of those types. + return b(s) + except TypeError: + try: + # If it wasn't a string/byte/buffer-ish object, try calling an + # asbytes() method, which many of our internal classes implement. + return s.asbytes() + except AttributeError: + # Finally, just do nothing & assume this object is sufficiently + # byte-y or buffer-y that everything will work out (or that callers + # are capable of handling whatever it is.) + return s + + +# TODO: clean this up / force callers to assume bytes OR unicode +def b(s, encoding="utf8"): + """cast unicode or bytes to bytes""" + if isinstance(s, bytes): + return s + elif isinstance(s, str): + return s.encode(encoding) + else: + raise TypeError(f"Expected unicode or bytes, got {type(s)}") + + +# TODO: clean this up / force callers to assume bytes OR unicode +def u(s, encoding="utf8"): + """cast bytes or unicode to unicode""" + if isinstance(s, bytes): + return s.decode(encoding) + elif isinstance(s, str): + return s + else: + raise TypeError(f"Expected unicode or bytes, got {type(s)}") diff --git a/.venv/lib/python3.9/site-packages/paramiko/win_openssh.py b/.venv/lib/python3.9/site-packages/paramiko/win_openssh.py new file mode 100644 index 0000000..614b589 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/win_openssh.py @@ -0,0 +1,56 @@ +# Copyright (C) 2021 Lew Gordon +# Copyright (C) 2022 Patrick Spendrin +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import os.path +import time + +PIPE_NAME = r"\\.\pipe\openssh-ssh-agent" + + +def can_talk_to_agent(): + # use os.listdir() instead of os.path.exists(), because os.path.exists() + # uses CreateFileW() API and the pipe cannot be reopen unless the server + # calls DisconnectNamedPipe(). + dir_, name = os.path.split(PIPE_NAME) + name = name.lower() + return any(name == n.lower() for n in os.listdir(dir_)) + + +class OpenSSHAgentConnection: + def __init__(self): + while True: + try: + self._pipe = os.open(PIPE_NAME, os.O_RDWR | os.O_BINARY) + except OSError as e: + # retry when errno 22 which means that the server has not + # called DisconnectNamedPipe() yet. + if e.errno != 22: + raise + else: + break + time.sleep(0.1) + + def send(self, data): + return os.write(self._pipe, data) + + def recv(self, n): + return os.read(self._pipe, n) + + def close(self): + return os.close(self._pipe) diff --git a/.venv/lib/python3.9/site-packages/paramiko/win_pageant.py b/.venv/lib/python3.9/site-packages/paramiko/win_pageant.py new file mode 100644 index 0000000..c927de6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/paramiko/win_pageant.py @@ -0,0 +1,138 @@ +# Copyright (C) 2005 John Arbash-Meinel +# Modified up by: Todd Whiteman +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +""" +Functions for communicating with Pageant, the basic windows ssh agent program. +""" + +import array +import ctypes.wintypes +import platform +import struct +from paramiko.common import zero_byte +from paramiko.util import b + +import _thread as thread + +from . import _winapi + + +_AGENT_COPYDATA_ID = 0x804E50BA +_AGENT_MAX_MSGLEN = 8192 +# Note: The WM_COPYDATA value is pulled from win32con, as a workaround +# so we do not have to import this huge library just for this one variable. +win32con_WM_COPYDATA = 74 + + +def _get_pageant_window_object(): + return ctypes.windll.user32.FindWindowA(b"Pageant", b"Pageant") + + +def can_talk_to_agent(): + """ + Check to see if there is a "Pageant" agent we can talk to. + + This checks both if we have the required libraries (win32all or ctypes) + and if there is a Pageant currently running. + """ + return bool(_get_pageant_window_object()) + + +if platform.architecture()[0] == "64bit": + ULONG_PTR = ctypes.c_uint64 +else: + ULONG_PTR = ctypes.c_uint32 + + +class COPYDATASTRUCT(ctypes.Structure): + """ + ctypes implementation of + http://msdn.microsoft.com/en-us/library/windows/desktop/ms649010%28v=vs.85%29.aspx + """ + + _fields_ = [ + ("num_data", ULONG_PTR), + ("data_size", ctypes.wintypes.DWORD), + ("data_loc", ctypes.c_void_p), + ] + + +def _query_pageant(msg): + """ + Communication with the Pageant process is done through a shared + memory-mapped file. + """ + hwnd = _get_pageant_window_object() + if not hwnd: + # Raise a failure to connect exception, pageant isn't running anymore! + return None + + # create a name for the mmap + map_name = f"PageantRequest{thread.get_ident():08x}" + + pymap = _winapi.MemoryMap( + map_name, _AGENT_MAX_MSGLEN, _winapi.get_security_attributes_for_user() + ) + with pymap: + pymap.write(msg) + # Create an array buffer containing the mapped filename + char_buffer = array.array("b", b(map_name) + zero_byte) # noqa + char_buffer_address, char_buffer_size = char_buffer.buffer_info() + # Create a string to use for the SendMessage function call + cds = COPYDATASTRUCT( + _AGENT_COPYDATA_ID, char_buffer_size, char_buffer_address + ) + + response = ctypes.windll.user32.SendMessageA( + hwnd, win32con_WM_COPYDATA, ctypes.sizeof(cds), ctypes.byref(cds) + ) + + if response > 0: + pymap.seek(0) + datalen = pymap.read(4) + retlen = struct.unpack(">I", datalen)[0] + return datalen + pymap.read(retlen) + return None + + +class PageantConnection: + """ + Mock "connection" to an agent which roughly approximates the behavior of + a unix local-domain socket (as used by Agent). Requests are sent to the + pageant daemon via special Windows magick, and responses are buffered back + for subsequent reads. + """ + + def __init__(self): + self._response = None + + def send(self, data): + self._response = _query_pageant(data) + + def recv(self, n): + if self._response is None: + return "" + ret = self._response[:n] + self._response = self._response[n:] + if self._response == "": + self._response = None + return ret + + def close(self): + pass diff --git a/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/INSTALLER b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/LICENSE.txt b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/LICENSE.txt new file mode 100644 index 0000000..00addc2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2008-2021 The pip developers (see AUTHORS.txt file) + +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.9/site-packages/pip-21.3.1.dist-info/METADATA b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/METADATA new file mode 100644 index 0000000..9d031ed --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/METADATA @@ -0,0 +1,93 @@ +Metadata-Version: 2.1 +Name: pip +Version: 21.3.1 +Summary: The PyPA recommended tool for installing Python packages. +Home-page: https://pip.pypa.io/ +Author: The pip developers +Author-email: distutils-sig@python.org +License: MIT +Project-URL: Documentation, https://pip.pypa.io +Project-URL: Source, https://github.com/pypa/pip +Project-URL: Changelog, https://pip.pypa.io/en/stable/news/ +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Topic :: Software Development :: Build Tools +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 :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=3.6 +License-File: LICENSE.txt + +pip - The Python Package Installer +================================== + +.. image:: https://img.shields.io/pypi/v/pip.svg + :target: https://pypi.org/project/pip/ + +.. image:: https://readthedocs.org/projects/pip/badge/?version=latest + :target: https://pip.pypa.io/en/latest + +pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes. + +Please take a look at our documentation for how to install and use pip: + +* `Installation`_ +* `Usage`_ + +We release updates regularly, with a new version every 3 months. Find more details in our documentation: + +* `Release notes`_ +* `Release process`_ + +In pip 20.3, we've `made a big improvement to the heart of pip`_; `learn more`_. We want your input, so `sign up for our user experience research studies`_ to help us do it right. + +**Note**: pip 21.0, in January 2021, removed Python 2 support, per pip's `Python 2 support policy`_. Please migrate to Python 3. + +If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms: + +* `Issue tracking`_ +* `Discourse channel`_ +* `User IRC`_ + +If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms: + +* `GitHub page`_ +* `Development documentation`_ +* `Development mailing list`_ +* `Development IRC`_ + +Code of Conduct +--------------- + +Everyone interacting in the pip project's codebases, issue trackers, chat +rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_. + +.. _package installer: https://packaging.python.org/guides/tool-recommendations/ +.. _Python Package Index: https://pypi.org +.. _Installation: https://pip.pypa.io/en/stable/installation/ +.. _Usage: https://pip.pypa.io/en/stable/ +.. _Release notes: https://pip.pypa.io/en/stable/news.html +.. _Release process: https://pip.pypa.io/en/latest/development/release-process/ +.. _GitHub page: https://github.com/pypa/pip +.. _Development documentation: https://pip.pypa.io/en/latest/development +.. _made a big improvement to the heart of pip: https://pyfound.blogspot.com/2020/11/pip-20-3-new-resolver.html +.. _learn more: https://pip.pypa.io/en/latest/user_guide/#changes-to-the-pip-dependency-resolver-in-20-3-2020 +.. _sign up for our user experience research studies: https://pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html +.. _Python 2 support policy: https://pip.pypa.io/en/latest/development/release-process/#python-2-support +.. _Issue tracking: https://github.com/pypa/pip/issues +.. _Discourse channel: https://discuss.python.org/c/packaging +.. _Development mailing list: https://mail.python.org/mailman3/lists/distutils-sig.python.org/ +.. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa +.. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev +.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md + + diff --git a/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/RECORD b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/RECORD new file mode 100644 index 0000000..5020756 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/RECORD @@ -0,0 +1,812 @@ +../../../bin/pip,sha256=DCWaJOb4JNmq4ddRXOyPDXKh4w_nlT7n48xrUP1ZIB0,273 +../../../bin/pip3,sha256=DCWaJOb4JNmq4ddRXOyPDXKh4w_nlT7n48xrUP1ZIB0,273 +../../../bin/pip3.9,sha256=DCWaJOb4JNmq4ddRXOyPDXKh4w_nlT7n48xrUP1ZIB0,273 +pip-21.3.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip-21.3.1.dist-info/LICENSE.txt,sha256=I6c2HCsVgQKLxiO52ivSSZeryqR4Gs5q1ESjeUT42uE,1090 +pip-21.3.1.dist-info/METADATA,sha256=PjWcvFEqJd4gOfiQam8il34_wPNKxf8ubyYI2wYm7tc,4216 +pip-21.3.1.dist-info/RECORD,, +pip-21.3.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip-21.3.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92 +pip-21.3.1.dist-info/entry_points.txt,sha256=5ExSa1s54zSPNA_1epJn5SX06786S8k5YHwskMvVYzw,125 +pip-21.3.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip/__init__.py,sha256=798yhPIf6eMHi7R5Ogb3BJ5ALJ0Id8IwEuOSU2DFlp0,357 +pip/__main__.py,sha256=mXwWDftNLMKfwVqKFWGE_uuBZvGSIiUELhLkeysIuZc,1198 +pip/__pycache__/__init__.cpython-39.pyc,, +pip/__pycache__/__main__.cpython-39.pyc,, +pip/_internal/__init__.py,sha256=FU88-ODK1jGlVF2Qxp1gJqTwg0wujj12LayXQgFhlh8,587 +pip/_internal/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/__pycache__/build_env.cpython-39.pyc,, +pip/_internal/__pycache__/cache.cpython-39.pyc,, +pip/_internal/__pycache__/configuration.cpython-39.pyc,, +pip/_internal/__pycache__/exceptions.cpython-39.pyc,, +pip/_internal/__pycache__/main.cpython-39.pyc,, +pip/_internal/__pycache__/pyproject.cpython-39.pyc,, +pip/_internal/__pycache__/self_outdated_check.cpython-39.pyc,, +pip/_internal/__pycache__/wheel_builder.cpython-39.pyc,, +pip/_internal/build_env.py,sha256=uIg4HJDgZK542FXVTl3jkPDNbklNgb8Rj6DeZef_oS8,9950 +pip/_internal/cache.py,sha256=71eaYwrls34HJ6gzbmmYiotiKhPNFTM_tqYJXD5nf3s,9441 +pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132 +pip/_internal/cli/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc,, +pip/_internal/cli/__pycache__/base_command.cpython-39.pyc,, +pip/_internal/cli/__pycache__/cmdoptions.cpython-39.pyc,, +pip/_internal/cli/__pycache__/command_context.cpython-39.pyc,, +pip/_internal/cli/__pycache__/main.cpython-39.pyc,, +pip/_internal/cli/__pycache__/main_parser.cpython-39.pyc,, +pip/_internal/cli/__pycache__/parser.cpython-39.pyc,, +pip/_internal/cli/__pycache__/progress_bars.cpython-39.pyc,, +pip/_internal/cli/__pycache__/req_command.cpython-39.pyc,, +pip/_internal/cli/__pycache__/spinners.cpython-39.pyc,, +pip/_internal/cli/__pycache__/status_codes.cpython-39.pyc,, +pip/_internal/cli/autocompletion.py,sha256=NK5yqe49SgExZOCFVEUT5Bf0QV2CuITGK27WSo2MWg8,6399 +pip/_internal/cli/base_command.py,sha256=OIuAm4U0N3juTHA5fhZw_azd7gbCZz2zK3IUc37ve-M,7858 +pip/_internal/cli/cmdoptions.py,sha256=o6hueHSc3VWZ-_do9eeoZKEaxqh18zlXKAzVZ00Kg-o,28391 +pip/_internal/cli/command_context.py,sha256=a1pBBvvGLDiZ1Kw64_4tT6HmRTwYDoYy8JFgG5Czn7s,760 +pip/_internal/cli/main.py,sha256=ioJ8IVlb2K1qLOxR-tXkee9lURhYV89CDM71MKag7YY,2472 +pip/_internal/cli/main_parser.py,sha256=Q9TnytfuC5Z2JSjBFWVGtEdYLFy7rukNIb04movHdAo,2614 +pip/_internal/cli/parser.py,sha256=CDXTuFr2UD8ozOlZYf1KDziQdo9-X_IaYOiUcyJQwrA,10788 +pip/_internal/cli/progress_bars.py,sha256=ha8wowclY8_PaoM0cz4G6qK37zjnzuxQ-ydOtzx4EMI,8300 +pip/_internal/cli/req_command.py,sha256=NS6RO7NzaiF7vl9v5A7zQGnFcYGT-IK0LxN8WEb0ycM,17981 +pip/_internal/cli/spinners.py,sha256=TFhjxtOnLeNJ5YmRvQm4eKPgPbJNkZiqO8jOXuxRaYU,5076 +pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116 +pip/_internal/commands/__init__.py,sha256=Vc1HjsLEtyCh7506OozPHPKXe2Hk-z9cFkFF3BMj1lM,3736 +pip/_internal/commands/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/commands/__pycache__/cache.cpython-39.pyc,, +pip/_internal/commands/__pycache__/check.cpython-39.pyc,, +pip/_internal/commands/__pycache__/completion.cpython-39.pyc,, +pip/_internal/commands/__pycache__/configuration.cpython-39.pyc,, +pip/_internal/commands/__pycache__/debug.cpython-39.pyc,, +pip/_internal/commands/__pycache__/download.cpython-39.pyc,, +pip/_internal/commands/__pycache__/freeze.cpython-39.pyc,, +pip/_internal/commands/__pycache__/hash.cpython-39.pyc,, +pip/_internal/commands/__pycache__/help.cpython-39.pyc,, +pip/_internal/commands/__pycache__/index.cpython-39.pyc,, +pip/_internal/commands/__pycache__/install.cpython-39.pyc,, +pip/_internal/commands/__pycache__/list.cpython-39.pyc,, +pip/_internal/commands/__pycache__/search.cpython-39.pyc,, +pip/_internal/commands/__pycache__/show.cpython-39.pyc,, +pip/_internal/commands/__pycache__/uninstall.cpython-39.pyc,, +pip/_internal/commands/__pycache__/wheel.cpython-39.pyc,, +pip/_internal/commands/cache.py,sha256=p9gvc6W_xgxE2zO0o8NXqO1gGJEinEK42qEC-a7Cnuk,7524 +pip/_internal/commands/check.py,sha256=0gjXR7j36xJT5cs2heYU_dfOfpnFfzX8OoPNNoKhqdM,1685 +pip/_internal/commands/completion.py,sha256=kTG_I1VR3N5kGC4Ma9pQTSoY9Q1URCrNyseHSQ-rCL4,2958 +pip/_internal/commands/configuration.py,sha256=arE8vLstjBg-Ar1krXF-bBmT1qBtnL7Fpk-NVh38a0U,8944 +pip/_internal/commands/debug.py,sha256=krET-y45CnQzXwKR1qA3M_tJE4LE2vnQtm3yfGyDSnE,6629 +pip/_internal/commands/download.py,sha256=p4lmYDgawRrwDFUpde_-1Gld45FnsMNHUFtOWFUCcSE,4904 +pip/_internal/commands/freeze.py,sha256=gCjoD6foBZPBAAYx5t8zZLkJhsF_ZRtnb3dPuD7beO8,2951 +pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703 +pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132 +pip/_internal/commands/index.py,sha256=1VVXXj5MsI2qH-N7uniQQyVkg-KCn_RdjiyiUmkUS5U,4762 +pip/_internal/commands/install.py,sha256=HTWdTb72Bcrm2tA_d55_hX6yQbchnr_XRdA2Xs8uApU,27851 +pip/_internal/commands/list.py,sha256=SnCh19e5zQKonNP7j25c_xru0Wm7wWWF8j49f-Dy9Bw,12203 +pip/_internal/commands/search.py,sha256=sbBZiARRc050QquOKcCvOr2K3XLsoYebLKZGRi__iUI,5697 +pip/_internal/commands/show.py,sha256=OREbPHF6UzvQiGLC1UIjG52Kc_jYDgcXZMYzgKXMbBI,8064 +pip/_internal/commands/uninstall.py,sha256=DNTYAGJNljMO_YYBxrpcwj0FEl7lo_P55_98O6g2TNk,3526 +pip/_internal/commands/wheel.py,sha256=xGSwLPYUM7jP_McD-wnM4D3zsP0n-NSkHFp4d0mAWIg,6168 +pip/_internal/configuration.py,sha256=dKHBEl8aXnqVuRB0NW7Nz7lyYMwr7XCfkMZvUORaSRo,13153 +pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858 +pip/_internal/distributions/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/distributions/__pycache__/base.cpython-39.pyc,, +pip/_internal/distributions/__pycache__/installed.cpython-39.pyc,, +pip/_internal/distributions/__pycache__/sdist.cpython-39.pyc,, +pip/_internal/distributions/__pycache__/wheel.cpython-39.pyc,, +pip/_internal/distributions/base.py,sha256=3FUYD8Gb4YuSu3pggC_FRctZBDbpm5ZK89tPksIUjoE,1172 +pip/_internal/distributions/installed.py,sha256=QObf6KALGtwGx-Ap3Ua5FfcfaRMXWOk_wcrm7n5gYII,767 +pip/_internal/distributions/sdist.py,sha256=3fsErGhAWdGzuO7Wea0F_8b9fKyUL1PoYet273OoAoM,5598 +pip/_internal/distributions/wheel.py,sha256=-NgzdIs-w_hcer_U81yzgpVTljJRg5m79xufqvbjv0s,1115 +pip/_internal/exceptions.py,sha256=XyfiRZn2X8WR61X-JF50BU72TdmVkneWPy9cnuKv2Rg,12762 +pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30 +pip/_internal/index/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/index/__pycache__/collector.cpython-39.pyc,, +pip/_internal/index/__pycache__/package_finder.cpython-39.pyc,, +pip/_internal/index/__pycache__/sources.cpython-39.pyc,, +pip/_internal/index/collector.py,sha256=7rhUeH0IU_dUMk13-lBAN9czRuJ6dbG76Un7xuQ36Ck,17534 +pip/_internal/index/package_finder.py,sha256=_N9LIcwAXbGDN3BUDlikSB93WI9PHv3MvkJ4YapfrPY,36344 +pip/_internal/index/sources.py,sha256=SVyPitv08-Qalh2_Bk5diAJ9GAA_d-a93koouQodAG0,6557 +pip/_internal/locations/__init__.py,sha256=CpH6Cz9HSZ0csN_KPtOcvS9TGYLb7ZNGtCAAmVtjXW0,14444 +pip/_internal/locations/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/locations/__pycache__/_distutils.cpython-39.pyc,, +pip/_internal/locations/__pycache__/_sysconfig.cpython-39.pyc,, +pip/_internal/locations/__pycache__/base.cpython-39.pyc,, +pip/_internal/locations/_distutils.py,sha256=Sk7tw8ZP1DWMYJ8MibABsa8IME2Ejv1PKeGlYQCBTZc,5871 +pip/_internal/locations/_sysconfig.py,sha256=LQNKTJKyjVqxXaPntlBwdUqTG1xwYf6GVCKMbyRJx5M,7918 +pip/_internal/locations/base.py,sha256=x5D1ONktmPJd8nnUTh-ELsAJ7fiXA-k-0a_vhfi2_Us,1579 +pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340 +pip/_internal/metadata/__init__.py,sha256=HzTS3lRukzn-MJaEZkUQhAFe6ulxvNe7nNoBvUzy-DU,1660 +pip/_internal/metadata/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/metadata/__pycache__/base.cpython-39.pyc,, +pip/_internal/metadata/__pycache__/pkg_resources.cpython-39.pyc,, +pip/_internal/metadata/base.py,sha256=gbNbb9blWO5hejmror-2n4_wLuYVrTyqwUluY9OmnMg,11103 +pip/_internal/metadata/pkg_resources.py,sha256=-LiuojtAfl3yhNx8rnUKYN3ECBVCVcDWszCupithXAw,5089 +pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63 +pip/_internal/models/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/models/__pycache__/candidate.cpython-39.pyc,, +pip/_internal/models/__pycache__/direct_url.cpython-39.pyc,, +pip/_internal/models/__pycache__/format_control.cpython-39.pyc,, +pip/_internal/models/__pycache__/index.cpython-39.pyc,, +pip/_internal/models/__pycache__/link.cpython-39.pyc,, +pip/_internal/models/__pycache__/scheme.cpython-39.pyc,, +pip/_internal/models/__pycache__/search_scope.cpython-39.pyc,, +pip/_internal/models/__pycache__/selection_prefs.cpython-39.pyc,, +pip/_internal/models/__pycache__/target_python.cpython-39.pyc,, +pip/_internal/models/__pycache__/wheel.cpython-39.pyc,, +pip/_internal/models/candidate.py,sha256=6pcABsaR7CfIHlbJbr2_kMkVJFL_yrYjTx6SVWUnCPQ,990 +pip/_internal/models/direct_url.py,sha256=7XtGQSLLDQb5ZywI2EMnnLcddtf5CJLx44lMtTHPxFw,6350 +pip/_internal/models/format_control.py,sha256=DJpMYjxeYKKQdwNcML2_F0vtAh-qnKTYe-CpTxQe-4g,2520 +pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030 +pip/_internal/models/link.py,sha256=hoT_qsOBAgLBm9GKqpBrNF_mrEXeGXQE-aH_RX2cGgg,9817 +pip/_internal/models/scheme.py,sha256=3EFQp_ICu_shH1-TBqhl0QAusKCPDFOlgHFeN4XowWs,738 +pip/_internal/models/search_scope.py,sha256=LwloG0PJAmtI1hFXIypsD95kWE9xfR5hf_a2v1Vw7sk,4520 +pip/_internal/models/selection_prefs.py,sha256=KZdi66gsR-_RUXUr9uejssk3rmTHrQVJWeNA2sV-VSY,1907 +pip/_internal/models/target_python.py,sha256=qKpZox7J8NAaPmDs5C_aniwfPDxzvpkrCKqfwndG87k,3858 +pip/_internal/models/wheel.py,sha256=hN9Ub-m-cAJCajCcQHyQNsqpcDCbPPDlEzBDwaBMc14,3500 +pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50 +pip/_internal/network/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/network/__pycache__/auth.cpython-39.pyc,, +pip/_internal/network/__pycache__/cache.cpython-39.pyc,, +pip/_internal/network/__pycache__/download.cpython-39.pyc,, +pip/_internal/network/__pycache__/lazy_wheel.cpython-39.pyc,, +pip/_internal/network/__pycache__/session.cpython-39.pyc,, +pip/_internal/network/__pycache__/utils.cpython-39.pyc,, +pip/_internal/network/__pycache__/xmlrpc.cpython-39.pyc,, +pip/_internal/network/auth.py,sha256=a3C7Xaa8kTJjXkdi_wrUjqaySc8Z9Yz7U6QIbXfzMyc,12190 +pip/_internal/network/cache.py,sha256=HoprMCecwd4IS2wDZowc9B_OpaBlFjJYJl4xOxvtuwU,2100 +pip/_internal/network/download.py,sha256=VmiR-KKIBugShZS4JlD7N8mq3hErx-0fK-D8aTYU3Og,6016 +pip/_internal/network/lazy_wheel.py,sha256=1b8ZJ1w4bSBzpGzGwJR_CL2yQ6AFIwWQkS1vbPPw2XU,7627 +pip/_internal/network/session.py,sha256=38IKGKC64MTVUIH5XOR1hr2pOCzp39RccykdmGAvqRU,16729 +pip/_internal/network/utils.py,sha256=igLlTu_-q0LmL8FdJKq-Uj7AT_owrQ-T9FfyarkhK5U,4059 +pip/_internal/network/xmlrpc.py,sha256=AzQgG4GgS152_cqmGr_Oz2MIXsCal-xfsis7fA7nmU0,1791 +pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/operations/__pycache__/check.cpython-39.pyc,, +pip/_internal/operations/__pycache__/freeze.cpython-39.pyc,, +pip/_internal/operations/__pycache__/prepare.cpython-39.pyc,, +pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/build/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/operations/build/__pycache__/metadata.cpython-39.pyc,, +pip/_internal/operations/build/__pycache__/metadata_editable.cpython-39.pyc,, +pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-39.pyc,, +pip/_internal/operations/build/__pycache__/wheel.cpython-39.pyc,, +pip/_internal/operations/build/__pycache__/wheel_editable.cpython-39.pyc,, +pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-39.pyc,, +pip/_internal/operations/build/metadata.py,sha256=KEsyrRFOBs2jhR-AcjyJyeV5GlsK1ubQqAB1j-b0Zu4,1119 +pip/_internal/operations/build/metadata_editable.py,sha256=RnA8UgQqZwtBjBdqi1DW1gI3xaZ7qhKp1Xd-0YTktSk,1177 +pip/_internal/operations/build/metadata_legacy.py,sha256=hjAJ75iKuJfKQYALZD0U6wJ7ElJ_BAEvjDxF8b9_l5k,1945 +pip/_internal/operations/build/wheel.py,sha256=AO9XnTGhTgHtZmU8Dkbfo1OGr41rBuSDjIgAa4zUKgE,1063 +pip/_internal/operations/build/wheel_editable.py,sha256=TVETY-L_M_dSEKBhTIcQOP75zKVXw8tuq1U354Mm30A,1405 +pip/_internal/operations/build/wheel_legacy.py,sha256=aFMVOvyG-_CAIuXEVxuPJkz5UfCppSeu9FBPzn2tWvI,3047 +pip/_internal/operations/check.py,sha256=ca4O9CkPt9Em9sLCf3H0iVt1GIcW7M8C0U5XooaBuT4,5109 +pip/_internal/operations/freeze.py,sha256=ZiYw5GlUpLVx4VJHz4S1AP2JFNyvH0iq5kpcYj2ovyw,9770 +pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51 +pip/_internal/operations/install/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/operations/install/__pycache__/editable_legacy.cpython-39.pyc,, +pip/_internal/operations/install/__pycache__/legacy.cpython-39.pyc,, +pip/_internal/operations/install/__pycache__/wheel.cpython-39.pyc,, +pip/_internal/operations/install/editable_legacy.py,sha256=J4VCOHvk_BgA_wG02WmlDtSWLwZJ5S_g9SXBkjYojaw,1298 +pip/_internal/operations/install/legacy.py,sha256=YKrZvH894Iqf2oEkYqF9O7CK1DjTgfZCP3R9Azpjeqo,4158 +pip/_internal/operations/install/wheel.py,sha256=QuQyCZE-XjuJjDYRixo40oUt2ucFhNmSrCbcXY7A9aE,27412 +pip/_internal/operations/prepare.py,sha256=Dg-lFYsFhYeib8NuQvGOxd0wxcmTqXfe_c5zYb3ep64,23838 +pip/_internal/pyproject.py,sha256=YgcyleTgyuh7NwGH9j8_21htqnF_VxgKiPc4ecLBWKk,7215 +pip/_internal/req/__init__.py,sha256=A7mUvT1KAcCYP3H7gUOTx2GRMlgoDur3H68Q0OJqM5A,2793 +pip/_internal/req/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/req/__pycache__/constructors.cpython-39.pyc,, +pip/_internal/req/__pycache__/req_file.cpython-39.pyc,, +pip/_internal/req/__pycache__/req_install.cpython-39.pyc,, +pip/_internal/req/__pycache__/req_set.cpython-39.pyc,, +pip/_internal/req/__pycache__/req_tracker.cpython-39.pyc,, +pip/_internal/req/__pycache__/req_uninstall.cpython-39.pyc,, +pip/_internal/req/constructors.py,sha256=FVWkWeGt3fK0DTC3Gurd2jglp_Z10CK-abd6yM3HD-A,15285 +pip/_internal/req/req_file.py,sha256=5N8OTouPCof-305StC2YK9HBxQMw-xO46skRoBPbkZo,17421 +pip/_internal/req/req_install.py,sha256=N8xohvY6CIaVt6D1sU9VWv2muO9oPjixIDisqBXUr0E,33804 +pip/_internal/req/req_set.py,sha256=kHYiLvkKRx21WaLTwOI-54Ng0SSzZZ9SE7FD0PsfvYA,7584 +pip/_internal/req/req_tracker.py,sha256=jK7JDu-Wt73X-gqozrFtgJVlUlnQo0P4IQ4x4_gPlfM,4117 +pip/_internal/req/req_uninstall.py,sha256=Uf8Kx-PgoQIudFq9Y7sFP-uz_I6x1gEfPpJJxujOf14,23748 +pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/resolution/__pycache__/base.cpython-39.pyc,, +pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583 +pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/legacy/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/resolution/legacy/__pycache__/resolver.cpython-39.pyc,, +pip/_internal/resolution/legacy/resolver.py,sha256=Fr7bfTaKqXoaIfSte7mvFRLMb8pAaiozgydoHeIyiHI,18312 +pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/base.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-39.pyc,, +pip/_internal/resolution/resolvelib/base.py,sha256=u1O4fkvCO4mhmu5i32xrDv9AX5NgUci_eYVyBDQhTIM,5220 +pip/_internal/resolution/resolvelib/candidates.py,sha256=5q66J90AoMKKwy1HsdXvEeleOJG8QkAbo8OidFekee0,18210 +pip/_internal/resolution/resolvelib/factory.py,sha256=GnjXkaWRbfjdtQJcjcmkXUyPIgjckCHTu6wkneDMck8,26806 +pip/_internal/resolution/resolvelib/found_candidates.py,sha256=hvL3Hoa9VaYo-qEOZkBi2Iqw251UDxPz-uMHVaWmLpE,5705 +pip/_internal/resolution/resolvelib/provider.py,sha256=HUMHvkU001rtlqvs11NPmMtlyMMLlVQfAl6qXdsLxZQ,9205 +pip/_internal/resolution/resolvelib/reporter.py,sha256=3ZVVYrs5PqvLFJkGLcuXoMK5mTInFzl31xjUpDBpZZk,2526 +pip/_internal/resolution/resolvelib/requirements.py,sha256=pcsnwz7txyDNZUEOWJOZEfivy3COWHPf_DIU7fwZ-Kk,5455 +pip/_internal/resolution/resolvelib/resolver.py,sha256=bkrMZs_jJHP_KFAbg36-lcN4Ums7ESgllup8piHXOz0,9580 +pip/_internal/self_outdated_check.py,sha256=li5EWQZLhcFGQ-oyRhRl9fQZ68_FtPZyh_iryaJ7Fwc,7417 +pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/utils/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/utils/__pycache__/_log.cpython-39.pyc,, +pip/_internal/utils/__pycache__/appdirs.cpython-39.pyc,, +pip/_internal/utils/__pycache__/compat.cpython-39.pyc,, +pip/_internal/utils/__pycache__/compatibility_tags.cpython-39.pyc,, +pip/_internal/utils/__pycache__/datetime.cpython-39.pyc,, +pip/_internal/utils/__pycache__/deprecation.cpython-39.pyc,, +pip/_internal/utils/__pycache__/direct_url_helpers.cpython-39.pyc,, +pip/_internal/utils/__pycache__/distutils_args.cpython-39.pyc,, +pip/_internal/utils/__pycache__/egg_link.cpython-39.pyc,, +pip/_internal/utils/__pycache__/encoding.cpython-39.pyc,, +pip/_internal/utils/__pycache__/entrypoints.cpython-39.pyc,, +pip/_internal/utils/__pycache__/filesystem.cpython-39.pyc,, +pip/_internal/utils/__pycache__/filetypes.cpython-39.pyc,, +pip/_internal/utils/__pycache__/glibc.cpython-39.pyc,, +pip/_internal/utils/__pycache__/hashes.cpython-39.pyc,, +pip/_internal/utils/__pycache__/inject_securetransport.cpython-39.pyc,, +pip/_internal/utils/__pycache__/logging.cpython-39.pyc,, +pip/_internal/utils/__pycache__/misc.cpython-39.pyc,, +pip/_internal/utils/__pycache__/models.cpython-39.pyc,, +pip/_internal/utils/__pycache__/packaging.cpython-39.pyc,, +pip/_internal/utils/__pycache__/parallel.cpython-39.pyc,, +pip/_internal/utils/__pycache__/pkg_resources.cpython-39.pyc,, +pip/_internal/utils/__pycache__/setuptools_build.cpython-39.pyc,, +pip/_internal/utils/__pycache__/subprocess.cpython-39.pyc,, +pip/_internal/utils/__pycache__/temp_dir.cpython-39.pyc,, +pip/_internal/utils/__pycache__/unpacking.cpython-39.pyc,, +pip/_internal/utils/__pycache__/urls.cpython-39.pyc,, +pip/_internal/utils/__pycache__/virtualenv.cpython-39.pyc,, +pip/_internal/utils/__pycache__/wheel.cpython-39.pyc,, +pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015 +pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665 +pip/_internal/utils/compat.py,sha256=ACyBfLgj3_XG-iA5omEDrXqDM0cQKzi8h8HRBInzG6Q,1884 +pip/_internal/utils/compatibility_tags.py,sha256=ydin8QG8BHqYRsPY4OL6cmb44CbqXl1T0xxS97VhHkk,5377 +pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242 +pip/_internal/utils/deprecation.py,sha256=NKo8VqLioJ4nnXXGmW4KdasxF90EFHkZaHeX1fT08C8,3627 +pip/_internal/utils/direct_url_helpers.py,sha256=6F1tc2rcKaCZmgfVwsE6ObIe_Pux23mUVYA-2D9wCFc,3206 +pip/_internal/utils/distutils_args.py,sha256=mcAscyp80vTt3xAGTipnpgc83V-_wCvydNELVXLq7JI,1249 +pip/_internal/utils/egg_link.py,sha256=5MVlpz5LirT4iLQq86OYzjXaYF0D4Qk1dprEI7ThST4,2203 +pip/_internal/utils/encoding.py,sha256=bdZ3YgUpaOEBI5MP4-DEXiQarCW3V0rxw1kRz-TaU1Q,1169 +pip/_internal/utils/entrypoints.py,sha256=g4QKi37JkZ2r6A9WbYLMwVzOiE3dn_lsqVhaFy0Erq0,1130 +pip/_internal/utils/filesystem.py,sha256=rrl-rY1w8TYyKYndUyZlE9ffkQyA4-jI9x_59zXkn5s,5893 +pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716 +pip/_internal/utils/glibc.py,sha256=tDfwVYnJCOC0BNVpItpy8CGLP9BjkxFHdl0mTS0J7fc,3110 +pip/_internal/utils/hashes.py,sha256=anpZfFGIT6HcIj2td9NHtE8AWg6GeAIhwpP8GPvZE0E,4811 +pip/_internal/utils/inject_securetransport.py,sha256=o-QRVMGiENrTJxw3fAhA7uxpdEdw6M41TjHYtSVRrcg,795 +pip/_internal/utils/logging.py,sha256=oEkBvjj2A6NtVo75_Q-sL7qqH0bMFuY0pK4d8t40SKg,11532 +pip/_internal/utils/misc.py,sha256=HfMsfc9LQbjNlf_EdYm79Ggxb63Nd9WOfoZSW3H4wmo,20432 +pip/_internal/utils/models.py,sha256=5GoYU586SrxURMvDn_jBMJInitviJg4O5-iOU-6I0WY,1193 +pip/_internal/utils/packaging.py,sha256=wA29RPW_KkorI2PIfkm9cWCytpcVbk-wubwUE8YTmbQ,2952 +pip/_internal/utils/parallel.py,sha256=Z-vNgYsyiAx8JfZYbD6ZSzkkPfpk0ANQI_YpCBE0Pxo,3196 +pip/_internal/utils/pkg_resources.py,sha256=A7HUm5lSk7n1_7qypyI4QkXErXgb5iXDlKPXo8r_1Hk,987 +pip/_internal/utils/setuptools_build.py,sha256=yDrfmxUgd0A9SDKV-7UuSTA3YLmVav5J86G9Fym-2FE,4697 +pip/_internal/utils/subprocess.py,sha256=cy2c6XRuYkX3XJF_lIjY5nQL2XygBHLJr6WXwTsjfnc,10058 +pip/_internal/utils/temp_dir.py,sha256=zob3PYMVevONkheOMUp_4jDofrEY3HIu5DHK78cSspI,7662 +pip/_internal/utils/unpacking.py,sha256=f2WQ4HeqhZIuAnCdwsTOniqrdXIFhYQ9CdeRURYiz_g,12479 +pip/_internal/utils/urls.py,sha256=AhaesUGl-9it6uvG6fsFPOr9ynFpGaTMk4t5XTX7Z_Q,1759 +pip/_internal/utils/virtualenv.py,sha256=4_48qMzCwB_F5jIK5BC_ua7uiAMVifmQWU9NdaGUoVA,3459 +pip/_internal/utils/wheel.py,sha256=YwsLfuDzPJhFLuGotZ69i0bxJVGSweGuIHG2SxZvZtM,6163 +pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596 +pip/_internal/vcs/__pycache__/__init__.cpython-39.pyc,, +pip/_internal/vcs/__pycache__/bazaar.cpython-39.pyc,, +pip/_internal/vcs/__pycache__/git.cpython-39.pyc,, +pip/_internal/vcs/__pycache__/mercurial.cpython-39.pyc,, +pip/_internal/vcs/__pycache__/subversion.cpython-39.pyc,, +pip/_internal/vcs/__pycache__/versioncontrol.cpython-39.pyc,, +pip/_internal/vcs/bazaar.py,sha256=pNMHrCLx1jSJzu1t1ycDVwhXQ23XI4Q483cvewaTUDs,2857 +pip/_internal/vcs/git.py,sha256=Ph_hThbfTG040GpJRz1z0ByiNkj5eHgF_shCCbNnCw0,17804 +pip/_internal/vcs/mercurial.py,sha256=LgB5xoX8CPtkl5pvvhXw9xQAXA0SF8CSmyVkGHScP78,4956 +pip/_internal/vcs/subversion.py,sha256=h4_nYmYN9kcfeTPp9wjkHhIeTpFZwoCp1UVm4hbBq90,11596 +pip/_internal/vcs/versioncontrol.py,sha256=W1zLW32PeuYiCV1I_dhqlk_n74B_GFTjNC5xdxs-1Ek,22414 +pip/_internal/wheel_builder.py,sha256=ZakEA7CEJyp70yHoX0QLE8TAwM7vxF9PYPtjBxT3F1I,12247 +pip/_vendor/__init__.py,sha256=xjcBX0EP50pkaMdCssrsBXoZgo2hTtYxlcH1CIyA3T4,4708 +pip/_vendor/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/__pycache__/distro.cpython-39.pyc,, +pip/_vendor/__pycache__/pyparsing.cpython-39.pyc,, +pip/_vendor/__pycache__/six.cpython-39.pyc,, +pip/_vendor/cachecontrol/__init__.py,sha256=pJtAaUxOsMPnytI1A3juAJkXYDr8krdSnsg4Yg3OBEg,302 +pip/_vendor/cachecontrol/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/adapter.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/cache.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/compat.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/controller.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/serialize.cpython-39.pyc,, +pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-39.pyc,, +pip/_vendor/cachecontrol/_cmd.py,sha256=URGE0KrA87QekCG3SGPatlSPT571dZTDjNa-ZXX3pDc,1295 +pip/_vendor/cachecontrol/adapter.py,sha256=sSwaSYd93IIfCFU4tOMgSo6b2LCt_gBSaQUj8ktJFOA,4882 +pip/_vendor/cachecontrol/cache.py,sha256=1fc4wJP8HYt1ycnJXeEw5pCpeBL2Cqxx6g9Fb0AYDWQ,805 +pip/_vendor/cachecontrol/caches/__init__.py,sha256=-gHNKYvaeD0kOk5M74eOrsSgIKUtC6i6GfbmugGweEo,86 +pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-39.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-39.pyc,, +pip/_vendor/cachecontrol/caches/file_cache.py,sha256=nYVKsJtXh6gJXvdn1iWyrhxvkwpQrK-eKoMRzuiwkKk,4153 +pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=HxelMpNCo-dYr2fiJDwM3hhhRmxUYtB5tXm1GpAAT4Y,856 +pip/_vendor/cachecontrol/compat.py,sha256=kHNvMRdt6s_Xwqq_9qJmr9ou3wYMOMUMxPPcwNxT8Mc,695 +pip/_vendor/cachecontrol/controller.py,sha256=CWEX3pedIM9s60suf4zZPtm_JvVgnvogMGK_OiBG5F8,14149 +pip/_vendor/cachecontrol/filewrapper.py,sha256=vACKO8Llzu_ZWyjV1Fxn1MA4TGU60N5N3GSrAFdAY2Q,2533 +pip/_vendor/cachecontrol/heuristics.py,sha256=BFGHJ3yQcxvZizfo90LLZ04T_Z5XSCXvFotrp7Us0sc,4070 +pip/_vendor/cachecontrol/serialize.py,sha256=vIa4jvq4x_KSOLdEIedoknX2aXYHQujLDFV4-F21Dno,7091 +pip/_vendor/cachecontrol/wrapper.py,sha256=5LX0uJwkNQUtYSEw3aGmGu9WY8wGipd81mJ8lG0d0M4,690 +pip/_vendor/certifi/__init__.py,sha256=-b78tXibbl0qtgCzv9tc9v6ozwcNX915lT9Tf4a9lds,62 +pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255 +pip/_vendor/certifi/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/certifi/__pycache__/__main__.cpython-39.pyc,, +pip/_vendor/certifi/__pycache__/core.cpython-39.pyc,, +pip/_vendor/certifi/core.py,sha256=xcXTRTzkcnYHuGFEjzUFUvg9MOnYkD1gjqhsWOUiB0Y,2846 +pip/_vendor/chardet/__init__.py,sha256=mWZaWmvZkhwfBEAT9O1Y6nRTfKzhT7FHhQTTAujbqUA,3271 +pip/_vendor/chardet/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/big5freq.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/big5prober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/chardistribution.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/charsetprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/compat.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/cp949prober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/enums.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/escprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/escsm.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/eucjpprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/euckrfreq.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/euckrprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/euctwfreq.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/euctwprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/gb2312freq.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/gb2312prober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/hebrewprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/jisfreq.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/jpcntx.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/langthaimodel.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/latin1prober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/mbcssm.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/sjisprober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/universaldetector.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/utf8prober.cpython-39.pyc,, +pip/_vendor/chardet/__pycache__/version.cpython-39.pyc,, +pip/_vendor/chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254 +pip/_vendor/chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757 +pip/_vendor/chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411 +pip/_vendor/chardet/charsetgroupprober.py,sha256=GZLReHP6FRRn43hvSOoGCxYamErKzyp6RgOQxVeC3kg,3839 +pip/_vendor/chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110 +pip/_vendor/chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +pip/_vendor/chardet/cli/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-39.pyc,, +pip/_vendor/chardet/cli/chardetect.py,sha256=XK5zqjUG2a4-y6eLHZ8ThYcp6WWUrdlmELxNypcc2SE,2747 +pip/_vendor/chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590 +pip/_vendor/chardet/compat.py,sha256=40zr6wICZwknxyuLGGcIOPyve8DTebBCbbvttvnmp5Q,1200 +pip/_vendor/chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855 +pip/_vendor/chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661 +pip/_vendor/chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950 +pip/_vendor/chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510 +pip/_vendor/chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749 +pip/_vendor/chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546 +pip/_vendor/chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748 +pip/_vendor/chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621 +pip/_vendor/chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747 +pip/_vendor/chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715 +pip/_vendor/chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754 +pip/_vendor/chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838 +pip/_vendor/chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777 +pip/_vendor/chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643 +pip/_vendor/chardet/langbulgarianmodel.py,sha256=Ys1irPhpi61ywJpv6a-6JQOLwn7Ed7YqTBpGZ7adhOk,105675 +pip/_vendor/chardet/langgreekmodel.py,sha256=en5Np_mAnOAR1Akoh0562eSe7phGWuq7H2_KoEv4eQU,99549 +pip/_vendor/chardet/langhebrewmodel.py,sha256=NHkt2JO49NbzkgPzgYgrGIKvpO040WOjUMEPRzkZVDo,98754 +pip/_vendor/chardet/langhungarianmodel.py,sha256=IA_31i27hFJwCRhHQ_0CdUIeBr_qndYmj2SJqDdw1n4,102476 +pip/_vendor/chardet/langrussianmodel.py,sha256=QzrKRvQInhNxnMkYTugNqEfvVFZl_WI1bj9rFLdjYgQ,131158 +pip/_vendor/chardet/langthaimodel.py,sha256=Ju2fDTy26CdiZYkioD8I5ZzKEGe8Et-49zon1_OOZI4,103290 +pip/_vendor/chardet/langturkishmodel.py,sha256=ycEZsKGFiLl-FgoZLiUmWeS8F7F2ts3RrNdgRzArDlU,95924 +pip/_vendor/chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370 +pip/_vendor/chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413 +pip/_vendor/chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012 +pip/_vendor/chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481 +pip/_vendor/chardet/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/chardet/metadata/__pycache__/languages.cpython-39.pyc,, +pip/_vendor/chardet/metadata/languages.py,sha256=Bn9KbnR_sctMbPDMw9IwxOyYeOGuE4tcVNjvE2FOEmA,19452 +pip/_vendor/chardet/sbcharsetprober.py,sha256=nmyMyuxzG87DN6K3Rk2MUzJLMLR69MrWpdnHzOwVUwQ,6136 +pip/_vendor/chardet/sbcsgroupprober.py,sha256=hqefQuXmiFyDBArOjujH6hd6WFXlOD1kWCsxDhjx5Vc,4309 +pip/_vendor/chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774 +pip/_vendor/chardet/universaldetector.py,sha256=DpZTXCX0nUHXxkQ9sr4GZxGB_hveZ6hWt3uM94cgWKs,12503 +pip/_vendor/chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766 +pip/_vendor/chardet/version.py,sha256=A4CILFAd8MRVG1HoXPp45iK9RLlWyV73a1EtwE8Tvn8,242 +pip/_vendor/colorama/__init__.py,sha256=pCdErryzLSzDW5P-rRPBlPLqbBtIRNJB6cMgoeJns5k,239 +pip/_vendor/colorama/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/colorama/__pycache__/ansi.cpython-39.pyc,, +pip/_vendor/colorama/__pycache__/ansitowin32.cpython-39.pyc,, +pip/_vendor/colorama/__pycache__/initialise.cpython-39.pyc,, +pip/_vendor/colorama/__pycache__/win32.cpython-39.pyc,, +pip/_vendor/colorama/__pycache__/winterm.cpython-39.pyc,, +pip/_vendor/colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522 +pip/_vendor/colorama/ansitowin32.py,sha256=yV7CEmCb19MjnJKODZEEvMH_fnbJhwnpzo4sxZuGXmA,10517 +pip/_vendor/colorama/initialise.py,sha256=PprovDNxMTrvoNHFcL2NZjpH2XzDc8BLxLxiErfUl4k,1915 +pip/_vendor/colorama/win32.py,sha256=bJ8Il9jwaBN5BJ8bmN6FoYZ1QYuMKv2j8fGrXh7TJjw,5404 +pip/_vendor/colorama/winterm.py,sha256=2y_2b7Zsv34feAsP67mLOVc-Bgq51mdYGo571VprlrM,6438 +pip/_vendor/distlib/__init__.py,sha256=HTGLP7dnTRTQCbEZNGUxBq-0sobr0KQUMn3yd6uEObA,581 +pip/_vendor/distlib/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/compat.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/database.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/index.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/locators.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/manifest.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/markers.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/metadata.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/resources.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/scripts.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/util.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/version.cpython-39.pyc,, +pip/_vendor/distlib/__pycache__/wheel.cpython-39.pyc,, +pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274 +pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/distlib/_backport/__pycache__/misc.cpython-39.pyc,, +pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-39.pyc,, +pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-39.pyc,, +pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-39.pyc,, +pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971 +pip/_vendor/distlib/_backport/shutil.py,sha256=IX_G2NPqwecJibkIDje04bqu0xpHkfSQ2GaGdEVqM5Y,25707 +pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617 +pip/_vendor/distlib/_backport/sysconfig.py,sha256=BQHFlb6pubCl_dvT1NjtzIthylofjKisox239stDg0U,26854 +pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628 +pip/_vendor/distlib/compat.py,sha256=fbsxc5PfJ2wBx1K4k6mQ2goAYs-GZW0tcOPIlE_vf0I,41495 +pip/_vendor/distlib/database.py,sha256=Kl0YvPQKc4OcpVi7k5cFziydM1xOK8iqdxLGXgbZHV4,51059 +pip/_vendor/distlib/index.py,sha256=UfcimNW19AB7IKWam4VaJbXuCBvArKfSxhV16EwavzE,20739 +pip/_vendor/distlib/locators.py,sha256=AKlB3oZvfOTg4E0CtfwOzujFL19X5V4XUA4eHdKOu44,51965 +pip/_vendor/distlib/manifest.py,sha256=nQEhYmgoreaBZzyFzwYsXxJARu3fo4EkunU163U16iE,14811 +pip/_vendor/distlib/markers.py,sha256=9c70ISEKwBjmUOHuIdOygVnRVESOKdNYp9a2TVn4qrI,4989 +pip/_vendor/distlib/metadata.py,sha256=vatoxFdmBr6ie-sTVXVNPOPG3uwMDWJTnEECnm7xDCw,39109 +pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820 +pip/_vendor/distlib/scripts.py,sha256=tjSwENINeV91ROZxec5zTSMRg2jEeKc4enyCHDzNvEE,17720 +pip/_vendor/distlib/util.py,sha256=0Uq_qa63FCLtdyNdWvMnmPbiSvVa-ykHM2E8HT7LSIU,67766 +pip/_vendor/distlib/version.py,sha256=WG__LyAa2GwmA6qSoEJtvJE8REA1LZpbSizy8WvhJLk,23513 +pip/_vendor/distlib/wheel.py,sha256=pj5VVCjqZMcHvgizORWwAFPS7hOk61CZ59dxP8laQ4E,42943 +pip/_vendor/distro.py,sha256=O1EeHMq1-xAO373JI2_6pYEtd09yEkxtmrYkdY-9S-w,48414 +pip/_vendor/html5lib/__init__.py,sha256=BYzcKCqeEii52xDrqBFruhnmtmkiuHXFyFh-cglQ8mk,1160 +pip/_vendor/html5lib/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-39.pyc,, +pip/_vendor/html5lib/__pycache__/_inputstream.cpython-39.pyc,, +pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-39.pyc,, +pip/_vendor/html5lib/__pycache__/_utils.cpython-39.pyc,, +pip/_vendor/html5lib/__pycache__/constants.cpython-39.pyc,, +pip/_vendor/html5lib/__pycache__/html5parser.cpython-39.pyc,, +pip/_vendor/html5lib/__pycache__/serializer.cpython-39.pyc,, +pip/_vendor/html5lib/_ihatexml.py,sha256=ifOwF7pXqmyThIXc3boWc96s4MDezqRrRVp7FwDYUFs,16728 +pip/_vendor/html5lib/_inputstream.py,sha256=jErNASMlkgs7MpOM9Ve_VdLDJyFFweAjLuhVutZz33U,32353 +pip/_vendor/html5lib/_tokenizer.py,sha256=04mgA2sNTniutl2fxFv-ei5bns4iRaPxVXXHh_HrV_4,77040 +pip/_vendor/html5lib/_trie/__init__.py,sha256=nqfgO910329BEVJ5T4psVwQtjd2iJyEXQ2-X8c1YxwU,109 +pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-39.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/py.cpython-39.pyc,, +pip/_vendor/html5lib/_trie/_base.py,sha256=CaybYyMro8uERQYjby2tTeSUatnWDfWroUN9N7ety5w,1013 +pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775 +pip/_vendor/html5lib/_utils.py,sha256=Dx9AKntksRjFT1veBj7I362pf5OgIaT0zglwq43RnfU,4931 +pip/_vendor/html5lib/constants.py,sha256=Ll-yzLU_jcjyAI_h57zkqZ7aQWE5t5xA4y_jQgoUUhw,83464 +pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-39.pyc,, +pip/_vendor/html5lib/filters/__pycache__/base.cpython-39.pyc,, +pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-39.pyc,, +pip/_vendor/html5lib/filters/__pycache__/lint.cpython-39.pyc,, +pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-39.pyc,, +pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-39.pyc,, +pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-39.pyc,, +pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=lViZc2JMCclXi_5gduvmdzrRxtO5Xo9ONnbHBVCsykU,919 +pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286 +pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=egDXUEHXmAG9504xz0K6ALDgYkvUrC2q15YUVeNlVQg,2945 +pip/_vendor/html5lib/filters/lint.py,sha256=jk6q56xY0ojiYfvpdP-OZSm9eTqcAdRqhCoPItemPYA,3643 +pip/_vendor/html5lib/filters/optionaltags.py,sha256=8lWT75J0aBOHmPgfmqTHSfPpPMp01T84NKu0CRedxcE,10588 +pip/_vendor/html5lib/filters/sanitizer.py,sha256=m6oGmkBhkGAnn2nV6D4hE78SCZ6WEnK9rKdZB3uXBIc,26897 +pip/_vendor/html5lib/filters/whitespace.py,sha256=8eWqZxd4UC4zlFGW6iyY6f-2uuT8pOCSALc3IZt7_t4,1214 +pip/_vendor/html5lib/html5parser.py,sha256=anr-aXre_ImfrkQ35c_rftKXxC80vJCREKe06Tq15HA,117186 +pip/_vendor/html5lib/serializer.py,sha256=_PpvcZF07cwE7xr9uKkZqh5f4UEaI8ltCU2xPJzaTpk,15759 +pip/_vendor/html5lib/treeadapters/__init__.py,sha256=A0rY5gXIe4bJOiSGRO_j_tFhngRBO8QZPzPtPw5dFzo,679 +pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-39.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-39.pyc,, +pip/_vendor/html5lib/treeadapters/genshi.py,sha256=CH27pAsDKmu4ZGkAUrwty7u0KauGLCZRLPMzaO3M5vo,1715 +pip/_vendor/html5lib/treeadapters/sax.py,sha256=BKS8woQTnKiqeffHsxChUqL4q2ZR_wb5fc9MJ3zQC8s,1776 +pip/_vendor/html5lib/treebuilders/__init__.py,sha256=AysSJyvPfikCMMsTVvaxwkgDieELD5dfR8FJIAuq7hY,3592 +pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-39.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-39.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-39.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-39.pyc,, +pip/_vendor/html5lib/treebuilders/base.py,sha256=z-o51vt9r_l2IDG5IioTOKGzZne4Fy3_Fc-7ztrOh4I,14565 +pip/_vendor/html5lib/treebuilders/dom.py,sha256=22whb0C71zXIsai5mamg6qzBEiigcBIvaDy4Asw3at0,8925 +pip/_vendor/html5lib/treebuilders/etree.py,sha256=w5ZFpKk6bAxnrwD2_BrF5EVC7vzz0L3LMi9Sxrbc_8w,12836 +pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=9gqDjs-IxsPhBYa5cpvv2FZ1KZlG83Giusy2lFmvIkE,14766 +pip/_vendor/html5lib/treewalkers/__init__.py,sha256=OBPtc1TU5mGyy18QDMxKEyYEz0wxFUUNj5v0-XgmYhY,5719 +pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-39.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-39.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-39.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-39.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-39.pyc,, +pip/_vendor/html5lib/treewalkers/base.py,sha256=ouiOsuSzvI0KgzdWP8PlxIaSNs9falhbiinAEc_UIJY,7476 +pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413 +pip/_vendor/html5lib/treewalkers/etree.py,sha256=xo1L5m9VtkfpFJK0pFmkLVajhqYYVisVZn3k9kYpPkI,4551 +pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=_b0LAVWLcVu9WaU_-w3D8f0IRSpCbjf667V-3NRdhTw,6357 +pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 +pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849 +pip/_vendor/idna/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/idna/__pycache__/codec.cpython-39.pyc,, +pip/_vendor/idna/__pycache__/compat.cpython-39.pyc,, +pip/_vendor/idna/__pycache__/core.cpython-39.pyc,, +pip/_vendor/idna/__pycache__/idnadata.cpython-39.pyc,, +pip/_vendor/idna/__pycache__/intranges.cpython-39.pyc,, +pip/_vendor/idna/__pycache__/package_data.cpython-39.pyc,, +pip/_vendor/idna/__pycache__/uts46data.cpython-39.pyc,, +pip/_vendor/idna/codec.py,sha256=QsPFD3Je8gN17rfs14e7zTGRWlnL7bNf2ZqcHTRVYHs,3453 +pip/_vendor/idna/compat.py,sha256=5A9xR04puRHCsyjBNewZlVSiarth7K1bZqyEOeob1fA,360 +pip/_vendor/idna/core.py,sha256=P2QG1RwnhYqke_iRW32NRD5T05fPrEGItqm9TC7Oivk,12689 +pip/_vendor/idna/idnadata.py,sha256=MmZj0WS3ewh_OUIhfg3ZtTrMo_VTm0KEEwp21Mxo_yc,73831 +pip/_vendor/idna/intranges.py,sha256=EqgXwyATAn-CTACInqH9tYsYAitGB2VcQ50RZt_Cpjs,1933 +pip/_vendor/idna/package_data.py,sha256=_028B4fvadRIaXMwMYjhuQPP3AxTIt1IRE7X6RDR4Mk,21 +pip/_vendor/idna/uts46data.py,sha256=DGzwDQv8JijY17I_7ondo3stjFjNnjvVAbA-z0k1XOE,201849 +pip/_vendor/msgpack/__init__.py,sha256=2gJwcsTIaAtCM0GMi2rU-_Y6kILeeQuqRkrQ22jSANc,1118 +pip/_vendor/msgpack/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/msgpack/__pycache__/_version.cpython-39.pyc,, +pip/_vendor/msgpack/__pycache__/exceptions.cpython-39.pyc,, +pip/_vendor/msgpack/__pycache__/ext.cpython-39.pyc,, +pip/_vendor/msgpack/__pycache__/fallback.cpython-39.pyc,, +pip/_vendor/msgpack/_version.py,sha256=dFR03oACnj4lsKd1RnwD7BPMiVI_FMygdOL1TOBEw_U,20 +pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081 +pip/_vendor/msgpack/ext.py,sha256=4l356Y4sVEcvCla2dh_cL57vh4GMhZfa3kuWHFHYz6A,6088 +pip/_vendor/msgpack/fallback.py,sha256=Rpv1Ldey8f8ueRnQznD4ARKBn9dxM2PywVNkXI8IEeE,38026 +pip/_vendor/packaging/__about__.py,sha256=p_OQloqH2saadcbUQmWEsWK857dI6_ff5E3aSiCqGFA,661 +pip/_vendor/packaging/__init__.py,sha256=b9Kk5MF7KxhhLgcDmiUWukN-LatWFxPdNug0joPhHSk,497 +pip/_vendor/packaging/__pycache__/__about__.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/_manylinux.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/_musllinux.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/_structures.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/markers.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/requirements.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/tags.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/utils.cpython-39.pyc,, +pip/_vendor/packaging/__pycache__/version.cpython-39.pyc,, +pip/_vendor/packaging/_manylinux.py,sha256=XcbiXB-qcjv3bcohp6N98TMpOP4_j3m-iOA8ptK2GWY,11488 +pip/_vendor/packaging/_musllinux.py,sha256=z5yeG1ygOPx4uUyLdqj-p8Dk5UBb5H_b0NIjW9yo8oA,4378 +pip/_vendor/packaging/_structures.py,sha256=TMiAgFbdUOPmIfDIfiHc3KFhSJ8kMjof2QS5I-2NyQ8,1629 +pip/_vendor/packaging/markers.py,sha256=AJBOcY8Oq0kYc570KuuPTkvuqjAlhufaE2c9sCUbm64,8487 +pip/_vendor/packaging/requirements.py,sha256=NtDlPBtojpn1IUC85iMjPNsUmufjpSlwnNA-Xb4m5NA,4676 +pip/_vendor/packaging/specifiers.py,sha256=MZ-fYcNL3u7pNrt-6g2EQO7AbRXkjc-SPEYwXMQbLmc,30964 +pip/_vendor/packaging/tags.py,sha256=akIerYw8W0sz4OW9HHozgawWnbt2GGOPm3sviW0jowY,15714 +pip/_vendor/packaging/utils.py,sha256=dJjeat3BS-TYn1RrUFVwufUMasbtzLfYRoy_HXENeFQ,4200 +pip/_vendor/packaging/version.py,sha256=AOLsewGcHCskMRdz2ykO3Gv7U7YZwgzE5Pj9ifjd6S8,14479 +pip/_vendor/pep517/__init__.py,sha256=Y1bATL2qbFNN6M_DQa4yyrwqjpIiL-j9T6kBmR0DS14,130 +pip/_vendor/pep517/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/pep517/__pycache__/build.cpython-39.pyc,, +pip/_vendor/pep517/__pycache__/check.cpython-39.pyc,, +pip/_vendor/pep517/__pycache__/colorlog.cpython-39.pyc,, +pip/_vendor/pep517/__pycache__/compat.cpython-39.pyc,, +pip/_vendor/pep517/__pycache__/dirtools.cpython-39.pyc,, +pip/_vendor/pep517/__pycache__/envbuild.cpython-39.pyc,, +pip/_vendor/pep517/__pycache__/meta.cpython-39.pyc,, +pip/_vendor/pep517/__pycache__/wrappers.cpython-39.pyc,, +pip/_vendor/pep517/build.py,sha256=2bar6EdjwIz2Dlfy94qdxn3oA9mVnnny40mfoT5f-qI,3457 +pip/_vendor/pep517/check.py,sha256=bCORq1WrHjhpTONa-zpAqG0EB9rHNuhO1ORu6DsDuL8,6084 +pip/_vendor/pep517/colorlog.py,sha256=Tk9AuYm_cLF3BKTBoSTJt9bRryn0aFojIQOwbfVUTxQ,4098 +pip/_vendor/pep517/compat.py,sha256=NmLImE5oiDT3gbEhJ4w7xeoMFcpAPrGu_NltBytSJUY,1253 +pip/_vendor/pep517/dirtools.py,sha256=2mkAkAL0mRz_elYFjRKuekTJVipH1zTn4tbf1EDev84,1129 +pip/_vendor/pep517/envbuild.py,sha256=zFde--rmzjXMLXcm7SA_3hDtgk5VCTA8hjpk88RbF6E,6100 +pip/_vendor/pep517/in_process/__init__.py,sha256=MyWoAi8JHdcBv7yXuWpUSVADbx6LSB9rZh7kTIgdA8Y,563 +pip/_vendor/pep517/in_process/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/pep517/in_process/__pycache__/_in_process.cpython-39.pyc,, +pip/_vendor/pep517/in_process/_in_process.py,sha256=D3waguyNSGcwosociD5USfcycYr2RCzCjYtxX5UHQmQ,11201 +pip/_vendor/pep517/meta.py,sha256=8mnM5lDnT4zXQpBTliJbRGfesH7iioHwozbDxALPS9Y,2463 +pip/_vendor/pep517/wrappers.py,sha256=impq7Cz_LL1iDF1iiOzYWB4MaEu6O6Gps7TJ5qsJz1Q,13429 +pip/_vendor/pkg_resources/__init__.py,sha256=NnpQ3g6BCHzpMgOR_OLBmYtniY4oOzdKpwqghfq_6ug,108287 +pip/_vendor/pkg_resources/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-39.pyc,, +pip/_vendor/pkg_resources/py31compat.py,sha256=CRk8fkiPRDLsbi5pZcKsHI__Pbmh_94L8mr9Qy9Ab2U,562 +pip/_vendor/platformdirs/__init__.py,sha256=3iz938Grn-6IRg8gSuMxJtgiBfH0xqRqAlMBo-vPGUw,12859 +pip/_vendor/platformdirs/__main__.py,sha256=SzGvNkYWuosrWXs2yL2VqcXEh-kivWq3-53-BpTco0o,1140 +pip/_vendor/platformdirs/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/platformdirs/__pycache__/__main__.cpython-39.pyc,, +pip/_vendor/platformdirs/__pycache__/android.cpython-39.pyc,, +pip/_vendor/platformdirs/__pycache__/api.cpython-39.pyc,, +pip/_vendor/platformdirs/__pycache__/macos.cpython-39.pyc,, +pip/_vendor/platformdirs/__pycache__/unix.cpython-39.pyc,, +pip/_vendor/platformdirs/__pycache__/version.cpython-39.pyc,, +pip/_vendor/platformdirs/__pycache__/windows.cpython-39.pyc,, +pip/_vendor/platformdirs/android.py,sha256=dadYfG2oc900YVi5AONQWw2WEvk-kmgkZs5iiNSiWiE,3994 +pip/_vendor/platformdirs/api.py,sha256=yhRR6RkcZzPBfJD4Sn90vCHZbRMQ9nwtnRaa93X1wR8,4922 +pip/_vendor/platformdirs/macos.py,sha256=vIowPYKkHksJcWVjqHQoa-oI1i2D0S7gsSdyFzZDJEA,2619 +pip/_vendor/platformdirs/unix.py,sha256=7JdDnsyTFn2IHC8IFdiNYH7_R8VS-rPx8ivh4_dT1DU,6905 +pip/_vendor/platformdirs/version.py,sha256=uUssQTtUqVP-PxbOSNBzNGRW27X5u1GvOllg--kzyuw,80 +pip/_vendor/platformdirs/windows.py,sha256=91nNccR0CSxX_myMppSvUT1qtQao6kaO96e6ior8-Xw,6416 +pip/_vendor/progress/__init__.py,sha256=1HejNZtv2ouUNQeStUDAtZrtwkz_3FmYKQ476hJ7zOs,5294 +pip/_vendor/progress/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/progress/__pycache__/bar.cpython-39.pyc,, +pip/_vendor/progress/__pycache__/colors.cpython-39.pyc,, +pip/_vendor/progress/__pycache__/counter.cpython-39.pyc,, +pip/_vendor/progress/__pycache__/spinner.cpython-39.pyc,, +pip/_vendor/progress/bar.py,sha256=GbedY0oZ-Q1duXjmvVLO0tSf-uTSH7hJ3zzyI91Esws,2942 +pip/_vendor/progress/colors.py,sha256=cCYXQnYFYVmQKKmYEbQ_lj6SPSFzdw4FN98F2x2kR-U,2655 +pip/_vendor/progress/counter.py,sha256=zYt9DWH0_05s8Q9TrJwHVud-WwsyyaR3PwYtk5hxwwQ,1613 +pip/_vendor/progress/spinner.py,sha256=u5ElzW94XEiLGH-aAlr54VJtKfeK745xr6UfGvvflzU,1461 +pip/_vendor/pyparsing.py,sha256=J1b4z3S_KwyJW7hKGnoN-hXW9pgMIzIP6QThyY5yJq4,273394 +pip/_vendor/requests/__init__.py,sha256=g4Bh1QYh6JKjMS4YLobx0uOLq-41sINaXjvbhX2VI8g,5113 +pip/_vendor/requests/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/__version__.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/_internal_utils.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/adapters.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/api.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/auth.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/certs.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/compat.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/cookies.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/exceptions.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/help.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/hooks.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/models.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/packages.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/sessions.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/status_codes.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/structures.cpython-39.pyc,, +pip/_vendor/requests/__pycache__/utils.cpython-39.pyc,, +pip/_vendor/requests/__version__.py,sha256=PZEyPTSIN_jRIAIB51wV7pw81m3qAw0InSR7OrKZUnE,441 +pip/_vendor/requests/_internal_utils.py,sha256=Zx3PnEUccyfsB-ie11nZVAW8qClJy0gx1qNME7rgT18,1096 +pip/_vendor/requests/adapters.py,sha256=ERCyw7DS8_GmsyAHV0jo6amFT6nJGAcNjPE62H5V4mo,23532 +pip/_vendor/requests/api.py,sha256=hjuoP79IAEmX6Dysrw8t032cLfwLHxbI_wM4gC5G9t0,6402 +pip/_vendor/requests/auth.py,sha256=OMoJIVKyRLy9THr91y8rxysZuclwPB-K1Xg1zBomUhQ,10207 +pip/_vendor/requests/certs.py,sha256=nXRVq9DtGmv_1AYbwjTu9UrgAcdJv05ZvkNeaoLOZxY,465 +pip/_vendor/requests/compat.py,sha256=LQWuCR4qXk6w7-qQopXyz0WNHUdAD40k0mKnaAEf1-g,2045 +pip/_vendor/requests/cookies.py,sha256=Y-bKX6TvW3FnYlE6Au0SXtVVWcaNdFvuAwQxw-G0iTI,18430 +pip/_vendor/requests/exceptions.py,sha256=dwIi512RCDqXJ2T81nLC88mqPNhUFnOI_CgKKDXhTO8,3250 +pip/_vendor/requests/help.py,sha256=dyhe3lcmHXnFCzDiZVjcGmVvvO_jtsfAm-AC542ndw8,3972 +pip/_vendor/requests/hooks.py,sha256=QReGyy0bRcr5rkwCuObNakbYsc7EkiKeBwG4qHekr2Q,757 +pip/_vendor/requests/models.py,sha256=9_LS_t1t6HbbaWFE3ZkxGmmHN2V8BgxziiOU84rrQ50,34924 +pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695 +pip/_vendor/requests/sessions.py,sha256=57O4ud9yRL6eLYh-dtFbqC1kO4d_EwZcCgYXEkujlfs,30168 +pip/_vendor/requests/status_codes.py,sha256=gT79Pbs_cQjBgp-fvrUgg1dn2DQO32bDj4TInjnMPSc,4188 +pip/_vendor/requests/structures.py,sha256=msAtr9mq1JxHd-JRyiILfdFlpbJwvvFuP3rfUQT_QxE,3005 +pip/_vendor/requests/utils.py,sha256=U_-i6WxLw-67KEij43xHbcvL0DdeQ5Jbd4hfifWJzQY,31394 +pip/_vendor/resolvelib/__init__.py,sha256=fzWkeoLV8ol6l2fvBVRZZLylOePc9w9tKRvUb8RJsCY,537 +pip/_vendor/resolvelib/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/resolvelib/__pycache__/providers.cpython-39.pyc,, +pip/_vendor/resolvelib/__pycache__/reporters.cpython-39.pyc,, +pip/_vendor/resolvelib/__pycache__/resolvers.cpython-39.pyc,, +pip/_vendor/resolvelib/__pycache__/structs.cpython-39.pyc,, +pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-39.pyc,, +pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156 +pip/_vendor/resolvelib/providers.py,sha256=roVmFBItQJ0TkhNua65h8LdNny7rmeqVEXZu90QiP4o,5872 +pip/_vendor/resolvelib/reporters.py,sha256=hQvvXuuEBOyEWO8KDfLsWKVjX55UFMAUwO0YZMNpzAw,1364 +pip/_vendor/resolvelib/resolvers.py,sha256=UjFUEVrUa1hCzfEEakmjHEjYAL9J5ACJmwZyHFdmzvE,17540 +pip/_vendor/resolvelib/structs.py,sha256=IVIYof6sA_N4ZEiE1C1UhzTX495brCNnyCdgq6CYq28,4794 +pip/_vendor/six.py,sha256=TOOfQi7nFGfMrIvtdr6wX4wyHH8M7aknmuLfo2cBBrM,34549 +pip/_vendor/tenacity/__init__.py,sha256=GLLsTFD4Bd5VDgTR6mU_FxyOsrxc48qONorVaRebeD4,18257 +pip/_vendor/tenacity/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/_asyncio.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/_utils.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/after.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/before.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/before_sleep.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/nap.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/retry.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/stop.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-39.pyc,, +pip/_vendor/tenacity/__pycache__/wait.cpython-39.pyc,, +pip/_vendor/tenacity/_asyncio.py,sha256=HEb0BVJEeBJE9P-m9XBxh1KcaF96BwoeqkJCL5sbVcQ,3314 +pip/_vendor/tenacity/_utils.py,sha256=-y68scDcyoqvTJuJJ0GTfjdSCljEYlbCYvgk7nM4NdM,1944 +pip/_vendor/tenacity/after.py,sha256=dlmyxxFy2uqpLXDr838DiEd7jgv2AGthsWHGYcGYsaI,1496 +pip/_vendor/tenacity/before.py,sha256=7XtvRmO0dRWUp8SVn24OvIiGFj8-4OP5muQRUiWgLh0,1376 +pip/_vendor/tenacity/before_sleep.py,sha256=ThyDvqKU5yle_IvYQz_b6Tp6UjUS0PhVp6zgqYl9U6Y,1908 +pip/_vendor/tenacity/nap.py,sha256=fRWvnz1aIzbIq9Ap3gAkAZgDH6oo5zxMrU6ZOVByq0I,1383 +pip/_vendor/tenacity/retry.py,sha256=62R71W59bQjuNyFKsDM7hE2aEkEPtwNBRA0tnsEvgSk,6645 +pip/_vendor/tenacity/stop.py,sha256=sKHmHaoSaW6sKu3dTxUVKr1-stVkY7lw4Y9yjZU30zQ,2790 +pip/_vendor/tenacity/tornadoweb.py,sha256=E8lWO2nwe6dJgoB-N2HhQprYLDLB_UdSgFnv-EN6wKE,2145 +pip/_vendor/tenacity/wait.py,sha256=e_Saa6I2tsNLpCL1t9897wN2fGb0XQMQlE4bU2t9V2w,6691 +pip/_vendor/tomli/__init__.py,sha256=z1Elt0nLAqU5Y0DOn9p__8QnLWavlEOpRyQikdYgKro,230 +pip/_vendor/tomli/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/tomli/__pycache__/_parser.cpython-39.pyc,, +pip/_vendor/tomli/__pycache__/_re.cpython-39.pyc,, +pip/_vendor/tomli/_parser.py,sha256=50BD4o9YbzFAGAYyZLqZC8F81DQ7iWWyJnrHNwBKa6A,22415 +pip/_vendor/tomli/_re.py,sha256=5GPfgXKteg7wRFCF-DzlkAPI2ilHbkMK2-JC49F-AJQ,2681 +pip/_vendor/urllib3/__init__.py,sha256=j3yzHIbmW7CS-IKQJ9-PPQf_YKO8EOAey_rMW0UR7us,2763 +pip/_vendor/urllib3/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/_collections.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/_version.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/connection.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/connectionpool.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/exceptions.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/fields.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/filepost.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/poolmanager.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/request.cpython-39.pyc,, +pip/_vendor/urllib3/__pycache__/response.cpython-39.pyc,, +pip/_vendor/urllib3/_collections.py,sha256=Rp1mVyBgc_UlAcp6M3at1skJBXR5J43NawRTvW2g_XY,10811 +pip/_vendor/urllib3/_version.py,sha256=CA4bKbKLwUBfKitbVR-44Whe53HWyInIVElDQQniAJU,63 +pip/_vendor/urllib3/connection.py,sha256=8TiEbQrJMgySqOllKNeX5tMv8nluKRjNj5j9hyzS6x0,20080 +pip/_vendor/urllib3/connectionpool.py,sha256=FQoodlNAP1KeUi4htGdl5TJEvKL5LWisCbmFNewxRpg,37587 +pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957 +pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-39.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=eRy1Mj-wpg7sR6-OSvnSV4jUbjMT464dLN_CWxbIRVw,17649 +pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922 +pip/_vendor/urllib3/contrib/appengine.py,sha256=lfzpHFmJiO82shClLEm3QB62SYgHWnjpZOH_2JhU5Tc,11034 +pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=ej9gGvfAb2Gt00lafFp45SIoRz-QwrQ4WChm6gQmAlM,4538 +pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=DD4pInv_3OEEGffEFynBoirc8ldR789sLmGSKukzA0E,16900 +pip/_vendor/urllib3/contrib/securetransport.py,sha256=4qUKo7PUV-vVIqXmr2BD-sH7qplB918jiD5eNsRI9vU,34449 +pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097 +pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217 +pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579 +pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440 +pip/_vendor/urllib3/packages/__init__.py,sha256=h4BLhD4tLaBx1adaDtKXfupsgqY0wWLXb_f1_yVlV6A,108 +pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/urllib3/packages/__pycache__/six.cpython-39.pyc,, +pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-39.pyc,, +pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417 +pip/_vendor/urllib3/packages/six.py,sha256=1LVW7ljqRirFlfExjwl-v1B7vSAUNTmzGMs-qays2zg,34666 +pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py,sha256=ZVMwCkHx-py8ERsxxM3Il-MiREZktV-8iLBmCfRRHI4,927 +pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-39.pyc,, +pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=6dZ-q074g7XhsJ27MFCgkct8iVNZB3sMZvKhf-KUVy0,5679 +pip/_vendor/urllib3/poolmanager.py,sha256=zcldh-BB6YUuyML51JdMhusEeaSJoXFlquGRZ1haa7Q,20716 +pip/_vendor/urllib3/request.py,sha256=ZFSIqX0C6WizixecChZ3_okyu7BEv0lZu1VT0s6h4SM,5985 +pip/_vendor/urllib3/response.py,sha256=a5H0gjFZtNE_zvrThhaXBqFVk4zDsgROoh6rStxL_kk,37805 +pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155 +pip/_vendor/urllib3/util/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/connection.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/proxy.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/queue.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/request.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/response.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/retry.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/timeout.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/url.cpython-39.pyc,, +pip/_vendor/urllib3/util/__pycache__/wait.cpython-39.pyc,, +pip/_vendor/urllib3/util/connection.py,sha256=KykjNIXzUZEzeKEOpl5xvKs6IsESXP9o9eTrjE0W_Ys,4920 +pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605 +pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498 +pip/_vendor/urllib3/util/request.py,sha256=NnzaEKQ1Pauw5MFMV6HmgEMHITf0Aua9fQuzi2uZzGc,4123 +pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510 +pip/_vendor/urllib3/util/retry.py,sha256=vhwG-XxNEJQ9Bc-JQjE5qV4OkKG0ojgqXzRv2y-hFC0,21438 +pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177 +pip/_vendor/urllib3/util/ssltransport.py,sha256=F_UncOXGcc-MgeWFTA1H4QCt_RRNQXRbF6onje3SyHY,6931 +pip/_vendor/urllib3/util/timeout.py,sha256=QSbBUNOB9yh6AnDn61SrLQ0hg5oz0I9-uXEG91AJuIg,10003 +pip/_vendor/urllib3/util/url.py,sha256=QVEzcbHipbXyCWwH6R4K4TR-N8T4LM55WEMwNUTBmLE,14047 +pip/_vendor/urllib3/util/wait.py,sha256=3MUKRSAUJDB2tgco7qRUskW0zXGAWYvRRE4Q1_6xlLs,5404 +pip/_vendor/vendor.txt,sha256=vux9Tgc3pSRZZnXz9TNDdn514NdkDdnb-QPC0LCHkK4,432 +pip/_vendor/webencodings/__init__.py,sha256=qOBJIuPy_4ByYH6W_bNgJF-qYQ2DoU-dKsDu5yRWCXg,10579 +pip/_vendor/webencodings/__pycache__/__init__.cpython-39.pyc,, +pip/_vendor/webencodings/__pycache__/labels.cpython-39.pyc,, +pip/_vendor/webencodings/__pycache__/mklabels.cpython-39.pyc,, +pip/_vendor/webencodings/__pycache__/tests.cpython-39.pyc,, +pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-39.pyc,, +pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 +pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 +pip/_vendor/webencodings/tests.py,sha256=OtGLyjhNY1fvkW1GvLJ_FV9ZoqC9Anyjr7q3kxTbzNs,6563 +pip/_vendor/webencodings/x_user_defined.py,sha256=yOqWSdmpytGfUgh_Z6JYgDNhoc-BAHyyeeT15Fr42tM,4307 +pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286 diff --git a/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/REQUESTED b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/WHEEL b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/WHEEL new file mode 100644 index 0000000..becc9a6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.37.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/entry_points.txt b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/entry_points.txt new file mode 100644 index 0000000..9609f72 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/entry_points.txt @@ -0,0 +1,5 @@ +[console_scripts] +pip = pip._internal.cli.main:main +pip3 = pip._internal.cli.main:main +pip3.9 = pip._internal.cli.main:main + diff --git a/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/top_level.txt b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/top_level.txt new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip-21.3.1.dist-info/top_level.txt @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.9/site-packages/pip/__init__.py b/.venv/lib/python3.9/site-packages/pip/__init__.py new file mode 100644 index 0000000..acead99 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/__init__.py @@ -0,0 +1,13 @@ +from typing import List, Optional + +__version__ = "21.3.1" + + +def main(args: Optional[List[str]] = None) -> int: + """This is an internal API only meant for use by pip's own console scripts. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/.venv/lib/python3.9/site-packages/pip/__main__.py b/.venv/lib/python3.9/site-packages/pip/__main__.py new file mode 100644 index 0000000..fe34a7b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/__main__.py @@ -0,0 +1,31 @@ +import os +import sys +import warnings + +# Remove '' and current working directory from the first entry +# of sys.path, if present to avoid using current directory +# in pip commands check, freeze, install, list and show, +# when invoked as python -m pip +if sys.path[0] in ("", os.getcwd()): + sys.path.pop(0) + +# If we are running from a wheel, add the wheel to sys.path +# This allows the usage python pip-*.whl/pip install pip-*.whl +if __package__ == "": + # __file__ is pip-*.whl/pip/__main__.py + # first dirname call strips of '/__main__.py', second strips off '/pip' + # Resulting path is the name of the wheel itself + # Add that to sys.path so we can import pip + path = os.path.dirname(os.path.dirname(__file__)) + sys.path.insert(0, path) + +if __name__ == "__main__": + # Work around the error reported in #9540, pending a proper fix. + # Note: It is essential the warning filter is set *before* importing + # pip, as the deprecation happens at import time, not runtime. + warnings.filterwarnings( + "ignore", category=DeprecationWarning, module=".*packaging\\.version" + ) + from pip._internal.cli.main import main as _main + + sys.exit(_main()) diff --git a/.venv/lib/python3.9/site-packages/pip/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4208f31edc26a6b19f9628dfc2a2b12044e0536f GIT binary patch literal 647 zcmYk4Piqu06u^_r>~vi%c<|Dbxygbiv=y`>q6mT@RnXI3hV15bC+$oUlFTks>Pb(Y z1uuR9ztUVi`4v3*vZC~n_jt*?KfjlZ+TWiMlrLY!IZ#4==FN2}aq}EC9-+}h)0T8} zK|8i!lxVgn^d2yvP#%y20ux<+XL_Qm&yz)^i}z$c{e^jC&c^bMiD{g^^~pG^+RN(b zP#lZH)BH(=bsVbzsSkFA6#s>xm-QuTyn{wl%`(A9O34+yBA+PsC@#N!XiVg|l;y@I z2-tzYc=wt++YY<~WfMPhf%g&ka^T+hdy%`XHg@M?9T)(D%qYs@sMu7w}QvQx%pgqQ)y zZkcL?v#fow_Q1oR`}n6=H?i(7vrd2 dQWSQNFk}>WdPS#kmR!;~%i@@(ztd>S{s6mVwEO@7 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/__init__.py new file mode 100644 index 0000000..faf25af --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/__init__.py @@ -0,0 +1,19 @@ +from typing import List, Optional + +import pip._internal.utils.inject_securetransport # noqa +from pip._internal.utils import _log + +# init_logging() must be called before any call to logging.getLogger() +# which happens at import of most modules. +_log.init_logging() + + +def main(args: (Optional[List[str]]) = None) -> int: + """This is preserved for old console scripts that may still be referencing + it. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args, _nowarn=True) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..82584b738b0f2fc9c8efb86a8930bbdd53a238f1 GIT binary patch literal 784 zcmZuvJ&)8d5VezRHtg+5NHko9+eHu;Ai$6uGAwN@aRSFEA;R!EMNg}Bx zJzdg1TV^!Hna-C5+FVcia#>OW<+tf~f_GEMfI@XZ4hY&73ZJD62B%0%!uo_auLp#~HE)>(WT{50if zeu8G_{~$iC^ta)i?SU(Ij*!k-ANfj!?n0aaL_Ro$MG-?br%FS!5&>Pc_qpy6qneW*~~%qluBs{9XHYun8L literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/build_env.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/build_env.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..47a5f6a3bdc1e38d11dd96a14344390a024088c5 GIT binary patch literal 9484 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 W{|`)zPdqzOni#>~D=23sa{mX$0(-^) literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/main.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/main.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a346eec1baeacd3b62cb366e9c357b680a89af78 GIT binary patch literal 633 zcmYjPJ&zMH5Vd!cB}AM=L30&uBY|Cj1cwkpLZU)P!BuG@XFbU}x4X7xygB7`R8Ub< zB6|MPwp9EDD#k%N-N^IwY|Y2>*!JXPF4(?(*SiZT#P7VhYZKnQWhc$xgp;l4Q zTc4U?t?SU4c!<_SAB`s(fXs{MXD{`!5av5An^yVg*SO5lv5v;{{VMNst5o8 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/pyproject.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/pyproject.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e354393700a6b3070d8760829dec58b586667f3f GIT binary patch literal 3707 zcmb7H&2QVt73WYCO-q#QIB6TFU);2)BOs9+^eYXr>2{k1nj-K9o1p0mNCjFmvglAG zGc$_U3U#UXRAAd2a@wXq(p&$JJ>?H53Le{2d+lw3CjGskB+J2Wfzsf3X87Kl_kQnV zp29|>X5snW)AoMn8<7VqFy&oOX|v)Jm=e>-L)yK6I=SK`XZ={loow>omW zuGw?qm66x=%)A<}j%wZ7sNSucwHy1RMz_H%;fN+*d1iBuuYT-w*TlM5=QXVB+{gNq zuz6$8;>|y^BfGmHT+!ULhz5VI*x0oA+OsNO=chn>nzK7rYvZ5L(%NaUqLzds!Sy(c zMXOR&ewG{-&aFu4!h1i{QJRD?h^jgr#Zk*HHf|=5!Z_j|h==1yijhckQD0hs_SDTp z=`fB%;(kxcRD!RP?(P?^6nZR^KBKc|56vrhe~woHS4&&DrC~;TPTQPu`(vzcSV!!L z)UNEDV75W;5F@>3G33_$^(li0Mk0P?G3%ktEikejC{c@4M7kw?QB;&Bz3ldO;Y3=D z{$j~>2>3kh4AYV5MA-wS##xq1-Pw)Q@F3h5LU+bl)QggXQ1ad&ibZcXRDyTfk3{mQ z6Gyw9>`)KWnl$zKGy@mCWQZSAw?c8-95VFPG; zXVN^jkHQ8~Wv8levQQ5TXFrV+X!!|3Tr;)<#;ZTGYl0XNc^Fmw#LwE7~JP3r`_F zGiYGs^(Zk)0Lb9^LmCmz27tc-ju`;#1)Dmvxs7=>cT_vCs}VicBJ@>hHg_ptGg^#hp7AIGnNdgh`v%czw_2K5sm;p$YA?CrqsqHE&K= z`5I2ej@*XztNUJFq3ZKViGat~Hmzw*ujaKQ;<~$_*;vrjZdmu)@ z^-F7}P3`Bk+|QeN;|SKaz7oER%5*CYd7y_PSOjL9f+e8*Z`W!8p4*{Bs35u3RkNnO z<1h;@1-}TD5rIt^P^b!oFAr|NcRN5F2B-#op-`Llej4ngiC73BL5pW3!emLzFjUEw z4p2Gbs2}P0Fi@H3M}tW4_CmlyXA|JiXiI&Oc?&V~y!f923=t}t zL1w`UYfU17^)5i9oSL6K%UQZZf&;N70r3Ke;KCr43n2>(fBswATSXWcJf)I$9`znqREa3nF764>2`@~74+c-1E?NV_J za2rK3O$gW%gp0Cn3`Z=bK{O&DOWv|@mX=+Zsf#O24_hadF0r8d{ShEdm*XgqX{wLI zuVs#(+zWUrRFI@P2(wItlDKvW?%U?RB)`*jcr{2wM9v7d=E1ZDE-V*uY;tca7^LHb zwqVvk3J1*eKm&6D8?|xziI44B%&V>7U>Nm>=@Sv@3m8PSd(4A+VMQ* zW6yr=I4)*1cWn0+)>XIaF{k1?4t8oam)Wn})n?UxZM!w1VzzDn$9e74JvLi|0&7UL zA*VT`0o`k&Yu0Mmby%(8Fwd4hf<~<~#tTKgpQ1GO={{4ETH3*&ARJ#^_jmBvTi^GiGJGRVL;k4>tas&o}OtvG9_=ly$IeAE}_w~?CpeisQ^`nW-7 wQln~oY_wfM+u&}xa_`zG<>Odfr+!+U!$5eRv3<5~`;~QP-7$E(K679F7sihr;{X5v literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b1196651f8f8a65f9a0e3e4c0c03fc20d6cee77 GIT binary patch literal 5346 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e74acffc2abe3465bb935c55e7ef6bbd1ac28ebd GIT binary patch literal 9134 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/build_env.py b/.venv/lib/python3.9/site-packages/pip/_internal/build_env.py new file mode 100644 index 0000000..8faf1cf --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/build_env.py @@ -0,0 +1,293 @@ +"""Build Environment used for isolation during sdist building +""" + +import contextlib +import logging +import os +import pathlib +import sys +import textwrap +import zipfile +from collections import OrderedDict +from sysconfig import get_paths +from types import TracebackType +from typing import TYPE_CHECKING, Iterable, Iterator, List, Optional, Set, Tuple, Type + +from pip._vendor.certifi import where +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.version import Version + +from pip import __file__ as pip_location +from pip._internal.cli.spinners import open_spinner +from pip._internal.locations import get_platlib, get_prefixed_libs, get_purelib +from pip._internal.metadata import get_environment +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds + +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + +logger = logging.getLogger(__name__) + + +class _Prefix: + def __init__(self, path: str) -> None: + self.path = path + self.setup = False + self.bin_dir = get_paths( + "nt" if os.name == "nt" else "posix_prefix", + vars={"base": path, "platbase": path}, + )["scripts"] + self.lib_dirs = get_prefixed_libs(path) + + +@contextlib.contextmanager +def _create_standalone_pip() -> Iterator[str]: + """Create a "standalone pip" zip file. + + The zip file's content is identical to the currently-running pip. + It will be used to install requirements into the build environment. + """ + source = pathlib.Path(pip_location).resolve().parent + + # Return the current instance if `source` is not a directory. We can't build + # a zip from this, and it likely means the instance is already standalone. + if not source.is_dir(): + yield str(source) + return + + with TempDirectory(kind="standalone-pip") as tmp_dir: + pip_zip = os.path.join(tmp_dir.path, "__env_pip__.zip") + kwargs = {} + if sys.version_info >= (3, 8): + kwargs["strict_timestamps"] = False + with zipfile.ZipFile(pip_zip, "w", **kwargs) as zf: + for child in source.rglob("*"): + zf.write(child, child.relative_to(source.parent).as_posix()) + yield os.path.join(pip_zip, "pip") + + +class BuildEnvironment: + """Creates and manages an isolated environment to install build deps""" + + def __init__(self) -> None: + temp_dir = TempDirectory(kind=tempdir_kinds.BUILD_ENV, globally_managed=True) + + self._prefixes = OrderedDict( + (name, _Prefix(os.path.join(temp_dir.path, name))) + for name in ("normal", "overlay") + ) + + self._bin_dirs: List[str] = [] + self._lib_dirs: List[str] = [] + for prefix in reversed(list(self._prefixes.values())): + self._bin_dirs.append(prefix.bin_dir) + self._lib_dirs.extend(prefix.lib_dirs) + + # Customize site to: + # - ensure .pth files are honored + # - prevent access to system site packages + system_sites = { + os.path.normcase(site) for site in (get_purelib(), get_platlib()) + } + self._site_dir = os.path.join(temp_dir.path, "site") + if not os.path.exists(self._site_dir): + os.mkdir(self._site_dir) + with open(os.path.join(self._site_dir, "sitecustomize.py"), "w") as fp: + fp.write( + textwrap.dedent( + """ + import os, site, sys + + # First, drop system-sites related paths. + original_sys_path = sys.path[:] + known_paths = set() + for path in {system_sites!r}: + site.addsitedir(path, known_paths=known_paths) + system_paths = set( + os.path.normcase(path) + for path in sys.path[len(original_sys_path):] + ) + original_sys_path = [ + path for path in original_sys_path + if os.path.normcase(path) not in system_paths + ] + sys.path = original_sys_path + + # Second, add lib directories. + # ensuring .pth file are processed. + for path in {lib_dirs!r}: + assert not path in sys.path + site.addsitedir(path) + """ + ).format(system_sites=system_sites, lib_dirs=self._lib_dirs) + ) + + def __enter__(self) -> None: + self._save_env = { + name: os.environ.get(name, None) + for name in ("PATH", "PYTHONNOUSERSITE", "PYTHONPATH") + } + + path = self._bin_dirs[:] + old_path = self._save_env["PATH"] + if old_path: + path.extend(old_path.split(os.pathsep)) + + pythonpath = [self._site_dir] + + os.environ.update( + { + "PATH": os.pathsep.join(path), + "PYTHONNOUSERSITE": "1", + "PYTHONPATH": os.pathsep.join(pythonpath), + } + ) + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + for varname, old_value in self._save_env.items(): + if old_value is None: + os.environ.pop(varname, None) + else: + os.environ[varname] = old_value + + def check_requirements( + self, reqs: Iterable[str] + ) -> Tuple[Set[Tuple[str, str]], Set[str]]: + """Return 2 sets: + - conflicting requirements: set of (installed, wanted) reqs tuples + - missing requirements: set of reqs + """ + missing = set() + conflicting = set() + if reqs: + env = get_environment(self._lib_dirs) + for req_str in reqs: + req = Requirement(req_str) + dist = env.get_distribution(req.name) + if not dist: + missing.add(req_str) + continue + if isinstance(dist.version, Version): + installed_req_str = f"{req.name}=={dist.version}" + else: + installed_req_str = f"{req.name}==={dist.version}" + if dist.version not in req.specifier: + conflicting.add((installed_req_str, req_str)) + # FIXME: Consider direct URL? + return conflicting, missing + + def install_requirements( + self, + finder: "PackageFinder", + requirements: Iterable[str], + prefix_as_string: str, + message: str, + ) -> None: + prefix = self._prefixes[prefix_as_string] + assert not prefix.setup + prefix.setup = True + if not requirements: + return + with contextlib.ExitStack() as ctx: + # TODO: Remove this block when dropping 3.6 support. Python 3.6 + # lacks importlib.resources and pep517 has issues loading files in + # a zip, so we fallback to the "old" method by adding the current + # pip directory to the child process's sys.path. + if sys.version_info < (3, 7): + pip_runnable = os.path.dirname(pip_location) + else: + pip_runnable = ctx.enter_context(_create_standalone_pip()) + self._install_requirements( + pip_runnable, + finder, + requirements, + prefix, + message, + ) + + @staticmethod + def _install_requirements( + pip_runnable: str, + finder: "PackageFinder", + requirements: Iterable[str], + prefix: _Prefix, + message: str, + ) -> None: + args: List[str] = [ + sys.executable, + pip_runnable, + "install", + "--ignore-installed", + "--no-user", + "--prefix", + prefix.path, + "--no-warn-script-location", + ] + if logger.getEffectiveLevel() <= logging.DEBUG: + args.append("-v") + for format_control in ("no_binary", "only_binary"): + formats = getattr(finder.format_control, format_control) + args.extend( + ( + "--" + format_control.replace("_", "-"), + ",".join(sorted(formats or {":none:"})), + ) + ) + + index_urls = finder.index_urls + if index_urls: + args.extend(["-i", index_urls[0]]) + for extra_index in index_urls[1:]: + args.extend(["--extra-index-url", extra_index]) + else: + args.append("--no-index") + for link in finder.find_links: + args.extend(["--find-links", link]) + + for host in finder.trusted_hosts: + args.extend(["--trusted-host", host]) + if finder.allow_all_prereleases: + args.append("--pre") + if finder.prefer_binary: + args.append("--prefer-binary") + args.append("--") + args.extend(requirements) + extra_environ = {"_PIP_STANDALONE_CERT": where()} + with open_spinner(message) as spinner: + call_subprocess(args, spinner=spinner, extra_environ=extra_environ) + + +class NoOpBuildEnvironment(BuildEnvironment): + """A no-op drop-in replacement for BuildEnvironment""" + + def __init__(self) -> None: + pass + + def __enter__(self) -> None: + pass + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + pass + + def cleanup(self) -> None: + pass + + def install_requirements( + self, + finder: "PackageFinder", + requirements: Iterable[str], + prefix_as_string: str, + message: str, + ) -> None: + raise NotImplementedError() diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cache.py b/.venv/lib/python3.9/site-packages/pip/_internal/cache.py new file mode 100644 index 0000000..1d6df22 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cache.py @@ -0,0 +1,264 @@ +"""Cache Management +""" + +import hashlib +import json +import logging +import os +from typing import Any, Dict, List, Optional, Set + +from pip._vendor.packaging.tags import Tag, interpreter_name, interpreter_version +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InvalidWheelFilename +from pip._internal.models.format_control import FormatControl +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds +from pip._internal.utils.urls import path_to_url + +logger = logging.getLogger(__name__) + + +def _hash_dict(d: Dict[str, str]) -> str: + """Return a stable sha224 of a dictionary.""" + s = json.dumps(d, sort_keys=True, separators=(",", ":"), ensure_ascii=True) + return hashlib.sha224(s.encode("ascii")).hexdigest() + + +class Cache: + """An abstract class - provides cache directories for data from links + + + :param cache_dir: The root of the cache. + :param format_control: An object of FormatControl class to limit + binaries being read from the cache. + :param allowed_formats: which formats of files the cache should store. + ('binary' and 'source' are the only allowed values) + """ + + def __init__( + self, cache_dir: str, format_control: FormatControl, allowed_formats: Set[str] + ) -> None: + super().__init__() + assert not cache_dir or os.path.isabs(cache_dir) + self.cache_dir = cache_dir or None + self.format_control = format_control + self.allowed_formats = allowed_formats + + _valid_formats = {"source", "binary"} + assert self.allowed_formats.union(_valid_formats) == _valid_formats + + def _get_cache_path_parts(self, link: Link) -> List[str]: + """Get parts of part that must be os.path.joined with cache_dir""" + + # We want to generate an url to use as our cache key, we don't want to + # just re-use the URL because it might have other items in the fragment + # and we don't care about those. + key_parts = {"url": link.url_without_fragment} + if link.hash_name is not None and link.hash is not None: + key_parts[link.hash_name] = link.hash + if link.subdirectory_fragment: + key_parts["subdirectory"] = link.subdirectory_fragment + + # Include interpreter name, major and minor version in cache key + # to cope with ill-behaved sdists that build a different wheel + # depending on the python version their setup.py is being run on, + # and don't encode the difference in compatibility tags. + # https://github.com/pypa/pip/issues/7296 + key_parts["interpreter_name"] = interpreter_name() + key_parts["interpreter_version"] = interpreter_version() + + # Encode our key url with sha224, we'll use this because it has similar + # security properties to sha256, but with a shorter total output (and + # thus less secure). However the differences don't make a lot of + # difference for our use case here. + hashed = _hash_dict(key_parts) + + # We want to nest the directories some to prevent having a ton of top + # level directories where we might run out of sub directories on some + # FS. + parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]] + + return parts + + def _get_candidates(self, link: Link, canonical_package_name: str) -> List[Any]: + can_not_cache = not self.cache_dir or not canonical_package_name or not link + if can_not_cache: + return [] + + formats = self.format_control.get_allowed_formats(canonical_package_name) + if not self.allowed_formats.intersection(formats): + return [] + + candidates = [] + path = self.get_path_for_link(link) + if os.path.isdir(path): + for candidate in os.listdir(path): + candidates.append((candidate, path)) + return candidates + + def get_path_for_link(self, link: Link) -> str: + """Return a directory to store cached items in for link.""" + raise NotImplementedError() + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + """Returns a link to a cached item if it exists, otherwise returns the + passed link. + """ + raise NotImplementedError() + + +class SimpleWheelCache(Cache): + """A cache of wheels for future installs.""" + + def __init__(self, cache_dir: str, format_control: FormatControl) -> None: + super().__init__(cache_dir, format_control, {"binary"}) + + def get_path_for_link(self, link: Link) -> str: + """Return a directory to store cached wheels for link + + Because there are M wheels for any one sdist, we provide a directory + to cache them in, and then consult that directory when looking up + cache hits. + + We only insert things into the cache if they have plausible version + numbers, so that we don't contaminate the cache with things that were + not unique. E.g. ./package might have dozens of installs done for it + and build a version of 0.0...and if we built and cached a wheel, we'd + end up using the same wheel even if the source has been edited. + + :param link: The link of the sdist for which this will cache wheels. + """ + parts = self._get_cache_path_parts(link) + assert self.cache_dir + # Store wheels within the root cache_dir + return os.path.join(self.cache_dir, "wheels", *parts) + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + candidates = [] + + if not package_name: + return link + + canonical_package_name = canonicalize_name(package_name) + for wheel_name, wheel_dir in self._get_candidates(link, canonical_package_name): + try: + wheel = Wheel(wheel_name) + except InvalidWheelFilename: + continue + if canonicalize_name(wheel.name) != canonical_package_name: + logger.debug( + "Ignoring cached wheel %s for %s as it " + "does not match the expected distribution name %s.", + wheel_name, + link, + package_name, + ) + continue + if not wheel.supported(supported_tags): + # Built for a different python/arch/etc + continue + candidates.append( + ( + wheel.support_index_min(supported_tags), + wheel_name, + wheel_dir, + ) + ) + + if not candidates: + return link + + _, wheel_name, wheel_dir = min(candidates) + return Link(path_to_url(os.path.join(wheel_dir, wheel_name))) + + +class EphemWheelCache(SimpleWheelCache): + """A SimpleWheelCache that creates it's own temporary cache directory""" + + def __init__(self, format_control: FormatControl) -> None: + self._temp_dir = TempDirectory( + kind=tempdir_kinds.EPHEM_WHEEL_CACHE, + globally_managed=True, + ) + + super().__init__(self._temp_dir.path, format_control) + + +class CacheEntry: + def __init__( + self, + link: Link, + persistent: bool, + ): + self.link = link + self.persistent = persistent + + +class WheelCache(Cache): + """Wraps EphemWheelCache and SimpleWheelCache into a single Cache + + This Cache allows for gracefully degradation, using the ephem wheel cache + when a certain link is not found in the simple wheel cache first. + """ + + def __init__(self, cache_dir: str, format_control: FormatControl) -> None: + super().__init__(cache_dir, format_control, {"binary"}) + self._wheel_cache = SimpleWheelCache(cache_dir, format_control) + self._ephem_cache = EphemWheelCache(format_control) + + def get_path_for_link(self, link: Link) -> str: + return self._wheel_cache.get_path_for_link(link) + + def get_ephem_path_for_link(self, link: Link) -> str: + return self._ephem_cache.get_path_for_link(link) + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + cache_entry = self.get_cache_entry(link, package_name, supported_tags) + if cache_entry is None: + return link + return cache_entry.link + + def get_cache_entry( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Optional[CacheEntry]: + """Returns a CacheEntry with a link to a cached item if it exists or + None. The cache entry indicates if the item was found in the persistent + or ephemeral cache. + """ + retval = self._wheel_cache.get( + link=link, + package_name=package_name, + supported_tags=supported_tags, + ) + if retval is not link: + return CacheEntry(retval, persistent=True) + + retval = self._ephem_cache.get( + link=link, + package_name=package_name, + supported_tags=supported_tags, + ) + if retval is not link: + return CacheEntry(retval, persistent=False) + + return None diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__init__.py new file mode 100644 index 0000000..e589bb9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__init__.py @@ -0,0 +1,4 @@ +"""Subpackage containing all of pip's command line interface related code +""" + +# This file intentionally does not import submodules diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3956bdccc9b2843e5ac71ed1b72e19dd020d60b9 GIT binary patch literal 288 zcmYjMu}%Xq49#_+s?>kThB|N_n2;*O#>Uc(CGsV{p4(g!CAn5*W@6?i_@%CV0vi)9 zV&F;dSg}HRmg1T(rh~s63M^zw(`7h$8`~ zeJN8)F<0og3`g7%RhSYR4oA$+^z6xWSja(ppl|@s9i&qoVz_PZpm3#|zoZ2u7|5bT c3FyIk1|ycMF>N}X=j$=L$o1}D0THuT`2YX_ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..06d2a493d24b08a5bcbd2838ee692c37e295f6dd GIT binary patch literal 5145 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..16a60a4e4798ea4b87491636c85b009aeddf9586 GIT binary patch literal 1303 zcmZuwOK;pZ5FS#G)hfHrrgrlHa%e6A_K;PA6a@+tMNuOu5;S|sB1Lr}WRbSz=oM0H zdkvqu1_Bf)a_P~BPj1%4z)oYyzQWH<}~$M1hm4*uc*ALy_? zTs-`M)BK1aL9!eQ7PErKoY9%*PT|IG;l*Cz$36q)OGmoW`-8{5pFsMucLuVzSnL_09%w*TljYo0er`qFNsRoSTHrbx6C)q7b<(x@R z`e*Kv#lGsP;1;Mr_RhHsWdF>K`>(-;IK(7EySZHz7_MB!nH@hVrx=c}RWsLR%39AI z&>pD;2dBA>(7+PjvUh+4vQrSeah8CqD*Ep3yJu|PBwt)~?nKeS#5pG10AY728 z$)p{ACVS7UYgE3AYhQ>oPmB@bJ^a0h_NzigS^d(W-MZ3Ew3C_rqvSxTCYsk78b3<3 z6uVij#7<(Aj3$SwJdE;eC#o0CepNo4d>fgpQTJ*r8J5XJbyi2Hh?OamJWBH{N;^_k zAx`Rr9$=IKCGH~t3z^SOZeK#)WR>avs3UEvt(hU5!U5>;Dg4G->fq!Xl(09~sTW@$ zp}*kj;j;#zX_Ka8 z-||!Tj$znrI(GgI+713R%)N!3(vbW}_t!!J=;JYr5@9B-U LEjnUbeBk^8n@lrH literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/main.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/main.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9c94b941b9b3c35c17bea725c958e37c056092a GIT binary patch literal 1378 zcmZWo&5L9;5KrH~%XnCP2#+_N*puG850doE zcGJBFS1*D$4}uCkH~mli8*tQmLx`c{4}2b-a_av zd$_%PID7_M{S1Vn3{gypz!`R&WW;eV^BngxAGjxiGR(p<$|7v-eG!+ftmWiDw98J` zadIfSWiRVFITHPHFWYl+EC%I%wvQ1b+XHrZjk7zn%OV!CH;&OUVnf>cmC!crd>3SI zQt~Al^;XGa$;(16lcH$^pB9?eRl+JQmrczpJ#N2*{L$%%7=OZ*Hu0mzniOJ$O}AL+ zdRmu_V4A_X*A!B*95iK7QBd@!k`?;4CVtGDhf>xOZab7UlI=oT|Am|>6H2BRvYKKW z_GX2^E!q!YtG|J)0nr7LLyhJZPxL)GMjNEb*1JX+Y5xV#)j$Vp^a6iPHh4pxpz72| zI$VB>(Z++@58-XJjVW1szo6g9HHLRiqg(U#?zHVtY^5jYD~Px8o_ke$$M2*2Xmy~w z+n(;u`_#K8)~b3RB6R0_%ReE84>6APV7pKKwZFS}Ui|02^8(y@(FbcxgEhHCH2jfl zf_1PxTthZco9OhV1z{CEJUe@I_Hkm+>fRT#s+PQ(CCp-&+*8Tb1*;Opw6<$%7FG59t^UMXD&kzW(}GlP#BlN;|9mnrfvdN*u&zx&+4*87ZB30|7Q7mT z5(WsFcv{lDDoVDKTsL^^+0mC$Lol1mPI>y_kfA-~sOA1K5dAfDg!B*v@){Pe(^4%5z#z^IQ($ z8DItw0Lt~R04d=z5RJy$?e(mC9(4EE zu{C?a;ex~giCYqBeTl@KU&67kobnff1XTB|!8kMOnyTvRM?JopwATwQcz*n4IDH?u zKeTZAaY6VPhIkHySg}PA!3@R7d~uB7Yco4{VkdWF7wLJ2dAT3^hId(zcj8VS#-Wit zwv>0{Zr+P~M)p}hUyhdzAF!2tHD1lv;x&*vB%I**9PN;$r-*b(=dlx?rw+Yv*`hAJ z&~n@OvPF7NG3k>K<}VU_-x@3*e)LHsvSPw$RIzkSqwSJM z70DeMW!}}lIjEQ(CxHlQhY{Pb+_bsDkbHxs5dV291a%=$;MKhpHP{IEYDcVlanbpsk_;l zead;Mmo00%Dyxz`$_1RS0;AyNM6HcEO(jjV14-+E>Y4A!hOnQ~_nFvL2L3Hbf+%D3R{3^#~aPaJ|8Jhh%!&+MP^cMf=i6~6Vs zOB6ww##2F{yHdM)}x&=r=zUe6{4=HlFQLnCU*AI zDW!5$R~cCEr<^3)8KcQoDkvEZ_h_*bM@!s&mk;o*yQKjQu@L7x?SR+^n z)mEfzG-lc8RACIO0~Ow8P}FdtYU8^0&;jCM@9)EFuNKnqHY>*|6C1#sEK(>OEOQ+o z?rE|FL|rDCNVnjc=44Spl~R(Vd?L7RFUnukE!U^1)jZv$i=-qIUe=ZBO=v-R$`;~^ zPFteSk_Y3H$rkh3UFVXrTr1fBn zMh9gbwuH=@C+iMI;drep#c=?!ghAe1L0DQjr5`yA4$a4D3}vVsa)DThAF zq_P<;U@?c%GH5nMz;)!6msS-m2=9QvuNe)edAUai0e?s9-qt#3o^5R{dWGufJ0z3| zssd=~iRlIIq^3eBI~S8yYc8shda7`GAl`%_^kEkAI(^$ieRu==Dhhx?@t^?rp_tZi z-|nIi4=yP`Nk}!o!Nyx8q@YiW@4w#OxH4FVwh)uEDhflu{XHmI;;y gm!1aPq=wnOY?Nk2=tcD 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 bDP~L9?D$_rKM5-f{MIO$bJy$k+`@kYMn?>B literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..411c36fa7d3a59791c2846338676fbca67d50044 GIT binary patch literal 7635 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5975becdb9e55ce9c38baf8262a4c5995c1a2ba GIT binary patch literal 4958 zcmaJ_O>Y~=8Q$41E-8wlWLdIhCsEzHHjS8c&;)JLv=QKsMyX2`mRlo4fGx!tNh>dx z%*@h?2>KHFRG{dkhXQp0>Q?`Y{)nFD*dBuX1)ci5v!p~zR94vG%)GNR@8|Qrqvq^v z!NT+Bzg74CbIG#)M}x`7#b6Du`Y#%8aTZ&R?3Xo|8QTrp{5lQC{JISnzjo}k{f6Jp zHFAvBJ8{s?H}dU5qhQ8vJku^Vil*X~J zuUaC<8L0E1F7Qi+dX=+HtFrh#-XXYsMY! zzH%Fma54748|lDpc!sk;mp8jnk_fq;fUE6hOVr;m?MspNWYS{TZTwK5-urkJ**CQg zt#5JAruBx=N0;iIbiLh;MH_4i{!q$}#I&nKy#2Q6 z%qR329_nA90XYMjETVa1%Q@;VQbRIl4V|xj>I zM5~i<)$+1EOiO)|*Es7}=nUAv3atT9r3c%jY|nma4{XdisXIU%qlbt<>!-P4FmR5j zpC4Fz&alAkbmq`nv@o)kfjZ095d+4!SWzVRuXy!G$85FltyZhmRY@*VnT7erayaTh zXNEvqcFAM$ISf5<%lAQr z7*Gm{fF2v#N0z#hjfUiy)}D80R6uhEV=8_o-dKhvKafAiM%qopH>spOB{6wM2m=%! zW8NUQ1p~X_-DUmdDcqBTN#yPG=to912K^A7N#2KSVEDuw49ZXYt}zh>+SpK<6`sOL zjgg4+QzJ>*RbHm%ZBI4ewuX5{2s`GU^gmVmBLsEo@;X+_chFP{a+&&9s3CWkE7TC8 zlUH<_sjSh2VTdB(Vm!SDDs7{v30!!fZ5`XT4V|JrE-sdfrJSTyExd0%6c1~7RUOR< z#?BGOa+^D^k*T={boGFr$kV{j91nn>K1O+@I?GFhw%i5=mG$L%CpmA; z5wh0T>hN^~3I+;HawBt&AL`S4AFuienhY@wCbAS*X(G@WSVQn?@Q;wssXx*=K!8NT zhf#lw?=s8YqMmWm+z7D8p?1o{86%ScNHK~s78#jPsQ>O%sZJnB-ox5+S^5Nch=a^e z33$*mF$PF+AO?*+_^mSn5xd^^Z>mpLZ>q^ClOJIZ?Z=&+9YD1kCEFb%XJwS=2|CXD z>t~pwJgO+G0xw9AcPhEFzX&G&M7)nZ$Yl$xe|3sMyYcA(TlC8wfPiLOc;9-+u4{M|**;sqTuon^jW#?o8q0FmRqoN zK~j|AT9IYXh0bZzp7VCn$O*3m+o?6Qj;xpP6pGp_R4kZs;kh@?gpPL8s4e6Jtd=C>2w}97 zboRB!MGRazgE6G<81E=B0}9OfNe-nzMm?9aPdKC0nsEl7HFuvZE8FrRC>bl$(l24i z*K{uJge%CIGpP~@&U)a9^J#Yr6<`*(w9$l6Mm)M(7+2Uq$4C~ivRm@Z9K6FIuJH~k zO~(&$LUGcE)M;j(#n_$(myAj7tJ8bo&!p`%*6$e`#+(}JtmA!6iY6G2r_)SZ6 z={7!6F%lsPCtRf`>_eu}#ZDL7jfg$WC@Maz+!a=^17@=#yNwqWw`l`gQtH5_@8KuA zg-+Uy`X+qvs~TuhTs*l&Hb}ledS*u!Y=$Zf7IgQ#=dQdnqP`C*t~Z3a{l#qV8L|rI z0-8&Tr~P}TTFZPpFDZ-3$JDG*Lm($9Q_Br%s4$ik?~)+D!ZNyMH!2`zPy8}>=0v83NP)a2hi}2Dcd9=Mq?3I|7wVT5b%zy zc4cP=RlPc8Mz0upH2T*-wTHZ@s;y4Di-M1&($}Uf7v%>=hsnN^r%N+aHcQyA44&j>!v?)ASWqpBNd0^Gl{zp`D%6{BbuoKjH! OsJv1txom0KW&Z~X!~O^W literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3369763f9ce03aeaa00aa65738610ed45dcaa61 GIT binary patch literal 367 zcmYk2!AiqG5QdXBX+;Ql5cJ>+^kDYjNf5Cn5rcIjNmC)0W!qiNwrR3tH!Xby&%T7O zl&hz_f+u&af-}rF{P6z_40fDDL)F{6yOe5wYVp5JC2rJ+GX-K~1~D^}^s*l5XMJL2 z7O^v%3=(5B?3BakbfD{L^ffGv69qULw8JFzydX(hJBZ^bZk-f9z~~vGy*!?U@iZMz z0ysl3nxeZXg?@Yb6bG{~N)vROh7%w8Vf^bqf)RQgPrdsf*?T{X+EJ%|@U;PXwWfga zl@JZ*RV~4siF}KfluFQWhFH19H9;?|plFT-CBWU#asvuB2Ye^RhD%SNC@MW}H3u06O~SEMQEwf= None: + """Entry Point for completion of main and subcommand options.""" + # Don't complete if user hasn't sourced bash_completion file. + if "PIP_AUTO_COMPLETE" not in os.environ: + return + cwords = os.environ["COMP_WORDS"].split()[1:] + cword = int(os.environ["COMP_CWORD"]) + try: + current = cwords[cword - 1] + except IndexError: + current = "" + + parser = create_main_parser() + subcommands = list(commands_dict) + options = [] + + # subcommand + subcommand_name: Optional[str] = None + for word in cwords: + if word in subcommands: + subcommand_name = word + break + # subcommand options + if subcommand_name is not None: + # special case: 'help' subcommand has no options + if subcommand_name == "help": + sys.exit(1) + # special case: list locally installed dists for show and uninstall + should_list_installed = not current.startswith("-") and subcommand_name in [ + "show", + "uninstall", + ] + if should_list_installed: + env = get_default_environment() + lc = current.lower() + installed = [ + dist.canonical_name + for dist in env.iter_installed_distributions(local_only=True) + if dist.canonical_name.startswith(lc) + and dist.canonical_name not in cwords[1:] + ] + # if there are no dists installed, fall back to option completion + if installed: + for dist in installed: + print(dist) + sys.exit(1) + + subcommand = create_command(subcommand_name) + + for opt in subcommand.parser.option_list_all: + if opt.help != optparse.SUPPRESS_HELP: + for opt_str in opt._long_opts + opt._short_opts: + options.append((opt_str, opt.nargs)) + + # filter out previously specified options from available options + prev_opts = [x.split("=")[0] for x in cwords[1 : cword - 1]] + options = [(x, v) for (x, v) in options if x not in prev_opts] + # filter options by current input + options = [(k, v) for k, v in options if k.startswith(current)] + # get completion type given cwords and available subcommand options + completion_type = get_path_completion_type( + cwords, + cword, + subcommand.parser.option_list_all, + ) + # get completion files and directories if ``completion_type`` is + # ````, ``

    `` or ```` + if completion_type: + paths = auto_complete_paths(current, completion_type) + options = [(path, 0) for path in paths] + for option in options: + opt_label = option[0] + # append '=' to options which require args + if option[1] and option[0][:2] == "--": + opt_label += "=" + print(opt_label) + else: + # show main parser options only when necessary + + opts = [i.option_list for i in parser.option_groups] + opts.append(parser.option_list) + flattened_opts = chain.from_iterable(opts) + if current.startswith("-"): + for opt in flattened_opts: + if opt.help != optparse.SUPPRESS_HELP: + subcommands += opt._long_opts + opt._short_opts + else: + # get completion type given cwords and all available options + completion_type = get_path_completion_type(cwords, cword, flattened_opts) + if completion_type: + subcommands = list(auto_complete_paths(current, completion_type)) + + print(" ".join([x for x in subcommands if x.startswith(current)])) + sys.exit(1) + + +def get_path_completion_type( + cwords: List[str], cword: int, opts: Iterable[Any] +) -> Optional[str]: + """Get the type of path completion (``file``, ``dir``, ``path`` or None) + + :param cwords: same as the environmental variable ``COMP_WORDS`` + :param cword: same as the environmental variable ``COMP_CWORD`` + :param opts: The available options to check + :return: path completion type (``file``, ``dir``, ``path`` or None) + """ + if cword < 2 or not cwords[cword - 2].startswith("-"): + return None + for opt in opts: + if opt.help == optparse.SUPPRESS_HELP: + continue + for o in str(opt).split("/"): + if cwords[cword - 2].split("=")[0] == o: + if not opt.metavar or any( + x in ("path", "file", "dir") for x in opt.metavar.split("/") + ): + return opt.metavar + return None + + +def auto_complete_paths(current: str, completion_type: str) -> Iterable[str]: + """If ``completion_type`` is ``file`` or ``path``, list all regular files + and directories starting with ``current``; otherwise only list directories + starting with ``current``. + + :param current: The word to be completed + :param completion_type: path completion type(`file`, `path` or `dir`)i + :return: A generator of regular files and/or directories + """ + directory, filename = os.path.split(current) + current_path = os.path.abspath(directory) + # Don't complete paths if they can't be accessed + if not os.access(current_path, os.R_OK): + return + filename = os.path.normcase(filename) + # list all files that start with ``filename`` + file_list = ( + x for x in os.listdir(current_path) if os.path.normcase(x).startswith(filename) + ) + for f in file_list: + opt = os.path.join(current_path, f) + comp_file = os.path.normcase(os.path.join(directory, f)) + # complete regular files when there is not ```` after option + # complete directories when there is ````, ```` or + # ````after option + if completion_type != "dir" and os.path.isfile(opt): + yield comp_file + elif os.path.isdir(opt): + yield os.path.join(comp_file, "") diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/base_command.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/base_command.py new file mode 100644 index 0000000..4fa1a3d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/base_command.py @@ -0,0 +1,216 @@ +"""Base Command class, and related routines""" + +import contextlib +import functools +import logging +import logging.config +import optparse +import os +import sys +import traceback +from collections.abc import Iterator +from optparse import Values +from typing import Any, Callable, List, Optional, Tuple + +from pip._internal.cli import cmdoptions +from pip._internal.cli.command_context import CommandContextMixIn +from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter +from pip._internal.cli.status_codes import ( + ERROR, + PREVIOUS_BUILD_DIR_ERROR, + UNKNOWN_ERROR, + VIRTUALENV_NOT_FOUND, +) +from pip._internal.exceptions import ( + BadCommand, + CommandError, + InstallationError, + NetworkConnectionError, + PreviousBuildDirError, + UninstallationError, +) +from pip._internal.utils.filesystem import check_path_owner +from pip._internal.utils.logging import BrokenStdoutLoggingError, setup_logging +from pip._internal.utils.misc import get_prog, normalize_path +from pip._internal.utils.temp_dir import TempDirectoryTypeRegistry as TempDirRegistry +from pip._internal.utils.temp_dir import global_tempdir_manager, tempdir_registry +from pip._internal.utils.virtualenv import running_under_virtualenv + +__all__ = ["Command"] + +logger = logging.getLogger(__name__) + + +class Command(CommandContextMixIn): + usage: str = "" + ignore_require_venv: bool = False + + def __init__(self, name: str, summary: str, isolated: bool = False) -> None: + super().__init__() + + self.name = name + self.summary = summary + self.parser = ConfigOptionParser( + usage=self.usage, + prog=f"{get_prog()} {name}", + formatter=UpdatingDefaultsHelpFormatter(), + add_help_option=False, + name=name, + description=self.__doc__, + isolated=isolated, + ) + + self.tempdir_registry: Optional[TempDirRegistry] = None + + # Commands should add options to this option group + optgroup_name = f"{self.name.capitalize()} Options" + self.cmd_opts = optparse.OptionGroup(self.parser, optgroup_name) + + # Add the general options + gen_opts = cmdoptions.make_option_group( + cmdoptions.general_group, + self.parser, + ) + self.parser.add_option_group(gen_opts) + + self.add_options() + + def add_options(self) -> None: + pass + + @contextlib.contextmanager + def pip_version_check(self, options: Values) -> Iterator[None]: + """ + This is a no-op so that commands by default do not do the pip version + check. + """ + # Make sure we do the pip version check if the index_group options + # are present. + assert not hasattr(options, "no_index") + yield + + def run(self, options: Values, args: List[str]) -> int: + raise NotImplementedError + + def parse_args(self, args: List[str]) -> Tuple[Values, List[str]]: + # factored out for testability + return self.parser.parse_args(args) + + def main(self, args: List[str]) -> int: + try: + with self.main_context(): + return self._main(args) + finally: + logging.shutdown() + + def _main(self, args: List[str]) -> int: + # We must initialize this before the tempdir manager, otherwise the + # configuration would not be accessible by the time we clean up the + # tempdir manager. + self.tempdir_registry = self.enter_context(tempdir_registry()) + # Intentionally set as early as possible so globally-managed temporary + # directories are available to the rest of the code. + self.enter_context(global_tempdir_manager()) + + options, args = self.parse_args(args) + + # Set verbosity so that it can be used elsewhere. + self.verbosity = options.verbose - options.quiet + + level_number = setup_logging( + verbosity=self.verbosity, + no_color=options.no_color, + user_log_file=options.log, + ) + + # TODO: Try to get these passing down from the command? + # without resorting to os.environ to hold these. + # This also affects isolated builds and it should. + + if options.no_input: + os.environ["PIP_NO_INPUT"] = "1" + + if options.exists_action: + os.environ["PIP_EXISTS_ACTION"] = " ".join(options.exists_action) + + if options.require_venv and not self.ignore_require_venv: + # If a venv is required check if it can really be found + if not running_under_virtualenv(): + logger.critical("Could not find an activated virtualenv (required).") + sys.exit(VIRTUALENV_NOT_FOUND) + + if options.cache_dir: + options.cache_dir = normalize_path(options.cache_dir) + if not check_path_owner(options.cache_dir): + logger.warning( + "The directory '%s' or its parent directory is not owned " + "or is not writable by the current user. The cache " + "has been disabled. Check the permissions and owner of " + "that directory. If executing pip with sudo, you should " + "use sudo's -H flag.", + options.cache_dir, + ) + options.cache_dir = None + + if "2020-resolver" in options.features_enabled: + logger.warning( + "--use-feature=2020-resolver no longer has any effect, " + "since it is now the default dependency resolver in pip. " + "This will become an error in pip 21.0." + ) + + def intercepts_unhandled_exc( + run_func: Callable[..., int] + ) -> Callable[..., int]: + @functools.wraps(run_func) + def exc_logging_wrapper(*args: Any) -> int: + try: + status = run_func(*args) + assert isinstance(status, int) + return status + except PreviousBuildDirError as exc: + logger.critical(str(exc)) + logger.debug("Exception information:", exc_info=True) + + return PREVIOUS_BUILD_DIR_ERROR + except ( + InstallationError, + UninstallationError, + BadCommand, + NetworkConnectionError, + ) as exc: + logger.critical(str(exc)) + logger.debug("Exception information:", exc_info=True) + + return ERROR + except CommandError as exc: + logger.critical("%s", exc) + logger.debug("Exception information:", exc_info=True) + + return ERROR + except BrokenStdoutLoggingError: + # Bypass our logger and write any remaining messages to + # stderr because stdout no longer works. + print("ERROR: Pipe to stdout was broken", file=sys.stderr) + if level_number <= logging.DEBUG: + traceback.print_exc(file=sys.stderr) + + return ERROR + except KeyboardInterrupt: + logger.critical("Operation cancelled by user") + logger.debug("Exception information:", exc_info=True) + + return ERROR + except BaseException: + logger.critical("Exception:", exc_info=True) + + return UNKNOWN_ERROR + + return exc_logging_wrapper + + with self.pip_version_check(options): + if not options.debug_mode: + run = intercepts_unhandled_exc(self.run) + else: + run = self.run + return run(options, args) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/cmdoptions.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/cmdoptions.py new file mode 100644 index 0000000..626fd00 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/cmdoptions.py @@ -0,0 +1,1010 @@ +""" +shared options and groups + +The principle here is to define options once, but *not* instantiate them +globally. One reason being that options with action='append' can carry state +between parses. pip parses general options twice internally, and shouldn't +pass on state. To be consistent, all options will follow this design. +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import os +import textwrap +import warnings +from functools import partial +from optparse import SUPPRESS_HELP, Option, OptionGroup, OptionParser, Values +from textwrap import dedent +from typing import Any, Callable, Dict, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.parser import ConfigOptionParser +from pip._internal.cli.progress_bars import BAR_TYPES +from pip._internal.exceptions import CommandError +from pip._internal.locations import USER_CACHE_DIR, get_src_prefix +from pip._internal.models.format_control import FormatControl +from pip._internal.models.index import PyPI +from pip._internal.models.target_python import TargetPython +from pip._internal.utils.hashes import STRONG_HASHES +from pip._internal.utils.misc import strtobool + + +def raise_option_error(parser: OptionParser, option: Option, msg: str) -> None: + """ + Raise an option parsing error using parser.error(). + + Args: + parser: an OptionParser instance. + option: an Option instance. + msg: the error text. + """ + msg = f"{option} error: {msg}" + msg = textwrap.fill(" ".join(msg.split())) + parser.error(msg) + + +def make_option_group(group: Dict[str, Any], parser: ConfigOptionParser) -> OptionGroup: + """ + Return an OptionGroup object + group -- assumed to be dict with 'name' and 'options' keys + parser -- an optparse Parser + """ + option_group = OptionGroup(parser, group["name"]) + for option in group["options"]: + option_group.add_option(option()) + return option_group + + +def check_install_build_global( + options: Values, check_options: Optional[Values] = None +) -> None: + """Disable wheels if per-setup.py call options are set. + + :param options: The OptionParser options to update. + :param check_options: The options to check, if not supplied defaults to + options. + """ + if check_options is None: + check_options = options + + def getname(n: str) -> Optional[Any]: + return getattr(check_options, n, None) + + names = ["build_options", "global_options", "install_options"] + if any(map(getname, names)): + control = options.format_control + control.disallow_binaries() + warnings.warn( + "Disabling all use of wheels due to the use of --build-option " + "/ --global-option / --install-option.", + stacklevel=2, + ) + + +def check_dist_restriction(options: Values, check_target: bool = False) -> None: + """Function for determining if custom platform options are allowed. + + :param options: The OptionParser options. + :param check_target: Whether or not to check if --target is being used. + """ + dist_restriction_set = any( + [ + options.python_version, + options.platforms, + options.abis, + options.implementation, + ] + ) + + binary_only = FormatControl(set(), {":all:"}) + sdist_dependencies_allowed = ( + options.format_control != binary_only and not options.ignore_dependencies + ) + + # Installations or downloads using dist restrictions must not combine + # source distributions and dist-specific wheels, as they are not + # guaranteed to be locally compatible. + if dist_restriction_set and sdist_dependencies_allowed: + raise CommandError( + "When restricting platform and interpreter constraints using " + "--python-version, --platform, --abi, or --implementation, " + "either --no-deps must be set, or --only-binary=:all: must be " + "set and --no-binary must not be set (or must be set to " + ":none:)." + ) + + if check_target: + if dist_restriction_set and not options.target_dir: + raise CommandError( + "Can not use any platform or abi specific options unless " + "installing via '--target'" + ) + + +def _path_option_check(option: Option, opt: str, value: str) -> str: + return os.path.expanduser(value) + + +def _package_name_option_check(option: Option, opt: str, value: str) -> str: + return canonicalize_name(value) + + +class PipOption(Option): + TYPES = Option.TYPES + ("path", "package_name") + TYPE_CHECKER = Option.TYPE_CHECKER.copy() + TYPE_CHECKER["package_name"] = _package_name_option_check + TYPE_CHECKER["path"] = _path_option_check + + +########### +# options # +########### + +help_: Callable[..., Option] = partial( + Option, + "-h", + "--help", + dest="help", + action="help", + help="Show help.", +) + +debug_mode: Callable[..., Option] = partial( + Option, + "--debug", + dest="debug_mode", + action="store_true", + default=False, + help=( + "Let unhandled exceptions propagate outside the main subroutine, " + "instead of logging them to stderr." + ), +) + +isolated_mode: Callable[..., Option] = partial( + Option, + "--isolated", + dest="isolated_mode", + action="store_true", + default=False, + help=( + "Run pip in an isolated mode, ignoring environment variables and user " + "configuration." + ), +) + +require_virtualenv: Callable[..., Option] = partial( + Option, + # Run only if inside a virtualenv, bail if not. + "--require-virtualenv", + "--require-venv", + dest="require_venv", + action="store_true", + default=False, + help=SUPPRESS_HELP, +) + +verbose: Callable[..., Option] = partial( + Option, + "-v", + "--verbose", + dest="verbose", + action="count", + default=0, + help="Give more output. Option is additive, and can be used up to 3 times.", +) + +no_color: Callable[..., Option] = partial( + Option, + "--no-color", + dest="no_color", + action="store_true", + default=False, + help="Suppress colored output.", +) + +version: Callable[..., Option] = partial( + Option, + "-V", + "--version", + dest="version", + action="store_true", + help="Show version and exit.", +) + +quiet: Callable[..., Option] = partial( + Option, + "-q", + "--quiet", + dest="quiet", + action="count", + default=0, + help=( + "Give less output. Option is additive, and can be used up to 3" + " times (corresponding to WARNING, ERROR, and CRITICAL logging" + " levels)." + ), +) + +progress_bar: Callable[..., Option] = partial( + Option, + "--progress-bar", + dest="progress_bar", + type="choice", + choices=list(BAR_TYPES.keys()), + default="on", + help=( + "Specify type of progress to be displayed [" + + "|".join(BAR_TYPES.keys()) + + "] (default: %default)" + ), +) + +log: Callable[..., Option] = partial( + PipOption, + "--log", + "--log-file", + "--local-log", + dest="log", + metavar="path", + type="path", + help="Path to a verbose appending log.", +) + +no_input: Callable[..., Option] = partial( + Option, + # Don't ask for input + "--no-input", + dest="no_input", + action="store_true", + default=False, + help="Disable prompting for input.", +) + +proxy: Callable[..., Option] = partial( + Option, + "--proxy", + dest="proxy", + type="str", + default="", + help="Specify a proxy in the form [user:passwd@]proxy.server:port.", +) + +retries: Callable[..., Option] = partial( + Option, + "--retries", + dest="retries", + type="int", + default=5, + help="Maximum number of retries each connection should attempt " + "(default %default times).", +) + +timeout: Callable[..., Option] = partial( + Option, + "--timeout", + "--default-timeout", + metavar="sec", + dest="timeout", + type="float", + default=15, + help="Set the socket timeout (default %default seconds).", +) + + +def exists_action() -> Option: + return Option( + # Option when path already exist + "--exists-action", + dest="exists_action", + type="choice", + choices=["s", "i", "w", "b", "a"], + default=[], + action="append", + metavar="action", + help="Default action when a path already exists: " + "(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.", + ) + + +cert: Callable[..., Option] = partial( + PipOption, + "--cert", + dest="cert", + type="path", + metavar="path", + help=( + "Path to PEM-encoded CA certificate bundle. " + "If provided, overrides the default. " + "See 'SSL Certificate Verification' in pip documentation " + "for more information." + ), +) + +client_cert: Callable[..., Option] = partial( + PipOption, + "--client-cert", + dest="client_cert", + type="path", + default=None, + metavar="path", + help="Path to SSL client certificate, a single file containing the " + "private key and the certificate in PEM format.", +) + +index_url: Callable[..., Option] = partial( + Option, + "-i", + "--index-url", + "--pypi-url", + dest="index_url", + metavar="URL", + default=PyPI.simple_url, + help="Base URL of the Python Package Index (default %default). " + "This should point to a repository compliant with PEP 503 " + "(the simple repository API) or a local directory laid out " + "in the same format.", +) + + +def extra_index_url() -> Option: + return Option( + "--extra-index-url", + dest="extra_index_urls", + metavar="URL", + action="append", + default=[], + help="Extra URLs of package indexes to use in addition to " + "--index-url. Should follow the same rules as " + "--index-url.", + ) + + +no_index: Callable[..., Option] = partial( + Option, + "--no-index", + dest="no_index", + action="store_true", + default=False, + help="Ignore package index (only looking at --find-links URLs instead).", +) + + +def find_links() -> Option: + return Option( + "-f", + "--find-links", + dest="find_links", + action="append", + default=[], + metavar="url", + help="If a URL or path to an html file, then parse for links to " + "archives such as sdist (.tar.gz) or wheel (.whl) files. " + "If a local path or file:// URL that's a directory, " + "then look for archives in the directory listing. " + "Links to VCS project URLs are not supported.", + ) + + +def trusted_host() -> Option: + return Option( + "--trusted-host", + dest="trusted_hosts", + action="append", + metavar="HOSTNAME", + default=[], + help="Mark this host or host:port pair as trusted, even though it " + "does not have valid or any HTTPS.", + ) + + +def constraints() -> Option: + return Option( + "-c", + "--constraint", + dest="constraints", + action="append", + default=[], + metavar="file", + help="Constrain versions using the given constraints file. " + "This option can be used multiple times.", + ) + + +def requirements() -> Option: + return Option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help="Install from the given requirements file. " + "This option can be used multiple times.", + ) + + +def editable() -> Option: + return Option( + "-e", + "--editable", + dest="editables", + action="append", + default=[], + metavar="path/url", + help=( + "Install a project in editable mode (i.e. setuptools " + '"develop mode") from a local project path or a VCS url.' + ), + ) + + +def _handle_src(option: Option, opt_str: str, value: str, parser: OptionParser) -> None: + value = os.path.abspath(value) + setattr(parser.values, option.dest, value) + + +src: Callable[..., Option] = partial( + PipOption, + "--src", + "--source", + "--source-dir", + "--source-directory", + dest="src_dir", + type="path", + metavar="dir", + default=get_src_prefix(), + action="callback", + callback=_handle_src, + help="Directory to check out editable projects into. " + 'The default in a virtualenv is "/src". ' + 'The default for global installs is "/src".', +) + + +def _get_format_control(values: Values, option: Option) -> Any: + """Get a format_control object.""" + return getattr(values, option.dest) + + +def _handle_no_binary( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + existing = _get_format_control(parser.values, option) + FormatControl.handle_mutual_excludes( + value, + existing.no_binary, + existing.only_binary, + ) + + +def _handle_only_binary( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + existing = _get_format_control(parser.values, option) + FormatControl.handle_mutual_excludes( + value, + existing.only_binary, + existing.no_binary, + ) + + +def no_binary() -> Option: + format_control = FormatControl(set(), set()) + return Option( + "--no-binary", + dest="format_control", + action="callback", + callback=_handle_no_binary, + type="str", + default=format_control, + help="Do not use binary packages. Can be supplied multiple times, and " + 'each time adds to the existing value. Accepts either ":all:" to ' + 'disable all binary packages, ":none:" to empty the set (notice ' + "the colons), or one or more package names with commas between " + "them (no colons). Note that some packages are tricky to compile " + "and may fail to install when this option is used on them.", + ) + + +def only_binary() -> Option: + format_control = FormatControl(set(), set()) + return Option( + "--only-binary", + dest="format_control", + action="callback", + callback=_handle_only_binary, + type="str", + default=format_control, + help="Do not use source packages. Can be supplied multiple times, and " + 'each time adds to the existing value. Accepts either ":all:" to ' + 'disable all source packages, ":none:" to empty the set, or one ' + "or more package names with commas between them. Packages " + "without binary distributions will fail to install when this " + "option is used on them.", + ) + + +platforms: Callable[..., Option] = partial( + Option, + "--platform", + dest="platforms", + metavar="platform", + action="append", + default=None, + help=( + "Only use wheels compatible with . Defaults to the " + "platform of the running system. Use this option multiple times to " + "specify multiple platforms supported by the target interpreter." + ), +) + + +# This was made a separate function for unit-testing purposes. +def _convert_python_version(value: str) -> Tuple[Tuple[int, ...], Optional[str]]: + """ + Convert a version string like "3", "37", or "3.7.3" into a tuple of ints. + + :return: A 2-tuple (version_info, error_msg), where `error_msg` is + non-None if and only if there was a parsing error. + """ + if not value: + # The empty string is the same as not providing a value. + return (None, None) + + parts = value.split(".") + if len(parts) > 3: + return ((), "at most three version parts are allowed") + + if len(parts) == 1: + # Then we are in the case of "3" or "37". + value = parts[0] + if len(value) > 1: + parts = [value[0], value[1:]] + + try: + version_info = tuple(int(part) for part in parts) + except ValueError: + return ((), "each version part must be an integer") + + return (version_info, None) + + +def _handle_python_version( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + """ + Handle a provided --python-version value. + """ + version_info, error_msg = _convert_python_version(value) + if error_msg is not None: + msg = "invalid --python-version value: {!r}: {}".format( + value, + error_msg, + ) + raise_option_error(parser, option=option, msg=msg) + + parser.values.python_version = version_info + + +python_version: Callable[..., Option] = partial( + Option, + "--python-version", + dest="python_version", + metavar="python_version", + action="callback", + callback=_handle_python_version, + type="str", + default=None, + help=dedent( + """\ + The Python interpreter version to use for wheel and "Requires-Python" + compatibility checks. Defaults to a version derived from the running + interpreter. The version can be specified using up to three dot-separated + integers (e.g. "3" for 3.0.0, "3.7" for 3.7.0, or "3.7.3"). A major-minor + version can also be given as a string without dots (e.g. "37" for 3.7.0). + """ + ), +) + + +implementation: Callable[..., Option] = partial( + Option, + "--implementation", + dest="implementation", + metavar="implementation", + default=None, + help=( + "Only use wheels compatible with Python " + "implementation , e.g. 'pp', 'jy', 'cp', " + " or 'ip'. If not specified, then the current " + "interpreter implementation is used. Use 'py' to force " + "implementation-agnostic wheels." + ), +) + + +abis: Callable[..., Option] = partial( + Option, + "--abi", + dest="abis", + metavar="abi", + action="append", + default=None, + help=( + "Only use wheels compatible with Python abi , e.g. 'pypy_41'. " + "If not specified, then the current interpreter abi tag is used. " + "Use this option multiple times to specify multiple abis supported " + "by the target interpreter. Generally you will need to specify " + "--implementation, --platform, and --python-version when using this " + "option." + ), +) + + +def add_target_python_options(cmd_opts: OptionGroup) -> None: + cmd_opts.add_option(platforms()) + cmd_opts.add_option(python_version()) + cmd_opts.add_option(implementation()) + cmd_opts.add_option(abis()) + + +def make_target_python(options: Values) -> TargetPython: + target_python = TargetPython( + platforms=options.platforms, + py_version_info=options.python_version, + abis=options.abis, + implementation=options.implementation, + ) + + return target_python + + +def prefer_binary() -> Option: + return Option( + "--prefer-binary", + dest="prefer_binary", + action="store_true", + default=False, + help="Prefer older binary packages over newer source packages.", + ) + + +cache_dir: Callable[..., Option] = partial( + PipOption, + "--cache-dir", + dest="cache_dir", + default=USER_CACHE_DIR, + metavar="dir", + type="path", + help="Store the cache data in .", +) + + +def _handle_no_cache_dir( + option: Option, opt: str, value: str, parser: OptionParser +) -> None: + """ + Process a value provided for the --no-cache-dir option. + + This is an optparse.Option callback for the --no-cache-dir option. + """ + # The value argument will be None if --no-cache-dir is passed via the + # command-line, since the option doesn't accept arguments. However, + # the value can be non-None if the option is triggered e.g. by an + # environment variable, like PIP_NO_CACHE_DIR=true. + if value is not None: + # Then parse the string value to get argument error-checking. + try: + strtobool(value) + except ValueError as exc: + raise_option_error(parser, option=option, msg=str(exc)) + + # Originally, setting PIP_NO_CACHE_DIR to a value that strtobool() + # converted to 0 (like "false" or "no") caused cache_dir to be disabled + # rather than enabled (logic would say the latter). Thus, we disable + # the cache directory not just on values that parse to True, but (for + # backwards compatibility reasons) also on values that parse to False. + # In other words, always set it to False if the option is provided in + # some (valid) form. + parser.values.cache_dir = False + + +no_cache: Callable[..., Option] = partial( + Option, + "--no-cache-dir", + dest="cache_dir", + action="callback", + callback=_handle_no_cache_dir, + help="Disable the cache.", +) + +no_deps: Callable[..., Option] = partial( + Option, + "--no-deps", + "--no-dependencies", + dest="ignore_dependencies", + action="store_true", + default=False, + help="Don't install package dependencies.", +) + +ignore_requires_python: Callable[..., Option] = partial( + Option, + "--ignore-requires-python", + dest="ignore_requires_python", + action="store_true", + help="Ignore the Requires-Python information.", +) + +no_build_isolation: Callable[..., Option] = partial( + Option, + "--no-build-isolation", + dest="build_isolation", + action="store_false", + default=True, + help="Disable isolation when building a modern source distribution. " + "Build dependencies specified by PEP 518 must be already installed " + "if this option is used.", +) + + +def _handle_no_use_pep517( + option: Option, opt: str, value: str, parser: OptionParser +) -> None: + """ + Process a value provided for the --no-use-pep517 option. + + This is an optparse.Option callback for the no_use_pep517 option. + """ + # Since --no-use-pep517 doesn't accept arguments, the value argument + # will be None if --no-use-pep517 is passed via the command-line. + # However, the value can be non-None if the option is triggered e.g. + # by an environment variable, for example "PIP_NO_USE_PEP517=true". + if value is not None: + msg = """A value was passed for --no-use-pep517, + probably using either the PIP_NO_USE_PEP517 environment variable + or the "no-use-pep517" config file option. Use an appropriate value + of the PIP_USE_PEP517 environment variable or the "use-pep517" + config file option instead. + """ + raise_option_error(parser, option=option, msg=msg) + + # Otherwise, --no-use-pep517 was passed via the command-line. + parser.values.use_pep517 = False + + +use_pep517: Any = partial( + Option, + "--use-pep517", + dest="use_pep517", + action="store_true", + default=None, + help="Use PEP 517 for building source distributions " + "(use --no-use-pep517 to force legacy behaviour).", +) + +no_use_pep517: Any = partial( + Option, + "--no-use-pep517", + dest="use_pep517", + action="callback", + callback=_handle_no_use_pep517, + default=None, + help=SUPPRESS_HELP, +) + +install_options: Callable[..., Option] = partial( + Option, + "--install-option", + dest="install_options", + action="append", + metavar="options", + help="Extra arguments to be supplied to the setup.py install " + 'command (use like --install-option="--install-scripts=/usr/local/' + 'bin"). Use multiple --install-option options to pass multiple ' + "options to setup.py install. If you are using an option with a " + "directory path, be sure to use absolute path.", +) + +build_options: Callable[..., Option] = partial( + Option, + "--build-option", + dest="build_options", + metavar="options", + action="append", + help="Extra arguments to be supplied to 'setup.py bdist_wheel'.", +) + +global_options: Callable[..., Option] = partial( + Option, + "--global-option", + dest="global_options", + action="append", + metavar="options", + help="Extra global options to be supplied to the setup.py " + "call before the install or bdist_wheel command.", +) + +no_clean: Callable[..., Option] = partial( + Option, + "--no-clean", + action="store_true", + default=False, + help="Don't clean up build directories.", +) + +pre: Callable[..., Option] = partial( + Option, + "--pre", + action="store_true", + default=False, + help="Include pre-release and development versions. By default, " + "pip only finds stable versions.", +) + +disable_pip_version_check: Callable[..., Option] = partial( + Option, + "--disable-pip-version-check", + dest="disable_pip_version_check", + action="store_true", + default=False, + help="Don't periodically check PyPI to determine whether a new version " + "of pip is available for download. Implied with --no-index.", +) + + +def _handle_merge_hash( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + """Given a value spelled "algo:digest", append the digest to a list + pointed to in a dict by the algo name.""" + if not parser.values.hashes: + parser.values.hashes = {} + try: + algo, digest = value.split(":", 1) + except ValueError: + parser.error( + "Arguments to {} must be a hash name " # noqa + "followed by a value, like --hash=sha256:" + "abcde...".format(opt_str) + ) + if algo not in STRONG_HASHES: + parser.error( + "Allowed hash algorithms for {} are {}.".format( # noqa + opt_str, ", ".join(STRONG_HASHES) + ) + ) + parser.values.hashes.setdefault(algo, []).append(digest) + + +hash: Callable[..., Option] = partial( + Option, + "--hash", + # Hash values eventually end up in InstallRequirement.hashes due to + # __dict__ copying in process_line(). + dest="hashes", + action="callback", + callback=_handle_merge_hash, + type="string", + help="Verify that the package's archive matches this " + "hash before installing. Example: --hash=sha256:abcdef...", +) + + +require_hashes: Callable[..., Option] = partial( + Option, + "--require-hashes", + dest="require_hashes", + action="store_true", + default=False, + help="Require a hash to check each requirement against, for " + "repeatable installs. This option is implied when any package in a " + "requirements file has a --hash option.", +) + + +list_path: Callable[..., Option] = partial( + PipOption, + "--path", + dest="path", + type="path", + action="append", + help="Restrict to the specified installation path for listing " + "packages (can be used multiple times).", +) + + +def check_list_path_option(options: Values) -> None: + if options.path and (options.user or options.local): + raise CommandError("Cannot combine '--path' with '--user' or '--local'") + + +list_exclude: Callable[..., Option] = partial( + PipOption, + "--exclude", + dest="excludes", + action="append", + metavar="package", + type="package_name", + help="Exclude specified package from the output", +) + + +no_python_version_warning: Callable[..., Option] = partial( + Option, + "--no-python-version-warning", + dest="no_python_version_warning", + action="store_true", + default=False, + help="Silence deprecation warnings for upcoming unsupported Pythons.", +) + + +use_new_feature: Callable[..., Option] = partial( + Option, + "--use-feature", + dest="features_enabled", + metavar="feature", + action="append", + default=[], + choices=["2020-resolver", "fast-deps", "in-tree-build"], + help="Enable new functionality, that may be backward incompatible.", +) + +use_deprecated_feature: Callable[..., Option] = partial( + Option, + "--use-deprecated", + dest="deprecated_features_enabled", + metavar="feature", + action="append", + default=[], + choices=["legacy-resolver", "out-of-tree-build"], + help=("Enable deprecated functionality, that will be removed in the future."), +) + + +########## +# groups # +########## + +general_group: Dict[str, Any] = { + "name": "General Options", + "options": [ + help_, + debug_mode, + isolated_mode, + require_virtualenv, + verbose, + version, + quiet, + log, + no_input, + proxy, + retries, + timeout, + exists_action, + trusted_host, + cert, + client_cert, + cache_dir, + no_cache, + disable_pip_version_check, + no_color, + no_python_version_warning, + use_new_feature, + use_deprecated_feature, + ], +} + +index_group: Dict[str, Any] = { + "name": "Package Index Options", + "options": [ + index_url, + extra_index_url, + no_index, + find_links, + ], +} diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/command_context.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/command_context.py new file mode 100644 index 0000000..ed68322 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/command_context.py @@ -0,0 +1,27 @@ +from contextlib import ExitStack, contextmanager +from typing import ContextManager, Iterator, TypeVar + +_T = TypeVar("_T", covariant=True) + + +class CommandContextMixIn: + def __init__(self) -> None: + super().__init__() + self._in_main_context = False + self._main_context = ExitStack() + + @contextmanager + def main_context(self) -> Iterator[None]: + assert not self._in_main_context + + self._in_main_context = True + try: + with self._main_context: + yield + finally: + self._in_main_context = False + + def enter_context(self, context_provider: ContextManager[_T]) -> _T: + assert self._in_main_context + + return self._main_context.enter_context(context_provider) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/main.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/main.py new file mode 100644 index 0000000..0e31221 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/main.py @@ -0,0 +1,70 @@ +"""Primary application entrypoint. +""" +import locale +import logging +import os +import sys +from typing import List, Optional + +from pip._internal.cli.autocompletion import autocomplete +from pip._internal.cli.main_parser import parse_command +from pip._internal.commands import create_command +from pip._internal.exceptions import PipError +from pip._internal.utils import deprecation + +logger = logging.getLogger(__name__) + + +# Do not import and use main() directly! Using it directly is actively +# discouraged by pip's maintainers. The name, location and behavior of +# this function is subject to change, so calling it directly is not +# portable across different pip versions. + +# In addition, running pip in-process is unsupported and unsafe. This is +# elaborated in detail at +# https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program. +# That document also provides suggestions that should work for nearly +# all users that are considering importing and using main() directly. + +# However, we know that certain users will still want to invoke pip +# in-process. If you understand and accept the implications of using pip +# in an unsupported manner, the best approach is to use runpy to avoid +# depending on the exact location of this entry point. + +# The following example shows how to use runpy to invoke pip in that +# case: +# +# sys.argv = ["pip", your, args, here] +# runpy.run_module("pip", run_name="__main__") +# +# Note that this will exit the process after running, unlike a direct +# call to main. As it is not safe to do any processing after calling +# main, this should not be an issue in practice. + + +def main(args: Optional[List[str]] = None) -> int: + if args is None: + args = sys.argv[1:] + + # Configure our deprecation warnings to be sent through loggers + deprecation.install_warning_logger() + + autocomplete() + + try: + cmd_name, cmd_args = parse_command(args) + except PipError as exc: + sys.stderr.write(f"ERROR: {exc}") + sys.stderr.write(os.linesep) + sys.exit(1) + + # Needed for locale.getpreferredencoding(False) to work + # in pip._internal.utils.encoding.auto_decode + try: + locale.setlocale(locale.LC_ALL, "") + except locale.Error as e: + # setlocale can apparently crash if locale are uninitialized + logger.debug("Ignoring error %s when setting locale", e) + command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) + + return command.main(cmd_args) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/main_parser.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/main_parser.py new file mode 100644 index 0000000..3666ab0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/main_parser.py @@ -0,0 +1,87 @@ +"""A single place for constructing and exposing the main parser +""" + +import os +import sys +from typing import List, Tuple + +from pip._internal.cli import cmdoptions +from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter +from pip._internal.commands import commands_dict, get_similar_commands +from pip._internal.exceptions import CommandError +from pip._internal.utils.misc import get_pip_version, get_prog + +__all__ = ["create_main_parser", "parse_command"] + + +def create_main_parser() -> ConfigOptionParser: + """Creates and returns the main parser for pip's CLI""" + + parser = ConfigOptionParser( + usage="\n%prog [options]", + add_help_option=False, + formatter=UpdatingDefaultsHelpFormatter(), + name="global", + prog=get_prog(), + ) + parser.disable_interspersed_args() + + parser.version = get_pip_version() + + # add the general options + gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser) + parser.add_option_group(gen_opts) + + # so the help formatter knows + parser.main = True # type: ignore + + # create command listing for description + description = [""] + [ + f"{name:27} {command_info.summary}" + for name, command_info in commands_dict.items() + ] + parser.description = "\n".join(description) + + return parser + + +def parse_command(args: List[str]) -> Tuple[str, List[str]]: + parser = create_main_parser() + + # Note: parser calls disable_interspersed_args(), so the result of this + # call is to split the initial args into the general options before the + # subcommand and everything else. + # For example: + # args: ['--timeout=5', 'install', '--user', 'INITools'] + # general_options: ['--timeout==5'] + # args_else: ['install', '--user', 'INITools'] + general_options, args_else = parser.parse_args(args) + + # --version + if general_options.version: + sys.stdout.write(parser.version) + sys.stdout.write(os.linesep) + sys.exit() + + # pip || pip help -> print_help() + if not args_else or (args_else[0] == "help" and len(args_else) == 1): + parser.print_help() + sys.exit() + + # the subcommand name + cmd_name = args_else[0] + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = [f'unknown command "{cmd_name}"'] + if guess: + msg.append(f'maybe you meant "{guess}"') + + raise CommandError(" - ".join(msg)) + + # all the args without the subcommand + cmd_args = args[:] + cmd_args.remove(cmd_name) + + return cmd_name, cmd_args diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/parser.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/parser.py new file mode 100644 index 0000000..a1c99a8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/parser.py @@ -0,0 +1,292 @@ +"""Base option parser setup""" + +import logging +import optparse +import shutil +import sys +import textwrap +from contextlib import suppress +from typing import Any, Dict, Iterator, List, Tuple + +from pip._internal.cli.status_codes import UNKNOWN_ERROR +from pip._internal.configuration import Configuration, ConfigurationError +from pip._internal.utils.misc import redact_auth_from_url, strtobool + +logger = logging.getLogger(__name__) + + +class PrettyHelpFormatter(optparse.IndentedHelpFormatter): + """A prettier/less verbose help formatter for optparse.""" + + def __init__(self, *args: Any, **kwargs: Any) -> None: + # help position must be aligned with __init__.parseopts.description + kwargs["max_help_position"] = 30 + kwargs["indent_increment"] = 1 + kwargs["width"] = shutil.get_terminal_size()[0] - 2 + super().__init__(*args, **kwargs) + + def format_option_strings(self, option: optparse.Option) -> str: + return self._format_option_strings(option) + + def _format_option_strings( + self, option: optparse.Option, mvarfmt: str = " <{}>", optsep: str = ", " + ) -> str: + """ + Return a comma-separated list of option strings and metavars. + + :param option: tuple of (short opt, long opt), e.g: ('-f', '--format') + :param mvarfmt: metavar format string + :param optsep: separator + """ + opts = [] + + if option._short_opts: + opts.append(option._short_opts[0]) + if option._long_opts: + opts.append(option._long_opts[0]) + if len(opts) > 1: + opts.insert(1, optsep) + + if option.takes_value(): + assert option.dest is not None + metavar = option.metavar or option.dest.lower() + opts.append(mvarfmt.format(metavar.lower())) + + return "".join(opts) + + def format_heading(self, heading: str) -> str: + if heading == "Options": + return "" + return heading + ":\n" + + def format_usage(self, usage: str) -> str: + """ + Ensure there is only one newline between usage and the first heading + if there is no description. + """ + msg = "\nUsage: {}\n".format(self.indent_lines(textwrap.dedent(usage), " ")) + return msg + + def format_description(self, description: str) -> str: + # leave full control over description to us + if description: + if hasattr(self.parser, "main"): + label = "Commands" + else: + label = "Description" + # some doc strings have initial newlines, some don't + description = description.lstrip("\n") + # some doc strings have final newlines and spaces, some don't + description = description.rstrip() + # dedent, then reindent + description = self.indent_lines(textwrap.dedent(description), " ") + description = f"{label}:\n{description}\n" + return description + else: + return "" + + def format_epilog(self, epilog: str) -> str: + # leave full control over epilog to us + if epilog: + return epilog + else: + return "" + + def indent_lines(self, text: str, indent: str) -> str: + new_lines = [indent + line for line in text.split("\n")] + return "\n".join(new_lines) + + +class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter): + """Custom help formatter for use in ConfigOptionParser. + + This is updates the defaults before expanding them, allowing + them to show up correctly in the help listing. + + Also redact auth from url type options + """ + + def expand_default(self, option: optparse.Option) -> str: + default_values = None + if self.parser is not None: + assert isinstance(self.parser, ConfigOptionParser) + self.parser._update_defaults(self.parser.defaults) + assert option.dest is not None + default_values = self.parser.defaults.get(option.dest) + help_text = super().expand_default(option) + + if default_values and option.metavar == "URL": + if isinstance(default_values, str): + default_values = [default_values] + + # If its not a list, we should abort and just return the help text + if not isinstance(default_values, list): + default_values = [] + + for val in default_values: + help_text = help_text.replace(val, redact_auth_from_url(val)) + + return help_text + + +class CustomOptionParser(optparse.OptionParser): + def insert_option_group( + self, idx: int, *args: Any, **kwargs: Any + ) -> optparse.OptionGroup: + """Insert an OptionGroup at a given position.""" + group = self.add_option_group(*args, **kwargs) + + self.option_groups.pop() + self.option_groups.insert(idx, group) + + return group + + @property + def option_list_all(self) -> List[optparse.Option]: + """Get a list of all options, including those in option groups.""" + res = self.option_list[:] + for i in self.option_groups: + res.extend(i.option_list) + + return res + + +class ConfigOptionParser(CustomOptionParser): + """Custom option parser which updates its defaults by checking the + configuration files and environmental variables""" + + def __init__( + self, + *args: Any, + name: str, + isolated: bool = False, + **kwargs: Any, + ) -> None: + self.name = name + self.config = Configuration(isolated) + + assert self.name + super().__init__(*args, **kwargs) + + def check_default(self, option: optparse.Option, key: str, val: Any) -> Any: + try: + return option.check_value(key, val) + except optparse.OptionValueError as exc: + print(f"An error occurred during configuration: {exc}") + sys.exit(3) + + def _get_ordered_configuration_items(self) -> Iterator[Tuple[str, Any]]: + # Configuration gives keys in an unordered manner. Order them. + override_order = ["global", self.name, ":env:"] + + # Pool the options into different groups + section_items: Dict[str, List[Tuple[str, Any]]] = { + name: [] for name in override_order + } + for section_key, val in self.config.items(): + # ignore empty values + if not val: + logger.debug( + "Ignoring configuration key '%s' as it's value is empty.", + section_key, + ) + continue + + section, key = section_key.split(".", 1) + if section in override_order: + section_items[section].append((key, val)) + + # Yield each group in their override order + for section in override_order: + for key, val in section_items[section]: + yield key, val + + def _update_defaults(self, defaults: Dict[str, Any]) -> Dict[str, Any]: + """Updates the given defaults with values from the config files and + the environ. Does a little special handling for certain types of + options (lists).""" + + # Accumulate complex default state. + self.values = optparse.Values(self.defaults) + late_eval = set() + # Then set the options with those values + for key, val in self._get_ordered_configuration_items(): + # '--' because configuration supports only long names + option = self.get_option("--" + key) + + # Ignore options not present in this parser. E.g. non-globals put + # in [global] by users that want them to apply to all applicable + # commands. + if option is None: + continue + + assert option.dest is not None + + if option.action in ("store_true", "store_false"): + try: + val = strtobool(val) + except ValueError: + self.error( + "{} is not a valid value for {} option, " # noqa + "please specify a boolean value like yes/no, " + "true/false or 1/0 instead.".format(val, key) + ) + elif option.action == "count": + with suppress(ValueError): + val = strtobool(val) + with suppress(ValueError): + val = int(val) + if not isinstance(val, int) or val < 0: + self.error( + "{} is not a valid value for {} option, " # noqa + "please instead specify either a non-negative integer " + "or a boolean value like yes/no or false/true " + "which is equivalent to 1/0.".format(val, key) + ) + elif option.action == "append": + val = val.split() + val = [self.check_default(option, key, v) for v in val] + elif option.action == "callback": + assert option.callback is not None + late_eval.add(option.dest) + opt_str = option.get_opt_string() + val = option.convert_value(opt_str, val) + # From take_action + args = option.callback_args or () + kwargs = option.callback_kwargs or {} + option.callback(option, opt_str, val, self, *args, **kwargs) + else: + val = self.check_default(option, key, val) + + defaults[option.dest] = val + + for key in late_eval: + defaults[key] = getattr(self.values, key) + self.values = None + return defaults + + def get_default_values(self) -> optparse.Values: + """Overriding to make updating the defaults after instantiation of + the option parser possible, _update_defaults() does the dirty work.""" + if not self.process_default_values: + # Old, pre-Optik 1.5 behaviour. + return optparse.Values(self.defaults) + + # Load the configuration, or error out in case of an error + try: + self.config.load() + except ConfigurationError as err: + self.exit(UNKNOWN_ERROR, str(err)) + + defaults = self._update_defaults(self.defaults.copy()) # ours + for option in self._get_all_options(): + assert option.dest is not None + default = defaults.get(option.dest) + if isinstance(default, str): + opt_str = option.get_opt_string() + defaults[option.dest] = option.check_value(opt_str, default) + return optparse.Values(defaults) + + def error(self, msg: str) -> None: + self.print_usage(sys.stderr) + self.exit(UNKNOWN_ERROR, f"{msg}\n") diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py new file mode 100644 index 0000000..f3db295 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py @@ -0,0 +1,250 @@ +import itertools +import sys +from signal import SIGINT, default_int_handler, signal +from typing import Any + +from pip._vendor.progress.bar import Bar, FillingCirclesBar, IncrementalBar +from pip._vendor.progress.spinner import Spinner + +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import get_indentation +from pip._internal.utils.misc import format_size + +try: + from pip._vendor import colorama +# Lots of different errors can come from this, including SystemError and +# ImportError. +except Exception: + colorama = None + + +def _select_progress_class(preferred: Bar, fallback: Bar) -> Bar: + encoding = getattr(preferred.file, "encoding", None) + + # If we don't know what encoding this file is in, then we'll just assume + # that it doesn't support unicode and use the ASCII bar. + if not encoding: + return fallback + + # Collect all of the possible characters we want to use with the preferred + # bar. + characters = [ + getattr(preferred, "empty_fill", ""), + getattr(preferred, "fill", ""), + ] + characters += list(getattr(preferred, "phases", [])) + + # Try to decode the characters we're using for the bar using the encoding + # of the given file, if this works then we'll assume that we can use the + # fancier bar and if not we'll fall back to the plaintext bar. + try: + "".join(characters).encode(encoding) + except UnicodeEncodeError: + return fallback + else: + return preferred + + +_BaseBar: Any = _select_progress_class(IncrementalBar, Bar) + + +class InterruptibleMixin: + """ + Helper to ensure that self.finish() gets called on keyboard interrupt. + + This allows downloads to be interrupted without leaving temporary state + (like hidden cursors) behind. + + This class is similar to the progress library's existing SigIntMixin + helper, but as of version 1.2, that helper has the following problems: + + 1. It calls sys.exit(). + 2. It discards the existing SIGINT handler completely. + 3. It leaves its own handler in place even after an uninterrupted finish, + which will have unexpected delayed effects if the user triggers an + unrelated keyboard interrupt some time after a progress-displaying + download has already completed, for example. + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + """ + Save the original SIGINT handler for later. + """ + # https://github.com/python/mypy/issues/5887 + super().__init__(*args, **kwargs) # type: ignore + + self.original_handler = signal(SIGINT, self.handle_sigint) + + # If signal() returns None, the previous handler was not installed from + # Python, and we cannot restore it. This probably should not happen, + # but if it does, we must restore something sensible instead, at least. + # The least bad option should be Python's default SIGINT handler, which + # just raises KeyboardInterrupt. + if self.original_handler is None: + self.original_handler = default_int_handler + + def finish(self) -> None: + """ + Restore the original SIGINT handler after finishing. + + This should happen regardless of whether the progress display finishes + normally, or gets interrupted. + """ + super().finish() # type: ignore + signal(SIGINT, self.original_handler) + + def handle_sigint(self, signum, frame): # type: ignore + """ + Call self.finish() before delegating to the original SIGINT handler. + + This handler should only be in place while the progress display is + active. + """ + self.finish() + self.original_handler(signum, frame) + + +class SilentBar(Bar): + def update(self) -> None: + pass + + +class BlueEmojiBar(IncrementalBar): + + suffix = "%(percent)d%%" + bar_prefix = " " + bar_suffix = " " + phases = ("\U0001F539", "\U0001F537", "\U0001F535") + + +class DownloadProgressMixin: + def __init__(self, *args: Any, **kwargs: Any) -> None: + # https://github.com/python/mypy/issues/5887 + super().__init__(*args, **kwargs) # type: ignore + self.message: str = (" " * (get_indentation() + 2)) + self.message + + @property + def downloaded(self) -> str: + return format_size(self.index) # type: ignore + + @property + def download_speed(self) -> str: + # Avoid zero division errors... + if self.avg == 0.0: # type: ignore + return "..." + return format_size(1 / self.avg) + "/s" # type: ignore + + @property + def pretty_eta(self) -> str: + if self.eta: # type: ignore + return f"eta {self.eta_td}" # type: ignore + return "" + + def iter(self, it): # type: ignore + for x in it: + yield x + # B305 is incorrectly raised here + # https://github.com/PyCQA/flake8-bugbear/issues/59 + self.next(len(x)) # noqa: B305 + self.finish() + + +class WindowsMixin: + def __init__(self, *args: Any, **kwargs: Any) -> None: + # The Windows terminal does not support the hide/show cursor ANSI codes + # even with colorama. So we'll ensure that hide_cursor is False on + # Windows. + # This call needs to go before the super() call, so that hide_cursor + # is set in time. The base progress bar class writes the "hide cursor" + # code to the terminal in its init, so if we don't set this soon + # enough, we get a "hide" with no corresponding "show"... + if WINDOWS and self.hide_cursor: # type: ignore + self.hide_cursor = False + + # https://github.com/python/mypy/issues/5887 + super().__init__(*args, **kwargs) # type: ignore + + # Check if we are running on Windows and we have the colorama module, + # if we do then wrap our file with it. + if WINDOWS and colorama: + self.file = colorama.AnsiToWin32(self.file) # type: ignore + # The progress code expects to be able to call self.file.isatty() + # but the colorama.AnsiToWin32() object doesn't have that, so we'll + # add it. + self.file.isatty = lambda: self.file.wrapped.isatty() + # The progress code expects to be able to call self.file.flush() + # but the colorama.AnsiToWin32() object doesn't have that, so we'll + # add it. + self.file.flush = lambda: self.file.wrapped.flush() + + +class BaseDownloadProgressBar(WindowsMixin, InterruptibleMixin, DownloadProgressMixin): + + file = sys.stdout + message = "%(percent)d%%" + suffix = "%(downloaded)s %(download_speed)s %(pretty_eta)s" + + +class DefaultDownloadProgressBar(BaseDownloadProgressBar, _BaseBar): + pass + + +class DownloadSilentBar(BaseDownloadProgressBar, SilentBar): + pass + + +class DownloadBar(BaseDownloadProgressBar, Bar): + pass + + +class DownloadFillingCirclesBar(BaseDownloadProgressBar, FillingCirclesBar): + pass + + +class DownloadBlueEmojiProgressBar(BaseDownloadProgressBar, BlueEmojiBar): + pass + + +class DownloadProgressSpinner( + WindowsMixin, InterruptibleMixin, DownloadProgressMixin, Spinner +): + + file = sys.stdout + suffix = "%(downloaded)s %(download_speed)s" + + def next_phase(self) -> str: + if not hasattr(self, "_phaser"): + self._phaser = itertools.cycle(self.phases) + return next(self._phaser) + + def update(self) -> None: + message = self.message % self + phase = self.next_phase() + suffix = self.suffix % self + line = "".join( + [ + message, + " " if message else "", + phase, + " " if suffix else "", + suffix, + ] + ) + + self.writeln(line) + + +BAR_TYPES = { + "off": (DownloadSilentBar, DownloadSilentBar), + "on": (DefaultDownloadProgressBar, DownloadProgressSpinner), + "ascii": (DownloadBar, DownloadProgressSpinner), + "pretty": (DownloadFillingCirclesBar, DownloadProgressSpinner), + "emoji": (DownloadBlueEmojiProgressBar, DownloadProgressSpinner), +} + + +def DownloadProgressProvider(progress_bar, max=None): # type: ignore + if max is None or max == 0: + return BAR_TYPES[progress_bar][1]().iter + else: + return BAR_TYPES[progress_bar][0](max=max).iter diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/req_command.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/req_command.py new file mode 100644 index 0000000..48b733a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/req_command.py @@ -0,0 +1,495 @@ +"""Contains the Command base classes that depend on PipSession. + +The classes in this module are in a separate module so the commands not +needing download / PackageFinder capability don't unnecessarily import the +PackageFinder machinery and all its vendored dependencies, etc. +""" + +import contextlib +import logging +import os +import sys +from collections.abc import Iterator +from functools import partial +from optparse import Values +from typing import Any, List, Optional, Tuple + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.command_context import CommandContextMixIn +from pip._internal.exceptions import CommandError, PreviousBuildDirError +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.network.session import PipSession +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, + install_req_from_parsed_requirement, + install_req_from_req_string, +) +from pip._internal.req.req_file import parse_requirements +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_tracker import RequirementTracker +from pip._internal.resolution.base import BaseResolver +from pip._internal.self_outdated_check import ( + pip_self_version_check_emit, + pip_self_version_check_fetch, +) +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.temp_dir import ( + TempDirectory, + TempDirectoryTypeRegistry, + tempdir_kinds, +) +from pip._internal.utils.virtualenv import running_under_virtualenv + +logger = logging.getLogger(__name__) + + +class SessionCommandMixin(CommandContextMixIn): + + """ + A class mixin for command classes needing _build_session(). + """ + + def __init__(self) -> None: + super().__init__() + self._session: Optional[PipSession] = None + + @classmethod + def _get_index_urls(cls, options: Values) -> Optional[List[str]]: + """Return a list of index urls from user-provided options.""" + index_urls = [] + if not getattr(options, "no_index", False): + url = getattr(options, "index_url", None) + if url: + index_urls.append(url) + urls = getattr(options, "extra_index_urls", None) + if urls: + index_urls.extend(urls) + # Return None rather than an empty list + return index_urls or None + + def get_default_session(self, options: Values) -> PipSession: + """Get a default-managed session.""" + if self._session is None: + self._session = self.enter_context(self._build_session(options)) + # there's no type annotation on requests.Session, so it's + # automatically ContextManager[Any] and self._session becomes Any, + # then https://github.com/python/mypy/issues/7696 kicks in + assert self._session is not None + return self._session + + def _build_session( + self, + options: Values, + retries: Optional[int] = None, + timeout: Optional[int] = None, + ) -> PipSession: + assert not options.cache_dir or os.path.isabs(options.cache_dir) + session = PipSession( + cache=( + os.path.join(options.cache_dir, "http") if options.cache_dir else None + ), + retries=retries if retries is not None else options.retries, + trusted_hosts=options.trusted_hosts, + index_urls=self._get_index_urls(options), + ) + + # Handle custom ca-bundles from the user + if options.cert: + session.verify = options.cert + + # Handle SSL client certificate + if options.client_cert: + session.cert = options.client_cert + + # Handle timeouts + if options.timeout or timeout: + session.timeout = timeout if timeout is not None else options.timeout + + # Handle configured proxies + if options.proxy: + session.proxies = { + "http": options.proxy, + "https": options.proxy, + } + + # Determine if we can prompt the user for authentication or not + session.auth.prompting = not options.no_input + + return session + + +class IndexGroupCommand(Command, SessionCommandMixin): + + """ + Abstract base class for commands with the index_group options. + + This also corresponds to the commands that permit the pip version check. + """ + + @contextlib.contextmanager + def pip_version_check(self, options: Values) -> Iterator[None]: + """ + Do the pip version check if not disabled. + + This overrides the default behavior of not doing the check. + """ + # Make sure the index_group options are present. + assert hasattr(options, "no_index") + + if options.disable_pip_version_check or options.no_index: + yield + return + + remote_version_str: Optional[str] = None + try: + # Fetch version info before command execution + session = self._build_session( + options, retries=0, timeout=min(5, options.timeout) + ) + with session: + remote_version_str = pip_self_version_check_fetch(session, options) + except Exception: + logger.warning("There was an error checking the latest version of pip.") + logger.debug("See below for error", exc_info=True) + + if remote_version_str is None: + yield + return + + try: + yield + finally: + try: + # Emit warning after command execution, no imports needed + pip_self_version_check_emit(remote_version_str) + except Exception: + logger.warning("There was an error checking the latest version of pip.") + logger.debug("See below for error", exc_info=True) + + +KEEPABLE_TEMPDIR_TYPES = [ + tempdir_kinds.BUILD_ENV, + tempdir_kinds.EPHEM_WHEEL_CACHE, + tempdir_kinds.REQ_BUILD, +] + + +def warn_if_run_as_root() -> None: + """Output a warning for sudo users on Unix. + + In a virtual environment, sudo pip still writes to virtualenv. + On Windows, users may run pip as Administrator without issues. + This warning only applies to Unix root users outside of virtualenv. + """ + if running_under_virtualenv(): + return + if not hasattr(os, "getuid"): + return + # On Windows, there are no "system managed" Python packages. Installing as + # Administrator via pip is the correct way of updating system environments. + # + # We choose sys.platform over utils.compat.WINDOWS here to enable Mypy platform + # checks: https://mypy.readthedocs.io/en/stable/common_issues.html + if sys.platform == "win32" or sys.platform == "cygwin": + return + + if os.getuid() != 0: + return + + logger.warning( + "Running pip as the 'root' user can result in broken permissions and " + "conflicting behaviour with the system package manager. " + "It is recommended to use a virtual environment instead: " + "https://pip.pypa.io/warnings/venv" + ) + + +def with_cleanup(func: Any) -> Any: + """Decorator for common logic related to managing temporary + directories. + """ + + def configure_tempdir_registry(registry: TempDirectoryTypeRegistry) -> None: + for t in KEEPABLE_TEMPDIR_TYPES: + registry.set_delete(t, False) + + def wrapper( + self: RequirementCommand, options: Values, args: List[Any] + ) -> Optional[int]: + assert self.tempdir_registry is not None + if options.no_clean: + configure_tempdir_registry(self.tempdir_registry) + + try: + return func(self, options, args) + except PreviousBuildDirError: + # This kind of conflict can occur when the user passes an explicit + # build directory with a pre-existing folder. In that case we do + # not want to accidentally remove it. + configure_tempdir_registry(self.tempdir_registry) + raise + + return wrapper + + +class RequirementCommand(IndexGroupCommand): + def __init__(self, *args: Any, **kw: Any) -> None: + super().__init__(*args, **kw) + + self.cmd_opts.add_option(cmdoptions.no_clean()) + + @staticmethod + def determine_resolver_variant(options: Values) -> str: + """Determines which resolver should be used, based on the given options.""" + if "legacy-resolver" in options.deprecated_features_enabled: + return "legacy" + + return "2020-resolver" + + @classmethod + def make_requirement_preparer( + cls, + temp_build_dir: TempDirectory, + options: Values, + req_tracker: RequirementTracker, + session: PipSession, + finder: PackageFinder, + use_user_site: bool, + download_dir: Optional[str] = None, + ) -> RequirementPreparer: + """ + Create a RequirementPreparer instance for the given parameters. + """ + temp_build_dir_path = temp_build_dir.path + assert temp_build_dir_path is not None + + resolver_variant = cls.determine_resolver_variant(options) + if resolver_variant == "2020-resolver": + lazy_wheel = "fast-deps" in options.features_enabled + if lazy_wheel: + logger.warning( + "pip is using lazily downloaded wheels using HTTP " + "range requests to obtain dependency information. " + "This experimental feature is enabled through " + "--use-feature=fast-deps and it is not ready for " + "production." + ) + else: + lazy_wheel = False + if "fast-deps" in options.features_enabled: + logger.warning( + "fast-deps has no effect when used with the legacy resolver." + ) + + in_tree_build = "out-of-tree-build" not in options.deprecated_features_enabled + if "in-tree-build" in options.features_enabled: + deprecated( + reason="In-tree builds are now the default.", + replacement="to remove the --use-feature=in-tree-build flag", + gone_in="22.1", + ) + if "out-of-tree-build" in options.deprecated_features_enabled: + deprecated( + reason="Out-of-tree builds are deprecated.", + replacement=None, + gone_in="22.1", + ) + + return RequirementPreparer( + build_dir=temp_build_dir_path, + src_dir=options.src_dir, + download_dir=download_dir, + build_isolation=options.build_isolation, + req_tracker=req_tracker, + session=session, + progress_bar=options.progress_bar, + finder=finder, + require_hashes=options.require_hashes, + use_user_site=use_user_site, + lazy_wheel=lazy_wheel, + in_tree_build=in_tree_build, + ) + + @classmethod + def make_resolver( + cls, + preparer: RequirementPreparer, + finder: PackageFinder, + options: Values, + wheel_cache: Optional[WheelCache] = None, + use_user_site: bool = False, + ignore_installed: bool = True, + ignore_requires_python: bool = False, + force_reinstall: bool = False, + upgrade_strategy: str = "to-satisfy-only", + use_pep517: Optional[bool] = None, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> BaseResolver: + """ + Create a Resolver instance for the given parameters. + """ + make_install_req = partial( + install_req_from_req_string, + isolated=options.isolated_mode, + use_pep517=use_pep517, + ) + resolver_variant = cls.determine_resolver_variant(options) + # The long import name and duplicated invocation is needed to convince + # Mypy into correctly typechecking. Otherwise it would complain the + # "Resolver" class being redefined. + if resolver_variant == "2020-resolver": + import pip._internal.resolution.resolvelib.resolver + + return pip._internal.resolution.resolvelib.resolver.Resolver( + preparer=preparer, + finder=finder, + wheel_cache=wheel_cache, + make_install_req=make_install_req, + use_user_site=use_user_site, + ignore_dependencies=options.ignore_dependencies, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + force_reinstall=force_reinstall, + upgrade_strategy=upgrade_strategy, + py_version_info=py_version_info, + ) + import pip._internal.resolution.legacy.resolver + + return pip._internal.resolution.legacy.resolver.Resolver( + preparer=preparer, + finder=finder, + wheel_cache=wheel_cache, + make_install_req=make_install_req, + use_user_site=use_user_site, + ignore_dependencies=options.ignore_dependencies, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + force_reinstall=force_reinstall, + upgrade_strategy=upgrade_strategy, + py_version_info=py_version_info, + ) + + def get_requirements( + self, + args: List[str], + options: Values, + finder: PackageFinder, + session: PipSession, + ) -> List[InstallRequirement]: + """ + Parse command-line arguments into the corresponding requirements. + """ + requirements: List[InstallRequirement] = [] + for filename in options.constraints: + for parsed_req in parse_requirements( + filename, + constraint=True, + finder=finder, + options=options, + session=session, + ): + req_to_add = install_req_from_parsed_requirement( + parsed_req, + isolated=options.isolated_mode, + user_supplied=False, + ) + requirements.append(req_to_add) + + for req in args: + req_to_add = install_req_from_line( + req, + None, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + user_supplied=True, + ) + requirements.append(req_to_add) + + for req in options.editables: + req_to_add = install_req_from_editable( + req, + user_supplied=True, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + ) + requirements.append(req_to_add) + + # NOTE: options.require_hashes may be set if --require-hashes is True + for filename in options.requirements: + for parsed_req in parse_requirements( + filename, finder=finder, options=options, session=session + ): + req_to_add = install_req_from_parsed_requirement( + parsed_req, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + user_supplied=True, + ) + requirements.append(req_to_add) + + # If any requirement has hash options, enable hash checking. + if any(req.has_hash_options for req in requirements): + options.require_hashes = True + + if not (args or options.editables or options.requirements): + opts = {"name": self.name} + if options.find_links: + raise CommandError( + "You must give at least one requirement to {name} " + '(maybe you meant "pip {name} {links}"?)'.format( + **dict(opts, links=" ".join(options.find_links)) + ) + ) + else: + raise CommandError( + "You must give at least one requirement to {name} " + '(see "pip help {name}")'.format(**opts) + ) + + return requirements + + @staticmethod + def trace_basic_info(finder: PackageFinder) -> None: + """ + Trace basic information about the provided objects. + """ + # Display where finder is looking for packages + search_scope = finder.search_scope + locations = search_scope.get_formatted_locations() + if locations: + logger.info(locations) + + def _build_package_finder( + self, + options: Values, + session: PipSession, + target_python: Optional[TargetPython] = None, + ignore_requires_python: Optional[bool] = None, + ) -> PackageFinder: + """ + Create a package finder appropriate to this requirement command. + + :param ignore_requires_python: Whether to ignore incompatible + "Requires-Python" values in links. Defaults to False. + """ + link_collector = LinkCollector.create(session, options=options) + selection_prefs = SelectionPreferences( + allow_yanked=True, + format_control=options.format_control, + allow_all_prereleases=options.pre, + prefer_binary=options.prefer_binary, + ignore_requires_python=ignore_requires_python, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + target_python=target_python, + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/spinners.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/spinners.py new file mode 100644 index 0000000..1e313e1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/spinners.py @@ -0,0 +1,157 @@ +import contextlib +import itertools +import logging +import sys +import time +from typing import IO, Iterator + +from pip._vendor.progress import HIDE_CURSOR, SHOW_CURSOR + +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import get_indentation + +logger = logging.getLogger(__name__) + + +class SpinnerInterface: + def spin(self) -> None: + raise NotImplementedError() + + def finish(self, final_status: str) -> None: + raise NotImplementedError() + + +class InteractiveSpinner(SpinnerInterface): + def __init__( + self, + message: str, + file: IO[str] = None, + spin_chars: str = "-\\|/", + # Empirically, 8 updates/second looks nice + min_update_interval_seconds: float = 0.125, + ): + self._message = message + if file is None: + file = sys.stdout + self._file = file + self._rate_limiter = RateLimiter(min_update_interval_seconds) + self._finished = False + + self._spin_cycle = itertools.cycle(spin_chars) + + self._file.write(" " * get_indentation() + self._message + " ... ") + self._width = 0 + + def _write(self, status: str) -> None: + assert not self._finished + # Erase what we wrote before by backspacing to the beginning, writing + # spaces to overwrite the old text, and then backspacing again + backup = "\b" * self._width + self._file.write(backup + " " * self._width + backup) + # Now we have a blank slate to add our status + self._file.write(status) + self._width = len(status) + self._file.flush() + self._rate_limiter.reset() + + def spin(self) -> None: + if self._finished: + return + if not self._rate_limiter.ready(): + return + self._write(next(self._spin_cycle)) + + def finish(self, final_status: str) -> None: + if self._finished: + return + self._write(final_status) + self._file.write("\n") + self._file.flush() + self._finished = True + + +# Used for dumb terminals, non-interactive installs (no tty), etc. +# We still print updates occasionally (once every 60 seconds by default) to +# act as a keep-alive for systems like Travis-CI that take lack-of-output as +# an indication that a task has frozen. +class NonInteractiveSpinner(SpinnerInterface): + def __init__(self, message: str, min_update_interval_seconds: float = 60.0) -> None: + self._message = message + self._finished = False + self._rate_limiter = RateLimiter(min_update_interval_seconds) + self._update("started") + + def _update(self, status: str) -> None: + assert not self._finished + self._rate_limiter.reset() + logger.info("%s: %s", self._message, status) + + def spin(self) -> None: + if self._finished: + return + if not self._rate_limiter.ready(): + return + self._update("still running...") + + def finish(self, final_status: str) -> None: + if self._finished: + return + self._update(f"finished with status '{final_status}'") + self._finished = True + + +class RateLimiter: + def __init__(self, min_update_interval_seconds: float) -> None: + self._min_update_interval_seconds = min_update_interval_seconds + self._last_update: float = 0 + + def ready(self) -> bool: + now = time.time() + delta = now - self._last_update + return delta >= self._min_update_interval_seconds + + def reset(self) -> None: + self._last_update = time.time() + + +@contextlib.contextmanager +def open_spinner(message: str) -> Iterator[SpinnerInterface]: + # Interactive spinner goes directly to sys.stdout rather than being routed + # through the logging system, but it acts like it has level INFO, + # i.e. it's only displayed if we're at level INFO or better. + # Non-interactive spinner goes through the logging system, so it is always + # in sync with logging configuration. + if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO: + spinner: SpinnerInterface = InteractiveSpinner(message) + else: + spinner = NonInteractiveSpinner(message) + try: + with hidden_cursor(sys.stdout): + yield spinner + except KeyboardInterrupt: + spinner.finish("canceled") + raise + except Exception: + spinner.finish("error") + raise + else: + spinner.finish("done") + + +@contextlib.contextmanager +def hidden_cursor(file: IO[str]) -> Iterator[None]: + # The Windows terminal does not support the hide/show cursor ANSI codes, + # even via colorama. So don't even try. + if WINDOWS: + yield + # We don't want to clutter the output with control characters if we're + # writing to a file, or if the user is running with --quiet. + # See https://github.com/pypa/pip/issues/3418 + elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO: + yield + else: + file.write(HIDE_CURSOR) + try: + yield + finally: + file.write(SHOW_CURSOR) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/cli/status_codes.py b/.venv/lib/python3.9/site-packages/pip/_internal/cli/status_codes.py new file mode 100644 index 0000000..5e29502 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/cli/status_codes.py @@ -0,0 +1,6 @@ +SUCCESS = 0 +ERROR = 1 +UNKNOWN_ERROR = 2 +VIRTUALENV_NOT_FOUND = 3 +PREVIOUS_BUILD_DIR_ERROR = 4 +NO_MATCHES_FOUND = 23 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__init__.py new file mode 100644 index 0000000..c72f24f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__init__.py @@ -0,0 +1,127 @@ +""" +Package containing all pip commands +""" + +import importlib +from collections import namedtuple +from typing import Any, Dict, Optional + +from pip._internal.cli.base_command import Command + +CommandInfo = namedtuple("CommandInfo", "module_path, class_name, summary") + +# This dictionary does a bunch of heavy lifting for help output: +# - Enables avoiding additional (costly) imports for presenting `--help`. +# - The ordering matters for help display. +# +# Even though the module path starts with the same "pip._internal.commands" +# prefix, the full path makes testing easier (specifically when modifying +# `commands_dict` in test setup / teardown). +commands_dict: Dict[str, CommandInfo] = { + "install": CommandInfo( + "pip._internal.commands.install", + "InstallCommand", + "Install packages.", + ), + "download": CommandInfo( + "pip._internal.commands.download", + "DownloadCommand", + "Download packages.", + ), + "uninstall": CommandInfo( + "pip._internal.commands.uninstall", + "UninstallCommand", + "Uninstall packages.", + ), + "freeze": CommandInfo( + "pip._internal.commands.freeze", + "FreezeCommand", + "Output installed packages in requirements format.", + ), + "list": CommandInfo( + "pip._internal.commands.list", + "ListCommand", + "List installed packages.", + ), + "show": CommandInfo( + "pip._internal.commands.show", + "ShowCommand", + "Show information about installed packages.", + ), + "check": CommandInfo( + "pip._internal.commands.check", + "CheckCommand", + "Verify installed packages have compatible dependencies.", + ), + "config": CommandInfo( + "pip._internal.commands.configuration", + "ConfigurationCommand", + "Manage local and global configuration.", + ), + "search": CommandInfo( + "pip._internal.commands.search", + "SearchCommand", + "Search PyPI for packages.", + ), + "cache": CommandInfo( + "pip._internal.commands.cache", + "CacheCommand", + "Inspect and manage pip's wheel cache.", + ), + "index": CommandInfo( + "pip._internal.commands.index", + "IndexCommand", + "Inspect information available from package indexes.", + ), + "wheel": CommandInfo( + "pip._internal.commands.wheel", + "WheelCommand", + "Build wheels from your requirements.", + ), + "hash": CommandInfo( + "pip._internal.commands.hash", + "HashCommand", + "Compute hashes of package archives.", + ), + "completion": CommandInfo( + "pip._internal.commands.completion", + "CompletionCommand", + "A helper command used for command completion.", + ), + "debug": CommandInfo( + "pip._internal.commands.debug", + "DebugCommand", + "Show information useful for debugging.", + ), + "help": CommandInfo( + "pip._internal.commands.help", + "HelpCommand", + "Show help for commands.", + ), +} + + +def create_command(name: str, **kwargs: Any) -> Command: + """ + Create an instance of the Command class with the given name. + """ + module_path, class_name, summary = commands_dict[name] + module = importlib.import_module(module_path) + command_class = getattr(module, class_name) + command = command_class(name=name, summary=summary, **kwargs) + + return command + + +def get_similar_commands(name: str) -> Optional[str]: + """Command name auto-correct.""" + from difflib import get_close_matches + + name = name.lower() + + close_commands = get_close_matches(name, commands_dict.keys()) + + if close_commands: + return close_commands[0] + else: + return None diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4c9989a5f7b936342b69979947617546909ddf04 GIT binary patch literal 3065 zcmd5;OK%)S5T4gQyf52{N#Z;w#CdFD&k{nOB#_`J!UB>=CLpblM&qg8or&i~_l%ca z?Viku11Am~a!4dD+&J)S`pSvFfP_SK&yM4OH)nP=-PJYSUsr!sT{TX#SyS-$!%x=p zpIeIZhZyYt9mc_ZeAtSrD9;p7x(cYE1!`BtUJtZT@9L`18G#X&x}~t(Er*qEMe0gH zHJt0tsS44d43%B2TO&27!W`6gb(HGRfTomMFb@k-T7*MzSV~Lq4jhrvQ8)(6QaTPN z;G~pJ!D%=nB@@oVyHYv_D{x*)7vLgXl2RKk!xbs5!Wvjo>cD$&RZ8!}HTXbE*Wm`- z+|}XMi-m5Tlu3isdfKu=nsEEBf};|dgF7#D_z>=XZ**IzsgTC90{32M@DY5Bx_Qtx zmG=G7`Px&*-FEuKbmJ&>{K${`rV|8a;wPvILni`O`%}>TxUKS9~8rHOVK3W+Q@||>S%E~Hk14a%o?4U0RizK3StNN{KKhKfE+3m`%uK; z4>BY}c5+h|o)uz&b9hg)59rhkpdKY;M0oR&>_uTowbw$ahC~o6c5zpuyJY z1SE2Og6>|KwMiWH{C-Ap zQ5^B5_5H(Q(+giXk%;>scAdb)FgN=_yoDlOgx8C$(JUV_;!xM)%}v=CsLT1#d^&u( zA-uHb!nZKuAScL(=n9zg7}^POQ)w68L18GK^&&F|9wBI>m^>TOM~c4VjSbNikk<;x zH~hEb_<FG?$T<7;6|vBAnGnIAxIAV#Rb8^#%ZBXDO&o98f( z*FVL!z&nQmUI&6Pz&ygtxVLAYVBX&m2A-W60U_on>HbB5lgkD4+5^)gK|*Me;>?WU zbrb$_^V}t4E?+d81t42lpEn+gu7JMqpF4uky)2O6azP(c>|1z1yO0NL3&f)mQP{iR zKxVZUc%{fk)x88a_c}?Hr)kEJ*}!1pK9?|V@cxzaAm`<26qjT`@lqZ*rQE%S^hpgF zDX1*vCpLsJyg8+c*?<)Q%Yh-%IWKPy9NK5ROi7y2$i-T`_p72*!sj!5*d1(AWvnbK z-{=!f_Q_-_<7Nak+W5)mn>N6aaKd95)Ae(FheA0sC+g{_tZXlt~Mrtr$N4z&$>NsQ>5f;3xB;FT$dzbf=PPWx-n z@#2tl{A8Q4ED_sxwtVIdoacn3ohFlNNYDu@xy9=A)p0)DTDG|*c(i=F JANlf7;~$9L&hG#K literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/cache.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/cache.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45643449e575674fd63af572853757ab39dabec4 GIT binary patch literal 6192 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 LqJ(b|C+hzK5{wVe literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/check.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/check.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9522c2551fbd16c87976ad1f16c4fd378215436d GIT binary patch literal 1581 zcmZuxOOM+&5T@R;EN?d{u*jwlsD~UJG*W>EC<+usfo;%Bum#p=4r&5H7RR=B^)gBA z!iIcuPCfOI-g;<(Uiz1K?Wunu=%GWc<2XfWb2KxYA&1}0FddCNg5#%G;pHzjA%7|1 zaF{53gOgt)p@eD$iPcvxv{H|CP4PxylxA%9yjfVK9os!`6;A2KZaIhty=)g=IgE#; zAN#%R6r=JeKGFz~-`<1c-?jM8cZ9lh@RHC0*jppMOSK6Zdw=8Ezbb z=3L;{IjhSut>{>n){~2i?=Pe?`QhyB$z+0>JJ|xVtE5S@t8@+t2O&Sn7^DIYb;*p? zWs+B1q(uP~H}!8=jy82GnpR}$@WZi())`w3 zd23^L*0J4e+KOORx3@U=X5spy^E#Na z`UJ7hePCWm6ihDzfjk;8-9i$_h0 zZq+=&yiK`u%A6}v4zs$N6?rC<;N#*YWFo2364;U2#M`HTC0*qEB{@{wE)Z!TEPoPq z56xeTXi=9C<;@l6ZPV0DMAMuvZqiEt5w%T@wSJQ_n#}S7l4;6;M&UJ7*HMvAqh=)* zb@h4pWyG-u9=$2asL7iM9R;u|Eh4N<)pb1TJ1lHg7(rW|;PL!15~6#Wue%yjP2c_O ze_Tgt?(Q}H%4>JvYbM&Rj}N;e#O=<WeeBIZMwPVxQJ>y@$=dthr literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/completion.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/completion.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f8f6598ddcd4db48c26995377d21dac9cb9dea1 GIT binary patch literal 3154 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 T3Vo-I3HY5^hl1d;Q8fP-NlthJ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/debug.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/debug.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0cd6bae442c4852da8ea17352feac9940f6eafc GIT binary patch literal 6670 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 MD;MhJhTmBFKk@;~`2YX_ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/download.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/download.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..93c2be55957b5eef2cd8696db760a7dded05e85c GIT binary patch literal 3976 zcmbVP&2QYs73bHITrPL@WlNSF2ZRB;S)kf&lBPuq)iq$ZMO(uNqBIAlE$M2-B?@HN9x@phv$-14aq^tg_thbZ3blqQ1H~fwCj(V6DolzADVm!la@cYR1c$m+*C> zl;lMj=NY!Hr{NI|%8(t>GAJhHD9`$uSpS5+sbWS`nw8J^K*1yMr7tSVrn zwfCFn&wsYJ2h}Yc%&vz7B@3e?%KEx+XvQl>0}?aQ%W{^6NqkC!A}mK>k;Nqq@~SK< zTv_*1niel$+NjLgB*HB$J}nTQ!OM4{pb9$Q*NE!tMDq=z6XQ#jw21lE@LSZR7PV=6 zTcHlIzSN0L+HZ|B)$b4;+~bIq7x_t+oE4%`>5FS$Q9k4w8u_Ki` z-p7-Vf9bsk{_yg0M41<7gnj}3^(r1`hu(q{JYLW!K8PvfgJ$q&&-c87F zZFr9s76?0w6UrZb*E<=-(Fo^1jtP~f!px%~pLi$X#4Ev|+{(lYp=+K{k7ma)%QFlQ zRPWQPnJB3@8$Osj)bk#L@D^Ty>n(y2RF{Re~E=50$m?1r&= zNB@tZ-Q$Q~9RM87Q}2IIx|`fME)3;w?cSUcp7`*pv&1H&WyP`xJazSGP(wa?4ll=` zoGN4GLM^om{ZhG9)oa;Ul3Po%xg=Xlvb`j?mt<#2?kvgflH6UAdrR`llDxVkuU*Sy zm8e8RNF$)j_3;L=h<$FW3i#m;dIUWI^}D4u-UNB;Qk$vxy|_o(Q}t4leySzx4Kh&> z_^(d29dc^!>=4S!)3y2=XCczz4gl|T>sC|EM#7zANm7}PeIMTDiZ}x}?1J*?pl=8R zXAxFP%kVg4!Xoq_tddd~BbpQpkG;PwY~bSnVx0>oB(er;VR-9^P6Q+kTnbjXa2HU+ zg_Y$2p#>Mc!zAAi6SRPoF4~~jhaItr=;T>4nG4;5(F4lnqRv?)bZ8U3#%?eQ`G~?i zh*m~95B6cr>u9cu6B5KcPo$rOQ*mH$T72~W4@DRB3*u&c2qaJEmjQ3C6rtr@m{G;R zGh!RJdE>^pTKt;4jq0rghb*rO(UD}(2xbv7PMO$yzOqPw6l&j(Ee3!~K|#PQo#z<*+K^AkI!gMgn9+*f*zSI5-BD8z%Aou)Y>Q z9Q4SOTHMiGbVHUV^t$8dMaIJH;0y9QB&f7da__pDd9P8N zP!1I+CDQ_U6bh3p7WZJg^f3$!a!4aT&l`lT_m!NTektWHg^(!!Y#_vhBE4VtxS8{5z} zyz9g|Z_OOAurX~(K6J)+rZ!l%&$U_SP?@>Y&iL-d=B4sNdHunxJME6Qh*Bx+E2!Or zn#%wFE9Lj+HME6D@vnQyu=MeyBVG^3qk_zJpqEf8ZUr7;+F;EX3+T z4tdsQG@{W_&>(@5;ABK;!cXt-RZ#@{I;fIlvT&n&kNMZC*MC>6Hs}WQm0^-lBHEP1 zWw;M%M9o-@X#%MxZ~$;u93d^S4lW8;&hT;*8<;RQY#21IWSHNHyNx3nkO3g&rlnuI zkZ!<^ffP&nMaeLPSr-S{KteJx1qa{EM7h|Ol(N8`!Q4}#+o*upz(b-}<9zNdv5Hx& zWP>=8t`in)N%q~wSZg!VHUoW`wzD z!5HUp#%!qedu#xo`rN*cH9T|n11#i$V$Lht5FX8SWPnl5eu}O3d{ts)VJ2{EDV%vE z!cpm|^>s(dO~^_TXl;PkOYjoV%xmctbQuWf*#&P)=gR=Ick3g4ipdVY2ZgQL Ss;jyXWiDKTSl$82(Z2zONufvp literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28a73d60ed15538e50883596a31adf219ad03274 GIT binary patch literal 2651 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 VZsR8#nV!1-*Y2f)+=Jv}@-ImiVJ-jw literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/index.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/index.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3696f7267f7ca79d9566dceb8dc0e67978918fad GIT binary patch literal 4535 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/install.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/install.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20ea4f46a7778c1e8ba0886c4e9950c429670522 GIT binary patch literal 17699 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 AjQ{`u literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/list.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/list.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7dd75c0b360d0252da2c42bf758c125e7c11cb98 GIT binary patch literal 10163 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 Lxci0O>e7D$;VfU3 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/search.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/search.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8ed715a4e945aaa4556545c872642d1ac1ec055 GIT binary patch literal 5337 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/show.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/show.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..475fe1664070efabcda5d4820611559c695d628f GIT binary patch literal 8482 zcmb_h>u(&_b)VPH&MueBhbZc4d*Vcu*CCfq?bMB;x=JZ2cC1jYB+Jb(I zv%Gg!6c@W_QL2a?K!uv*qY;oszUbfR=l%i3eC;O#MS-GU3ZsbnJLk?mC@D@{bQg2y z+}D{i=bU?96HHGR4g7xotLo0*yfbA&Pa%*lYU(2_=n%64S3aw(T$a79K)hg9W4CkWhR=HMY*o|gdv$fgQTy2i~ z`Dng%qIROSP+Q=>7oBV^))q}8G!IXOr;p6qnI9UWAc_wSQ4GrmcI_IAD+jo8=gC3h`G-!F)vPF{AE27zCwSo@R=h{ zibah3!n|!%PJKcAS*w_-dpC%>p{nFk@4Y0HK@!W?F;& z9Ykr42cDSeTq9`5?Pep0n!T{z##&&@ug0xb&=wUd&0V{7>*lRAfBVDL)oZtJV`TO( z0u^2bYT4ZA61w!%R+!X9xEXY#q#m~KH)Y&zh3y2GN_(=Ig!Q03S(OA)6bio+H0}jkp{f>n@11QdVygY7 z!ZQEX_0{D@-0DQlpq==wpc(nwVIV^3Yy4H-*83LUeE&j6##{bh$INi`v41(k|Bhd+ zR`0OLWSDeiy8&e${RsAOt>RKkX!^#Ev11BTSi&Y|5Gx+JCXHK%w(w~F$Rf1_6AEiR zYk9MmUtZp9Mxjb``c_oXhOnN$Tfv3)P7zjO<|Qxi&7o!C>c(|jiC)CuI4l5^PKun9}{BkM&Mi}p_e^er`? z7>5w$YXu}FTCni85yP7>p!Pt7;bq`BR0DEHI+a6L(vMJ!*Y zXPji~>TIIw^|V;8w_?$S3e?k5y}sKG zB6?T!^7Xoi8vt@$g#!(x+iH{k%W${b#GQ0S!oL{OqK0fxYQvhPHr`IYPGe(I86tY+ zEE*E3A}8gUj_X*CRW9*(14GAtHhNcZsb8ZR8nzFO&<-78Ue|V<5)3^_DmjS!F$IqI%Y=~K?(;WEsfi`~ck(eFgBkPEw zv+G51gRN)kWgJxLR0fIq#(r8D+EAI!w!$P3K@xz;l6OxvqClzUW)uB1uevyQ&s^O-%d=E=95}njZg4W+}VtKD8xN(%LFcc#erl9rh@EzDa?G zKY~e@R&lAHqUjs*Y9CPw{JC|{0&GgZZwd&S`>z9b-Zlniy96jF?0-OXFfg&h6*-2D zT_Z6PbH~~;`sU}D`P{r^{G)L|oAHF=Q0BqZCI zNMd+AxGQ+FYpXYJUFGo!XP05n&dg_*p?Hn*Wf+02_d_2z$a4?_e1WsnfMeNT^7po3 zifM*@U-pzg1W{&Rd>O~dk{?#Lsv|7N%=h?V8Nrv}P=c1v0)Z8zH^fMy$dzddGq*m$ z2VShbbhe$|<3+o}t*zzb?|6&_lT>H;v@2Ja{5xPzLrVoQMfON$%XL`e4LDFtw;+<{ zMl)(A`~F@Nw5$DA)NJ2VOCTQ6hKNJuLzn$7Z2S6pu%SqXuT|F9VbU4d`Z~RH6{a+4J(u!32{Jf>xRy;>!7GHk^p za=Z`>XAt>8EAHYH5{sGFS)k)@%D4q8iDB#O-}jrFqYgz*VXKosMfeGR(CLJ20XKss z^c2=t1W}rce_Zu{goDnHO!kHv7VYacY zo*OTV8H~GqJm<0b@zNmQD}7@0^RPMIM@D;(gXKpZ)%;SC{DWF|A zFwvgG-Us4TztAtDw}|T$Mt+WwnZwiK^cKQnKxf1maVmq(j-YcR===zJiJ?-zEM9&z za~Is${f$_J#eJpsAFS~|glZw^7w~k=NNMdKdO!g~HO`Av)&GDZrelK~ku5Q%%ttQy zLl3*;BPiuFp;HnL#jE~%qZ~!Y=0i8^2aE=xt-lqvDd~gBxj3R_Z2B$&C!eZg)cF^y zLqm6w5sfUmK5)kplc9IJO?pldTNAqcaS8s)+<~6|(%MB9#-|MNe0h{pa*Mn-7@9DSYlZoW!@=gp)|wCamRwNz&YbJby8kCq!Am3KnH1 z*3`_H#FAy3U%0G7Ez^Bk%rd?8)tXkP!iGL>a9X2uXhId~;63O_DCH1&>a216{NdXB zYd1eyTZ1HT;CbmB@==K@33v! z^V{CL|6jD@#Jcynd?f#d2)IKHL(I2Rzk>@2(L@2Z0Z-}vw)frt6FrdEO?uvQx=2bz z=adzI>O;M9-#COi!Mm97C=2i?=KiZgk3|KLHxOA1`yss6p$*^b92rL@c~xkvvzEF# z?tM%EeWF7N=k4x*> z>hIwV8}>RyQc$->EX4~{47I(2M6gs(!Ust@cO5bJTAW;`6MjufWgvm5^Y{W>$jx%ujwlKPey4!c?E^B>MNO}uN4pEbHWFF=zcKX!Fq8o4j zq1KhYO6?VJnU@hCph8P-~l%2m2LIQFH--ivgUE><5hQrbiz(}VJ4 zN`ogoG1r*wPqfQP&CWAYU~Tyn`@gof=#~D=C^@m|Xc7+4l5DHgp;U4r*?1y0vi2uTpy{*0v-uf$-<{+ z`D`9@WH$WIi`3=Uz@gRU;#Z%|%R?suJ8$0$_j|LP>|{k1DiK_lZ6I4qjkLHrD%aHV zw{^9qS9llI8kADE!kYU7F4y!*`o7HNnp*ybF4t6MbTsu{B8?;~-=>C&o$`CsT%zXt z)Q~}!e@4wa)ciR$SE%^`HIz|R&dM@w>Ad!vlW}$GDwKsok=ngxN0I>L1zPItAbph6 z)TbzhlR_>5rQZADzE&Kn%%r&}-V3GHMOH&r$d75yn>6pqV2?vrIewMV3#5693J{^E zHh{`3XNIYbs$y-5OP;(F)vi_(l`oW31H!vQ%^sRsalAI&Yo!@Lzx?L#v_J)_IJf)CyfM zqc=~QZh4l=@r6ekk3VVtSOu!zu;lhVN4}n*Hg-T&apcJT+zzs1hF!ogObq7%I~nW&&Sh`` zu$#d}!1)ZG0_@5i0xdxHKMWkQkQxTzQU>A^ffB&Eb9{TrJhT1le)Cl z`}Qi=i*@oH4vV5F(v3JZcKVeQX(4QPTbyId84x&O=zgauV+;7Vw0LyFwFP8T!e)@H zU7DkkK}Q?Cg8Uh67@eltO!oPt&L3Z3^UNk&jkGwftaF_!btu?-)>B*rwtvQ@$jllZ z3;_-`>e?u69ske69JoA2ho9=;WEyBK8H*yEp(I?DZ^%vDP@%_nBQkCj4Wu5veIXXW zw>@%kshjL~XpW7rgAqybhAzhEX~8+vEUNS&M#QqJ%c)pj#n8noqCt`r>l2h3k^l~bol+@ cyj6l^sQ6g2iuUY<+4)z`onFsAL;lbI0v@-KbN~PV literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c36b514b3076bde7aa95221c1113762f7ed6706f GIT binary patch literal 3115 zcmZuz-H#(j5uY#5jK}tV-sLU?Lg&IkjAB~?#K&=pBJLs-k(?qehs2<0cGlf%_uhPM zchCCP^1g6+LfSXp2-5Cb_$TtnAJMNo@y25Wh@+~<>-B9i_SAIObk$T>)vv14UN5rX z`qQ6>M}O~G)<1BvezjooKHTyPAk?CEX2tk)GCOx-$HuXnxw#j6X6$9H+>d=TZe>9p z#-SPeSv!y7DDT7_GY_(E-iv!?9A+E&X1r;}?QARGjXTDb&;ep5oL+G zg1x7Y9(}O4hiX48q)M|aRUrF;5TyX-PL&GD62XpZE?CYACE*LVd9xJx$)PCoB;y6s zZ-0$#r0Kdi=zOOVrD9{1RJ>}W^OEvI*bsg>f&Yvbw4BK?`e6O?VDdiP^5;O972DK` z9csrebz+aY)cf3~E$V;f#VzKufQ7GHtWAT@T^iCha3ku1ZzH|+v{;(D^ildN+p;18 z*Xj+a(($u&!sIYAFThyBB}or5MpQ}aD-9$sr6Nmpj9!b8-xTGnAnf^=Rk$&b73@Ky zY(PG#1tSy!S}UH(mDHM|8CO%Xzh9lIX;~1-R9y|L)2jvh`|pz3l#i#zI6^X(o-lI2 zrr=rKw8MR>~9;IYbB~Qbi7V#w3|BFkof&(5M-Zy|LhxA~TUz6%+D$0XaDR z24g5YVOd%2?>F-Er%P+@Lx?Bj4`s9QPszijGv6b_VY8Hwn`;JwJY3H+W2X@?Fc9DX zQH&u@s|&|%xF5kS9|KufN7j)|ZR%h$Oe{kI4pUg81C01dDzrCc zSp{1-owo*qQzo^GB$BEWEK#Cn^B+AfiytVG%4g)T6l7c$hg{?aeWW~GOKr+BW>R<9 zcf~F^SlmK#2MIdA@9A)y(**2>FQn9r&??^mU+7&(FeVf(Kxj`ySyxa2Jjt@dzggnD zpyS`qN7FKABVIj|vaYI9sL=tJ(^-1Nm>Sg;Pj~^vizevnWK$pdA5RM<57^U!>V++!RMSTEP~eq&wFZ%kP0H@*WV&_HF0-=Qv;a-8IgC z{BZv5RlJwwW4NZM@9JQg_u5OvM2byNI(AX@^1_DY!)@~RUoco$7uLeQw9i~_op}rA zvGwUs&RWV|v=;Ue6u5Ke%wPCNu6VHU7oPHP{K9@{9q*{tg-@MD3$yol2UZ6l``|24 z;UZYr3zxd*E^xko7OM6lyrFIXhPM6VCks!0p(5%5BHX_KewI)FudNsMA8pm4!NNPS zXn1Y|dc2G7rDe3Ebv@9INZO?BXC95f=Juj3zFf2~wk|EO?n|}(0-kCIFxEjxhg_D> zZ5W;JeOR18H>2ywctGw8!Y2h}EhPhko>lN5Wlgh#;#xr?kp!FIE7E`zM_@R0Ae(MD z|Kab;8sG%Q8c|4~5JJs_SqXJ<4Ut$d=Ue0*$r!nZMIYfr=FYvoc3}#3_e{Gw<;4U$ zSOWw{chg#x$r4LCIAP+Tl&rt2cPC6GOOz%{V?+l{>s>h@0gX(1xC?RmlQNiY2x)}t;+HUxp8&D! z$nosZpv(K8@A>u?%pKSHukS~|^d~rRZHme;w`XGI7kqy z+LcOZ7b=MODe|yXtr3FL4IsDSmgv;b_9D;QxMR5eH*|m@gwW{_szFl@QMvZjX@wCr zA9({3XqZ4Tqoo)&wF}-2&6%Ldgg4EKt3oy$XMBhy5E9KGK;ZFKf9LCqAZDvISZhr5 z^*3mPGoPv@tcA8>vP0i}RonFe#-yFze)Tnc$Ry@X-M}9L8o-P77+Q}sDQ~j(<_FAf zhdGzyCZ*c|n2${Ui=Uz810?9{HUFD%5a8+XVH4l?upvpz{m|~(T?c;l7LMSz<#nCN F{XaeVnDYPt literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc4a7d1813acfb2a1143990776a08f3e798fe7d7 GIT binary patch literal 4843 zcmai2&2JmW72jPhm*nz8lw?ctXEv!FN2x`o=tmO6HQYFHkswHcI*k#g>0-qhi7V{~ zJu{Rofy^Pwsel0=dMpa**n3Ys^e@P%$2qpA{sBESL5lv~EGf|nk}k2c^Jd<>nR)Zx z@4aEvZ2A_S-~XYrv$keg|0H7maY5Y0EB}sySE5UFmwU^m z?kDHc^S$$?UQbri)!u5l)>|`lBe{@X>|HeVW^yUL+`F7!>0PlcZXI3aFC5#w;FlI_ zv4t-zw!j;QrQVCoeqgP)|Al>7AFSKj`zT6AT%zW_A4`R=|8T&0axdx+I8ptSNZ!QI29Z!5%qVuz;L5 z#^qaET*yETco4C@C{x6cZv|Pdj1Z_QPls_5XWPZhGT%~K1#M zJAVw7T#be*&l7p)=dX3%D0WiFDcEle<6&SLZUiF<#nJvY8O*gf*f|LSf1+SBFxOy9 zO>pG-aA)8O{pQ3Z0y`|(!H z#hswj>3qkC4e{I{oO+z_?;G&R2FE;meHmcx9oTj-63PD`kmP;rVm5?459REX$U&Y0{HW*1R_;;x*gCf7 zXzvVNIYU>^(6uwPe}=A~p&MuD<{7$mhF&;Bx6javr!;n2AxCFEtFy+_^4zYLPPxpk zmrrSoYML>C-=_!>Cz?4|@IXiBmAkWo_SIu&V$=6%jkU-2v17Ok3i>3PS%89!G1~1FAF3CCRljC~s^G1wZ)s-K?LC z7>AMb4Z#s`Bw)^<Q&)=n<92cy>yL!I95` zs0@euY5?IC2t+86xCxWsod9tPbVg%{(&zATZwDy(i4)T!Q*I$bJZOU<1o$;n^;JQiG@qfx}80q?RArQvs-NO$DKF3GFE&R4P_Tc z-Nit~MHVI9X~>t;xHQB8ogSq8A(kOOLSZ?c?M#2Jv#?3{tfo1fUCd; zgQ-Uj)h4B}byOPL;}Y=0Rqoi{DdY7Hok>|$P^%tdL|9d|qE4uCudRt>i9=nj}PO3npg)!uey>SU`kjGqBep;E-(9<5*sBKI$F5+Dx{Ga%c zu{?IoD*c^v<0@oVo;s8Iwl!&t>pSOG{?=IRq>B;?PzV>B>qQVste=h zp)I}~H;yizv|SoE%p8{+7G}Bf%pNwjsdg2$m2HbvpO$~?Oj?tLaSL)kGjd;eW{X>p z|H97dGh5zy&-&a36`=ke)ep|87mr?|7Rad*x<0hByRM~v@XX%-lWk4fwsr8bx^{G( z)xh=gxP4rL?iOaNdT4zNJf5^aYiEA(ea(8!dS*Ymrf!TE4sGV|mau}qs#jS3(Ei+3 z>%i{D2fA!P`9mDO#{gf7YZrLSbh~gs;06+EWNhsIdPTPslG`a<5YW5{ThMj5<}5wd z6{JFhb=o6Tg9A2L{y0nWh?!{6Bq+fvLUNFGPgj9Pa8)kETaYysXqFWADccvXQu8$w z$gNk<(BBQGj>%b(X-Rp-!_*Gg7X&#fE%P1L6p-SNo`@#xVVQ~saW)Y~pfu`5GAYOhMT7EMteL&_P&b) znVU?s4SzJGTZ34j6SUPW78Sps!q^tsh`5VF*G`fN?PA4JyhE+k z*+%uk+%|BKN;iosRMSYQOCa?^5wPT_--pRVC9R@?j0@L8scmjTN>RK{GnB+A0#w}k1f7Ll?Kb#K$Skih!SHqCB8HU;q!!&0j1h-H(!tfEUA=92p z7~<}P=JH4a5X2kUgQ!qJskopxfyl3fE+Nv1U23C{I#-Yq1jP`_sU-c|QMKKcTWQ^L zY}3B}lCID(<9NkYV*Uh$t|BTG;hZMYp4uN0gPCv{p|x`oS~~@1kaP7G&-5g5;lWqF z)sCCtquD)Ncr-2TN?-jpBXTq~lHf)DY3xm}J!nG6$|$)@ljNCo;k zc&2|i7+*g-4f%)cq_ON9cra+8FF(JOg2wp0q6(9QQNjfA!UU`` can be a glob expression or a package name. + """ + + ignore_require_venv = True + usage = """ + %prog dir + %prog info + %prog list [] [--format=[human, abspath]] + %prog remove + %prog purge + """ + + def add_options(self) -> None: + + self.cmd_opts.add_option( + "--format", + action="store", + dest="list_format", + default="human", + choices=("human", "abspath"), + help="Select the output format among: human (default) or abspath", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "dir": self.get_cache_dir, + "info": self.get_cache_info, + "list": self.list_cache_items, + "remove": self.remove_cache_items, + "purge": self.purge_cache, + } + + if not options.cache_dir: + logger.error("pip cache commands can not function since cache is disabled.") + return ERROR + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def get_cache_dir(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + logger.info(options.cache_dir) + + def get_cache_info(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + num_http_files = len(self._find_http_files(options)) + num_packages = len(self._find_wheels(options, "*")) + + http_cache_location = self._cache_dir(options, "http") + wheels_cache_location = self._cache_dir(options, "wheels") + http_cache_size = filesystem.format_directory_size(http_cache_location) + wheels_cache_size = filesystem.format_directory_size(wheels_cache_location) + + message = ( + textwrap.dedent( + """ + Package index page cache location: {http_cache_location} + Package index page cache size: {http_cache_size} + Number of HTTP files: {num_http_files} + Wheels location: {wheels_cache_location} + Wheels size: {wheels_cache_size} + Number of wheels: {package_count} + """ + ) + .format( + http_cache_location=http_cache_location, + http_cache_size=http_cache_size, + num_http_files=num_http_files, + wheels_cache_location=wheels_cache_location, + package_count=num_packages, + wheels_cache_size=wheels_cache_size, + ) + .strip() + ) + + logger.info(message) + + def list_cache_items(self, options: Values, args: List[Any]) -> None: + if len(args) > 1: + raise CommandError("Too many arguments") + + if args: + pattern = args[0] + else: + pattern = "*" + + files = self._find_wheels(options, pattern) + if options.list_format == "human": + self.format_for_human(files) + else: + self.format_for_abspath(files) + + def format_for_human(self, files: List[str]) -> None: + if not files: + logger.info("Nothing cached.") + return + + results = [] + for filename in files: + wheel = os.path.basename(filename) + size = filesystem.format_file_size(filename) + results.append(f" - {wheel} ({size})") + logger.info("Cache contents:\n") + logger.info("\n".join(sorted(results))) + + def format_for_abspath(self, files: List[str]) -> None: + if not files: + return + + results = [] + for filename in files: + results.append(filename) + + logger.info("\n".join(sorted(results))) + + def remove_cache_items(self, options: Values, args: List[Any]) -> None: + if len(args) > 1: + raise CommandError("Too many arguments") + + if not args: + raise CommandError("Please provide a pattern") + + files = self._find_wheels(options, args[0]) + + no_matching_msg = "No matching packages" + if args[0] == "*": + # Only fetch http files if no specific pattern given + files += self._find_http_files(options) + else: + # Add the pattern to the log message + no_matching_msg += ' for pattern "{}"'.format(args[0]) + + if not files: + logger.warning(no_matching_msg) + + for filename in files: + os.unlink(filename) + logger.verbose("Removed %s", filename) + logger.info("Files removed: %s", len(files)) + + def purge_cache(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + return self.remove_cache_items(options, ["*"]) + + def _cache_dir(self, options: Values, subdir: str) -> str: + return os.path.join(options.cache_dir, subdir) + + def _find_http_files(self, options: Values) -> List[str]: + http_dir = self._cache_dir(options, "http") + return filesystem.find_files(http_dir, "*") + + def _find_wheels(self, options: Values, pattern: str) -> List[str]: + wheel_dir = self._cache_dir(options, "wheels") + + # The wheel filename format, as specified in PEP 427, is: + # {distribution}-{version}(-{build})?-{python}-{abi}-{platform}.whl + # + # Additionally, non-alphanumeric values in the distribution are + # normalized to underscores (_), meaning hyphens can never occur + # before `-{version}`. + # + # Given that information: + # - If the pattern we're given contains a hyphen (-), the user is + # providing at least the version. Thus, we can just append `*.whl` + # to match the rest of it. + # - If the pattern we're given doesn't contain a hyphen (-), the + # user is only providing the name. Thus, we append `-*.whl` to + # match the hyphen before the version, followed by anything else. + # + # PEP 427: https://www.python.org/dev/peps/pep-0427/ + pattern = pattern + ("*.whl" if "-" in pattern else "-*.whl") + + return filesystem.find_files(wheel_dir, pattern) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/check.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/check.py new file mode 100644 index 0000000..3864220 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/check.py @@ -0,0 +1,53 @@ +import logging +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.operations.check import ( + check_package_set, + create_package_set_from_installed, +) +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class CheckCommand(Command): + """Verify installed packages have compatible dependencies.""" + + usage = """ + %prog [options]""" + + def run(self, options: Values, args: List[str]) -> int: + + package_set, parsing_probs = create_package_set_from_installed() + missing, conflicting = check_package_set(package_set) + + for project_name in missing: + version = package_set[project_name].version + for dependency in missing[project_name]: + write_output( + "%s %s requires %s, which is not installed.", + project_name, + version, + dependency[0], + ) + + for project_name in conflicting: + version = package_set[project_name].version + for dep_name, dep_version, req in conflicting[project_name]: + write_output( + "%s %s has requirement %s, but you have %s %s.", + project_name, + version, + req, + dep_name, + dep_version, + ) + + if missing or conflicting or parsing_probs: + return ERROR + else: + write_output("No broken requirements found.") + return SUCCESS diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/completion.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/completion.py new file mode 100644 index 0000000..c0fb4ca --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/completion.py @@ -0,0 +1,96 @@ +import sys +import textwrap +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.utils.misc import get_prog + +BASE_COMPLETION = """ +# pip {shell} completion start{script}# pip {shell} completion end +""" + +COMPLETION_SCRIPTS = { + "bash": """ + _pip_completion() + {{ + COMPREPLY=( $( COMP_WORDS="${{COMP_WORDS[*]}}" \\ + COMP_CWORD=$COMP_CWORD \\ + PIP_AUTO_COMPLETE=1 $1 2>/dev/null ) ) + }} + complete -o default -F _pip_completion {prog} + """, + "zsh": """ + function _pip_completion {{ + local words cword + read -Ac words + read -cn cword + reply=( $( COMP_WORDS="$words[*]" \\ + COMP_CWORD=$(( cword-1 )) \\ + PIP_AUTO_COMPLETE=1 $words[1] 2>/dev/null )) + }} + compctl -K _pip_completion {prog} + """, + "fish": """ + function __fish_complete_pip + set -lx COMP_WORDS (commandline -o) "" + set -lx COMP_CWORD ( \\ + math (contains -i -- (commandline -t) $COMP_WORDS)-1 \\ + ) + set -lx PIP_AUTO_COMPLETE 1 + string split \\ -- (eval $COMP_WORDS[1]) + end + complete -fa "(__fish_complete_pip)" -c {prog} + """, +} + + +class CompletionCommand(Command): + """A helper command to be used for command completion.""" + + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "--bash", + "-b", + action="store_const", + const="bash", + dest="shell", + help="Emit completion code for bash", + ) + self.cmd_opts.add_option( + "--zsh", + "-z", + action="store_const", + const="zsh", + dest="shell", + help="Emit completion code for zsh", + ) + self.cmd_opts.add_option( + "--fish", + "-f", + action="store_const", + const="fish", + dest="shell", + help="Emit completion code for fish", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + """Prints the completion code of the given shell""" + shells = COMPLETION_SCRIPTS.keys() + shell_options = ["--" + shell for shell in sorted(shells)] + if options.shell in shells: + script = textwrap.dedent( + COMPLETION_SCRIPTS.get(options.shell, "").format(prog=get_prog()) + ) + print(BASE_COMPLETION.format(script=script, shell=options.shell)) + return SUCCESS + else: + sys.stderr.write( + "ERROR: You must pass {}\n".format(" or ".join(shell_options)) + ) + return SUCCESS diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/configuration.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/configuration.py new file mode 100644 index 0000000..c6c74ed --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/configuration.py @@ -0,0 +1,266 @@ +import logging +import os +import subprocess +from optparse import Values +from typing import Any, List, Optional + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.configuration import ( + Configuration, + Kind, + get_configuration_files, + kinds, +) +from pip._internal.exceptions import PipError +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import get_prog, write_output + +logger = logging.getLogger(__name__) + + +class ConfigurationCommand(Command): + """ + Manage local and global configuration. + + Subcommands: + + - list: List the active configuration (or from the file specified) + - edit: Edit the configuration file in an editor + - get: Get the value associated with name + - set: Set the name=value + - unset: Unset the value associated with name + - debug: List the configuration files and values defined under them + + If none of --user, --global and --site are passed, a virtual + environment configuration file is used if one is active and the file + exists. Otherwise, all modifications happen to the user file by + default. + """ + + ignore_require_venv = True + usage = """ + %prog [] list + %prog [] [--editor ] edit + + %prog [] get name + %prog [] set name value + %prog [] unset name + %prog [] debug + """ + + def add_options(self) -> None: + self.cmd_opts.add_option( + "--editor", + dest="editor", + action="store", + default=None, + help=( + "Editor to use to edit the file. Uses VISUAL or EDITOR " + "environment variables if not provided." + ), + ) + + self.cmd_opts.add_option( + "--global", + dest="global_file", + action="store_true", + default=False, + help="Use the system-wide configuration file only", + ) + + self.cmd_opts.add_option( + "--user", + dest="user_file", + action="store_true", + default=False, + help="Use the user configuration file only", + ) + + self.cmd_opts.add_option( + "--site", + dest="site_file", + action="store_true", + default=False, + help="Use the current environment configuration file only", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "list": self.list_values, + "edit": self.open_in_editor, + "get": self.get_name, + "set": self.set_name_value, + "unset": self.unset_name, + "debug": self.list_config_values, + } + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Determine which configuration files are to be loaded + # Depends on whether the command is modifying. + try: + load_only = self._determine_file( + options, need_value=(action in ["get", "set", "unset", "edit"]) + ) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + # Load a new configuration + self.configuration = Configuration( + isolated=options.isolated_mode, load_only=load_only + ) + self.configuration.load() + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def _determine_file(self, options: Values, need_value: bool) -> Optional[Kind]: + file_options = [ + key + for key, value in ( + (kinds.USER, options.user_file), + (kinds.GLOBAL, options.global_file), + (kinds.SITE, options.site_file), + ) + if value + ] + + if not file_options: + if not need_value: + return None + # Default to user, unless there's a site file. + elif any( + os.path.exists(site_config_file) + for site_config_file in get_configuration_files()[kinds.SITE] + ): + return kinds.SITE + else: + return kinds.USER + elif len(file_options) == 1: + return file_options[0] + + raise PipError( + "Need exactly one file to operate upon " + "(--user, --site, --global) to perform." + ) + + def list_values(self, options: Values, args: List[str]) -> None: + self._get_n_args(args, "list", n=0) + + for key, value in sorted(self.configuration.items()): + write_output("%s=%r", key, value) + + def get_name(self, options: Values, args: List[str]) -> None: + key = self._get_n_args(args, "get [name]", n=1) + value = self.configuration.get_value(key) + + write_output("%s", value) + + def set_name_value(self, options: Values, args: List[str]) -> None: + key, value = self._get_n_args(args, "set [name] [value]", n=2) + self.configuration.set_value(key, value) + + self._save_configuration() + + def unset_name(self, options: Values, args: List[str]) -> None: + key = self._get_n_args(args, "unset [name]", n=1) + self.configuration.unset_value(key) + + self._save_configuration() + + def list_config_values(self, options: Values, args: List[str]) -> None: + """List config key-value pairs across different config files""" + self._get_n_args(args, "debug", n=0) + + self.print_env_var_values() + # Iterate over config files and print if they exist, and the + # key-value pairs present in them if they do + for variant, files in sorted(self.configuration.iter_config_files()): + write_output("%s:", variant) + for fname in files: + with indent_log(): + file_exists = os.path.exists(fname) + write_output("%s, exists: %r", fname, file_exists) + if file_exists: + self.print_config_file_values(variant) + + def print_config_file_values(self, variant: Kind) -> None: + """Get key-value pairs from the file of a variant""" + for name, value in self.configuration.get_values_in_config(variant).items(): + with indent_log(): + write_output("%s: %s", name, value) + + def print_env_var_values(self) -> None: + """Get key-values pairs present as environment variables""" + write_output("%s:", "env_var") + with indent_log(): + for key, value in sorted(self.configuration.get_environ_vars()): + env_var = f"PIP_{key.upper()}" + write_output("%s=%r", env_var, value) + + def open_in_editor(self, options: Values, args: List[str]) -> None: + editor = self._determine_editor(options) + + fname = self.configuration.get_file_to_edit() + if fname is None: + raise PipError("Could not determine appropriate file.") + + try: + subprocess.check_call([editor, fname]) + except subprocess.CalledProcessError as e: + raise PipError( + "Editor Subprocess exited with exit code {}".format(e.returncode) + ) + + def _get_n_args(self, args: List[str], example: str, n: int) -> Any: + """Helper to make sure the command got the right number of arguments""" + if len(args) != n: + msg = ( + "Got unexpected number of arguments, expected {}. " + '(example: "{} config {}")' + ).format(n, get_prog(), example) + raise PipError(msg) + + if n == 1: + return args[0] + else: + return args + + def _save_configuration(self) -> None: + # We successfully ran a modifying command. Need to save the + # configuration. + try: + self.configuration.save() + except Exception: + logger.exception( + "Unable to save configuration. Please report this as a bug." + ) + raise PipError("Internal Error.") + + def _determine_editor(self, options: Values) -> str: + if options.editor is not None: + return options.editor + elif "VISUAL" in os.environ: + return os.environ["VISUAL"] + elif "EDITOR" in os.environ: + return os.environ["EDITOR"] + else: + raise PipError("Could not determine editor to use.") diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/debug.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/debug.py new file mode 100644 index 0000000..d3f1f28 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/debug.py @@ -0,0 +1,202 @@ +import locale +import logging +import os +import sys +from optparse import Values +from types import ModuleType +from typing import Any, Dict, List, Optional + +import pip._vendor +from pip._vendor.certifi import where +from pip._vendor.packaging.version import parse as parse_version + +from pip import __file__ as pip_location +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.configuration import Configuration +from pip._internal.metadata import get_environment +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import get_pip_version + +logger = logging.getLogger(__name__) + + +def show_value(name: str, value: Any) -> None: + logger.info("%s: %s", name, value) + + +def show_sys_implementation() -> None: + logger.info("sys.implementation:") + implementation_name = sys.implementation.name + with indent_log(): + show_value("name", implementation_name) + + +def create_vendor_txt_map() -> Dict[str, str]: + vendor_txt_path = os.path.join( + os.path.dirname(pip_location), "_vendor", "vendor.txt" + ) + + with open(vendor_txt_path) as f: + # Purge non version specifying lines. + # Also, remove any space prefix or suffixes (including comments). + lines = [ + line.strip().split(" ", 1)[0] for line in f.readlines() if "==" in line + ] + + # Transform into "module" -> version dict. + return dict(line.split("==", 1) for line in lines) # type: ignore + + +def get_module_from_module_name(module_name: str) -> ModuleType: + # Module name can be uppercase in vendor.txt for some reason... + module_name = module_name.lower() + # PATCH: setuptools is actually only pkg_resources. + if module_name == "setuptools": + module_name = "pkg_resources" + + __import__(f"pip._vendor.{module_name}", globals(), locals(), level=0) + return getattr(pip._vendor, module_name) + + +def get_vendor_version_from_module(module_name: str) -> Optional[str]: + module = get_module_from_module_name(module_name) + version = getattr(module, "__version__", None) + + if not version: + # Try to find version in debundled module info. + env = get_environment([os.path.dirname(module.__file__)]) + dist = env.get_distribution(module_name) + if dist: + version = str(dist.version) + + return version + + +def show_actual_vendor_versions(vendor_txt_versions: Dict[str, str]) -> None: + """Log the actual version and print extra info if there is + a conflict or if the actual version could not be imported. + """ + for module_name, expected_version in vendor_txt_versions.items(): + extra_message = "" + actual_version = get_vendor_version_from_module(module_name) + if not actual_version: + extra_message = ( + " (Unable to locate actual module version, using" + " vendor.txt specified version)" + ) + actual_version = expected_version + elif parse_version(actual_version) != parse_version(expected_version): + extra_message = ( + " (CONFLICT: vendor.txt suggests version should" + " be {})".format(expected_version) + ) + logger.info("%s==%s%s", module_name, actual_version, extra_message) + + +def show_vendor_versions() -> None: + logger.info("vendored library versions:") + + vendor_txt_versions = create_vendor_txt_map() + with indent_log(): + show_actual_vendor_versions(vendor_txt_versions) + + +def show_tags(options: Values) -> None: + tag_limit = 10 + + target_python = make_target_python(options) + tags = target_python.get_tags() + + # Display the target options that were explicitly provided. + formatted_target = target_python.format_given() + suffix = "" + if formatted_target: + suffix = f" (target: {formatted_target})" + + msg = "Compatible tags: {}{}".format(len(tags), suffix) + logger.info(msg) + + if options.verbose < 1 and len(tags) > tag_limit: + tags_limited = True + tags = tags[:tag_limit] + else: + tags_limited = False + + with indent_log(): + for tag in tags: + logger.info(str(tag)) + + if tags_limited: + msg = ( + "...\n[First {tag_limit} tags shown. Pass --verbose to show all.]" + ).format(tag_limit=tag_limit) + logger.info(msg) + + +def ca_bundle_info(config: Configuration) -> str: + levels = set() + for key, _ in config.items(): + levels.add(key.split(".")[0]) + + if not levels: + return "Not specified" + + levels_that_override_global = ["install", "wheel", "download"] + global_overriding_level = [ + level for level in levels if level in levels_that_override_global + ] + if not global_overriding_level: + return "global" + + if "global" in levels: + levels.remove("global") + return ", ".join(levels) + + +class DebugCommand(Command): + """ + Display debug information. + """ + + usage = """ + %prog """ + ignore_require_venv = True + + def add_options(self) -> None: + cmdoptions.add_target_python_options(self.cmd_opts) + self.parser.insert_option_group(0, self.cmd_opts) + self.parser.config.load() + + def run(self, options: Values, args: List[str]) -> int: + logger.warning( + "This command is only meant for debugging. " + "Do not use this with automation for parsing and getting these " + "details, since the output and options of this command may " + "change without notice." + ) + show_value("pip version", get_pip_version()) + show_value("sys.version", sys.version) + show_value("sys.executable", sys.executable) + show_value("sys.getdefaultencoding", sys.getdefaultencoding()) + show_value("sys.getfilesystemencoding", sys.getfilesystemencoding()) + show_value( + "locale.getpreferredencoding", + locale.getpreferredencoding(), + ) + show_value("sys.platform", sys.platform) + show_sys_implementation() + + show_value("'cert' config value", ca_bundle_info(self.parser.config)) + show_value("REQUESTS_CA_BUNDLE", os.environ.get("REQUESTS_CA_BUNDLE")) + show_value("CURL_CA_BUNDLE", os.environ.get("CURL_CA_BUNDLE")) + show_value("pip._vendor.certifi.where()", where()) + show_value("pip._vendor.DEBUNDLED", pip._vendor.DEBUNDLED) + + show_vendor_versions() + + show_tags(options) + + return SUCCESS diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/download.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/download.py new file mode 100644 index 0000000..7de207f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/download.py @@ -0,0 +1,139 @@ +import logging +import os +from optparse import Values +from typing import List + +from pip._internal.cli import cmdoptions +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.req_command import RequirementCommand, with_cleanup +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.misc import ensure_dir, normalize_path, write_output +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +class DownloadCommand(RequirementCommand): + """ + Download packages from: + + - PyPI (and other indexes) using requirement specifiers. + - VCS project urls. + - Local project directories. + - Local or remote source archives. + + pip also supports downloading from "requirements files", which provide + an easy way to specify a whole environment to be downloaded. + """ + + usage = """ + %prog [options] [package-index-options] ... + %prog [options] -r [package-index-options] ... + %prog [options] ... + %prog [options] ... + %prog [options] ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.global_options()) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.src()) + self.cmd_opts.add_option(cmdoptions.pre()) + self.cmd_opts.add_option(cmdoptions.require_hashes()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + + self.cmd_opts.add_option( + "-d", + "--dest", + "--destination-dir", + "--destination-directory", + dest="download_dir", + metavar="dir", + default=os.curdir, + help="Download packages into .", + ) + + cmdoptions.add_target_python_options(self.cmd_opts) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + + options.ignore_installed = True + # editable doesn't really make sense for `pip download`, but the bowels + # of the RequirementSet code require that property. + options.editables = [] + + cmdoptions.check_dist_restriction(options) + + options.download_dir = normalize_path(options.download_dir) + ensure_dir(options.download_dir) + + session = self.get_default_session(options) + + target_python = make_target_python(options) + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + + req_tracker = self.enter_context(get_requirement_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="download", + globally_managed=True, + ) + + reqs = self.get_requirements(args, options, finder, session) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + download_dir=options.download_dir, + use_user_site=False, + ) + + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + ignore_requires_python=options.ignore_requires_python, + py_version_info=options.python_version, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve(reqs, check_supported_wheels=True) + + downloaded: List[str] = [] + for req in requirement_set.requirements.values(): + if req.satisfied_by is None: + assert req.name is not None + preparer.save_linked_requirement(req) + downloaded.append(req.name) + if downloaded: + write_output("Successfully downloaded %s", " ".join(downloaded)) + + return SUCCESS diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/freeze.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/freeze.py new file mode 100644 index 0000000..5fa6d39 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/freeze.py @@ -0,0 +1,97 @@ +import sys +from optparse import Values +from typing import List + +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.operations.freeze import freeze +from pip._internal.utils.compat import stdlib_pkgs + +DEV_PKGS = {"pip", "setuptools", "distribute", "wheel"} + + +class FreezeCommand(Command): + """ + Output installed packages in requirements format. + + packages are listed in a case-insensitive sorted order. + """ + + usage = """ + %prog [options]""" + log_streams = ("ext://sys.stderr", "ext://sys.stderr") + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help=( + "Use the order in the given requirements file and its " + "comments when generating output. This option can be " + "used multiple times." + ), + ) + self.cmd_opts.add_option( + "-l", + "--local", + dest="local", + action="store_true", + default=False, + help=( + "If in a virtualenv that has global access, do not output " + "globally-installed packages." + ), + ) + self.cmd_opts.add_option( + "--user", + dest="user", + action="store_true", + default=False, + help="Only output packages installed in user-site.", + ) + self.cmd_opts.add_option(cmdoptions.list_path()) + self.cmd_opts.add_option( + "--all", + dest="freeze_all", + action="store_true", + help=( + "Do not skip these packages in the output:" + " {}".format(", ".join(DEV_PKGS)) + ), + ) + self.cmd_opts.add_option( + "--exclude-editable", + dest="exclude_editable", + action="store_true", + help="Exclude editable package from output.", + ) + self.cmd_opts.add_option(cmdoptions.list_exclude()) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + skip = set(stdlib_pkgs) + if not options.freeze_all: + skip.update(DEV_PKGS) + + if options.excludes: + skip.update(options.excludes) + + cmdoptions.check_list_path_option(options) + + for line in freeze( + requirement=options.requirements, + local_only=options.local, + user_only=options.user, + paths=options.path, + isolated=options.isolated_mode, + skip=skip, + exclude_editable=options.exclude_editable, + ): + sys.stdout.write(line + "\n") + return SUCCESS diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/hash.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/hash.py new file mode 100644 index 0000000..042dac8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/hash.py @@ -0,0 +1,59 @@ +import hashlib +import logging +import sys +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.utils.hashes import FAVORITE_HASH, STRONG_HASHES +from pip._internal.utils.misc import read_chunks, write_output + +logger = logging.getLogger(__name__) + + +class HashCommand(Command): + """ + Compute a hash of a local package archive. + + These can be used with --hash in a requirements file to do repeatable + installs. + """ + + usage = "%prog [options] ..." + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-a", + "--algorithm", + dest="algorithm", + choices=STRONG_HASHES, + action="store", + default=FAVORITE_HASH, + help="The hash algorithm to use: one of {}".format( + ", ".join(STRONG_HASHES) + ), + ) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + self.parser.print_usage(sys.stderr) + return ERROR + + algorithm = options.algorithm + for path in args: + write_output( + "%s:\n--hash=%s:%s", path, algorithm, _hash_of_file(path, algorithm) + ) + return SUCCESS + + +def _hash_of_file(path: str, algorithm: str) -> str: + """Return the hash digest of a file.""" + with open(path, "rb") as archive: + hash = hashlib.new(algorithm) + for chunk in read_chunks(archive): + hash.update(chunk) + return hash.hexdigest() diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/help.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/help.py new file mode 100644 index 0000000..6206631 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/help.py @@ -0,0 +1,41 @@ +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError + + +class HelpCommand(Command): + """Show help for commands""" + + usage = """ + %prog """ + ignore_require_venv = True + + def run(self, options: Values, args: List[str]) -> int: + from pip._internal.commands import ( + commands_dict, + create_command, + get_similar_commands, + ) + + try: + # 'pip help' with no args is handled by pip.__init__.parseopt() + cmd_name = args[0] # the command we need help for + except IndexError: + return SUCCESS + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = [f'unknown command "{cmd_name}"'] + if guess: + msg.append(f'maybe you meant "{guess}"') + + raise CommandError(" - ".join(msg)) + + command = create_command(cmd_name) + command.parser.print_help() + + return SUCCESS diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/index.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/index.py new file mode 100644 index 0000000..b4bf0ac --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/index.py @@ -0,0 +1,138 @@ +import logging +from optparse import Values +from typing import Any, Iterable, List, Optional, Union + +from pip._vendor.packaging.version import LegacyVersion, Version + +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import IndexGroupCommand +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.commands.search import print_dist_installation_info +from pip._internal.exceptions import CommandError, DistributionNotFound, PipError +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.network.session import PipSession +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class IndexCommand(IndexGroupCommand): + """ + Inspect information available from package indexes. + """ + + usage = """ + %prog versions + """ + + def add_options(self) -> None: + cmdoptions.add_target_python_options(self.cmd_opts) + + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.pre()) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "versions": self.get_available_package_versions, + } + + logger.warning( + "pip index is currently an experimental command. " + "It may be removed/changed in a future release " + "without prior warning." + ) + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def _build_package_finder( + self, + options: Values, + session: PipSession, + target_python: Optional[TargetPython] = None, + ignore_requires_python: Optional[bool] = None, + ) -> PackageFinder: + """ + Create a package finder appropriate to the index command. + """ + link_collector = LinkCollector.create(session, options=options) + + # Pass allow_yanked=False to ignore yanked versions. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=options.pre, + ignore_requires_python=ignore_requires_python, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + target_python=target_python, + ) + + def get_available_package_versions(self, options: Values, args: List[Any]) -> None: + if len(args) != 1: + raise CommandError("You need to specify exactly one argument") + + target_python = cmdoptions.make_target_python(options) + query = args[0] + + with self._build_session(options) as session: + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + + versions: Iterable[Union[LegacyVersion, Version]] = ( + candidate.version for candidate in finder.find_all_candidates(query) + ) + + if not options.pre: + # Remove prereleases + versions = ( + version for version in versions if not version.is_prerelease + ) + versions = set(versions) + + if not versions: + raise DistributionNotFound( + "No matching distribution found for {}".format(query) + ) + + formatted_versions = [str(ver) for ver in sorted(versions, reverse=True)] + latest = formatted_versions[0] + + write_output("{} ({})".format(query, latest)) + write_output("Available versions: {}".format(", ".join(formatted_versions))) + print_dist_installation_info(query, latest) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/install.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/install.py new file mode 100644 index 0000000..eedb1ff --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/install.py @@ -0,0 +1,770 @@ +import errno +import operator +import os +import shutil +import site +from optparse import SUPPRESS_HELP, Values +from typing import Iterable, List, Optional + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.req_command import ( + RequirementCommand, + warn_if_run_as_root, + with_cleanup, +) +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.exceptions import CommandError, InstallationError +from pip._internal.locations import get_scheme +from pip._internal.metadata import get_environment +from pip._internal.models.format_control import FormatControl +from pip._internal.operations.check import ConflictDetails, check_install_conflicts +from pip._internal.req import install_given_reqs +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.distutils_args import parse_distutils_args +from pip._internal.utils.filesystem import test_writable_dir +from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import ( + ensure_dir, + get_pip_version, + protect_pip_from_modification_on_windows, + write_output, +) +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.virtualenv import ( + running_under_virtualenv, + virtualenv_no_global, +) +from pip._internal.wheel_builder import ( + BinaryAllowedPredicate, + build, + should_build_for_install_command, +) + +logger = getLogger(__name__) + + +def get_check_binary_allowed(format_control: FormatControl) -> BinaryAllowedPredicate: + def check_binary_allowed(req: InstallRequirement) -> bool: + canonical_name = canonicalize_name(req.name or "") + allowed_formats = format_control.get_allowed_formats(canonical_name) + return "binary" in allowed_formats + + return check_binary_allowed + + +class InstallCommand(RequirementCommand): + """ + Install packages from: + + - PyPI (and other indexes) using requirement specifiers. + - VCS project urls. + - Local project directories. + - Local or remote source archives. + + pip also supports installing from "requirements files", which provide + an easy way to specify a whole environment to be installed. + """ + + usage = """ + %prog [options] [package-index-options] ... + %prog [options] -r [package-index-options] ... + %prog [options] [-e] ... + %prog [options] [-e] ... + %prog [options] ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.pre()) + + self.cmd_opts.add_option(cmdoptions.editable()) + self.cmd_opts.add_option( + "-t", + "--target", + dest="target_dir", + metavar="dir", + default=None, + help=( + "Install packages into . " + "By default this will not replace existing files/folders in " + ". Use --upgrade to replace existing packages in " + "with new versions." + ), + ) + cmdoptions.add_target_python_options(self.cmd_opts) + + self.cmd_opts.add_option( + "--user", + dest="use_user_site", + action="store_true", + help=( + "Install to the Python user install directory for your " + "platform. Typically ~/.local/, or %APPDATA%\\Python on " + "Windows. (See the Python documentation for site.USER_BASE " + "for full details.)" + ), + ) + self.cmd_opts.add_option( + "--no-user", + dest="use_user_site", + action="store_false", + help=SUPPRESS_HELP, + ) + self.cmd_opts.add_option( + "--root", + dest="root_path", + metavar="dir", + default=None, + help="Install everything relative to this alternate root directory.", + ) + self.cmd_opts.add_option( + "--prefix", + dest="prefix_path", + metavar="dir", + default=None, + help=( + "Installation prefix where lib, bin and other top-level " + "folders are placed" + ), + ) + + self.cmd_opts.add_option(cmdoptions.src()) + + self.cmd_opts.add_option( + "-U", + "--upgrade", + dest="upgrade", + action="store_true", + help=( + "Upgrade all specified packages to the newest available " + "version. The handling of dependencies depends on the " + "upgrade-strategy used." + ), + ) + + self.cmd_opts.add_option( + "--upgrade-strategy", + dest="upgrade_strategy", + default="only-if-needed", + choices=["only-if-needed", "eager"], + help=( + "Determines how dependency upgrading should be handled " + "[default: %default]. " + '"eager" - dependencies are upgraded regardless of ' + "whether the currently installed version satisfies the " + "requirements of the upgraded package(s). " + '"only-if-needed" - are upgraded only when they do not ' + "satisfy the requirements of the upgraded package(s)." + ), + ) + + self.cmd_opts.add_option( + "--force-reinstall", + dest="force_reinstall", + action="store_true", + help="Reinstall all packages even if they are already up-to-date.", + ) + + self.cmd_opts.add_option( + "-I", + "--ignore-installed", + dest="ignore_installed", + action="store_true", + help=( + "Ignore the installed packages, overwriting them. " + "This can break your system if the existing package " + "is of a different version or was installed " + "with a different package manager!" + ), + ) + + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + + self.cmd_opts.add_option(cmdoptions.install_options()) + self.cmd_opts.add_option(cmdoptions.global_options()) + + self.cmd_opts.add_option( + "--compile", + action="store_true", + dest="compile", + default=True, + help="Compile Python source files to bytecode", + ) + + self.cmd_opts.add_option( + "--no-compile", + action="store_false", + dest="compile", + help="Do not compile Python source files to bytecode", + ) + + self.cmd_opts.add_option( + "--no-warn-script-location", + action="store_false", + dest="warn_script_location", + default=True, + help="Do not warn when installing scripts outside PATH", + ) + self.cmd_opts.add_option( + "--no-warn-conflicts", + action="store_false", + dest="warn_about_conflicts", + default=True, + help="Do not warn about broken dependencies", + ) + + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.require_hashes()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + if options.use_user_site and options.target_dir is not None: + raise CommandError("Can not combine '--user' and '--target'") + + cmdoptions.check_install_build_global(options) + upgrade_strategy = "to-satisfy-only" + if options.upgrade: + upgrade_strategy = options.upgrade_strategy + + cmdoptions.check_dist_restriction(options, check_target=True) + + install_options = options.install_options or [] + + logger.verbose("Using %s", get_pip_version()) + options.use_user_site = decide_user_install( + options.use_user_site, + prefix_path=options.prefix_path, + target_dir=options.target_dir, + root_path=options.root_path, + isolated_mode=options.isolated_mode, + ) + + target_temp_dir: Optional[TempDirectory] = None + target_temp_dir_path: Optional[str] = None + if options.target_dir: + options.ignore_installed = True + options.target_dir = os.path.abspath(options.target_dir) + if ( + # fmt: off + os.path.exists(options.target_dir) and + not os.path.isdir(options.target_dir) + # fmt: on + ): + raise CommandError( + "Target path exists but is not a directory, will not continue." + ) + + # Create a target directory for using with the target option + target_temp_dir = TempDirectory(kind="target") + target_temp_dir_path = target_temp_dir.path + self.enter_context(target_temp_dir) + + global_options = options.global_options or [] + + session = self.get_default_session(options) + + target_python = make_target_python(options) + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + wheel_cache = WheelCache(options.cache_dir, options.format_control) + + req_tracker = self.enter_context(get_requirement_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="install", + globally_managed=True, + ) + + try: + reqs = self.get_requirements(args, options, finder, session) + + # Only when installing is it permitted to use PEP 660. + # In other circumstances (pip wheel, pip download) we generate + # regular (i.e. non editable) metadata and wheels. + for req in reqs: + req.permit_editable_wheels = True + + reject_location_related_install_options(reqs, options.install_options) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + use_user_site=options.use_user_site, + ) + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + wheel_cache=wheel_cache, + use_user_site=options.use_user_site, + ignore_installed=options.ignore_installed, + ignore_requires_python=options.ignore_requires_python, + force_reinstall=options.force_reinstall, + upgrade_strategy=upgrade_strategy, + use_pep517=options.use_pep517, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve( + reqs, check_supported_wheels=not options.target_dir + ) + + try: + pip_req = requirement_set.get_requirement("pip") + except KeyError: + modifying_pip = False + else: + # If we're not replacing an already installed pip, + # we're not modifying it. + modifying_pip = pip_req.satisfied_by is None + protect_pip_from_modification_on_windows(modifying_pip=modifying_pip) + + check_binary_allowed = get_check_binary_allowed(finder.format_control) + + reqs_to_build = [ + r + for r in requirement_set.requirements.values() + if should_build_for_install_command(r, check_binary_allowed) + ] + + _, build_failures = build( + reqs_to_build, + wheel_cache=wheel_cache, + verify=True, + build_options=[], + global_options=[], + ) + + # If we're using PEP 517, we cannot do a legacy setup.py install + # so we fail here. + pep517_build_failure_names: List[str] = [ + r.name for r in build_failures if r.use_pep517 # type: ignore + ] + if pep517_build_failure_names: + raise InstallationError( + "Could not build wheels for {}, which is required to " + "install pyproject.toml-based projects".format( + ", ".join(pep517_build_failure_names) + ) + ) + + # For now, we just warn about failures building legacy + # requirements, as we'll fall through to a setup.py install for + # those. + for r in build_failures: + if not r.use_pep517: + r.legacy_install_reason = 8368 + + to_install = resolver.get_installation_order(requirement_set) + + # Check for conflicts in the package set we're installing. + conflicts: Optional[ConflictDetails] = None + should_warn_about_conflicts = ( + not options.ignore_dependencies and options.warn_about_conflicts + ) + if should_warn_about_conflicts: + conflicts = self._determine_conflicts(to_install) + + # Don't warn about script install locations if + # --target or --prefix has been specified + warn_script_location = options.warn_script_location + if options.target_dir or options.prefix_path: + warn_script_location = False + + installed = install_given_reqs( + to_install, + install_options, + global_options, + root=options.root_path, + home=target_temp_dir_path, + prefix=options.prefix_path, + warn_script_location=warn_script_location, + use_user_site=options.use_user_site, + pycompile=options.compile, + ) + + lib_locations = get_lib_location_guesses( + user=options.use_user_site, + home=target_temp_dir_path, + root=options.root_path, + prefix=options.prefix_path, + isolated=options.isolated_mode, + ) + env = get_environment(lib_locations) + + installed.sort(key=operator.attrgetter("name")) + items = [] + for result in installed: + item = result.name + try: + installed_dist = env.get_distribution(item) + if installed_dist is not None: + item = f"{item}-{installed_dist.version}" + except Exception: + pass + items.append(item) + + if conflicts is not None: + self._warn_about_conflicts( + conflicts, + resolver_variant=self.determine_resolver_variant(options), + ) + + installed_desc = " ".join(items) + if installed_desc: + write_output( + "Successfully installed %s", + installed_desc, + ) + except OSError as error: + show_traceback = self.verbosity >= 1 + + message = create_os_error_message( + error, + show_traceback, + options.use_user_site, + ) + logger.error(message, exc_info=show_traceback) # noqa + + return ERROR + + if options.target_dir: + assert target_temp_dir + self._handle_target_dir( + options.target_dir, target_temp_dir, options.upgrade + ) + + warn_if_run_as_root() + return SUCCESS + + def _handle_target_dir( + self, target_dir: str, target_temp_dir: TempDirectory, upgrade: bool + ) -> None: + ensure_dir(target_dir) + + # Checking both purelib and platlib directories for installed + # packages to be moved to target directory + lib_dir_list = [] + + # Checking both purelib and platlib directories for installed + # packages to be moved to target directory + scheme = get_scheme("", home=target_temp_dir.path) + purelib_dir = scheme.purelib + platlib_dir = scheme.platlib + data_dir = scheme.data + + if os.path.exists(purelib_dir): + lib_dir_list.append(purelib_dir) + if os.path.exists(platlib_dir) and platlib_dir != purelib_dir: + lib_dir_list.append(platlib_dir) + if os.path.exists(data_dir): + lib_dir_list.append(data_dir) + + for lib_dir in lib_dir_list: + for item in os.listdir(lib_dir): + if lib_dir == data_dir: + ddir = os.path.join(data_dir, item) + if any(s.startswith(ddir) for s in lib_dir_list[:-1]): + continue + target_item_dir = os.path.join(target_dir, item) + if os.path.exists(target_item_dir): + if not upgrade: + logger.warning( + "Target directory %s already exists. Specify " + "--upgrade to force replacement.", + target_item_dir, + ) + continue + if os.path.islink(target_item_dir): + logger.warning( + "Target directory %s already exists and is " + "a link. pip will not automatically replace " + "links, please remove if replacement is " + "desired.", + target_item_dir, + ) + continue + if os.path.isdir(target_item_dir): + shutil.rmtree(target_item_dir) + else: + os.remove(target_item_dir) + + shutil.move(os.path.join(lib_dir, item), target_item_dir) + + def _determine_conflicts( + self, to_install: List[InstallRequirement] + ) -> Optional[ConflictDetails]: + try: + return check_install_conflicts(to_install) + except Exception: + logger.exception( + "Error while checking for conflicts. Please file an issue on " + "pip's issue tracker: https://github.com/pypa/pip/issues/new" + ) + return None + + def _warn_about_conflicts( + self, conflict_details: ConflictDetails, resolver_variant: str + ) -> None: + package_set, (missing, conflicting) = conflict_details + if not missing and not conflicting: + return + + parts: List[str] = [] + if resolver_variant == "legacy": + parts.append( + "pip's legacy dependency resolver does not consider dependency " + "conflicts when selecting packages. This behaviour is the " + "source of the following dependency conflicts." + ) + else: + assert resolver_variant == "2020-resolver" + parts.append( + "pip's dependency resolver does not currently take into account " + "all the packages that are installed. This behaviour is the " + "source of the following dependency conflicts." + ) + + # NOTE: There is some duplication here, with commands/check.py + for project_name in missing: + version = package_set[project_name][0] + for dependency in missing[project_name]: + message = ( + "{name} {version} requires {requirement}, " + "which is not installed." + ).format( + name=project_name, + version=version, + requirement=dependency[1], + ) + parts.append(message) + + for project_name in conflicting: + version = package_set[project_name][0] + for dep_name, dep_version, req in conflicting[project_name]: + message = ( + "{name} {version} requires {requirement}, but {you} have " + "{dep_name} {dep_version} which is incompatible." + ).format( + name=project_name, + version=version, + requirement=req, + dep_name=dep_name, + dep_version=dep_version, + you=("you" if resolver_variant == "2020-resolver" else "you'll"), + ) + parts.append(message) + + logger.critical("\n".join(parts)) + + +def get_lib_location_guesses( + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> List[str]: + scheme = get_scheme( + "", + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + return [scheme.purelib, scheme.platlib] + + +def site_packages_writable(root: Optional[str], isolated: bool) -> bool: + return all( + test_writable_dir(d) + for d in set(get_lib_location_guesses(root=root, isolated=isolated)) + ) + + +def decide_user_install( + use_user_site: Optional[bool], + prefix_path: Optional[str] = None, + target_dir: Optional[str] = None, + root_path: Optional[str] = None, + isolated_mode: bool = False, +) -> bool: + """Determine whether to do a user install based on the input options. + + If use_user_site is False, no additional checks are done. + If use_user_site is True, it is checked for compatibility with other + options. + If use_user_site is None, the default behaviour depends on the environment, + which is provided by the other arguments. + """ + # In some cases (config from tox), use_user_site can be set to an integer + # rather than a bool, which 'use_user_site is False' wouldn't catch. + if (use_user_site is not None) and (not use_user_site): + logger.debug("Non-user install by explicit request") + return False + + if use_user_site: + if prefix_path: + raise CommandError( + "Can not combine '--user' and '--prefix' as they imply " + "different installation locations" + ) + if virtualenv_no_global(): + raise InstallationError( + "Can not perform a '--user' install. User site-packages " + "are not visible in this virtualenv." + ) + logger.debug("User install by explicit request") + return True + + # If we are here, user installs have not been explicitly requested/avoided + assert use_user_site is None + + # user install incompatible with --prefix/--target + if prefix_path or target_dir: + logger.debug("Non-user install due to --prefix or --target option") + return False + + # If user installs are not enabled, choose a non-user install + if not site.ENABLE_USER_SITE: + logger.debug("Non-user install because user site-packages disabled") + return False + + # If we have permission for a non-user install, do that, + # otherwise do a user install. + if site_packages_writable(root=root_path, isolated=isolated_mode): + logger.debug("Non-user install because site-packages writeable") + return False + + logger.info( + "Defaulting to user installation because normal site-packages " + "is not writeable" + ) + return True + + +def reject_location_related_install_options( + requirements: List[InstallRequirement], options: Optional[List[str]] +) -> None: + """If any location-changing --install-option arguments were passed for + requirements or on the command-line, then show a deprecation warning. + """ + + def format_options(option_names: Iterable[str]) -> List[str]: + return ["--{}".format(name.replace("_", "-")) for name in option_names] + + offenders = [] + + for requirement in requirements: + install_options = requirement.install_options + location_options = parse_distutils_args(install_options) + if location_options: + offenders.append( + "{!r} from {}".format( + format_options(location_options.keys()), requirement + ) + ) + + if options: + location_options = parse_distutils_args(options) + if location_options: + offenders.append( + "{!r} from command line".format(format_options(location_options.keys())) + ) + + if not offenders: + return + + raise CommandError( + "Location-changing options found in --install-option: {}." + " This is unsupported, use pip-level options like --user," + " --prefix, --root, and --target instead.".format("; ".join(offenders)) + ) + + +def create_os_error_message( + error: OSError, show_traceback: bool, using_user_site: bool +) -> str: + """Format an error message for an OSError + + It may occur anytime during the execution of the install command. + """ + parts = [] + + # Mention the error if we are not going to show a traceback + parts.append("Could not install packages due to an OSError") + if not show_traceback: + parts.append(": ") + parts.append(str(error)) + else: + parts.append(".") + + # Spilt the error indication from a helper message (if any) + parts[-1] += "\n" + + # Suggest useful actions to the user: + # (1) using user site-packages or (2) verifying the permissions + if error.errno == errno.EACCES: + user_option_part = "Consider using the `--user` option" + permissions_part = "Check the permissions" + + if not running_under_virtualenv() and not using_user_site: + parts.extend( + [ + user_option_part, + " or ", + permissions_part.lower(), + ] + ) + else: + parts.append(permissions_part) + parts.append(".\n") + + # Suggest the user to enable Long Paths if path length is + # more than 260 + if ( + WINDOWS + and error.errno == errno.ENOENT + and error.filename + and len(error.filename) > 260 + ): + parts.append( + "HINT: This error might have occurred since " + "this system does not have Windows Long Path " + "support enabled. You can find information on " + "how to enable this at " + "https://pip.pypa.io/warnings/enable-long-paths\n" + ) + + return "".join(parts).strip() + "\n" diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/list.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/list.py new file mode 100644 index 0000000..75d8dd4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/list.py @@ -0,0 +1,361 @@ +import json +import logging +from optparse import Values +from typing import TYPE_CHECKING, Iterator, List, Optional, Sequence, Tuple, cast + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import IndexGroupCommand +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution, get_environment +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.network.session import PipSession +from pip._internal.utils.compat import stdlib_pkgs +from pip._internal.utils.misc import tabulate, write_output +from pip._internal.utils.parallel import map_multithread + +if TYPE_CHECKING: + from pip._internal.metadata.base import DistributionVersion + + class _DistWithLatestInfo(BaseDistribution): + """Give the distribution object a couple of extra fields. + + These will be populated during ``get_outdated()``. This is dirty but + makes the rest of the code much cleaner. + """ + + latest_version: DistributionVersion + latest_filetype: str + + _ProcessedDists = Sequence[_DistWithLatestInfo] + + +logger = logging.getLogger(__name__) + + +class ListCommand(IndexGroupCommand): + """ + List installed packages, including editables. + + Packages are listed in a case-insensitive sorted order. + """ + + ignore_require_venv = True + usage = """ + %prog [options]""" + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-o", + "--outdated", + action="store_true", + default=False, + help="List outdated packages", + ) + self.cmd_opts.add_option( + "-u", + "--uptodate", + action="store_true", + default=False, + help="List uptodate packages", + ) + self.cmd_opts.add_option( + "-e", + "--editable", + action="store_true", + default=False, + help="List editable projects.", + ) + self.cmd_opts.add_option( + "-l", + "--local", + action="store_true", + default=False, + help=( + "If in a virtualenv that has global access, do not list " + "globally-installed packages." + ), + ) + self.cmd_opts.add_option( + "--user", + dest="user", + action="store_true", + default=False, + help="Only output packages installed in user-site.", + ) + self.cmd_opts.add_option(cmdoptions.list_path()) + self.cmd_opts.add_option( + "--pre", + action="store_true", + default=False, + help=( + "Include pre-release and development versions. By default, " + "pip only finds stable versions." + ), + ) + + self.cmd_opts.add_option( + "--format", + action="store", + dest="list_format", + default="columns", + choices=("columns", "freeze", "json"), + help="Select the output format among: columns (default), freeze, or json", + ) + + self.cmd_opts.add_option( + "--not-required", + action="store_true", + dest="not_required", + help="List packages that are not dependencies of installed packages.", + ) + + self.cmd_opts.add_option( + "--exclude-editable", + action="store_false", + dest="include_editable", + help="Exclude editable package from output.", + ) + self.cmd_opts.add_option( + "--include-editable", + action="store_true", + dest="include_editable", + help="Include editable package from output.", + default=True, + ) + self.cmd_opts.add_option(cmdoptions.list_exclude()) + index_opts = cmdoptions.make_option_group(cmdoptions.index_group, self.parser) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + def _build_package_finder( + self, options: Values, session: PipSession + ) -> PackageFinder: + """ + Create a package finder appropriate to this list command. + """ + link_collector = LinkCollector.create(session, options=options) + + # Pass allow_yanked=False to ignore yanked versions. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=options.pre, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + ) + + def run(self, options: Values, args: List[str]) -> int: + if options.outdated and options.uptodate: + raise CommandError("Options --outdated and --uptodate cannot be combined.") + + cmdoptions.check_list_path_option(options) + + skip = set(stdlib_pkgs) + if options.excludes: + skip.update(canonicalize_name(n) for n in options.excludes) + + packages: "_ProcessedDists" = [ + cast("_DistWithLatestInfo", d) + for d in get_environment(options.path).iter_installed_distributions( + local_only=options.local, + user_only=options.user, + editables_only=options.editable, + include_editables=options.include_editable, + skip=skip, + ) + ] + + # get_not_required must be called firstly in order to find and + # filter out all dependencies correctly. Otherwise a package + # can't be identified as requirement because some parent packages + # could be filtered out before. + if options.not_required: + packages = self.get_not_required(packages, options) + + if options.outdated: + packages = self.get_outdated(packages, options) + elif options.uptodate: + packages = self.get_uptodate(packages, options) + + self.output_package_listing(packages, options) + return SUCCESS + + def get_outdated( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + return [ + dist + for dist in self.iter_packages_latest_infos(packages, options) + if dist.latest_version > dist.version + ] + + def get_uptodate( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + return [ + dist + for dist in self.iter_packages_latest_infos(packages, options) + if dist.latest_version == dist.version + ] + + def get_not_required( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + dep_keys = { + canonicalize_name(dep.name) + for dist in packages + for dep in (dist.iter_dependencies() or ()) + } + + # Create a set to remove duplicate packages, and cast it to a list + # to keep the return type consistent with get_outdated and + # get_uptodate + return list({pkg for pkg in packages if pkg.canonical_name not in dep_keys}) + + def iter_packages_latest_infos( + self, packages: "_ProcessedDists", options: Values + ) -> Iterator["_DistWithLatestInfo"]: + with self._build_session(options) as session: + finder = self._build_package_finder(options, session) + + def latest_info( + dist: "_DistWithLatestInfo", + ) -> Optional["_DistWithLatestInfo"]: + all_candidates = finder.find_all_candidates(dist.canonical_name) + if not options.pre: + # Remove prereleases + all_candidates = [ + candidate + for candidate in all_candidates + if not candidate.version.is_prerelease + ] + + evaluator = finder.make_candidate_evaluator( + project_name=dist.canonical_name, + ) + best_candidate = evaluator.sort_best_candidate(all_candidates) + if best_candidate is None: + return None + + remote_version = best_candidate.version + if best_candidate.link.is_wheel: + typ = "wheel" + else: + typ = "sdist" + dist.latest_version = remote_version + dist.latest_filetype = typ + return dist + + for dist in map_multithread(latest_info, packages): + if dist is not None: + yield dist + + def output_package_listing( + self, packages: "_ProcessedDists", options: Values + ) -> None: + packages = sorted( + packages, + key=lambda dist: dist.canonical_name, + ) + if options.list_format == "columns" and packages: + data, header = format_for_columns(packages, options) + self.output_package_listing_columns(data, header) + elif options.list_format == "freeze": + for dist in packages: + if options.verbose >= 1: + write_output( + "%s==%s (%s)", dist.raw_name, dist.version, dist.location + ) + else: + write_output("%s==%s", dist.raw_name, dist.version) + elif options.list_format == "json": + write_output(format_for_json(packages, options)) + + def output_package_listing_columns( + self, data: List[List[str]], header: List[str] + ) -> None: + # insert the header first: we need to know the size of column names + if len(data) > 0: + data.insert(0, header) + + pkg_strings, sizes = tabulate(data) + + # Create and add a separator. + if len(data) > 0: + pkg_strings.insert(1, " ".join(map(lambda x: "-" * x, sizes))) + + for val in pkg_strings: + write_output(val) + + +def format_for_columns( + pkgs: "_ProcessedDists", options: Values +) -> Tuple[List[List[str]], List[str]]: + """ + Convert the package data into something usable + by output_package_listing_columns. + """ + header = ["Package", "Version"] + + running_outdated = options.outdated + if running_outdated: + header.extend(["Latest", "Type"]) + + has_editables = any(x.editable for x in pkgs) + if has_editables: + header.append("Editable project location") + + if options.verbose >= 1: + header.append("Location") + if options.verbose >= 1: + header.append("Installer") + + data = [] + for proj in pkgs: + # if we're working on the 'outdated' list, separate out the + # latest_version and type + row = [proj.raw_name, str(proj.version)] + + if running_outdated: + row.append(str(proj.latest_version)) + row.append(proj.latest_filetype) + + if has_editables: + row.append(proj.editable_project_location or "") + + if options.verbose >= 1: + row.append(proj.location or "") + if options.verbose >= 1: + row.append(proj.installer) + + data.append(row) + + return data, header + + +def format_for_json(packages: "_ProcessedDists", options: Values) -> str: + data = [] + for dist in packages: + info = { + "name": dist.raw_name, + "version": str(dist.version), + } + if options.verbose >= 1: + info["location"] = dist.location or "" + info["installer"] = dist.installer + if options.outdated: + info["latest_version"] = str(dist.latest_version) + info["latest_filetype"] = dist.latest_filetype + editable_project_location = dist.editable_project_location + if editable_project_location: + info["editable_project_location"] = editable_project_location + data.append(info) + return json.dumps(data) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/search.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/search.py new file mode 100644 index 0000000..03ed925 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/search.py @@ -0,0 +1,174 @@ +import logging +import shutil +import sys +import textwrap +import xmlrpc.client +from collections import OrderedDict +from optparse import Values +from typing import TYPE_CHECKING, Dict, List, Optional + +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.cli.base_command import Command +from pip._internal.cli.req_command import SessionCommandMixin +from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.metadata import get_default_environment +from pip._internal.models.index import PyPI +from pip._internal.network.xmlrpc import PipXmlrpcTransport +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import write_output + +if TYPE_CHECKING: + from typing import TypedDict + + class TransformedHit(TypedDict): + name: str + summary: str + versions: List[str] + + +logger = logging.getLogger(__name__) + + +class SearchCommand(Command, SessionCommandMixin): + """Search for PyPI packages whose name or summary contains .""" + + usage = """ + %prog [options] """ + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-i", + "--index", + dest="index", + metavar="URL", + default=PyPI.pypi_url, + help="Base URL of Python Package Index (default %default)", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + raise CommandError("Missing required argument (search query).") + query = args + pypi_hits = self.search(query, options) + hits = transform_hits(pypi_hits) + + terminal_width = None + if sys.stdout.isatty(): + terminal_width = shutil.get_terminal_size()[0] + + print_results(hits, terminal_width=terminal_width) + if pypi_hits: + return SUCCESS + return NO_MATCHES_FOUND + + def search(self, query: List[str], options: Values) -> List[Dict[str, str]]: + index_url = options.index + + session = self.get_default_session(options) + + transport = PipXmlrpcTransport(index_url, session) + pypi = xmlrpc.client.ServerProxy(index_url, transport) + try: + hits = pypi.search({"name": query, "summary": query}, "or") + except xmlrpc.client.Fault as fault: + message = "XMLRPC request failed [code: {code}]\n{string}".format( + code=fault.faultCode, + string=fault.faultString, + ) + raise CommandError(message) + assert isinstance(hits, list) + return hits + + +def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]: + """ + The list from pypi is really a list of versions. We want a list of + packages with the list of versions stored inline. This converts the + list from pypi into one we can use. + """ + packages: Dict[str, "TransformedHit"] = OrderedDict() + for hit in hits: + name = hit["name"] + summary = hit["summary"] + version = hit["version"] + + if name not in packages.keys(): + packages[name] = { + "name": name, + "summary": summary, + "versions": [version], + } + else: + packages[name]["versions"].append(version) + + # if this is the highest version, replace summary and score + if version == highest_version(packages[name]["versions"]): + packages[name]["summary"] = summary + + return list(packages.values()) + + +def print_dist_installation_info(name: str, latest: str) -> None: + env = get_default_environment() + dist = env.get_distribution(name) + if dist is not None: + with indent_log(): + if dist.version == latest: + write_output("INSTALLED: %s (latest)", dist.version) + else: + write_output("INSTALLED: %s", dist.version) + if parse_version(latest).pre: + write_output( + "LATEST: %s (pre-release; install" + " with `pip install --pre`)", + latest, + ) + else: + write_output("LATEST: %s", latest) + + +def print_results( + hits: List["TransformedHit"], + name_column_width: Optional[int] = None, + terminal_width: Optional[int] = None, +) -> None: + if not hits: + return + if name_column_width is None: + name_column_width = ( + max( + [ + len(hit["name"]) + len(highest_version(hit.get("versions", ["-"]))) + for hit in hits + ] + ) + + 4 + ) + + for hit in hits: + name = hit["name"] + summary = hit["summary"] or "" + latest = highest_version(hit.get("versions", ["-"])) + if terminal_width is not None: + target_width = terminal_width - name_column_width - 5 + if target_width > 10: + # wrap and indent summary to fit terminal + summary_lines = textwrap.wrap(summary, target_width) + summary = ("\n" + " " * (name_column_width + 3)).join(summary_lines) + + name_latest = f"{name} ({latest})" + line = f"{name_latest:{name_column_width}} - {summary}" + try: + write_output(line) + print_dist_installation_info(name, latest) + except UnicodeEncodeError: + pass + + +def highest_version(versions: List[str]) -> str: + return max(versions, key=parse_version) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/show.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/show.py new file mode 100644 index 0000000..872292a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/show.py @@ -0,0 +1,235 @@ +import csv +import logging +import pathlib +from optparse import Values +from typing import Iterator, List, NamedTuple, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.metadata import BaseDistribution, get_default_environment +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class ShowCommand(Command): + """ + Show information about one or more installed packages. + + The output is in RFC-compliant mail header format. + """ + + usage = """ + %prog [options] ...""" + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-f", + "--files", + dest="files", + action="store_true", + default=False, + help="Show the full list of installed files for each package.", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + logger.warning("ERROR: Please provide a package name or names.") + return ERROR + query = args + + results = search_packages_info(query) + if not print_results( + results, list_files=options.files, verbose=options.verbose + ): + return ERROR + return SUCCESS + + +class _PackageInfo(NamedTuple): + name: str + version: str + location: str + requires: List[str] + required_by: List[str] + installer: str + metadata_version: str + classifiers: List[str] + summary: str + homepage: str + author: str + author_email: str + license: str + entry_points: List[str] + files: Optional[List[str]] + + +def _convert_legacy_entry(entry: Tuple[str, ...], info: Tuple[str, ...]) -> str: + """Convert a legacy installed-files.txt path into modern RECORD path. + + The legacy format stores paths relative to the info directory, while the + modern format stores paths relative to the package root, e.g. the + site-packages directory. + + :param entry: Path parts of the installed-files.txt entry. + :param info: Path parts of the egg-info directory relative to package root. + :returns: The converted entry. + + For best compatibility with symlinks, this does not use ``abspath()`` or + ``Path.resolve()``, but tries to work with path parts: + + 1. While ``entry`` starts with ``..``, remove the equal amounts of parts + from ``info``; if ``info`` is empty, start appending ``..`` instead. + 2. Join the two directly. + """ + while entry and entry[0] == "..": + if not info or info[-1] == "..": + info += ("..",) + else: + info = info[:-1] + entry = entry[1:] + return str(pathlib.Path(*info, *entry)) + + +def search_packages_info(query: List[str]) -> Iterator[_PackageInfo]: + """ + Gather details from installed distributions. Print distribution name, + version, location, and installed files. Installed files requires a + pip generated 'installed-files.txt' in the distributions '.egg-info' + directory. + """ + env = get_default_environment() + + installed = {dist.canonical_name: dist for dist in env.iter_distributions()} + query_names = [canonicalize_name(name) for name in query] + missing = sorted( + [name for name, pkg in zip(query, query_names) if pkg not in installed] + ) + if missing: + logger.warning("Package(s) not found: %s", ", ".join(missing)) + + def _get_requiring_packages(current_dist: BaseDistribution) -> Iterator[str]: + return ( + dist.metadata["Name"] or "UNKNOWN" + for dist in installed.values() + if current_dist.canonical_name + in {canonicalize_name(d.name) for d in dist.iter_dependencies()} + ) + + def _files_from_record(dist: BaseDistribution) -> Optional[Iterator[str]]: + try: + text = dist.read_text("RECORD") + except FileNotFoundError: + return None + # This extra Path-str cast normalizes entries. + return (str(pathlib.Path(row[0])) for row in csv.reader(text.splitlines())) + + def _files_from_legacy(dist: BaseDistribution) -> Optional[Iterator[str]]: + try: + text = dist.read_text("installed-files.txt") + except FileNotFoundError: + return None + paths = (p for p in text.splitlines(keepends=False) if p) + root = dist.location + info = dist.info_directory + if root is None or info is None: + return paths + try: + info_rel = pathlib.Path(info).relative_to(root) + except ValueError: # info is not relative to root. + return paths + if not info_rel.parts: # info *is* root. + return paths + return ( + _convert_legacy_entry(pathlib.Path(p).parts, info_rel.parts) for p in paths + ) + + for query_name in query_names: + try: + dist = installed[query_name] + except KeyError: + continue + + requires = sorted((req.name for req in dist.iter_dependencies()), key=str.lower) + required_by = sorted(_get_requiring_packages(dist), key=str.lower) + + try: + entry_points_text = dist.read_text("entry_points.txt") + entry_points = entry_points_text.splitlines(keepends=False) + except FileNotFoundError: + entry_points = [] + + files_iter = _files_from_record(dist) or _files_from_legacy(dist) + if files_iter is None: + files: Optional[List[str]] = None + else: + files = sorted(files_iter) + + metadata = dist.metadata + + yield _PackageInfo( + name=dist.raw_name, + version=str(dist.version), + location=dist.location or "", + requires=requires, + required_by=required_by, + installer=dist.installer, + metadata_version=dist.metadata_version or "", + classifiers=metadata.get_all("Classifier", []), + summary=metadata.get("Summary", ""), + homepage=metadata.get("Home-page", ""), + author=metadata.get("Author", ""), + author_email=metadata.get("Author-email", ""), + license=metadata.get("License", ""), + entry_points=entry_points, + files=files, + ) + + +def print_results( + distributions: Iterator[_PackageInfo], + list_files: bool, + verbose: bool, +) -> bool: + """ + Print the information from installed distributions found. + """ + results_printed = False + for i, dist in enumerate(distributions): + results_printed = True + if i > 0: + write_output("---") + + write_output("Name: %s", dist.name) + write_output("Version: %s", dist.version) + write_output("Summary: %s", dist.summary) + write_output("Home-page: %s", dist.homepage) + write_output("Author: %s", dist.author) + write_output("Author-email: %s", dist.author_email) + write_output("License: %s", dist.license) + write_output("Location: %s", dist.location) + write_output("Requires: %s", ", ".join(dist.requires)) + write_output("Required-by: %s", ", ".join(dist.required_by)) + + if verbose: + write_output("Metadata-Version: %s", dist.metadata_version) + write_output("Installer: %s", dist.installer) + write_output("Classifiers:") + for classifier in dist.classifiers: + write_output(" %s", classifier) + write_output("Entry-points:") + for entry in dist.entry_points: + write_output(" %s", entry.strip()) + if list_files: + write_output("Files:") + if dist.files is None: + write_output("Cannot locate RECORD or installed-files.txt") + else: + for line in dist.files: + write_output(" %s", line.strip()) + return results_printed diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/uninstall.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/uninstall.py new file mode 100644 index 0000000..bb9e8e6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/uninstall.py @@ -0,0 +1,105 @@ +import logging +from optparse import Values +from typing import List + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.base_command import Command +from pip._internal.cli.req_command import SessionCommandMixin, warn_if_run_as_root +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import InstallationError +from pip._internal.req import parse_requirements +from pip._internal.req.constructors import ( + install_req_from_line, + install_req_from_parsed_requirement, +) +from pip._internal.utils.misc import protect_pip_from_modification_on_windows + +logger = logging.getLogger(__name__) + + +class UninstallCommand(Command, SessionCommandMixin): + """ + Uninstall packages. + + pip is able to uninstall most installed packages. Known exceptions are: + + - Pure distutils packages installed with ``python setup.py install``, which + leave behind no metadata to determine what files were installed. + - Script wrappers installed by ``python setup.py develop``. + """ + + usage = """ + %prog [options] ... + %prog [options] -r ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help=( + "Uninstall all the packages listed in the given requirements " + "file. This option can be used multiple times." + ), + ) + self.cmd_opts.add_option( + "-y", + "--yes", + dest="yes", + action="store_true", + help="Don't ask for confirmation of uninstall deletions.", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + session = self.get_default_session(options) + + reqs_to_uninstall = {} + for name in args: + req = install_req_from_line( + name, + isolated=options.isolated_mode, + ) + if req.name: + reqs_to_uninstall[canonicalize_name(req.name)] = req + else: + logger.warning( + "Invalid requirement: %r ignored -" + " the uninstall command expects named" + " requirements.", + name, + ) + for filename in options.requirements: + for parsed_req in parse_requirements( + filename, options=options, session=session + ): + req = install_req_from_parsed_requirement( + parsed_req, isolated=options.isolated_mode + ) + if req.name: + reqs_to_uninstall[canonicalize_name(req.name)] = req + if not reqs_to_uninstall: + raise InstallationError( + f"You must give at least one requirement to {self.name} (see " + f'"pip help {self.name}")' + ) + + protect_pip_from_modification_on_windows( + modifying_pip="pip" in reqs_to_uninstall + ) + + for req in reqs_to_uninstall.values(): + uninstall_pathset = req.uninstall( + auto_confirm=options.yes, + verbose=self.verbosity > 0, + ) + if uninstall_pathset: + uninstall_pathset.commit() + + warn_if_run_as_root() + return SUCCESS diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/commands/wheel.py b/.venv/lib/python3.9/site-packages/pip/_internal/commands/wheel.py new file mode 100644 index 0000000..cea81ee --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/commands/wheel.py @@ -0,0 +1,177 @@ +import logging +import os +import shutil +from optparse import Values +from typing import List + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import RequirementCommand, with_cleanup +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.misc import ensure_dir, normalize_path +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.wheel_builder import build, should_build_for_wheel_command + +logger = logging.getLogger(__name__) + + +class WheelCommand(RequirementCommand): + """ + Build Wheel archives for your requirements and dependencies. + + Wheel is a built-package format, and offers the advantage of not + recompiling your software during every install. For more details, see the + wheel docs: https://wheel.readthedocs.io/en/latest/ + + Requirements: setuptools>=0.8, and wheel. + + 'pip wheel' uses the bdist_wheel setuptools extension from the wheel + package to build individual wheels. + + """ + + usage = """ + %prog [options] ... + %prog [options] -r ... + %prog [options] [-e] ... + %prog [options] [-e] ... + %prog [options] ...""" + + def add_options(self) -> None: + + self.cmd_opts.add_option( + "-w", + "--wheel-dir", + dest="wheel_dir", + metavar="dir", + default=os.curdir, + help=( + "Build wheels into , where the default is the " + "current working directory." + ), + ) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.editable()) + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.src()) + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + + self.cmd_opts.add_option( + "--no-verify", + dest="no_verify", + action="store_true", + default=False, + help="Don't verify if built wheel is valid.", + ) + + self.cmd_opts.add_option(cmdoptions.build_options()) + self.cmd_opts.add_option(cmdoptions.global_options()) + + self.cmd_opts.add_option( + "--pre", + action="store_true", + default=False, + help=( + "Include pre-release and development versions. By default, " + "pip only finds stable versions." + ), + ) + + self.cmd_opts.add_option(cmdoptions.require_hashes()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + cmdoptions.check_install_build_global(options) + + session = self.get_default_session(options) + + finder = self._build_package_finder(options, session) + wheel_cache = WheelCache(options.cache_dir, options.format_control) + + options.wheel_dir = normalize_path(options.wheel_dir) + ensure_dir(options.wheel_dir) + + req_tracker = self.enter_context(get_requirement_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="wheel", + globally_managed=True, + ) + + reqs = self.get_requirements(args, options, finder, session) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + download_dir=options.wheel_dir, + use_user_site=False, + ) + + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + wheel_cache=wheel_cache, + ignore_requires_python=options.ignore_requires_python, + use_pep517=options.use_pep517, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve(reqs, check_supported_wheels=True) + + reqs_to_build: List[InstallRequirement] = [] + for req in requirement_set.requirements.values(): + if req.is_wheel: + preparer.save_linked_requirement(req) + elif should_build_for_wheel_command(req): + reqs_to_build.append(req) + + # build wheels + build_successes, build_failures = build( + reqs_to_build, + wheel_cache=wheel_cache, + verify=(not options.no_verify), + build_options=options.build_options or [], + global_options=options.global_options or [], + ) + for req in build_successes: + assert req.link and req.link.is_wheel + assert req.local_file_path + # copy from cache to target directory + try: + shutil.copy(req.local_file_path, options.wheel_dir) + except OSError as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, + e, + ) + build_failures.append(req) + if len(build_failures) != 0: + raise CommandError("Failed to build one or more wheels") + + return SUCCESS diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/configuration.py b/.venv/lib/python3.9/site-packages/pip/_internal/configuration.py new file mode 100644 index 0000000..4c3a362 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/configuration.py @@ -0,0 +1,367 @@ +"""Configuration management setup + +Some terminology: +- name + As written in config files. +- value + Value associated with a name +- key + Name combined with it's section (section.name) +- variant + A single word describing where the configuration key-value pair came from +""" + +import configparser +import locale +import os +import sys +from typing import Any, Dict, Iterable, List, NewType, Optional, Tuple + +from pip._internal.exceptions import ( + ConfigurationError, + ConfigurationFileCouldNotBeLoaded, +) +from pip._internal.utils import appdirs +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import ensure_dir, enum + +RawConfigParser = configparser.RawConfigParser # Shorthand +Kind = NewType("Kind", str) + +CONFIG_BASENAME = "pip.ini" if WINDOWS else "pip.conf" +ENV_NAMES_IGNORED = "version", "help" + +# The kinds of configurations there are. +kinds = enum( + USER="user", # User Specific + GLOBAL="global", # System Wide + SITE="site", # [Virtual] Environment Specific + ENV="env", # from PIP_CONFIG_FILE + ENV_VAR="env-var", # from Environment Variables +) +OVERRIDE_ORDER = kinds.GLOBAL, kinds.USER, kinds.SITE, kinds.ENV, kinds.ENV_VAR +VALID_LOAD_ONLY = kinds.USER, kinds.GLOBAL, kinds.SITE + +logger = getLogger(__name__) + + +# NOTE: Maybe use the optionx attribute to normalize keynames. +def _normalize_name(name: str) -> str: + """Make a name consistent regardless of source (environment or file)""" + name = name.lower().replace("_", "-") + if name.startswith("--"): + name = name[2:] # only prefer long opts + return name + + +def _disassemble_key(name: str) -> List[str]: + if "." not in name: + error_message = ( + "Key does not contain dot separated section and key. " + "Perhaps you wanted to use 'global.{}' instead?" + ).format(name) + raise ConfigurationError(error_message) + return name.split(".", 1) + + +def get_configuration_files() -> Dict[Kind, List[str]]: + global_config_files = [ + os.path.join(path, CONFIG_BASENAME) for path in appdirs.site_config_dirs("pip") + ] + + site_config_file = os.path.join(sys.prefix, CONFIG_BASENAME) + legacy_config_file = os.path.join( + os.path.expanduser("~"), + "pip" if WINDOWS else ".pip", + CONFIG_BASENAME, + ) + new_config_file = os.path.join(appdirs.user_config_dir("pip"), CONFIG_BASENAME) + return { + kinds.GLOBAL: global_config_files, + kinds.SITE: [site_config_file], + kinds.USER: [legacy_config_file, new_config_file], + } + + +class Configuration: + """Handles management of configuration. + + Provides an interface to accessing and managing configuration files. + + This class converts provides an API that takes "section.key-name" style + keys and stores the value associated with it as "key-name" under the + section "section". + + This allows for a clean interface wherein the both the section and the + key-name are preserved in an easy to manage form in the configuration files + and the data stored is also nice. + """ + + def __init__(self, isolated: bool, load_only: Optional[Kind] = None) -> None: + super().__init__() + + if load_only is not None and load_only not in VALID_LOAD_ONLY: + raise ConfigurationError( + "Got invalid value for load_only - should be one of {}".format( + ", ".join(map(repr, VALID_LOAD_ONLY)) + ) + ) + self.isolated = isolated + self.load_only = load_only + + # Because we keep track of where we got the data from + self._parsers: Dict[Kind, List[Tuple[str, RawConfigParser]]] = { + variant: [] for variant in OVERRIDE_ORDER + } + self._config: Dict[Kind, Dict[str, Any]] = { + variant: {} for variant in OVERRIDE_ORDER + } + self._modified_parsers: List[Tuple[str, RawConfigParser]] = [] + + def load(self) -> None: + """Loads configuration from configuration files and environment""" + self._load_config_files() + if not self.isolated: + self._load_environment_vars() + + def get_file_to_edit(self) -> Optional[str]: + """Returns the file with highest priority in configuration""" + assert self.load_only is not None, "Need to be specified a file to be editing" + + try: + return self._get_parser_to_modify()[0] + except IndexError: + return None + + def items(self) -> Iterable[Tuple[str, Any]]: + """Returns key-value pairs like dict.items() representing the loaded + configuration + """ + return self._dictionary.items() + + def get_value(self, key: str) -> Any: + """Get a value from the configuration.""" + try: + return self._dictionary[key] + except KeyError: + raise ConfigurationError(f"No such key - {key}") + + def set_value(self, key: str, value: Any) -> None: + """Modify a value in the configuration.""" + self._ensure_have_load_only() + + assert self.load_only + fname, parser = self._get_parser_to_modify() + + if parser is not None: + section, name = _disassemble_key(key) + + # Modify the parser and the configuration + if not parser.has_section(section): + parser.add_section(section) + parser.set(section, name, value) + + self._config[self.load_only][key] = value + self._mark_as_modified(fname, parser) + + def unset_value(self, key: str) -> None: + """Unset a value in the configuration.""" + self._ensure_have_load_only() + + assert self.load_only + if key not in self._config[self.load_only]: + raise ConfigurationError(f"No such key - {key}") + + fname, parser = self._get_parser_to_modify() + + if parser is not None: + section, name = _disassemble_key(key) + if not ( + parser.has_section(section) and parser.remove_option(section, name) + ): + # The option was not removed. + raise ConfigurationError( + "Fatal Internal error [id=1]. Please report as a bug." + ) + + # The section may be empty after the option was removed. + if not parser.items(section): + parser.remove_section(section) + self._mark_as_modified(fname, parser) + + del self._config[self.load_only][key] + + def save(self) -> None: + """Save the current in-memory state.""" + self._ensure_have_load_only() + + for fname, parser in self._modified_parsers: + logger.info("Writing to %s", fname) + + # Ensure directory exists. + ensure_dir(os.path.dirname(fname)) + + with open(fname, "w") as f: + parser.write(f) + + # + # Private routines + # + + def _ensure_have_load_only(self) -> None: + if self.load_only is None: + raise ConfigurationError("Needed a specific file to be modifying.") + logger.debug("Will be working with %s variant only", self.load_only) + + @property + def _dictionary(self) -> Dict[str, Any]: + """A dictionary representing the loaded configuration.""" + # NOTE: Dictionaries are not populated if not loaded. So, conditionals + # are not needed here. + retval = {} + + for variant in OVERRIDE_ORDER: + retval.update(self._config[variant]) + + return retval + + def _load_config_files(self) -> None: + """Loads configuration from configuration files""" + config_files = dict(self.iter_config_files()) + if config_files[kinds.ENV][0:1] == [os.devnull]: + logger.debug( + "Skipping loading configuration files due to " + "environment's PIP_CONFIG_FILE being os.devnull" + ) + return + + for variant, files in config_files.items(): + for fname in files: + # If there's specific variant set in `load_only`, load only + # that variant, not the others. + if self.load_only is not None and variant != self.load_only: + logger.debug("Skipping file '%s' (variant: %s)", fname, variant) + continue + + parser = self._load_file(variant, fname) + + # Keeping track of the parsers used + self._parsers[variant].append((fname, parser)) + + def _load_file(self, variant: Kind, fname: str) -> RawConfigParser: + logger.verbose("For variant '%s', will try loading '%s'", variant, fname) + parser = self._construct_parser(fname) + + for section in parser.sections(): + items = parser.items(section) + self._config[variant].update(self._normalized_keys(section, items)) + + return parser + + def _construct_parser(self, fname: str) -> RawConfigParser: + parser = configparser.RawConfigParser() + # If there is no such file, don't bother reading it but create the + # parser anyway, to hold the data. + # Doing this is useful when modifying and saving files, where we don't + # need to construct a parser. + if os.path.exists(fname): + try: + parser.read(fname) + except UnicodeDecodeError: + # See https://github.com/pypa/pip/issues/4963 + raise ConfigurationFileCouldNotBeLoaded( + reason="contains invalid {} characters".format( + locale.getpreferredencoding(False) + ), + fname=fname, + ) + except configparser.Error as error: + # See https://github.com/pypa/pip/issues/4893 + raise ConfigurationFileCouldNotBeLoaded(error=error) + return parser + + def _load_environment_vars(self) -> None: + """Loads configuration from environment variables""" + self._config[kinds.ENV_VAR].update( + self._normalized_keys(":env:", self.get_environ_vars()) + ) + + def _normalized_keys( + self, section: str, items: Iterable[Tuple[str, Any]] + ) -> Dict[str, Any]: + """Normalizes items to construct a dictionary with normalized keys. + + This routine is where the names become keys and are made the same + regardless of source - configuration files or environment. + """ + normalized = {} + for name, val in items: + key = section + "." + _normalize_name(name) + normalized[key] = val + return normalized + + def get_environ_vars(self) -> Iterable[Tuple[str, str]]: + """Returns a generator with all environmental vars with prefix PIP_""" + for key, val in os.environ.items(): + if key.startswith("PIP_"): + name = key[4:].lower() + if name not in ENV_NAMES_IGNORED: + yield name, val + + # XXX: This is patched in the tests. + def iter_config_files(self) -> Iterable[Tuple[Kind, List[str]]]: + """Yields variant and configuration files associated with it. + + This should be treated like items of a dictionary. + """ + # SMELL: Move the conditions out of this function + + # environment variables have the lowest priority + config_file = os.environ.get("PIP_CONFIG_FILE", None) + if config_file is not None: + yield kinds.ENV, [config_file] + else: + yield kinds.ENV, [] + + config_files = get_configuration_files() + + # at the base we have any global configuration + yield kinds.GLOBAL, config_files[kinds.GLOBAL] + + # per-user configuration next + should_load_user_config = not self.isolated and not ( + config_file and os.path.exists(config_file) + ) + if should_load_user_config: + # The legacy config file is overridden by the new config file + yield kinds.USER, config_files[kinds.USER] + + # finally virtualenv configuration first trumping others + yield kinds.SITE, config_files[kinds.SITE] + + def get_values_in_config(self, variant: Kind) -> Dict[str, Any]: + """Get values present in a config file""" + return self._config[variant] + + def _get_parser_to_modify(self) -> Tuple[str, RawConfigParser]: + # Determine which parser to modify + assert self.load_only + parsers = self._parsers[self.load_only] + if not parsers: + # This should not happen if everything works correctly. + raise ConfigurationError( + "Fatal Internal error [id=2]. Please report as a bug." + ) + + # Use the highest priority parser. + return parsers[-1] + + # XXX: This is patched in the tests. + def _mark_as_modified(self, fname: str, parser: RawConfigParser) -> None: + file_parser_tuple = (fname, parser) + if file_parser_tuple not in self._modified_parsers: + self._modified_parsers.append(file_parser_tuple) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self._dictionary!r})" diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__init__.py new file mode 100644 index 0000000..9a89a83 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__init__.py @@ -0,0 +1,21 @@ +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.distributions.sdist import SourceDistribution +from pip._internal.distributions.wheel import WheelDistribution +from pip._internal.req.req_install import InstallRequirement + + +def make_distribution_for_install_requirement( + install_req: InstallRequirement, +) -> AbstractDistribution: + """Returns a Distribution for the given InstallRequirement""" + # Editable requirements will always be source distributions. They use the + # legacy logic until we create a modern standard for them. + if install_req.editable: + return SourceDistribution(install_req) + + # If it's a wheel, it's a WheelDistribution + if install_req.is_wheel: + return WheelDistribution(install_req) + + # Otherwise, a SourceDistribution + return SourceDistribution(install_req) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e65fdcc5e5e9ade30a6e686b3ab479beb996c2eb GIT binary patch literal 811 zcmaJtBv1A|~7!VSwKy+bY=nY6&Ea&{%^PTgfw$oG5Z7?x2 z@(=JYWo6=DU_d;l9E1wh*0bOHY`^#Uv&G@z9fIxC=VDccgnaYCv>`@bqS+H1B#~5; znwFG$KhQxPmf`4!I;v;oZ1f`?*GZXB0trw#`x3}lCLg0RmFb-1d*3k=$?0(aRb`zK z3wNS$R#op*+aP{4Z+o+V8|b}vO8|WXJbKeuC$v6=i(VP1p>cUI?5k^(8@L!^1FkpC zg8HhzoA(2>*J$=J4qLJ!=B}e#@`28M6qpAtypDEgPTxN}9dp@CWK$y9S!*)4gzQ{h zLX-W6Q#7O?l@pZ);}soJW%SYsc>s$21MSnFGY$=6gei<%&P$ifKAq zc*@2UHbBze1J||ILSF3$z`1GsBuA#ZlK|o LbnH<;gP*?uhRW?h literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/base.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..165316a1905e1bdeea85dce968329edfad451f3f GIT binary patch literal 1886 zcmaJ?OK;pZ5GEz%ih$=IZ-koC{ul=HtRxD+{mB=CJ3Ur73so>dD0_*s;cJ>d@EypnkzRw;YU*X zw5}9HI^kBZiPDmxWJQ`B%kntYDo-mAo+-abzD%9+a(9v5v{F?Hjvy;YekxYJO_ySf zq&l&-?VaVY1+(VEL+RO~Fl-g|CvfcAngr*`jVS-u6{^ymv`R z-0D8QgYv?Mfw5-5*vyC;l);)IV=rp1uTOf62~&UqvAS)on~>*4bBA9)h>+*05f&NS zyEtHan%We}f6t(A(gp%?Gi3QRKv55pTNNhkth?hXHs1UHq#`5IeG;ZgG?P*B`8_EK) zX2}omOWv~L7gzw-leQ#M!O`4!uCMQ$<8x-@`uZB9@%c--^*dnfyT4f;5#8LU%iN{_ z40ypxKIYudgCZ!yaoEknA}Zr?%-K^05yT%E#K`xZE;BwK#cUT@r$Zk>=*_Z!wh)%eR&njbOQ6MZoX7AHWY&06ItVv{*sKcV9Ss+Z;))E@8 zXUZf{qe-gTCKV!3^*o`ijnvY!N~B5b3=@rSTBT`SRnuCRi?tao%0i=rdDkvStddDx zHmyZSyA&NlPor&hHQ`IVNhId4M|7F%6o8WuB+7dd$%FK4<7NX7C zM$z+jr3Nuo1&W-U09m?&)lOEZJZt85R#&&uJDE`yZye}iG6I?%0nK2^U?w|~F>U7V z@+MkwNJK0bdUU2of$?E*f$wFcV*!pYbh?-Lg8-8!DdfA`Z1 zG7zGYB?{rzgeYrhNekhILcAfD9IW((fO;Z?_VD#-A3Q4;<#k=?bN>D>>~7|<>zIN+ z4&y&Q10MBG^&=kq>hc?-zDrh3w=9uKy&trv=B}=m`E!4p9{7R0<3A+}IG0un54B&Q W_F#@f=>~TftnYb|I$I1m{lY(AlX+DD literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55bffb5fc3651ce898468036909482b44bc603f6 GIT binary patch literal 4659 zcmdT|Uys|y5$7%`ilTI9oqTre#EDtkbt}M;?50lA!Zp$~&Yz+=7m%UJy+N5s6J}+8oFMM)<)~SbzOI&W20uTNephxHh61JddEL9SdF<~ z8qDR+f!W(+HLk=1ZGR`h} z9MsB%HM^lsj`>0Q0@jt5)j9Wdrad>9P&yxWpzsN)D-VdjhQ(mbF>xC zvGO^yN~zDrK4yUZ$X2^5j=_HFc$5UpPxn%h?D9e8XUQm1?pSg^(gFEUt=vOnyVjUP;s%EiQq1Lt~Hb4w<5{p+* zpmn*EjF(#B8U=Z=iNmiKJCu#Kv=YKru0vs1uGt`#={hcT>E!YeCi>ou+B6qQTLe9$ zc#yDa@MqcGsZ-2{@Qp%GJ2r+ojY;9^CkOMj=IHs*y-BQ)$9v4xt zH+g-*-^dc$a313+*p0`7kju%r1#@(-UU}DBI2LCf7-<{|jbe)?%BHOu7d%VS;` zdrQo85Hp&+ekePW+d1iJG0vNQ#+ip-sOUxQ^&G&hr5wO7T6!taNUE0O6{tXM7EmmoLA5kci&gr} z>O^@4IKu+WOVwlKJJo3ZMm1;;ZqPpB7Yb}TMq2iAV&s^mu~U@W2B4UZ=@nbykIBM1^tN2 zP^hynF-Ngh`~;_BQcwy9XO7ZcvEp|yS2m$Q3s6F}?`SJ@kMffv3|Z_nI2;0O*i?sr zZK&klA};7(n*U;|gf$Gr`!sf-R>7K{W6!EnAnqmcZ^5X;$b$GWu-mg5gbc`mnK{>2 z2ngEN*5nlCcMBx05W2GCM2v!Ha<C02}z{ftukDK(uZ zwBk~Sw1DRtn*AmhkFs1r@6SI4Syr<|v-&c!+5^riUre|#ayam6+rAAIMlikFMH`bT z1n?PH1nwk8W=`n=`2f=4IboH*LIBS!49Jh*1_QRTw;~9m(iXqkoINDEa zXLA03I99u*9N&+F5%+!N`u-?kW5|wu)$skh;~-j$RDGW%1K$@Ic?Di61R_saeaLvk zS!`nxAdq^L3G(OuracecL}1hwsPJ6w=Pspdcmz?00@Go63JQl<_PPzndD=MLe6{7Y z+~#HzT6z}TbgP)sppxut53cP){pIIhQLn6C?Uw0Po^D|lSGxF>({tIudznDaRHs&_ z@dpF0K`piY)VbARyeB>AEUs;E#lwF)v1B~&amshn%M8L#8LSGJ&V$R@>LviPH}`CkQI73=^2 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c74affd94bc1d4cd5deb6df5b2dd9bf76229651d GIT binary patch literal 1611 zcmaJ>OOGQp5N`J)$z(H3W*MzOfMjtC3*AVZRzfRYS|qd@Ar=X#IkcR(GU?gwc8~3z zA<=SS_QaXvp1ARseC5Pn;DD%d@62|@!%{otO1WI$SD!5o52pc+pMOcuzmJ39cUlYw z`hrjJGmmkSfn-%svz#%q!z!$!Jo0u_#dVS=-j1tLJQ3}hll&jUGv z=sL=$a{MG%O#Z-(!GgKtm1tB`u0&PtplC!5=sfv!X{;72`$dVr<+8J-YS4f9wOBnB zXYijfR!2w!CXv{YVYZhuCWokY^=hFTInrG0(e`XOVuTUg#1q@uL% zdpa~!+p;<1NCF);NUij34hg}6Jr9(4_udn*#2m6{xmxcLDmzVCrMhY=M6!Fs zcMt2*fE~C5jl_}|XCC&kC*0p6(HdjK+KKl|SEwl6zn#-&zmsz{D8`XT2 zKFCaI;R9+nUICM}Wt-tf3%U_iHq@2L{PAhKb#IdTZ#uMh0q$aDW`a|Y%-NjH*zUgP zVAzlJKX;$vEH8dZ6<>H|!=iYWEVK{n~p>yLye15^<^_4F(veTXhi z1?ksmBGUS4j+T3;zX`Bc{w=7tF~ku0LA1;MiQs?t;pLl3E$UOcmKhSE71{|zKT&qM$K literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/base.py b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/base.py new file mode 100644 index 0000000..149fff5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/base.py @@ -0,0 +1,36 @@ +import abc + +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata.base import BaseDistribution +from pip._internal.req import InstallRequirement + + +class AbstractDistribution(metaclass=abc.ABCMeta): + """A base class for handling installable artifacts. + + The requirements for anything installable are as follows: + + - we must be able to determine the requirement name + (or we can't correctly handle the non-upgrade case). + + - for packages with setup requirements, we must also be able + to determine their requirements without installing additional + packages (for the same reason as run-time dependencies) + + - we must be able to create a Distribution object exposing the + above metadata. + """ + + def __init__(self, req: InstallRequirement) -> None: + super().__init__() + self.req = req + + @abc.abstractmethod + def get_metadata_distribution(self) -> BaseDistribution: + raise NotImplementedError() + + @abc.abstractmethod + def prepare_distribution_metadata( + self, finder: PackageFinder, build_isolation: bool + ) -> None: + raise NotImplementedError() diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/installed.py b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/installed.py new file mode 100644 index 0000000..6c8c179 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/installed.py @@ -0,0 +1,22 @@ +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution + + +class InstalledDistribution(AbstractDistribution): + """Represents an installed package. + + This does not need any preparation as the required information has already + been computed. + """ + + def get_metadata_distribution(self) -> BaseDistribution: + from pip._internal.metadata.pkg_resources import Distribution as _Dist + + assert self.req.satisfied_by is not None, "not actually installed" + return _Dist(self.req.satisfied_by) + + def prepare_distribution_metadata( + self, finder: PackageFinder, build_isolation: bool + ) -> None: + pass diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py new file mode 100644 index 0000000..cd85ac5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py @@ -0,0 +1,129 @@ +import logging +from typing import Iterable, Set, Tuple + +from pip._internal.build_env import BuildEnvironment +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.exceptions import InstallationError +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution +from pip._internal.utils.subprocess import runner_with_spinner_message + +logger = logging.getLogger(__name__) + + +class SourceDistribution(AbstractDistribution): + """Represents a source distribution. + + The preparation step for these needs metadata for the packages to be + generated, either using PEP 517 or using the legacy `setup.py egg_info`. + """ + + def get_metadata_distribution(self) -> BaseDistribution: + from pip._internal.metadata.pkg_resources import Distribution as _Dist + + return _Dist(self.req.get_dist()) + + def prepare_distribution_metadata( + self, finder: PackageFinder, build_isolation: bool + ) -> None: + # Load pyproject.toml, to determine whether PEP 517 is to be used + self.req.load_pyproject_toml() + + # Set up the build isolation, if this requirement should be isolated + should_isolate = self.req.use_pep517 and build_isolation + if should_isolate: + # Setup an isolated environment and install the build backend static + # requirements in it. + self._prepare_build_backend(finder) + # Check that if the requirement is editable, it either supports PEP 660 or + # has a setup.py or a setup.cfg. This cannot be done earlier because we need + # to setup the build backend to verify it supports build_editable, nor can + # it be done later, because we want to avoid installing build requirements + # needlessly. Doing it here also works around setuptools generating + # UNKNOWN.egg-info when running get_requires_for_build_wheel on a directory + # without setup.py nor setup.cfg. + self.req.isolated_editable_sanity_check() + # Install the dynamic build requirements. + self._install_build_reqs(finder) + + self.req.prepare_metadata() + + def _prepare_build_backend(self, finder: PackageFinder) -> None: + # Isolate in a BuildEnvironment and install the build-time + # requirements. + pyproject_requires = self.req.pyproject_requires + assert pyproject_requires is not None + + self.req.build_env = BuildEnvironment() + self.req.build_env.install_requirements( + finder, pyproject_requires, "overlay", "Installing build dependencies" + ) + conflicting, missing = self.req.build_env.check_requirements( + self.req.requirements_to_check + ) + if conflicting: + self._raise_conflicts("PEP 517/518 supported requirements", conflicting) + if missing: + logger.warning( + "Missing build requirements in pyproject.toml for %s.", + self.req, + ) + logger.warning( + "The project does not specify a build backend, and " + "pip cannot fall back to setuptools without %s.", + " and ".join(map(repr, sorted(missing))), + ) + + def _get_build_requires_wheel(self) -> Iterable[str]: + with self.req.build_env: + runner = runner_with_spinner_message("Getting requirements to build wheel") + backend = self.req.pep517_backend + assert backend is not None + with backend.subprocess_runner(runner): + return backend.get_requires_for_build_wheel() + + def _get_build_requires_editable(self) -> Iterable[str]: + with self.req.build_env: + runner = runner_with_spinner_message( + "Getting requirements to build editable" + ) + backend = self.req.pep517_backend + assert backend is not None + with backend.subprocess_runner(runner): + return backend.get_requires_for_build_editable() + + def _install_build_reqs(self, finder: PackageFinder) -> None: + # Install any extra build dependencies that the backend requests. + # This must be done in a second pass, as the pyproject.toml + # dependencies must be installed before we can call the backend. + if ( + self.req.editable + and self.req.permit_editable_wheels + and self.req.supports_pyproject_editable() + ): + build_reqs = self._get_build_requires_editable() + else: + build_reqs = self._get_build_requires_wheel() + conflicting, missing = self.req.build_env.check_requirements(build_reqs) + if conflicting: + self._raise_conflicts("the backend dependencies", conflicting) + self.req.build_env.install_requirements( + finder, missing, "normal", "Installing backend dependencies" + ) + + def _raise_conflicts( + self, conflicting_with: str, conflicting_reqs: Set[Tuple[str, str]] + ) -> None: + format_string = ( + "Some build dependencies for {requirement} " + "conflict with {conflicting_with}: {description}." + ) + error_message = format_string.format( + requirement=self.req, + conflicting_with=conflicting_with, + description=", ".join( + f"{installed} is incompatible with {wanted}" + for installed, wanted in sorted(conflicting_reqs) + ), + ) + raise InstallationError(error_message) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/distributions/wheel.py b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/wheel.py new file mode 100644 index 0000000..340b0f3 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/distributions/wheel.py @@ -0,0 +1,31 @@ +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import ( + BaseDistribution, + FilesystemWheel, + get_wheel_distribution, +) + + +class WheelDistribution(AbstractDistribution): + """Represents a wheel distribution. + + This does not need any preparation as wheels can be directly unpacked. + """ + + def get_metadata_distribution(self) -> BaseDistribution: + """Loads the metadata from the wheel file into memory and returns a + Distribution that uses it, not relying on the wheel file or + requirement. + """ + assert self.req.local_file_path, "Set as part of preparation during download" + assert self.req.name, "Wheels are never unnamed" + wheel = FilesystemWheel(self.req.local_file_path) + return get_wheel_distribution(wheel, canonicalize_name(self.req.name)) + + def prepare_distribution_metadata( + self, finder: PackageFinder, build_isolation: bool + ) -> None: + pass diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/exceptions.py b/.venv/lib/python3.9/site-packages/pip/_internal/exceptions.py new file mode 100644 index 0000000..ef5bc75 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/exceptions.py @@ -0,0 +1,402 @@ +"""Exceptions used throughout package""" + +import configparser +from itertools import chain, groupby, repeat +from typing import TYPE_CHECKING, Dict, List, Optional, Union + +from pip._vendor.pkg_resources import Distribution +from pip._vendor.requests.models import Request, Response + +if TYPE_CHECKING: + from hashlib import _Hash + + from pip._internal.metadata import BaseDistribution + from pip._internal.req.req_install import InstallRequirement + + +class PipError(Exception): + """Base pip exception""" + + +class ConfigurationError(PipError): + """General exception in configuration""" + + +class InstallationError(PipError): + """General exception during installation""" + + +class UninstallationError(PipError): + """General exception during uninstallation""" + + +class NoneMetadataError(PipError): + """ + Raised when accessing "METADATA" or "PKG-INFO" metadata for a + pip._vendor.pkg_resources.Distribution object and + `dist.has_metadata('METADATA')` returns True but + `dist.get_metadata('METADATA')` returns None (and similarly for + "PKG-INFO"). + """ + + def __init__( + self, + dist: Union[Distribution, "BaseDistribution"], + metadata_name: str, + ) -> None: + """ + :param dist: A Distribution object. + :param metadata_name: The name of the metadata being accessed + (can be "METADATA" or "PKG-INFO"). + """ + self.dist = dist + self.metadata_name = metadata_name + + def __str__(self) -> str: + # Use `dist` in the error message because its stringification + # includes more information, like the version and location. + return "None {} metadata found for distribution: {}".format( + self.metadata_name, + self.dist, + ) + + +class UserInstallationInvalid(InstallationError): + """A --user install is requested on an environment without user site.""" + + def __str__(self) -> str: + return "User base directory is not specified" + + +class InvalidSchemeCombination(InstallationError): + def __str__(self) -> str: + before = ", ".join(str(a) for a in self.args[:-1]) + return f"Cannot set {before} and {self.args[-1]} together" + + +class DistributionNotFound(InstallationError): + """Raised when a distribution cannot be found to satisfy a requirement""" + + +class RequirementsFileParseError(InstallationError): + """Raised when a general error occurs parsing a requirements file line.""" + + +class BestVersionAlreadyInstalled(PipError): + """Raised when the most up-to-date version of a package is already + installed.""" + + +class BadCommand(PipError): + """Raised when virtualenv or a command is not found""" + + +class CommandError(PipError): + """Raised when there is an error in command-line arguments""" + + +class PreviousBuildDirError(PipError): + """Raised when there's a previous conflicting build directory""" + + +class NetworkConnectionError(PipError): + """HTTP connection error""" + + def __init__( + self, error_msg: str, response: Response = None, request: Request = None + ) -> None: + """ + Initialize NetworkConnectionError with `request` and `response` + objects. + """ + self.response = response + self.request = request + self.error_msg = error_msg + if ( + self.response is not None + and not self.request + and hasattr(response, "request") + ): + self.request = self.response.request + super().__init__(error_msg, response, request) + + def __str__(self) -> str: + return str(self.error_msg) + + +class InvalidWheelFilename(InstallationError): + """Invalid wheel filename.""" + + +class UnsupportedWheel(InstallationError): + """Unsupported wheel.""" + + +class MetadataInconsistent(InstallationError): + """Built metadata contains inconsistent information. + + This is raised when the metadata contains values (e.g. name and version) + that do not match the information previously obtained from sdist filename + or user-supplied ``#egg=`` value. + """ + + def __init__( + self, ireq: "InstallRequirement", field: str, f_val: str, m_val: str + ) -> None: + self.ireq = ireq + self.field = field + self.f_val = f_val + self.m_val = m_val + + def __str__(self) -> str: + template = ( + "Requested {} has inconsistent {}: " + "filename has {!r}, but metadata has {!r}" + ) + return template.format(self.ireq, self.field, self.f_val, self.m_val) + + +class InstallationSubprocessError(InstallationError): + """A subprocess call failed during installation.""" + + def __init__(self, returncode: int, description: str) -> None: + self.returncode = returncode + self.description = description + + def __str__(self) -> str: + return ( + "Command errored out with exit status {}: {} " + "Check the logs for full command output." + ).format(self.returncode, self.description) + + +class HashErrors(InstallationError): + """Multiple HashError instances rolled into one for reporting""" + + def __init__(self) -> None: + self.errors: List["HashError"] = [] + + def append(self, error: "HashError") -> None: + self.errors.append(error) + + def __str__(self) -> str: + lines = [] + self.errors.sort(key=lambda e: e.order) + for cls, errors_of_cls in groupby(self.errors, lambda e: e.__class__): + lines.append(cls.head) + lines.extend(e.body() for e in errors_of_cls) + if lines: + return "\n".join(lines) + return "" + + def __bool__(self) -> bool: + return bool(self.errors) + + +class HashError(InstallationError): + """ + A failure to verify a package against known-good hashes + + :cvar order: An int sorting hash exception classes by difficulty of + recovery (lower being harder), so the user doesn't bother fretting + about unpinned packages when he has deeper issues, like VCS + dependencies, to deal with. Also keeps error reports in a + deterministic order. + :cvar head: A section heading for display above potentially many + exceptions of this kind + :ivar req: The InstallRequirement that triggered this error. This is + pasted on after the exception is instantiated, because it's not + typically available earlier. + + """ + + req: Optional["InstallRequirement"] = None + head = "" + order: int = -1 + + def body(self) -> str: + """Return a summary of me for display under the heading. + + This default implementation simply prints a description of the + triggering requirement. + + :param req: The InstallRequirement that provoked this error, with + its link already populated by the resolver's _populate_link(). + + """ + return f" {self._requirement_name()}" + + def __str__(self) -> str: + return f"{self.head}\n{self.body()}" + + def _requirement_name(self) -> str: + """Return a description of the requirement that triggered me. + + This default implementation returns long description of the req, with + line numbers + + """ + return str(self.req) if self.req else "unknown package" + + +class VcsHashUnsupported(HashError): + """A hash was provided for a version-control-system-based requirement, but + we don't have a method for hashing those.""" + + order = 0 + head = ( + "Can't verify hashes for these requirements because we don't " + "have a way to hash version control repositories:" + ) + + +class DirectoryUrlHashUnsupported(HashError): + """A hash was provided for a version-control-system-based requirement, but + we don't have a method for hashing those.""" + + order = 1 + head = ( + "Can't verify hashes for these file:// requirements because they " + "point to directories:" + ) + + +class HashMissing(HashError): + """A hash was needed for a requirement but is absent.""" + + order = 2 + head = ( + "Hashes are required in --require-hashes mode, but they are " + "missing from some requirements. Here is a list of those " + "requirements along with the hashes their downloaded archives " + "actually had. Add lines like these to your requirements files to " + "prevent tampering. (If you did not enable --require-hashes " + "manually, note that it turns on automatically when any package " + "has a hash.)" + ) + + def __init__(self, gotten_hash: str) -> None: + """ + :param gotten_hash: The hash of the (possibly malicious) archive we + just downloaded + """ + self.gotten_hash = gotten_hash + + def body(self) -> str: + # Dodge circular import. + from pip._internal.utils.hashes import FAVORITE_HASH + + package = None + if self.req: + # In the case of URL-based requirements, display the original URL + # seen in the requirements file rather than the package name, + # so the output can be directly copied into the requirements file. + package = ( + self.req.original_link + if self.req.original_link + # In case someone feeds something downright stupid + # to InstallRequirement's constructor. + else getattr(self.req, "req", None) + ) + return " {} --hash={}:{}".format( + package or "unknown package", FAVORITE_HASH, self.gotten_hash + ) + + +class HashUnpinned(HashError): + """A requirement had a hash specified but was not pinned to a specific + version.""" + + order = 3 + head = ( + "In --require-hashes mode, all requirements must have their " + "versions pinned with ==. These do not:" + ) + + +class HashMismatch(HashError): + """ + Distribution file hash values don't match. + + :ivar package_name: The name of the package that triggered the hash + mismatch. Feel free to write to this after the exception is raise to + improve its error message. + + """ + + order = 4 + head = ( + "THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS " + "FILE. If you have updated the package versions, please update " + "the hashes. Otherwise, examine the package contents carefully; " + "someone may have tampered with them." + ) + + def __init__(self, allowed: Dict[str, List[str]], gots: Dict[str, "_Hash"]) -> None: + """ + :param allowed: A dict of algorithm names pointing to lists of allowed + hex digests + :param gots: A dict of algorithm names pointing to hashes we + actually got from the files under suspicion + """ + self.allowed = allowed + self.gots = gots + + def body(self) -> str: + return " {}:\n{}".format(self._requirement_name(), self._hash_comparison()) + + def _hash_comparison(self) -> str: + """ + Return a comparison of actual and expected hash values. + + Example:: + + Expected sha256 abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde + or 123451234512345123451234512345123451234512345 + Got bcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdef + + """ + + def hash_then_or(hash_name: str) -> "chain[str]": + # For now, all the decent hashes have 6-char names, so we can get + # away with hard-coding space literals. + return chain([hash_name], repeat(" or")) + + lines: List[str] = [] + for hash_name, expecteds in self.allowed.items(): + prefix = hash_then_or(hash_name) + lines.extend( + (" Expected {} {}".format(next(prefix), e)) for e in expecteds + ) + lines.append( + " Got {}\n".format(self.gots[hash_name].hexdigest()) + ) + return "\n".join(lines) + + +class UnsupportedPythonVersion(InstallationError): + """Unsupported python version according to Requires-Python package + metadata.""" + + +class ConfigurationFileCouldNotBeLoaded(ConfigurationError): + """When there are errors while loading a configuration file""" + + def __init__( + self, + reason: str = "could not be loaded", + fname: Optional[str] = None, + error: Optional[configparser.Error] = None, + ) -> None: + super().__init__(error) + self.reason = reason + self.fname = fname + self.error = error + + def __str__(self) -> str: + if self.fname is not None: + message_part = f" in {self.fname}." + else: + assert self.error is not None + message_part = f".\n{self.error}\n" + return f"Configuration file {self.reason}{message_part}" diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/index/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/index/__init__.py new file mode 100644 index 0000000..7a17b7b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/index/__init__.py @@ -0,0 +1,2 @@ +"""Index interaction code +""" diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cce87c2fd81c0034b32dd908f766a46328e306cf GIT binary patch literal 242 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac277128908bf571548b7aba4149f498cef64cb6 GIT binary patch literal 28111 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/index/collector.py b/.venv/lib/python3.9/site-packages/pip/_internal/index/collector.py new file mode 100644 index 0000000..d941223 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/index/collector.py @@ -0,0 +1,536 @@ +""" +The main purpose of this module is to expose LinkCollector.collect_sources(). +""" + +import cgi +import collections +import functools +import itertools +import logging +import os +import re +import urllib.parse +import urllib.request +import xml.etree.ElementTree +from optparse import Values +from typing import ( + Callable, + Iterable, + List, + MutableMapping, + NamedTuple, + Optional, + Sequence, + Union, +) + +from pip._vendor import html5lib, requests +from pip._vendor.requests import Response +from pip._vendor.requests.exceptions import RetryError, SSLError + +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.models.link import Link +from pip._internal.models.search_scope import SearchScope +from pip._internal.network.session import PipSession +from pip._internal.network.utils import raise_for_status +from pip._internal.utils.filetypes import is_archive_file +from pip._internal.utils.misc import pairwise, redact_auth_from_url +from pip._internal.vcs import vcs + +from .sources import CandidatesFromPage, LinkSource, build_source + +logger = logging.getLogger(__name__) + +HTMLElement = xml.etree.ElementTree.Element +ResponseHeaders = MutableMapping[str, str] + + +def _match_vcs_scheme(url: str) -> Optional[str]: + """Look for VCS schemes in the URL. + + Returns the matched VCS scheme, or None if there's no match. + """ + for scheme in vcs.schemes: + if url.lower().startswith(scheme) and url[len(scheme)] in "+:": + return scheme + return None + + +class _NotHTML(Exception): + def __init__(self, content_type: str, request_desc: str) -> None: + super().__init__(content_type, request_desc) + self.content_type = content_type + self.request_desc = request_desc + + +def _ensure_html_header(response: Response) -> None: + """Check the Content-Type header to ensure the response contains HTML. + + Raises `_NotHTML` if the content type is not text/html. + """ + content_type = response.headers.get("Content-Type", "") + if not content_type.lower().startswith("text/html"): + raise _NotHTML(content_type, response.request.method) + + +class _NotHTTP(Exception): + pass + + +def _ensure_html_response(url: str, session: PipSession) -> None: + """Send a HEAD request to the URL, and ensure the response contains HTML. + + Raises `_NotHTTP` if the URL is not available for a HEAD request, or + `_NotHTML` if the content type is not text/html. + """ + scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url) + if scheme not in {"http", "https"}: + raise _NotHTTP() + + resp = session.head(url, allow_redirects=True) + raise_for_status(resp) + + _ensure_html_header(resp) + + +def _get_html_response(url: str, session: PipSession) -> Response: + """Access an HTML page with GET, and return the response. + + This consists of three parts: + + 1. If the URL looks suspiciously like an archive, send a HEAD first to + check the Content-Type is HTML, to avoid downloading a large file. + Raise `_NotHTTP` if the content type cannot be determined, or + `_NotHTML` if it is not HTML. + 2. Actually perform the request. Raise HTTP exceptions on network failures. + 3. Check the Content-Type header to make sure we got HTML, and raise + `_NotHTML` otherwise. + """ + if is_archive_file(Link(url).filename): + _ensure_html_response(url, session=session) + + logger.debug("Getting page %s", redact_auth_from_url(url)) + + resp = session.get( + url, + headers={ + "Accept": "text/html", + # We don't want to blindly returned cached data for + # /simple/, because authors generally expecting that + # twine upload && pip install will function, but if + # they've done a pip install in the last ~10 minutes + # it won't. Thus by setting this to zero we will not + # blindly use any cached data, however the benefit of + # using max-age=0 instead of no-cache, is that we will + # still support conditional requests, so we will still + # minimize traffic sent in cases where the page hasn't + # changed at all, we will just always incur the round + # trip for the conditional GET now instead of only + # once per 10 minutes. + # For more information, please see pypa/pip#5670. + "Cache-Control": "max-age=0", + }, + ) + raise_for_status(resp) + + # The check for archives above only works if the url ends with + # something that looks like an archive. However that is not a + # requirement of an url. Unless we issue a HEAD request on every + # url we cannot know ahead of time for sure if something is HTML + # or not. However we can check after we've downloaded it. + _ensure_html_header(resp) + + return resp + + +def _get_encoding_from_headers(headers: ResponseHeaders) -> Optional[str]: + """Determine if we have any encoding information in our headers.""" + if headers and "Content-Type" in headers: + content_type, params = cgi.parse_header(headers["Content-Type"]) + if "charset" in params: + return params["charset"] + return None + + +def _determine_base_url(document: HTMLElement, page_url: str) -> str: + """Determine the HTML document's base URL. + + This looks for a ```` tag in the HTML document. If present, its href + attribute denotes the base URL of anchor tags in the document. If there is + no such tag (or if it does not have a valid href attribute), the HTML + file's URL is used as the base URL. + + :param document: An HTML document representation. The current + implementation expects the result of ``html5lib.parse()``. + :param page_url: The URL of the HTML document. + """ + for base in document.findall(".//base"): + href = base.get("href") + if href is not None: + return href + return page_url + + +def _clean_url_path_part(part: str) -> str: + """ + Clean a "part" of a URL path (i.e. after splitting on "@" characters). + """ + # We unquote prior to quoting to make sure nothing is double quoted. + return urllib.parse.quote(urllib.parse.unquote(part)) + + +def _clean_file_url_path(part: str) -> str: + """ + Clean the first part of a URL path that corresponds to a local + filesystem path (i.e. the first part after splitting on "@" characters). + """ + # We unquote prior to quoting to make sure nothing is double quoted. + # Also, on Windows the path part might contain a drive letter which + # should not be quoted. On Linux where drive letters do not + # exist, the colon should be quoted. We rely on urllib.request + # to do the right thing here. + return urllib.request.pathname2url(urllib.request.url2pathname(part)) + + +# percent-encoded: / +_reserved_chars_re = re.compile("(@|%2F)", re.IGNORECASE) + + +def _clean_url_path(path: str, is_local_path: bool) -> str: + """ + Clean the path portion of a URL. + """ + if is_local_path: + clean_func = _clean_file_url_path + else: + clean_func = _clean_url_path_part + + # Split on the reserved characters prior to cleaning so that + # revision strings in VCS URLs are properly preserved. + parts = _reserved_chars_re.split(path) + + cleaned_parts = [] + for to_clean, reserved in pairwise(itertools.chain(parts, [""])): + cleaned_parts.append(clean_func(to_clean)) + # Normalize %xx escapes (e.g. %2f -> %2F) + cleaned_parts.append(reserved.upper()) + + return "".join(cleaned_parts) + + +def _clean_link(url: str) -> str: + """ + Make sure a link is fully quoted. + For example, if ' ' occurs in the URL, it will be replaced with "%20", + and without double-quoting other characters. + """ + # Split the URL into parts according to the general structure + # `scheme://netloc/path;parameters?query#fragment`. + result = urllib.parse.urlparse(url) + # If the netloc is empty, then the URL refers to a local filesystem path. + is_local_path = not result.netloc + path = _clean_url_path(result.path, is_local_path=is_local_path) + return urllib.parse.urlunparse(result._replace(path=path)) + + +def _create_link_from_element( + anchor: HTMLElement, + page_url: str, + base_url: str, +) -> Optional[Link]: + """ + Convert an anchor element in a simple repository page to a Link. + """ + href = anchor.get("href") + if not href: + return None + + url = _clean_link(urllib.parse.urljoin(base_url, href)) + pyrequire = anchor.get("data-requires-python") + yanked_reason = anchor.get("data-yanked") + + link = Link( + url, + comes_from=page_url, + requires_python=pyrequire, + yanked_reason=yanked_reason, + ) + + return link + + +class CacheablePageContent: + def __init__(self, page: "HTMLPage") -> None: + assert page.cache_link_parsing + self.page = page + + def __eq__(self, other: object) -> bool: + return isinstance(other, type(self)) and self.page.url == other.page.url + + def __hash__(self) -> int: + return hash(self.page.url) + + +def with_cached_html_pages( + fn: Callable[["HTMLPage"], Iterable[Link]], +) -> Callable[["HTMLPage"], List[Link]]: + """ + Given a function that parses an Iterable[Link] from an HTMLPage, cache the + function's result (keyed by CacheablePageContent), unless the HTMLPage + `page` has `page.cache_link_parsing == False`. + """ + + @functools.lru_cache(maxsize=None) + def wrapper(cacheable_page: CacheablePageContent) -> List[Link]: + return list(fn(cacheable_page.page)) + + @functools.wraps(fn) + def wrapper_wrapper(page: "HTMLPage") -> List[Link]: + if page.cache_link_parsing: + return wrapper(CacheablePageContent(page)) + return list(fn(page)) + + return wrapper_wrapper + + +@with_cached_html_pages +def parse_links(page: "HTMLPage") -> Iterable[Link]: + """ + Parse an HTML document, and yield its anchor elements as Link objects. + """ + document = html5lib.parse( + page.content, + transport_encoding=page.encoding, + namespaceHTMLElements=False, + ) + + url = page.url + base_url = _determine_base_url(document, url) + for anchor in document.findall(".//a"): + link = _create_link_from_element( + anchor, + page_url=url, + base_url=base_url, + ) + if link is None: + continue + yield link + + +class HTMLPage: + """Represents one page, along with its URL""" + + def __init__( + self, + content: bytes, + encoding: Optional[str], + url: str, + cache_link_parsing: bool = True, + ) -> None: + """ + :param encoding: the encoding to decode the given content. + :param url: the URL from which the HTML was downloaded. + :param cache_link_parsing: whether links parsed from this page's url + should be cached. PyPI index urls should + have this set to False, for example. + """ + self.content = content + self.encoding = encoding + self.url = url + self.cache_link_parsing = cache_link_parsing + + def __str__(self) -> str: + return redact_auth_from_url(self.url) + + +def _handle_get_page_fail( + link: Link, + reason: Union[str, Exception], + meth: Optional[Callable[..., None]] = None, +) -> None: + if meth is None: + meth = logger.debug + meth("Could not fetch URL %s: %s - skipping", link, reason) + + +def _make_html_page(response: Response, cache_link_parsing: bool = True) -> HTMLPage: + encoding = _get_encoding_from_headers(response.headers) + return HTMLPage( + response.content, + encoding=encoding, + url=response.url, + cache_link_parsing=cache_link_parsing, + ) + + +def _get_html_page( + link: Link, session: Optional[PipSession] = None +) -> Optional["HTMLPage"]: + if session is None: + raise TypeError( + "_get_html_page() missing 1 required keyword argument: 'session'" + ) + + url = link.url.split("#", 1)[0] + + # Check for VCS schemes that do not support lookup as web pages. + vcs_scheme = _match_vcs_scheme(url) + if vcs_scheme: + logger.warning( + "Cannot look at %s URL %s because it does not support lookup as web pages.", + vcs_scheme, + link, + ) + return None + + # Tack index.html onto file:// URLs that point to directories + scheme, _, path, _, _, _ = urllib.parse.urlparse(url) + if scheme == "file" and os.path.isdir(urllib.request.url2pathname(path)): + # add trailing slash if not present so urljoin doesn't trim + # final segment + if not url.endswith("/"): + url += "/" + url = urllib.parse.urljoin(url, "index.html") + logger.debug(" file: URL is directory, getting %s", url) + + try: + resp = _get_html_response(url, session=session) + except _NotHTTP: + logger.warning( + "Skipping page %s because it looks like an archive, and cannot " + "be checked by a HTTP HEAD request.", + link, + ) + except _NotHTML as exc: + logger.warning( + "Skipping page %s because the %s request got Content-Type: %s." + "The only supported Content-Type is text/html", + link, + exc.request_desc, + exc.content_type, + ) + except NetworkConnectionError as exc: + _handle_get_page_fail(link, exc) + except RetryError as exc: + _handle_get_page_fail(link, exc) + except SSLError as exc: + reason = "There was a problem confirming the ssl certificate: " + reason += str(exc) + _handle_get_page_fail(link, reason, meth=logger.info) + except requests.ConnectionError as exc: + _handle_get_page_fail(link, f"connection error: {exc}") + except requests.Timeout: + _handle_get_page_fail(link, "timed out") + else: + return _make_html_page(resp, cache_link_parsing=link.cache_link_parsing) + return None + + +class CollectedSources(NamedTuple): + find_links: Sequence[Optional[LinkSource]] + index_urls: Sequence[Optional[LinkSource]] + + +class LinkCollector: + + """ + Responsible for collecting Link objects from all configured locations, + making network requests as needed. + + The class's main method is its collect_sources() method. + """ + + def __init__( + self, + session: PipSession, + search_scope: SearchScope, + ) -> None: + self.search_scope = search_scope + self.session = session + + @classmethod + def create( + cls, + session: PipSession, + options: Values, + suppress_no_index: bool = False, + ) -> "LinkCollector": + """ + :param session: The Session to use to make requests. + :param suppress_no_index: Whether to ignore the --no-index option + when constructing the SearchScope object. + """ + index_urls = [options.index_url] + options.extra_index_urls + if options.no_index and not suppress_no_index: + logger.debug( + "Ignoring indexes: %s", + ",".join(redact_auth_from_url(url) for url in index_urls), + ) + index_urls = [] + + # Make sure find_links is a list before passing to create(). + find_links = options.find_links or [] + + search_scope = SearchScope.create( + find_links=find_links, + index_urls=index_urls, + ) + link_collector = LinkCollector( + session=session, + search_scope=search_scope, + ) + return link_collector + + @property + def find_links(self) -> List[str]: + return self.search_scope.find_links + + def fetch_page(self, location: Link) -> Optional[HTMLPage]: + """ + Fetch an HTML page containing package links. + """ + return _get_html_page(location, session=self.session) + + def collect_sources( + self, + project_name: str, + candidates_from_page: CandidatesFromPage, + ) -> CollectedSources: + # The OrderedDict calls deduplicate sources by URL. + index_url_sources = collections.OrderedDict( + build_source( + loc, + candidates_from_page=candidates_from_page, + page_validator=self.session.is_secure_origin, + expand_dir=False, + cache_link_parsing=False, + ) + for loc in self.search_scope.get_index_urls_locations(project_name) + ).values() + find_links_sources = collections.OrderedDict( + build_source( + loc, + candidates_from_page=candidates_from_page, + page_validator=self.session.is_secure_origin, + expand_dir=True, + cache_link_parsing=True, + ) + for loc in self.find_links + ).values() + + if logger.isEnabledFor(logging.DEBUG): + lines = [ + f"* {s.link}" + for s in itertools.chain(find_links_sources, index_url_sources) + if s is not None and s.link is not None + ] + lines = [ + f"{len(lines)} location(s) to search " + f"for versions of {project_name}:" + ] + lines + logger.debug("\n".join(lines)) + + return CollectedSources( + find_links=list(find_links_sources), + index_urls=list(index_url_sources), + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/index/package_finder.py b/.venv/lib/python3.9/site-packages/pip/_internal/index/package_finder.py new file mode 100644 index 0000000..a2702db --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/index/package_finder.py @@ -0,0 +1,993 @@ +"""Routines related to PyPI, indexes""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import functools +import itertools +import logging +import re +from typing import FrozenSet, Iterable, List, Optional, Set, Tuple, Union + +from pip._vendor.packaging import specifiers +from pip._vendor.packaging.tags import Tag +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import _BaseVersion +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.exceptions import ( + BestVersionAlreadyInstalled, + DistributionNotFound, + InvalidWheelFilename, + UnsupportedWheel, +) +from pip._internal.index.collector import LinkCollector, parse_links +from pip._internal.models.candidate import InstallationCandidate +from pip._internal.models.format_control import FormatControl +from pip._internal.models.link import Link +from pip._internal.models.search_scope import SearchScope +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.models.wheel import Wheel +from pip._internal.req import InstallRequirement +from pip._internal.utils._log import getLogger +from pip._internal.utils.filetypes import WHEEL_EXTENSION +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import build_netloc +from pip._internal.utils.packaging import check_requires_python +from pip._internal.utils.unpacking import SUPPORTED_EXTENSIONS +from pip._internal.utils.urls import url_to_path + +__all__ = ["FormatControl", "BestCandidateResult", "PackageFinder"] + + +logger = getLogger(__name__) + +BuildTag = Union[Tuple[()], Tuple[int, str]] +CandidateSortingKey = Tuple[int, int, int, _BaseVersion, Optional[int], BuildTag] + + +def _check_link_requires_python( + link: Link, + version_info: Tuple[int, int, int], + ignore_requires_python: bool = False, +) -> bool: + """ + Return whether the given Python version is compatible with a link's + "Requires-Python" value. + + :param version_info: A 3-tuple of ints representing the Python + major-minor-micro version to check. + :param ignore_requires_python: Whether to ignore the "Requires-Python" + value if the given Python version isn't compatible. + """ + try: + is_compatible = check_requires_python( + link.requires_python, + version_info=version_info, + ) + except specifiers.InvalidSpecifier: + logger.debug( + "Ignoring invalid Requires-Python (%r) for link: %s", + link.requires_python, + link, + ) + else: + if not is_compatible: + version = ".".join(map(str, version_info)) + if not ignore_requires_python: + logger.verbose( + "Link requires a different Python (%s not in: %r): %s", + version, + link.requires_python, + link, + ) + return False + + logger.debug( + "Ignoring failed Requires-Python check (%s not in: %r) for link: %s", + version, + link.requires_python, + link, + ) + + return True + + +class LinkEvaluator: + + """ + Responsible for evaluating links for a particular project. + """ + + _py_version_re = re.compile(r"-py([123]\.?[0-9]?)$") + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + def __init__( + self, + project_name: str, + canonical_name: str, + formats: FrozenSet[str], + target_python: TargetPython, + allow_yanked: bool, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """ + :param project_name: The user supplied package name. + :param canonical_name: The canonical package name. + :param formats: The formats allowed for this package. Should be a set + with 'binary' or 'source' or both in it. + :param target_python: The target Python interpreter to use when + evaluating link compatibility. This is used, for example, to + check wheel compatibility, as well as when checking the Python + version, e.g. the Python version embedded in a link filename + (or egg fragment) and against an HTML link's optional PEP 503 + "data-requires-python" attribute. + :param allow_yanked: Whether files marked as yanked (in the sense + of PEP 592) are permitted to be candidates for install. + :param ignore_requires_python: Whether to ignore incompatible + PEP 503 "data-requires-python" values in HTML links. Defaults + to False. + """ + if ignore_requires_python is None: + ignore_requires_python = False + + self._allow_yanked = allow_yanked + self._canonical_name = canonical_name + self._ignore_requires_python = ignore_requires_python + self._formats = formats + self._target_python = target_python + + self.project_name = project_name + + def evaluate_link(self, link: Link) -> Tuple[bool, Optional[str]]: + """ + Determine whether a link is a candidate for installation. + + :return: A tuple (is_candidate, result), where `result` is (1) a + version string if `is_candidate` is True, and (2) if + `is_candidate` is False, an optional string to log the reason + the link fails to qualify. + """ + version = None + if link.is_yanked and not self._allow_yanked: + reason = link.yanked_reason or "" + return (False, f"yanked for reason: {reason}") + + if link.egg_fragment: + egg_info = link.egg_fragment + ext = link.ext + else: + egg_info, ext = link.splitext() + if not ext: + return (False, "not a file") + if ext not in SUPPORTED_EXTENSIONS: + return (False, f"unsupported archive format: {ext}") + if "binary" not in self._formats and ext == WHEEL_EXTENSION: + reason = "No binaries permitted for {}".format(self.project_name) + return (False, reason) + if "macosx10" in link.path and ext == ".zip": + return (False, "macosx10 one") + if ext == WHEEL_EXTENSION: + try: + wheel = Wheel(link.filename) + except InvalidWheelFilename: + return (False, "invalid wheel filename") + if canonicalize_name(wheel.name) != self._canonical_name: + reason = "wrong project name (not {})".format(self.project_name) + return (False, reason) + + supported_tags = self._target_python.get_tags() + if not wheel.supported(supported_tags): + # Include the wheel's tags in the reason string to + # simplify troubleshooting compatibility issues. + file_tags = wheel.get_formatted_file_tags() + reason = ( + "none of the wheel's tags ({}) are compatible " + "(run pip debug --verbose to show compatible tags)".format( + ", ".join(file_tags) + ) + ) + return (False, reason) + + version = wheel.version + + # This should be up by the self.ok_binary check, but see issue 2700. + if "source" not in self._formats and ext != WHEEL_EXTENSION: + reason = f"No sources permitted for {self.project_name}" + return (False, reason) + + if not version: + version = _extract_version_from_fragment( + egg_info, + self._canonical_name, + ) + if not version: + reason = f"Missing project version for {self.project_name}" + return (False, reason) + + match = self._py_version_re.search(version) + if match: + version = version[: match.start()] + py_version = match.group(1) + if py_version != self._target_python.py_version: + return (False, "Python version is incorrect") + + supports_python = _check_link_requires_python( + link, + version_info=self._target_python.py_version_info, + ignore_requires_python=self._ignore_requires_python, + ) + if not supports_python: + # Return None for the reason text to suppress calling + # _log_skipped_link(). + return (False, None) + + logger.debug("Found link %s, version: %s", link, version) + + return (True, version) + + +def filter_unallowed_hashes( + candidates: List[InstallationCandidate], + hashes: Hashes, + project_name: str, +) -> List[InstallationCandidate]: + """ + Filter out candidates whose hashes aren't allowed, and return a new + list of candidates. + + If at least one candidate has an allowed hash, then all candidates with + either an allowed hash or no hash specified are returned. Otherwise, + the given candidates are returned. + + Including the candidates with no hash specified when there is a match + allows a warning to be logged if there is a more preferred candidate + with no hash specified. Returning all candidates in the case of no + matches lets pip report the hash of the candidate that would otherwise + have been installed (e.g. permitting the user to more easily update + their requirements file with the desired hash). + """ + if not hashes: + logger.debug( + "Given no hashes to check %s links for project %r: " + "discarding no candidates", + len(candidates), + project_name, + ) + # Make sure we're not returning back the given value. + return list(candidates) + + matches_or_no_digest = [] + # Collect the non-matches for logging purposes. + non_matches = [] + match_count = 0 + for candidate in candidates: + link = candidate.link + if not link.has_hash: + pass + elif link.is_hash_allowed(hashes=hashes): + match_count += 1 + else: + non_matches.append(candidate) + continue + + matches_or_no_digest.append(candidate) + + if match_count: + filtered = matches_or_no_digest + else: + # Make sure we're not returning back the given value. + filtered = list(candidates) + + if len(filtered) == len(candidates): + discard_message = "discarding no candidates" + else: + discard_message = "discarding {} non-matches:\n {}".format( + len(non_matches), + "\n ".join(str(candidate.link) for candidate in non_matches), + ) + + logger.debug( + "Checked %s links for project %r against %s hashes " + "(%s matches, %s no digest): %s", + len(candidates), + project_name, + hashes.digest_count, + match_count, + len(matches_or_no_digest) - match_count, + discard_message, + ) + + return filtered + + +class CandidatePreferences: + + """ + Encapsulates some of the preferences for filtering and sorting + InstallationCandidate objects. + """ + + def __init__( + self, + prefer_binary: bool = False, + allow_all_prereleases: bool = False, + ) -> None: + """ + :param allow_all_prereleases: Whether to allow all pre-releases. + """ + self.allow_all_prereleases = allow_all_prereleases + self.prefer_binary = prefer_binary + + +class BestCandidateResult: + """A collection of candidates, returned by `PackageFinder.find_best_candidate`. + + This class is only intended to be instantiated by CandidateEvaluator's + `compute_best_candidate()` method. + """ + + def __init__( + self, + candidates: List[InstallationCandidate], + applicable_candidates: List[InstallationCandidate], + best_candidate: Optional[InstallationCandidate], + ) -> None: + """ + :param candidates: A sequence of all available candidates found. + :param applicable_candidates: The applicable candidates. + :param best_candidate: The most preferred candidate found, or None + if no applicable candidates were found. + """ + assert set(applicable_candidates) <= set(candidates) + + if best_candidate is None: + assert not applicable_candidates + else: + assert best_candidate in applicable_candidates + + self._applicable_candidates = applicable_candidates + self._candidates = candidates + + self.best_candidate = best_candidate + + def iter_all(self) -> Iterable[InstallationCandidate]: + """Iterate through all candidates.""" + return iter(self._candidates) + + def iter_applicable(self) -> Iterable[InstallationCandidate]: + """Iterate through the applicable candidates.""" + return iter(self._applicable_candidates) + + +class CandidateEvaluator: + + """ + Responsible for filtering and sorting candidates for installation based + on what tags are valid. + """ + + @classmethod + def create( + cls, + project_name: str, + target_python: Optional[TargetPython] = None, + prefer_binary: bool = False, + allow_all_prereleases: bool = False, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> "CandidateEvaluator": + """Create a CandidateEvaluator object. + + :param target_python: The target Python interpreter to use when + checking compatibility. If None (the default), a TargetPython + object will be constructed from the running Python. + :param specifier: An optional object implementing `filter` + (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable + versions. + :param hashes: An optional collection of allowed hashes. + """ + if target_python is None: + target_python = TargetPython() + if specifier is None: + specifier = specifiers.SpecifierSet() + + supported_tags = target_python.get_tags() + + return cls( + project_name=project_name, + supported_tags=supported_tags, + specifier=specifier, + prefer_binary=prefer_binary, + allow_all_prereleases=allow_all_prereleases, + hashes=hashes, + ) + + def __init__( + self, + project_name: str, + supported_tags: List[Tag], + specifier: specifiers.BaseSpecifier, + prefer_binary: bool = False, + allow_all_prereleases: bool = False, + hashes: Optional[Hashes] = None, + ) -> None: + """ + :param supported_tags: The PEP 425 tags supported by the target + Python in order of preference (most preferred first). + """ + self._allow_all_prereleases = allow_all_prereleases + self._hashes = hashes + self._prefer_binary = prefer_binary + self._project_name = project_name + self._specifier = specifier + self._supported_tags = supported_tags + # Since the index of the tag in the _supported_tags list is used + # as a priority, precompute a map from tag to index/priority to be + # used in wheel.find_most_preferred_tag. + self._wheel_tag_preferences = { + tag: idx for idx, tag in enumerate(supported_tags) + } + + def get_applicable_candidates( + self, + candidates: List[InstallationCandidate], + ) -> List[InstallationCandidate]: + """ + Return the applicable candidates from a list of candidates. + """ + # Using None infers from the specifier instead. + allow_prereleases = self._allow_all_prereleases or None + specifier = self._specifier + versions = { + str(v) + for v in specifier.filter( + # We turn the version object into a str here because otherwise + # when we're debundled but setuptools isn't, Python will see + # packaging.version.Version and + # pkg_resources._vendor.packaging.version.Version as different + # types. This way we'll use a str as a common data interchange + # format. If we stop using the pkg_resources provided specifier + # and start using our own, we can drop the cast to str(). + (str(c.version) for c in candidates), + prereleases=allow_prereleases, + ) + } + + # Again, converting version to str to deal with debundling. + applicable_candidates = [c for c in candidates if str(c.version) in versions] + + filtered_applicable_candidates = filter_unallowed_hashes( + candidates=applicable_candidates, + hashes=self._hashes, + project_name=self._project_name, + ) + + return sorted(filtered_applicable_candidates, key=self._sort_key) + + def _sort_key(self, candidate: InstallationCandidate) -> CandidateSortingKey: + """ + Function to pass as the `key` argument to a call to sorted() to sort + InstallationCandidates by preference. + + Returns a tuple such that tuples sorting as greater using Python's + default comparison operator are more preferred. + + The preference is as follows: + + First and foremost, candidates with allowed (matching) hashes are + always preferred over candidates without matching hashes. This is + because e.g. if the only candidate with an allowed hash is yanked, + we still want to use that candidate. + + Second, excepting hash considerations, candidates that have been + yanked (in the sense of PEP 592) are always less preferred than + candidates that haven't been yanked. Then: + + If not finding wheels, they are sorted by version only. + If finding wheels, then the sort order is by version, then: + 1. existing installs + 2. wheels ordered via Wheel.support_index_min(self._supported_tags) + 3. source archives + If prefer_binary was set, then all wheels are sorted above sources. + + Note: it was considered to embed this logic into the Link + comparison operators, but then different sdist links + with the same version, would have to be considered equal + """ + valid_tags = self._supported_tags + support_num = len(valid_tags) + build_tag: BuildTag = () + binary_preference = 0 + link = candidate.link + if link.is_wheel: + # can raise InvalidWheelFilename + wheel = Wheel(link.filename) + try: + pri = -( + wheel.find_most_preferred_tag( + valid_tags, self._wheel_tag_preferences + ) + ) + except ValueError: + raise UnsupportedWheel( + "{} is not a supported wheel for this platform. It " + "can't be sorted.".format(wheel.filename) + ) + if self._prefer_binary: + binary_preference = 1 + if wheel.build_tag is not None: + match = re.match(r"^(\d+)(.*)$", wheel.build_tag) + build_tag_groups = match.groups() + build_tag = (int(build_tag_groups[0]), build_tag_groups[1]) + else: # sdist + pri = -(support_num) + has_allowed_hash = int(link.is_hash_allowed(self._hashes)) + yank_value = -1 * int(link.is_yanked) # -1 for yanked. + return ( + has_allowed_hash, + yank_value, + binary_preference, + candidate.version, + pri, + build_tag, + ) + + def sort_best_candidate( + self, + candidates: List[InstallationCandidate], + ) -> Optional[InstallationCandidate]: + """ + Return the best candidate per the instance's sort order, or None if + no candidate is acceptable. + """ + if not candidates: + return None + best_candidate = max(candidates, key=self._sort_key) + return best_candidate + + def compute_best_candidate( + self, + candidates: List[InstallationCandidate], + ) -> BestCandidateResult: + """ + Compute and return a `BestCandidateResult` instance. + """ + applicable_candidates = self.get_applicable_candidates(candidates) + + best_candidate = self.sort_best_candidate(applicable_candidates) + + return BestCandidateResult( + candidates, + applicable_candidates=applicable_candidates, + best_candidate=best_candidate, + ) + + +class PackageFinder: + """This finds packages. + + This is meant to match easy_install's technique for looking for + packages, by reading pages and looking for appropriate links. + """ + + def __init__( + self, + link_collector: LinkCollector, + target_python: TargetPython, + allow_yanked: bool, + format_control: Optional[FormatControl] = None, + candidate_prefs: Optional[CandidatePreferences] = None, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """ + This constructor is primarily meant to be used by the create() class + method and from tests. + + :param format_control: A FormatControl object, used to control + the selection of source packages / binary packages when consulting + the index and links. + :param candidate_prefs: Options to use when creating a + CandidateEvaluator object. + """ + if candidate_prefs is None: + candidate_prefs = CandidatePreferences() + + format_control = format_control or FormatControl(set(), set()) + + self._allow_yanked = allow_yanked + self._candidate_prefs = candidate_prefs + self._ignore_requires_python = ignore_requires_python + self._link_collector = link_collector + self._target_python = target_python + + self.format_control = format_control + + # These are boring links that have already been logged somehow. + self._logged_links: Set[Link] = set() + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + @classmethod + def create( + cls, + link_collector: LinkCollector, + selection_prefs: SelectionPreferences, + target_python: Optional[TargetPython] = None, + ) -> "PackageFinder": + """Create a PackageFinder. + + :param selection_prefs: The candidate selection preferences, as a + SelectionPreferences object. + :param target_python: The target Python interpreter to use when + checking compatibility. If None (the default), a TargetPython + object will be constructed from the running Python. + """ + if target_python is None: + target_python = TargetPython() + + candidate_prefs = CandidatePreferences( + prefer_binary=selection_prefs.prefer_binary, + allow_all_prereleases=selection_prefs.allow_all_prereleases, + ) + + return cls( + candidate_prefs=candidate_prefs, + link_collector=link_collector, + target_python=target_python, + allow_yanked=selection_prefs.allow_yanked, + format_control=selection_prefs.format_control, + ignore_requires_python=selection_prefs.ignore_requires_python, + ) + + @property + def target_python(self) -> TargetPython: + return self._target_python + + @property + def search_scope(self) -> SearchScope: + return self._link_collector.search_scope + + @search_scope.setter + def search_scope(self, search_scope: SearchScope) -> None: + self._link_collector.search_scope = search_scope + + @property + def find_links(self) -> List[str]: + return self._link_collector.find_links + + @property + def index_urls(self) -> List[str]: + return self.search_scope.index_urls + + @property + def trusted_hosts(self) -> Iterable[str]: + for host_port in self._link_collector.session.pip_trusted_origins: + yield build_netloc(*host_port) + + @property + def allow_all_prereleases(self) -> bool: + return self._candidate_prefs.allow_all_prereleases + + def set_allow_all_prereleases(self) -> None: + self._candidate_prefs.allow_all_prereleases = True + + @property + def prefer_binary(self) -> bool: + return self._candidate_prefs.prefer_binary + + def set_prefer_binary(self) -> None: + self._candidate_prefs.prefer_binary = True + + def make_link_evaluator(self, project_name: str) -> LinkEvaluator: + canonical_name = canonicalize_name(project_name) + formats = self.format_control.get_allowed_formats(canonical_name) + + return LinkEvaluator( + project_name=project_name, + canonical_name=canonical_name, + formats=formats, + target_python=self._target_python, + allow_yanked=self._allow_yanked, + ignore_requires_python=self._ignore_requires_python, + ) + + def _sort_links(self, links: Iterable[Link]) -> List[Link]: + """ + Returns elements of links in order, non-egg links first, egg links + second, while eliminating duplicates + """ + eggs, no_eggs = [], [] + seen: Set[Link] = set() + for link in links: + if link not in seen: + seen.add(link) + if link.egg_fragment: + eggs.append(link) + else: + no_eggs.append(link) + return no_eggs + eggs + + def _log_skipped_link(self, link: Link, reason: str) -> None: + if link not in self._logged_links: + # Put the link at the end so the reason is more visible and because + # the link string is usually very long. + logger.debug("Skipping link: %s: %s", reason, link) + self._logged_links.add(link) + + def get_install_candidate( + self, link_evaluator: LinkEvaluator, link: Link + ) -> Optional[InstallationCandidate]: + """ + If the link is a candidate for install, convert it to an + InstallationCandidate and return it. Otherwise, return None. + """ + is_candidate, result = link_evaluator.evaluate_link(link) + if not is_candidate: + if result: + self._log_skipped_link(link, reason=result) + return None + + return InstallationCandidate( + name=link_evaluator.project_name, + link=link, + version=result, + ) + + def evaluate_links( + self, link_evaluator: LinkEvaluator, links: Iterable[Link] + ) -> List[InstallationCandidate]: + """ + Convert links that are candidates to InstallationCandidate objects. + """ + candidates = [] + for link in self._sort_links(links): + candidate = self.get_install_candidate(link_evaluator, link) + if candidate is not None: + candidates.append(candidate) + + return candidates + + def process_project_url( + self, project_url: Link, link_evaluator: LinkEvaluator + ) -> List[InstallationCandidate]: + logger.debug( + "Fetching project page and analyzing links: %s", + project_url, + ) + html_page = self._link_collector.fetch_page(project_url) + if html_page is None: + return [] + + page_links = list(parse_links(html_page)) + + with indent_log(): + package_links = self.evaluate_links( + link_evaluator, + links=page_links, + ) + + return package_links + + @functools.lru_cache(maxsize=None) + def find_all_candidates(self, project_name: str) -> List[InstallationCandidate]: + """Find all available InstallationCandidate for project_name + + This checks index_urls and find_links. + All versions found are returned as an InstallationCandidate list. + + See LinkEvaluator.evaluate_link() for details on which files + are accepted. + """ + link_evaluator = self.make_link_evaluator(project_name) + + collected_sources = self._link_collector.collect_sources( + project_name=project_name, + candidates_from_page=functools.partial( + self.process_project_url, + link_evaluator=link_evaluator, + ), + ) + + page_candidates_it = itertools.chain.from_iterable( + source.page_candidates() + for sources in collected_sources + for source in sources + if source is not None + ) + page_candidates = list(page_candidates_it) + + file_links_it = itertools.chain.from_iterable( + source.file_links() + for sources in collected_sources + for source in sources + if source is not None + ) + file_candidates = self.evaluate_links( + link_evaluator, + sorted(file_links_it, reverse=True), + ) + + if logger.isEnabledFor(logging.DEBUG) and file_candidates: + paths = [url_to_path(c.link.url) for c in file_candidates] + logger.debug("Local files found: %s", ", ".join(paths)) + + # This is an intentional priority ordering + return file_candidates + page_candidates + + def make_candidate_evaluator( + self, + project_name: str, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> CandidateEvaluator: + """Create a CandidateEvaluator object to use.""" + candidate_prefs = self._candidate_prefs + return CandidateEvaluator.create( + project_name=project_name, + target_python=self._target_python, + prefer_binary=candidate_prefs.prefer_binary, + allow_all_prereleases=candidate_prefs.allow_all_prereleases, + specifier=specifier, + hashes=hashes, + ) + + @functools.lru_cache(maxsize=None) + def find_best_candidate( + self, + project_name: str, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> BestCandidateResult: + """Find matches for the given project and specifier. + + :param specifier: An optional object implementing `filter` + (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable + versions. + + :return: A `BestCandidateResult` instance. + """ + candidates = self.find_all_candidates(project_name) + candidate_evaluator = self.make_candidate_evaluator( + project_name=project_name, + specifier=specifier, + hashes=hashes, + ) + return candidate_evaluator.compute_best_candidate(candidates) + + def find_requirement( + self, req: InstallRequirement, upgrade: bool + ) -> Optional[InstallationCandidate]: + """Try to find a Link matching req + + Expects req, an InstallRequirement and upgrade, a boolean + Returns a InstallationCandidate if found, + Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise + """ + hashes = req.hashes(trust_internet=False) + best_candidate_result = self.find_best_candidate( + req.name, + specifier=req.specifier, + hashes=hashes, + ) + best_candidate = best_candidate_result.best_candidate + + installed_version: Optional[_BaseVersion] = None + if req.satisfied_by is not None: + installed_version = parse_version(req.satisfied_by.version) + + def _format_versions(cand_iter: Iterable[InstallationCandidate]) -> str: + # This repeated parse_version and str() conversion is needed to + # handle different vendoring sources from pip and pkg_resources. + # If we stop using the pkg_resources provided specifier and start + # using our own, we can drop the cast to str(). + return ( + ", ".join( + sorted( + {str(c.version) for c in cand_iter}, + key=parse_version, + ) + ) + or "none" + ) + + if installed_version is None and best_candidate is None: + logger.critical( + "Could not find a version that satisfies the requirement %s " + "(from versions: %s)", + req, + _format_versions(best_candidate_result.iter_all()), + ) + + raise DistributionNotFound( + "No matching distribution found for {}".format(req) + ) + + best_installed = False + if installed_version and ( + best_candidate is None or best_candidate.version <= installed_version + ): + best_installed = True + + if not upgrade and installed_version is not None: + if best_installed: + logger.debug( + "Existing installed version (%s) is most up-to-date and " + "satisfies requirement", + installed_version, + ) + else: + logger.debug( + "Existing installed version (%s) satisfies requirement " + "(most up-to-date version is %s)", + installed_version, + best_candidate.version, + ) + return None + + if best_installed: + # We have an existing version, and its the best version + logger.debug( + "Installed version (%s) is most up-to-date (past versions: %s)", + installed_version, + _format_versions(best_candidate_result.iter_applicable()), + ) + raise BestVersionAlreadyInstalled + + logger.debug( + "Using version %s (newest of versions: %s)", + best_candidate.version, + _format_versions(best_candidate_result.iter_applicable()), + ) + return best_candidate + + +def _find_name_version_sep(fragment: str, canonical_name: str) -> int: + """Find the separator's index based on the package's canonical name. + + :param fragment: A + filename "fragment" (stem) or + egg fragment. + :param canonical_name: The package's canonical name. + + This function is needed since the canonicalized name does not necessarily + have the same length as the egg info's name part. An example:: + + >>> fragment = 'foo__bar-1.0' + >>> canonical_name = 'foo-bar' + >>> _find_name_version_sep(fragment, canonical_name) + 8 + """ + # Project name and version must be separated by one single dash. Find all + # occurrences of dashes; if the string in front of it matches the canonical + # name, this is the one separating the name and version parts. + for i, c in enumerate(fragment): + if c != "-": + continue + if canonicalize_name(fragment[:i]) == canonical_name: + return i + raise ValueError(f"{fragment} does not match {canonical_name}") + + +def _extract_version_from_fragment(fragment: str, canonical_name: str) -> Optional[str]: + """Parse the version string from a + filename + "fragment" (stem) or egg fragment. + + :param fragment: The string to parse. E.g. foo-2.1 + :param canonical_name: The canonicalized name of the package this + belongs to. + """ + try: + version_start = _find_name_version_sep(fragment, canonical_name) + 1 + except ValueError: + return None + version = fragment[version_start:] + if not version: + return None + return version diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/index/sources.py b/.venv/lib/python3.9/site-packages/pip/_internal/index/sources.py new file mode 100644 index 0000000..eec3f12 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/index/sources.py @@ -0,0 +1,224 @@ +import logging +import mimetypes +import os +import pathlib +from typing import Callable, Iterable, Optional, Tuple + +from pip._internal.models.candidate import InstallationCandidate +from pip._internal.models.link import Link +from pip._internal.utils.urls import path_to_url, url_to_path +from pip._internal.vcs import is_url + +logger = logging.getLogger(__name__) + +FoundCandidates = Iterable[InstallationCandidate] +FoundLinks = Iterable[Link] +CandidatesFromPage = Callable[[Link], Iterable[InstallationCandidate]] +PageValidator = Callable[[Link], bool] + + +class LinkSource: + @property + def link(self) -> Optional[Link]: + """Returns the underlying link, if there's one.""" + raise NotImplementedError() + + def page_candidates(self) -> FoundCandidates: + """Candidates found by parsing an archive listing HTML file.""" + raise NotImplementedError() + + def file_links(self) -> FoundLinks: + """Links found by specifying archives directly.""" + raise NotImplementedError() + + +def _is_html_file(file_url: str) -> bool: + return mimetypes.guess_type(file_url, strict=False)[0] == "text/html" + + +class _FlatDirectorySource(LinkSource): + """Link source specified by ``--find-links=``. + + This looks the content of the directory, and returns: + + * ``page_candidates``: Links listed on each HTML file in the directory. + * ``file_candidates``: Archives in the directory. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + path: str, + ) -> None: + self._candidates_from_page = candidates_from_page + self._path = pathlib.Path(os.path.realpath(path)) + + @property + def link(self) -> Optional[Link]: + return None + + def page_candidates(self) -> FoundCandidates: + for path in self._path.iterdir(): + url = path_to_url(str(path)) + if not _is_html_file(url): + continue + yield from self._candidates_from_page(Link(url)) + + def file_links(self) -> FoundLinks: + for path in self._path.iterdir(): + url = path_to_url(str(path)) + if _is_html_file(url): + continue + yield Link(url) + + +class _LocalFileSource(LinkSource): + """``--find-links=`` or ``--[extra-]index-url=``. + + If a URL is supplied, it must be a ``file:`` URL. If a path is supplied to + the option, it is converted to a URL first. This returns: + + * ``page_candidates``: Links listed on an HTML file. + * ``file_candidates``: The non-HTML file. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + if not _is_html_file(self._link.url): + return + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + if _is_html_file(self._link.url): + return + yield self._link + + +class _RemoteFileSource(LinkSource): + """``--find-links=`` or ``--[extra-]index-url=``. + + This returns: + + * ``page_candidates``: Links listed on an HTML file. + * ``file_candidates``: The non-HTML file. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + page_validator: PageValidator, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._page_validator = page_validator + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + if not self._page_validator(self._link): + return + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + yield self._link + + +class _IndexDirectorySource(LinkSource): + """``--[extra-]index-url=``. + + This is treated like a remote URL; ``candidates_from_page`` contains logic + for this by appending ``index.html`` to the link. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + return () + + +def build_source( + location: str, + *, + candidates_from_page: CandidatesFromPage, + page_validator: PageValidator, + expand_dir: bool, + cache_link_parsing: bool, +) -> Tuple[Optional[str], Optional[LinkSource]]: + + path: Optional[str] = None + url: Optional[str] = None + if os.path.exists(location): # Is a local path. + url = path_to_url(location) + path = location + elif location.startswith("file:"): # A file: URL. + url = location + path = url_to_path(location) + elif is_url(location): + url = location + + if url is None: + msg = ( + "Location '%s' is ignored: " + "it is either a non-existing path or lacks a specific scheme." + ) + logger.warning(msg, location) + return (None, None) + + if path is None: + source: LinkSource = _RemoteFileSource( + candidates_from_page=candidates_from_page, + page_validator=page_validator, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + + if os.path.isdir(path): + if expand_dir: + source = _FlatDirectorySource( + candidates_from_page=candidates_from_page, + path=path, + ) + else: + source = _IndexDirectorySource( + candidates_from_page=candidates_from_page, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + elif os.path.isfile(path): + source = _LocalFileSource( + candidates_from_page=candidates_from_page, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + logger.warning( + "Location '%s' is ignored: it is neither a file nor a directory.", + location, + ) + return (url, None) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/locations/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/locations/__init__.py new file mode 100644 index 0000000..dba182d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/locations/__init__.py @@ -0,0 +1,446 @@ +import functools +import logging +import os +import pathlib +import sys +import sysconfig +from typing import Any, Dict, Iterator, List, Optional, Tuple + +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.virtualenv import running_under_virtualenv + +from . import _distutils, _sysconfig +from .base import ( + USER_CACHE_DIR, + get_major_minor_version, + get_src_prefix, + is_osx_framework, + site_packages, + user_site, +) + +__all__ = [ + "USER_CACHE_DIR", + "get_bin_prefix", + "get_bin_user", + "get_major_minor_version", + "get_platlib", + "get_prefixed_libs", + "get_purelib", + "get_scheme", + "get_src_prefix", + "site_packages", + "user_site", +] + + +logger = logging.getLogger(__name__) + +if os.environ.get("_PIP_LOCATIONS_NO_WARN_ON_MISMATCH"): + _MISMATCH_LEVEL = logging.DEBUG +else: + _MISMATCH_LEVEL = logging.WARNING + +_PLATLIBDIR: str = getattr(sys, "platlibdir", "lib") + +_USE_SYSCONFIG = sys.version_info >= (3, 10) + + +def _looks_like_bpo_44860() -> bool: + """The resolution to bpo-44860 will change this incorrect platlib. + + See . + """ + from distutils.command.install import INSTALL_SCHEMES # type: ignore + + try: + unix_user_platlib = INSTALL_SCHEMES["unix_user"]["platlib"] + except KeyError: + return False + return unix_user_platlib == "$usersite" + + +def _looks_like_red_hat_patched_platlib_purelib(scheme: Dict[str, str]) -> bool: + platlib = scheme["platlib"] + if "/$platlibdir/" in platlib and hasattr(sys, "platlibdir"): + platlib = platlib.replace("/$platlibdir/", f"/{sys.platlibdir}/") + if "/lib64/" not in platlib: + return False + unpatched = platlib.replace("/lib64/", "/lib/") + return unpatched.replace("$platbase/", "$base/") == scheme["purelib"] + + +@functools.lru_cache(maxsize=None) +def _looks_like_red_hat_lib() -> bool: + """Red Hat patches platlib in unix_prefix and unix_home, but not purelib. + + This is the only way I can see to tell a Red Hat-patched Python. + """ + from distutils.command.install import INSTALL_SCHEMES # type: ignore + + return all( + k in INSTALL_SCHEMES + and _looks_like_red_hat_patched_platlib_purelib(INSTALL_SCHEMES[k]) + for k in ("unix_prefix", "unix_home") + ) + + +@functools.lru_cache(maxsize=None) +def _looks_like_debian_scheme() -> bool: + """Debian adds two additional schemes.""" + from distutils.command.install import INSTALL_SCHEMES # type: ignore + + return "deb_system" in INSTALL_SCHEMES and "unix_local" in INSTALL_SCHEMES + + +@functools.lru_cache(maxsize=None) +def _looks_like_red_hat_scheme() -> bool: + """Red Hat patches ``sys.prefix`` and ``sys.exec_prefix``. + + Red Hat's ``00251-change-user-install-location.patch`` changes the install + command's ``prefix`` and ``exec_prefix`` to append ``"/local"``. This is + (fortunately?) done quite unconditionally, so we create a default command + object without any configuration to detect this. + """ + from distutils.command.install import install + from distutils.dist import Distribution + + cmd: Any = install(Distribution()) + cmd.finalize_options() + return ( + cmd.exec_prefix == f"{os.path.normpath(sys.exec_prefix)}/local" + and cmd.prefix == f"{os.path.normpath(sys.prefix)}/local" + ) + + +@functools.lru_cache(maxsize=None) +def _looks_like_msys2_mingw_scheme() -> bool: + """MSYS2 patches distutils and sysconfig to use a UNIX-like scheme. + + However, MSYS2 incorrectly patches sysconfig ``nt`` scheme. The fix is + likely going to be included in their 3.10 release, so we ignore the warning. + See msys2/MINGW-packages#9319. + + MSYS2 MINGW's patch uses lowercase ``"lib"`` instead of the usual uppercase, + and is missing the final ``"site-packages"``. + """ + paths = sysconfig.get_paths("nt", expand=False) + return all( + "Lib" not in p and "lib" in p and not p.endswith("site-packages") + for p in (paths[key] for key in ("platlib", "purelib")) + ) + + +def _fix_abiflags(parts: Tuple[str]) -> Iterator[str]: + ldversion = sysconfig.get_config_var("LDVERSION") + abiflags: str = getattr(sys, "abiflags", None) + + # LDVERSION does not end with sys.abiflags. Just return the path unchanged. + if not ldversion or not abiflags or not ldversion.endswith(abiflags): + yield from parts + return + + # Strip sys.abiflags from LDVERSION-based path components. + for part in parts: + if part.endswith(ldversion): + part = part[: (0 - len(abiflags))] + yield part + + +@functools.lru_cache(maxsize=None) +def _warn_mismatched(old: pathlib.Path, new: pathlib.Path, *, key: str) -> None: + issue_url = "https://github.com/pypa/pip/issues/10151" + message = ( + "Value for %s does not match. Please report this to <%s>" + "\ndistutils: %s" + "\nsysconfig: %s" + ) + logger.log(_MISMATCH_LEVEL, message, key, issue_url, old, new) + + +def _warn_if_mismatch(old: pathlib.Path, new: pathlib.Path, *, key: str) -> bool: + if old == new: + return False + _warn_mismatched(old, new, key=key) + return True + + +@functools.lru_cache(maxsize=None) +def _log_context( + *, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + prefix: Optional[str] = None, +) -> None: + parts = [ + "Additional context:", + "user = %r", + "home = %r", + "root = %r", + "prefix = %r", + ] + + logger.log(_MISMATCH_LEVEL, "\n".join(parts), user, home, root, prefix) + + +def get_scheme( + dist_name: str, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> Scheme: + new = _sysconfig.get_scheme( + dist_name, + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + if _USE_SYSCONFIG: + return new + + old = _distutils.get_scheme( + dist_name, + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + + warning_contexts = [] + for k in SCHEME_KEYS: + old_v = pathlib.Path(getattr(old, k)) + new_v = pathlib.Path(getattr(new, k)) + + if old_v == new_v: + continue + + # distutils incorrectly put PyPy packages under ``site-packages/python`` + # in the ``posix_home`` scheme, but PyPy devs said they expect the + # directory name to be ``pypy`` instead. So we treat this as a bug fix + # and not warn about it. See bpo-43307 and python/cpython#24628. + skip_pypy_special_case = ( + sys.implementation.name == "pypy" + and home is not None + and k in ("platlib", "purelib") + and old_v.parent == new_v.parent + and old_v.name.startswith("python") + and new_v.name.startswith("pypy") + ) + if skip_pypy_special_case: + continue + + # sysconfig's ``osx_framework_user`` does not include ``pythonX.Y`` in + # the ``include`` value, but distutils's ``headers`` does. We'll let + # CPython decide whether this is a bug or feature. See bpo-43948. + skip_osx_framework_user_special_case = ( + user + and is_osx_framework() + and k == "headers" + and old_v.parent.parent == new_v.parent + and old_v.parent.name.startswith("python") + ) + if skip_osx_framework_user_special_case: + continue + + # On Red Hat and derived Linux distributions, distutils is patched to + # use "lib64" instead of "lib" for platlib. + if k == "platlib" and _looks_like_red_hat_lib(): + continue + + # On Python 3.9+, sysconfig's posix_user scheme sets platlib against + # sys.platlibdir, but distutils's unix_user incorrectly coninutes + # using the same $usersite for both platlib and purelib. This creates a + # mismatch when sys.platlibdir is not "lib". + skip_bpo_44860 = ( + user + and k == "platlib" + and not WINDOWS + and sys.version_info >= (3, 9) + and _PLATLIBDIR != "lib" + and _looks_like_bpo_44860() + ) + if skip_bpo_44860: + continue + + # Both Debian and Red Hat patch Python to place the system site under + # /usr/local instead of /usr. Debian also places lib in dist-packages + # instead of site-packages, but the /usr/local check should cover it. + skip_linux_system_special_case = ( + not (user or home or prefix or running_under_virtualenv()) + and old_v.parts[1:3] == ("usr", "local") + and len(new_v.parts) > 1 + and new_v.parts[1] == "usr" + and (len(new_v.parts) < 3 or new_v.parts[2] != "local") + and (_looks_like_red_hat_scheme() or _looks_like_debian_scheme()) + ) + if skip_linux_system_special_case: + continue + + # On Python 3.7 and earlier, sysconfig does not include sys.abiflags in + # the "pythonX.Y" part of the path, but distutils does. + skip_sysconfig_abiflag_bug = ( + sys.version_info < (3, 8) + and not WINDOWS + and k in ("headers", "platlib", "purelib") + and tuple(_fix_abiflags(old_v.parts)) == new_v.parts + ) + if skip_sysconfig_abiflag_bug: + continue + + # MSYS2 MINGW's sysconfig patch does not include the "site-packages" + # part of the path. This is incorrect and will be fixed in MSYS. + skip_msys2_mingw_bug = ( + WINDOWS and k in ("platlib", "purelib") and _looks_like_msys2_mingw_scheme() + ) + if skip_msys2_mingw_bug: + continue + + # CPython's POSIX install script invokes pip (via ensurepip) against the + # interpreter located in the source tree, not the install site. This + # triggers special logic in sysconfig that's not present in distutils. + # https://github.com/python/cpython/blob/8c21941ddaf/Lib/sysconfig.py#L178-L194 + skip_cpython_build = ( + sysconfig.is_python_build(check_home=True) + and not WINDOWS + and k in ("headers", "include", "platinclude") + ) + if skip_cpython_build: + continue + + warning_contexts.append((old_v, new_v, f"scheme.{k}")) + + if not warning_contexts: + return old + + # Check if this path mismatch is caused by distutils config files. Those + # files will no longer work once we switch to sysconfig, so this raises a + # deprecation message for them. + default_old = _distutils.distutils_scheme( + dist_name, + user, + home, + root, + isolated, + prefix, + ignore_config_files=True, + ) + if any(default_old[k] != getattr(old, k) for k in SCHEME_KEYS): + deprecated( + reason=( + "Configuring installation scheme with distutils config files " + "is deprecated and will no longer work in the near future. If you " + "are using a Homebrew or Linuxbrew Python, please see discussion " + "at https://github.com/Homebrew/homebrew-core/issues/76621" + ), + replacement=None, + gone_in=None, + ) + return old + + # Post warnings about this mismatch so user can report them back. + for old_v, new_v, key in warning_contexts: + _warn_mismatched(old_v, new_v, key=key) + _log_context(user=user, home=home, root=root, prefix=prefix) + + return old + + +def get_bin_prefix() -> str: + new = _sysconfig.get_bin_prefix() + if _USE_SYSCONFIG: + return new + + old = _distutils.get_bin_prefix() + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="bin_prefix"): + _log_context() + return old + + +def get_bin_user() -> str: + return _sysconfig.get_scheme("", user=True).scripts + + +def _looks_like_deb_system_dist_packages(value: str) -> bool: + """Check if the value is Debian's APT-controlled dist-packages. + + Debian's ``distutils.sysconfig.get_python_lib()`` implementation returns the + default package path controlled by APT, but does not patch ``sysconfig`` to + do the same. This is similar to the bug worked around in ``get_scheme()``, + but here the default is ``deb_system`` instead of ``unix_local``. Ultimately + we can't do anything about this Debian bug, and this detection allows us to + skip the warning when needed. + """ + if not _looks_like_debian_scheme(): + return False + if value == "/usr/lib/python3/dist-packages": + return True + return False + + +def get_purelib() -> str: + """Return the default pure-Python lib location.""" + new = _sysconfig.get_purelib() + if _USE_SYSCONFIG: + return new + + old = _distutils.get_purelib() + if _looks_like_deb_system_dist_packages(old): + return old + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="purelib"): + _log_context() + return old + + +def get_platlib() -> str: + """Return the default platform-shared lib location.""" + new = _sysconfig.get_platlib() + if _USE_SYSCONFIG: + return new + + old = _distutils.get_platlib() + if _looks_like_deb_system_dist_packages(old): + return old + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="platlib"): + _log_context() + return old + + +def _deduplicated(v1: str, v2: str) -> List[str]: + """Deduplicate values from a list.""" + if v1 == v2: + return [v1] + return [v1, v2] + + +def get_prefixed_libs(prefix: str) -> List[str]: + """Return the lib locations under ``prefix``.""" + new_pure, new_plat = _sysconfig.get_prefixed_libs(prefix) + if _USE_SYSCONFIG: + return _deduplicated(new_pure, new_plat) + + old_pure, old_plat = _distutils.get_prefixed_libs(prefix) + + warned = [ + _warn_if_mismatch( + pathlib.Path(old_pure), + pathlib.Path(new_pure), + key="prefixed-purelib", + ), + _warn_if_mismatch( + pathlib.Path(old_plat), + pathlib.Path(new_plat), + key="prefixed-platlib", + ), + ] + if any(warned): + _log_context(prefix=prefix) + + return _deduplicated(old_pure, old_plat) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f5176ca11b90024a4c695a9115b6757650f5a07 GIT binary patch literal 10622 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
  • FJ#|b!|XCEe~wHibUM07goiN^thxD>iWirxDW5S6GW*wBvH-bfnq3-VUY4w>O23$9uh61<}%CP4cUgDyFEQ6p+(Y7)o{lWVbmcyUiZBUZ9%UUN(TBSDw}|7Yy6m~k2I5hSOSe>&SMS)=>1~N=Wn;esr0Vd)T>+~c&OV{Ci zKM*%47u4@iIQbIjPl?Eq`McOCM4T#iId87Iblv^JF4_NahJ?t_BHL!=e^<69G>kN( QO`uNytz50m)|{I2KPTDnLI3~& literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2181c3cfc64e9c11da235047ff12712c1cfc6816 GIT binary patch literal 6272 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/base.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/locations/__pycache__/base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd6f340cae8b8a9bc826d8415cf76aaf1e11b0a3 GIT binary patch literal 1550 zcmZuxO>g8h7`BtlXXm4|OLtl=5cO8UCi{VekP4zIMY|x{)wHW+bBR2OXC~839NA9W znWd-h2?q>% zyR8n!H}DDt-Afds7^f&GM;u^dTY+UpJFv~@1dbUiK?O!Dtxjt}4Qq^@)~Ai2ff21O znz6IQ!3uR2t+)cSHmyuLw7ZGuYFyn#v>Vs{z;Qipymf*PuB~Rg0@m7mi&~5IB?|7{ z!L)YKE0pydL_eJUg^_-!HQ5O6y+)b!2vIb-ALF?FE2cdYxf6HaI#)Q@jPWtrS^WpT z4;}7cRU>&GCtSd^$BQgWvQb!MG3DV|!ev2Hnw=>-PjXeu3r^EypxPplG|WkKN=8%z ztDMS$XOWJ1w^?B9!z)_Q#dv}wo>;#jINzGnrVFiafUX=Vnxcm{6!}1(4?szIMp8dz5s~nD!q<2&pQ-yJDnmm+ zXb1?e^IOy8X%*VM}LHiSg39MA_%_jcXrXRF_Z( z?FH>TaFDFczAv>SokcyimKdW_KL*kG87;M1>_ec9NAs^vpiV=Uf;!w8D_p{E&?%SNzqpdp|rZ>Py^$WmEMC?_X!tego;GTzY6YR>5}xlmPL zB07&%?dbS`bH8-)Ok>oVy}FeMivnbUXp)j$Vc!>(ekaLCD&o-=;>1db~UZ}CrH zzO$to!y=0$1Q)yu9_8rV4SD<{ZCB+ihcX1~PzUdSv3XD%KxhrAkKeQ6-QM!DIvvAH zM4~Yb;lH3dFOLuU;r`zKvxD&4=Y3Vz9P3hW_ Dict[str, str]: + """ + Return a distutils install scheme + """ + from distutils.dist import Distribution + + dist_args: Dict[str, Union[str, List[str]]] = {"name": dist_name} + if isolated: + dist_args["script_args"] = ["--no-user-cfg"] + + d = Distribution(dist_args) + if not ignore_config_files: + try: + d.parse_config_files() + except UnicodeDecodeError: + # Typeshed does not include find_config_files() for some reason. + paths = d.find_config_files() # type: ignore + logger.warning( + "Ignore distutils configs in %s due to encoding errors.", + ", ".join(os.path.basename(p) for p in paths), + ) + obj: Optional[DistutilsCommand] = None + obj = d.get_command_obj("install", create=True) + assert obj is not None + i = cast(distutils_install_command, obj) + # NOTE: setting user or home has the side-effect of creating the home dir + # or user base for installations during finalize_options() + # ideally, we'd prefer a scheme class that has no side-effects. + assert not (user and prefix), f"user={user} prefix={prefix}" + assert not (home and prefix), f"home={home} prefix={prefix}" + i.user = user or i.user + if user or home: + i.prefix = "" + i.prefix = prefix or i.prefix + i.home = home or i.home + i.root = root or i.root + i.finalize_options() + + scheme = {} + for key in SCHEME_KEYS: + scheme[key] = getattr(i, "install_" + key) + + # install_lib specified in setup.cfg should install *everything* + # into there (i.e. it takes precedence over both purelib and + # platlib). Note, i.install_lib is *always* set after + # finalize_options(); we only want to override here if the user + # has explicitly requested it hence going back to the config + if "install_lib" in d.get_option_dict("install"): + scheme.update(dict(purelib=i.install_lib, platlib=i.install_lib)) + + if running_under_virtualenv(): + if home: + prefix = home + elif user: + prefix = i.install_userbase # type: ignore + else: + prefix = i.prefix + scheme["headers"] = os.path.join( + prefix, + "include", + "site", + f"python{get_major_minor_version()}", + dist_name, + ) + + if root is not None: + path_no_drive = os.path.splitdrive(os.path.abspath(scheme["headers"]))[1] + scheme["headers"] = os.path.join(root, path_no_drive[1:]) + + return scheme + + +def get_scheme( + dist_name: str, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> Scheme: + """ + Get the "scheme" corresponding to the input parameters. The distutils + documentation provides the context for the available schemes: + https://docs.python.org/3/install/index.html#alternate-installation + + :param dist_name: the name of the package to retrieve the scheme for, used + in the headers scheme path + :param user: indicates to use the "user" scheme + :param home: indicates to use the "home" scheme and provides the base + directory for the same + :param root: root under which other directories are re-based + :param isolated: equivalent to --no-user-cfg, i.e. do not consider + ~/.pydistutils.cfg (posix) or ~/pydistutils.cfg (non-posix) for + scheme paths + :param prefix: indicates to use the "prefix" scheme and provides the + base directory for the same + """ + scheme = distutils_scheme(dist_name, user, home, root, isolated, prefix) + return Scheme( + platlib=scheme["platlib"], + purelib=scheme["purelib"], + headers=scheme["headers"], + scripts=scheme["scripts"], + data=scheme["data"], + ) + + +def get_bin_prefix() -> str: + # XXX: In old virtualenv versions, sys.prefix can contain '..' components, + # so we need to call normpath to eliminate them. + prefix = os.path.normpath(sys.prefix) + if WINDOWS: + bin_py = os.path.join(prefix, "Scripts") + # buildout uses 'bin' on Windows too? + if not os.path.exists(bin_py): + bin_py = os.path.join(prefix, "bin") + return bin_py + # Forcing to use /usr/local/bin for standard macOS framework installs + # Also log to ~/Library/Logs/ for use with the Console.app log viewer + if sys.platform[:6] == "darwin" and prefix[:16] == "/System/Library/": + return "/usr/local/bin" + return os.path.join(prefix, "bin") + + +def get_purelib() -> str: + return get_python_lib(plat_specific=False) + + +def get_platlib() -> str: + return get_python_lib(plat_specific=True) + + +def get_prefixed_libs(prefix: str) -> Tuple[str, str]: + return ( + get_python_lib(plat_specific=False, prefix=prefix), + get_python_lib(plat_specific=True, prefix=prefix), + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/locations/_sysconfig.py b/.venv/lib/python3.9/site-packages/pip/_internal/locations/_sysconfig.py new file mode 100644 index 0000000..5e141aa --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/locations/_sysconfig.py @@ -0,0 +1,219 @@ +import distutils.util # FIXME: For change_root. +import logging +import os +import sys +import sysconfig +import typing + +from pip._internal.exceptions import InvalidSchemeCombination, UserInstallationInvalid +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.virtualenv import running_under_virtualenv + +from .base import get_major_minor_version, is_osx_framework + +logger = logging.getLogger(__name__) + + +# Notes on _infer_* functions. +# Unfortunately ``get_default_scheme()`` didn't exist before 3.10, so there's no +# way to ask things like "what is the '_prefix' scheme on this platform". These +# functions try to answer that with some heuristics while accounting for ad-hoc +# platforms not covered by CPython's default sysconfig implementation. If the +# ad-hoc implementation does not fully implement sysconfig, we'll fall back to +# a POSIX scheme. + +_AVAILABLE_SCHEMES = set(sysconfig.get_scheme_names()) + +_PREFERRED_SCHEME_API = getattr(sysconfig, "get_preferred_scheme", None) + + +def _should_use_osx_framework_prefix() -> bool: + """Check for Apple's ``osx_framework_library`` scheme. + + Python distributed by Apple's Command Line Tools has this special scheme + that's used when: + + * This is a framework build. + * We are installing into the system prefix. + + This does not account for ``pip install --prefix`` (also means we're not + installing to the system prefix), which should use ``posix_prefix``, but + logic here means ``_infer_prefix()`` outputs ``osx_framework_library``. But + since ``prefix`` is not available for ``sysconfig.get_default_scheme()``, + which is the stdlib replacement for ``_infer_prefix()``, presumably Apple + wouldn't be able to magically switch between ``osx_framework_library`` and + ``posix_prefix``. ``_infer_prefix()`` returning ``osx_framework_library`` + means its behavior is consistent whether we use the stdlib implementation + or our own, and we deal with this special case in ``get_scheme()`` instead. + """ + return ( + "osx_framework_library" in _AVAILABLE_SCHEMES + and not running_under_virtualenv() + and is_osx_framework() + ) + + +def _infer_prefix() -> str: + """Try to find a prefix scheme for the current platform. + + This tries: + + * A special ``osx_framework_library`` for Python distributed by Apple's + Command Line Tools, when not running in a virtual environment. + * Implementation + OS, used by PyPy on Windows (``pypy_nt``). + * Implementation without OS, used by PyPy on POSIX (``pypy``). + * OS + "prefix", used by CPython on POSIX (``posix_prefix``). + * Just the OS name, used by CPython on Windows (``nt``). + + If none of the above works, fall back to ``posix_prefix``. + """ + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("prefix") + if _should_use_osx_framework_prefix(): + return "osx_framework_library" + implementation_suffixed = f"{sys.implementation.name}_{os.name}" + if implementation_suffixed in _AVAILABLE_SCHEMES: + return implementation_suffixed + if sys.implementation.name in _AVAILABLE_SCHEMES: + return sys.implementation.name + suffixed = f"{os.name}_prefix" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + if os.name in _AVAILABLE_SCHEMES: # On Windows, prefx is just called "nt". + return os.name + return "posix_prefix" + + +def _infer_user() -> str: + """Try to find a user scheme for the current platform.""" + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("user") + if is_osx_framework() and not running_under_virtualenv(): + suffixed = "osx_framework_user" + else: + suffixed = f"{os.name}_user" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + if "posix_user" not in _AVAILABLE_SCHEMES: # User scheme unavailable. + raise UserInstallationInvalid() + return "posix_user" + + +def _infer_home() -> str: + """Try to find a home for the current platform.""" + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("home") + suffixed = f"{os.name}_home" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + return "posix_home" + + +# Update these keys if the user sets a custom home. +_HOME_KEYS = [ + "installed_base", + "base", + "installed_platbase", + "platbase", + "prefix", + "exec_prefix", +] +if sysconfig.get_config_var("userbase") is not None: + _HOME_KEYS.append("userbase") + + +def get_scheme( + dist_name: str, + user: bool = False, + home: typing.Optional[str] = None, + root: typing.Optional[str] = None, + isolated: bool = False, + prefix: typing.Optional[str] = None, +) -> Scheme: + """ + Get the "scheme" corresponding to the input parameters. + + :param dist_name: the name of the package to retrieve the scheme for, used + in the headers scheme path + :param user: indicates to use the "user" scheme + :param home: indicates to use the "home" scheme + :param root: root under which other directories are re-based + :param isolated: ignored, but kept for distutils compatibility (where + this controls whether the user-site pydistutils.cfg is honored) + :param prefix: indicates to use the "prefix" scheme and provides the + base directory for the same + """ + if user and prefix: + raise InvalidSchemeCombination("--user", "--prefix") + if home and prefix: + raise InvalidSchemeCombination("--home", "--prefix") + + if home is not None: + scheme_name = _infer_home() + elif user: + scheme_name = _infer_user() + else: + scheme_name = _infer_prefix() + + # Special case: When installing into a custom prefix, use posix_prefix + # instead of osx_framework_library. See _should_use_osx_framework_prefix() + # docstring for details. + if prefix is not None and scheme_name == "osx_framework_library": + scheme_name = "posix_prefix" + + if home is not None: + variables = {k: home for k in _HOME_KEYS} + elif prefix is not None: + variables = {k: prefix for k in _HOME_KEYS} + else: + variables = {} + + paths = sysconfig.get_paths(scheme=scheme_name, vars=variables) + + # Logic here is very arbitrary, we're doing it for compatibility, don't ask. + # 1. Pip historically uses a special header path in virtual environments. + # 2. If the distribution name is not known, distutils uses 'UNKNOWN'. We + # only do the same when not running in a virtual environment because + # pip's historical header path logic (see point 1) did not do this. + if running_under_virtualenv(): + if user: + base = variables.get("userbase", sys.prefix) + else: + base = variables.get("base", sys.prefix) + python_xy = f"python{get_major_minor_version()}" + paths["include"] = os.path.join(base, "include", "site", python_xy) + elif not dist_name: + dist_name = "UNKNOWN" + + scheme = Scheme( + platlib=paths["platlib"], + purelib=paths["purelib"], + headers=os.path.join(paths["include"], dist_name), + scripts=paths["scripts"], + data=paths["data"], + ) + if root is not None: + for key in SCHEME_KEYS: + value = distutils.util.change_root(root, getattr(scheme, key)) + setattr(scheme, key, value) + return scheme + + +def get_bin_prefix() -> str: + # Forcing to use /usr/local/bin for standard macOS framework installs. + if sys.platform[:6] == "darwin" and sys.prefix[:16] == "/System/Library/": + return "/usr/local/bin" + return sysconfig.get_paths()["scripts"] + + +def get_purelib() -> str: + return sysconfig.get_paths()["purelib"] + + +def get_platlib() -> str: + return sysconfig.get_paths()["platlib"] + + +def get_prefixed_libs(prefix: str) -> typing.Tuple[str, str]: + paths = sysconfig.get_paths(vars={"base": prefix, "platbase": prefix}) + return (paths["purelib"], paths["platlib"]) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/locations/base.py b/.venv/lib/python3.9/site-packages/pip/_internal/locations/base.py new file mode 100644 index 0000000..86dad4a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/locations/base.py @@ -0,0 +1,52 @@ +import functools +import os +import site +import sys +import sysconfig +import typing + +from pip._internal.utils import appdirs +from pip._internal.utils.virtualenv import running_under_virtualenv + +# Application Directories +USER_CACHE_DIR = appdirs.user_cache_dir("pip") + +# FIXME doesn't account for venv linked to global site-packages +site_packages: typing.Optional[str] = sysconfig.get_path("purelib") + + +def get_major_minor_version() -> str: + """ + Return the major-minor version of the current Python as a string, e.g. + "3.7" or "3.10". + """ + return "{}.{}".format(*sys.version_info) + + +def get_src_prefix() -> str: + if running_under_virtualenv(): + src_prefix = os.path.join(sys.prefix, "src") + else: + # FIXME: keep src in cwd for now (it is not a temporary folder) + try: + src_prefix = os.path.join(os.getcwd(), "src") + except OSError: + # In case the current working directory has been renamed or deleted + sys.exit("The folder you are executing pip from can no longer be found.") + + # under macOS + virtualenv sys.prefix is not properly resolved + # it is something like /path/to/python/bin/.. + return os.path.abspath(src_prefix) + + +try: + # Use getusersitepackages if this is present, as it ensures that the + # value is initialised properly. + user_site: typing.Optional[str] = site.getusersitepackages() +except AttributeError: + user_site = site.USER_SITE + + +@functools.lru_cache(maxsize=None) +def is_osx_framework() -> bool: + return bool(sysconfig.get_config_var("PYTHONFRAMEWORK")) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/main.py b/.venv/lib/python3.9/site-packages/pip/_internal/main.py new file mode 100644 index 0000000..33c6d24 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/main.py @@ -0,0 +1,12 @@ +from typing import List, Optional + + +def main(args: Optional[List[str]] = None) -> int: + """This is preserved for old console scripts that may still be referencing + it. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__init__.py new file mode 100644 index 0000000..f4f2a4f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__init__.py @@ -0,0 +1,51 @@ +from typing import List, Optional + +from .base import BaseDistribution, BaseEnvironment, FilesystemWheel, MemoryWheel, Wheel + +__all__ = [ + "BaseDistribution", + "BaseEnvironment", + "FilesystemWheel", + "MemoryWheel", + "Wheel", + "get_default_environment", + "get_environment", + "get_wheel_distribution", +] + + +def get_default_environment() -> BaseEnvironment: + """Get the default representation for the current environment. + + This returns an Environment instance from the chosen backend. The default + Environment instance should be built from ``sys.path`` and may use caching + to share instance state accorss calls. + """ + from .pkg_resources import Environment + + return Environment.default() + + +def get_environment(paths: Optional[List[str]]) -> BaseEnvironment: + """Get a representation of the environment specified by ``paths``. + + This returns an Environment instance from the chosen backend based on the + given import paths. The backend must build a fresh instance representing + the state of installed distributions when this function is called. + """ + from .pkg_resources import Environment + + return Environment.from_paths(paths) + + +def get_wheel_distribution(wheel: Wheel, canonical_name: str) -> BaseDistribution: + """Get the representation of the specified wheel's distribution metadata. + + This returns a Distribution instance from the chosen backend based on + the given wheel's ``.dist-info`` directory. + + :param canonical_name: Normalized project name of the given wheel. + """ + from .pkg_resources import Distribution + + return Distribution.from_wheel(wheel, canonical_name) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b1a579e1e43233351bcc1bcd0288e6c67ce97980 GIT binary patch literal 1937 zcmb`IJCEZw5XUL`xqj{DfqMW6!0zDUtm3L1f*{DVNiIbK1aKqM;@IM@C&Zqwx}sZDiXAysB5Ka|5=7XqZEp~xA||2MRlPDc#e?|&?=_kG6xrk8f>;>+jQ zZHa?qGRT+?mVpkJVZdZ4J6T6}mtEak_H=*Q*MsFi50}G$ZJF%;87wcLCwq5+?90J# z-Q@^E2w?n}J!WVh-i7i)j?g}VA&j9b$9Ek$kyErx4>vTJ0A>a>3~9K)p?QcU;Q<+L$ww?(ADKGX1*zmpH3=c z(8yasEk+}b?Wa^(Ttz`xE^^*V5LdZ%B2R#COre{7(gHW4ZS+@`|7IT8%W0T)S97;Ev{ zEVB#$sUaNy3hHqygn6f)mN(lNGg4G00c$Stqk3>imYLBKX5Po2e{Q3+&=9He#@ebZ z3*(}-vgxh325?bTs#xW>!pL}o(8Oy*Nk)s8n9nFv>!{qhw8)<=K8dVy@U+DIh%MNt zRAqz<9T-G2(%^&?PDC-(2!U8ru>wn_=ga{JYK!Jzyz-Ae`YnPejSbF3h zN#9g?;wuB6i5`$Gd^`~Ij=935HmHn<{Mg4h4-M6#w|iuo;RCXbarhYfSwpfQem!6G z^(+y2kt=i<=R!lHDd~7@q$la`HGPB+Cr$A#-G`*p*Uw8~ghnCS z*?G=i6h@0o{en7{rntr>oYKY*$7{K0iHDczq#gTFN6Kd1=;)(DI~9$2NCQp2Ddq%i zbL@?nLo7(LyqM4GzT1_^ogw86Nmh3W?sxw~4B{9Wi(_BXbqD{9JSu*}mRq`j41rV+ ZKh=e-GWd)N-qO`@6@C;BC$q_;$-k#yBZU9} literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/base.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fabc6d6a66231f955182c1e3f1196de8c92c4bf3 GIT binary patch literal 13016 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 GRQO-f-GE2{ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..03f13f265946e29c40ee8cf761e3131d3dbfa218 GIT binary patch literal 6124 zcmbVQOK;@H5oVK|hvp%Tq>;4JO4`|nA7iXX>o^ZPSUZmG-N1;gB$nfi89Nj;Y)RDe zG27&5qrvEsUE~lTa1J^8ARYHFbxuKm0R9U;<*TM?GcT~%FG-A=t; z(eV83pPhq$&uiL$sF8h4G~UA-{}+X;xy;urrv7zH$G`3yfoYjR!72nrs~D85Qc$+a z!IU+{h~MxlLDj0Ny6M+~x>Z;8fxMAH0T2_l`TtB(VZ=Evh_OCRz=GLEU zZk?B(8P*-Nr`;K}XZR}GFQMIVXVISJ>uA61vMsGW_bt|{ZMKWD@&+BcVBa8)BurboiMoulA-jP@W zj%B=Y5k-ZS@l&)*QY_&6d&GDTS{q4`8wZe~tAC@rhHE}ItpYFd5-(%R6}~atqFZ`y zK4aDtukb1_FKcf38|F^A6-BM(s8zS7sC7`M6<^(*R+Je~8j3RGHWXzRl(M4Cx^s#$ z2g%8N>gb{A3&HRe2Wi56SJIJI>A&Y`1 zeGztbh<5Z)o!$@d#^e}>Y^d4rV_Vt_wn@8DZKxL*Bj*0DxDA$bgAzB1e znQ?4B0z?zPX9m;4#v59E_nyYo?+cVeZ3tV~(!@&`0&`ZJ*dBO2vTD%)NtXSnt9A&s zmeKWN@fxTKlhg;3S6SH=QII+l5`r>fO|P)KY_ODD>p9;GmadR|&*-5#y=sND)S-5u z9gMN+f;@+~ivqo0rFv^zkhImOHY%y0^$UU?t*iUJ=agl>w+BVSWxg?*#z8wV70$V6bTJKTY9AA( zlvCpn`F3XF#oWYWmP=F9E>t#|>g5D(;6Ojk=%o$@S$E+`Y%jLS&it#f6x8>3GC1aP zIMnAKh@p{U2Ok00TV|3-s@^%*FEe1S<-lZ^ejucU5hQ|Rj{@V>xEh!;$NC@x zZtWtt9Onx?<2seEMOS*LK2~B24RS0{BRgerGlAoL#{NP|)lLkejhv&YP|DgqT;wQp z%h`wUl$%lVFzScy10fqAHOw{N4B*F89g$lW7WTZDaF0_DTV#O}%^o@`H%)`c67}?WoQ9HWI!;gJmCP1uvKIIsTx4c26X^}Iz~?2wZr`Tenvo$N+Pl~>zld1M8jfodGE45FP%}tbUmi>}+Ny5rgUKza=j!FKg zsg#YdcIdg>wNtTuMR=6d*x=@6O<&+{vsCK0#dTWkDiv!~5E?-;7L*;xYS(w-7@FFT zT(L-GvSG17-^v)X$3=1^XwRvPLcB>evKK*NODs@9K}@`bLYg~KS==`LY!7IL6^XmOe=<;$vc=Rf;Jpen-WpRJ8I1ITN*v8>qxTLQ!UO zhR&J=y!4N^G4X8_=8E)vrJ(wgE6F|MgZ*DY{{N>6oG94%L{Y{$L!By?aeCn;WaoP3 zTv5fhI`Z-=sC4i)t!bP;&S`Y`Hmw=nP+T-F9luR$Ha&RD>Vt56)TC5he|p6}BH1ak zBPE?@>1m3~q+vfD?*nq68M!Kvl2Pp79a&m4Gw(P(7x%z%$>8%dBQH6?{vE{+T^XLN zK8?g?f9X^eRV{1^2!Z(mmPKWK2;BN{2_Mi$%z?)KcosAkh-nf&o&O(~_ z98_8IqrE-sP+3fldiYO68;LWWQGuc)Lt&Iv+>v!~d< z;xSf{QeL0Ti2F@kTd06dTg+OU%r-is(y31Tlo;m~P;(Mhj$)a{B%H;1Vr=4oD~FqKhIA|j_?mLEfWTqteJBFPdBx*trfiv&MOU$T5Z hz59HZfg`5mhi(yDdJQh1!D{%Ya str: + raise NotImplementedError() + + @property + def value(self) -> str: + raise NotImplementedError() + + @property + def group(self) -> str: + raise NotImplementedError() + + +class BaseDistribution(Protocol): + def __repr__(self) -> str: + return f"{self.raw_name} {self.version} ({self.location})" + + def __str__(self) -> str: + return f"{self.raw_name} {self.version}" + + @property + def location(self) -> Optional[str]: + """Where the distribution is loaded from. + + A string value is not necessarily a filesystem path, since distributions + can be loaded from other sources, e.g. arbitrary zip archives. ``None`` + means the distribution is created in-memory. + + Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If + this is a symbolic link, we want to preserve the relative path between + it and files in the distribution. + """ + raise NotImplementedError() + + @property + def editable_project_location(self) -> Optional[str]: + """The project location for editable distributions. + + This is the directory where pyproject.toml or setup.py is located. + None if the distribution is not installed in editable mode. + """ + # TODO: this property is relatively costly to compute, memoize it ? + direct_url = self.direct_url + if direct_url: + if direct_url.is_local_editable(): + return url_to_path(direct_url.url) + else: + # Search for an .egg-link file by walking sys.path, as it was + # done before by dist_is_editable(). + egg_link_path = egg_link_path_from_sys_path(self.raw_name) + if egg_link_path: + # TODO: get project location from second line of egg_link file + # (https://github.com/pypa/pip/issues/10243) + return self.location + return None + + @property + def info_directory(self) -> Optional[str]: + """Location of the .[egg|dist]-info directory. + + Similarly to ``location``, a string value is not necessarily a + filesystem path. ``None`` means the distribution is created in-memory. + + For a modern .dist-info installation on disk, this should be something + like ``{location}/{raw_name}-{version}.dist-info``. + + Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If + this is a symbolic link, we want to preserve the relative path between + it and other files in the distribution. + """ + raise NotImplementedError() + + @property + def canonical_name(self) -> NormalizedName: + raise NotImplementedError() + + @property + def version(self) -> DistributionVersion: + raise NotImplementedError() + + @property + def direct_url(self) -> Optional[DirectUrl]: + """Obtain a DirectUrl from this distribution. + + Returns None if the distribution has no `direct_url.json` metadata, + or if `direct_url.json` is invalid. + """ + try: + content = self.read_text(DIRECT_URL_METADATA_NAME) + except FileNotFoundError: + return None + try: + return DirectUrl.from_json(content) + except ( + UnicodeDecodeError, + json.JSONDecodeError, + DirectUrlValidationError, + ) as e: + logger.warning( + "Error parsing %s for %s: %s", + DIRECT_URL_METADATA_NAME, + self.canonical_name, + e, + ) + return None + + @property + def installer(self) -> str: + raise NotImplementedError() + + @property + def editable(self) -> bool: + return bool(self.editable_project_location) + + @property + def local(self) -> bool: + raise NotImplementedError() + + @property + def in_usersite(self) -> bool: + raise NotImplementedError() + + @property + def in_site_packages(self) -> bool: + raise NotImplementedError() + + def read_text(self, name: str) -> str: + """Read a file in the .dist-info (or .egg-info) directory. + + Should raise ``FileNotFoundError`` if ``name`` does not exist in the + metadata directory. + """ + raise NotImplementedError() + + def iter_entry_points(self) -> Iterable[BaseEntryPoint]: + raise NotImplementedError() + + @property + def metadata(self) -> email.message.Message: + """Metadata of distribution parsed from e.g. METADATA or PKG-INFO.""" + raise NotImplementedError() + + @property + def metadata_version(self) -> Optional[str]: + """Value of "Metadata-Version:" in distribution metadata, if available.""" + return self.metadata.get("Metadata-Version") + + @property + def raw_name(self) -> str: + """Value of "Name:" in distribution metadata.""" + # The metadata should NEVER be missing the Name: key, but if it somehow + # does, fall back to the known canonical name. + return self.metadata.get("Name", self.canonical_name) + + @property + def requires_python(self) -> SpecifierSet: + """Value of "Requires-Python:" in distribution metadata. + + If the key does not exist or contains an invalid value, an empty + SpecifierSet should be returned. + """ + value = self.metadata.get("Requires-Python") + if value is None: + return SpecifierSet() + try: + # Convert to str to satisfy the type checker; this can be a Header object. + spec = SpecifierSet(str(value)) + except InvalidSpecifier as e: + message = "Package %r has an invalid Requires-Python: %s" + logger.warning(message, self.raw_name, e) + return SpecifierSet() + return spec + + def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: + """Dependencies of this distribution. + + For modern .dist-info distributions, this is the collection of + "Requires-Dist:" entries in distribution metadata. + """ + raise NotImplementedError() + + def iter_provided_extras(self) -> Iterable[str]: + """Extras provided by this distribution. + + For modern .dist-info distributions, this is the collection of + "Provides-Extra:" entries in distribution metadata. + """ + raise NotImplementedError() + + +class BaseEnvironment: + """An environment containing distributions to introspect.""" + + @classmethod + def default(cls) -> "BaseEnvironment": + raise NotImplementedError() + + @classmethod + def from_paths(cls, paths: Optional[List[str]]) -> "BaseEnvironment": + raise NotImplementedError() + + def get_distribution(self, name: str) -> Optional["BaseDistribution"]: + """Given a requirement name, return the installed distributions.""" + raise NotImplementedError() + + def _iter_distributions(self) -> Iterator["BaseDistribution"]: + """Iterate through installed distributions. + + This function should be implemented by subclass, but never called + directly. Use the public ``iter_distribution()`` instead, which + implements additional logic to make sure the distributions are valid. + """ + raise NotImplementedError() + + def iter_distributions(self) -> Iterator["BaseDistribution"]: + """Iterate through installed distributions.""" + for dist in self._iter_distributions(): + # Make sure the distribution actually comes from a valid Python + # packaging distribution. Pip's AdjacentTempDirectory leaves folders + # e.g. ``~atplotlib.dist-info`` if cleanup was interrupted. The + # valid project name pattern is taken from PEP 508. + project_name_valid = re.match( + r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", + dist.canonical_name, + flags=re.IGNORECASE, + ) + if not project_name_valid: + logger.warning( + "Ignoring invalid distribution %s (%s)", + dist.canonical_name, + dist.location, + ) + continue + yield dist + + def iter_installed_distributions( + self, + local_only: bool = True, + skip: Container[str] = stdlib_pkgs, + include_editables: bool = True, + editables_only: bool = False, + user_only: bool = False, + ) -> Iterator[BaseDistribution]: + """Return a list of installed distributions. + + :param local_only: If True (default), only return installations + local to the current virtualenv, if in a virtualenv. + :param skip: An iterable of canonicalized project names to ignore; + defaults to ``stdlib_pkgs``. + :param include_editables: If False, don't report editables. + :param editables_only: If True, only report editables. + :param user_only: If True, only report installations in the user + site directory. + """ + it = self.iter_distributions() + if local_only: + it = (d for d in it if d.local) + if not include_editables: + it = (d for d in it if not d.editable) + if editables_only: + it = (d for d in it if d.editable) + if user_only: + it = (d for d in it if d.in_usersite) + return (d for d in it if d.canonical_name not in skip) + + +class Wheel(Protocol): + location: str + + def as_zipfile(self) -> zipfile.ZipFile: + raise NotImplementedError() + + +class FilesystemWheel(Wheel): + def __init__(self, location: str) -> None: + self.location = location + + def as_zipfile(self) -> zipfile.ZipFile: + return zipfile.ZipFile(self.location, allowZip64=True) + + +class MemoryWheel(Wheel): + def __init__(self, location: str, stream: IO[bytes]) -> None: + self.location = location + self.stream = stream + + def as_zipfile(self) -> zipfile.ZipFile: + return zipfile.ZipFile(self.stream, allowZip64=True) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/metadata/pkg_resources.py b/.venv/lib/python3.9/site-packages/pip/_internal/metadata/pkg_resources.py new file mode 100644 index 0000000..e8a8a38 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/metadata/pkg_resources.py @@ -0,0 +1,146 @@ +import email.message +import logging +from typing import Collection, Iterable, Iterator, List, NamedTuple, Optional + +from pip._vendor import pkg_resources +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.utils import misc # TODO: Move definition here. +from pip._internal.utils.packaging import get_installer, get_metadata +from pip._internal.utils.wheel import pkg_resources_distribution_for_wheel + +from .base import ( + BaseDistribution, + BaseEntryPoint, + BaseEnvironment, + DistributionVersion, + Wheel, +) + +logger = logging.getLogger(__name__) + + +class EntryPoint(NamedTuple): + name: str + value: str + group: str + + +class Distribution(BaseDistribution): + def __init__(self, dist: pkg_resources.Distribution) -> None: + self._dist = dist + + @classmethod + def from_wheel(cls, wheel: Wheel, name: str) -> "Distribution": + with wheel.as_zipfile() as zf: + dist = pkg_resources_distribution_for_wheel(zf, name, wheel.location) + return cls(dist) + + @property + def location(self) -> Optional[str]: + return self._dist.location + + @property + def info_directory(self) -> Optional[str]: + return self._dist.egg_info + + @property + def canonical_name(self) -> NormalizedName: + return canonicalize_name(self._dist.project_name) + + @property + def version(self) -> DistributionVersion: + return parse_version(self._dist.version) + + @property + def installer(self) -> str: + return get_installer(self._dist) + + @property + def local(self) -> bool: + return misc.dist_is_local(self._dist) + + @property + def in_usersite(self) -> bool: + return misc.dist_in_usersite(self._dist) + + @property + def in_site_packages(self) -> bool: + return misc.dist_in_site_packages(self._dist) + + def read_text(self, name: str) -> str: + if not self._dist.has_metadata(name): + raise FileNotFoundError(name) + return self._dist.get_metadata(name) + + def iter_entry_points(self) -> Iterable[BaseEntryPoint]: + for group, entries in self._dist.get_entry_map().items(): + for name, entry_point in entries.items(): + name, _, value = str(entry_point).partition("=") + yield EntryPoint(name=name.strip(), value=value.strip(), group=group) + + @property + def metadata(self) -> email.message.Message: + return get_metadata(self._dist) + + def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: + if extras: # pkg_resources raises on invalid extras, so we sanitize. + extras = frozenset(extras).intersection(self._dist.extras) + return self._dist.requires(extras) + + def iter_provided_extras(self) -> Iterable[str]: + return self._dist.extras + + +class Environment(BaseEnvironment): + def __init__(self, ws: pkg_resources.WorkingSet) -> None: + self._ws = ws + + @classmethod + def default(cls) -> BaseEnvironment: + return cls(pkg_resources.working_set) + + @classmethod + def from_paths(cls, paths: Optional[List[str]]) -> BaseEnvironment: + return cls(pkg_resources.WorkingSet(paths)) + + def _search_distribution(self, name: str) -> Optional[BaseDistribution]: + """Find a distribution matching the ``name`` in the environment. + + This searches from *all* distributions available in the environment, to + match the behavior of ``pkg_resources.get_distribution()``. + """ + canonical_name = canonicalize_name(name) + for dist in self.iter_distributions(): + if dist.canonical_name == canonical_name: + return dist + return None + + def get_distribution(self, name: str) -> Optional[BaseDistribution]: + + # Search the distribution by looking through the working set. + dist = self._search_distribution(name) + if dist: + return dist + + # If distribution could not be found, call working_set.require to + # update the working set, and try to find the distribution again. + # This might happen for e.g. when you install a package twice, once + # using setup.py develop and again using setup.py install. Now when + # running pip uninstall twice, the package gets removed from the + # working set in the first uninstall, so we have to populate the + # working set again so that pip knows about it and the packages gets + # picked up and is successfully uninstalled the second time too. + try: + # We didn't pass in any version specifiers, so this can never + # raise pkg_resources.VersionConflict. + self._ws.require(name) + except pkg_resources.DistributionNotFound: + return None + return self._search_distribution(name) + + def _iter_distributions(self) -> Iterator[BaseDistribution]: + for dist in self._ws: + yield Distribution(dist) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/__init__.py new file mode 100644 index 0000000..7855226 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/__init__.py @@ -0,0 +1,2 @@ +"""A package that contains models that represent entities. +""" diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d48143c4c5055a56ad850139ac78d101f995486a GIT binary patch literal 276 zcmYjMF-`+95cH)<6e)jjn}XYd1|$UJ12l9rmhZf9n>e=R-AfdnK+PxkQd*usN5zIv zFw)FwM%vY^Uo7TE@%G-X?{t2i%zrd$?v*@K3FgU!=Fu!CuU9Kue82H8Xl3wX`<%p6 zV!O=&BcH>Hr6OYzt0W=hcK)zzj#KAC?w$KEb)si~<$Hu7ZxN_$n8#9b73heEyH3w9@^gWmwe#Dseb_p#Cx-wbSdG2M}GS}_Vax2d*55JzCI){o;@%3e~StE z9T%&E!QviFcN>f(k{U9lbwtsROgv>Z>;2dy)3i=0`Ibl~lT#uSm7c_PCexouk-dRv zQqYie!a4;G`(8H(@O$-vI=U~Ml3VQ*_S6shk#5F#dUYhrh5Hd4MQSQZ9Z6cpyMW>~ zt(i*TNo6eA3-**us7z#fI;u03$m|7`1G#p}>cMg~lviN2_LMME4*}gMeDq!8yf8+1 z-8NgIky;9`j=%azbyhjmc$bU3Ydv^cnEdAW{K(CG(%M|FM3+SzSR!x~@Q%lR4kfH3frDGR*7|BkyS;~EUnyVBIt_O|6jt(y zHj3|H-K+9YHHVeaJ5_h&_uA&m@|((OufFKS_(1F`S9Q9pAkZt@2vbd4sf?>GN>Fx3 zb^{=ekTG-!P3e%PQA#&x^w;rcm)5pCPp_bM4PwR=BbNhx%z6u^y9!3qmq;`eU_th) zxTpBIxO3^{w;tcHPd?Az+T!jR3n@rtD*V4FwC}+e><1U-L-3G(3*zJaV_3PqM=4u8 zfBtt$i;(}9%MFB^U(lN0T1q2-{3I71Y+;cKi-6umn{nT==9v ycrMOzA*o6Y_EV#IfYIOM5F^WcX6#orV=5h-F literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..31a867e0f58777d80fcd42025a3a207009673c4f GIT binary patch literal 7249 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/index.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/index.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..92f62d8a68fed84a2beb11f039c746dd429b2a1c GIT binary patch literal 1246 zcmZ`(J#QR05GA=Ew|7|?c5JC|nr*l6Es#_(j397|z>OdzuC^hlC8gteZm6&U*;(x|Ddxk5FZIMADwL^j9L8OsWDB%Fx;%B4fM)-xzAZBw^*i4;- z)T#dLYkMDPm~!6r!a2@AkWaQ*j4Rb>^TI)KGg{xAYPWbPmP+|%4Xo+mrLdAm-cE&6 zvYB6~;i3UZjk)xTarj~WW8<_}kIZ(Yt})s)km!{iMBl7Nse0FFob=pW+7ggW;W#u1 zoza}$r6n!1&Efu1%y%@@3>d=Z3i!NZm~<;>BMZO4ad$y^vZOb_@iKu~FkqP;*Qq^# z8+!*-m;hNzSeHmh&FnqAIYRZ|i#kLLA49{%a&+_XzsUAEuctV%L97(#Va7SMyM`U( zq2&CJwdikeCLGqSgD~*#`q2abA#vVDI$}MT<#sZi>U)^}S4iI?q=;+Ru|qBjnzDi& zl@_C$dkgQ4d)&ZOjGmA7yxAP#)Esb*V_J;PD~T61joYy~+GTjPKT+@;{>+Nx&S6OzP5=E2Xj4a+ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/link.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/link.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8258b7c05a93e4a2c0d8a4c63aa0397fc246b5cf GIT binary patch literal 10270 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b3ceedb58afa34d1dd9b813a5ebb13118775b8d GIT binary patch literal 1678 zcmZ`(&yO256!!ew>?&z51yKnkt6T`8GZKhHR|pj?4Y#nOLP)t-&iG~H-5Gmodp4vB zCwk({krTK6OLOJKpFmGM&m@~fEFSsA_B_A$&G)_+J{p}79KZdZUE32v{_>l{5#i=J zPWveuK}1lJDwqXXtwYu7ni0rFM6V*86L8 zp$!#!rAp0(R99UPyh5e2j+Z4K(SD06QT_^5!!GQqm4ER+E@fgX2e%`{lb7J zh|~LsrFwpiY-eX30iNUYnj2oxLmtlQPfI|$O-~lBxIuO(x3uSpej-&@4hzb{T_hh( zFX-iqOZw%r&&QM-pf#9EI)}HNrt^aW+OAgHy7c8ZKyys^IsJwn$#MG?6stYe3Nrem z?K5mEbOg!kX0H|mXmw)>gvN^-eucuyX4cXS_Bf^!lb~eB zX&WQki~m*rTVh7&_imFfbp^SsZ>(+VS{s+orCqN0HGs>TS~96t+z93ymd&vdMV{S) zy3I>D&-)hpB72rw>EP+EmU%7f94|UB_&1hUT0m*@yXyO{Uf8T&w*!V=(lPdd@3jYL z$fH3JhiTA1uRpr4d$QfFaXgt~f1mm|idVo`d&U^1YY;1Ihm5^yc)5LZ!kEwn9-lI1 zOYJN!;l;(8z8C!BHLo(hAbRdEvoZ9`&4Nxgc@lmLLVhg@4IcPWvw`k;3=NJ=5K@A-CA_vt54m{OY~$eXr8p-M)w8 zFMo@Vzj?#+{zEUDhmV&xahdlaq$gSKjp@#FR`4+|{IOpI|XHkK(hC|Ve|~Py@R3O1i#CSZK8K;n^k3+H=W1x zI#)y1_>a@skT<(CWfL>6>q=WCn_DMJ8)zn3Ijs^~C1oWm3-#M&rHeGr&Q!9gGNJ!$ z9$mb=iObXw${RE3jk#oFe})zQlZ^wpt2!!F-8T~0c9xjaHVP;!2S%S<7beCZ{S zlFdE+s%6J`lKjs|#W^n{>o55QJLl5>EU+CLlAa9c>jnP@JMS!g%@F z-&x&}G}1z`lRof0&jp2YalcM=T8OLF-WR_RIUq`jFjgbd$cYvQh<_~JnYxF4VN|Lo zM@SbUbY+Unt#UzWO|3|^5?5FjhYOeN$y{rMS(t^fs))tAK!85YjM^8cS)Om1n`WiF zW^YJiW$ns2`VZ#j3$k>H7EB{NNi1GxhjT)~ zeX_oI(XFzwYajAz0@N*9oNb158)pb?DXLZ33rkf`F$Tts&VVTs(2QQ4-wFKlMDWM|K0~54%dE>Z;y{qL=?iK^hAkVl{0%Je!MT< z*rzPt6Q@V2q;fpTq>}5YE0j>Bd?i4fdHi9O23u{dWKtD196!wR%r0ET#P#AeBep2- z?odqU<%Gg7QiGa*!HexmC4X9=u5tSHx^eIf1>`j>e#UVh?rQ2UjgRm*gU$Hsh{l8C zDk~emNNcEAy=H}$DfXb#(#1_O7B+!V`SiP6`ej{=>Z~4NBKQ`q zX;f5Fvp@^!FwIjG_AkPdyrY%e!EpJSIVK$9&3VxMYxBy!p6C zxTAy30+3}7^ZITcZ)c$=?VP=Jh00&MQgR&Pn!~;*tMYXsJCWL!23nFMS^!6GRQZAa z7W~{=1;K$H zR_j2Yq@vN^CgD2fRkMV#S1{V#SVjD@SvP%Hr)E1>=9=|puo(!4Au{0w0qf%ozKA*z zP#Ll4^C0Xq{>9my{~N}w;80+wPdk&p#RI|5_2*yWi6F|_ZVk9nk4C7dM^mpR5aJ?; zhLZm^IQLzLb`}5u|Lk8^ApE`C95@iJo8_aoABms5@l$Mg(15}7=(dw5M9(TG{+5|^ zyQg%P(zYk=Us*%jYbR0jZTB6nA%Yzx?W3lkcQsXL!4q_jqC%^02Q)RnOdGq=G7g48 z(_L}eI!{eN6g=!|qO3NNw3E>ksz@!-@$w%`vUw!E&iL53V z?j?!ID{GQOQzd9BGgq3La^LtML;XD(dyNE9l>Q+JqP`756{~v?gla>@5b>ZB4N&uR z{+IJU+XECs#-9)F?!Dx6(K&8GvkC2@M&ob)?Yy9Wk6!^B$3TB6D;>8K4XxOPj~r=! z;1n+DI>wGAH}Q)-woMBqsCoIzW)zv3xK`zy+E|oZqvN9JK^w=1#My?{7_pc5fZt>T F|9>3ff!Y87 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/wheel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/wheel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5088c5c4b640e54b5e190e2577f6822493eb415 GIT binary patch literal 4348 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/candidate.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/candidate.py new file mode 100644 index 0000000..a4963ae --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/candidate.py @@ -0,0 +1,34 @@ +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.models.link import Link +from pip._internal.utils.models import KeyBasedCompareMixin + + +class InstallationCandidate(KeyBasedCompareMixin): + """Represents a potential "candidate" for installation.""" + + __slots__ = ["name", "version", "link"] + + def __init__(self, name: str, version: str, link: Link) -> None: + self.name = name + self.version = parse_version(version) + self.link = link + + super().__init__( + key=(self.name, self.version, self.link), + defining_class=InstallationCandidate, + ) + + def __repr__(self) -> str: + return "".format( + self.name, + self.version, + self.link, + ) + + def __str__(self) -> str: + return "{!r} candidate (version {} at {})".format( + self.name, + self.version, + self.link, + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/direct_url.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/direct_url.py new file mode 100644 index 0000000..92060d4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/direct_url.py @@ -0,0 +1,220 @@ +""" PEP 610 """ +import json +import re +import urllib.parse +from typing import Any, Dict, Iterable, Optional, Type, TypeVar, Union + +__all__ = [ + "DirectUrl", + "DirectUrlValidationError", + "DirInfo", + "ArchiveInfo", + "VcsInfo", +] + +T = TypeVar("T") + +DIRECT_URL_METADATA_NAME = "direct_url.json" +ENV_VAR_RE = re.compile(r"^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$") + + +class DirectUrlValidationError(Exception): + pass + + +def _get( + d: Dict[str, Any], expected_type: Type[T], key: str, default: Optional[T] = None +) -> Optional[T]: + """Get value from dictionary and verify expected type.""" + if key not in d: + return default + value = d[key] + if not isinstance(value, expected_type): + raise DirectUrlValidationError( + "{!r} has unexpected type for {} (expected {})".format( + value, key, expected_type + ) + ) + return value + + +def _get_required( + d: Dict[str, Any], expected_type: Type[T], key: str, default: Optional[T] = None +) -> T: + value = _get(d, expected_type, key, default) + if value is None: + raise DirectUrlValidationError(f"{key} must have a value") + return value + + +def _exactly_one_of(infos: Iterable[Optional["InfoType"]]) -> "InfoType": + infos = [info for info in infos if info is not None] + if not infos: + raise DirectUrlValidationError( + "missing one of archive_info, dir_info, vcs_info" + ) + if len(infos) > 1: + raise DirectUrlValidationError( + "more than one of archive_info, dir_info, vcs_info" + ) + assert infos[0] is not None + return infos[0] + + +def _filter_none(**kwargs: Any) -> Dict[str, Any]: + """Make dict excluding None values.""" + return {k: v for k, v in kwargs.items() if v is not None} + + +class VcsInfo: + name = "vcs_info" + + def __init__( + self, + vcs: str, + commit_id: str, + requested_revision: Optional[str] = None, + resolved_revision: Optional[str] = None, + resolved_revision_type: Optional[str] = None, + ) -> None: + self.vcs = vcs + self.requested_revision = requested_revision + self.commit_id = commit_id + self.resolved_revision = resolved_revision + self.resolved_revision_type = resolved_revision_type + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["VcsInfo"]: + if d is None: + return None + return cls( + vcs=_get_required(d, str, "vcs"), + commit_id=_get_required(d, str, "commit_id"), + requested_revision=_get(d, str, "requested_revision"), + resolved_revision=_get(d, str, "resolved_revision"), + resolved_revision_type=_get(d, str, "resolved_revision_type"), + ) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none( + vcs=self.vcs, + requested_revision=self.requested_revision, + commit_id=self.commit_id, + resolved_revision=self.resolved_revision, + resolved_revision_type=self.resolved_revision_type, + ) + + +class ArchiveInfo: + name = "archive_info" + + def __init__( + self, + hash: Optional[str] = None, + ) -> None: + self.hash = hash + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["ArchiveInfo"]: + if d is None: + return None + return cls(hash=_get(d, str, "hash")) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none(hash=self.hash) + + +class DirInfo: + name = "dir_info" + + def __init__( + self, + editable: bool = False, + ) -> None: + self.editable = editable + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["DirInfo"]: + if d is None: + return None + return cls(editable=_get_required(d, bool, "editable", default=False)) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none(editable=self.editable or None) + + +InfoType = Union[ArchiveInfo, DirInfo, VcsInfo] + + +class DirectUrl: + def __init__( + self, + url: str, + info: InfoType, + subdirectory: Optional[str] = None, + ) -> None: + self.url = url + self.info = info + self.subdirectory = subdirectory + + def _remove_auth_from_netloc(self, netloc: str) -> str: + if "@" not in netloc: + return netloc + user_pass, netloc_no_user_pass = netloc.split("@", 1) + if ( + isinstance(self.info, VcsInfo) + and self.info.vcs == "git" + and user_pass == "git" + ): + return netloc + if ENV_VAR_RE.match(user_pass): + return netloc + return netloc_no_user_pass + + @property + def redacted_url(self) -> str: + """url with user:password part removed unless it is formed with + environment variables as specified in PEP 610, or it is ``git`` + in the case of a git URL. + """ + purl = urllib.parse.urlsplit(self.url) + netloc = self._remove_auth_from_netloc(purl.netloc) + surl = urllib.parse.urlunsplit( + (purl.scheme, netloc, purl.path, purl.query, purl.fragment) + ) + return surl + + def validate(self) -> None: + self.from_dict(self.to_dict()) + + @classmethod + def from_dict(cls, d: Dict[str, Any]) -> "DirectUrl": + return DirectUrl( + url=_get_required(d, str, "url"), + subdirectory=_get(d, str, "subdirectory"), + info=_exactly_one_of( + [ + ArchiveInfo._from_dict(_get(d, dict, "archive_info")), + DirInfo._from_dict(_get(d, dict, "dir_info")), + VcsInfo._from_dict(_get(d, dict, "vcs_info")), + ] + ), + ) + + def to_dict(self) -> Dict[str, Any]: + res = _filter_none( + url=self.redacted_url, + subdirectory=self.subdirectory, + ) + res[self.info.name] = self.info._to_dict() + return res + + @classmethod + def from_json(cls, s: str) -> "DirectUrl": + return cls.from_dict(json.loads(s)) + + def to_json(self) -> str: + return json.dumps(self.to_dict(), sort_keys=True) + + def is_local_editable(self) -> bool: + return isinstance(self.info, DirInfo) and self.info.editable diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/format_control.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/format_control.py new file mode 100644 index 0000000..db3995e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/format_control.py @@ -0,0 +1,80 @@ +from typing import FrozenSet, Optional, Set + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import CommandError + + +class FormatControl: + """Helper for managing formats from which a package can be installed.""" + + __slots__ = ["no_binary", "only_binary"] + + def __init__( + self, + no_binary: Optional[Set[str]] = None, + only_binary: Optional[Set[str]] = None, + ) -> None: + if no_binary is None: + no_binary = set() + if only_binary is None: + only_binary = set() + + self.no_binary = no_binary + self.only_binary = only_binary + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return NotImplemented + + if self.__slots__ != other.__slots__: + return False + + return all(getattr(self, k) == getattr(other, k) for k in self.__slots__) + + def __repr__(self) -> str: + return "{}({}, {})".format( + self.__class__.__name__, self.no_binary, self.only_binary + ) + + @staticmethod + def handle_mutual_excludes(value: str, target: Set[str], other: Set[str]) -> None: + if value.startswith("-"): + raise CommandError( + "--no-binary / --only-binary option requires 1 argument." + ) + new = value.split(",") + while ":all:" in new: + other.clear() + target.clear() + target.add(":all:") + del new[: new.index(":all:") + 1] + # Without a none, we want to discard everything as :all: covers it + if ":none:" not in new: + return + for name in new: + if name == ":none:": + target.clear() + continue + name = canonicalize_name(name) + other.discard(name) + target.add(name) + + def get_allowed_formats(self, canonical_name: str) -> FrozenSet[str]: + result = {"binary", "source"} + if canonical_name in self.only_binary: + result.discard("source") + elif canonical_name in self.no_binary: + result.discard("binary") + elif ":all:" in self.only_binary: + result.discard("source") + elif ":all:" in self.no_binary: + result.discard("binary") + return frozenset(result) + + def disallow_binaries(self) -> None: + self.handle_mutual_excludes( + ":all:", + self.no_binary, + self.only_binary, + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/index.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/index.py new file mode 100644 index 0000000..b94c325 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/index.py @@ -0,0 +1,28 @@ +import urllib.parse + + +class PackageIndex: + """Represents a Package Index and provides easier access to endpoints""" + + __slots__ = ["url", "netloc", "simple_url", "pypi_url", "file_storage_domain"] + + def __init__(self, url: str, file_storage_domain: str) -> None: + super().__init__() + self.url = url + self.netloc = urllib.parse.urlsplit(url).netloc + self.simple_url = self._url_for_path("simple") + self.pypi_url = self._url_for_path("pypi") + + # This is part of a temporary hack used to block installs of PyPI + # packages which depend on external urls only necessary until PyPI can + # block such packages themselves + self.file_storage_domain = file_storage_domain + + def _url_for_path(self, path: str) -> str: + return urllib.parse.urljoin(self.url, path) + + +PyPI = PackageIndex("https://pypi.org/", file_storage_domain="files.pythonhosted.org") +TestPyPI = PackageIndex( + "https://test.pypi.org/", file_storage_domain="test-files.pythonhosted.org" +) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/link.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/link.py new file mode 100644 index 0000000..6069b27 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/link.py @@ -0,0 +1,288 @@ +import functools +import logging +import os +import posixpath +import re +import urllib.parse +from typing import TYPE_CHECKING, Dict, List, NamedTuple, Optional, Tuple, Union + +from pip._internal.utils.filetypes import WHEEL_EXTENSION +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.misc import ( + redact_auth_from_url, + split_auth_from_netloc, + splitext, +) +from pip._internal.utils.models import KeyBasedCompareMixin +from pip._internal.utils.urls import path_to_url, url_to_path + +if TYPE_CHECKING: + from pip._internal.index.collector import HTMLPage + +logger = logging.getLogger(__name__) + + +_SUPPORTED_HASHES = ("sha1", "sha224", "sha384", "sha256", "sha512", "md5") + + +class Link(KeyBasedCompareMixin): + """Represents a parsed link from a Package Index's simple URL""" + + __slots__ = [ + "_parsed_url", + "_url", + "comes_from", + "requires_python", + "yanked_reason", + "cache_link_parsing", + ] + + def __init__( + self, + url: str, + comes_from: Optional[Union[str, "HTMLPage"]] = None, + requires_python: Optional[str] = None, + yanked_reason: Optional[str] = None, + cache_link_parsing: bool = True, + ) -> None: + """ + :param url: url of the resource pointed to (href of the link) + :param comes_from: instance of HTMLPage where the link was found, + or string. + :param requires_python: String containing the `Requires-Python` + metadata field, specified in PEP 345. This may be specified by + a data-requires-python attribute in the HTML link tag, as + described in PEP 503. + :param yanked_reason: the reason the file has been yanked, if the + file has been yanked, or None if the file hasn't been yanked. + This is the value of the "data-yanked" attribute, if present, in + a simple repository HTML link. If the file has been yanked but + no reason was provided, this should be the empty string. See + PEP 592 for more information and the specification. + :param cache_link_parsing: A flag that is used elsewhere to determine + whether resources retrieved from this link + should be cached. PyPI index urls should + generally have this set to False, for + example. + """ + + # url can be a UNC windows share + if url.startswith("\\\\"): + url = path_to_url(url) + + self._parsed_url = urllib.parse.urlsplit(url) + # Store the url as a private attribute to prevent accidentally + # trying to set a new value. + self._url = url + + self.comes_from = comes_from + self.requires_python = requires_python if requires_python else None + self.yanked_reason = yanked_reason + + super().__init__(key=url, defining_class=Link) + + self.cache_link_parsing = cache_link_parsing + + def __str__(self) -> str: + if self.requires_python: + rp = f" (requires-python:{self.requires_python})" + else: + rp = "" + if self.comes_from: + return "{} (from {}){}".format( + redact_auth_from_url(self._url), self.comes_from, rp + ) + else: + return redact_auth_from_url(str(self._url)) + + def __repr__(self) -> str: + return f"" + + @property + def url(self) -> str: + return self._url + + @property + def filename(self) -> str: + path = self.path.rstrip("/") + name = posixpath.basename(path) + if not name: + # Make sure we don't leak auth information if the netloc + # includes a username and password. + netloc, user_pass = split_auth_from_netloc(self.netloc) + return netloc + + name = urllib.parse.unquote(name) + assert name, f"URL {self._url!r} produced no filename" + return name + + @property + def file_path(self) -> str: + return url_to_path(self.url) + + @property + def scheme(self) -> str: + return self._parsed_url.scheme + + @property + def netloc(self) -> str: + """ + This can contain auth information. + """ + return self._parsed_url.netloc + + @property + def path(self) -> str: + return urllib.parse.unquote(self._parsed_url.path) + + def splitext(self) -> Tuple[str, str]: + return splitext(posixpath.basename(self.path.rstrip("/"))) + + @property + def ext(self) -> str: + return self.splitext()[1] + + @property + def url_without_fragment(self) -> str: + scheme, netloc, path, query, fragment = self._parsed_url + return urllib.parse.urlunsplit((scheme, netloc, path, query, "")) + + _egg_fragment_re = re.compile(r"[#&]egg=([^&]*)") + + @property + def egg_fragment(self) -> Optional[str]: + match = self._egg_fragment_re.search(self._url) + if not match: + return None + return match.group(1) + + _subdirectory_fragment_re = re.compile(r"[#&]subdirectory=([^&]*)") + + @property + def subdirectory_fragment(self) -> Optional[str]: + match = self._subdirectory_fragment_re.search(self._url) + if not match: + return None + return match.group(1) + + _hash_re = re.compile( + r"({choices})=([a-f0-9]+)".format(choices="|".join(_SUPPORTED_HASHES)) + ) + + @property + def hash(self) -> Optional[str]: + match = self._hash_re.search(self._url) + if match: + return match.group(2) + return None + + @property + def hash_name(self) -> Optional[str]: + match = self._hash_re.search(self._url) + if match: + return match.group(1) + return None + + @property + def show_url(self) -> str: + return posixpath.basename(self._url.split("#", 1)[0].split("?", 1)[0]) + + @property + def is_file(self) -> bool: + return self.scheme == "file" + + def is_existing_dir(self) -> bool: + return self.is_file and os.path.isdir(self.file_path) + + @property + def is_wheel(self) -> bool: + return self.ext == WHEEL_EXTENSION + + @property + def is_vcs(self) -> bool: + from pip._internal.vcs import vcs + + return self.scheme in vcs.all_schemes + + @property + def is_yanked(self) -> bool: + return self.yanked_reason is not None + + @property + def has_hash(self) -> bool: + return self.hash_name is not None + + def is_hash_allowed(self, hashes: Optional[Hashes]) -> bool: + """ + Return True if the link has a hash and it is allowed. + """ + if hashes is None or not self.has_hash: + return False + # Assert non-None so mypy knows self.hash_name and self.hash are str. + assert self.hash_name is not None + assert self.hash is not None + + return hashes.is_hash_allowed(self.hash_name, hex_digest=self.hash) + + +class _CleanResult(NamedTuple): + """Convert link for equivalency check. + + This is used in the resolver to check whether two URL-specified requirements + likely point to the same distribution and can be considered equivalent. This + equivalency logic avoids comparing URLs literally, which can be too strict + (e.g. "a=1&b=2" vs "b=2&a=1") and produce conflicts unexpecting to users. + + Currently this does three things: + + 1. Drop the basic auth part. This is technically wrong since a server can + serve different content based on auth, but if it does that, it is even + impossible to guarantee two URLs without auth are equivalent, since + the user can input different auth information when prompted. So the + practical solution is to assume the auth doesn't affect the response. + 2. Parse the query to avoid the ordering issue. Note that ordering under the + same key in the query are NOT cleaned; i.e. "a=1&a=2" and "a=2&a=1" are + still considered different. + 3. Explicitly drop most of the fragment part, except ``subdirectory=`` and + hash values, since it should have no impact the downloaded content. Note + that this drops the "egg=" part historically used to denote the requested + project (and extras), which is wrong in the strictest sense, but too many + people are supplying it inconsistently to cause superfluous resolution + conflicts, so we choose to also ignore them. + """ + + parsed: urllib.parse.SplitResult + query: Dict[str, List[str]] + subdirectory: str + hashes: Dict[str, str] + + +def _clean_link(link: Link) -> _CleanResult: + parsed = link._parsed_url + netloc = parsed.netloc.rsplit("@", 1)[-1] + # According to RFC 8089, an empty host in file: means localhost. + if parsed.scheme == "file" and not netloc: + netloc = "localhost" + fragment = urllib.parse.parse_qs(parsed.fragment) + if "egg" in fragment: + logger.debug("Ignoring egg= fragment in %s", link) + try: + # If there are multiple subdirectory values, use the first one. + # This matches the behavior of Link.subdirectory_fragment. + subdirectory = fragment["subdirectory"][0] + except (IndexError, KeyError): + subdirectory = "" + # If there are multiple hash values under the same algorithm, use the + # first one. This matches the behavior of Link.hash_value. + hashes = {k: fragment[k][0] for k in _SUPPORTED_HASHES if k in fragment} + return _CleanResult( + parsed=parsed._replace(netloc=netloc, query="", fragment=""), + query=urllib.parse.parse_qs(parsed.query), + subdirectory=subdirectory, + hashes=hashes, + ) + + +@functools.lru_cache(maxsize=None) +def links_equivalent(link1: Link, link2: Link) -> bool: + return _clean_link(link1) == _clean_link(link2) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/scheme.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/scheme.py new file mode 100644 index 0000000..f51190a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/scheme.py @@ -0,0 +1,31 @@ +""" +For types associated with installation schemes. + +For a general overview of available schemes and their context, see +https://docs.python.org/3/install/index.html#alternate-installation. +""" + + +SCHEME_KEYS = ["platlib", "purelib", "headers", "scripts", "data"] + + +class Scheme: + """A Scheme holds paths which are used as the base directories for + artifacts associated with a Python package. + """ + + __slots__ = SCHEME_KEYS + + def __init__( + self, + platlib: str, + purelib: str, + headers: str, + scripts: str, + data: str, + ) -> None: + self.platlib = platlib + self.purelib = purelib + self.headers = headers + self.scripts = scripts + self.data = data diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/search_scope.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/search_scope.py new file mode 100644 index 0000000..e4e54c2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/search_scope.py @@ -0,0 +1,129 @@ +import itertools +import logging +import os +import posixpath +import urllib.parse +from typing import List + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.models.index import PyPI +from pip._internal.utils.compat import has_tls +from pip._internal.utils.misc import normalize_path, redact_auth_from_url + +logger = logging.getLogger(__name__) + + +class SearchScope: + + """ + Encapsulates the locations that pip is configured to search. + """ + + __slots__ = ["find_links", "index_urls"] + + @classmethod + def create( + cls, + find_links: List[str], + index_urls: List[str], + ) -> "SearchScope": + """ + Create a SearchScope object after normalizing the `find_links`. + """ + # Build find_links. If an argument starts with ~, it may be + # a local file relative to a home directory. So try normalizing + # it and if it exists, use the normalized version. + # This is deliberately conservative - it might be fine just to + # blindly normalize anything starting with a ~... + built_find_links: List[str] = [] + for link in find_links: + if link.startswith("~"): + new_link = normalize_path(link) + if os.path.exists(new_link): + link = new_link + built_find_links.append(link) + + # If we don't have TLS enabled, then WARN if anyplace we're looking + # relies on TLS. + if not has_tls(): + for link in itertools.chain(index_urls, built_find_links): + parsed = urllib.parse.urlparse(link) + if parsed.scheme == "https": + logger.warning( + "pip is configured with locations that require " + "TLS/SSL, however the ssl module in Python is not " + "available." + ) + break + + return cls( + find_links=built_find_links, + index_urls=index_urls, + ) + + def __init__( + self, + find_links: List[str], + index_urls: List[str], + ) -> None: + self.find_links = find_links + self.index_urls = index_urls + + def get_formatted_locations(self) -> str: + lines = [] + redacted_index_urls = [] + if self.index_urls and self.index_urls != [PyPI.simple_url]: + for url in self.index_urls: + + redacted_index_url = redact_auth_from_url(url) + + # Parse the URL + purl = urllib.parse.urlsplit(redacted_index_url) + + # URL is generally invalid if scheme and netloc is missing + # there are issues with Python and URL parsing, so this test + # is a bit crude. See bpo-20271, bpo-23505. Python doesn't + # always parse invalid URLs correctly - it should raise + # exceptions for malformed URLs + if not purl.scheme and not purl.netloc: + logger.warning( + 'The index url "%s" seems invalid, please provide a scheme.', + redacted_index_url, + ) + + redacted_index_urls.append(redacted_index_url) + + lines.append( + "Looking in indexes: {}".format(", ".join(redacted_index_urls)) + ) + + if self.find_links: + lines.append( + "Looking in links: {}".format( + ", ".join(redact_auth_from_url(url) for url in self.find_links) + ) + ) + return "\n".join(lines) + + def get_index_urls_locations(self, project_name: str) -> List[str]: + """Returns the locations found via self.index_urls + + Checks the url_name on the main (first in the list) index and + use this url_name to produce all locations + """ + + def mkurl_pypi_url(url: str) -> str: + loc = posixpath.join( + url, urllib.parse.quote(canonicalize_name(project_name)) + ) + # For maximum compatibility with easy_install, ensure the path + # ends in a trailing slash. Although this isn't in the spec + # (and PyPI can handle it without the slash) some other index + # implementations might break if they relied on easy_install's + # behavior. + if not loc.endswith("/"): + loc = loc + "/" + return loc + + return [mkurl_pypi_url(url) for url in self.index_urls] diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/selection_prefs.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/selection_prefs.py new file mode 100644 index 0000000..977bc4c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/selection_prefs.py @@ -0,0 +1,51 @@ +from typing import Optional + +from pip._internal.models.format_control import FormatControl + + +class SelectionPreferences: + """ + Encapsulates the candidate selection preferences for downloading + and installing files. + """ + + __slots__ = [ + "allow_yanked", + "allow_all_prereleases", + "format_control", + "prefer_binary", + "ignore_requires_python", + ] + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + def __init__( + self, + allow_yanked: bool, + allow_all_prereleases: bool = False, + format_control: Optional[FormatControl] = None, + prefer_binary: bool = False, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """Create a SelectionPreferences object. + + :param allow_yanked: Whether files marked as yanked (in the sense + of PEP 592) are permitted to be candidates for install. + :param format_control: A FormatControl object or None. Used to control + the selection of source packages / binary packages when consulting + the index and links. + :param prefer_binary: Whether to prefer an old, but valid, binary + dist over a new source dist. + :param ignore_requires_python: Whether to ignore incompatible + "Requires-Python" values in links. Defaults to False. + """ + if ignore_requires_python is None: + ignore_requires_python = False + + self.allow_yanked = allow_yanked + self.allow_all_prereleases = allow_all_prereleases + self.format_control = format_control + self.prefer_binary = prefer_binary + self.ignore_requires_python = ignore_requires_python diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/target_python.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/target_python.py new file mode 100644 index 0000000..744bd7e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/target_python.py @@ -0,0 +1,110 @@ +import sys +from typing import List, Optional, Tuple + +from pip._vendor.packaging.tags import Tag + +from pip._internal.utils.compatibility_tags import get_supported, version_info_to_nodot +from pip._internal.utils.misc import normalize_version_info + + +class TargetPython: + + """ + Encapsulates the properties of a Python interpreter one is targeting + for a package install, download, etc. + """ + + __slots__ = [ + "_given_py_version_info", + "abis", + "implementation", + "platforms", + "py_version", + "py_version_info", + "_valid_tags", + ] + + def __init__( + self, + platforms: Optional[List[str]] = None, + py_version_info: Optional[Tuple[int, ...]] = None, + abis: Optional[List[str]] = None, + implementation: Optional[str] = None, + ) -> None: + """ + :param platforms: A list of strings or None. If None, searches for + packages that are supported by the current system. Otherwise, will + find packages that can be built on the platforms passed in. These + packages will only be downloaded for distribution: they will + not be built locally. + :param py_version_info: An optional tuple of ints representing the + Python version information to use (e.g. `sys.version_info[:3]`). + This can have length 1, 2, or 3 when provided. + :param abis: A list of strings or None. This is passed to + compatibility_tags.py's get_supported() function as is. + :param implementation: A string or None. This is passed to + compatibility_tags.py's get_supported() function as is. + """ + # Store the given py_version_info for when we call get_supported(). + self._given_py_version_info = py_version_info + + if py_version_info is None: + py_version_info = sys.version_info[:3] + else: + py_version_info = normalize_version_info(py_version_info) + + py_version = ".".join(map(str, py_version_info[:2])) + + self.abis = abis + self.implementation = implementation + self.platforms = platforms + self.py_version = py_version + self.py_version_info = py_version_info + + # This is used to cache the return value of get_tags(). + self._valid_tags: Optional[List[Tag]] = None + + def format_given(self) -> str: + """ + Format the given, non-None attributes for display. + """ + display_version = None + if self._given_py_version_info is not None: + display_version = ".".join( + str(part) for part in self._given_py_version_info + ) + + key_values = [ + ("platforms", self.platforms), + ("version_info", display_version), + ("abis", self.abis), + ("implementation", self.implementation), + ] + return " ".join( + f"{key}={value!r}" for key, value in key_values if value is not None + ) + + def get_tags(self) -> List[Tag]: + """ + Return the supported PEP 425 tags to check wheel candidates against. + + The tags are returned in order of preference (most preferred first). + """ + if self._valid_tags is None: + # Pass versions=None if no py_version_info was given since + # versions=None uses special default logic. + py_version_info = self._given_py_version_info + if py_version_info is None: + version = None + else: + version = version_info_to_nodot(py_version_info) + + tags = get_supported( + version=version, + platforms=self.platforms, + abis=self.abis, + impl=self.implementation, + ) + self._valid_tags = tags + + return self._valid_tags diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/models/wheel.py b/.venv/lib/python3.9/site-packages/pip/_internal/models/wheel.py new file mode 100644 index 0000000..e091612 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/models/wheel.py @@ -0,0 +1,89 @@ +"""Represents a wheel file and provides access to the various parts of the +name that have meaning. +""" +import re +from typing import Dict, Iterable, List + +from pip._vendor.packaging.tags import Tag + +from pip._internal.exceptions import InvalidWheelFilename + + +class Wheel: + """A wheel file""" + + wheel_file_re = re.compile( + r"""^(?P(?P.+?)-(?P.*?)) + ((-(?P\d[^-]*?))?-(?P.+?)-(?P.+?)-(?P.+?) + \.whl|\.dist-info)$""", + re.VERBOSE, + ) + + def __init__(self, filename: str) -> None: + """ + :raises InvalidWheelFilename: when the filename is invalid for a wheel + """ + wheel_info = self.wheel_file_re.match(filename) + if not wheel_info: + raise InvalidWheelFilename(f"{filename} is not a valid wheel filename.") + self.filename = filename + self.name = wheel_info.group("name").replace("_", "-") + # we'll assume "_" means "-" due to wheel naming scheme + # (https://github.com/pypa/pip/issues/1150) + self.version = wheel_info.group("ver").replace("_", "-") + self.build_tag = wheel_info.group("build") + self.pyversions = wheel_info.group("pyver").split(".") + self.abis = wheel_info.group("abi").split(".") + self.plats = wheel_info.group("plat").split(".") + + # All the tag combinations from this file + self.file_tags = { + Tag(x, y, z) for x in self.pyversions for y in self.abis for z in self.plats + } + + def get_formatted_file_tags(self) -> List[str]: + """Return the wheel's tags as a sorted list of strings.""" + return sorted(str(tag) for tag in self.file_tags) + + def support_index_min(self, tags: List[Tag]) -> int: + """Return the lowest index that one of the wheel's file_tag combinations + achieves in the given list of supported tags. + + For example, if there are 8 supported tags and one of the file tags + is first in the list, then return 0. + + :param tags: the PEP 425 tags to check the wheel against, in order + with most preferred first. + + :raises ValueError: If none of the wheel's file tags match one of + the supported tags. + """ + return min(tags.index(tag) for tag in self.file_tags if tag in tags) + + def find_most_preferred_tag( + self, tags: List[Tag], tag_to_priority: Dict[Tag, int] + ) -> int: + """Return the priority of the most preferred tag that one of the wheel's file + tag combinations achieves in the given list of supported tags using the given + tag_to_priority mapping, where lower priorities are more-preferred. + + This is used in place of support_index_min in some cases in order to avoid + an expensive linear scan of a large list of tags. + + :param tags: the PEP 425 tags to check the wheel against. + :param tag_to_priority: a mapping from tag to priority of that tag, where + lower is more preferred. + + :raises ValueError: If none of the wheel's file tags match one of + the supported tags. + """ + return min( + tag_to_priority[tag] for tag in self.file_tags if tag in tag_to_priority + ) + + def supported(self, tags: Iterable[Tag]) -> bool: + """Return whether the wheel is compatible with one of the given tags. + + :param tags: the PEP 425 tags to check the wheel against. + """ + return not self.file_tags.isdisjoint(tags) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/network/__init__.py new file mode 100644 index 0000000..b51bde9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/network/__init__.py @@ -0,0 +1,2 @@ +"""Contains purely network-related utilities. +""" diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59bd08bede49b2663ab4327ef2475c3c9a880fc3 GIT binary patch literal 264 zcmYk1u}%Xq42E-Es4DdxZmm#b38qR2A+fWtu|&DXaPFl^lsI=f9)X#c;FY@a2y9Ha zh=E`Ff9tbk%eL$FN{Qay_2EkD=NbO15x5hVrG!&Y$~BK_vv|F{kAW?P(x#fx&uu`S zVji{vmeIA9$rBS6y?WR*rwe0T+#BQ=F{@# O7+v*vd;acAtbPC%AWz-^ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/auth.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/auth.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d805dd4d91495454b3a2c4c7550277f6e887442d GIT binary patch literal 7496 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/cache.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/cache.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc236841e60b7d13c88026ae168964f5fa2f3133 GIT binary patch literal 2906 zcmaJ@OK%%D5GMB_$!p1$9OvCO+oCV^AtimG1&W|e&@{=x3F4qd_t3?9Nm(oJD+`T+TP&3>nmF4uR*7zgoR7Dun!v zoyEt3&Uf(2=O7sI2&2r1sYl`8jE%(fOo}=ywi4U3lag1`eLF5E6|bV(rFbcEJV&?7 z@p4l2s=8f?YsreYlB{~Gy1x|HlZMxzgje|*bDkM&nN{~K?+iD&&5VnL)t*td!dCaK z3H8>0B&^OF`-C-kWny|~nXyTlYop7zA3nVAhC$fnZj|IPPk5>V6=iA5c?nLCjV3Kt z!Yoz%Hh?M#yi%E2|(B8EeQV zCOBtq6i!EEiLbr81#6eLIryeTlZs`qenG@4{QV=_-7MklDBqE?pXZrS?X5_52SJZ> z)$Zq!AEkppFuhlQ3w&hl)-F$X+i|qj&WEa-rJuLHY0F6QPxBz$0gz-nkMcH51e^ez zcFNTt6FY6amsUP3YLWDhcUMOb3=o8h21wW;`V*pN@d46lrF;h(BZtwS2qiz0bjD=ccNU6Md`L1 zq|D7lhI1Sj9>E{=xm3~(q#JeSW`jWD;yewuV$NFH6lqhwxA}t*nb0UN2z0hMk5EH& z0nBNDe2%tq9R?-3No<2Uv`WPpXukpkh8-W7g5U%)jCcm4p2;m{F!P!5gmfU!n7v>1 zY;J+J1Q}9h708eh^vk>g8L|XAhb@C{33L^hS$$@*8e0L4qgO(URaS@o@)O{iR|QZT zMQt&^p9r1edu6qg^V{!ly)UMMBd3v7`4FR1PPv74& z$L4`~2vx#>Bgul_1P-B-y-jkB$lF(S^}zap`5)`m$ngW+8?A;*l&!~W$K6)^I zb37hHXO4%d5RYFG4-Ef-JvI-4`Oq(o%?W*aY0ny42j#JG2)b8%zPsqNs*J7P63jAQ zW2qJ`5uF!wqv;$YBk3-lg^g*=1-hVF)wCC|`xvz@iY5x3Me|fD zOv%;Ppx4JA(Gb=Rhkj_Bh7s(-#oB=Q;m0+Hu0vyvnV~VegqR(e|AEZa)BcK2V2MR8 zXlL=%PO@DN0X#{D({7X)kGbMEV3Ao-Kr)QhPf}rO)U096LG*mTaC|?>SU<*g)%PFu zgLpPl_I;Lxpf;rvy5vm5fi$T?#0X-&X<=bg&uH!{bA_FWFQ@n0eK~{}At(tYq HpzF@RngFH- literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/download.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/download.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2698847e95a4e803a7b6fa967821cde9905a67be GIT binary patch literal 5495 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 J)8+BA{{j@NQl0<+ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5a6f7bffbc8834eeb2876d6f4ab5a656c98c76cc GIT binary patch literal 8396 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/utils.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ed3db9ea73ed82ae8af1aef8d6c9d46221572a0 GIT binary patch literal 1442 zcmZ8h&u<$=6rP#=VaIW7E23!{RM@Mf#@kXMB~^tQ5<@DGk&=c|OLVo_nZy&XXE!sm z3AUUI^n_FiA#N>FIdb7o;J}|T9J#=q69>whbzDWvYTx{NZ)V>2eKYaWQVl`*_J_{N z?@fgMu$`;LgU$o^l?HQwD55w;BizR$(kIyVN$QN;zB}^zUfFk2e^lvLpzTtR<9?N4 zw!jvS$PL75)W46IM=P}YlF$WOd*=2RnR|qp$Lfr*r5lJYzI14vEO;+BtTPEC%iEvz9(8+hOmwBp*R0&};K z@a@@+tL(NKS=|kyx|iFA(*o1Z)L*{tNV@cY(!w)VmV%J*`5_FJ;W? zWz53=W2RXCsw-1GMYQ&ue2pmroELirO}s)Mt#3?fTxIJU8}Dzf-{Idu;{0zglV-4; za=eF0{#UlJ@%PAV{+~R98@icB_CA-%W|P~ED~m6ja4R$cR1Ee z8J{xXf|=z5!EIxw?3NpuMF`P_ib@9uwv#?U-ge{yRHiY|I**toHX5m8*?_^Hk-P@g zKPnt#BNp;}s8o^XnbhGSSA+BTgfSf!IghwFk0p(cc*>%~STP!Q&X_n0Q+^ocV?D^k z-OgsHxMu5loDAb*rox=(Aq0XBMVy9Wrm?WlJXM{1Y+5qribViTG&}fBIEs1)48kt1 zdjz*|9lu33yRNmwb+Nn-9*|WXDpN}ag&0PPPnfhfGy!Ul&A-%yO*AwCrFUnh&mt# zcXIb*4p0PfAlYfblvcs~YTXKQnVrF%3G{#kG}duY9#?ff0>&FNDuFJ5Na$YMHI9tW zjjuFtJ~E9httCG!G@H>2*DR)&dCOJE#(3pwC51DyVn>^EB}KE%Hf{EH2Dyazm|Q1+ z*4FB{?$iNhg5|p~({37Hk8`-=(gG+ga{ae~z)l3Y(M)#c$#q7cx>QNmy4hFHtd?$b zo;&O-`)0r!qDuKmd;g6CIhke@#X@8tQac+(C6UH~NC{6WDi3lc8LLcLW>mcon-(d9 ZX8}@K2D40Bq<(GHY275R38dlw`yX1ze)#|Z literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..181ce6fd0d1157738e3d886fe97bfc4bf7656189 GIT binary patch literal 2063 zcmZuyOOM+&5GM7O{8;DxY6=5EfjVgH0J*e4Q50C@(X?GG8Utx`VPuiJmZMildUtJT zbI1k_P@uOSbJ)EU2+&`|Yft?P=_4IV&L(X`nE&8$LY2P9EX#)NMpP>OVu&XZGy$?971~o~6b;GzgYg z_Og_hahgnqV;<$AEV%3^S(&no__xl;%^UX)CA z$hQ#}(EiyJr%0~hs(Civb5;5J4W{kGKwEX+f0ngq#VIQ$#@>6qr73?s7ceXT<|pr>pXPffk0*(x3Pzp zm;RsT;Tt@-X4k;rdcja1bPB9g?lj723b?g7dpu`Cl1V`q%H3gnQV7O7;2rDSylEO4 z-PfUuUqMJzVTlh6(Y=eF;tI`-3Reb&3xJ|6XWy3Q%sR9y8*=9?KZO!D61?w%pEGkS zr!p&7v-&4%-;-YD9YD4#3o`3h=rE|fS?dVjha6i-wimx(wC`iIyjuCQj(DQqC%cDh z)Ykf}S2;%}Mo-aw^Z?$y??3VLpm|86K zp2#GQQq^ki7!nth4FY~vZ+A(H545>BH59)ExfO z`+epzNku~ Optional[AuthInfo]: + """Return the tuple auth for a given url from keyring.""" + global keyring + if not url or not keyring: + return None + + try: + try: + get_credential = keyring.get_credential + except AttributeError: + pass + else: + logger.debug("Getting credentials from keyring for %s", url) + cred = get_credential(url, username) + if cred is not None: + return cred.username, cred.password + return None + + if username: + logger.debug("Getting password from keyring for %s", url) + password = keyring.get_password(url, username) + if password: + return username, password + + except Exception as exc: + logger.warning( + "Keyring is skipped due to an exception: %s", + str(exc), + ) + keyring = None # type: ignore[assignment] + return None + + +class MultiDomainBasicAuth(AuthBase): + def __init__( + self, prompting: bool = True, index_urls: Optional[List[str]] = None + ) -> None: + self.prompting = prompting + self.index_urls = index_urls + self.passwords: Dict[str, AuthInfo] = {} + # When the user is prompted to enter credentials and keyring is + # available, we will offer to save them. If the user accepts, + # this value is set to the credentials they entered. After the + # request authenticates, the caller should call + # ``save_credentials`` to save these. + self._credentials_to_save: Optional[Credentials] = None + + def _get_index_url(self, url: str) -> Optional[str]: + """Return the original index URL matching the requested URL. + + Cached or dynamically generated credentials may work against + the original index URL rather than just the netloc. + + The provided url should have had its username and password + removed already. If the original index url had credentials then + they will be included in the return value. + + Returns None if no matching index was found, or if --no-index + was specified by the user. + """ + if not url or not self.index_urls: + return None + + for u in self.index_urls: + prefix = remove_auth_from_url(u).rstrip("/") + "/" + if url.startswith(prefix): + return u + return None + + def _get_new_credentials( + self, + original_url: str, + allow_netrc: bool = True, + allow_keyring: bool = False, + ) -> AuthInfo: + """Find and return credentials for the specified URL.""" + # Split the credentials and netloc from the url. + url, netloc, url_user_password = split_auth_netloc_from_url( + original_url, + ) + + # Start with the credentials embedded in the url + username, password = url_user_password + if username is not None and password is not None: + logger.debug("Found credentials in url for %s", netloc) + return url_user_password + + # Find a matching index url for this request + index_url = self._get_index_url(url) + if index_url: + # Split the credentials from the url. + index_info = split_auth_netloc_from_url(index_url) + if index_info: + index_url, _, index_url_user_password = index_info + logger.debug("Found index url %s", index_url) + + # If an index URL was found, try its embedded credentials + if index_url and index_url_user_password[0] is not None: + username, password = index_url_user_password + if username is not None and password is not None: + logger.debug("Found credentials in index url for %s", netloc) + return index_url_user_password + + # Get creds from netrc if we still don't have them + if allow_netrc: + netrc_auth = get_netrc_auth(original_url) + if netrc_auth: + logger.debug("Found credentials in netrc for %s", netloc) + return netrc_auth + + # If we don't have a password and keyring is available, use it. + if allow_keyring: + # The index url is more specific than the netloc, so try it first + # fmt: off + kr_auth = ( + get_keyring_auth(index_url, username) or + get_keyring_auth(netloc, username) + ) + # fmt: on + if kr_auth: + logger.debug("Found credentials in keyring for %s", netloc) + return kr_auth + + return username, password + + def _get_url_and_credentials( + self, original_url: str + ) -> Tuple[str, Optional[str], Optional[str]]: + """Return the credentials to use for the provided URL. + + If allowed, netrc and keyring may be used to obtain the + correct credentials. + + Returns (url_without_credentials, username, password). Note + that even if the original URL contains credentials, this + function may return a different username and password. + """ + url, netloc, _ = split_auth_netloc_from_url(original_url) + + # Try to get credentials from original url + username, password = self._get_new_credentials(original_url) + + # If credentials not found, use any stored credentials for this netloc. + # Do this if either the username or the password is missing. + # This accounts for the situation in which the user has specified + # the username in the index url, but the password comes from keyring. + if (username is None or password is None) and netloc in self.passwords: + un, pw = self.passwords[netloc] + # It is possible that the cached credentials are for a different username, + # in which case the cache should be ignored. + if username is None or username == un: + username, password = un, pw + + if username is not None or password is not None: + # Convert the username and password if they're None, so that + # this netloc will show up as "cached" in the conditional above. + # Further, HTTPBasicAuth doesn't accept None, so it makes sense to + # cache the value that is going to be used. + username = username or "" + password = password or "" + + # Store any acquired credentials. + self.passwords[netloc] = (username, password) + + assert ( + # Credentials were found + (username is not None and password is not None) + # Credentials were not found + or (username is None and password is None) + ), f"Could not load credentials from url: {original_url}" + + return url, username, password + + def __call__(self, req: Request) -> Request: + # Get credentials for this request + url, username, password = self._get_url_and_credentials(req.url) + + # Set the url of the request to the url without any credentials + req.url = url + + if username is not None and password is not None: + # Send the basic auth with this request + req = HTTPBasicAuth(username, password)(req) + + # Attach a hook to handle 401 responses + req.register_hook("response", self.handle_401) + + return req + + # Factored out to allow for easy patching in tests + def _prompt_for_password( + self, netloc: str + ) -> Tuple[Optional[str], Optional[str], bool]: + username = ask_input(f"User for {netloc}: ") + if not username: + return None, None, False + auth = get_keyring_auth(netloc, username) + if auth and auth[0] is not None and auth[1] is not None: + return auth[0], auth[1], False + password = ask_password("Password: ") + return username, password, True + + # Factored out to allow for easy patching in tests + def _should_save_password_to_keyring(self) -> bool: + if not keyring: + return False + return ask("Save credentials to keyring [y/N]: ", ["y", "n"]) == "y" + + def handle_401(self, resp: Response, **kwargs: Any) -> Response: + # We only care about 401 responses, anything else we want to just + # pass through the actual response + if resp.status_code != 401: + return resp + + # We are not able to prompt the user so simply return the response + if not self.prompting: + return resp + + parsed = urllib.parse.urlparse(resp.url) + + # Query the keyring for credentials: + username, password = self._get_new_credentials( + resp.url, + allow_netrc=False, + allow_keyring=True, + ) + + # Prompt the user for a new username and password + save = False + if not username and not password: + username, password, save = self._prompt_for_password(parsed.netloc) + + # Store the new username and password to use for future requests + self._credentials_to_save = None + if username is not None and password is not None: + self.passwords[parsed.netloc] = (username, password) + + # Prompt to save the password to keyring + if save and self._should_save_password_to_keyring(): + self._credentials_to_save = (parsed.netloc, username, password) + + # Consume content and release the original connection to allow our new + # request to reuse the same one. + resp.content + resp.raw.release_conn() + + # Add our new username and password to the request + req = HTTPBasicAuth(username or "", password or "")(resp.request) + req.register_hook("response", self.warn_on_401) + + # On successful request, save the credentials that were used to + # keyring. (Note that if the user responded "no" above, this member + # is not set and nothing will be saved.) + if self._credentials_to_save: + req.register_hook("response", self.save_credentials) + + # Send our new request + new_resp = resp.connection.send(req, **kwargs) + new_resp.history.append(resp) + + return new_resp + + def warn_on_401(self, resp: Response, **kwargs: Any) -> None: + """Response callback to warn about incorrect credentials.""" + if resp.status_code == 401: + logger.warning( + "401 Error, Credentials not correct for %s", + resp.request.url, + ) + + def save_credentials(self, resp: Response, **kwargs: Any) -> None: + """Response callback to save credentials on success.""" + assert keyring is not None, "should never reach here without keyring" + if not keyring: + return + + creds = self._credentials_to_save + self._credentials_to_save = None + if creds and resp.status_code < 400: + try: + logger.info("Saving credentials to keyring") + keyring.set_password(*creds) + except Exception: + logger.exception("Failed to save credentials") diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/cache.py b/.venv/lib/python3.9/site-packages/pip/_internal/network/cache.py new file mode 100644 index 0000000..2d915e6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/network/cache.py @@ -0,0 +1,69 @@ +"""HTTP cache implementation. +""" + +import os +from contextlib import contextmanager +from typing import Iterator, Optional + +from pip._vendor.cachecontrol.cache import BaseCache +from pip._vendor.cachecontrol.caches import FileCache +from pip._vendor.requests.models import Response + +from pip._internal.utils.filesystem import adjacent_tmp_file, replace +from pip._internal.utils.misc import ensure_dir + + +def is_from_cache(response: Response) -> bool: + return getattr(response, "from_cache", False) + + +@contextmanager +def suppressed_cache_errors() -> Iterator[None]: + """If we can't access the cache then we can just skip caching and process + requests as if caching wasn't enabled. + """ + try: + yield + except OSError: + pass + + +class SafeFileCache(BaseCache): + """ + A file based cache which is safe to use even when the target directory may + not be accessible or writable. + """ + + def __init__(self, directory: str) -> None: + assert directory is not None, "Cache directory must not be None." + super().__init__() + self.directory = directory + + def _get_cache_path(self, name: str) -> str: + # From cachecontrol.caches.file_cache.FileCache._fn, brought into our + # class for backwards-compatibility and to avoid using a non-public + # method. + hashed = FileCache.encode(name) + parts = list(hashed[:5]) + [hashed] + return os.path.join(self.directory, *parts) + + def get(self, key: str) -> Optional[bytes]: + path = self._get_cache_path(key) + with suppressed_cache_errors(): + with open(path, "rb") as f: + return f.read() + + def set(self, key: str, value: bytes) -> None: + path = self._get_cache_path(key) + with suppressed_cache_errors(): + ensure_dir(os.path.dirname(path)) + + with adjacent_tmp_file(path) as f: + f.write(value) + + replace(f.name, path) + + def delete(self, key: str) -> None: + path = self._get_cache_path(key) + with suppressed_cache_errors(): + os.remove(path) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/download.py b/.venv/lib/python3.9/site-packages/pip/_internal/network/download.py new file mode 100644 index 0000000..47af547 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/network/download.py @@ -0,0 +1,184 @@ +"""Download files with progress indicators. +""" +import cgi +import logging +import mimetypes +import os +from typing import Iterable, Optional, Tuple + +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response + +from pip._internal.cli.progress_bars import DownloadProgressProvider +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.models.index import PyPI +from pip._internal.models.link import Link +from pip._internal.network.cache import is_from_cache +from pip._internal.network.session import PipSession +from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks +from pip._internal.utils.misc import format_size, redact_auth_from_url, splitext + +logger = logging.getLogger(__name__) + + +def _get_http_response_size(resp: Response) -> Optional[int]: + try: + return int(resp.headers["content-length"]) + except (ValueError, KeyError, TypeError): + return None + + +def _prepare_download( + resp: Response, + link: Link, + progress_bar: str, +) -> Iterable[bytes]: + total_length = _get_http_response_size(resp) + + if link.netloc == PyPI.file_storage_domain: + url = link.show_url + else: + url = link.url_without_fragment + + logged_url = redact_auth_from_url(url) + + if total_length: + logged_url = "{} ({})".format(logged_url, format_size(total_length)) + + if is_from_cache(resp): + logger.info("Using cached %s", logged_url) + else: + logger.info("Downloading %s", logged_url) + + if logger.getEffectiveLevel() > logging.INFO: + show_progress = False + elif is_from_cache(resp): + show_progress = False + elif not total_length: + show_progress = True + elif total_length > (40 * 1000): + show_progress = True + else: + show_progress = False + + chunks = response_chunks(resp, CONTENT_CHUNK_SIZE) + + if not show_progress: + return chunks + + return DownloadProgressProvider(progress_bar, max=total_length)(chunks) + + +def sanitize_content_filename(filename: str) -> str: + """ + Sanitize the "filename" value from a Content-Disposition header. + """ + return os.path.basename(filename) + + +def parse_content_disposition(content_disposition: str, default_filename: str) -> str: + """ + Parse the "filename" value from a Content-Disposition header, and + return the default filename if the result is empty. + """ + _type, params = cgi.parse_header(content_disposition) + filename = params.get("filename") + if filename: + # We need to sanitize the filename to prevent directory traversal + # in case the filename contains ".." path parts. + filename = sanitize_content_filename(filename) + return filename or default_filename + + +def _get_http_response_filename(resp: Response, link: Link) -> str: + """Get an ideal filename from the given HTTP response, falling back to + the link filename if not provided. + """ + filename = link.filename # fallback + # Have a look at the Content-Disposition header for a better guess + content_disposition = resp.headers.get("content-disposition") + if content_disposition: + filename = parse_content_disposition(content_disposition, filename) + ext: Optional[str] = splitext(filename)[1] + if not ext: + ext = mimetypes.guess_extension(resp.headers.get("content-type", "")) + if ext: + filename += ext + if not ext and link.url != resp.url: + ext = os.path.splitext(resp.url)[1] + if ext: + filename += ext + return filename + + +def _http_get_download(session: PipSession, link: Link) -> Response: + target_url = link.url.split("#", 1)[0] + resp = session.get(target_url, headers=HEADERS, stream=True) + raise_for_status(resp) + return resp + + +class Downloader: + def __init__( + self, + session: PipSession, + progress_bar: str, + ) -> None: + self._session = session + self._progress_bar = progress_bar + + def __call__(self, link: Link, location: str) -> Tuple[str, str]: + """Download the file given by link into location.""" + try: + resp = _http_get_download(self._session, link) + except NetworkConnectionError as e: + assert e.response is not None + logger.critical( + "HTTP error %s while getting %s", e.response.status_code, link + ) + raise + + filename = _get_http_response_filename(resp, link) + filepath = os.path.join(location, filename) + + chunks = _prepare_download(resp, link, self._progress_bar) + with open(filepath, "wb") as content_file: + for chunk in chunks: + content_file.write(chunk) + content_type = resp.headers.get("Content-Type", "") + return filepath, content_type + + +class BatchDownloader: + def __init__( + self, + session: PipSession, + progress_bar: str, + ) -> None: + self._session = session + self._progress_bar = progress_bar + + def __call__( + self, links: Iterable[Link], location: str + ) -> Iterable[Tuple[Link, Tuple[str, str]]]: + """Download the files given by links into location.""" + for link in links: + try: + resp = _http_get_download(self._session, link) + except NetworkConnectionError as e: + assert e.response is not None + logger.critical( + "HTTP error %s while getting %s", + e.response.status_code, + link, + ) + raise + + filename = _get_http_response_filename(resp, link) + filepath = os.path.join(location, filename) + + chunks = _prepare_download(resp, link, self._progress_bar) + with open(filepath, "wb") as content_file: + for chunk in chunks: + content_file.write(chunk) + content_type = resp.headers.get("Content-Type", "") + yield link, (filepath, content_type) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/lazy_wheel.py b/.venv/lib/python3.9/site-packages/pip/_internal/network/lazy_wheel.py new file mode 100644 index 0000000..c9e44d5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/network/lazy_wheel.py @@ -0,0 +1,210 @@ +"""Lazy ZIP over HTTP""" + +__all__ = ["HTTPRangeRequestUnsupported", "dist_from_wheel_url"] + +from bisect import bisect_left, bisect_right +from contextlib import contextmanager +from tempfile import NamedTemporaryFile +from typing import Any, Dict, Iterator, List, Optional, Tuple +from zipfile import BadZipfile, ZipFile + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response + +from pip._internal.metadata import BaseDistribution, MemoryWheel, get_wheel_distribution +from pip._internal.network.session import PipSession +from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks + + +class HTTPRangeRequestUnsupported(Exception): + pass + + +def dist_from_wheel_url(name: str, url: str, session: PipSession) -> BaseDistribution: + """Return a distribution object from the given wheel URL. + + This uses HTTP range requests to only fetch the potion of the wheel + containing metadata, just enough for the object to be constructed. + If such requests are not supported, HTTPRangeRequestUnsupported + is raised. + """ + with LazyZipOverHTTP(url, session) as zf: + # For read-only ZIP files, ZipFile only needs methods read, + # seek, seekable and tell, not the whole IO protocol. + wheel = MemoryWheel(zf.name, zf) # type: ignore + # After context manager exit, wheel.name + # is an invalid file by intention. + return get_wheel_distribution(wheel, canonicalize_name(name)) + + +class LazyZipOverHTTP: + """File-like object mapped to a ZIP file over HTTP. + + This uses HTTP range requests to lazily fetch the file's content, + which is supposed to be fed to ZipFile. If such requests are not + supported by the server, raise HTTPRangeRequestUnsupported + during initialization. + """ + + def __init__( + self, url: str, session: PipSession, chunk_size: int = CONTENT_CHUNK_SIZE + ) -> None: + head = session.head(url, headers=HEADERS) + raise_for_status(head) + assert head.status_code == 200 + self._session, self._url, self._chunk_size = session, url, chunk_size + self._length = int(head.headers["Content-Length"]) + self._file = NamedTemporaryFile() + self.truncate(self._length) + self._left: List[int] = [] + self._right: List[int] = [] + if "bytes" not in head.headers.get("Accept-Ranges", "none"): + raise HTTPRangeRequestUnsupported("range request is not supported") + self._check_zip() + + @property + def mode(self) -> str: + """Opening mode, which is always rb.""" + return "rb" + + @property + def name(self) -> str: + """Path to the underlying file.""" + return self._file.name + + def seekable(self) -> bool: + """Return whether random access is supported, which is True.""" + return True + + def close(self) -> None: + """Close the file.""" + self._file.close() + + @property + def closed(self) -> bool: + """Whether the file is closed.""" + return self._file.closed + + def read(self, size: int = -1) -> bytes: + """Read up to size bytes from the object and return them. + + As a convenience, if size is unspecified or -1, + all bytes until EOF are returned. Fewer than + size bytes may be returned if EOF is reached. + """ + download_size = max(size, self._chunk_size) + start, length = self.tell(), self._length + stop = length if size < 0 else min(start + download_size, length) + start = max(0, stop - download_size) + self._download(start, stop - 1) + return self._file.read(size) + + def readable(self) -> bool: + """Return whether the file is readable, which is True.""" + return True + + def seek(self, offset: int, whence: int = 0) -> int: + """Change stream position and return the new absolute position. + + Seek to offset relative position indicated by whence: + * 0: Start of stream (the default). pos should be >= 0; + * 1: Current position - pos may be negative; + * 2: End of stream - pos usually negative. + """ + return self._file.seek(offset, whence) + + def tell(self) -> int: + """Return the current position.""" + return self._file.tell() + + def truncate(self, size: Optional[int] = None) -> int: + """Resize the stream to the given size in bytes. + + If size is unspecified resize to the current position. + The current stream position isn't changed. + + Return the new file size. + """ + return self._file.truncate(size) + + def writable(self) -> bool: + """Return False.""" + return False + + def __enter__(self) -> "LazyZipOverHTTP": + self._file.__enter__() + return self + + def __exit__(self, *exc: Any) -> Optional[bool]: + return self._file.__exit__(*exc) + + @contextmanager + def _stay(self) -> Iterator[None]: + """Return a context manager keeping the position. + + At the end of the block, seek back to original position. + """ + pos = self.tell() + try: + yield + finally: + self.seek(pos) + + def _check_zip(self) -> None: + """Check and download until the file is a valid ZIP.""" + end = self._length - 1 + for start in reversed(range(0, end, self._chunk_size)): + self._download(start, end) + with self._stay(): + try: + # For read-only ZIP files, ZipFile only needs + # methods read, seek, seekable and tell. + ZipFile(self) # type: ignore + except BadZipfile: + pass + else: + break + + def _stream_response( + self, start: int, end: int, base_headers: Dict[str, str] = HEADERS + ) -> Response: + """Return HTTP response to a range request from start to end.""" + headers = base_headers.copy() + headers["Range"] = f"bytes={start}-{end}" + # TODO: Get range requests to be correctly cached + headers["Cache-Control"] = "no-cache" + return self._session.get(self._url, headers=headers, stream=True) + + def _merge( + self, start: int, end: int, left: int, right: int + ) -> Iterator[Tuple[int, int]]: + """Return an iterator of intervals to be fetched. + + Args: + start (int): Start of needed interval + end (int): End of needed interval + left (int): Index of first overlapping downloaded data + right (int): Index after last overlapping downloaded data + """ + lslice, rslice = self._left[left:right], self._right[left:right] + i = start = min([start] + lslice[:1]) + end = max([end] + rslice[-1:]) + for j, k in zip(lslice, rslice): + if j > i: + yield i, j - 1 + i = k + 1 + if i <= end: + yield i, end + self._left[left:right], self._right[left:right] = [start], [end] + + def _download(self, start: int, end: int) -> None: + """Download bytes from start to end inclusively.""" + with self._stay(): + left = bisect_left(self._right, start) + right = bisect_right(self._left, end) + for start, end in self._merge(start, end, left, right): + response = self._stream_response(start, end) + response.raise_for_status() + self.seek(start) + for chunk in response_chunks(response, self._chunk_size): + self._file.write(chunk) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/session.py b/.venv/lib/python3.9/site-packages/pip/_internal/network/session.py new file mode 100644 index 0000000..cbe743b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/network/session.py @@ -0,0 +1,454 @@ +"""PipSession and supporting code, containing all pip-specific +network request configuration and behavior. +""" + +import email.utils +import io +import ipaddress +import json +import logging +import mimetypes +import os +import platform +import shutil +import subprocess +import sys +import urllib.parse +import warnings +from typing import Any, Dict, Iterator, List, Mapping, Optional, Sequence, Tuple, Union + +from pip._vendor import requests, urllib3 +from pip._vendor.cachecontrol import CacheControlAdapter +from pip._vendor.requests.adapters import BaseAdapter, HTTPAdapter +from pip._vendor.requests.models import PreparedRequest, Response +from pip._vendor.requests.structures import CaseInsensitiveDict +from pip._vendor.urllib3.connectionpool import ConnectionPool +from pip._vendor.urllib3.exceptions import InsecureRequestWarning + +from pip import __version__ +from pip._internal.metadata import get_default_environment +from pip._internal.models.link import Link +from pip._internal.network.auth import MultiDomainBasicAuth +from pip._internal.network.cache import SafeFileCache + +# Import ssl from compat so the initial import occurs in only one place. +from pip._internal.utils.compat import has_tls +from pip._internal.utils.glibc import libc_ver +from pip._internal.utils.misc import build_url_from_netloc, parse_netloc +from pip._internal.utils.urls import url_to_path + +logger = logging.getLogger(__name__) + +SecureOrigin = Tuple[str, str, Optional[Union[int, str]]] + + +# Ignore warning raised when using --trusted-host. +warnings.filterwarnings("ignore", category=InsecureRequestWarning) + + +SECURE_ORIGINS: List[SecureOrigin] = [ + # protocol, hostname, port + # Taken from Chrome's list of secure origins (See: http://bit.ly/1qrySKC) + ("https", "*", "*"), + ("*", "localhost", "*"), + ("*", "127.0.0.0/8", "*"), + ("*", "::1/128", "*"), + ("file", "*", None), + # ssh is always secure. + ("ssh", "*", "*"), +] + + +# These are environment variables present when running under various +# CI systems. For each variable, some CI systems that use the variable +# are indicated. The collection was chosen so that for each of a number +# of popular systems, at least one of the environment variables is used. +# This list is used to provide some indication of and lower bound for +# CI traffic to PyPI. Thus, it is okay if the list is not comprehensive. +# For more background, see: https://github.com/pypa/pip/issues/5499 +CI_ENVIRONMENT_VARIABLES = ( + # Azure Pipelines + "BUILD_BUILDID", + # Jenkins + "BUILD_ID", + # AppVeyor, CircleCI, Codeship, Gitlab CI, Shippable, Travis CI + "CI", + # Explicit environment variable. + "PIP_IS_CI", +) + + +def looks_like_ci() -> bool: + """ + Return whether it looks like pip is running under CI. + """ + # We don't use the method of checking for a tty (e.g. using isatty()) + # because some CI systems mimic a tty (e.g. Travis CI). Thus that + # method doesn't provide definitive information in either direction. + return any(name in os.environ for name in CI_ENVIRONMENT_VARIABLES) + + +def user_agent() -> str: + """ + Return a string representing the user agent. + """ + data: Dict[str, Any] = { + "installer": {"name": "pip", "version": __version__}, + "python": platform.python_version(), + "implementation": { + "name": platform.python_implementation(), + }, + } + + if data["implementation"]["name"] == "CPython": + data["implementation"]["version"] = platform.python_version() + elif data["implementation"]["name"] == "PyPy": + pypy_version_info = sys.pypy_version_info # type: ignore + if pypy_version_info.releaselevel == "final": + pypy_version_info = pypy_version_info[:3] + data["implementation"]["version"] = ".".join( + [str(x) for x in pypy_version_info] + ) + elif data["implementation"]["name"] == "Jython": + # Complete Guess + data["implementation"]["version"] = platform.python_version() + elif data["implementation"]["name"] == "IronPython": + # Complete Guess + data["implementation"]["version"] = platform.python_version() + + if sys.platform.startswith("linux"): + from pip._vendor import distro + + linux_distribution = distro.name(), distro.version(), distro.codename() + distro_infos: Dict[str, Any] = dict( + filter( + lambda x: x[1], + zip(["name", "version", "id"], linux_distribution), + ) + ) + libc = dict( + filter( + lambda x: x[1], + zip(["lib", "version"], libc_ver()), + ) + ) + if libc: + distro_infos["libc"] = libc + if distro_infos: + data["distro"] = distro_infos + + if sys.platform.startswith("darwin") and platform.mac_ver()[0]: + data["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]} + + if platform.system(): + data.setdefault("system", {})["name"] = platform.system() + + if platform.release(): + data.setdefault("system", {})["release"] = platform.release() + + if platform.machine(): + data["cpu"] = platform.machine() + + if has_tls(): + import _ssl as ssl + + data["openssl_version"] = ssl.OPENSSL_VERSION + + setuptools_dist = get_default_environment().get_distribution("setuptools") + if setuptools_dist is not None: + data["setuptools_version"] = str(setuptools_dist.version) + + if shutil.which("rustc") is not None: + # If for any reason `rustc --version` fails, silently ignore it + try: + rustc_output = subprocess.check_output( + ["rustc", "--version"], stderr=subprocess.STDOUT, timeout=0.5 + ) + except Exception: + pass + else: + if rustc_output.startswith(b"rustc "): + # The format of `rustc --version` is: + # `b'rustc 1.52.1 (9bc8c42bb 2021-05-09)\n'` + # We extract just the middle (1.52.1) part + data["rustc_version"] = rustc_output.split(b" ")[1].decode() + + # Use None rather than False so as not to give the impression that + # pip knows it is not being run under CI. Rather, it is a null or + # inconclusive result. Also, we include some value rather than no + # value to make it easier to know that the check has been run. + data["ci"] = True if looks_like_ci() else None + + user_data = os.environ.get("PIP_USER_AGENT_USER_DATA") + if user_data is not None: + data["user_data"] = user_data + + return "{data[installer][name]}/{data[installer][version]} {json}".format( + data=data, + json=json.dumps(data, separators=(",", ":"), sort_keys=True), + ) + + +class LocalFSAdapter(BaseAdapter): + def send( + self, + request: PreparedRequest, + stream: bool = False, + timeout: Optional[Union[float, Tuple[float, float]]] = None, + verify: Union[bool, str] = True, + cert: Optional[Union[str, Tuple[str, str]]] = None, + proxies: Optional[Mapping[str, str]] = None, + ) -> Response: + pathname = url_to_path(request.url) + + resp = Response() + resp.status_code = 200 + resp.url = request.url + + try: + stats = os.stat(pathname) + except OSError as exc: + # format the exception raised as a io.BytesIO object, + # to return a better error message: + resp.status_code = 404 + resp.reason = type(exc).__name__ + resp.raw = io.BytesIO(f"{resp.reason}: {exc}".encode("utf8")) + else: + modified = email.utils.formatdate(stats.st_mtime, usegmt=True) + content_type = mimetypes.guess_type(pathname)[0] or "text/plain" + resp.headers = CaseInsensitiveDict( + { + "Content-Type": content_type, + "Content-Length": stats.st_size, + "Last-Modified": modified, + } + ) + + resp.raw = open(pathname, "rb") + resp.close = resp.raw.close + + return resp + + def close(self) -> None: + pass + + +class InsecureHTTPAdapter(HTTPAdapter): + def cert_verify( + self, + conn: ConnectionPool, + url: str, + verify: Union[bool, str], + cert: Optional[Union[str, Tuple[str, str]]], + ) -> None: + super().cert_verify(conn=conn, url=url, verify=False, cert=cert) + + +class InsecureCacheControlAdapter(CacheControlAdapter): + def cert_verify( + self, + conn: ConnectionPool, + url: str, + verify: Union[bool, str], + cert: Optional[Union[str, Tuple[str, str]]], + ) -> None: + super().cert_verify(conn=conn, url=url, verify=False, cert=cert) + + +class PipSession(requests.Session): + + timeout: Optional[int] = None + + def __init__( + self, + *args: Any, + retries: int = 0, + cache: Optional[str] = None, + trusted_hosts: Sequence[str] = (), + index_urls: Optional[List[str]] = None, + **kwargs: Any, + ) -> None: + """ + :param trusted_hosts: Domains not to emit warnings for when not using + HTTPS. + """ + super().__init__(*args, **kwargs) + + # Namespace the attribute with "pip_" just in case to prevent + # possible conflicts with the base class. + self.pip_trusted_origins: List[Tuple[str, Optional[int]]] = [] + + # Attach our User Agent to the request + self.headers["User-Agent"] = user_agent() + + # Attach our Authentication handler to the session + self.auth = MultiDomainBasicAuth(index_urls=index_urls) + + # Create our urllib3.Retry instance which will allow us to customize + # how we handle retries. + retries = urllib3.Retry( + # Set the total number of retries that a particular request can + # have. + total=retries, + # A 503 error from PyPI typically means that the Fastly -> Origin + # connection got interrupted in some way. A 503 error in general + # is typically considered a transient error so we'll go ahead and + # retry it. + # A 500 may indicate transient error in Amazon S3 + # A 520 or 527 - may indicate transient error in CloudFlare + status_forcelist=[500, 503, 520, 527], + # Add a small amount of back off between failed requests in + # order to prevent hammering the service. + backoff_factor=0.25, + ) # type: ignore + + # Our Insecure HTTPAdapter disables HTTPS validation. It does not + # support caching so we'll use it for all http:// URLs. + # If caching is disabled, we will also use it for + # https:// hosts that we've marked as ignoring + # TLS errors for (trusted-hosts). + insecure_adapter = InsecureHTTPAdapter(max_retries=retries) + + # We want to _only_ cache responses on securely fetched origins or when + # the host is specified as trusted. We do this because + # we can't validate the response of an insecurely/untrusted fetched + # origin, and we don't want someone to be able to poison the cache and + # require manual eviction from the cache to fix it. + if cache: + secure_adapter = CacheControlAdapter( + cache=SafeFileCache(cache), + max_retries=retries, + ) + self._trusted_host_adapter = InsecureCacheControlAdapter( + cache=SafeFileCache(cache), + max_retries=retries, + ) + else: + secure_adapter = HTTPAdapter(max_retries=retries) + self._trusted_host_adapter = insecure_adapter + + self.mount("https://", secure_adapter) + self.mount("http://", insecure_adapter) + + # Enable file:// urls + self.mount("file://", LocalFSAdapter()) + + for host in trusted_hosts: + self.add_trusted_host(host, suppress_logging=True) + + def update_index_urls(self, new_index_urls: List[str]) -> None: + """ + :param new_index_urls: New index urls to update the authentication + handler with. + """ + self.auth.index_urls = new_index_urls + + def add_trusted_host( + self, host: str, source: Optional[str] = None, suppress_logging: bool = False + ) -> None: + """ + :param host: It is okay to provide a host that has previously been + added. + :param source: An optional source string, for logging where the host + string came from. + """ + if not suppress_logging: + msg = f"adding trusted host: {host!r}" + if source is not None: + msg += f" (from {source})" + logger.info(msg) + + host_port = parse_netloc(host) + if host_port not in self.pip_trusted_origins: + self.pip_trusted_origins.append(host_port) + + self.mount( + build_url_from_netloc(host, scheme="http") + "/", self._trusted_host_adapter + ) + self.mount(build_url_from_netloc(host) + "/", self._trusted_host_adapter) + if not host_port[1]: + self.mount( + build_url_from_netloc(host, scheme="http") + ":", + self._trusted_host_adapter, + ) + # Mount wildcard ports for the same host. + self.mount(build_url_from_netloc(host) + ":", self._trusted_host_adapter) + + def iter_secure_origins(self) -> Iterator[SecureOrigin]: + yield from SECURE_ORIGINS + for host, port in self.pip_trusted_origins: + yield ("*", host, "*" if port is None else port) + + def is_secure_origin(self, location: Link) -> bool: + # Determine if this url used a secure transport mechanism + parsed = urllib.parse.urlparse(str(location)) + origin_protocol, origin_host, origin_port = ( + parsed.scheme, + parsed.hostname, + parsed.port, + ) + + # The protocol to use to see if the protocol matches. + # Don't count the repository type as part of the protocol: in + # cases such as "git+ssh", only use "ssh". (I.e., Only verify against + # the last scheme.) + origin_protocol = origin_protocol.rsplit("+", 1)[-1] + + # Determine if our origin is a secure origin by looking through our + # hardcoded list of secure origins, as well as any additional ones + # configured on this PackageFinder instance. + for secure_origin in self.iter_secure_origins(): + secure_protocol, secure_host, secure_port = secure_origin + if origin_protocol != secure_protocol and secure_protocol != "*": + continue + + try: + addr = ipaddress.ip_address(origin_host) + network = ipaddress.ip_network(secure_host) + except ValueError: + # We don't have both a valid address or a valid network, so + # we'll check this origin against hostnames. + if ( + origin_host + and origin_host.lower() != secure_host.lower() + and secure_host != "*" + ): + continue + else: + # We have a valid address and network, so see if the address + # is contained within the network. + if addr not in network: + continue + + # Check to see if the port matches. + if ( + origin_port != secure_port + and secure_port != "*" + and secure_port is not None + ): + continue + + # If we've gotten here, then this origin matches the current + # secure origin and we should return True + return True + + # If we've gotten to this point, then the origin isn't secure and we + # will not accept it as a valid location to search. We will however + # log a warning that we are ignoring it. + logger.warning( + "The repository located at %s is not a trusted or secure host and " + "is being ignored. If this repository is available via HTTPS we " + "recommend you use HTTPS instead, otherwise you may silence " + "this warning and allow it anyway with '--trusted-host %s'.", + origin_host, + origin_host, + ) + + return False + + def request(self, method: str, url: str, *args: Any, **kwargs: Any) -> Response: + # Allow setting a default timeout on a session + kwargs.setdefault("timeout", self.timeout) + + # Dispatch the actual request + return super().request(method, url, *args, **kwargs) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/utils.py b/.venv/lib/python3.9/site-packages/pip/_internal/network/utils.py new file mode 100644 index 0000000..094cf1b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/network/utils.py @@ -0,0 +1,96 @@ +from typing import Dict, Iterator + +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response + +from pip._internal.exceptions import NetworkConnectionError + +# The following comments and HTTP headers were originally added by +# Donald Stufft in git commit 22c562429a61bb77172039e480873fb239dd8c03. +# +# We use Accept-Encoding: identity here because requests defaults to +# accepting compressed responses. This breaks in a variety of ways +# depending on how the server is configured. +# - Some servers will notice that the file isn't a compressible file +# and will leave the file alone and with an empty Content-Encoding +# - Some servers will notice that the file is already compressed and +# will leave the file alone, adding a Content-Encoding: gzip header +# - Some servers won't notice anything at all and will take a file +# that's already been compressed and compress it again, and set +# the Content-Encoding: gzip header +# By setting this to request only the identity encoding we're hoping +# to eliminate the third case. Hopefully there does not exist a server +# which when given a file will notice it is already compressed and that +# you're not asking for a compressed file and will then decompress it +# before sending because if that's the case I don't think it'll ever be +# possible to make this work. +HEADERS: Dict[str, str] = {"Accept-Encoding": "identity"} + + +def raise_for_status(resp: Response) -> None: + http_error_msg = "" + if isinstance(resp.reason, bytes): + # We attempt to decode utf-8 first because some servers + # choose to localize their reason strings. If the string + # isn't utf-8, we fall back to iso-8859-1 for all other + # encodings. + try: + reason = resp.reason.decode("utf-8") + except UnicodeDecodeError: + reason = resp.reason.decode("iso-8859-1") + else: + reason = resp.reason + + if 400 <= resp.status_code < 500: + http_error_msg = ( + f"{resp.status_code} Client Error: {reason} for url: {resp.url}" + ) + + elif 500 <= resp.status_code < 600: + http_error_msg = ( + f"{resp.status_code} Server Error: {reason} for url: {resp.url}" + ) + + if http_error_msg: + raise NetworkConnectionError(http_error_msg, response=resp) + + +def response_chunks( + response: Response, chunk_size: int = CONTENT_CHUNK_SIZE +) -> Iterator[bytes]: + """Given a requests Response, provide the data chunks.""" + try: + # Special case for urllib3. + for chunk in response.raw.stream( + chunk_size, + # We use decode_content=False here because we don't + # want urllib3 to mess with the raw bytes we get + # from the server. If we decompress inside of + # urllib3 then we cannot verify the checksum + # because the checksum will be of the compressed + # file. This breakage will only occur if the + # server adds a Content-Encoding header, which + # depends on how the server was configured: + # - Some servers will notice that the file isn't a + # compressible file and will leave the file alone + # and with an empty Content-Encoding + # - Some servers will notice that the file is + # already compressed and will leave the file + # alone and will add a Content-Encoding: gzip + # header + # - Some servers won't notice anything at all and + # will take a file that's already been compressed + # and compress it again and set the + # Content-Encoding: gzip header + # + # By setting this not to decode automatically we + # hope to eliminate problems with the second case. + decode_content=False, + ): + yield chunk + except AttributeError: + # Standard file-like object. + while True: + chunk = response.raw.read(chunk_size) + if not chunk: + break + yield chunk diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py b/.venv/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py new file mode 100644 index 0000000..4a7d55d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py @@ -0,0 +1,60 @@ +"""xmlrpclib.Transport implementation +""" + +import logging +import urllib.parse +import xmlrpc.client +from typing import TYPE_CHECKING, Tuple + +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.network.session import PipSession +from pip._internal.network.utils import raise_for_status + +if TYPE_CHECKING: + from xmlrpc.client import _HostType, _Marshallable + +logger = logging.getLogger(__name__) + + +class PipXmlrpcTransport(xmlrpc.client.Transport): + """Provide a `xmlrpclib.Transport` implementation via a `PipSession` + object. + """ + + def __init__( + self, index_url: str, session: PipSession, use_datetime: bool = False + ) -> None: + super().__init__(use_datetime) + index_parts = urllib.parse.urlparse(index_url) + self._scheme = index_parts.scheme + self._session = session + + def request( + self, + host: "_HostType", + handler: str, + request_body: bytes, + verbose: bool = False, + ) -> Tuple["_Marshallable", ...]: + assert isinstance(host, str) + parts = (self._scheme, host, handler, None, None, None) + url = urllib.parse.urlunparse(parts) + try: + headers = {"Content-Type": "text/xml"} + response = self._session.post( + url, + data=request_body, + headers=headers, + stream=True, + ) + raise_for_status(response) + self.verbose = verbose + return self.parse_response(response.raw) + except NetworkConnectionError as exc: + assert exc.response + logger.critical( + "HTTP error %s while getting %s", + exc.response.status_code, + url, + ) + raise diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..882fc1003dad60e099c03cfc84a1dfc8dfd5c0a8 GIT binary patch literal 212 zcmYk0K?=e!5JgjPAwm!0!py>zAmRz!cz}?a(N0^FAxT?$1=n7}E4lRu?p&Fy^uvF{ zeE9HnSuRAqUm5=@(z8zvvjiiKVp$v>!sqyh&jhu*A`rJB^vupjs3_E76XTizz$E literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/check.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/check.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7700af4a639a0f2014952881b566d1c5da9cebe3 GIT binary patch literal 4016 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4982a8276205447539e47aa4ac48f38f9d9bd8f5 GIT binary patch literal 6158 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 YMuSW@ic%IlKIhxk>CWJ8dhDGnz6y~(4FCWD literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..005af646a0e5eb88d12c1629e90a6208808a2c75 GIT binary patch literal 1202 zcmZuw&5I;86i@1_Kdfc(v?hCdQwS9Qq%O% zgTi_eWG@~)>>T}<>gvgV!ILl5-LoT_BCnG7Uf##=y+@CZrU=$Azm+SJAoORr++4sz zpTc%efG{*i46{h$Ifj2Mqc)z$IPemgwCOw@&Z*4W(R?(VGdXT2^9e>gRec@TCP0s?$}O&b+Q(|Ag4SnTu|BihcUIL=aK2v|{3oyim+AM2r3p&VGeA=v-$U-}_Yoex zAAtTx+T4`-bcJ7J+jyH^1w^w8`Q;8sUbF{jJ15iMZZHpc1|AYXdj%Gu-D$ff{fpBU;J8yc{`?Yadh)le_8D`a1o!4xM4 zzXZC4?5ehIIG25-U7xJ9P_xX2GTBiub?aK+w+3?Q^J_-9Wqb2^XgHxxH39A)$i4<| z|NgORbjvGY&YbIv(biWB;hHsFaqg?m2qM&)T1HNVBSM(239&(Ceg|BY1Oj5(mSz~7a&4&rm(GT+?%y0V4#AYyLtx_|edpg& z7)I&Jm!;X&>h1qi@-SWj$z5e*nB^hD0oEJj_26av06MCZ{1Xf}mjg-Sag;|nWR}PO E0N!L|5C8xG literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6daa60799261ba7b34560f34865d9baaeff6808f GIT binary patch literal 1240 zcmZuw&5I;86i-sA>gl$}9Tz`fSERs;4ZBslxUL8y;<_rL%djqpeF^DGraL{UBqXUB zdguXRJ%}KC@gjKGIr=Zv)sz2%2lZ7=cRQjf@+$8m$uGb69^c;|As9dWR4jj{2>sS6 zR|nY8hcLrq5CTn+z=CKz#qduwsgr4fI~&!sPN!+VPIXofrh|T+>AiY59bzO?naGhC z{E~=0G5n5BUl8OgG#Q=U`%*?Oc;xw98tHjd*5umGRh1uEp9kCcO6Ed^=+&(0yrCHV z4rtJ$32qM#rF-Y@yPsKm{D5mMeP{cqQCd7SC(2t>OB2C%(>DfAXQwJISa7OWY8e8b zOK|T$k+u6+d09p4SCgb2&bl+0G$-v~#;ap#M4NdT8*eJoUA`F^{D&|fzzpAlh&@9h z`H`HHHCf{GWR0GEfl(xaKE>yBjh`oLdV!zazzEiKom}Aa^lKziiYR&tY?_0+D13eg z;r{yun*iSP-YHlwctjDI^;rz3iy;FS0+Dv zc$nY6f2SCYau|>MSB5+;@uV6o31}ovMm4xWy3b<+g#ET8(O-w%1kofrOXey)2{8d#M;5T+VRfNY1!t6aaVlG z99ag|Uy*+q_WtpGxv;e?l{*fhanAZ!&Qw^O@}-oqY@A}soN_PNkmF#@4nm)33iA(Z`l${oBddxcxIH#U7E+19$F zVjqx(>mblzOfr&Dg2`Vr8RJige-*5gaXVm4*ora#BIwhb0H9z1Q&?ZPzO{-|&m8~> zzN`E8wLW4CvDmeVPde`#|Mo(=>QMZXv&$sD{(nIc8nEN{GUW+$dylXu`-*s_yJhcv ZsJTYV4=`xq00d3;$e4^Ve3WAH=ij9$aw-4- literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb1024a2de58076f4bce8511fedb44b33e3a143d GIT binary patch literal 2170 zcmaJ?&yU+g6rQmi$4QekyDg}B1&H|k+T@xgK0Kg6RIx=L3`>zPH`lsLr)rg=b1~o zqzC#}h;<(gj!)maL(7OnW#lK6Q4y6XXMV<$H1;>R@H3i3@vblVM8wo5sVqf0o@gf- zw4cMK(A@!6{hO0CBe&V3RB)D4R)Vg>3(7)SqztBo@0E|4ETb$lE8G@>YvuVo+NPnT z<)kP%&tyoGBuv=`40RS6E&yEn-*b7xb&OkH5jCUEzJm$hISH zfTeNZXm4XdTa5#^LKPe=6sO!l5l=%~i;G!IkQ@OblZBbedCq)W4??i%x8)-(vaU>}j29GFvG|bZRu-Gj(IeR;J zXDHK>t`$+d9VJu_i?kTRk0li>%7&2Q8Dr#dtQj!O=VS_Jya|e3)xMSiYhs=k*H1uP zf53yL7hzRK>TCzsG7gEB*I}@5p89wB5|}l1K+6dr4R}7+S)Q)l;ez_*CP2>_{r^9{ z-V^$tK~q^=s-|8G<`oX;l$}wgT;O~jmC7lia#J~5JY@q*c-r35II$?F(%?H2J#Fb7 z-OLK;WFG{wPFfD`SsiR)?{CKuXFxY_Rm)%%0@SK&s2>))p;@p!tFsV-QeG-K6bmJ) zNdVO}lcELx$C}EEO9!TvhT7l5K$DsPZ7S!`#t3K&lqSv-Ys=nilt7}YQQ4&N#NGq? zKK%$h8pPelPyM}S=~ixKk!IB--VpCZz7kc0MN9@c*o$uF)VZ0^rM{>NG^TgztE z*vCND_LO}%>nhY=P{W_dlqJ5|IPhc5FwZA+BZ7JcuNX3!${gBD+lOo26tsi{(?y4( z`quh{vE}*wD;n8%FUf(w=q;wP%^B@qlG6^5dTmj)51^2oZ6K%WCmA0@ z_t_2ehynQtSUQV2Op1DphZ9Lf7<0CfCe!ox1T7+=m#=qwWwFu0^z^K#>aEuS4Qyq{ zJ4AJ$N?+gHx&*hJ?pq2vr8510-S<4C+XG1^*LkUROepiRKoG2({Hk%S_v&bnI*>yL){<3 zP+ZoVvEi&V2~o}%&Nc(g65s}U(?7gxIVY2hUe~=zUIgLT9`>Mb)VI~P`~5lS8t51Q E0KCU)zW@LL literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..41876e2e3ee8d8d8ec265864cbe1f30db8006b96 GIT binary patch literal 1213 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 O@4McW)>>ZM{`dEp=j str: + """Generate metadata using mechanisms described in PEP 517. + + Returns the generated metadata directory. + """ + metadata_tmpdir = TempDirectory(kind="modern-metadata", globally_managed=True) + + metadata_dir = metadata_tmpdir.path + + with build_env: + # Note that Pep517HookCaller implements a fallback for + # prepare_metadata_for_build_wheel, so we don't have to + # consider the possibility that this hook doesn't exist. + runner = runner_with_spinner_message("Preparing metadata (pyproject.toml)") + with backend.subprocess_runner(runner): + distinfo_dir = backend.prepare_metadata_for_build_wheel(metadata_dir) + + return os.path.join(metadata_dir, distinfo_dir) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_editable.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_editable.py new file mode 100644 index 0000000..13de75f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_editable.py @@ -0,0 +1,34 @@ +"""Metadata generation logic for source distributions. +""" + +import os + +from pip._vendor.pep517.wrappers import Pep517HookCaller + +from pip._internal.build_env import BuildEnvironment +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory + + +def generate_editable_metadata( + build_env: BuildEnvironment, backend: Pep517HookCaller +) -> str: + """Generate metadata using mechanisms described in PEP 660. + + Returns the generated metadata directory. + """ + metadata_tmpdir = TempDirectory(kind="modern-metadata", globally_managed=True) + + metadata_dir = metadata_tmpdir.path + + with build_env: + # Note that Pep517HookCaller implements a fallback for + # prepare_metadata_for_build_wheel/editable, so we don't have to + # consider the possibility that this hook doesn't exist. + runner = runner_with_spinner_message( + "Preparing editable metadata (pyproject.toml)" + ) + with backend.subprocess_runner(runner): + distinfo_dir = backend.prepare_metadata_for_build_editable(metadata_dir) + + return os.path.join(metadata_dir, distinfo_dir) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_legacy.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_legacy.py new file mode 100644 index 0000000..ff52de9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_legacy.py @@ -0,0 +1,67 @@ +"""Metadata generation logic for legacy source distributions. +""" + +import logging +import os + +from pip._internal.build_env import BuildEnvironment +from pip._internal.cli.spinners import open_spinner +from pip._internal.exceptions import InstallationError +from pip._internal.utils.setuptools_build import make_setuptools_egg_info_args +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +def _find_egg_info(directory: str) -> str: + """Find an .egg-info subdirectory in `directory`.""" + filenames = [f for f in os.listdir(directory) if f.endswith(".egg-info")] + + if not filenames: + raise InstallationError(f"No .egg-info directory found in {directory}") + + if len(filenames) > 1: + raise InstallationError( + "More than one .egg-info directory found in {}".format(directory) + ) + + return os.path.join(directory, filenames[0]) + + +def generate_metadata( + build_env: BuildEnvironment, + setup_py_path: str, + source_dir: str, + isolated: bool, + details: str, +) -> str: + """Generate metadata using setup.py-based defacto mechanisms. + + Returns the generated metadata directory. + """ + logger.debug( + "Running setup.py (path:%s) egg_info for package %s", + setup_py_path, + details, + ) + + egg_info_dir = TempDirectory(kind="pip-egg-info", globally_managed=True).path + + args = make_setuptools_egg_info_args( + setup_py_path, + egg_info_dir=egg_info_dir, + no_user_config=isolated, + ) + + with build_env: + with open_spinner("Preparing metadata (setup.py)") as spinner: + call_subprocess( + args, + cwd=source_dir, + command_desc="python setup.py egg_info", + spinner=spinner, + ) + + # Return the .egg-info directory. + return _find_egg_info(egg_info_dir) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel.py new file mode 100644 index 0000000..b0d2fc9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel.py @@ -0,0 +1,37 @@ +import logging +import os +from typing import Optional + +from pip._vendor.pep517.wrappers import Pep517HookCaller + +from pip._internal.utils.subprocess import runner_with_spinner_message + +logger = logging.getLogger(__name__) + + +def build_wheel_pep517( + name: str, + backend: Pep517HookCaller, + metadata_directory: str, + tempd: str, +) -> Optional[str]: + """Build one InstallRequirement using the PEP 517 build process. + + Returns path to wheel if successfully built. Otherwise, returns None. + """ + assert metadata_directory is not None + try: + logger.debug("Destination directory: %s", tempd) + + runner = runner_with_spinner_message( + f"Building wheel for {name} (pyproject.toml)" + ) + with backend.subprocess_runner(runner): + wheel_name = backend.build_wheel( + tempd, + metadata_directory=metadata_directory, + ) + except Exception: + logger.error("Failed building wheel for %s", name) + return None + return os.path.join(tempd, wheel_name) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_editable.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_editable.py new file mode 100644 index 0000000..cf7b01a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_editable.py @@ -0,0 +1,46 @@ +import logging +import os +from typing import Optional + +from pip._vendor.pep517.wrappers import HookMissing, Pep517HookCaller + +from pip._internal.utils.subprocess import runner_with_spinner_message + +logger = logging.getLogger(__name__) + + +def build_wheel_editable( + name: str, + backend: Pep517HookCaller, + metadata_directory: str, + tempd: str, +) -> Optional[str]: + """Build one InstallRequirement using the PEP 660 build process. + + Returns path to wheel if successfully built. Otherwise, returns None. + """ + assert metadata_directory is not None + try: + logger.debug("Destination directory: %s", tempd) + + runner = runner_with_spinner_message( + f"Building editable for {name} (pyproject.toml)" + ) + with backend.subprocess_runner(runner): + try: + wheel_name = backend.build_editable( + tempd, + metadata_directory=metadata_directory, + ) + except HookMissing as e: + logger.error( + "Cannot build editable %s because the build " + "backend does not have the %s hook", + name, + e, + ) + return None + except Exception: + logger.error("Failed building editable for %s", name) + return None + return os.path.join(tempd, wheel_name) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_legacy.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_legacy.py new file mode 100644 index 0000000..2d5cb26 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_legacy.py @@ -0,0 +1,105 @@ +import logging +import os.path +from typing import List, Optional + +from pip._internal.cli.spinners import open_spinner +from pip._internal.utils.setuptools_build import make_setuptools_bdist_wheel_args +from pip._internal.utils.subprocess import ( + LOG_DIVIDER, + call_subprocess, + format_command_args, +) + +logger = logging.getLogger(__name__) + + +def format_command_result( + command_args: List[str], + command_output: str, +) -> str: + """Format command information for logging.""" + command_desc = format_command_args(command_args) + text = f"Command arguments: {command_desc}\n" + + if not command_output: + text += "Command output: None" + elif logger.getEffectiveLevel() > logging.DEBUG: + text += "Command output: [use --verbose to show]" + else: + if not command_output.endswith("\n"): + command_output += "\n" + text += f"Command output:\n{command_output}{LOG_DIVIDER}" + + return text + + +def get_legacy_build_wheel_path( + names: List[str], + temp_dir: str, + name: str, + command_args: List[str], + command_output: str, +) -> Optional[str]: + """Return the path to the wheel in the temporary build directory.""" + # Sort for determinism. + names = sorted(names) + if not names: + msg = ("Legacy build of wheel for {!r} created no files.\n").format(name) + msg += format_command_result(command_args, command_output) + logger.warning(msg) + return None + + if len(names) > 1: + msg = ( + "Legacy build of wheel for {!r} created more than one file.\n" + "Filenames (choosing first): {}\n" + ).format(name, names) + msg += format_command_result(command_args, command_output) + logger.warning(msg) + + return os.path.join(temp_dir, names[0]) + + +def build_wheel_legacy( + name: str, + setup_py_path: str, + source_dir: str, + global_options: List[str], + build_options: List[str], + tempd: str, +) -> Optional[str]: + """Build one unpacked package using the "legacy" build process. + + Returns path to wheel if successfully built. Otherwise, returns None. + """ + wheel_args = make_setuptools_bdist_wheel_args( + setup_py_path, + global_options=global_options, + build_options=build_options, + destination_dir=tempd, + ) + + spin_message = f"Building wheel for {name} (setup.py)" + with open_spinner(spin_message) as spinner: + logger.debug("Destination directory: %s", tempd) + + try: + output = call_subprocess( + wheel_args, + cwd=source_dir, + spinner=spinner, + ) + except Exception: + spinner.finish("error") + logger.error("Failed building wheel for %s", name) + return None + + names = os.listdir(tempd) + wheel_path = get_legacy_build_wheel_path( + names=names, + temp_dir=tempd, + name=name, + command_args=wheel_args, + command_output=output, + ) + return wheel_path diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/check.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/check.py new file mode 100644 index 0000000..fb3ac8b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/check.py @@ -0,0 +1,149 @@ +"""Validation of dependencies of packages +""" + +import logging +from typing import Callable, Dict, List, NamedTuple, Optional, Set, Tuple + +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name + +from pip._internal.distributions import make_distribution_for_install_requirement +from pip._internal.metadata import get_default_environment +from pip._internal.metadata.base import DistributionVersion +from pip._internal.req.req_install import InstallRequirement + +logger = logging.getLogger(__name__) + + +class PackageDetails(NamedTuple): + version: DistributionVersion + dependencies: List[Requirement] + + +# Shorthands +PackageSet = Dict[NormalizedName, PackageDetails] +Missing = Tuple[NormalizedName, Requirement] +Conflicting = Tuple[NormalizedName, DistributionVersion, Requirement] + +MissingDict = Dict[NormalizedName, List[Missing]] +ConflictingDict = Dict[NormalizedName, List[Conflicting]] +CheckResult = Tuple[MissingDict, ConflictingDict] +ConflictDetails = Tuple[PackageSet, CheckResult] + + +def create_package_set_from_installed() -> Tuple[PackageSet, bool]: + """Converts a list of distributions into a PackageSet.""" + package_set = {} + problems = False + env = get_default_environment() + for dist in env.iter_installed_distributions(local_only=False, skip=()): + name = dist.canonical_name + try: + dependencies = list(dist.iter_dependencies()) + package_set[name] = PackageDetails(dist.version, dependencies) + except (OSError, ValueError) as e: + # Don't crash on unreadable or broken metadata. + logger.warning("Error parsing requirements for %s: %s", name, e) + problems = True + return package_set, problems + + +def check_package_set( + package_set: PackageSet, should_ignore: Optional[Callable[[str], bool]] = None +) -> CheckResult: + """Check if a package set is consistent + + If should_ignore is passed, it should be a callable that takes a + package name and returns a boolean. + """ + + missing = {} + conflicting = {} + + for package_name, package_detail in package_set.items(): + # Info about dependencies of package_name + missing_deps: Set[Missing] = set() + conflicting_deps: Set[Conflicting] = set() + + if should_ignore and should_ignore(package_name): + continue + + for req in package_detail.dependencies: + name = canonicalize_name(req.name) + + # Check if it's missing + if name not in package_set: + missed = True + if req.marker is not None: + missed = req.marker.evaluate() + if missed: + missing_deps.add((name, req)) + continue + + # Check if there's a conflict + version = package_set[name].version + if not req.specifier.contains(version, prereleases=True): + conflicting_deps.add((name, version, req)) + + if missing_deps: + missing[package_name] = sorted(missing_deps, key=str) + if conflicting_deps: + conflicting[package_name] = sorted(conflicting_deps, key=str) + + return missing, conflicting + + +def check_install_conflicts(to_install: List[InstallRequirement]) -> ConflictDetails: + """For checking if the dependency graph would be consistent after \ + installing given requirements + """ + # Start from the current state + package_set, _ = create_package_set_from_installed() + # Install packages + would_be_installed = _simulate_installation_of(to_install, package_set) + + # Only warn about directly-dependent packages; create a whitelist of them + whitelist = _create_whitelist(would_be_installed, package_set) + + return ( + package_set, + check_package_set( + package_set, should_ignore=lambda name: name not in whitelist + ), + ) + + +def _simulate_installation_of( + to_install: List[InstallRequirement], package_set: PackageSet +) -> Set[NormalizedName]: + """Computes the version of packages after installing to_install.""" + # Keep track of packages that were installed + installed = set() + + # Modify it as installing requirement_set would (assuming no errors) + for inst_req in to_install: + abstract_dist = make_distribution_for_install_requirement(inst_req) + dist = abstract_dist.get_metadata_distribution() + name = dist.canonical_name + package_set[name] = PackageDetails(dist.version, list(dist.iter_dependencies())) + + installed.add(name) + + return installed + + +def _create_whitelist( + would_be_installed: Set[NormalizedName], package_set: PackageSet +) -> Set[NormalizedName]: + packages_affected = set(would_be_installed) + + for package_name in package_set: + if package_name in packages_affected: + continue + + for req in package_set[package_name].dependencies: + if canonicalize_name(req.name) in packages_affected: + packages_affected.add(package_name) + break + + return packages_affected diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/freeze.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/freeze.py new file mode 100644 index 0000000..4565540 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/freeze.py @@ -0,0 +1,254 @@ +import collections +import logging +import os +from typing import Container, Dict, Iterable, Iterator, List, NamedTuple, Optional, Set + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import Version + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.metadata import BaseDistribution, get_environment +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, +) +from pip._internal.req.req_file import COMMENT_RE +from pip._internal.utils.direct_url_helpers import direct_url_as_pep440_direct_reference + +logger = logging.getLogger(__name__) + + +class _EditableInfo(NamedTuple): + requirement: str + comments: List[str] + + +def freeze( + requirement: Optional[List[str]] = None, + local_only: bool = False, + user_only: bool = False, + paths: Optional[List[str]] = None, + isolated: bool = False, + exclude_editable: bool = False, + skip: Container[str] = (), +) -> Iterator[str]: + installations: Dict[str, FrozenRequirement] = {} + + dists = get_environment(paths).iter_installed_distributions( + local_only=local_only, + skip=(), + user_only=user_only, + ) + for dist in dists: + req = FrozenRequirement.from_dist(dist) + if exclude_editable and req.editable: + continue + installations[req.canonical_name] = req + + if requirement: + # the options that don't get turned into an InstallRequirement + # should only be emitted once, even if the same option is in multiple + # requirements files, so we need to keep track of what has been emitted + # so that we don't emit it again if it's seen again + emitted_options: Set[str] = set() + # keep track of which files a requirement is in so that we can + # give an accurate warning if a requirement appears multiple times. + req_files: Dict[str, List[str]] = collections.defaultdict(list) + for req_file_path in requirement: + with open(req_file_path) as req_file: + for line in req_file: + if ( + not line.strip() + or line.strip().startswith("#") + or line.startswith( + ( + "-r", + "--requirement", + "-f", + "--find-links", + "-i", + "--index-url", + "--pre", + "--trusted-host", + "--process-dependency-links", + "--extra-index-url", + "--use-feature", + ) + ) + ): + line = line.rstrip() + if line not in emitted_options: + emitted_options.add(line) + yield line + continue + + if line.startswith("-e") or line.startswith("--editable"): + if line.startswith("-e"): + line = line[2:].strip() + else: + line = line[len("--editable") :].strip().lstrip("=") + line_req = install_req_from_editable( + line, + isolated=isolated, + ) + else: + line_req = install_req_from_line( + COMMENT_RE.sub("", line).strip(), + isolated=isolated, + ) + + if not line_req.name: + logger.info( + "Skipping line in requirement file [%s] because " + "it's not clear what it would install: %s", + req_file_path, + line.strip(), + ) + logger.info( + " (add #egg=PackageName to the URL to avoid" + " this warning)" + ) + else: + line_req_canonical_name = canonicalize_name(line_req.name) + if line_req_canonical_name not in installations: + # either it's not installed, or it is installed + # but has been processed already + if not req_files[line_req.name]: + logger.warning( + "Requirement file [%s] contains %s, but " + "package %r is not installed", + req_file_path, + COMMENT_RE.sub("", line).strip(), + line_req.name, + ) + else: + req_files[line_req.name].append(req_file_path) + else: + yield str(installations[line_req_canonical_name]).rstrip() + del installations[line_req_canonical_name] + req_files[line_req.name].append(req_file_path) + + # Warn about requirements that were included multiple times (in a + # single requirements file or in different requirements files). + for name, files in req_files.items(): + if len(files) > 1: + logger.warning( + "Requirement %s included multiple times [%s]", + name, + ", ".join(sorted(set(files))), + ) + + yield ("## The following requirements were added by pip freeze:") + for installation in sorted(installations.values(), key=lambda x: x.name.lower()): + if installation.canonical_name not in skip: + yield str(installation).rstrip() + + +def _format_as_name_version(dist: BaseDistribution) -> str: + if isinstance(dist.version, Version): + return f"{dist.raw_name}=={dist.version}" + return f"{dist.raw_name}==={dist.version}" + + +def _get_editable_info(dist: BaseDistribution) -> _EditableInfo: + """ + Compute and return values (req, comments) for use in + FrozenRequirement.from_dist(). + """ + editable_project_location = dist.editable_project_location + assert editable_project_location + location = os.path.normcase(os.path.abspath(editable_project_location)) + + from pip._internal.vcs import RemoteNotFoundError, RemoteNotValidError, vcs + + vcs_backend = vcs.get_backend_for_dir(location) + + if vcs_backend is None: + display = _format_as_name_version(dist) + logger.debug( + 'No VCS found for editable requirement "%s" in: %r', + display, + location, + ) + return _EditableInfo( + requirement=location, + comments=[f"# Editable install with no version control ({display})"], + ) + + vcs_name = type(vcs_backend).__name__ + + try: + req = vcs_backend.get_src_requirement(location, dist.raw_name) + except RemoteNotFoundError: + display = _format_as_name_version(dist) + return _EditableInfo( + requirement=location, + comments=[f"# Editable {vcs_name} install with no remote ({display})"], + ) + except RemoteNotValidError as ex: + display = _format_as_name_version(dist) + return _EditableInfo( + requirement=location, + comments=[ + f"# Editable {vcs_name} install ({display}) with either a deleted " + f"local remote or invalid URI:", + f"# '{ex.url}'", + ], + ) + except BadCommand: + logger.warning( + "cannot determine version of editable source in %s " + "(%s command not found in path)", + location, + vcs_backend.name, + ) + return _EditableInfo(requirement=location, comments=[]) + except InstallationError as exc: + logger.warning("Error when trying to get requirement for VCS system %s", exc) + else: + return _EditableInfo(requirement=req, comments=[]) + + logger.warning("Could not determine repository location of %s", location) + + return _EditableInfo( + requirement=location, + comments=["## !! Could not determine repository location"], + ) + + +class FrozenRequirement: + def __init__( + self, + name: str, + req: str, + editable: bool, + comments: Iterable[str] = (), + ) -> None: + self.name = name + self.canonical_name = canonicalize_name(name) + self.req = req + self.editable = editable + self.comments = comments + + @classmethod + def from_dist(cls, dist: BaseDistribution) -> "FrozenRequirement": + editable = dist.editable + if editable: + req, comments = _get_editable_info(dist) + else: + comments = [] + direct_url = dist.direct_url + if direct_url: + # if PEP 610 metadata is present, use it + req = direct_url_as_pep440_direct_reference(direct_url, dist.raw_name) + else: + # name==version requirement + req = _format_as_name_version(dist) + + return cls(dist.raw_name, req, editable, comments=comments) + + def __str__(self) -> str: + req = self.req + if self.editable: + req = f"-e {req}" + return "\n".join(list(self.comments) + [str(req)]) + "\n" diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__init__.py new file mode 100644 index 0000000..24d6a5d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__init__.py @@ -0,0 +1,2 @@ +"""For modules related to installing packages. +""" diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3fa031755fe9c89b8432b2dbb7049bde76852dff GIT binary patch literal 276 zcmYjMyG{c!5cH)<6e<7UHWJ(xsgMw&qD(_aWBKAGw~1q~ynBg4M@!95@Jng=1Uf1l z9ugzXtVXMSjGxV>rsCzb-7IQ-Kb!w(s=2L{NtIw8Ola=SeDrj2my6xyFhmqvFnYyc zHCsxeK1NDw%YL=>Ym|1noHwVjb0M#sdoyKJSAEOpGxT|fK)e+hm~&C+Ncw}{ASw(@ zj?%%G;2tTW>%3rqc8_Tfkvia`_Bk!uD-cq={JRHC40TYkBp)F&7O#|(!0&V5YM0cx RmXD{&^-qeMbJCAW^981$R1W|E literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..276bdcaba141bf9274f5246d3b9193800b8cf162 GIT binary patch literal 1454 zcmZux&yU*R>;)H~t0&zfE3Ze%@IJlYEJL9fn2iw_Y zR^e0*2&pOujvU$}|B|nq_yah=0r8xf-JKP+3Ug5zr;C>wxK^+!hJtzjAvxPjWhsCg;4|rUUicvq0cv6px zaX%mOy?RniJVd=``*ix;D`qsH2SJV$ zH&Swqw_m`eT57OQE654!cCpQ9KDN_srdal$)OLT#<)Y+Q>!?xmgne(rm8_|qw3=cV z3TtMl4MpiT`!C{VjhoV}Y|ONTlT%_x3zspb;>;ekqA9CWO0br#swgH*(aK1*wvmE@ zC{gtiaD{+2hB1Qi2@Kr<81xLt?gr0&4;jCUITRPg98VL05)_g`W>kwSp4%-?(~qe=2YvpX{0jwg6Y+H`G``Jw++Kg zoR^B=6UHfCl$w$}I|C);oGtQZZB|mem%X1m8QtBMRObzAa(K~D1>(^a+kSDjD%0m!!H^g|C;`YnLakG)&| Rp4WFj2_q<#>o-dH*MC`vm(&0N literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee0d64fa7e1fa14b037fc02c1398e22dad6f212d GIT binary patch literal 3514 zcmb7G&2JmW6`xrym&+AJQW9;;v7)d=YJh=FI!&82t?L@D?V^RC0Cs?&1d7dyGo+T@ zFV74uOI@Z#WS~I-Lpk(Tx1f&sFY-6^IM<$v&hi6e@sq zcj8LF61#oZjFqEm?DajwFvNHuvCz7F&POU>mFjtG~mnhop1i=Pm zFp(;VqCkad(#}LW;8I>|hh5%ne<-<{WZi7R^kLWg2kLjXL-opFKS)O07ip?GC2jA7 zQfc?S4CMrob|3P`6P^q>ur}{Z!ie2Vo`fPzVxA}%Tl?kGzW0Pk1q?b52m3t6C0>{? zVDzJOggu_fiQqm9k!vds9&z8CO{Hlh{rMIAK#U~JUlEfe;le)%)xIyY&~#$BRxm=* ztMBtTyBi8VP^mZ^;C+@K@RYgFK!X$T6@q>OIZ&s<#)){exi4x#~@_5bksk z2<8t%khB*_&U)P^JbBWK!o6O0sP@z3t?s)$87h7~3kHwiYOcp zRrclz>P5!nU{Fzqqg;SbT0mTC`W;)>Kr1P18-)p%+D6;zhTxBV#^peS#<^&qGM}T%I#A+E$8K#&7dVV z^HN?urc;NK#}6KFvhu8)Tfk9KPF^{tAJY+;x<(@#j2NzZ?l9n(da99ota5CfygpsYS7uG- z&g!{)N|}3!;Q9{$MQnJFOOzzdH;Me>2FSwq*YGg{UQ*o!N3pX&?TbsGhXMN2*@JD= z&<1?+Dv(cL&4kF7B4awUa@a#|<{(9tJ|Q_dhDbFs=`PsDN~PF@HM$(iU{4CPTnF?9 zzt5;ZV-^mE!gVbZJmU#7;kgYX(g8wfi`v%FodW@Wa~3wd@G|KSMH(-MRpATWn^8Il zB6+L3Eb^$@<)hK{Fd3#t&we{?vyiouQ~{c>a1bcoR{H_;aKOL|XYC+qFV+D6JpQ`v z_mb$ay+9g3pfNzm^F!*mWI%iqPWjheOJr5qvx#XUL zR6<+^1r!>r!1frG+65I!#0l*TQxOMBRDemBfj!Jn(ZC3cd8VBpLw)Ls;1L>E+Y+Ky zVE)neI1LkRL%=1vY;@bHi5Bi=ta1@sTZR$iN>>+`*ELWg*kPC=wCTzmq;xgm2lE(o z@iOMD4ZNTM1nHX-&|zWlD=6Ps{o4OySX76+285Jbj!SFQqb_wy);E@IePx$j%Z5IV z*XS#zRfm@N0q}Pk+8hSbhMyWtkh(sK(!F5OH#gTdqMUZXafabjy*iQHhfnwjTe_MZ z4$?S->uE+C>a9TBz<}F7W{h_2o%|&B;w}jib+%H7?EUyfH4Z5`aQem2)?z zImw&3mD_n8fhw;8WZ2JFrfbS!<=p!-`HKbMwXQ11=JGn`J_LYD-mr;UIsBTE=>{c7>#CM-d~AIH z0L5VBqm9HX{x`@C1i|JpJ=vPJ^46?=N@fiJ)eFlqll3>rr&L~BKFvAvJInK`nO^`+ zts+RWDnO#Qi#Y=m3#4EB5n#m8`aD{%&p`%)wd0Am!7$>7Krrc;M0Do;MI`+Qr@Vb0 zFmNJ>81W7+co#?ONm}^UAWeqhNcj2h0$%3ZwjtWvfYYTx%zzxQqs<3q z!!~Z%{+={oHcTf8yZ=7mN2S-4!I507VsucKA~$g`{?%b{TP@%Z%?$ zM!I_M>42MHG09fEfxNbWyJ$~lQK(GLE#m8K&sk^m|>KtH4xCU>8#>Y0AZ0xXhr|qE0DLr7~ZEJ4h5s)*P!& zE!u?d-1nbO-JeU=WOSgN49z*a`P zy3Rm{6BS0Xi_|1L?WjYj=0*ZjsIZZgf#^$6_jDI^Pj>+j0#lyee0i3iSwR+1f92(A zsNFd1S>Tbtibj8nqd3&rVU5MVwMD@Zhfpz@^zi!2TNKkv<*PZc@glu_F6(4(UY8p$ z(_7~;EsTsFs;eWec8vRp2K2?RknA8q{1dMsK_u7q9#qiA7XPhIm&yqDW>L)E!pcS7 h2V$3sq|gEzzVupNsabZYgZBQab`@L2dya>E`5(SpyWIc) literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e1549f1d5ce74a6944c8d0c5ea82754f3eba495 GIT binary patch literal 20978 zcmbt+32+=&dR})=&w;@J7=j=Oo@yQ<0g3=filiipqQq0AL_!n^Nvl~&vjcPk7;rAV zZji!k&)QkgC2GsEAbpCbY;Te3~ zZ^bmt)^eJy+eS&x>GEyl4Ec`bV)AX~O!cR_ZDD=6ZGZVV3&J*<4og@zSPpf3Cm0Ik&kykQDu^2yvuDeEmgR(?G9c=?Ik6Y|_wI#qr$_hk8W?zB8-OHY;0QogzLT>1Ij z^Sb72eP37q2rD;$mARU`s%y_`_7;2au4WH9SC?YBYfhp$;k>Y{=dL>s*;}0#myFyE zXP=pYVJX`i2Jb%i`;(0Hg_u2dL{Hk*t@YquNS;+~Uhf(i&K~E* zZJJ{-wTDqYVjn{Jr=6Y7B+7S(qXHC+6g3_}jl=dRYP`mo*kgDew~yfYbsK$!aGV?V zQOw|&{U~Pe24L(abU@pIHa9o|XRmWZptJ86@g9BI$3IBeC+w4em0uZe*w%gw{XA|z zfp?$5I-jzi#5zBT6)oWDwEYyGp2E`p2=6QU(BDseDVDA zS085YzEUW2=9{jBYg*s{E-F=J z>#b~EF3eX|zFe#zz3nI$@3B1Da|PGAfYGbs)B@WCeH@Cr=z3216>dQ=$kwtOdAp+` z20nD*%8iTXC-X1exSGFqaq{eivy*4@6KAho47x59l{4+Vq)MpPeG_YY?PC7 zu9l{WpPheTVz*?iA)7#~WX$ z74yZ)odQN7>p2Cavd716JC)nxrQ+0hZPA;nRvsODV%)_ljz)*s9j_H@<7kKjg~Kvl zt>IvCC*ARgGK>q_jnx)0p2BVCB1dW<(e!#3*J6yNBgr6@7yQrXgLIxdxPU#)2bp~S z&4ogVCj(D?`Fx>Lsd`}#D2M^+19PfcEvctk^IVy+I?b}9NS?vRO(99^DgGN$s*a%q zR4A+A6q(`LPnD|Ew_Kb?^%!1G%Se&oUmPE!L$=Zy4ym0D)SktjAGS(PW!9S;5z5N( zSPL$RDUS;FV9cE>96NDxc%+^Tb58|{64s(}^ke<0k%St-m=s4GBtn4r242|?aEH{P zrq1EzNL+Cf)FoEb=Kw-FRaaQp#uiyS;vD;a0k7Ny63yt(T6QIg59I^j1O5E|hWNUCXOlHANIEEn4`hSOx3+&6h3WW7@)B zu_AnBwg{}W*!h?g2inK+1#f2b@sXI~P=jQ}xdWC2DlQ9*C6tMc=<<5)Bzvaa+xcQO ze+$Sz>%I&CA%dD}68R5}aJd8>I;Tl=AW8{3{8MB+ZC-C0zP7Bp+2^#+>t2i#Uozf% zqoMmihGnf`072qJ4fo6|njJHNPfIZfW9CiGOUx&mDKF9NS_TB56A)%AVWyiYJ0WOf z07^HYn4N7a*`u2Kxg#J0{C^c6={Jdf_e;MSAN}b-)MmyvnOoQTH#%F}DblI>i#I|t zZtdF>o_vc`7*FHG%W(m01;DY!a1!@)@i6G$$#}2w?ia0RRR}!E}eOMo7XwCUZ&lKOv zhmBqb2Dn2=w0PFYfXJlvEdB@d19}GeVOtLs#4C*>62d0M&Ko2oYJ&2d8cPMwLdAwRX?k%A# zpa6yJuogmj6E!2+tSZR!h>N(eZlD}wd!SeGP}CYaKEVE_wya&yUO(1|`LTJZdbbR9 z7&+iBQgFvNvr=xLoH?9`b~(tW5XjgBLHq{Q?-yJK8<1nUVHAlE%H>`MzbH z|GM_JHly1KJ9#$+Dv;&=Ea{E7A9p|Cm}a#`!jFgLuTO!Q#TrR(lb=MLl-KX4mUKIX z-TK#dS97zUveVm0pSmjh?e6AgJJTFMnQr&|1XPM;-R|A0;kjp&1Wnso|Ah+l~{)VV9gRyovDNcgIN44tT41-J)*J}d;Y3iU|cDY}j|fi@xJiB*yv**H1OO=6IR zWEME|`cOlUxD58S8ABcv{ilsL!9N6>LC9W3-H?2ypeB@|pE&Aylz~z@wGWNJ7&{W^ z#kIJfK3#%dFkLOz&b*JxB1|=`D!K4#Tq*ekqJ848Dv^8 z0+VlqDy^Co&jV+*nSC5UQsk_51Lt&{gphw?X7{w)y5b2izSJ?d*vj10BHDu6`}hjd zkl(2=KtE7#p#Y+9568!SW1$;Pmcn3=K5at*lzILfo<*oh7zsW5$&WVEHk6M@v+J2~ zx2?}MtfH%=sJDdxD8u+ZHV#`K-N#=&F4$Ecn}mkU`k}Jt*pzM#eztMYx-(ato&%gt zj2x>w=RpyRkhiRYEgCl3LS7Pdt*XOBzs2eTNI zE7eh!jD~|806j~DK(y7>j{^|{`U0$kDuXQ25z_#GnK@1XokO=8lV9tX* z1~E{(ksdi7L9Z}M=*?4$JRU)c`X)ss_2UHA9pZ#&V?jy|5kLi9Wp_3&!V~6IR4qyn z^oE_bpF`m+?>TRIK~D+R5owg4DSJV03s~NRmB-kA``_%>^p`p)~NNv3YzH|{5r#(l%= z)%%TXETs?JPoXVK(lPamfJ;UX(x<9--1Ur}N1gb89v`fU7Q0l*(EZbSmCdu z+61j$H1l+*FobDUXRLw+8_WwgE{NnjmKGLqgPjC*R# zx;YTI9nkx41Kc8lmo?(Z9#1Me7cLzed<%=Of(fV6!dihVFhQ z?DcQrYYos~^9De^#ZE+#-;&ae`|6kR3LhsUU^<0Af zmMsegxf!Syz?^TRZA-8C739IVFXAh}`p|rFo5s7ad(!&WAMK_#;${bc>YPulIutkpyLR z^{WJy2r|`@ou^@f=OE~6O9|=(-UnSo0T|jq?4i(3iRdHyN33oA^&-Q)mi_x67gHfTJ+vLtMC8#Bmu3}B1p9;AMzqyAsRxL_thn}J4;yzPN{lZc@Gj!#o-s-73}aSGC5p$y6( zehSAvWt|0OtXVUvS_ajep2NjXDIOp7B__m^AR%Pk9qCnnmt|jPLIhFYVDf87g5LJbLsW_Zp@KeQR|h%hcx~Qn>&a6R724>X0-*|R4-KL@wCg62TTVJG4C>2v%roX=&?=4- zrESwUsGkDeQ3{J3tZmCc*;_I7hP+QU6JByYWv8}j(8gQ#GdQTdt|jd&n%(6aU(tR6 zx)(IewB6le_q2HcDbq0cYQFiD_U1hqM@Gg0eOvuWdmO(Z{Q!BxamZ6IdIfwRV-d)G z9gq`#Vin|Xqea^5wzKmI^pSzlIT|HUe^dRIpzE_@CnYll!q+I=3evBbI4sJYM0n_L z;vYK<7EUKa$bo^mw+j_dU`5*yskN3{bEY9P@IU}Ni?xYh)5VFKFWtC!{mS+H3)d&F zyfAUIp1=$1DJwKir3)okss$D5X}o~?@)Y!+P+5v0zlsC%OmK5=;^Xc_BI@q|)n9C^ zkaQ}Dq3S!L*Ry~){F*)d+SqIM$kQWF@294#;HHD8ae59c&IgP@zqJNk)#p(B9B_xY ziL)%oyUOyE4`;fOj+=1`?qUnQ>wTS1m`;75vtTru?*G>$w{}7t9(~OYXS-kh6AWI_ z1ijJpK85KC_f6;@C!=A&%4$wmYm15+R>(nunrxEE-0Ti9C&%DUS0llm`h2 z_f$i;L+Z;&Mw05c`C@aV^pe}PSQPYgc;3Pn0Z}6F)YLzd+MV-h)mXKTth$Do4n1g( zHgle*0ar_;40B%w(mf1zMnAr@koJe*x}fi;RZi(Y0k&%<5|D%vko;4zK|}p6+D{Wm z=O4N1Gx!MjmgCQf!Qm&dDj&elW1DpHIY~SIL1=0-C2oaJDZ2~r5WRw}$~6I5@lill$B_gn`Y1&c6J}27r}f7?4}~yu9ten`S{~F1DJ+FZ4Vxt~@ccDw_*&^%{XQSptTa4w#Y)l3=N+yr&6!#(q4U2!xM~t(t%~X->a0R> zv|Q1TD3JKtJWeoDkgJx|98>=mZ-OLtR&Y!fW|Tc4H?@ic#>fKzKF9yCWVNuhYk}?(G*l-+J)aEa~cNUJs#jT-?(UV?t312Csh= zU&52syUY=F)G!jBOIYAw2w12<9J!_b1K)6M)u-jPJBRpy5{(qKMWR`CYF>@;^(Ye9 z4h1QGoK=&+7uk#7OwKXc%H-cM8Db)Xf1p?Q_fW-V?`dRGu;3Y=WKz8`#qxFMH-^Gz@No|z zX`Nq+2k=Q6G^XQx!eiUvt~bS6)fJ>~ibse?Rb0js;49|J3FV1w{V~sv;26c6=!62{ z=Xo-T^g#R7CshTg2!BRAJoar;AW|H33fYnWf;wwgpX>B4=P&0HXEKfd`sS74{*Xi2 z9_eug){g1MIc((J1cZ-h`6d(1jNW6gP9%{?^^uPcM6Fiu2LFc4#` zs%FP2n-phSCdhGtKN>o(#`nR{I|_y!nRs2XvxsLx&NbvB+ItyY1w*l;!h`p7m`@Aq zIDMGXyYl&InDN|vK19LOD3;29wRQS5V4oQ?z7KD~?hO~Sjf#j-SabT%wV(w(Q9sj8 zsnqIA7}9@d73uXOj}RUQu9e?v@-(QUK_sbb!H1Ee3@Hz79vF zwxFp49^7$c1xxzpQPM(xQ}K|%yeeBH-G+7^L;VR~#AV^voX}ubUKQZsiF6=AgbwfG zS2+*LPZ|{+qR)#y^)NzJ<>=!iyMcgz<@w+FN6#S+mKN0j^ zFV@1-CxK`aFuus3lT`_Di)@-)pVlAqJW2eHFg#+9IxrnrPL-&&HZd8w`fsR5W%xXK36K|%3A#czICx!<4ztwm83w@kwxFxFNKX-He=s1XYgd>-zU3_m z(xF=Df6uOK~`1d$I9I>ou0=o(f1c{Z%p%m;Sy59wcznkvxcM_EZ z9pdjKirPDI&s@^p(V@_$?c=n&z-UFDWxlPy9e*444&hxrjc&Y4f_oWZuo;5dq6PkO?E$O^tSt< zGuCYMdEFi?HBgfEW)D@+M%L@~GkzAiOks(-$Zcsu zW2~{+7(|Off3vjM+8FYCu|_e}+lCg~{H@4shg*7!zg^n)dzn2W-nfkUwnipVRR@ zDoB#ORuQIJ zDUH7$Q|G*s{s`I~^3mslE+q$>kNJmK!#?OezNGbO&uH(&yeH;QVb!0+j-1Ah31!`KWdL7ybCuR){WG3-&hCfs6g7$ykH-}+8@KtTx?$Qk2Rm=j$(Zt^)CC5 z-izPU{q((ree~UU<9NHrBk1u2W^-Z&;XU3J``D8HH}s#<-y3V31eE7sfO^zFNz+r~ zG5@jV^WIhe_|k*s_}$KtiF|#c@GhA1mC!0=A<}}u%8@53vfI)^b;_EcoeGXJ+OiNK zI1dkNhn-f;P*MFhML!ir5JCl^@GjDiyo0BRmaw)}va@kW_fJ_2rlzLkLUJP~fcqQ% zGAO5ETzk~E(<$Bw1&jcp$RV$QjCIPoDSjq;-o?o;;nA(xM8X~|#D_UZ0c7EihG2Bq z3AoLUPFb(aIamwv^G_`z95>=qE7P*BiILHn#RFMruL43g!|0iC$Rhl>)=P-^mfHf3jWIi=Q|$>J;&z9Y#*mF7vfG-2VOo55 z3l&PdSg>%@#4BIK-GDMUbP=A*HW-U*;gm*S4&&k5}*I1R3>{*WiWNzyTq?)M&LkJrLq~aL1^b(Dtw1Ljpt2_n7B6)%TG| z=qrU7h+(3ieVuQ9jY(Sq3$l^rzrCgZh7ytpEG8Z3h_)DR*)_wk_!Z~l+NSCyz+Po* z0W1-8ZsJ?CbJ$KWXNkdr4dZJl9zm2n?1vJ;`Jo<~GFGHFN{K-?!V(!~z`6WEOMrv5 zXWxSc)=?iyO^?LTw*Um)h_RJQsv+*5LKyxk&$#3vG^6cNvf#{R5RV{TIHr#C!#3Er!x(|u z$wbt#n1aBeDHBPMjN&2Sd;N1(SlQDdddYFKq*9eh=5aTIcH2Vf+gv=#%o;)==w&qY z%>DY22QA}+z=-t&gZq7U`=6Pt(~P-{?Zd$Fhp`YMg=ufYTW*W?%^+xM-Vc{^wan8xf{L z?{&~kPdj2^-^V1eb-3L990alPfHz2gYSah}N$?Xm!^% z#f=_Z4q7=~8^XtC(@3^z@w?C`$~jWdgO#z$*%{opn?L3_xj|ZNC{Z8#(Z<;7{X1yB z@zzsWl@r806J-=;m%AwsqAlW6aXEt94`hfzc`@HMW?*)+6A+j~bV#lbe{3JgApn#> z!7O!l523C+oSmV8xGsj{UGO}G)$mb0h~aht7D$HM-axg4S07^;)IUe2e(pg_!07DG z9bUUlD?x-0z+ozT{K$HI6PcF1nbzj|cBo5?-PGsdQCv0=ZwS1H+TTc^&Esg3TKr+>viqkigMjAx0*^zU=6re0!59^@{tWU@wZf0(df#sbY6 zv&Oh$9h8jWb&zNvKh0GaN(h)kcr8RY+bR`rL7Y2yI+ClfNoU4S^X#2DIHrDr9ev@Y z%B@QE4g#4%(F;}Dl9P1Uu!bQgtx#D64gDp$$8g<+sg|IDFve&=B3Kj{9wl}*whY5PI6K>xNumL#nkFr@x2B zVh`6qwG4ebO!wdpG4uPT*=vADkd_I*NPW+Y_rj?EgXr2?;A;K^z!@P85Yp z)gO5fiQ1sus*%&^Nm?%>=L)Zk99$G+6v02nEwg$AMo`WKZjfbNo?y;FBm`M>GMW_$ zKp3>Ll~cIO$G4DRUu1Sa%K}aj)4hm%5a)%?DD1jTe1k0*bEJ55;Ot(`R=5%{u0Hw$ z=DWVF`XltVYT5)u0YV6G9T~bdIN^Dt3Ck|XFW3#QVj<`QPio9JY}iM5d7%-joNm9P z1MoR{XGZU=_PaRV&8%vNa1s&twcA?lEeig(=>bSg)XgzmANuHf4Es(;hIrWTi+|1n z6S)E`;uJbM=*&;?vCKqP)KudA;j%_HOVL_LO|ja)jbdE)fxBS!GK)c490B<|iZR3L z1ebXL)#<~fn9}}-MEC=jeLbwu%}ZFVKVlpC|D*W0myvjyhbaE=GUO6&sNg;j@2=pc z3$-Hf8{Ce=Q-WLK9>JX;y_w{OxTl$yu*z)Y^{mIRP>9JBV)~PSt^OgCSDDDN2&v8S zF~q^nkSCs}VDroZdqT`fK7fTI zy-eft;APto$|^*~X<5;dD4wrK2tXaZ{&;k!PAndnL}>b0oDTWk9pS2T5b?oUp+xf* z8yGHZBJ}8V70bM3j=;dc6o)UanS)8>8T}JYZbM?!$6-T5so|mr7w&aVn_H_H^@FYT zTdNSRX@g69vk4>e_M`W7VKn>reeQob$*sX-oW;tfn}sg7K#Zp#96qlYq}?oVZtq8o!BZP-Qo_B3+`J({d|zrfTFI~JjdGUfo2n2~R zBoPvVp!f;S<{M0i?16r#p1ktHr{U0leMG-Ba!rl%RfVsT(M3RH5SYt*g>v3x=gzU# zc_v$#bTiq{glth!E2 zrVb(rZy-R6c7tAAwV0l3T^GPJ4k+$(MUj%Y1sWN_5X%;1qI~F9U!fI$K)45(kU6Mt zvWK|sOfAd?DQFN7wH6%pXM9Blhv>snb!rOnn5o+ZRYWYD8>IN#1G2@x%NnN4m*Pe! z27Z}^JtFUv@mmB%gwLyg#kar6szEQ0T;V24*OVu-!uwe13K3PH@|^%1$WA@P)Qp*cv%ombrG z2)_|uEOFo?kB4afe+ZUhS15FSm%0DTY zp)i2UD*>*`w#aF)sZ&7>UvF9~1-XhkE@%jvxoSJ}{c>%trI>~7qKLCqg^B{?n%V*e zvNo|Z`k4&1o7L6;2)h%Wy9cioe(HywU-|utP`F9D3)9oMR~4j4`Z$U}2xn(FEy50= z*Q?**Vr}iXxw^d}LwbpxuwS|_k&S#E1=nFL*dL*Nv zbreXA-nO4ItkAloAQyI84-#~a%d8-$OHPTQ9Hl*8XuSJv7WZIkegMWfqt(oB1p9X1)@G|>kOYm$O1z4 zapM+NFmOV+*L?l+#w)o0Z=>Gl^a|SZ`-pZVj2?^O()cB)%@_(}PsUoIw_s@0T!nZA zCVv0{C36^epgW4nXee27yTdD4n>ZQZHX^$tvh|P2(KvbytHAX^IKwT@JoK`6&=SH` z8xWLmL4+w14E|_5p;SbM{_mtI#FP-O%`6z1e4gFz*o50d%3U7bdJ z%@;V8$2q{WOfE9niv;&cLdO#>y}4tgZlR?8E!O{!Ox|E}f>jf|x_I(<_>&_&P8nCY z#v%i?ilG(+QSfIEzs}-@B7lemYNp+;_KqZ$;P!?>SS z09N9##6c*sOb`O#W4s^b0Ckn3N*$TD_{Pycs_=p<@QxC3w+x~Tk-Dn!hOBR7V zw5A$<{iNh#KA_C_tt3?v;Xv(W)o{S={wS=VYN&IECKn2B!S2-%Wj%qLHIEWF zZa#Te<&I1k9P~}T5!sYdY7oP$gT5=RD<}B%m>bnQ;nkT*)+9ZVAL0;!HxxoeGW%t| z_!TC<%H+40P{0%OT_~r1#K%8nA_5|byE?~2&N+`=$I)FOn5om)0Q{QK8C1|*j@M+c z`3C>Axee%-`}zAJ_?L7b&R-G9;(p9fA_K0JF|u9cID@gB$)RL+AZreH4_)B}_RRLI zIn+xI#}IAs!;dr8&KG-!do$T|Hj(XyZp8oZt|l0)X?!R1W7>~tL#961^Mh*rKRSVM Awg3PC literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/editable_legacy.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/editable_legacy.py new file mode 100644 index 0000000..5bd72ca --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/editable_legacy.py @@ -0,0 +1,46 @@ +"""Legacy editable installation process, i.e. `setup.py develop`. +""" +import logging +from typing import List, Optional, Sequence + +from pip._internal.build_env import BuildEnvironment +from pip._internal.utils.logging import indent_log +from pip._internal.utils.setuptools_build import make_setuptools_develop_args +from pip._internal.utils.subprocess import call_subprocess + +logger = logging.getLogger(__name__) + + +def install_editable( + install_options: List[str], + global_options: Sequence[str], + prefix: Optional[str], + home: Optional[str], + use_user_site: bool, + name: str, + setup_py_path: str, + isolated: bool, + build_env: BuildEnvironment, + unpacked_source_directory: str, +) -> None: + """Install a package in editable mode. Most arguments are pass-through + to setuptools. + """ + logger.info("Running setup.py develop for %s", name) + + args = make_setuptools_develop_args( + setup_py_path, + global_options=global_options, + install_options=install_options, + no_user_config=isolated, + prefix=prefix, + home=home, + use_user_site=use_user_site, + ) + + with indent_log(): + with build_env: + call_subprocess( + args, + cwd=unpacked_source_directory, + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/legacy.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/legacy.py new file mode 100644 index 0000000..2206c93 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/legacy.py @@ -0,0 +1,125 @@ +"""Legacy installation process, i.e. `setup.py install`. +""" + +import logging +import os +from distutils.util import change_root +from typing import List, Optional, Sequence + +from pip._internal.build_env import BuildEnvironment +from pip._internal.exceptions import InstallationError +from pip._internal.models.scheme import Scheme +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ensure_dir +from pip._internal.utils.setuptools_build import make_setuptools_install_args +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +class LegacyInstallFailure(Exception): + pass + + +def write_installed_files_from_setuptools_record( + record_lines: List[str], + root: Optional[str], + req_description: str, +) -> None: + def prepend_root(path: str) -> str: + if root is None or not os.path.isabs(path): + return path + else: + return change_root(root, path) + + for line in record_lines: + directory = os.path.dirname(line) + if directory.endswith(".egg-info"): + egg_info_dir = prepend_root(directory) + break + else: + message = ( + "{} did not indicate that it installed an " + ".egg-info directory. Only setup.py projects " + "generating .egg-info directories are supported." + ).format(req_description) + raise InstallationError(message) + + new_lines = [] + for line in record_lines: + filename = line.strip() + if os.path.isdir(filename): + filename += os.path.sep + new_lines.append(os.path.relpath(prepend_root(filename), egg_info_dir)) + new_lines.sort() + ensure_dir(egg_info_dir) + inst_files_path = os.path.join(egg_info_dir, "installed-files.txt") + with open(inst_files_path, "w") as f: + f.write("\n".join(new_lines) + "\n") + + +def install( + install_options: List[str], + global_options: Sequence[str], + root: Optional[str], + home: Optional[str], + prefix: Optional[str], + use_user_site: bool, + pycompile: bool, + scheme: Scheme, + setup_py_path: str, + isolated: bool, + req_name: str, + build_env: BuildEnvironment, + unpacked_source_directory: str, + req_description: str, +) -> bool: + + header_dir = scheme.headers + + with TempDirectory(kind="record") as temp_dir: + try: + record_filename = os.path.join(temp_dir.path, "install-record.txt") + install_args = make_setuptools_install_args( + setup_py_path, + global_options=global_options, + install_options=install_options, + record_filename=record_filename, + root=root, + prefix=prefix, + header_dir=header_dir, + home=home, + use_user_site=use_user_site, + no_user_config=isolated, + pycompile=pycompile, + ) + + runner = runner_with_spinner_message( + f"Running setup.py install for {req_name}" + ) + with indent_log(), build_env: + runner( + cmd=install_args, + cwd=unpacked_source_directory, + ) + + if not os.path.exists(record_filename): + logger.debug("Record file %s not found", record_filename) + # Signal to the caller that we didn't install the new package + return False + + except Exception as e: + # Signal to the caller that we didn't install the new package + raise LegacyInstallFailure from e + + # At this point, we have successfully installed the requirement. + + # We intentionally do not use any encoding to read the file because + # setuptools writes the file using distutils.file_util.write_file, + # which does not specify an encoding. + with open(record_filename) as f: + record_lines = f.read().splitlines() + + write_installed_files_from_setuptools_record(record_lines, root, req_description) + return True diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/wheel.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/wheel.py new file mode 100644 index 0000000..e191b13 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/wheel.py @@ -0,0 +1,738 @@ +"""Support for installing and building the "wheel" binary package format. +""" + +import collections +import compileall +import contextlib +import csv +import importlib +import logging +import os.path +import re +import shutil +import sys +import warnings +from base64 import urlsafe_b64encode +from email.message import Message +from itertools import chain, filterfalse, starmap +from typing import ( + IO, + TYPE_CHECKING, + Any, + BinaryIO, + Callable, + Dict, + Iterable, + Iterator, + List, + NewType, + Optional, + Sequence, + Set, + Tuple, + Union, + cast, +) +from zipfile import ZipFile, ZipInfo + +from pip._vendor.distlib.scripts import ScriptMaker +from pip._vendor.distlib.util import get_export_entry +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InstallationError +from pip._internal.locations import get_major_minor_version +from pip._internal.metadata import ( + BaseDistribution, + FilesystemWheel, + get_wheel_distribution, +) +from pip._internal.models.direct_url import DIRECT_URL_METADATA_NAME, DirectUrl +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.filesystem import adjacent_tmp_file, replace +from pip._internal.utils.misc import captured_stdout, ensure_dir, hash_file, partition +from pip._internal.utils.unpacking import ( + current_umask, + is_within_directory, + set_extracted_file_to_default_mode_plus_executable, + zip_item_is_executable, +) +from pip._internal.utils.wheel import parse_wheel + +if TYPE_CHECKING: + from typing import Protocol + + class File(Protocol): + src_record_path: "RecordPath" + dest_path: str + changed: bool + + def save(self) -> None: + pass + + +logger = logging.getLogger(__name__) + +RecordPath = NewType("RecordPath", str) +InstalledCSVRow = Tuple[RecordPath, str, Union[int, str]] + + +def rehash(path: str, blocksize: int = 1 << 20) -> Tuple[str, str]: + """Return (encoded_digest, length) for path using hashlib.sha256()""" + h, length = hash_file(path, blocksize) + digest = "sha256=" + urlsafe_b64encode(h.digest()).decode("latin1").rstrip("=") + return (digest, str(length)) + + +def csv_io_kwargs(mode: str) -> Dict[str, Any]: + """Return keyword arguments to properly open a CSV file + in the given mode. + """ + return {"mode": mode, "newline": "", "encoding": "utf-8"} + + +def fix_script(path: str) -> bool: + """Replace #!python with #!/path/to/python + Return True if file was changed. + """ + # XXX RECORD hashes will need to be updated + assert os.path.isfile(path) + + with open(path, "rb") as script: + firstline = script.readline() + if not firstline.startswith(b"#!python"): + return False + exename = sys.executable.encode(sys.getfilesystemencoding()) + firstline = b"#!" + exename + os.linesep.encode("ascii") + rest = script.read() + with open(path, "wb") as script: + script.write(firstline) + script.write(rest) + return True + + +def wheel_root_is_purelib(metadata: Message) -> bool: + return metadata.get("Root-Is-Purelib", "").lower() == "true" + + +def get_entrypoints(dist: BaseDistribution) -> Tuple[Dict[str, str], Dict[str, str]]: + console_scripts = {} + gui_scripts = {} + for entry_point in dist.iter_entry_points(): + if entry_point.group == "console_scripts": + console_scripts[entry_point.name] = entry_point.value + elif entry_point.group == "gui_scripts": + gui_scripts[entry_point.name] = entry_point.value + return console_scripts, gui_scripts + + +def message_about_scripts_not_on_PATH(scripts: Sequence[str]) -> Optional[str]: + """Determine if any scripts are not on PATH and format a warning. + Returns a warning message if one or more scripts are not on PATH, + otherwise None. + """ + if not scripts: + return None + + # Group scripts by the path they were installed in + grouped_by_dir: Dict[str, Set[str]] = collections.defaultdict(set) + for destfile in scripts: + parent_dir = os.path.dirname(destfile) + script_name = os.path.basename(destfile) + grouped_by_dir[parent_dir].add(script_name) + + # We don't want to warn for directories that are on PATH. + not_warn_dirs = [ + os.path.normcase(i).rstrip(os.sep) + for i in os.environ.get("PATH", "").split(os.pathsep) + ] + # If an executable sits with sys.executable, we don't warn for it. + # This covers the case of venv invocations without activating the venv. + not_warn_dirs.append(os.path.normcase(os.path.dirname(sys.executable))) + warn_for: Dict[str, Set[str]] = { + parent_dir: scripts + for parent_dir, scripts in grouped_by_dir.items() + if os.path.normcase(parent_dir) not in not_warn_dirs + } + if not warn_for: + return None + + # Format a message + msg_lines = [] + for parent_dir, dir_scripts in warn_for.items(): + sorted_scripts: List[str] = sorted(dir_scripts) + if len(sorted_scripts) == 1: + start_text = "script {} is".format(sorted_scripts[0]) + else: + start_text = "scripts {} are".format( + ", ".join(sorted_scripts[:-1]) + " and " + sorted_scripts[-1] + ) + + msg_lines.append( + "The {} installed in '{}' which is not on PATH.".format( + start_text, parent_dir + ) + ) + + last_line_fmt = ( + "Consider adding {} to PATH or, if you prefer " + "to suppress this warning, use --no-warn-script-location." + ) + if len(msg_lines) == 1: + msg_lines.append(last_line_fmt.format("this directory")) + else: + msg_lines.append(last_line_fmt.format("these directories")) + + # Add a note if any directory starts with ~ + warn_for_tilde = any( + i[0] == "~" for i in os.environ.get("PATH", "").split(os.pathsep) if i + ) + if warn_for_tilde: + tilde_warning_msg = ( + "NOTE: The current PATH contains path(s) starting with `~`, " + "which may not be expanded by all applications." + ) + msg_lines.append(tilde_warning_msg) + + # Returns the formatted multiline message + return "\n".join(msg_lines) + + +def _normalized_outrows( + outrows: Iterable[InstalledCSVRow], +) -> List[Tuple[str, str, str]]: + """Normalize the given rows of a RECORD file. + + Items in each row are converted into str. Rows are then sorted to make + the value more predictable for tests. + + Each row is a 3-tuple (path, hash, size) and corresponds to a record of + a RECORD file (see PEP 376 and PEP 427 for details). For the rows + passed to this function, the size can be an integer as an int or string, + or the empty string. + """ + # Normally, there should only be one row per path, in which case the + # second and third elements don't come into play when sorting. + # However, in cases in the wild where a path might happen to occur twice, + # we don't want the sort operation to trigger an error (but still want + # determinism). Since the third element can be an int or string, we + # coerce each element to a string to avoid a TypeError in this case. + # For additional background, see-- + # https://github.com/pypa/pip/issues/5868 + return sorted( + (record_path, hash_, str(size)) for record_path, hash_, size in outrows + ) + + +def _record_to_fs_path(record_path: RecordPath) -> str: + return record_path + + +def _fs_to_record_path(path: str, relative_to: Optional[str] = None) -> RecordPath: + if relative_to is not None: + # On Windows, do not handle relative paths if they belong to different + # logical disks + if ( + os.path.splitdrive(path)[0].lower() + == os.path.splitdrive(relative_to)[0].lower() + ): + path = os.path.relpath(path, relative_to) + path = path.replace(os.path.sep, "/") + return cast("RecordPath", path) + + +def get_csv_rows_for_installed( + old_csv_rows: List[List[str]], + installed: Dict[RecordPath, RecordPath], + changed: Set[RecordPath], + generated: List[str], + lib_dir: str, +) -> List[InstalledCSVRow]: + """ + :param installed: A map from archive RECORD path to installation RECORD + path. + """ + installed_rows: List[InstalledCSVRow] = [] + for row in old_csv_rows: + if len(row) > 3: + logger.warning("RECORD line has more than three elements: %s", row) + old_record_path = cast("RecordPath", row[0]) + new_record_path = installed.pop(old_record_path, old_record_path) + if new_record_path in changed: + digest, length = rehash(_record_to_fs_path(new_record_path)) + else: + digest = row[1] if len(row) > 1 else "" + length = row[2] if len(row) > 2 else "" + installed_rows.append((new_record_path, digest, length)) + for f in generated: + path = _fs_to_record_path(f, lib_dir) + digest, length = rehash(f) + installed_rows.append((path, digest, length)) + for installed_record_path in installed.values(): + installed_rows.append((installed_record_path, "", "")) + return installed_rows + + +def get_console_script_specs(console: Dict[str, str]) -> List[str]: + """ + Given the mapping from entrypoint name to callable, return the relevant + console script specs. + """ + # Don't mutate caller's version + console = console.copy() + + scripts_to_generate = [] + + # Special case pip and setuptools to generate versioned wrappers + # + # The issue is that some projects (specifically, pip and setuptools) use + # code in setup.py to create "versioned" entry points - pip2.7 on Python + # 2.7, pip3.3 on Python 3.3, etc. But these entry points are baked into + # the wheel metadata at build time, and so if the wheel is installed with + # a *different* version of Python the entry points will be wrong. The + # correct fix for this is to enhance the metadata to be able to describe + # such versioned entry points, but that won't happen till Metadata 2.0 is + # available. + # In the meantime, projects using versioned entry points will either have + # incorrect versioned entry points, or they will not be able to distribute + # "universal" wheels (i.e., they will need a wheel per Python version). + # + # Because setuptools and pip are bundled with _ensurepip and virtualenv, + # we need to use universal wheels. So, as a stopgap until Metadata 2.0, we + # override the versioned entry points in the wheel and generate the + # correct ones. This code is purely a short-term measure until Metadata 2.0 + # is available. + # + # To add the level of hack in this section of code, in order to support + # ensurepip this code will look for an ``ENSUREPIP_OPTIONS`` environment + # variable which will control which version scripts get installed. + # + # ENSUREPIP_OPTIONS=altinstall + # - Only pipX.Y and easy_install-X.Y will be generated and installed + # ENSUREPIP_OPTIONS=install + # - pipX.Y, pipX, easy_install-X.Y will be generated and installed. Note + # that this option is technically if ENSUREPIP_OPTIONS is set and is + # not altinstall + # DEFAULT + # - The default behavior is to install pip, pipX, pipX.Y, easy_install + # and easy_install-X.Y. + pip_script = console.pop("pip", None) + if pip_script: + if "ENSUREPIP_OPTIONS" not in os.environ: + scripts_to_generate.append("pip = " + pip_script) + + if os.environ.get("ENSUREPIP_OPTIONS", "") != "altinstall": + scripts_to_generate.append( + "pip{} = {}".format(sys.version_info[0], pip_script) + ) + + scripts_to_generate.append(f"pip{get_major_minor_version()} = {pip_script}") + # Delete any other versioned pip entry points + pip_ep = [k for k in console if re.match(r"pip(\d(\.\d)?)?$", k)] + for k in pip_ep: + del console[k] + easy_install_script = console.pop("easy_install", None) + if easy_install_script: + if "ENSUREPIP_OPTIONS" not in os.environ: + scripts_to_generate.append("easy_install = " + easy_install_script) + + scripts_to_generate.append( + "easy_install-{} = {}".format( + get_major_minor_version(), easy_install_script + ) + ) + # Delete any other versioned easy_install entry points + easy_install_ep = [ + k for k in console if re.match(r"easy_install(-\d\.\d)?$", k) + ] + for k in easy_install_ep: + del console[k] + + # Generate the console entry points specified in the wheel + scripts_to_generate.extend(starmap("{} = {}".format, console.items())) + + return scripts_to_generate + + +class ZipBackedFile: + def __init__( + self, src_record_path: RecordPath, dest_path: str, zip_file: ZipFile + ) -> None: + self.src_record_path = src_record_path + self.dest_path = dest_path + self._zip_file = zip_file + self.changed = False + + def _getinfo(self) -> ZipInfo: + return self._zip_file.getinfo(self.src_record_path) + + def save(self) -> None: + # directory creation is lazy and after file filtering + # to ensure we don't install empty dirs; empty dirs can't be + # uninstalled. + parent_dir = os.path.dirname(self.dest_path) + ensure_dir(parent_dir) + + # When we open the output file below, any existing file is truncated + # before we start writing the new contents. This is fine in most + # cases, but can cause a segfault if pip has loaded a shared + # object (e.g. from pyopenssl through its vendored urllib3) + # Since the shared object is mmap'd an attempt to call a + # symbol in it will then cause a segfault. Unlinking the file + # allows writing of new contents while allowing the process to + # continue to use the old copy. + if os.path.exists(self.dest_path): + os.unlink(self.dest_path) + + zipinfo = self._getinfo() + + with self._zip_file.open(zipinfo) as f: + with open(self.dest_path, "wb") as dest: + shutil.copyfileobj(f, dest) + + if zip_item_is_executable(zipinfo): + set_extracted_file_to_default_mode_plus_executable(self.dest_path) + + +class ScriptFile: + def __init__(self, file: "File") -> None: + self._file = file + self.src_record_path = self._file.src_record_path + self.dest_path = self._file.dest_path + self.changed = False + + def save(self) -> None: + self._file.save() + self.changed = fix_script(self.dest_path) + + +class MissingCallableSuffix(InstallationError): + def __init__(self, entry_point: str) -> None: + super().__init__( + "Invalid script entry point: {} - A callable " + "suffix is required. Cf https://packaging.python.org/" + "specifications/entry-points/#use-for-scripts for more " + "information.".format(entry_point) + ) + + +def _raise_for_invalid_entrypoint(specification: str) -> None: + entry = get_export_entry(specification) + if entry is not None and entry.suffix is None: + raise MissingCallableSuffix(str(entry)) + + +class PipScriptMaker(ScriptMaker): + def make(self, specification: str, options: Dict[str, Any] = None) -> List[str]: + _raise_for_invalid_entrypoint(specification) + return super().make(specification, options) + + +def _install_wheel( + name: str, + wheel_zip: ZipFile, + wheel_path: str, + scheme: Scheme, + pycompile: bool = True, + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, +) -> None: + """Install a wheel. + + :param name: Name of the project to install + :param wheel_zip: open ZipFile for wheel being installed + :param scheme: Distutils scheme dictating the install directories + :param req_description: String used in place of the requirement, for + logging + :param pycompile: Whether to byte-compile installed Python files + :param warn_script_location: Whether to check that scripts are installed + into a directory on PATH + :raises UnsupportedWheel: + * when the directory holds an unpacked wheel with incompatible + Wheel-Version + * when the .dist-info dir does not match the wheel + """ + info_dir, metadata = parse_wheel(wheel_zip, name) + + if wheel_root_is_purelib(metadata): + lib_dir = scheme.purelib + else: + lib_dir = scheme.platlib + + # Record details of the files moved + # installed = files copied from the wheel to the destination + # changed = files changed while installing (scripts #! line typically) + # generated = files newly generated during the install (script wrappers) + installed: Dict[RecordPath, RecordPath] = {} + changed: Set[RecordPath] = set() + generated: List[str] = [] + + def record_installed( + srcfile: RecordPath, destfile: str, modified: bool = False + ) -> None: + """Map archive RECORD paths to installation RECORD paths.""" + newpath = _fs_to_record_path(destfile, lib_dir) + installed[srcfile] = newpath + if modified: + changed.add(_fs_to_record_path(destfile)) + + def is_dir_path(path: RecordPath) -> bool: + return path.endswith("/") + + def assert_no_path_traversal(dest_dir_path: str, target_path: str) -> None: + if not is_within_directory(dest_dir_path, target_path): + message = ( + "The wheel {!r} has a file {!r} trying to install" + " outside the target directory {!r}" + ) + raise InstallationError( + message.format(wheel_path, target_path, dest_dir_path) + ) + + def root_scheme_file_maker( + zip_file: ZipFile, dest: str + ) -> Callable[[RecordPath], "File"]: + def make_root_scheme_file(record_path: RecordPath) -> "File": + normed_path = os.path.normpath(record_path) + dest_path = os.path.join(dest, normed_path) + assert_no_path_traversal(dest, dest_path) + return ZipBackedFile(record_path, dest_path, zip_file) + + return make_root_scheme_file + + def data_scheme_file_maker( + zip_file: ZipFile, scheme: Scheme + ) -> Callable[[RecordPath], "File"]: + scheme_paths = {key: getattr(scheme, key) for key in SCHEME_KEYS} + + def make_data_scheme_file(record_path: RecordPath) -> "File": + normed_path = os.path.normpath(record_path) + try: + _, scheme_key, dest_subpath = normed_path.split(os.path.sep, 2) + except ValueError: + message = ( + "Unexpected file in {}: {!r}. .data directory contents" + " should be named like: '/'." + ).format(wheel_path, record_path) + raise InstallationError(message) + + try: + scheme_path = scheme_paths[scheme_key] + except KeyError: + valid_scheme_keys = ", ".join(sorted(scheme_paths)) + message = ( + "Unknown scheme key used in {}: {} (for file {!r}). .data" + " directory contents should be in subdirectories named" + " with a valid scheme key ({})" + ).format(wheel_path, scheme_key, record_path, valid_scheme_keys) + raise InstallationError(message) + + dest_path = os.path.join(scheme_path, dest_subpath) + assert_no_path_traversal(scheme_path, dest_path) + return ZipBackedFile(record_path, dest_path, zip_file) + + return make_data_scheme_file + + def is_data_scheme_path(path: RecordPath) -> bool: + return path.split("/", 1)[0].endswith(".data") + + paths = cast(List[RecordPath], wheel_zip.namelist()) + file_paths = filterfalse(is_dir_path, paths) + root_scheme_paths, data_scheme_paths = partition(is_data_scheme_path, file_paths) + + make_root_scheme_file = root_scheme_file_maker(wheel_zip, lib_dir) + files: Iterator[File] = map(make_root_scheme_file, root_scheme_paths) + + def is_script_scheme_path(path: RecordPath) -> bool: + parts = path.split("/", 2) + return len(parts) > 2 and parts[0].endswith(".data") and parts[1] == "scripts" + + other_scheme_paths, script_scheme_paths = partition( + is_script_scheme_path, data_scheme_paths + ) + + make_data_scheme_file = data_scheme_file_maker(wheel_zip, scheme) + other_scheme_files = map(make_data_scheme_file, other_scheme_paths) + files = chain(files, other_scheme_files) + + # Get the defined entry points + distribution = get_wheel_distribution( + FilesystemWheel(wheel_path), + canonicalize_name(name), + ) + console, gui = get_entrypoints(distribution) + + def is_entrypoint_wrapper(file: "File") -> bool: + # EP, EP.exe and EP-script.py are scripts generated for + # entry point EP by setuptools + path = file.dest_path + name = os.path.basename(path) + if name.lower().endswith(".exe"): + matchname = name[:-4] + elif name.lower().endswith("-script.py"): + matchname = name[:-10] + elif name.lower().endswith(".pya"): + matchname = name[:-4] + else: + matchname = name + # Ignore setuptools-generated scripts + return matchname in console or matchname in gui + + script_scheme_files: Iterator[File] = map( + make_data_scheme_file, script_scheme_paths + ) + script_scheme_files = filterfalse(is_entrypoint_wrapper, script_scheme_files) + script_scheme_files = map(ScriptFile, script_scheme_files) + files = chain(files, script_scheme_files) + + for file in files: + file.save() + record_installed(file.src_record_path, file.dest_path, file.changed) + + def pyc_source_file_paths() -> Iterator[str]: + # We de-duplicate installation paths, since there can be overlap (e.g. + # file in .data maps to same location as file in wheel root). + # Sorting installation paths makes it easier to reproduce and debug + # issues related to permissions on existing files. + for installed_path in sorted(set(installed.values())): + full_installed_path = os.path.join(lib_dir, installed_path) + if not os.path.isfile(full_installed_path): + continue + if not full_installed_path.endswith(".py"): + continue + yield full_installed_path + + def pyc_output_path(path: str) -> str: + """Return the path the pyc file would have been written to.""" + return importlib.util.cache_from_source(path) + + # Compile all of the pyc files for the installed files + if pycompile: + with captured_stdout() as stdout: + with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + for path in pyc_source_file_paths(): + success = compileall.compile_file(path, force=True, quiet=True) + if success: + pyc_path = pyc_output_path(path) + assert os.path.exists(pyc_path) + pyc_record_path = cast( + "RecordPath", pyc_path.replace(os.path.sep, "/") + ) + record_installed(pyc_record_path, pyc_path) + logger.debug(stdout.getvalue()) + + maker = PipScriptMaker(None, scheme.scripts) + + # Ensure old scripts are overwritten. + # See https://github.com/pypa/pip/issues/1800 + maker.clobber = True + + # Ensure we don't generate any variants for scripts because this is almost + # never what somebody wants. + # See https://bitbucket.org/pypa/distlib/issue/35/ + maker.variants = {""} + + # This is required because otherwise distlib creates scripts that are not + # executable. + # See https://bitbucket.org/pypa/distlib/issue/32/ + maker.set_mode = True + + # Generate the console and GUI entry points specified in the wheel + scripts_to_generate = get_console_script_specs(console) + + gui_scripts_to_generate = list(starmap("{} = {}".format, gui.items())) + + generated_console_scripts = maker.make_multiple(scripts_to_generate) + generated.extend(generated_console_scripts) + + generated.extend(maker.make_multiple(gui_scripts_to_generate, {"gui": True})) + + if warn_script_location: + msg = message_about_scripts_not_on_PATH(generated_console_scripts) + if msg is not None: + logger.warning(msg) + + generated_file_mode = 0o666 & ~current_umask() + + @contextlib.contextmanager + def _generate_file(path: str, **kwargs: Any) -> Iterator[BinaryIO]: + with adjacent_tmp_file(path, **kwargs) as f: + yield f + os.chmod(f.name, generated_file_mode) + replace(f.name, path) + + dest_info_dir = os.path.join(lib_dir, info_dir) + + # Record pip as the installer + installer_path = os.path.join(dest_info_dir, "INSTALLER") + with _generate_file(installer_path) as installer_file: + installer_file.write(b"pip\n") + generated.append(installer_path) + + # Record the PEP 610 direct URL reference + if direct_url is not None: + direct_url_path = os.path.join(dest_info_dir, DIRECT_URL_METADATA_NAME) + with _generate_file(direct_url_path) as direct_url_file: + direct_url_file.write(direct_url.to_json().encode("utf-8")) + generated.append(direct_url_path) + + # Record the REQUESTED file + if requested: + requested_path = os.path.join(dest_info_dir, "REQUESTED") + with open(requested_path, "wb"): + pass + generated.append(requested_path) + + record_text = distribution.read_text("RECORD") + record_rows = list(csv.reader(record_text.splitlines())) + + rows = get_csv_rows_for_installed( + record_rows, + installed=installed, + changed=changed, + generated=generated, + lib_dir=lib_dir, + ) + + # Record details of all files installed + record_path = os.path.join(dest_info_dir, "RECORD") + + with _generate_file(record_path, **csv_io_kwargs("w")) as record_file: + # Explicitly cast to typing.IO[str] as a workaround for the mypy error: + # "writer" has incompatible type "BinaryIO"; expected "_Writer" + writer = csv.writer(cast("IO[str]", record_file)) + writer.writerows(_normalized_outrows(rows)) + + +@contextlib.contextmanager +def req_error_context(req_description: str) -> Iterator[None]: + try: + yield + except InstallationError as e: + message = "For req: {}. {}".format(req_description, e.args[0]) + raise InstallationError(message) from e + + +def install_wheel( + name: str, + wheel_path: str, + scheme: Scheme, + req_description: str, + pycompile: bool = True, + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, +) -> None: + with ZipFile(wheel_path, allowZip64=True) as z: + with req_error_context(req_description): + _install_wheel( + name=name, + wheel_zip=z, + wheel_path=wheel_path, + scheme=scheme, + pycompile=pycompile, + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=requested, + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/operations/prepare.py b/.venv/lib/python3.9/site-packages/pip/_internal/operations/prepare.py new file mode 100644 index 0000000..34cf9a5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/operations/prepare.py @@ -0,0 +1,632 @@ +"""Prepares a distribution for installation +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import logging +import mimetypes +import os +import shutil +from typing import Dict, Iterable, List, Optional + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.distributions import make_distribution_for_install_requirement +from pip._internal.distributions.installed import InstalledDistribution +from pip._internal.exceptions import ( + DirectoryUrlHashUnsupported, + HashMismatch, + HashUnpinned, + InstallationError, + NetworkConnectionError, + PreviousBuildDirError, + VcsHashUnsupported, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.network.download import BatchDownloader, Downloader +from pip._internal.network.lazy_wheel import ( + HTTPRangeRequestUnsupported, + dist_from_wheel_url, +) +from pip._internal.network.session import PipSession +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_tracker import RequirementTracker +from pip._internal.utils.filesystem import copy2_fixed +from pip._internal.utils.hashes import Hashes, MissingHashes +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import display_path, hide_url, is_installable_dir, rmtree +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.unpacking import unpack_file +from pip._internal.vcs import vcs + +logger = logging.getLogger(__name__) + + +def _get_prepared_distribution( + req: InstallRequirement, + req_tracker: RequirementTracker, + finder: PackageFinder, + build_isolation: bool, +) -> BaseDistribution: + """Prepare a distribution for installation.""" + abstract_dist = make_distribution_for_install_requirement(req) + with req_tracker.track(req): + abstract_dist.prepare_distribution_metadata(finder, build_isolation) + return abstract_dist.get_metadata_distribution() + + +def unpack_vcs_link(link: Link, location: str) -> None: + vcs_backend = vcs.get_backend_for_scheme(link.scheme) + assert vcs_backend is not None + vcs_backend.unpack(location, url=hide_url(link.url)) + + +class File: + def __init__(self, path: str, content_type: Optional[str]) -> None: + self.path = path + if content_type is None: + self.content_type = mimetypes.guess_type(path)[0] + else: + self.content_type = content_type + + +def get_http_url( + link: Link, + download: Downloader, + download_dir: Optional[str] = None, + hashes: Optional[Hashes] = None, +) -> File: + temp_dir = TempDirectory(kind="unpack", globally_managed=True) + # If a download dir is specified, is the file already downloaded there? + already_downloaded_path = None + if download_dir: + already_downloaded_path = _check_download_dir(link, download_dir, hashes) + + if already_downloaded_path: + from_path = already_downloaded_path + content_type = None + else: + # let's download to a tmp dir + from_path, content_type = download(link, temp_dir.path) + if hashes: + hashes.check_against_path(from_path) + + return File(from_path, content_type) + + +def _copy2_ignoring_special_files(src: str, dest: str) -> None: + """Copying special files is not supported, but as a convenience to users + we skip errors copying them. This supports tools that may create e.g. + socket files in the project source directory. + """ + try: + copy2_fixed(src, dest) + except shutil.SpecialFileError as e: + # SpecialFileError may be raised due to either the source or + # destination. If the destination was the cause then we would actually + # care, but since the destination directory is deleted prior to + # copy we ignore all of them assuming it is caused by the source. + logger.warning( + "Ignoring special file error '%s' encountered copying %s to %s.", + str(e), + src, + dest, + ) + + +def _copy_source_tree(source: str, target: str) -> None: + target_abspath = os.path.abspath(target) + target_basename = os.path.basename(target_abspath) + target_dirname = os.path.dirname(target_abspath) + + def ignore(d: str, names: List[str]) -> List[str]: + skipped: List[str] = [] + if d == source: + # Pulling in those directories can potentially be very slow, + # exclude the following directories if they appear in the top + # level dir (and only it). + # See discussion at https://github.com/pypa/pip/pull/6770 + skipped += [".tox", ".nox"] + if os.path.abspath(d) == target_dirname: + # Prevent an infinite recursion if the target is in source. + # This can happen when TMPDIR is set to ${PWD}/... + # and we copy PWD to TMPDIR. + skipped += [target_basename] + return skipped + + shutil.copytree( + source, + target, + ignore=ignore, + symlinks=True, + copy_function=_copy2_ignoring_special_files, + ) + + +def get_file_url( + link: Link, download_dir: Optional[str] = None, hashes: Optional[Hashes] = None +) -> File: + """Get file and optionally check its hash.""" + # If a download dir is specified, is the file already there and valid? + already_downloaded_path = None + if download_dir: + already_downloaded_path = _check_download_dir(link, download_dir, hashes) + + if already_downloaded_path: + from_path = already_downloaded_path + else: + from_path = link.file_path + + # If --require-hashes is off, `hashes` is either empty, the + # link's embedded hash, or MissingHashes; it is required to + # match. If --require-hashes is on, we are satisfied by any + # hash in `hashes` matching: a URL-based or an option-based + # one; no internet-sourced hash will be in `hashes`. + if hashes: + hashes.check_against_path(from_path) + return File(from_path, None) + + +def unpack_url( + link: Link, + location: str, + download: Downloader, + download_dir: Optional[str] = None, + hashes: Optional[Hashes] = None, +) -> Optional[File]: + """Unpack link into location, downloading if required. + + :param hashes: A Hashes object, one of whose embedded hashes must match, + or HashMismatch will be raised. If the Hashes is empty, no matches are + required, and unhashable types of requirements (like VCS ones, which + would ordinarily raise HashUnsupported) are allowed. + """ + # non-editable vcs urls + if link.is_vcs: + unpack_vcs_link(link, location) + return None + + # Once out-of-tree-builds are no longer supported, could potentially + # replace the below condition with `assert not link.is_existing_dir` + # - unpack_url does not need to be called for in-tree-builds. + # + # As further cleanup, _copy_source_tree and accompanying tests can + # be removed. + # + # TODO when use-deprecated=out-of-tree-build is removed + if link.is_existing_dir(): + if os.path.isdir(location): + rmtree(location) + _copy_source_tree(link.file_path, location) + return None + + # file urls + if link.is_file: + file = get_file_url(link, download_dir, hashes=hashes) + + # http urls + else: + file = get_http_url( + link, + download, + download_dir, + hashes=hashes, + ) + + # unpack the archive to the build dir location. even when only downloading + # archives, they have to be unpacked to parse dependencies, except wheels + if not link.is_wheel: + unpack_file(file.path, location, file.content_type) + + return file + + +def _check_download_dir( + link: Link, download_dir: str, hashes: Optional[Hashes] +) -> Optional[str]: + """Check download_dir for previously downloaded file with correct hash + If a correct file is found return its path else None + """ + download_path = os.path.join(download_dir, link.filename) + + if not os.path.exists(download_path): + return None + + # If already downloaded, does its hash match? + logger.info("File was already downloaded %s", download_path) + if hashes: + try: + hashes.check_against_path(download_path) + except HashMismatch: + logger.warning( + "Previously-downloaded file %s has bad hash. Re-downloading.", + download_path, + ) + os.unlink(download_path) + return None + return download_path + + +class RequirementPreparer: + """Prepares a Requirement""" + + def __init__( + self, + build_dir: str, + download_dir: Optional[str], + src_dir: str, + build_isolation: bool, + req_tracker: RequirementTracker, + session: PipSession, + progress_bar: str, + finder: PackageFinder, + require_hashes: bool, + use_user_site: bool, + lazy_wheel: bool, + in_tree_build: bool, + ) -> None: + super().__init__() + + self.src_dir = src_dir + self.build_dir = build_dir + self.req_tracker = req_tracker + self._session = session + self._download = Downloader(session, progress_bar) + self._batch_download = BatchDownloader(session, progress_bar) + self.finder = finder + + # Where still-packed archives should be written to. If None, they are + # not saved, and are deleted immediately after unpacking. + self.download_dir = download_dir + + # Is build isolation allowed? + self.build_isolation = build_isolation + + # Should hash-checking be required? + self.require_hashes = require_hashes + + # Should install in user site-packages? + self.use_user_site = use_user_site + + # Should wheels be downloaded lazily? + self.use_lazy_wheel = lazy_wheel + + # Should in-tree builds be used for local paths? + self.in_tree_build = in_tree_build + + # Memoized downloaded files, as mapping of url: path. + self._downloaded: Dict[str, str] = {} + + # Previous "header" printed for a link-based InstallRequirement + self._previous_requirement_header = ("", "") + + def _log_preparing_link(self, req: InstallRequirement) -> None: + """Provide context for the requirement being prepared.""" + if req.link.is_file and not req.original_link_is_in_wheel_cache: + message = "Processing %s" + information = str(display_path(req.link.file_path)) + else: + message = "Collecting %s" + information = str(req.req or req) + + if (message, information) != self._previous_requirement_header: + self._previous_requirement_header = (message, information) + logger.info(message, information) + + if req.original_link_is_in_wheel_cache: + with indent_log(): + logger.info("Using cached %s", req.link.filename) + + def _ensure_link_req_src_dir( + self, req: InstallRequirement, parallel_builds: bool + ) -> None: + """Ensure source_dir of a linked InstallRequirement.""" + # Since source_dir is only set for editable requirements. + if req.link.is_wheel: + # We don't need to unpack wheels, so no need for a source + # directory. + return + assert req.source_dir is None + if req.link.is_existing_dir() and self.in_tree_build: + # build local directories in-tree + req.source_dir = req.link.file_path + return + + # We always delete unpacked sdists after pip runs. + req.ensure_has_source_dir( + self.build_dir, + autodelete=True, + parallel_builds=parallel_builds, + ) + + # If a checkout exists, it's unwise to keep going. version + # inconsistencies are logged later, but do not fail the + # installation. + # FIXME: this won't upgrade when there's an existing + # package unpacked in `req.source_dir` + # TODO: this check is now probably dead code + if is_installable_dir(req.source_dir): + raise PreviousBuildDirError( + "pip can't proceed with requirements '{}' due to a" + "pre-existing build directory ({}). This is likely " + "due to a previous installation that failed . pip is " + "being responsible and not assuming it can delete this. " + "Please delete it and try again.".format(req, req.source_dir) + ) + + def _get_linked_req_hashes(self, req: InstallRequirement) -> Hashes: + # By the time this is called, the requirement's link should have + # been checked so we can tell what kind of requirements req is + # and raise some more informative errors than otherwise. + # (For example, we can raise VcsHashUnsupported for a VCS URL + # rather than HashMissing.) + if not self.require_hashes: + return req.hashes(trust_internet=True) + + # We could check these first 2 conditions inside unpack_url + # and save repetition of conditions, but then we would + # report less-useful error messages for unhashable + # requirements, complaining that there's no hash provided. + if req.link.is_vcs: + raise VcsHashUnsupported() + if req.link.is_existing_dir(): + raise DirectoryUrlHashUnsupported() + + # Unpinned packages are asking for trouble when a new version + # is uploaded. This isn't a security check, but it saves users + # a surprising hash mismatch in the future. + # file:/// URLs aren't pinnable, so don't complain about them + # not being pinned. + if req.original_link is None and not req.is_pinned: + raise HashUnpinned() + + # If known-good hashes are missing for this requirement, + # shim it with a facade object that will provoke hash + # computation and then raise a HashMissing exception + # showing the user what the hash should be. + return req.hashes(trust_internet=False) or MissingHashes() + + def _fetch_metadata_using_lazy_wheel( + self, + link: Link, + ) -> Optional[BaseDistribution]: + """Fetch metadata using lazy wheel, if possible.""" + if not self.use_lazy_wheel: + return None + if self.require_hashes: + logger.debug("Lazy wheel is not used as hash checking is required") + return None + if link.is_file or not link.is_wheel: + logger.debug( + "Lazy wheel is not used as %r does not points to a remote wheel", + link, + ) + return None + + wheel = Wheel(link.filename) + name = canonicalize_name(wheel.name) + logger.info( + "Obtaining dependency information from %s %s", + name, + wheel.version, + ) + url = link.url.split("#", 1)[0] + try: + return dist_from_wheel_url(name, url, self._session) + except HTTPRangeRequestUnsupported: + logger.debug("%s does not support range requests", url) + return None + + def _complete_partial_requirements( + self, + partially_downloaded_reqs: Iterable[InstallRequirement], + parallel_builds: bool = False, + ) -> None: + """Download any requirements which were only fetched by metadata.""" + # Download to a temporary directory. These will be copied over as + # needed for downstream 'download', 'wheel', and 'install' commands. + temp_dir = TempDirectory(kind="unpack", globally_managed=True).path + + # Map each link to the requirement that owns it. This allows us to set + # `req.local_file_path` on the appropriate requirement after passing + # all the links at once into BatchDownloader. + links_to_fully_download: Dict[Link, InstallRequirement] = {} + for req in partially_downloaded_reqs: + assert req.link + links_to_fully_download[req.link] = req + + batch_download = self._batch_download( + links_to_fully_download.keys(), + temp_dir, + ) + for link, (filepath, _) in batch_download: + logger.debug("Downloading link %s to %s", link, filepath) + req = links_to_fully_download[link] + req.local_file_path = filepath + + # This step is necessary to ensure all lazy wheels are processed + # successfully by the 'download', 'wheel', and 'install' commands. + for req in partially_downloaded_reqs: + self._prepare_linked_requirement(req, parallel_builds) + + def prepare_linked_requirement( + self, req: InstallRequirement, parallel_builds: bool = False + ) -> BaseDistribution: + """Prepare a requirement to be obtained from req.link.""" + assert req.link + link = req.link + self._log_preparing_link(req) + with indent_log(): + # Check if the relevant file is already available + # in the download directory + file_path = None + if self.download_dir is not None and link.is_wheel: + hashes = self._get_linked_req_hashes(req) + file_path = _check_download_dir(req.link, self.download_dir, hashes) + + if file_path is not None: + # The file is already available, so mark it as downloaded + self._downloaded[req.link.url] = file_path + else: + # The file is not available, attempt to fetch only metadata + wheel_dist = self._fetch_metadata_using_lazy_wheel(link) + if wheel_dist is not None: + req.needs_more_preparation = True + return wheel_dist + + # None of the optimizations worked, fully prepare the requirement + return self._prepare_linked_requirement(req, parallel_builds) + + def prepare_linked_requirements_more( + self, reqs: Iterable[InstallRequirement], parallel_builds: bool = False + ) -> None: + """Prepare linked requirements more, if needed.""" + reqs = [req for req in reqs if req.needs_more_preparation] + for req in reqs: + # Determine if any of these requirements were already downloaded. + if self.download_dir is not None and req.link.is_wheel: + hashes = self._get_linked_req_hashes(req) + file_path = _check_download_dir(req.link, self.download_dir, hashes) + if file_path is not None: + self._downloaded[req.link.url] = file_path + req.needs_more_preparation = False + + # Prepare requirements we found were already downloaded for some + # reason. The other downloads will be completed separately. + partially_downloaded_reqs: List[InstallRequirement] = [] + for req in reqs: + if req.needs_more_preparation: + partially_downloaded_reqs.append(req) + else: + self._prepare_linked_requirement(req, parallel_builds) + + # TODO: separate this part out from RequirementPreparer when the v1 + # resolver can be removed! + self._complete_partial_requirements( + partially_downloaded_reqs, + parallel_builds=parallel_builds, + ) + + def _prepare_linked_requirement( + self, req: InstallRequirement, parallel_builds: bool + ) -> BaseDistribution: + assert req.link + link = req.link + + self._ensure_link_req_src_dir(req, parallel_builds) + hashes = self._get_linked_req_hashes(req) + + if link.is_existing_dir() and self.in_tree_build: + local_file = None + elif link.url not in self._downloaded: + try: + local_file = unpack_url( + link, req.source_dir, self._download, self.download_dir, hashes + ) + except NetworkConnectionError as exc: + raise InstallationError( + "Could not install requirement {} because of HTTP " + "error {} for URL {}".format(req, exc, link) + ) + else: + file_path = self._downloaded[link.url] + if hashes: + hashes.check_against_path(file_path) + local_file = File(file_path, content_type=None) + + # For use in later processing, + # preserve the file path on the requirement. + if local_file: + req.local_file_path = local_file.path + + dist = _get_prepared_distribution( + req, + self.req_tracker, + self.finder, + self.build_isolation, + ) + return dist + + def save_linked_requirement(self, req: InstallRequirement) -> None: + assert self.download_dir is not None + assert req.link is not None + link = req.link + if link.is_vcs or (link.is_existing_dir() and req.editable): + # Make a .zip of the source_dir we already created. + req.archive(self.download_dir) + return + + if link.is_existing_dir(): + logger.debug( + "Not copying link to destination directory " + "since it is a directory: %s", + link, + ) + return + if req.local_file_path is None: + # No distribution was downloaded for this requirement. + return + + download_location = os.path.join(self.download_dir, link.filename) + if not os.path.exists(download_location): + shutil.copy(req.local_file_path, download_location) + download_path = display_path(download_location) + logger.info("Saved %s", download_path) + + def prepare_editable_requirement( + self, + req: InstallRequirement, + ) -> BaseDistribution: + """Prepare an editable requirement.""" + assert req.editable, "cannot prepare a non-editable req as editable" + + logger.info("Obtaining %s", req) + + with indent_log(): + if self.require_hashes: + raise InstallationError( + "The editable requirement {} cannot be installed when " + "requiring hashes, because there is no single file to " + "hash.".format(req) + ) + req.ensure_has_source_dir(self.src_dir) + req.update_editable() + + dist = _get_prepared_distribution( + req, + self.req_tracker, + self.finder, + self.build_isolation, + ) + + req.check_if_exists(self.use_user_site) + + return dist + + def prepare_installed_requirement( + self, + req: InstallRequirement, + skip_reason: str, + ) -> BaseDistribution: + """Prepare an already-installed requirement.""" + assert req.satisfied_by, "req should have been satisfied but isn't" + assert skip_reason is not None, ( + "did not get skip reason skipped but req.satisfied_by " + "is set to {}".format(req.satisfied_by) + ) + logger.info( + "Requirement %s: %s (%s)", skip_reason, req, req.satisfied_by.version + ) + with indent_log(): + if self.require_hashes: + logger.debug( + "Since it is already installed, we are trusting this " + "package without checking its hash. To ensure a " + "completely repeatable environment, install into an " + "empty virtualenv." + ) + return InstalledDistribution(req).get_metadata_distribution() diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/pyproject.py b/.venv/lib/python3.9/site-packages/pip/_internal/pyproject.py new file mode 100644 index 0000000..31534a3 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/pyproject.py @@ -0,0 +1,183 @@ +import os +from collections import namedtuple +from typing import Any, List, Optional + +from pip._vendor import tomli +from pip._vendor.packaging.requirements import InvalidRequirement, Requirement + +from pip._internal.exceptions import InstallationError + + +def _is_list_of_str(obj: Any) -> bool: + return isinstance(obj, list) and all(isinstance(item, str) for item in obj) + + +def make_pyproject_path(unpacked_source_directory: str) -> str: + return os.path.join(unpacked_source_directory, "pyproject.toml") + + +BuildSystemDetails = namedtuple( + "BuildSystemDetails", ["requires", "backend", "check", "backend_path"] +) + + +def load_pyproject_toml( + use_pep517: Optional[bool], pyproject_toml: str, setup_py: str, req_name: str +) -> Optional[BuildSystemDetails]: + """Load the pyproject.toml file. + + Parameters: + use_pep517 - Has the user requested PEP 517 processing? None + means the user hasn't explicitly specified. + pyproject_toml - Location of the project's pyproject.toml file + setup_py - Location of the project's setup.py file + req_name - The name of the requirement we're processing (for + error reporting) + + Returns: + None if we should use the legacy code path, otherwise a tuple + ( + requirements from pyproject.toml, + name of PEP 517 backend, + requirements we should check are installed after setting + up the build environment + directory paths to import the backend from (backend-path), + relative to the project root. + ) + """ + has_pyproject = os.path.isfile(pyproject_toml) + has_setup = os.path.isfile(setup_py) + + if not has_pyproject and not has_setup: + raise InstallationError( + f"{req_name} does not appear to be a Python project: " + f"neither 'setup.py' nor 'pyproject.toml' found." + ) + + if has_pyproject: + with open(pyproject_toml, encoding="utf-8") as f: + pp_toml = tomli.load(f) + build_system = pp_toml.get("build-system") + else: + build_system = None + + # The following cases must use PEP 517 + # We check for use_pep517 being non-None and falsey because that means + # the user explicitly requested --no-use-pep517. The value 0 as + # opposed to False can occur when the value is provided via an + # environment variable or config file option (due to the quirk of + # strtobool() returning an integer in pip's configuration code). + if has_pyproject and not has_setup: + if use_pep517 is not None and not use_pep517: + raise InstallationError( + "Disabling PEP 517 processing is invalid: " + "project does not have a setup.py" + ) + use_pep517 = True + elif build_system and "build-backend" in build_system: + if use_pep517 is not None and not use_pep517: + raise InstallationError( + "Disabling PEP 517 processing is invalid: " + "project specifies a build backend of {} " + "in pyproject.toml".format(build_system["build-backend"]) + ) + use_pep517 = True + + # If we haven't worked out whether to use PEP 517 yet, + # and the user hasn't explicitly stated a preference, + # we do so if the project has a pyproject.toml file. + elif use_pep517 is None: + use_pep517 = has_pyproject + + # At this point, we know whether we're going to use PEP 517. + assert use_pep517 is not None + + # If we're using the legacy code path, there is nothing further + # for us to do here. + if not use_pep517: + return None + + if build_system is None: + # Either the user has a pyproject.toml with no build-system + # section, or the user has no pyproject.toml, but has opted in + # explicitly via --use-pep517. + # In the absence of any explicit backend specification, we + # assume the setuptools backend that most closely emulates the + # traditional direct setup.py execution, and require wheel and + # a version of setuptools that supports that backend. + + build_system = { + "requires": ["setuptools>=40.8.0", "wheel"], + "build-backend": "setuptools.build_meta:__legacy__", + } + + # If we're using PEP 517, we have build system information (either + # from pyproject.toml, or defaulted by the code above). + # Note that at this point, we do not know if the user has actually + # specified a backend, though. + assert build_system is not None + + # Ensure that the build-system section in pyproject.toml conforms + # to PEP 518. + error_template = ( + "{package} has a pyproject.toml file that does not comply " + "with PEP 518: {reason}" + ) + + # Specifying the build-system table but not the requires key is invalid + if "requires" not in build_system: + raise InstallationError( + error_template.format( + package=req_name, + reason=( + "it has a 'build-system' table but not " + "'build-system.requires' which is mandatory in the table" + ), + ) + ) + + # Error out if requires is not a list of strings + requires = build_system["requires"] + if not _is_list_of_str(requires): + raise InstallationError( + error_template.format( + package=req_name, + reason="'build-system.requires' is not a list of strings.", + ) + ) + + # Each requirement must be valid as per PEP 508 + for requirement in requires: + try: + Requirement(requirement) + except InvalidRequirement: + raise InstallationError( + error_template.format( + package=req_name, + reason=( + "'build-system.requires' contains an invalid " + "requirement: {!r}".format(requirement) + ), + ) + ) + + backend = build_system.get("build-backend") + backend_path = build_system.get("backend-path", []) + check: List[str] = [] + if backend is None: + # If the user didn't specify a backend, we assume they want to use + # the setuptools backend. But we can't be sure they have included + # a version of setuptools which supplies the backend, or wheel + # (which is needed by the backend) in their requirements. So we + # make a note to check that those requirements are present once + # we have set up the environment. + # This is quite a lot of work to check for a very specific case. But + # the problem is, that case is potentially quite common - projects that + # adopted PEP 518 early for the ability to specify requirements to + # execute setup.py, but never considered needing to mention the build + # tools themselves. The original PEP 518 code had a similar check (but + # implemented in a different way). + backend = "setuptools.build_meta:__legacy__" + check = ["setuptools>=40.8.0", "wheel"] + + return BuildSystemDetails(requires, backend, check, backend_path) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/req/__init__.py new file mode 100644 index 0000000..70dea27 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/req/__init__.py @@ -0,0 +1,94 @@ +import collections +import logging +from typing import Iterator, List, Optional, Sequence, Tuple + +from pip._internal.utils.logging import indent_log + +from .req_file import parse_requirements +from .req_install import InstallRequirement +from .req_set import RequirementSet + +__all__ = [ + "RequirementSet", + "InstallRequirement", + "parse_requirements", + "install_given_reqs", +] + +logger = logging.getLogger(__name__) + + +class InstallationResult: + def __init__(self, name: str) -> None: + self.name = name + + def __repr__(self) -> str: + return f"InstallationResult(name={self.name!r})" + + +def _validate_requirements( + requirements: List[InstallRequirement], +) -> Iterator[Tuple[str, InstallRequirement]]: + for req in requirements: + assert req.name, f"invalid to-be-installed requirement: {req}" + yield req.name, req + + +def install_given_reqs( + requirements: List[InstallRequirement], + install_options: List[str], + global_options: Sequence[str], + root: Optional[str], + home: Optional[str], + prefix: Optional[str], + warn_script_location: bool, + use_user_site: bool, + pycompile: bool, +) -> List[InstallationResult]: + """ + Install everything in the given list. + + (to be called after having downloaded and unpacked the packages) + """ + to_install = collections.OrderedDict(_validate_requirements(requirements)) + + if to_install: + logger.info( + "Installing collected packages: %s", + ", ".join(to_install.keys()), + ) + + installed = [] + + with indent_log(): + for req_name, requirement in to_install.items(): + if requirement.should_reinstall: + logger.info("Attempting uninstall: %s", req_name) + with indent_log(): + uninstalled_pathset = requirement.uninstall(auto_confirm=True) + else: + uninstalled_pathset = None + + try: + requirement.install( + install_options, + global_options, + root=root, + home=home, + prefix=prefix, + warn_script_location=warn_script_location, + use_user_site=use_user_site, + pycompile=pycompile, + ) + except Exception: + # if install did not succeed, rollback previous uninstall + if uninstalled_pathset and not requirement.install_succeeded: + uninstalled_pathset.rollback() + raise + else: + if uninstalled_pathset and requirement.install_succeeded: + uninstalled_pathset.commit() + + installed.append(InstallationResult(req_name)) + + return installed diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1e77bb01a492f6880a7aaec7171e37da3bf7fd9f GIT binary patch literal 2571 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%0Dd3?am~_B3 zWmn}Cd@zLP;CUe|!#evK^tFzoVs0A<;c(cFqD~aPOI|08bB8=MAfHW3VII&^J??-u z?bK@7TMnn}ryqZ2rQAuNNrowXkAVZB6kQS6N8D? zVGj9Bw2p9)$nGHg(>l6obCA+bj}3~TE2qcPK{}5%6O3WH>*^bgSlKRx^? z+|00Wf_%1ISS~;s5<>kKSa#ekuqcO=F)v<<{^d!l)pK#=}v$}uwL$J-W z|0RY1ti}q!Cb;jN9|2bD8-JF=YNKVgtd9v&e2s(>aX_0W;glPlSz&O^t<>QSF@<%% zm=><09{T*2uvv(mP2*!-6u=YXAw?Pyca%RGn9%YDw%R~XCWI;n?VStf5m0EAIF@KZ z{1E*^Owrz&5GB}?Pld~|#0kU^N3HIB%He_XQvWETSG&{*M)cs7C9}P=Yz_#@IY5yc=tr!gMPBX^`^YI56u6T4D;m3`*30hQQbEieFIxs+e#IS&UhV8;16Ayb%T>yKKncgT zXiqBz7J@y#xC($Zhm`*h5ecaciS&-il@y43pJbN~i8k%#?s$&o*bP4fjRS1=pG=Fp zahI&CVxI~FyiZ;7nsy{{Jn}~fk0g^Naexe&TSi+p%-%ln^*(tU~wc!$7$R5ZD!P&Efl~d)HiU=|2d3qZB2v*Nox*GZnS1 zx*u)g!iO5--v%8IZ-B(RIkn5+Fq9`eoE;{m2nNTvrooka+=kH0X__)c*_0x4IzbBT zqk_xqA5*{v0`qesVRf;4EY@e)VbxoL%bK)~xC3ru#U6>so*YJX9nm>Vp|uL2F+SmY zR1SY4^1!TO+5G^0s}0J}-cA+IaVNwzQo5C5HUWb+invj_A9lDlyteo|+7D`{;mV6nDfwXRhdnB~!*}(I(%(9+{2S0h5Z}O0 zX2A!}FT@D84L_7G<6(}I5yoNFTY!fY=mfv%4g7B5V1ctZgm@6KXqCW!7ko7kQ&;Ab zxv+vB{tvnjZ8+w*NaQ;W*^2)meF@V{3z1ut>|x*Oee8o)U#sIUMs-^DFNt&HxM=WY ziEoN?Du?vHD9s-6#sTVY=4sTJ4M057>G+4z@4iW`g>73N) zKTnV8aRgHnIRUclIzjZj z8sg7fA4*bXthMryMxEqTv>WP9`tiLeJVq$7wub=guHxZ8%1CnIawd*O7!u?Xz;cx- zMvrKEX^5$kro}elZu=ckYiDUVh zwH(J0htgFziQ+Q~S+H_?K(C}1Smejf5uYeVyv5hmwb&atHCpn|NGuls7GDowb{g)+ zbpESclVLh-6ycD#=2PVp&e>O|pPHJQJ_`SG=lfeS54geSG&dE$DW9G`eC+J8TVr&( lwuh2h7{4h$o6~$wZK;gQAC+gh{CBEHF8jRvG>-Te{|#n8cpU%$ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_file.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_file.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81d98d314e3147f7da5da0b40de6fd10d201dadb GIT binary patch literal 13389 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 UY}>kXOD>UnB=>l3H23KL07))epa1{> literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_install.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_install.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d6c9155396c054d76ffc9e7937aa268bae1bea6 GIT binary patch literal 22768 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 PX5-V_^S=}ud~^Q~#h5#X literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_set.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_set.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..40b9639b92aadee1451f43275f47340db3bf0a52 GIT binary patch literal 5909 zcmbtY&2JmW72lm*E|(M~(UL5GrrESfY$gtsqG{47j*-S`(xia`#BS2E2o@{OP+Dra zOV2EAi>7+0d?*S82#TU8&=io4MvpzVrylz!?6s$!dufx{>hH~x6iGSAp_FEJKHt3W zd2fRG`LcoEZ+=&AA3R|g|D?|3&qC)76!mLV+~8(pH0aABv%?z9q_!1V9lK$73XMX? zX*iu?qu6m9uAZ}_Qm5P~>vkcU>r@&Q-FBk+&O&2Bw~NtYr`o9Mwi})5EH#!)Ll_6k zV&%|moPNjPC0@R7@bW%uta9^)QJec0urW4jW;XYM8Ei%( zv)>OD`X6-DFo}aGE8OgLBY}OVnn9ezVKa!rzVPFqqX*xORT@N5K&yWwWg@Y%@bR_~ z5gJRw*$>67UMNLJ#3_w7lTH^KHp3`Pcl|WjQcXf`^5>%S28#MSDq%ECZZsG_FD%Zu z^*Q4we# z3VqR<7YoAGBdA;KoWZM~+x!$?!fA`5fb*9DafP1-gev;3?yvGQ=${fx`EHHVS$^)m zy>B*_IRpDIW(yNcxFOP;8#R`#Hn&A{$5*{>H<78}{vBeR${Z=uo{XCe#E*W|rg9xc zokf)z`^LcV&4G!UZBg6OqGtWG*QE$j;RW9Gq4kZLEeS|gk;fuYa)E|cdNB!=`;${Z z(pDmB=_L;gxr~)x+*;dCI$|yC?x-Q^Yn!3kz7w>CNY{GZ&=2D~f#iNGjD)`#D8bk2 zw?%w=Eebc+y1VIi5`VA$>Y55u@j^Ff?gU#xt#!lh8a6@?p>}IPf{L$1TJP>=u8*lO z_5CUkP!1}?a!rTz&wO}H2-sR5t*e=G5sR88Egk-davMdn@Fg@-SSM%q!Me72zz&VK zjD3?^+=k^8K4p6*cMdEl7p*X9?vO0W-8cc104pjamx1v~bq`W$8;T9gj||he#kg_9 zcwmzCm7)AX`7N1r9wFU#ON6eB_Rff zoFiAWGe>EolB6=3b32H7LS=S43F8`*OSF(?W}sw6-`9Ml6O{J!CNq~z=aFOgS07LC z6j4M_5k)K6n`q?xCiTjdjayo^>^(MMZ40Vrw+pE=0KvR)P~;9T9;+L7KeeE8rD>J> z29Zk5geP&de2S{&aYec%zm1AYF2j>rB}I2yt%gFB-@&H-OIPnTqd+OrlszxmY>Q_4 zns=|6^x|~SgDQ_4{bf~K_wHdp?Op4$EB}w=<+FtD*NMC~rscU4;yFRf$gFBsRvOch z6*T&pP1x34d6^(;-5}VR(@JC~NVAgf>n*-d?uZzGmKBLuK8IyB>sY6<`Fsm$QW$T| zNPu?dh>?sG3B`bp!JR#F3btvR4*r%NKE}1>yWo@O!u;ALU!D6ovZc|F+N6eB1<97l z8Oic{#;9~*_nWI|1r146|7a{ zU=6cu_Me@R#@B3`y5tD!G3KPC+Kp<=Q|(gsO_&W)0pq!Pk^=H#T5=<45c*lAD-+UF zEwfo-P7_`yF1{DBFTZBYG6OMBKZckSn{c`6^A@{-M5sf;(U7yMxSPsA>6=w3T=coj zG^=nB{Yof=y_VTOVBrJvz!+GErg}Ps#5hrJq1cC(X>1{yY$2>bzaU#ww;kC^i@N24 zM|N5|C?6Vo1#oH(E9`^Hpa58{be>xW3j@3D9>U>3AI$cm91Iv|JwpxNGdMyPJ!+}n z4~&Cqt|j?t~qEF+jD+y#Oy^QhnW0l;81BV zR}B4K!OoQ(rrW1cn{BF{_UZO2wcD#Z)?RT?{LGXqz_b8N%>i5^PO~&#&S$2o1A{Zi zcn!=UCzdgHjn2aNZG=P4h(n*5Neklzd^unh+GnZPKD)yz#-2NHaoR6&nnR}%U33yJ z4jg|O{YA|Fmb>UJrsvZ0=>_av**Eb8CHv-^hzjCxm&@Mpw+>wjI^K*%t$R1Og+~hLB`q&S8@e{~yyyq1 z7Yo4!M>|wwU<4EDE_nTTf2h130yJ+^Gy^m|grKq4=|yRXu-_Y6`6T#ha8jrwx-AHK zLPHTsgx3}Cj_}}CBkm=bkat4BhF|e|UGGkqZhKsin-OtycM82IjCWK{K^Hf5>LtBY zg&YR}`h*cGk0Qefz5r*HPJs#{M8SL)l#PhqNDvfj?rbEn@WM_v3dQg=Vw8vffY>3Y z08x;Og?y3=SG?O;8$)6(A(2ga09YUI8cJ=}?AP^ACNU*YUMG+{LaK?w@@!$00ua*s#V20anmUJ= zJgG@o8z-rUD9dF+9UzI>E;3cR zo9q4Ob3yBsBjI{#n>3bA*$$x8!BD^Yue_D?K>ZYNwnC&d2yynj%Ogz-V|1@*{eS)5 zQ*y7?-@dL*fRIv1c~xr{MuEFq2GDKg0Tu7ky}e88Bg@x$v`5(ij)s+Bz9%CO(jySi zrGA6x}cr0I`u|?WE zp(2_46S1q`4k$YsF(-3!=?Nx$d6L+#gN^cW7UPEpm(yYM6W^b!j z%0n?7yQ~u~uhE`@R)x%_2ZyX8?&6&T+#*b}3(!d)XSbl{qrs6o%`Wf+85{WT4@F2T zha#MfCKjR2leE2zgVi5U8K=vL>==su&@Q;nf>}YtSItL`*pcnpN6d7NY{nkhj)MTI z%=GFb*Q%IhB)ja0G3ODp$`6@sf5i&+m&{rCFDp43hO1#%7wvJVIgZifkFo2)Fl;6W@&{DS1e=Q_nh9jTU>fXreoFOIOjVWc|j`Xl=j(;)$9sIiUyxsAjd29)_tMov>-#Rxi&iF*gY{lO&R-u}EH`>UpYOqH2yRauM3bCB5=UqEk{nEellLr0OH8h>e*GL3D*o zcjeD$?3f24P@k}M#{Pot*MB}}smc*?5#xE**R>-qZ@*4KM!7^(cB z<*Z&YdhDu;yG^0rTa|X5+4<>dFcPnVb?v^iJ8nENy#VG>N5K=BevH+OY%EW&$xqkb sy9DKWUta)PR`PWsg!uG024?QnT#(mD?G)*a3*U8-RagaI{IRn2Kd*=l0ssI2 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..70d76557b0132fa7d3a575cdbb4f4db9da2d7557 GIT binary patch literal 4269 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 YobYF3-wLmT1><$fuE$T!dHh7>|9c?_yZ`_I literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c84d9497a11804be4ffd44d9a6d5c40ddc5403b GIT binary patch literal 18801 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 l9)3E^bS_h{()R3u(>cpL`0(uh*%Nb* Tuple[str, Optional[str]]: + m = re.match(r"^(.+)(\[[^\]]+\])$", path) + extras = None + if m: + path_no_extras = m.group(1) + extras = m.group(2) + else: + path_no_extras = path + + return path_no_extras, extras + + +def convert_extras(extras: Optional[str]) -> Set[str]: + if not extras: + return set() + return get_requirement("placeholder" + extras.lower()).extras + + +def parse_editable(editable_req: str) -> Tuple[Optional[str], str, Set[str]]: + """Parses an editable requirement into: + - a requirement name + - an URL + - extras + - editable options + Accepted requirements: + svn+http://blahblah@rev#egg=Foobar[baz]&subdirectory=version_subdir + .[some_extra] + """ + + url = editable_req + + # If a file path is specified with extras, strip off the extras. + url_no_extras, extras = _strip_extras(url) + + if os.path.isdir(url_no_extras): + # Treating it as code that has already been checked out + url_no_extras = path_to_url(url_no_extras) + + if url_no_extras.lower().startswith("file:"): + package_name = Link(url_no_extras).egg_fragment + if extras: + return ( + package_name, + url_no_extras, + get_requirement("placeholder" + extras.lower()).extras, + ) + else: + return package_name, url_no_extras, set() + + for version_control in vcs: + if url.lower().startswith(f"{version_control}:"): + url = f"{version_control}+{url}" + break + + link = Link(url) + + if not link.is_vcs: + backends = ", ".join(vcs.all_schemes) + raise InstallationError( + f"{editable_req} is not a valid editable requirement. " + f"It should either be a path to a local project or a VCS URL " + f"(beginning with {backends})." + ) + + package_name = link.egg_fragment + if not package_name: + raise InstallationError( + "Could not detect requirement name for '{}', please specify one " + "with #egg=your_package_name".format(editable_req) + ) + return package_name, url, set() + + +def deduce_helpful_msg(req: str) -> str: + """Returns helpful msg in case requirements file does not exist, + or cannot be parsed. + + :params req: Requirements file path + """ + msg = "" + if os.path.exists(req): + msg = " The path does exist. " + # Try to parse and check if it is a requirements file. + try: + with open(req) as fp: + # parse first line only + next(parse_requirements(fp.read())) + msg += ( + "The argument you provided " + "({}) appears to be a" + " requirements file. If that is the" + " case, use the '-r' flag to install" + " the packages specified within it." + ).format(req) + except RequirementParseError: + logger.debug("Cannot parse '%s' as requirements file", req, exc_info=True) + else: + msg += f" File '{req}' does not exist." + return msg + + +class RequirementParts: + def __init__( + self, + requirement: Optional[Requirement], + link: Optional[Link], + markers: Optional[Marker], + extras: Set[str], + ): + self.requirement = requirement + self.link = link + self.markers = markers + self.extras = extras + + +def parse_req_from_editable(editable_req: str) -> RequirementParts: + name, url, extras_override = parse_editable(editable_req) + + if name is not None: + try: + req: Optional[Requirement] = Requirement(name) + except InvalidRequirement: + raise InstallationError(f"Invalid requirement: '{name}'") + else: + req = None + + link = Link(url) + + return RequirementParts(req, link, None, extras_override) + + +# ---- The actual constructors follow ---- + + +def install_req_from_editable( + editable_req: str, + comes_from: Optional[Union[InstallRequirement, str]] = None, + use_pep517: Optional[bool] = None, + isolated: bool = False, + options: Optional[Dict[str, Any]] = None, + constraint: bool = False, + user_supplied: bool = False, + permit_editable_wheels: bool = False, +) -> InstallRequirement: + + parts = parse_req_from_editable(editable_req) + + return InstallRequirement( + parts.requirement, + comes_from=comes_from, + user_supplied=user_supplied, + editable=True, + permit_editable_wheels=permit_editable_wheels, + link=parts.link, + constraint=constraint, + use_pep517=use_pep517, + isolated=isolated, + install_options=options.get("install_options", []) if options else [], + global_options=options.get("global_options", []) if options else [], + hash_options=options.get("hashes", {}) if options else {}, + extras=parts.extras, + ) + + +def _looks_like_path(name: str) -> bool: + """Checks whether the string "looks like" a path on the filesystem. + + This does not check whether the target actually exists, only judge from the + appearance. + + Returns true if any of the following conditions is true: + * a path separator is found (either os.path.sep or os.path.altsep); + * a dot is found (which represents the current directory). + """ + if os.path.sep in name: + return True + if os.path.altsep is not None and os.path.altsep in name: + return True + if name.startswith("."): + return True + return False + + +def _get_url_from_path(path: str, name: str) -> Optional[str]: + """ + First, it checks whether a provided path is an installable directory. If it + is, returns the path. + + If false, check if the path is an archive file (such as a .whl). + The function checks if the path is a file. If false, if the path has + an @, it will treat it as a PEP 440 URL requirement and return the path. + """ + if _looks_like_path(name) and os.path.isdir(path): + if is_installable_dir(path): + return path_to_url(path) + # TODO: The is_installable_dir test here might not be necessary + # now that it is done in load_pyproject_toml too. + raise InstallationError( + f"Directory {name!r} is not installable. Neither 'setup.py' " + "nor 'pyproject.toml' found." + ) + if not is_archive_file(path): + return None + if os.path.isfile(path): + return path_to_url(path) + urlreq_parts = name.split("@", 1) + if len(urlreq_parts) >= 2 and not _looks_like_path(urlreq_parts[0]): + # If the path contains '@' and the part before it does not look + # like a path, try to treat it as a PEP 440 URL req instead. + return None + logger.warning( + "Requirement %r looks like a filename, but the file does not exist", + name, + ) + return path_to_url(path) + + +def parse_req_from_line(name: str, line_source: Optional[str]) -> RequirementParts: + if is_url(name): + marker_sep = "; " + else: + marker_sep = ";" + if marker_sep in name: + name, markers_as_string = name.split(marker_sep, 1) + markers_as_string = markers_as_string.strip() + if not markers_as_string: + markers = None + else: + markers = Marker(markers_as_string) + else: + markers = None + name = name.strip() + req_as_string = None + path = os.path.normpath(os.path.abspath(name)) + link = None + extras_as_string = None + + if is_url(name): + link = Link(name) + else: + p, extras_as_string = _strip_extras(path) + url = _get_url_from_path(p, name) + if url is not None: + link = Link(url) + + # it's a local file, dir, or url + if link: + # Handle relative file URLs + if link.scheme == "file" and re.search(r"\.\./", link.url): + link = Link(path_to_url(os.path.normpath(os.path.abspath(link.path)))) + # wheel file + if link.is_wheel: + wheel = Wheel(link.filename) # can raise InvalidWheelFilename + req_as_string = f"{wheel.name}=={wheel.version}" + else: + # set the req to the egg fragment. when it's not there, this + # will become an 'unnamed' requirement + req_as_string = link.egg_fragment + + # a requirement specifier + else: + req_as_string = name + + extras = convert_extras(extras_as_string) + + def with_source(text: str) -> str: + if not line_source: + return text + return f"{text} (from {line_source})" + + def _parse_req_string(req_as_string: str) -> Requirement: + try: + req = get_requirement(req_as_string) + except InvalidRequirement: + if os.path.sep in req_as_string: + add_msg = "It looks like a path." + add_msg += deduce_helpful_msg(req_as_string) + elif "=" in req_as_string and not any( + op in req_as_string for op in operators + ): + add_msg = "= is not a valid operator. Did you mean == ?" + else: + add_msg = "" + msg = with_source(f"Invalid requirement: {req_as_string!r}") + if add_msg: + msg += f"\nHint: {add_msg}" + raise InstallationError(msg) + else: + # Deprecate extras after specifiers: "name>=1.0[extras]" + # This currently works by accident because _strip_extras() parses + # any extras in the end of the string and those are saved in + # RequirementParts + for spec in req.specifier: + spec_str = str(spec) + if spec_str.endswith("]"): + msg = f"Extras after version '{spec_str}'." + raise InstallationError(msg) + return req + + if req_as_string is not None: + req: Optional[Requirement] = _parse_req_string(req_as_string) + else: + req = None + + return RequirementParts(req, link, markers, extras) + + +def install_req_from_line( + name: str, + comes_from: Optional[Union[str, InstallRequirement]] = None, + use_pep517: Optional[bool] = None, + isolated: bool = False, + options: Optional[Dict[str, Any]] = None, + constraint: bool = False, + line_source: Optional[str] = None, + user_supplied: bool = False, +) -> InstallRequirement: + """Creates an InstallRequirement from a name, which might be a + requirement, directory containing 'setup.py', filename, or URL. + + :param line_source: An optional string describing where the line is from, + for logging purposes in case of an error. + """ + parts = parse_req_from_line(name, line_source) + + return InstallRequirement( + parts.requirement, + comes_from, + link=parts.link, + markers=parts.markers, + use_pep517=use_pep517, + isolated=isolated, + install_options=options.get("install_options", []) if options else [], + global_options=options.get("global_options", []) if options else [], + hash_options=options.get("hashes", {}) if options else {}, + constraint=constraint, + extras=parts.extras, + user_supplied=user_supplied, + ) + + +def install_req_from_req_string( + req_string: str, + comes_from: Optional[InstallRequirement] = None, + isolated: bool = False, + use_pep517: Optional[bool] = None, + user_supplied: bool = False, +) -> InstallRequirement: + try: + req = get_requirement(req_string) + except InvalidRequirement: + raise InstallationError(f"Invalid requirement: '{req_string}'") + + domains_not_allowed = [ + PyPI.file_storage_domain, + TestPyPI.file_storage_domain, + ] + if ( + req.url + and comes_from + and comes_from.link + and comes_from.link.netloc in domains_not_allowed + ): + # Explicitly disallow pypi packages that depend on external urls + raise InstallationError( + "Packages installed from PyPI cannot depend on packages " + "which are not also hosted on PyPI.\n" + "{} depends on {} ".format(comes_from.name, req) + ) + + return InstallRequirement( + req, + comes_from, + isolated=isolated, + use_pep517=use_pep517, + user_supplied=user_supplied, + ) + + +def install_req_from_parsed_requirement( + parsed_req: ParsedRequirement, + isolated: bool = False, + use_pep517: Optional[bool] = None, + user_supplied: bool = False, +) -> InstallRequirement: + if parsed_req.is_editable: + req = install_req_from_editable( + parsed_req.requirement, + comes_from=parsed_req.comes_from, + use_pep517=use_pep517, + constraint=parsed_req.constraint, + isolated=isolated, + user_supplied=user_supplied, + ) + + else: + req = install_req_from_line( + parsed_req.requirement, + comes_from=parsed_req.comes_from, + use_pep517=use_pep517, + isolated=isolated, + options=parsed_req.options, + constraint=parsed_req.constraint, + line_source=parsed_req.line_source, + user_supplied=user_supplied, + ) + return req + + +def install_req_from_link_and_ireq( + link: Link, ireq: InstallRequirement +) -> InstallRequirement: + return InstallRequirement( + req=ireq.req, + comes_from=ireq.comes_from, + editable=ireq.editable, + link=link, + markers=ireq.markers, + use_pep517=ireq.use_pep517, + isolated=ireq.isolated, + install_options=ireq.install_options, + global_options=ireq.global_options, + hash_options=ireq.hash_options, + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/req_file.py b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_file.py new file mode 100644 index 0000000..03ae504 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_file.py @@ -0,0 +1,536 @@ +""" +Requirements file parsing +""" + +import optparse +import os +import re +import shlex +import urllib.parse +from optparse import Values +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + Iterable, + Iterator, + List, + Optional, + Tuple, +) + +from pip._internal.cli import cmdoptions +from pip._internal.exceptions import InstallationError, RequirementsFileParseError +from pip._internal.models.search_scope import SearchScope +from pip._internal.network.session import PipSession +from pip._internal.network.utils import raise_for_status +from pip._internal.utils.encoding import auto_decode +from pip._internal.utils.urls import get_url_scheme + +if TYPE_CHECKING: + # NoReturn introduced in 3.6.2; imported only for type checking to maintain + # pip compatibility with older patch versions of Python 3.6 + from typing import NoReturn + + from pip._internal.index.package_finder import PackageFinder + +__all__ = ["parse_requirements"] + +ReqFileLines = Iterable[Tuple[int, str]] + +LineParser = Callable[[str], Tuple[str, Values]] + +SCHEME_RE = re.compile(r"^(http|https|file):", re.I) +COMMENT_RE = re.compile(r"(^|\s+)#.*$") + +# Matches environment variable-style values in '${MY_VARIABLE_1}' with the +# variable name consisting of only uppercase letters, digits or the '_' +# (underscore). This follows the POSIX standard defined in IEEE Std 1003.1, +# 2013 Edition. +ENV_VAR_RE = re.compile(r"(?P\$\{(?P[A-Z0-9_]+)\})") + +SUPPORTED_OPTIONS: List[Callable[..., optparse.Option]] = [ + cmdoptions.index_url, + cmdoptions.extra_index_url, + cmdoptions.no_index, + cmdoptions.constraints, + cmdoptions.requirements, + cmdoptions.editable, + cmdoptions.find_links, + cmdoptions.no_binary, + cmdoptions.only_binary, + cmdoptions.prefer_binary, + cmdoptions.require_hashes, + cmdoptions.pre, + cmdoptions.trusted_host, + cmdoptions.use_new_feature, +] + +# options to be passed to requirements +SUPPORTED_OPTIONS_REQ: List[Callable[..., optparse.Option]] = [ + cmdoptions.install_options, + cmdoptions.global_options, + cmdoptions.hash, +] + +# the 'dest' string values +SUPPORTED_OPTIONS_REQ_DEST = [str(o().dest) for o in SUPPORTED_OPTIONS_REQ] + + +class ParsedRequirement: + def __init__( + self, + requirement: str, + is_editable: bool, + comes_from: str, + constraint: bool, + options: Optional[Dict[str, Any]] = None, + line_source: Optional[str] = None, + ) -> None: + self.requirement = requirement + self.is_editable = is_editable + self.comes_from = comes_from + self.options = options + self.constraint = constraint + self.line_source = line_source + + +class ParsedLine: + def __init__( + self, + filename: str, + lineno: int, + args: str, + opts: Values, + constraint: bool, + ) -> None: + self.filename = filename + self.lineno = lineno + self.opts = opts + self.constraint = constraint + + if args: + self.is_requirement = True + self.is_editable = False + self.requirement = args + elif opts.editables: + self.is_requirement = True + self.is_editable = True + # We don't support multiple -e on one line + self.requirement = opts.editables[0] + else: + self.is_requirement = False + + +def parse_requirements( + filename: str, + session: PipSession, + finder: Optional["PackageFinder"] = None, + options: Optional[optparse.Values] = None, + constraint: bool = False, +) -> Iterator[ParsedRequirement]: + """Parse a requirements file and yield ParsedRequirement instances. + + :param filename: Path or url of requirements file. + :param session: PipSession instance. + :param finder: Instance of pip.index.PackageFinder. + :param options: cli options. + :param constraint: If true, parsing a constraint file rather than + requirements file. + """ + line_parser = get_line_parser(finder) + parser = RequirementsFileParser(session, line_parser) + + for parsed_line in parser.parse(filename, constraint): + parsed_req = handle_line( + parsed_line, options=options, finder=finder, session=session + ) + if parsed_req is not None: + yield parsed_req + + +def preprocess(content: str) -> ReqFileLines: + """Split, filter, and join lines, and return a line iterator + + :param content: the content of the requirements file + """ + lines_enum: ReqFileLines = enumerate(content.splitlines(), start=1) + lines_enum = join_lines(lines_enum) + lines_enum = ignore_comments(lines_enum) + lines_enum = expand_env_variables(lines_enum) + return lines_enum + + +def handle_requirement_line( + line: ParsedLine, + options: Optional[optparse.Values] = None, +) -> ParsedRequirement: + + # preserve for the nested code path + line_comes_from = "{} {} (line {})".format( + "-c" if line.constraint else "-r", + line.filename, + line.lineno, + ) + + assert line.is_requirement + + if line.is_editable: + # For editable requirements, we don't support per-requirement + # options, so just return the parsed requirement. + return ParsedRequirement( + requirement=line.requirement, + is_editable=line.is_editable, + comes_from=line_comes_from, + constraint=line.constraint, + ) + else: + if options: + # Disable wheels if the user has specified build options + cmdoptions.check_install_build_global(options, line.opts) + + # get the options that apply to requirements + req_options = {} + for dest in SUPPORTED_OPTIONS_REQ_DEST: + if dest in line.opts.__dict__ and line.opts.__dict__[dest]: + req_options[dest] = line.opts.__dict__[dest] + + line_source = f"line {line.lineno} of {line.filename}" + return ParsedRequirement( + requirement=line.requirement, + is_editable=line.is_editable, + comes_from=line_comes_from, + constraint=line.constraint, + options=req_options, + line_source=line_source, + ) + + +def handle_option_line( + opts: Values, + filename: str, + lineno: int, + finder: Optional["PackageFinder"] = None, + options: Optional[optparse.Values] = None, + session: Optional[PipSession] = None, +) -> None: + + if options: + # percolate options upward + if opts.require_hashes: + options.require_hashes = opts.require_hashes + if opts.features_enabled: + options.features_enabled.extend( + f for f in opts.features_enabled if f not in options.features_enabled + ) + + # set finder options + if finder: + find_links = finder.find_links + index_urls = finder.index_urls + if opts.index_url: + index_urls = [opts.index_url] + if opts.no_index is True: + index_urls = [] + if opts.extra_index_urls: + index_urls.extend(opts.extra_index_urls) + if opts.find_links: + # FIXME: it would be nice to keep track of the source + # of the find_links: support a find-links local path + # relative to a requirements file. + value = opts.find_links[0] + req_dir = os.path.dirname(os.path.abspath(filename)) + relative_to_reqs_file = os.path.join(req_dir, value) + if os.path.exists(relative_to_reqs_file): + value = relative_to_reqs_file + find_links.append(value) + + if session: + # We need to update the auth urls in session + session.update_index_urls(index_urls) + + search_scope = SearchScope( + find_links=find_links, + index_urls=index_urls, + ) + finder.search_scope = search_scope + + if opts.pre: + finder.set_allow_all_prereleases() + + if opts.prefer_binary: + finder.set_prefer_binary() + + if session: + for host in opts.trusted_hosts or []: + source = f"line {lineno} of {filename}" + session.add_trusted_host(host, source=source) + + +def handle_line( + line: ParsedLine, + options: Optional[optparse.Values] = None, + finder: Optional["PackageFinder"] = None, + session: Optional[PipSession] = None, +) -> Optional[ParsedRequirement]: + """Handle a single parsed requirements line; This can result in + creating/yielding requirements, or updating the finder. + + :param line: The parsed line to be processed. + :param options: CLI options. + :param finder: The finder - updated by non-requirement lines. + :param session: The session - updated by non-requirement lines. + + Returns a ParsedRequirement object if the line is a requirement line, + otherwise returns None. + + For lines that contain requirements, the only options that have an effect + are from SUPPORTED_OPTIONS_REQ, and they are scoped to the + requirement. Other options from SUPPORTED_OPTIONS may be present, but are + ignored. + + For lines that do not contain requirements, the only options that have an + effect are from SUPPORTED_OPTIONS. Options from SUPPORTED_OPTIONS_REQ may + be present, but are ignored. These lines may contain multiple options + (although our docs imply only one is supported), and all our parsed and + affect the finder. + """ + + if line.is_requirement: + parsed_req = handle_requirement_line(line, options) + return parsed_req + else: + handle_option_line( + line.opts, + line.filename, + line.lineno, + finder, + options, + session, + ) + return None + + +class RequirementsFileParser: + def __init__( + self, + session: PipSession, + line_parser: LineParser, + ) -> None: + self._session = session + self._line_parser = line_parser + + def parse(self, filename: str, constraint: bool) -> Iterator[ParsedLine]: + """Parse a given file, yielding parsed lines.""" + yield from self._parse_and_recurse(filename, constraint) + + def _parse_and_recurse( + self, filename: str, constraint: bool + ) -> Iterator[ParsedLine]: + for line in self._parse_file(filename, constraint): + if not line.is_requirement and ( + line.opts.requirements or line.opts.constraints + ): + # parse a nested requirements file + if line.opts.requirements: + req_path = line.opts.requirements[0] + nested_constraint = False + else: + req_path = line.opts.constraints[0] + nested_constraint = True + + # original file is over http + if SCHEME_RE.search(filename): + # do a url join so relative paths work + req_path = urllib.parse.urljoin(filename, req_path) + # original file and nested file are paths + elif not SCHEME_RE.search(req_path): + # do a join so relative paths work + req_path = os.path.join( + os.path.dirname(filename), + req_path, + ) + + yield from self._parse_and_recurse(req_path, nested_constraint) + else: + yield line + + def _parse_file(self, filename: str, constraint: bool) -> Iterator[ParsedLine]: + _, content = get_file_content(filename, self._session) + + lines_enum = preprocess(content) + + for line_number, line in lines_enum: + try: + args_str, opts = self._line_parser(line) + except OptionParsingError as e: + # add offending line + msg = f"Invalid requirement: {line}\n{e.msg}" + raise RequirementsFileParseError(msg) + + yield ParsedLine( + filename, + line_number, + args_str, + opts, + constraint, + ) + + +def get_line_parser(finder: Optional["PackageFinder"]) -> LineParser: + def parse_line(line: str) -> Tuple[str, Values]: + # Build new parser for each line since it accumulates appendable + # options. + parser = build_parser() + defaults = parser.get_default_values() + defaults.index_url = None + if finder: + defaults.format_control = finder.format_control + + args_str, options_str = break_args_options(line) + + opts, _ = parser.parse_args(shlex.split(options_str), defaults) + + return args_str, opts + + return parse_line + + +def break_args_options(line: str) -> Tuple[str, str]: + """Break up the line into an args and options string. We only want to shlex + (and then optparse) the options, not the args. args can contain markers + which are corrupted by shlex. + """ + tokens = line.split(" ") + args = [] + options = tokens[:] + for token in tokens: + if token.startswith("-") or token.startswith("--"): + break + else: + args.append(token) + options.pop(0) + return " ".join(args), " ".join(options) + + +class OptionParsingError(Exception): + def __init__(self, msg: str) -> None: + self.msg = msg + + +def build_parser() -> optparse.OptionParser: + """ + Return a parser for parsing requirement lines + """ + parser = optparse.OptionParser(add_help_option=False) + + option_factories = SUPPORTED_OPTIONS + SUPPORTED_OPTIONS_REQ + for option_factory in option_factories: + option = option_factory() + parser.add_option(option) + + # By default optparse sys.exits on parsing errors. We want to wrap + # that in our own exception. + def parser_exit(self: Any, msg: str) -> "NoReturn": + raise OptionParsingError(msg) + + # NOTE: mypy disallows assigning to a method + # https://github.com/python/mypy/issues/2427 + parser.exit = parser_exit # type: ignore + + return parser + + +def join_lines(lines_enum: ReqFileLines) -> ReqFileLines: + """Joins a line ending in '\' with the previous line (except when following + comments). The joined line takes on the index of the first line. + """ + primary_line_number = None + new_line: List[str] = [] + for line_number, line in lines_enum: + if not line.endswith("\\") or COMMENT_RE.match(line): + if COMMENT_RE.match(line): + # this ensures comments are always matched later + line = " " + line + if new_line: + new_line.append(line) + assert primary_line_number is not None + yield primary_line_number, "".join(new_line) + new_line = [] + else: + yield line_number, line + else: + if not new_line: + primary_line_number = line_number + new_line.append(line.strip("\\")) + + # last line contains \ + if new_line: + assert primary_line_number is not None + yield primary_line_number, "".join(new_line) + + # TODO: handle space after '\'. + + +def ignore_comments(lines_enum: ReqFileLines) -> ReqFileLines: + """ + Strips comments and filter empty lines. + """ + for line_number, line in lines_enum: + line = COMMENT_RE.sub("", line) + line = line.strip() + if line: + yield line_number, line + + +def expand_env_variables(lines_enum: ReqFileLines) -> ReqFileLines: + """Replace all environment variables that can be retrieved via `os.getenv`. + + The only allowed format for environment variables defined in the + requirement file is `${MY_VARIABLE_1}` to ensure two things: + + 1. Strings that contain a `$` aren't accidentally (partially) expanded. + 2. Ensure consistency across platforms for requirement files. + + These points are the result of a discussion on the `github pull + request #3514 `_. + + Valid characters in variable names follow the `POSIX standard + `_ and are limited + to uppercase letter, digits and the `_` (underscore). + """ + for line_number, line in lines_enum: + for env_var, var_name in ENV_VAR_RE.findall(line): + value = os.getenv(var_name) + if not value: + continue + + line = line.replace(env_var, value) + + yield line_number, line + + +def get_file_content(url: str, session: PipSession) -> Tuple[str, str]: + """Gets the content of a file; it may be a filename, file: URL, or + http: URL. Returns (location, content). Content is unicode. + Respects # -*- coding: declarations on the retrieved files. + + :param url: File path or url. + :param session: PipSession instance. + """ + scheme = get_url_scheme(url) + + # Pip has special support for file:// URLs (LocalFSAdapter). + if scheme in ["http", "https", "file"]: + resp = session.get(url) + raise_for_status(resp) + return resp.url, resp.text + + # Assume this is a bare path. + try: + with open(url, "rb") as f: + content = auto_decode(f.read()) + except OSError as exc: + raise InstallationError(f"Could not open requirements file: {exc}") + return url, content diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/req_install.py b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_install.py new file mode 100644 index 0000000..95dacab --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_install.py @@ -0,0 +1,891 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import functools +import logging +import os +import shutil +import sys +import uuid +import zipfile +from typing import Any, Collection, Dict, Iterable, List, Optional, Sequence, Union + +from pip._vendor import pkg_resources +from pip._vendor.packaging.markers import Marker +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import Version +from pip._vendor.packaging.version import parse as parse_version +from pip._vendor.pep517.wrappers import Pep517HookCaller +from pip._vendor.pkg_resources import Distribution + +from pip._internal.build_env import BuildEnvironment, NoOpBuildEnvironment +from pip._internal.exceptions import InstallationError +from pip._internal.locations import get_scheme +from pip._internal.models.link import Link +from pip._internal.operations.build.metadata import generate_metadata +from pip._internal.operations.build.metadata_editable import generate_editable_metadata +from pip._internal.operations.build.metadata_legacy import ( + generate_metadata as generate_metadata_legacy, +) +from pip._internal.operations.install.editable_legacy import ( + install_editable as install_editable_legacy, +) +from pip._internal.operations.install.legacy import LegacyInstallFailure +from pip._internal.operations.install.legacy import install as install_legacy +from pip._internal.operations.install.wheel import install_wheel +from pip._internal.pyproject import load_pyproject_toml, make_pyproject_path +from pip._internal.req.req_uninstall import UninstallPathSet +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.direct_url_helpers import ( + direct_url_for_editable, + direct_url_from_link, +) +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.misc import ( + ask_path_exists, + backup_dir, + display_path, + dist_in_site_packages, + dist_in_usersite, + get_distribution, + hide_url, + redact_auth_from_url, +) +from pip._internal.utils.packaging import get_metadata +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds +from pip._internal.utils.virtualenv import running_under_virtualenv +from pip._internal.vcs import vcs + +logger = logging.getLogger(__name__) + + +def _get_dist(metadata_directory: str) -> Distribution: + """Return a pkg_resources.Distribution for the provided + metadata directory. + """ + dist_dir = metadata_directory.rstrip(os.sep) + + # Build a PathMetadata object, from path to metadata. :wink: + base_dir, dist_dir_name = os.path.split(dist_dir) + metadata = pkg_resources.PathMetadata(base_dir, dist_dir) + + # Determine the correct Distribution object type. + if dist_dir.endswith(".egg-info"): + dist_cls = pkg_resources.Distribution + dist_name = os.path.splitext(dist_dir_name)[0] + else: + assert dist_dir.endswith(".dist-info") + dist_cls = pkg_resources.DistInfoDistribution + dist_name = os.path.splitext(dist_dir_name)[0].split("-")[0] + + return dist_cls( + base_dir, + project_name=dist_name, + metadata=metadata, + ) + + +class InstallRequirement: + """ + Represents something that may be installed later on, may have information + about where to fetch the relevant requirement and also contains logic for + installing the said requirement. + """ + + def __init__( + self, + req: Optional[Requirement], + comes_from: Optional[Union[str, "InstallRequirement"]], + editable: bool = False, + link: Optional[Link] = None, + markers: Optional[Marker] = None, + use_pep517: Optional[bool] = None, + isolated: bool = False, + install_options: Optional[List[str]] = None, + global_options: Optional[List[str]] = None, + hash_options: Optional[Dict[str, List[str]]] = None, + constraint: bool = False, + extras: Collection[str] = (), + user_supplied: bool = False, + permit_editable_wheels: bool = False, + ) -> None: + assert req is None or isinstance(req, Requirement), req + self.req = req + self.comes_from = comes_from + self.constraint = constraint + self.editable = editable + self.permit_editable_wheels = permit_editable_wheels + self.legacy_install_reason: Optional[int] = None + + # source_dir is the local directory where the linked requirement is + # located, or unpacked. In case unpacking is needed, creating and + # populating source_dir is done by the RequirementPreparer. Note this + # is not necessarily the directory where pyproject.toml or setup.py is + # located - that one is obtained via unpacked_source_directory. + self.source_dir: Optional[str] = None + if self.editable: + assert link + if link.is_file: + self.source_dir = os.path.normpath(os.path.abspath(link.file_path)) + + if link is None and req and req.url: + # PEP 508 URL requirement + link = Link(req.url) + self.link = self.original_link = link + self.original_link_is_in_wheel_cache = False + + # Path to any downloaded or already-existing package. + self.local_file_path: Optional[str] = None + if self.link and self.link.is_file: + self.local_file_path = self.link.file_path + + if extras: + self.extras = extras + elif req: + self.extras = {pkg_resources.safe_extra(extra) for extra in req.extras} + else: + self.extras = set() + if markers is None and req: + markers = req.marker + self.markers = markers + + # This holds the pkg_resources.Distribution object if this requirement + # is already available: + self.satisfied_by: Optional[Distribution] = None + # Whether the installation process should try to uninstall an existing + # distribution before installing this requirement. + self.should_reinstall = False + # Temporary build location + self._temp_build_dir: Optional[TempDirectory] = None + # Set to True after successful installation + self.install_succeeded: Optional[bool] = None + # Supplied options + self.install_options = install_options if install_options else [] + self.global_options = global_options if global_options else [] + self.hash_options = hash_options if hash_options else {} + # Set to True after successful preparation of this requirement + self.prepared = False + # User supplied requirement are explicitly requested for installation + # by the user via CLI arguments or requirements files, as opposed to, + # e.g. dependencies, extras or constraints. + self.user_supplied = user_supplied + + self.isolated = isolated + self.build_env: BuildEnvironment = NoOpBuildEnvironment() + + # For PEP 517, the directory where we request the project metadata + # gets stored. We need this to pass to build_wheel, so the backend + # can ensure that the wheel matches the metadata (see the PEP for + # details). + self.metadata_directory: Optional[str] = None + + # The static build requirements (from pyproject.toml) + self.pyproject_requires: Optional[List[str]] = None + + # Build requirements that we will check are available + self.requirements_to_check: List[str] = [] + + # The PEP 517 backend we should use to build the project + self.pep517_backend: Optional[Pep517HookCaller] = None + + # Are we using PEP 517 for this requirement? + # After pyproject.toml has been loaded, the only valid values are True + # and False. Before loading, None is valid (meaning "use the default"). + # Setting an explicit value before loading pyproject.toml is supported, + # but after loading this flag should be treated as read only. + self.use_pep517 = use_pep517 + + # This requirement needs more preparation before it can be built + self.needs_more_preparation = False + + def __str__(self) -> str: + if self.req: + s = str(self.req) + if self.link: + s += " from {}".format(redact_auth_from_url(self.link.url)) + elif self.link: + s = redact_auth_from_url(self.link.url) + else: + s = "" + if self.satisfied_by is not None: + s += " in {}".format(display_path(self.satisfied_by.location)) + if self.comes_from: + if isinstance(self.comes_from, str): + comes_from: Optional[str] = self.comes_from + else: + comes_from = self.comes_from.from_path() + if comes_from: + s += f" (from {comes_from})" + return s + + def __repr__(self) -> str: + return "<{} object: {} editable={!r}>".format( + self.__class__.__name__, str(self), self.editable + ) + + def format_debug(self) -> str: + """An un-tested helper for getting state, for debugging.""" + attributes = vars(self) + names = sorted(attributes) + + state = ("{}={!r}".format(attr, attributes[attr]) for attr in sorted(names)) + return "<{name} object: {{{state}}}>".format( + name=self.__class__.__name__, + state=", ".join(state), + ) + + # Things that are valid for all kinds of requirements? + @property + def name(self) -> Optional[str]: + if self.req is None: + return None + return pkg_resources.safe_name(self.req.name) + + @functools.lru_cache() # use cached_property in python 3.8+ + def supports_pyproject_editable(self) -> bool: + if not self.use_pep517: + return False + assert self.pep517_backend + with self.build_env: + runner = runner_with_spinner_message( + "Checking if build backend supports build_editable" + ) + with self.pep517_backend.subprocess_runner(runner): + return "build_editable" in self.pep517_backend._supported_features() + + @property + def specifier(self) -> SpecifierSet: + return self.req.specifier + + @property + def is_pinned(self) -> bool: + """Return whether I am pinned to an exact version. + + For example, some-package==1.2 is pinned; some-package>1.2 is not. + """ + specifiers = self.specifier + return len(specifiers) == 1 and next(iter(specifiers)).operator in {"==", "==="} + + def match_markers(self, extras_requested: Optional[Iterable[str]] = None) -> bool: + if not extras_requested: + # Provide an extra to safely evaluate the markers + # without matching any extra + extras_requested = ("",) + if self.markers is not None: + return any( + self.markers.evaluate({"extra": extra}) for extra in extras_requested + ) + else: + return True + + @property + def has_hash_options(self) -> bool: + """Return whether any known-good hashes are specified as options. + + These activate --require-hashes mode; hashes specified as part of a + URL do not. + + """ + return bool(self.hash_options) + + def hashes(self, trust_internet: bool = True) -> Hashes: + """Return a hash-comparer that considers my option- and URL-based + hashes to be known-good. + + Hashes in URLs--ones embedded in the requirements file, not ones + downloaded from an index server--are almost peers with ones from + flags. They satisfy --require-hashes (whether it was implicitly or + explicitly activated) but do not activate it. md5 and sha224 are not + allowed in flags, which should nudge people toward good algos. We + always OR all hashes together, even ones from URLs. + + :param trust_internet: Whether to trust URL-based (#md5=...) hashes + downloaded from the internet, as by populate_link() + + """ + good_hashes = self.hash_options.copy() + link = self.link if trust_internet else self.original_link + if link and link.hash: + good_hashes.setdefault(link.hash_name, []).append(link.hash) + return Hashes(good_hashes) + + def from_path(self) -> Optional[str]: + """Format a nice indicator to show where this "comes from" """ + if self.req is None: + return None + s = str(self.req) + if self.comes_from: + if isinstance(self.comes_from, str): + comes_from = self.comes_from + else: + comes_from = self.comes_from.from_path() + if comes_from: + s += "->" + comes_from + return s + + def ensure_build_location( + self, build_dir: str, autodelete: bool, parallel_builds: bool + ) -> str: + assert build_dir is not None + if self._temp_build_dir is not None: + assert self._temp_build_dir.path + return self._temp_build_dir.path + if self.req is None: + # Some systems have /tmp as a symlink which confuses custom + # builds (such as numpy). Thus, we ensure that the real path + # is returned. + self._temp_build_dir = TempDirectory( + kind=tempdir_kinds.REQ_BUILD, globally_managed=True + ) + + return self._temp_build_dir.path + + # This is the only remaining place where we manually determine the path + # for the temporary directory. It is only needed for editables where + # it is the value of the --src option. + + # When parallel builds are enabled, add a UUID to the build directory + # name so multiple builds do not interfere with each other. + dir_name: str = canonicalize_name(self.name) + if parallel_builds: + dir_name = f"{dir_name}_{uuid.uuid4().hex}" + + # FIXME: Is there a better place to create the build_dir? (hg and bzr + # need this) + if not os.path.exists(build_dir): + logger.debug("Creating directory %s", build_dir) + os.makedirs(build_dir) + actual_build_dir = os.path.join(build_dir, dir_name) + # `None` indicates that we respect the globally-configured deletion + # settings, which is what we actually want when auto-deleting. + delete_arg = None if autodelete else False + return TempDirectory( + path=actual_build_dir, + delete=delete_arg, + kind=tempdir_kinds.REQ_BUILD, + globally_managed=True, + ).path + + def _set_requirement(self) -> None: + """Set requirement after generating metadata.""" + assert self.req is None + assert self.metadata is not None + assert self.source_dir is not None + + # Construct a Requirement object from the generated metadata + if isinstance(parse_version(self.metadata["Version"]), Version): + op = "==" + else: + op = "===" + + self.req = Requirement( + "".join( + [ + self.metadata["Name"], + op, + self.metadata["Version"], + ] + ) + ) + + def warn_on_mismatching_name(self) -> None: + metadata_name = canonicalize_name(self.metadata["Name"]) + if canonicalize_name(self.req.name) == metadata_name: + # Everything is fine. + return + + # If we're here, there's a mismatch. Log a warning about it. + logger.warning( + "Generating metadata for package %s " + "produced metadata for project name %s. Fix your " + "#egg=%s fragments.", + self.name, + metadata_name, + self.name, + ) + self.req = Requirement(metadata_name) + + def check_if_exists(self, use_user_site: bool) -> None: + """Find an installed distribution that satisfies or conflicts + with this requirement, and set self.satisfied_by or + self.should_reinstall appropriately. + """ + if self.req is None: + return + existing_dist = get_distribution(self.req.name) + if not existing_dist: + return + + # pkg_resouces may contain a different copy of packaging.version from + # pip in if the downstream distributor does a poor job debundling pip. + # We avoid existing_dist.parsed_version and let SpecifierSet.contains + # parses the version instead. + existing_version = existing_dist.version + version_compatible = ( + existing_version is not None + and self.req.specifier.contains(existing_version, prereleases=True) + ) + if not version_compatible: + self.satisfied_by = None + if use_user_site: + if dist_in_usersite(existing_dist): + self.should_reinstall = True + elif running_under_virtualenv() and dist_in_site_packages( + existing_dist + ): + raise InstallationError( + "Will not install to the user site because it will " + "lack sys.path precedence to {} in {}".format( + existing_dist.project_name, existing_dist.location + ) + ) + else: + self.should_reinstall = True + else: + if self.editable: + self.should_reinstall = True + # when installing editables, nothing pre-existing should ever + # satisfy + self.satisfied_by = None + else: + self.satisfied_by = existing_dist + + # Things valid for wheels + @property + def is_wheel(self) -> bool: + if not self.link: + return False + return self.link.is_wheel + + # Things valid for sdists + @property + def unpacked_source_directory(self) -> str: + return os.path.join( + self.source_dir, self.link and self.link.subdirectory_fragment or "" + ) + + @property + def setup_py_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + setup_py = os.path.join(self.unpacked_source_directory, "setup.py") + + return setup_py + + @property + def setup_cfg_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + setup_cfg = os.path.join(self.unpacked_source_directory, "setup.cfg") + + return setup_cfg + + @property + def pyproject_toml_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + return make_pyproject_path(self.unpacked_source_directory) + + def load_pyproject_toml(self) -> None: + """Load the pyproject.toml file. + + After calling this routine, all of the attributes related to PEP 517 + processing for this requirement have been set. In particular, the + use_pep517 attribute can be used to determine whether we should + follow the PEP 517 or legacy (setup.py) code path. + """ + pyproject_toml_data = load_pyproject_toml( + self.use_pep517, self.pyproject_toml_path, self.setup_py_path, str(self) + ) + + if pyproject_toml_data is None: + self.use_pep517 = False + return + + self.use_pep517 = True + requires, backend, check, backend_path = pyproject_toml_data + self.requirements_to_check = check + self.pyproject_requires = requires + self.pep517_backend = Pep517HookCaller( + self.unpacked_source_directory, + backend, + backend_path=backend_path, + ) + + def isolated_editable_sanity_check(self) -> None: + """Check that an editable requirement if valid for use with PEP 517/518. + + This verifies that an editable that has a pyproject.toml either supports PEP 660 + or as a setup.py or a setup.cfg + """ + if ( + self.editable + and self.use_pep517 + and not self.supports_pyproject_editable() + and not os.path.isfile(self.setup_py_path) + and not os.path.isfile(self.setup_cfg_path) + ): + raise InstallationError( + f"Project {self} has a 'pyproject.toml' and its build " + f"backend is missing the 'build_editable' hook. Since it does not " + f"have a 'setup.py' nor a 'setup.cfg', " + f"it cannot be installed in editable mode. " + f"Consider using a build backend that supports PEP 660." + ) + + def prepare_metadata(self) -> None: + """Ensure that project metadata is available. + + Under PEP 517 and PEP 660, call the backend hook to prepare the metadata. + Under legacy processing, call setup.py egg-info. + """ + assert self.source_dir + + if self.use_pep517: + assert self.pep517_backend is not None + if ( + self.editable + and self.permit_editable_wheels + and self.supports_pyproject_editable() + ): + self.metadata_directory = generate_editable_metadata( + build_env=self.build_env, + backend=self.pep517_backend, + ) + else: + self.metadata_directory = generate_metadata( + build_env=self.build_env, + backend=self.pep517_backend, + ) + else: + self.metadata_directory = generate_metadata_legacy( + build_env=self.build_env, + setup_py_path=self.setup_py_path, + source_dir=self.unpacked_source_directory, + isolated=self.isolated, + details=self.name or f"from {self.link}", + ) + + # Act on the newly generated metadata, based on the name and version. + if not self.name: + self._set_requirement() + else: + self.warn_on_mismatching_name() + + self.assert_source_matches_version() + + @property + def metadata(self) -> Any: + if not hasattr(self, "_metadata"): + self._metadata = get_metadata(self.get_dist()) + + return self._metadata + + def get_dist(self) -> Distribution: + return _get_dist(self.metadata_directory) + + def assert_source_matches_version(self) -> None: + assert self.source_dir + version = self.metadata["version"] + if self.req.specifier and version not in self.req.specifier: + logger.warning( + "Requested %s, but installing version %s", + self, + version, + ) + else: + logger.debug( + "Source in %s has version %s, which satisfies requirement %s", + display_path(self.source_dir), + version, + self, + ) + + # For both source distributions and editables + def ensure_has_source_dir( + self, + parent_dir: str, + autodelete: bool = False, + parallel_builds: bool = False, + ) -> None: + """Ensure that a source_dir is set. + + This will create a temporary build dir if the name of the requirement + isn't known yet. + + :param parent_dir: The ideal pip parent_dir for the source_dir. + Generally src_dir for editables and build_dir for sdists. + :return: self.source_dir + """ + if self.source_dir is None: + self.source_dir = self.ensure_build_location( + parent_dir, + autodelete=autodelete, + parallel_builds=parallel_builds, + ) + + # For editable installations + def update_editable(self) -> None: + if not self.link: + logger.debug( + "Cannot update repository at %s; repository location is unknown", + self.source_dir, + ) + return + assert self.editable + assert self.source_dir + if self.link.scheme == "file": + # Static paths don't get updated + return + vcs_backend = vcs.get_backend_for_scheme(self.link.scheme) + # Editable requirements are validated in Requirement constructors. + # So here, if it's neither a path nor a valid VCS URL, it's a bug. + assert vcs_backend, f"Unsupported VCS URL {self.link.url}" + hidden_url = hide_url(self.link.url) + vcs_backend.obtain(self.source_dir, url=hidden_url) + + # Top-level Actions + def uninstall( + self, auto_confirm: bool = False, verbose: bool = False + ) -> Optional[UninstallPathSet]: + """ + Uninstall the distribution currently satisfying this requirement. + + Prompts before removing or modifying files unless + ``auto_confirm`` is True. + + Refuses to delete or modify files outside of ``sys.prefix`` - + thus uninstallation within a virtual environment can only + modify that virtual environment, even if the virtualenv is + linked to global site-packages. + + """ + assert self.req + dist = get_distribution(self.req.name) + if not dist: + logger.warning("Skipping %s as it is not installed.", self.name) + return None + logger.info("Found existing installation: %s", dist) + + uninstalled_pathset = UninstallPathSet.from_dist(dist) + uninstalled_pathset.remove(auto_confirm, verbose) + return uninstalled_pathset + + def _get_archive_name(self, path: str, parentdir: str, rootdir: str) -> str: + def _clean_zip_name(name: str, prefix: str) -> str: + assert name.startswith( + prefix + os.path.sep + ), f"name {name!r} doesn't start with prefix {prefix!r}" + name = name[len(prefix) + 1 :] + name = name.replace(os.path.sep, "/") + return name + + path = os.path.join(parentdir, path) + name = _clean_zip_name(path, rootdir) + return self.name + "/" + name + + def archive(self, build_dir: Optional[str]) -> None: + """Saves archive to provided build_dir. + + Used for saving downloaded VCS requirements as part of `pip download`. + """ + assert self.source_dir + if build_dir is None: + return + + create_archive = True + archive_name = "{}-{}.zip".format(self.name, self.metadata["version"]) + archive_path = os.path.join(build_dir, archive_name) + + if os.path.exists(archive_path): + response = ask_path_exists( + "The file {} exists. (i)gnore, (w)ipe, " + "(b)ackup, (a)bort ".format(display_path(archive_path)), + ("i", "w", "b", "a"), + ) + if response == "i": + create_archive = False + elif response == "w": + logger.warning("Deleting %s", display_path(archive_path)) + os.remove(archive_path) + elif response == "b": + dest_file = backup_dir(archive_path) + logger.warning( + "Backing up %s to %s", + display_path(archive_path), + display_path(dest_file), + ) + shutil.move(archive_path, dest_file) + elif response == "a": + sys.exit(-1) + + if not create_archive: + return + + zip_output = zipfile.ZipFile( + archive_path, + "w", + zipfile.ZIP_DEFLATED, + allowZip64=True, + ) + with zip_output: + dir = os.path.normcase(os.path.abspath(self.unpacked_source_directory)) + for dirpath, dirnames, filenames in os.walk(dir): + for dirname in dirnames: + dir_arcname = self._get_archive_name( + dirname, + parentdir=dirpath, + rootdir=dir, + ) + zipdir = zipfile.ZipInfo(dir_arcname + "/") + zipdir.external_attr = 0x1ED << 16 # 0o755 + zip_output.writestr(zipdir, "") + for filename in filenames: + file_arcname = self._get_archive_name( + filename, + parentdir=dirpath, + rootdir=dir, + ) + filename = os.path.join(dirpath, filename) + zip_output.write(filename, file_arcname) + + logger.info("Saved %s", display_path(archive_path)) + + def install( + self, + install_options: List[str], + global_options: Optional[Sequence[str]] = None, + root: Optional[str] = None, + home: Optional[str] = None, + prefix: Optional[str] = None, + warn_script_location: bool = True, + use_user_site: bool = False, + pycompile: bool = True, + ) -> None: + scheme = get_scheme( + self.name, + user=use_user_site, + home=home, + root=root, + isolated=self.isolated, + prefix=prefix, + ) + + global_options = global_options if global_options is not None else [] + if self.editable and not self.is_wheel: + install_editable_legacy( + install_options, + global_options, + prefix=prefix, + home=home, + use_user_site=use_user_site, + name=self.name, + setup_py_path=self.setup_py_path, + isolated=self.isolated, + build_env=self.build_env, + unpacked_source_directory=self.unpacked_source_directory, + ) + self.install_succeeded = True + return + + if self.is_wheel: + assert self.local_file_path + direct_url = None + if self.editable: + direct_url = direct_url_for_editable(self.unpacked_source_directory) + elif self.original_link: + direct_url = direct_url_from_link( + self.original_link, + self.source_dir, + self.original_link_is_in_wheel_cache, + ) + install_wheel( + self.name, + self.local_file_path, + scheme=scheme, + req_description=str(self.req), + pycompile=pycompile, + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=self.user_supplied, + ) + self.install_succeeded = True + return + + # TODO: Why don't we do this for editable installs? + + # Extend the list of global and install options passed on to + # the setup.py call with the ones from the requirements file. + # Options specified in requirements file override those + # specified on the command line, since the last option given + # to setup.py is the one that is used. + global_options = list(global_options) + self.global_options + install_options = list(install_options) + self.install_options + + try: + success = install_legacy( + install_options=install_options, + global_options=global_options, + root=root, + home=home, + prefix=prefix, + use_user_site=use_user_site, + pycompile=pycompile, + scheme=scheme, + setup_py_path=self.setup_py_path, + isolated=self.isolated, + req_name=self.name, + build_env=self.build_env, + unpacked_source_directory=self.unpacked_source_directory, + req_description=str(self.req), + ) + except LegacyInstallFailure as exc: + self.install_succeeded = False + raise exc.__cause__ + except Exception: + self.install_succeeded = True + raise + + self.install_succeeded = success + + if success and self.legacy_install_reason == 8368: + deprecated( + reason=( + "{} was installed using the legacy 'setup.py install' " + "method, because a wheel could not be built for it.".format( + self.name + ) + ), + replacement="to fix the wheel build issue reported above", + gone_in=None, + issue=8368, + ) + + +def check_invalid_constraint_type(req: InstallRequirement) -> str: + + # Check for unsupported forms + problem = "" + if not req.name: + problem = "Unnamed requirements are not allowed as constraints" + elif req.editable: + problem = "Editable requirements are not allowed as constraints" + elif req.extras: + problem = "Constraints cannot have extras" + + if problem: + deprecated( + reason=( + "Constraints are only allowed to take the form of a package " + "name and a version specifier. Other forms were originally " + "permitted as an accident of the implementation, but were " + "undocumented. The new implementation of the resolver no " + "longer supports these forms." + ), + replacement="replacing the constraint with a requirement", + # No plan yet for when the new resolver becomes default + gone_in=None, + issue=8210, + ) + + return problem diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/req_set.py b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_set.py new file mode 100644 index 0000000..6626c37 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_set.py @@ -0,0 +1,189 @@ +import logging +from collections import OrderedDict +from typing import Dict, Iterable, List, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InstallationError +from pip._internal.models.wheel import Wheel +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils import compatibility_tags + +logger = logging.getLogger(__name__) + + +class RequirementSet: + def __init__(self, check_supported_wheels: bool = True) -> None: + """Create a RequirementSet.""" + + self.requirements: Dict[str, InstallRequirement] = OrderedDict() + self.check_supported_wheels = check_supported_wheels + + self.unnamed_requirements: List[InstallRequirement] = [] + + def __str__(self) -> str: + requirements = sorted( + (req for req in self.requirements.values() if not req.comes_from), + key=lambda req: canonicalize_name(req.name or ""), + ) + return " ".join(str(req.req) for req in requirements) + + def __repr__(self) -> str: + requirements = sorted( + self.requirements.values(), + key=lambda req: canonicalize_name(req.name or ""), + ) + + format_string = "<{classname} object; {count} requirement(s): {reqs}>" + return format_string.format( + classname=self.__class__.__name__, + count=len(requirements), + reqs=", ".join(str(req.req) for req in requirements), + ) + + def add_unnamed_requirement(self, install_req: InstallRequirement) -> None: + assert not install_req.name + self.unnamed_requirements.append(install_req) + + def add_named_requirement(self, install_req: InstallRequirement) -> None: + assert install_req.name + + project_name = canonicalize_name(install_req.name) + self.requirements[project_name] = install_req + + def add_requirement( + self, + install_req: InstallRequirement, + parent_req_name: Optional[str] = None, + extras_requested: Optional[Iterable[str]] = None, + ) -> Tuple[List[InstallRequirement], Optional[InstallRequirement]]: + """Add install_req as a requirement to install. + + :param parent_req_name: The name of the requirement that needed this + added. The name is used because when multiple unnamed requirements + resolve to the same name, we could otherwise end up with dependency + links that point outside the Requirements set. parent_req must + already be added. Note that None implies that this is a user + supplied requirement, vs an inferred one. + :param extras_requested: an iterable of extras used to evaluate the + environment markers. + :return: Additional requirements to scan. That is either [] if + the requirement is not applicable, or [install_req] if the + requirement is applicable and has just been added. + """ + # If the markers do not match, ignore this requirement. + if not install_req.match_markers(extras_requested): + logger.info( + "Ignoring %s: markers '%s' don't match your environment", + install_req.name, + install_req.markers, + ) + return [], None + + # If the wheel is not supported, raise an error. + # Should check this after filtering out based on environment markers to + # allow specifying different wheels based on the environment/OS, in a + # single requirements file. + if install_req.link and install_req.link.is_wheel: + wheel = Wheel(install_req.link.filename) + tags = compatibility_tags.get_supported() + if self.check_supported_wheels and not wheel.supported(tags): + raise InstallationError( + "{} is not a supported wheel on this platform.".format( + wheel.filename + ) + ) + + # This next bit is really a sanity check. + assert ( + not install_req.user_supplied or parent_req_name is None + ), "a user supplied req shouldn't have a parent" + + # Unnamed requirements are scanned again and the requirement won't be + # added as a dependency until after scanning. + if not install_req.name: + self.add_unnamed_requirement(install_req) + return [install_req], None + + try: + existing_req: Optional[InstallRequirement] = self.get_requirement( + install_req.name + ) + except KeyError: + existing_req = None + + has_conflicting_requirement = ( + parent_req_name is None + and existing_req + and not existing_req.constraint + and existing_req.extras == install_req.extras + and existing_req.req + and install_req.req + and existing_req.req.specifier != install_req.req.specifier + ) + if has_conflicting_requirement: + raise InstallationError( + "Double requirement given: {} (already in {}, name={!r})".format( + install_req, existing_req, install_req.name + ) + ) + + # When no existing requirement exists, add the requirement as a + # dependency and it will be scanned again after. + if not existing_req: + self.add_named_requirement(install_req) + # We'd want to rescan this requirement later + return [install_req], install_req + + # Assume there's no need to scan, and that we've already + # encountered this for scanning. + if install_req.constraint or not existing_req.constraint: + return [], existing_req + + does_not_satisfy_constraint = install_req.link and not ( + existing_req.link and install_req.link.path == existing_req.link.path + ) + if does_not_satisfy_constraint: + raise InstallationError( + "Could not satisfy constraints for '{}': " + "installation from path or url cannot be " + "constrained to a version".format(install_req.name) + ) + # If we're now installing a constraint, mark the existing + # object for real installation. + existing_req.constraint = False + # If we're now installing a user supplied requirement, + # mark the existing object as such. + if install_req.user_supplied: + existing_req.user_supplied = True + existing_req.extras = tuple( + sorted(set(existing_req.extras) | set(install_req.extras)) + ) + logger.debug( + "Setting %s extras to: %s", + existing_req, + existing_req.extras, + ) + # Return the existing requirement for addition to the parent and + # scanning again. + return [existing_req], existing_req + + def has_requirement(self, name: str) -> bool: + project_name = canonicalize_name(name) + + return ( + project_name in self.requirements + and not self.requirements[project_name].constraint + ) + + def get_requirement(self, name: str) -> InstallRequirement: + project_name = canonicalize_name(name) + + if project_name in self.requirements: + return self.requirements[project_name] + + raise KeyError(f"No project with the name {name!r}") + + @property + def all_requirements(self) -> List[InstallRequirement]: + return self.unnamed_requirements + list(self.requirements.values()) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/req_tracker.py b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_tracker.py new file mode 100644 index 0000000..24d3c53 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_tracker.py @@ -0,0 +1,124 @@ +import contextlib +import hashlib +import logging +import os +from types import TracebackType +from typing import Dict, Iterator, Optional, Set, Type, Union + +from pip._internal.models.link import Link +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +@contextlib.contextmanager +def update_env_context_manager(**changes: str) -> Iterator[None]: + target = os.environ + + # Save values from the target and change them. + non_existent_marker = object() + saved_values: Dict[str, Union[object, str]] = {} + for name, new_value in changes.items(): + try: + saved_values[name] = target[name] + except KeyError: + saved_values[name] = non_existent_marker + target[name] = new_value + + try: + yield + finally: + # Restore original values in the target. + for name, original_value in saved_values.items(): + if original_value is non_existent_marker: + del target[name] + else: + assert isinstance(original_value, str) # for mypy + target[name] = original_value + + +@contextlib.contextmanager +def get_requirement_tracker() -> Iterator["RequirementTracker"]: + root = os.environ.get("PIP_REQ_TRACKER") + with contextlib.ExitStack() as ctx: + if root is None: + root = ctx.enter_context(TempDirectory(kind="req-tracker")).path + ctx.enter_context(update_env_context_manager(PIP_REQ_TRACKER=root)) + logger.debug("Initialized build tracking at %s", root) + + with RequirementTracker(root) as tracker: + yield tracker + + +class RequirementTracker: + def __init__(self, root: str) -> None: + self._root = root + self._entries: Set[InstallRequirement] = set() + logger.debug("Created build tracker: %s", self._root) + + def __enter__(self) -> "RequirementTracker": + logger.debug("Entered build tracker: %s", self._root) + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + self.cleanup() + + def _entry_path(self, link: Link) -> str: + hashed = hashlib.sha224(link.url_without_fragment.encode()).hexdigest() + return os.path.join(self._root, hashed) + + def add(self, req: InstallRequirement) -> None: + """Add an InstallRequirement to build tracking.""" + + assert req.link + # Get the file to write information about this requirement. + entry_path = self._entry_path(req.link) + + # Try reading from the file. If it exists and can be read from, a build + # is already in progress, so a LookupError is raised. + try: + with open(entry_path) as fp: + contents = fp.read() + except FileNotFoundError: + pass + else: + message = "{} is already being built: {}".format(req.link, contents) + raise LookupError(message) + + # If we're here, req should really not be building already. + assert req not in self._entries + + # Start tracking this requirement. + with open(entry_path, "w", encoding="utf-8") as fp: + fp.write(str(req)) + self._entries.add(req) + + logger.debug("Added %s to build tracker %r", req, self._root) + + def remove(self, req: InstallRequirement) -> None: + """Remove an InstallRequirement from build tracking.""" + + assert req.link + # Delete the created file and the corresponding entries. + os.unlink(self._entry_path(req.link)) + self._entries.remove(req) + + logger.debug("Removed %s from build tracker %r", req, self._root) + + def cleanup(self) -> None: + for req in set(self._entries): + self.remove(req) + + logger.debug("Removed build tracker: %r", self._root) + + @contextlib.contextmanager + def track(self, req: InstallRequirement) -> Iterator[None]: + self.add(req) + yield + self.remove(req) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/req/req_uninstall.py b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_uninstall.py new file mode 100644 index 0000000..779e93b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/req/req_uninstall.py @@ -0,0 +1,633 @@ +import csv +import functools +import os +import sys +import sysconfig +from importlib.util import cache_from_source +from typing import Any, Callable, Dict, Iterable, Iterator, List, Optional, Set, Tuple + +from pip._vendor import pkg_resources +from pip._vendor.pkg_resources import Distribution + +from pip._internal.exceptions import UninstallationError +from pip._internal.locations import get_bin_prefix, get_bin_user +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.egg_link import egg_link_path_from_location +from pip._internal.utils.logging import getLogger, indent_log +from pip._internal.utils.misc import ( + ask, + dist_in_usersite, + dist_is_local, + is_local, + normalize_path, + renames, + rmtree, +) +from pip._internal.utils.temp_dir import AdjacentTempDirectory, TempDirectory + +logger = getLogger(__name__) + + +def _script_names(dist: Distribution, script_name: str, is_gui: bool) -> List[str]: + """Create the fully qualified name of the files created by + {console,gui}_scripts for the given ``dist``. + Returns the list of file names + """ + if dist_in_usersite(dist): + bin_dir = get_bin_user() + else: + bin_dir = get_bin_prefix() + exe_name = os.path.join(bin_dir, script_name) + paths_to_remove = [exe_name] + if WINDOWS: + paths_to_remove.append(exe_name + ".exe") + paths_to_remove.append(exe_name + ".exe.manifest") + if is_gui: + paths_to_remove.append(exe_name + "-script.pyw") + else: + paths_to_remove.append(exe_name + "-script.py") + return paths_to_remove + + +def _unique(fn: Callable[..., Iterator[Any]]) -> Callable[..., Iterator[Any]]: + @functools.wraps(fn) + def unique(*args: Any, **kw: Any) -> Iterator[Any]: + seen: Set[Any] = set() + for item in fn(*args, **kw): + if item not in seen: + seen.add(item) + yield item + + return unique + + +@_unique +def uninstallation_paths(dist: Distribution) -> Iterator[str]: + """ + Yield all the uninstallation paths for dist based on RECORD-without-.py[co] + + Yield paths to all the files in RECORD. For each .py file in RECORD, add + the .pyc and .pyo in the same directory. + + UninstallPathSet.add() takes care of the __pycache__ .py[co]. + + If RECORD is not found, raises UninstallationError, + with possible information from the INSTALLER file. + + https://packaging.python.org/specifications/recording-installed-packages/ + """ + try: + r = csv.reader(dist.get_metadata_lines("RECORD")) + except FileNotFoundError as missing_record_exception: + msg = "Cannot uninstall {dist}, RECORD file not found.".format(dist=dist) + try: + installer = next(dist.get_metadata_lines("INSTALLER")) + if not installer or installer == "pip": + raise ValueError() + except (OSError, StopIteration, ValueError): + dep = "{}=={}".format(dist.project_name, dist.version) + msg += ( + " You might be able to recover from this via: " + "'pip install --force-reinstall --no-deps {}'.".format(dep) + ) + else: + msg += " Hint: The package was installed by {}.".format(installer) + raise UninstallationError(msg) from missing_record_exception + for row in r: + path = os.path.join(dist.location, row[0]) + yield path + if path.endswith(".py"): + dn, fn = os.path.split(path) + base = fn[:-3] + path = os.path.join(dn, base + ".pyc") + yield path + path = os.path.join(dn, base + ".pyo") + yield path + + +def compact(paths: Iterable[str]) -> Set[str]: + """Compact a path set to contain the minimal number of paths + necessary to contain all paths in the set. If /a/path/ and + /a/path/to/a/file.txt are both in the set, leave only the + shorter path.""" + + sep = os.path.sep + short_paths: Set[str] = set() + for path in sorted(paths, key=len): + should_skip = any( + path.startswith(shortpath.rstrip("*")) + and path[len(shortpath.rstrip("*").rstrip(sep))] == sep + for shortpath in short_paths + ) + if not should_skip: + short_paths.add(path) + return short_paths + + +def compress_for_rename(paths: Iterable[str]) -> Set[str]: + """Returns a set containing the paths that need to be renamed. + + This set may include directories when the original sequence of paths + included every file on disk. + """ + case_map = {os.path.normcase(p): p for p in paths} + remaining = set(case_map) + unchecked = sorted({os.path.split(p)[0] for p in case_map.values()}, key=len) + wildcards: Set[str] = set() + + def norm_join(*a: str) -> str: + return os.path.normcase(os.path.join(*a)) + + for root in unchecked: + if any(os.path.normcase(root).startswith(w) for w in wildcards): + # This directory has already been handled. + continue + + all_files: Set[str] = set() + all_subdirs: Set[str] = set() + for dirname, subdirs, files in os.walk(root): + all_subdirs.update(norm_join(root, dirname, d) for d in subdirs) + all_files.update(norm_join(root, dirname, f) for f in files) + # If all the files we found are in our remaining set of files to + # remove, then remove them from the latter set and add a wildcard + # for the directory. + if not (all_files - remaining): + remaining.difference_update(all_files) + wildcards.add(root + os.sep) + + return set(map(case_map.__getitem__, remaining)) | wildcards + + +def compress_for_output_listing(paths: Iterable[str]) -> Tuple[Set[str], Set[str]]: + """Returns a tuple of 2 sets of which paths to display to user + + The first set contains paths that would be deleted. Files of a package + are not added and the top-level directory of the package has a '*' added + at the end - to signify that all it's contents are removed. + + The second set contains files that would have been skipped in the above + folders. + """ + + will_remove = set(paths) + will_skip = set() + + # Determine folders and files + folders = set() + files = set() + for path in will_remove: + if path.endswith(".pyc"): + continue + if path.endswith("__init__.py") or ".dist-info" in path: + folders.add(os.path.dirname(path)) + files.add(path) + + # probably this one https://github.com/python/mypy/issues/390 + _normcased_files = set(map(os.path.normcase, files)) # type: ignore + + folders = compact(folders) + + # This walks the tree using os.walk to not miss extra folders + # that might get added. + for folder in folders: + for dirpath, _, dirfiles in os.walk(folder): + for fname in dirfiles: + if fname.endswith(".pyc"): + continue + + file_ = os.path.join(dirpath, fname) + if ( + os.path.isfile(file_) + and os.path.normcase(file_) not in _normcased_files + ): + # We are skipping this file. Add it to the set. + will_skip.add(file_) + + will_remove = files | {os.path.join(folder, "*") for folder in folders} + + return will_remove, will_skip + + +class StashedUninstallPathSet: + """A set of file rename operations to stash files while + tentatively uninstalling them.""" + + def __init__(self) -> None: + # Mapping from source file root to [Adjacent]TempDirectory + # for files under that directory. + self._save_dirs: Dict[str, TempDirectory] = {} + # (old path, new path) tuples for each move that may need + # to be undone. + self._moves: List[Tuple[str, str]] = [] + + def _get_directory_stash(self, path: str) -> str: + """Stashes a directory. + + Directories are stashed adjacent to their original location if + possible, or else moved/copied into the user's temp dir.""" + + try: + save_dir: TempDirectory = AdjacentTempDirectory(path) + except OSError: + save_dir = TempDirectory(kind="uninstall") + self._save_dirs[os.path.normcase(path)] = save_dir + + return save_dir.path + + def _get_file_stash(self, path: str) -> str: + """Stashes a file. + + If no root has been provided, one will be created for the directory + in the user's temp directory.""" + path = os.path.normcase(path) + head, old_head = os.path.dirname(path), None + save_dir = None + + while head != old_head: + try: + save_dir = self._save_dirs[head] + break + except KeyError: + pass + head, old_head = os.path.dirname(head), head + else: + # Did not find any suitable root + head = os.path.dirname(path) + save_dir = TempDirectory(kind="uninstall") + self._save_dirs[head] = save_dir + + relpath = os.path.relpath(path, head) + if relpath and relpath != os.path.curdir: + return os.path.join(save_dir.path, relpath) + return save_dir.path + + def stash(self, path: str) -> str: + """Stashes the directory or file and returns its new location. + Handle symlinks as files to avoid modifying the symlink targets. + """ + path_is_dir = os.path.isdir(path) and not os.path.islink(path) + if path_is_dir: + new_path = self._get_directory_stash(path) + else: + new_path = self._get_file_stash(path) + + self._moves.append((path, new_path)) + if path_is_dir and os.path.isdir(new_path): + # If we're moving a directory, we need to + # remove the destination first or else it will be + # moved to inside the existing directory. + # We just created new_path ourselves, so it will + # be removable. + os.rmdir(new_path) + renames(path, new_path) + return new_path + + def commit(self) -> None: + """Commits the uninstall by removing stashed files.""" + for _, save_dir in self._save_dirs.items(): + save_dir.cleanup() + self._moves = [] + self._save_dirs = {} + + def rollback(self) -> None: + """Undoes the uninstall by moving stashed files back.""" + for p in self._moves: + logger.info("Moving to %s\n from %s", *p) + + for new_path, path in self._moves: + try: + logger.debug("Replacing %s from %s", new_path, path) + if os.path.isfile(new_path) or os.path.islink(new_path): + os.unlink(new_path) + elif os.path.isdir(new_path): + rmtree(new_path) + renames(path, new_path) + except OSError as ex: + logger.error("Failed to restore %s", new_path) + logger.debug("Exception: %s", ex) + + self.commit() + + @property + def can_rollback(self) -> bool: + return bool(self._moves) + + +class UninstallPathSet: + """A set of file paths to be removed in the uninstallation of a + requirement.""" + + def __init__(self, dist: Distribution) -> None: + self.paths: Set[str] = set() + self._refuse: Set[str] = set() + self.pth: Dict[str, UninstallPthEntries] = {} + self.dist = dist + self._moved_paths = StashedUninstallPathSet() + + def _permitted(self, path: str) -> bool: + """ + Return True if the given path is one we are permitted to + remove/modify, False otherwise. + + """ + return is_local(path) + + def add(self, path: str) -> None: + head, tail = os.path.split(path) + + # we normalize the head to resolve parent directory symlinks, but not + # the tail, since we only want to uninstall symlinks, not their targets + path = os.path.join(normalize_path(head), os.path.normcase(tail)) + + if not os.path.exists(path): + return + if self._permitted(path): + self.paths.add(path) + else: + self._refuse.add(path) + + # __pycache__ files can show up after 'installed-files.txt' is created, + # due to imports + if os.path.splitext(path)[1] == ".py": + self.add(cache_from_source(path)) + + def add_pth(self, pth_file: str, entry: str) -> None: + pth_file = normalize_path(pth_file) + if self._permitted(pth_file): + if pth_file not in self.pth: + self.pth[pth_file] = UninstallPthEntries(pth_file) + self.pth[pth_file].add(entry) + else: + self._refuse.add(pth_file) + + def remove(self, auto_confirm: bool = False, verbose: bool = False) -> None: + """Remove paths in ``self.paths`` with confirmation (unless + ``auto_confirm`` is True).""" + + if not self.paths: + logger.info( + "Can't uninstall '%s'. No files were found to uninstall.", + self.dist.project_name, + ) + return + + dist_name_version = self.dist.project_name + "-" + self.dist.version + logger.info("Uninstalling %s:", dist_name_version) + + with indent_log(): + if auto_confirm or self._allowed_to_proceed(verbose): + moved = self._moved_paths + + for_rename = compress_for_rename(self.paths) + + for path in sorted(compact(for_rename)): + moved.stash(path) + logger.verbose("Removing file or directory %s", path) + + for pth in self.pth.values(): + pth.remove() + + logger.info("Successfully uninstalled %s", dist_name_version) + + def _allowed_to_proceed(self, verbose: bool) -> bool: + """Display which files would be deleted and prompt for confirmation""" + + def _display(msg: str, paths: Iterable[str]) -> None: + if not paths: + return + + logger.info(msg) + with indent_log(): + for path in sorted(compact(paths)): + logger.info(path) + + if not verbose: + will_remove, will_skip = compress_for_output_listing(self.paths) + else: + # In verbose mode, display all the files that are going to be + # deleted. + will_remove = set(self.paths) + will_skip = set() + + _display("Would remove:", will_remove) + _display("Would not remove (might be manually added):", will_skip) + _display("Would not remove (outside of prefix):", self._refuse) + if verbose: + _display("Will actually move:", compress_for_rename(self.paths)) + + return ask("Proceed (Y/n)? ", ("y", "n", "")) != "n" + + def rollback(self) -> None: + """Rollback the changes previously made by remove().""" + if not self._moved_paths.can_rollback: + logger.error( + "Can't roll back %s; was not uninstalled", + self.dist.project_name, + ) + return + logger.info("Rolling back uninstall of %s", self.dist.project_name) + self._moved_paths.rollback() + for pth in self.pth.values(): + pth.rollback() + + def commit(self) -> None: + """Remove temporary save dir: rollback will no longer be possible.""" + self._moved_paths.commit() + + @classmethod + def from_dist(cls, dist: Distribution) -> "UninstallPathSet": + dist_path = normalize_path(dist.location) + if not dist_is_local(dist): + logger.info( + "Not uninstalling %s at %s, outside environment %s", + dist.key, + dist_path, + sys.prefix, + ) + return cls(dist) + + if dist_path in { + p + for p in {sysconfig.get_path("stdlib"), sysconfig.get_path("platstdlib")} + if p + }: + logger.info( + "Not uninstalling %s at %s, as it is in the standard library.", + dist.key, + dist_path, + ) + return cls(dist) + + paths_to_remove = cls(dist) + develop_egg_link = egg_link_path_from_location(dist.project_name) + develop_egg_link_egg_info = "{}.egg-info".format( + pkg_resources.to_filename(dist.project_name) + ) + egg_info_exists = dist.egg_info and os.path.exists(dist.egg_info) + # Special case for distutils installed package + distutils_egg_info = getattr(dist._provider, "path", None) + + # Uninstall cases order do matter as in the case of 2 installs of the + # same package, pip needs to uninstall the currently detected version + if ( + egg_info_exists + and dist.egg_info.endswith(".egg-info") + and not dist.egg_info.endswith(develop_egg_link_egg_info) + ): + # if dist.egg_info.endswith(develop_egg_link_egg_info), we + # are in fact in the develop_egg_link case + paths_to_remove.add(dist.egg_info) + if dist.has_metadata("installed-files.txt"): + for installed_file in dist.get_metadata( + "installed-files.txt" + ).splitlines(): + path = os.path.normpath(os.path.join(dist.egg_info, installed_file)) + paths_to_remove.add(path) + # FIXME: need a test for this elif block + # occurs with --single-version-externally-managed/--record outside + # of pip + elif dist.has_metadata("top_level.txt"): + if dist.has_metadata("namespace_packages.txt"): + namespaces = dist.get_metadata("namespace_packages.txt") + else: + namespaces = [] + for top_level_pkg in [ + p + for p in dist.get_metadata("top_level.txt").splitlines() + if p and p not in namespaces + ]: + path = os.path.join(dist.location, top_level_pkg) + paths_to_remove.add(path) + paths_to_remove.add(path + ".py") + paths_to_remove.add(path + ".pyc") + paths_to_remove.add(path + ".pyo") + + elif distutils_egg_info: + raise UninstallationError( + "Cannot uninstall {!r}. It is a distutils installed project " + "and thus we cannot accurately determine which files belong " + "to it which would lead to only a partial uninstall.".format( + dist.project_name, + ) + ) + + elif dist.location.endswith(".egg"): + # package installed by easy_install + # We cannot match on dist.egg_name because it can slightly vary + # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg + paths_to_remove.add(dist.location) + easy_install_egg = os.path.split(dist.location)[1] + easy_install_pth = os.path.join( + os.path.dirname(dist.location), "easy-install.pth" + ) + paths_to_remove.add_pth(easy_install_pth, "./" + easy_install_egg) + + elif egg_info_exists and dist.egg_info.endswith(".dist-info"): + for path in uninstallation_paths(dist): + paths_to_remove.add(path) + + elif develop_egg_link: + # develop egg + with open(develop_egg_link) as fh: + link_pointer = os.path.normcase(fh.readline().strip()) + assert ( + link_pointer == dist.location + ), "Egg-link {} does not match installed location of {} (at {})".format( + link_pointer, dist.project_name, dist.location + ) + paths_to_remove.add(develop_egg_link) + easy_install_pth = os.path.join( + os.path.dirname(develop_egg_link), "easy-install.pth" + ) + paths_to_remove.add_pth(easy_install_pth, dist.location) + + else: + logger.debug( + "Not sure how to uninstall: %s - Check: %s", + dist, + dist.location, + ) + + # find distutils scripts= scripts + if dist.has_metadata("scripts") and dist.metadata_isdir("scripts"): + for script in dist.metadata_listdir("scripts"): + if dist_in_usersite(dist): + bin_dir = get_bin_user() + else: + bin_dir = get_bin_prefix() + paths_to_remove.add(os.path.join(bin_dir, script)) + if WINDOWS: + paths_to_remove.add(os.path.join(bin_dir, script) + ".bat") + + # find console_scripts + _scripts_to_remove = [] + console_scripts = dist.get_entry_map(group="console_scripts") + for name in console_scripts.keys(): + _scripts_to_remove.extend(_script_names(dist, name, False)) + # find gui_scripts + gui_scripts = dist.get_entry_map(group="gui_scripts") + for name in gui_scripts.keys(): + _scripts_to_remove.extend(_script_names(dist, name, True)) + + for s in _scripts_to_remove: + paths_to_remove.add(s) + + return paths_to_remove + + +class UninstallPthEntries: + def __init__(self, pth_file: str) -> None: + self.file = pth_file + self.entries: Set[str] = set() + self._saved_lines: Optional[List[bytes]] = None + + def add(self, entry: str) -> None: + entry = os.path.normcase(entry) + # On Windows, os.path.normcase converts the entry to use + # backslashes. This is correct for entries that describe absolute + # paths outside of site-packages, but all the others use forward + # slashes. + # os.path.splitdrive is used instead of os.path.isabs because isabs + # treats non-absolute paths with drive letter markings like c:foo\bar + # as absolute paths. It also does not recognize UNC paths if they don't + # have more than "\\sever\share". Valid examples: "\\server\share\" or + # "\\server\share\folder". + if WINDOWS and not os.path.splitdrive(entry)[0]: + entry = entry.replace("\\", "/") + self.entries.add(entry) + + def remove(self) -> None: + logger.verbose("Removing pth entries from %s:", self.file) + + # If the file doesn't exist, log a warning and return + if not os.path.isfile(self.file): + logger.warning("Cannot remove entries from nonexistent file %s", self.file) + return + with open(self.file, "rb") as fh: + # windows uses '\r\n' with py3k, but uses '\n' with py2.x + lines = fh.readlines() + self._saved_lines = lines + if any(b"\r\n" in line for line in lines): + endline = "\r\n" + else: + endline = "\n" + # handle missing trailing newline + if lines and not lines[-1].endswith(endline.encode("utf-8")): + lines[-1] = lines[-1] + endline.encode("utf-8") + for entry in self.entries: + try: + logger.verbose("Removing entry: %s", entry) + lines.remove((entry + endline).encode("utf-8")) + except ValueError: + pass + with open(self.file, "wb") as fh: + fh.writelines(lines) + + def rollback(self) -> bool: + if self._saved_lines is None: + logger.error("Cannot roll back changes to %s, none were made", self.file) + return False + logger.debug("Rolling %s back to previous state", self.file) + with open(self.file, "wb") as fh: + fh.writelines(self._saved_lines) + return True diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f82060609e1da01b02eb11539070c7d3642ab87 GIT binary patch literal 212 zcmYk0Jqp4=5QR5jAwmvfVWzMWL_C3w2Us>{G?T2m!~P`X3f5l2E7^JkJ1ci9eek|v z9z1xeEEgi_cCWg8Um5=@(z8$YvxG(*#j-d&gv;>{p9xxfMIi3IkIdEusL8jZ>JS4& zCP`*gu90WbC~M`hfoecAfTkLF3avHkY6G4Eu2`LVbwLkI45=8<8KuFYw>k#024qSp UNLlgpoNuqTi5ho#(mPpv0ga72*Z=?k literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/__pycache__/base.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/__pycache__/base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe8e2467f438ba4fcd1d6c7557057cdcd4efa592 GIT binary patch literal 1069 zcmZ`&&2AGh5VpNP*|ceawyG2)PMmTedq6@$LI_czsuBvQz3s)?#M5Ny{>ApDDo5HA zXO4Y=zLKw;cm)oHnN3@QC?k1xJTvxu^Nly%*jQsIU%w4M?F+`f(`HqC+`PeM4pAwl zc+Lu*@IoY_@Dh)cPvm|PBtdI?d02Fk4rjn20uO>dn+gbyMV}?zeWrXBTrd@!i)2lO zM{Lmff%me3=c2td&(m=Z&VQd7>!J^}&8jlZ2i$EPl*VHC5avy$p@7n&cXMTX1a?9f zt;!wr7w83+aK#dVko-P_07AttJtdTP;U^skmwx463KggjeUa)QyvX(5rUnkdRQUol z;_T|GvQop`xZTMNCMVJ~bzNx-N}kRDa^pe`w$bIpTR}rM$F+yc5apJgvo8qgh+Xl~ z6?faC${rMT-gXD-oz@kV^9|(3I>H0Gi|UH$2l)Bf#Ive^IIB<0P5F47nb~Rj3Bblp zoyn{`O|_E8Sq^fHEvR_7fN~M%**LDx?5rxE4`0S6v+%4=CnxC?Ok8Jmj0Y`f4IT><~pr!0X@WE@VPMNeco9mXn2z_5R^NY2CSxTCv7qvKq31-Ti+!Epz9(j%d`L~-I|m|r5dD5 zx}KEtCe4=-O|#Ph752wfmFtl9R7`J^`U9@D2%+wvqE-yG5{Zb5>s}~$c-=-ugLN0$ zvpOrMn#fpIp!b?Q!5IwiW`K0gY27y4qDcDp=MdKf&3VRZ_xRs`=A*6_8S>O(xDU3A WUM(qjP2*{??}#4n3Bfmi`N40C3K8W1 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/base.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/base.py new file mode 100644 index 0000000..42dade1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/base.py @@ -0,0 +1,20 @@ +from typing import Callable, List, Optional + +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_set import RequirementSet + +InstallRequirementProvider = Callable[ + [str, Optional[InstallRequirement]], InstallRequirement +] + + +class BaseResolver: + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + raise NotImplementedError() + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + raise NotImplementedError() diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a40451fe591f056609b9c94f2e3325bb5aff874a GIT binary patch literal 219 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py new file mode 100644 index 0000000..09caaa6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py @@ -0,0 +1,467 @@ +"""Dependency Resolution + +The dependency resolution in pip is performed as follows: + +for top-level requirements: + a. only one spec allowed per project, regardless of conflicts or not. + otherwise a "double requirement" exception is raised + b. they override sub-dependency requirements. +for sub-dependencies + a. "first found, wins" (where the order is breadth first) +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import logging +import sys +from collections import defaultdict +from itertools import chain +from typing import DefaultDict, Iterable, List, Optional, Set, Tuple + +from pip._vendor.packaging import specifiers +from pip._vendor.packaging.requirements import Requirement + +from pip._internal.cache import WheelCache +from pip._internal.exceptions import ( + BestVersionAlreadyInstalled, + DistributionNotFound, + HashError, + HashErrors, + NoneMetadataError, + UnsupportedPythonVersion, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution +from pip._internal.models.link import Link +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.req_install import ( + InstallRequirement, + check_invalid_constraint_type, +) +from pip._internal.req.req_set import RequirementSet +from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider +from pip._internal.utils.compatibility_tags import get_supported +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import dist_in_usersite, normalize_version_info +from pip._internal.utils.packaging import check_requires_python + +logger = logging.getLogger(__name__) + +DiscoveredDependencies = DefaultDict[str, List[InstallRequirement]] + + +def _check_dist_requires_python( + dist: BaseDistribution, + version_info: Tuple[int, int, int], + ignore_requires_python: bool = False, +) -> None: + """ + Check whether the given Python version is compatible with a distribution's + "Requires-Python" value. + + :param version_info: A 3-tuple of ints representing the Python + major-minor-micro version to check. + :param ignore_requires_python: Whether to ignore the "Requires-Python" + value if the given Python version isn't compatible. + + :raises UnsupportedPythonVersion: When the given Python version isn't + compatible. + """ + # This idiosyncratically converts the SpecifierSet to str and let + # check_requires_python then parse it again into SpecifierSet. But this + # is the legacy resolver so I'm just not going to bother refactoring. + try: + requires_python = str(dist.requires_python) + except FileNotFoundError as e: + raise NoneMetadataError(dist, str(e)) + try: + is_compatible = check_requires_python( + requires_python, + version_info=version_info, + ) + except specifiers.InvalidSpecifier as exc: + logger.warning( + "Package %r has an invalid Requires-Python: %s", dist.raw_name, exc + ) + return + + if is_compatible: + return + + version = ".".join(map(str, version_info)) + if ignore_requires_python: + logger.debug( + "Ignoring failed Requires-Python check for package %r: %s not in %r", + dist.raw_name, + version, + requires_python, + ) + return + + raise UnsupportedPythonVersion( + "Package {!r} requires a different Python: {} not in {!r}".format( + dist.raw_name, version, requires_python + ) + ) + + +class Resolver(BaseResolver): + """Resolves which packages need to be installed/uninstalled to perform \ + the requested operation without breaking the requirements of any package. + """ + + _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} + + def __init__( + self, + preparer: RequirementPreparer, + finder: PackageFinder, + wheel_cache: Optional[WheelCache], + make_install_req: InstallRequirementProvider, + use_user_site: bool, + ignore_dependencies: bool, + ignore_installed: bool, + ignore_requires_python: bool, + force_reinstall: bool, + upgrade_strategy: str, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> None: + super().__init__() + assert upgrade_strategy in self._allowed_strategies + + if py_version_info is None: + py_version_info = sys.version_info[:3] + else: + py_version_info = normalize_version_info(py_version_info) + + self._py_version_info = py_version_info + + self.preparer = preparer + self.finder = finder + self.wheel_cache = wheel_cache + + self.upgrade_strategy = upgrade_strategy + self.force_reinstall = force_reinstall + self.ignore_dependencies = ignore_dependencies + self.ignore_installed = ignore_installed + self.ignore_requires_python = ignore_requires_python + self.use_user_site = use_user_site + self._make_install_req = make_install_req + + self._discovered_dependencies: DiscoveredDependencies = defaultdict(list) + + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + """Resolve what operations need to be done + + As a side-effect of this method, the packages (and their dependencies) + are downloaded, unpacked and prepared for installation. This + preparation is done by ``pip.operations.prepare``. + + Once PyPI has static dependency metadata available, it would be + possible to move the preparation to become a step separated from + dependency resolution. + """ + requirement_set = RequirementSet(check_supported_wheels=check_supported_wheels) + for req in root_reqs: + if req.constraint: + check_invalid_constraint_type(req) + requirement_set.add_requirement(req) + + # Actually prepare the files, and collect any exceptions. Most hash + # exceptions cannot be checked ahead of time, because + # _populate_link() needs to be called before we can make decisions + # based on link type. + discovered_reqs: List[InstallRequirement] = [] + hash_errors = HashErrors() + for req in chain(requirement_set.all_requirements, discovered_reqs): + try: + discovered_reqs.extend(self._resolve_one(requirement_set, req)) + except HashError as exc: + exc.req = req + hash_errors.append(exc) + + if hash_errors: + raise hash_errors + + return requirement_set + + def _is_upgrade_allowed(self, req: InstallRequirement) -> bool: + if self.upgrade_strategy == "to-satisfy-only": + return False + elif self.upgrade_strategy == "eager": + return True + else: + assert self.upgrade_strategy == "only-if-needed" + return req.user_supplied or req.constraint + + def _set_req_to_reinstall(self, req: InstallRequirement) -> None: + """ + Set a requirement to be installed. + """ + # Don't uninstall the conflict if doing a user install and the + # conflict is not a user install. + if not self.use_user_site or dist_in_usersite(req.satisfied_by): + req.should_reinstall = True + req.satisfied_by = None + + def _check_skip_installed( + self, req_to_install: InstallRequirement + ) -> Optional[str]: + """Check if req_to_install should be skipped. + + This will check if the req is installed, and whether we should upgrade + or reinstall it, taking into account all the relevant user options. + + After calling this req_to_install will only have satisfied_by set to + None if the req_to_install is to be upgraded/reinstalled etc. Any + other value will be a dist recording the current thing installed that + satisfies the requirement. + + Note that for vcs urls and the like we can't assess skipping in this + routine - we simply identify that we need to pull the thing down, + then later on it is pulled down and introspected to assess upgrade/ + reinstalls etc. + + :return: A text reason for why it was skipped, or None. + """ + if self.ignore_installed: + return None + + req_to_install.check_if_exists(self.use_user_site) + if not req_to_install.satisfied_by: + return None + + if self.force_reinstall: + self._set_req_to_reinstall(req_to_install) + return None + + if not self._is_upgrade_allowed(req_to_install): + if self.upgrade_strategy == "only-if-needed": + return "already satisfied, skipping upgrade" + return "already satisfied" + + # Check for the possibility of an upgrade. For link-based + # requirements we have to pull the tree down and inspect to assess + # the version #, so it's handled way down. + if not req_to_install.link: + try: + self.finder.find_requirement(req_to_install, upgrade=True) + except BestVersionAlreadyInstalled: + # Then the best version is installed. + return "already up-to-date" + except DistributionNotFound: + # No distribution found, so we squash the error. It will + # be raised later when we re-try later to do the install. + # Why don't we just raise here? + pass + + self._set_req_to_reinstall(req_to_install) + return None + + def _find_requirement_link(self, req: InstallRequirement) -> Optional[Link]: + upgrade = self._is_upgrade_allowed(req) + best_candidate = self.finder.find_requirement(req, upgrade) + if not best_candidate: + return None + + # Log a warning per PEP 592 if necessary before returning. + link = best_candidate.link + if link.is_yanked: + reason = link.yanked_reason or "" + msg = ( + # Mark this as a unicode string to prevent + # "UnicodeEncodeError: 'ascii' codec can't encode character" + # in Python 2 when the reason contains non-ascii characters. + "The candidate selected for download or install is a " + "yanked version: {candidate}\n" + "Reason for being yanked: {reason}" + ).format(candidate=best_candidate, reason=reason) + logger.warning(msg) + + return link + + def _populate_link(self, req: InstallRequirement) -> None: + """Ensure that if a link can be found for this, that it is found. + + Note that req.link may still be None - if the requirement is already + installed and not needed to be upgraded based on the return value of + _is_upgrade_allowed(). + + If preparer.require_hashes is True, don't use the wheel cache, because + cached wheels, always built locally, have different hashes than the + files downloaded from the index server and thus throw false hash + mismatches. Furthermore, cached wheels at present have undeterministic + contents due to file modification times. + """ + if req.link is None: + req.link = self._find_requirement_link(req) + + if self.wheel_cache is None or self.preparer.require_hashes: + return + cache_entry = self.wheel_cache.get_cache_entry( + link=req.link, + package_name=req.name, + supported_tags=get_supported(), + ) + if cache_entry is not None: + logger.debug("Using cached wheel link: %s", cache_entry.link) + if req.link is req.original_link and cache_entry.persistent: + req.original_link_is_in_wheel_cache = True + req.link = cache_entry.link + + def _get_dist_for(self, req: InstallRequirement) -> BaseDistribution: + """Takes a InstallRequirement and returns a single AbstractDist \ + representing a prepared variant of the same. + """ + if req.editable: + return self.preparer.prepare_editable_requirement(req) + + # satisfied_by is only evaluated by calling _check_skip_installed, + # so it must be None here. + assert req.satisfied_by is None + skip_reason = self._check_skip_installed(req) + + if req.satisfied_by: + return self.preparer.prepare_installed_requirement(req, skip_reason) + + # We eagerly populate the link, since that's our "legacy" behavior. + self._populate_link(req) + dist = self.preparer.prepare_linked_requirement(req) + + # NOTE + # The following portion is for determining if a certain package is + # going to be re-installed/upgraded or not and reporting to the user. + # This should probably get cleaned up in a future refactor. + + # req.req is only avail after unpack for URL + # pkgs repeat check_if_exists to uninstall-on-upgrade + # (#14) + if not self.ignore_installed: + req.check_if_exists(self.use_user_site) + + if req.satisfied_by: + should_modify = ( + self.upgrade_strategy != "to-satisfy-only" + or self.force_reinstall + or self.ignore_installed + or req.link.scheme == "file" + ) + if should_modify: + self._set_req_to_reinstall(req) + else: + logger.info( + "Requirement already satisfied (use --upgrade to upgrade): %s", + req, + ) + return dist + + def _resolve_one( + self, + requirement_set: RequirementSet, + req_to_install: InstallRequirement, + ) -> List[InstallRequirement]: + """Prepare a single requirements file. + + :return: A list of additional InstallRequirements to also install. + """ + # Tell user what we are doing for this requirement: + # obtain (editable), skipping, processing (local url), collecting + # (remote url or package name) + if req_to_install.constraint or req_to_install.prepared: + return [] + + req_to_install.prepared = True + + # Parse and return dependencies + dist = self._get_dist_for(req_to_install) + # This will raise UnsupportedPythonVersion if the given Python + # version isn't compatible with the distribution's Requires-Python. + _check_dist_requires_python( + dist, + version_info=self._py_version_info, + ignore_requires_python=self.ignore_requires_python, + ) + + more_reqs: List[InstallRequirement] = [] + + def add_req(subreq: Requirement, extras_requested: Iterable[str]) -> None: + # This idiosyncratically converts the Requirement to str and let + # make_install_req then parse it again into Requirement. But this is + # the legacy resolver so I'm just not going to bother refactoring. + sub_install_req = self._make_install_req(str(subreq), req_to_install) + parent_req_name = req_to_install.name + to_scan_again, add_to_parent = requirement_set.add_requirement( + sub_install_req, + parent_req_name=parent_req_name, + extras_requested=extras_requested, + ) + if parent_req_name and add_to_parent: + self._discovered_dependencies[parent_req_name].append(add_to_parent) + more_reqs.extend(to_scan_again) + + with indent_log(): + # We add req_to_install before its dependencies, so that we + # can refer to it when adding dependencies. + if not requirement_set.has_requirement(req_to_install.name): + # 'unnamed' requirements will get added here + # 'unnamed' requirements can only come from being directly + # provided by the user. + assert req_to_install.user_supplied + requirement_set.add_requirement(req_to_install, parent_req_name=None) + + if not self.ignore_dependencies: + if req_to_install.extras: + logger.debug( + "Installing extra requirements: %r", + ",".join(req_to_install.extras), + ) + missing_requested = sorted( + set(req_to_install.extras) - set(dist.iter_provided_extras()) + ) + for missing in missing_requested: + logger.warning( + "%s %s does not provide the extra '%s'", + dist.raw_name, + dist.version, + missing, + ) + + available_requested = sorted( + set(dist.iter_provided_extras()) & set(req_to_install.extras) + ) + for subreq in dist.iter_dependencies(available_requested): + add_req(subreq, extras_requested=available_requested) + + return more_reqs + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + """Create the installation order. + + The installation order is topological - requirements are installed + before the requiring thing. We break cycles at an arbitrary point, + and make no other guarantees. + """ + # The current implementation, which we may change at any point + # installs the user specified things in the order given, except when + # dependencies must come earlier to achieve topological order. + order = [] + ordered_reqs: Set[InstallRequirement] = set() + + def schedule(req: InstallRequirement) -> None: + if req.satisfied_by or req in ordered_reqs: + return + if req.constraint: + return + ordered_reqs.add(req) + for dep in self._discovered_dependencies[req.name]: + schedule(dep) + order.append(req) + + for install_req in req_set.requirements.values(): + schedule(install_req) + return order diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8e26409b26137d5440ec963845cde91f7d5f4d6 GIT binary patch literal 223 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 JOsS&te*vI(LdO6A literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..966c8d18c34a049034973f458243be7922351911 GIT binary patch literal 4854 zcmcIoTW=&s6|TO_c&0t$+itSnTu8GlB$GHZh(uh(YDwZOi3xI$c8SD@sNL?Wv3uP& zS9RNKYxaS7r9=pXkdS!Uht1=P|G*FF2VQuJc;pQv#CNKDW_(-31GLpOT~((}ojUc^ zIbYfDb{&T2*MI2W-*}#}zf$G&(?sPRyy`C~I2$r>Ez^iPad+6ocazUW3-RJ`(O_a;bj92b6K%10osG=u z9WIH6JQfzU4VM#JSi@z}5=++^O0@CTW0SYJ^T-~qh{ZEK^N%gw;a&7xxuj=-FQVt_ z2aGTA;h75jyN{k^%ed+!%N zyW_2YcxU~ijm-~A>)qt2Y^}p|e>)OoYa^#kNM+gjI3pkVQEA;3dD*yEWRZZbj`yCg z#3$8+UjZWwjqUXb26|@M2$NB&%BB=~A(MbaCQkz&Hr@cQdJjd;PS`_Z%-(08e&?6w zL-V0EHpj*RlP~Q%V+(!u*ycvT+ zg;R^v))o-y;<>jA)P?l|34w)z|FlPG+cH1c^LGSwko)}zAm&E^qRQbO!Tat^r`D%o z7A9Og0EA-#0dzy2_A8W70?@$bj55d8_|}0gkVDvtG9vWMMYIKr8~=K9EA=5*VmH4+M?X26|J2 zR6jc^=RI<&N5?S#ChhDB3f62I9iwHKMzb#EHMI7uvOV>vUcFpEb70bt`k^>GMafT4 z88f}}>^|Ey9s(aVS}dRgcmY~&?yrn(prtWxXtcbIdP9#fffh@nWu-!k{}BNBzX6Q) z5Vp$A5H)Zh^f|3z^X7DsdfTTC)8T0I<9ifIifl*vT=W4H@p@=x3I|`-BtAH_`ppJgegr(MV4w@8N1Ciyf+6%Mn^qHuEsKfPz^Pp7$(319B zE}?kZl&kbjsFurA=&mdDb(IQ2Z&e_{vhsyf$ng%teAk03Gl3(;zl(lFW0*q#ItQf} z(Ee=9BrjZ;Y zQ^d&5I+@o2mng)pOpBdeeF8Lsm75a0XMk60bPR-~6tC5x`_h9U9)JfBWuTnAU8QU! zS_EpDSEqwAbBaSE5r4HRWWeyik6_lB`HN$j8zku*+g@XSS(&{A?tXoG)(?P84Oygz8at!$*`YBtUc_@v(gI9fq zLNE|eHZ-|0w1f@v*bvQ%IEp#Z0!eHON6dpJnvZR6aT}Dc1De_84bVoAPt+GM29h9> zMolCa#k{V~^A7r##Pa#wJk29JOpmtJd6c!2!>ekHa`f2szSRyNm^Y-_GscDMGPi7 zIej3tgp?pJfR>8S5pSr7M@)-{=!{M(txW4tMVJ!~RVvOIJnxZjK!{?``xW{XO~>rx7cW{nmFpRm zr8qOw$HLd-RYZcmU{BbWAj@AMQK{7&sqF-0C~;A@qa+Ez%Vx;s&HA(d z?a~OI8kJ+TPjrTF-`Ww0c#z54zk}f4@v`GLF1kV!NUwh@N&`PqxBJsky{7y+#>g8~ z5P_86pn~$hj*UI5no;xU7OA1zOSLHj64F)>iio0mpQA|;;bhAJhTkkS-{rg zZt~AgXQ{d3EHsg8Nv8L_{2_kik5H70L5hnX{^O7)s_$nKoTq zwGgsiwowdU#+9n?;o`+p*{|+dbQ7#uwWNPHVa2$f>BY-iR9~K4)~7D2a6g5-w)3(@ nmaSXWHrytlD%x|~A?ke7?BH+Jv<;_YTdOO8{=Yicbm{&ZNhUE^ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1eed403c721d3d32244c43a3e1ea55b752a7a74 GIT binary patch literal 7125 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f736f326e445e7943ee48aa26ed8d29b1b271edc GIT binary patch literal 3284 zcmb7G%Wo7n7@yZZvb%Wz;U%bKpcJ;iZmU*8AX-6#S|L?wMSJO9Mw79#J7Hef-lR#x zrEscLsfQkOfMfopIrP#K>b0ky`ujY)lO>5LooF3@_UF&P@8O>v%+I$he82qO+xTP7 zvi>At_VXaz$4}*GxW(<*O6-AcQ{Rc5#2vV%@5WwI8`P5epl)O@ZY0e?6a5;m$8$+* z&`R2awrvSlbe`LT`L8VA;LR5nZ;Iw~cd!6?j<+DUjJ(L(-&x(xYwT)u?V`=adN7VP zk3tP`ZYcEE*>EUi*D2fw>2}e6SSma$6*^x8N<0>MCbf{SZ8G8%b1Om0BOYi`v>%J7 z<4B4`q&lQMW4P4fa(f&5d zr@OB1+eKXpJ(g)m0Hz=HDXJ^@sf%c|rS0eTuI1An*oC`$E+m&*u<5Pt{FX;Kixi8q z>`9akS)f^hP(*nw*rt#w%2LI$b@o#pginH@@Y5g>&zQ~_7w|rbQo*)HQ8=1vld&*M z@<2yxu(1{C5zF*QNG1=WqI&H6kx?ASoax|+U;&wlMQ`UXGlNMC6QVdvkqV|qLCVHz z9K=2LLpEkfG#qJ`3W4<*%VoA1aRDs>V7W-SNW*Pxsj?VulrWT*NFbyTPH7oLsm3lD zwD>p_Opa3>C8Ec^6M~Jj&eh$1AK~fc+j-E7vi?>eQy^0PHN*nzLxXQUlWaIf=F<>s zAFZ=(pxX*kO{Rl26bVql9hkofoI)wKqGil(u$5ldl?^26b(5NTG+j?R_*b~VR-CT( zQU2PtKgmFG#!p}bxln$f{YnQF;VBWX?^|*iCjNQRA7zQ?NBI+_#yJ&he=Sm@tzbh4 z-5=+XAEoe!`|Aih%qYS8y-ksB_Ty-+pKt3?mVVN^(^ruewL7t#)JvNk4cu~5Z6?Ifa z5@@9J6ei_4(x`cwB-NT^)KHnsG=xG@hG<_!acJyz+wZ}FpSMTUITM^q6WDRCL=cX26a&r4UEj~xxB^O7-<^01C4pU0C`TdL>n55 z&{*OpFw!ydNobtn%aG?Q`7}QRd4W5~*x7<=>7iH~4~GcflqPrXJizHLiJBNhGoA^> zz$BCC#nF|XboYkFE)17-t z2T}vd_3pkSFF;um9m|u{90cBEzB$$X7?a8ryS?+?asE_RapBY=klc?)4+yQVt^lgi z66Nkec?0K#BRGAD>g3n2%C5YMMO~+?+-v9`#=9`ZTdw&ODpS-~-io@^2kDX3q6RbI z5p%*RtkaMB|LFj$901oN%oY5b%$S{c;m&x`h26uhbY@rIhQid5OUF7gtBnX5i$@sh zof2?RD5cFKfjzr-7g$-` zSE`r?yo~w5jSl=bSyeofu-}9!d5fAu6@T)mfzO~e4gR%bojSTkp2ea!Zijb@{rSp| zSq`l-fb&|B_95VgH}B6NJ-$q4&HjIQ%N4vlO6kE-A(MSqVY zb{FL(vU8c5D`<*_@AEA5efa?mEmCux8ajoN-l_5iHFMOM>!U|KM$Jdm9Aww@%ti7( zCP+;Y1vPPhEx1eW$;nUB>}q$ZXop!Gi;!Lrs(kr0=pKdBl4zi)>usPOmPn{X2Q0^n z%m-ETO!g-4J3KnjEooj!dL0xVJ!nd>2Db6o&@kO_X8+@07tMR+-T67aq!p2T$L`om NPRChtn(or&e*s!!HB0~i literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e78d5a24919417e9c13c1d18597d73c07e66271 GIT binary patch literal 7593 zcmc&(&2JmW72nxiQWQy1l&m;*9VctYNyId!QX~zU!Z4IL-wjwJPA>$C?TRzDms);! zcICv33>1|M1pNX66zCxdY8U9i|I%K2%DJ~3lK$Sz?s7>jC8a%dp&8Bhym|B9`@J{x zR#vJ8zCZl6-T&nihVd_|*cgrv{9s% z>=7~fFJsu}Xcb16aiePri!*M1Wpaz#55O)_;-#;cVusx`-!F_SB3!!mX#f}6Tx$Wv(h_VcaV zqk-7+$Gc&;Hy)2tqhK%cM?+n_D`>8q-fh?(--|0Q zX84io68)h%9h*E=z>ju15a()OY>y-({ir;{iOASD`s@Jgm8#-Jo>sXcV&pTJdKyWy)tWd(Y|XFoUr=Ea zM+$d$u=Bax?q`a2r`d;goslRy`$P5!x|K+jK7BK>H~8lYDMzx9h6~uA=tu?YQV|XF zD;-Y{H*P|%6g`qIx@hls*N#B3H3Q#9##tNzG;P%n z-O!8t5b(g=oqNycXnD4Xmbvk*HF+LW;;QQoMtlzj%8l!;duPuJ617;O4S|@3e3G)W zls%0su0YDhLPqzbMQtRQ(xHqlNRo)li^yVoXEX{VF)2s9ItD4XtRY)Q3aM6MO{-xw z$|h^tlu)+Rh#op;zW+b`tcoUI2h^S78-SlR1wT*38yQ&V@dxI}1`6NN)>c{O>1(u2e5nx>~~Bd5sOUpSO>`b2d__iN9`172=AMU>73`Y^l zVd^imO0i8Haml6K%jG!es4L~&Vs8c8pNsn&&-sV#X6B;@W%T@l^>kCDPMGJ~zd z_D#+goioD~NhWHs&ehSYQKfHAamCUSMmxn8F{{8BEBSjFBU0^uY5^U`;L4A%#1vN| z3l_=lmk!{(r08;f7F|G3>PKmOk+eiy%eA-4l5C@ViZarw>3QT9Rg2C;s`Ls{4p*w* zE#&S3V95lCR@1-|HdFC|;3%je;Zb7q?F$*tF7LqK5Zoc@P;wM};@u0K>u+Coe){sy zTDGLi(8QC%Y5gub25JB6NFfa~%qE*$$Ts(>>=aUBlebY!0szWgrL~F zrrhME8wM#R>Sffg?4$iGl#?$#v`~iI|9kVS@rd!|C!yH9a@Kf~RJYoh(GA*~_;v$H znZaAQ#9!C%L-QXRkBl$OJ2sGsOeP%r5+vIn!=RY$mtz*r>1tfP68K@%8x6)+-@}A| zBN>y|3t2Fak?kwN2th=66@_$-Z`n(d+?Lpor2G@}CFh&(@l8q&+-V0ALZ|?u;B!Z@ z6^LPM_ecIPF(+|p?8#`JNQDq@VqQpwz$l+#bvRUYRxu~foruyI?h$#J0+4)gr2-k6 zx0sgVB3ZeJ;n$H;Ytky*z6if1kv;?BB)ypcbx5Ybw=MRArcZCcQeLw@1 zzfX=mLLrQtlRt&?nH(Fe!AxdW-r17)ONGpLay^Zpd7an<;0`2~mW$N`=nHHkL0$N%9o>NIAcw^4-xqUEq9>{k@j1 zM9j=bweO%q<8=`u$!i$XRK-Yh^88{(9_ct7Pl7{q6p=t35mHLR(~C(s=# zcIRVB{?TKz(*b^OqbT2?Ox@L+R4O8wR{sns2?93Al(!d?eKO3Xd(Y@61DjwbkP@hQ zI(1?7dC+H*NmXcQcP1Mh0A8Z5nIX|FrsX3^k=Py3$;nj$ar@^NnfIbOu9gSIUVfo(>)f8=2m~F08z)ZojMG57Sq%mYS zXFg*2Hd6Q}WV5KHFw0CZt0c-f%vwrn8nf_vE9@D}s-i`YPcf^O)HP<&`|T97fM5uq zrtVAh#m4U-2AZzmAREztAzqG1PPije4!XwR(wB7%Pi43XZ#H)LNYFw}51_lDkG&ku+T zE%^%~q)06Zi^%s#sd0{==6{5u)3XsVnZrB^IiO+z3Vn#KLh1>HzCfBqp$kWx;W!YY zD214rKIJWB9AVGjXloJ(1ChtVO-}|rC*Ih>c3&c;8=qge@ec$X`7Ty1WHZ6d-?J^* zq_uF%W6_3T8KpjCL)4p>*^%#|tktAQL@%QEA4sW)US7ES$w8xtjCV8%i|qS9b0lmo zBw^mTABscXr?Xm=Ewt$*TG|2;Lq4GMk<~h^98(k~F5%YIYs`NYr-m zQxYG^w*KV^?t44)5kmz)@wwt*_&F&E^-1V1yXV!g^e3mb6n7}$7bW#OqKd!pmW!ZK zAA|fINe{RBO{PXALU4sRio~4ZRL(s4@p0vferLW)H>e(Z>a1zj%`;Z>Li4re=6?X| CR8i#s literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..10942b8834ca88fc77b5f426cf85de4dd9421be5 GIT binary patch literal 7309 zcma)BTW=gkcJABUFC3B7g}Sz6$>Mm)p(5|*vQY%DC0UWz&32MF?HBovZ|_)j>%{)RjR^_r*6(*ju_L6X(xJJmg-(FI6`=<2HK zQ>RYVIrW`$icYOoR`C1TU$-{>3ySiu)R_I{(D(pP{JE+quHve`Vx@1@Qe|7SG`uxm z4-Cr)a#k+LTlt`16@sEw3`$lhC|hNf#^`<}s9IH7H~d;qx9Y*1H7DCSv>VnTSji%?IBXr3^`d_yIBFf0^^$)qShAL6z3d+kPFN>oz2ct?PFbg9z3QJ1&RAyx z(=uhd=ARADS?6TE?!Ob9x6TI_tP5z*xefo_;G%UgShkjB`;gxZ-m~6Q6=r;;@inYSjgEe;PxoZ8^O~qYs7oRBZB0ICETMhRxyUcQ|z*XC>BRC#d&T8uVWVZ=zlT^>OzEsK4u~ca`SJUyx>QHw&V6 z?#UmBe z{>)d5uFo{FgqH$BEKDzszd7m-kG8#Zs>&U&KW%Da5zXstW6 zN$Hvsx}NJKOjKqhfIx+hoOTlNA*y+7!oW}3q=?zyT-JzpQDF)l4NL3cxct3p>28e~ zP;#CXpzI-29W8RbzEFhY=;#a0@VnqFaI~9Ab^M z-z|TwxfQpHzWJw$p;!wrkvgwIfU7!+-MJ)Mjh)1cJHyo|^oJtHpcB4Zr^c$+Sq&L; znR~m{tcYSi(~8J$yg4Ycr&TNUv5<0nql%Jkw|ys$ZTlPLzn-l1qJXV={jC_{(P>}X@Z#Q% zv&mSpHt2g0cE{na-SK>8ZvYeAwbnKZx7U1cV=dLx`>o$wBZaT_(-R)A^}YTY1_C*N zIcpF+!;ZAN&1kIbh4NbcA^#42dZJNl zq;KkY8+dZ4=V2PTvEgb-VY9fc@b4$3J!PB=^GTWBNd<bNp0ZY~@wK3A?Q5B_aj9aRqwKUc=JQO#8b3jgOv-%8#` zMpdk-KB~*!U%G`+%|04(`nGut?o4xwvghHbzPU82ZZ2)<=slM8evF>uU#amjzMeq; zrL6xl`cLw2soXr3y-(x&A17xHOt&@Kden>}6V@)^O3H``%P1G~lq`2nL3AdO#k?Z^BXA~Kn<>MJf z%M+nL%PM2jNzBiDFWee8%j?XEAqq{h0TAzI9Ki`YfiL6T>J8~PmdB%zA0>ig z)LmZxWCA6kkl~T2W`2mml9;!Mm^_I%(q#!SO~xj2k8Q?z#Cee@7Kow{IQ>4>De~Kn z57QDyXNC|oO(YeE>4S^N%uXVE5KbLj+=~Xj`_kp5p5zKKuXwS|TrY7Dc!}b)R*9nl zc}clb1<(*qiy|sg^&;;_UHErlkbC66Pn=5lnCcdOJ>r3rh+5jl#I)0*0K|t-U2)iP zT^SIPOfSW6z;DfV#L^iFGm96bFo4~eA+a4G5@^ozHQKH3QbDIflrm-F5F*-0<26x4 z*pY^vsAch;neZWPma`ps#ChUT&=(=VV0|(Z@{dAgh-pYOq|!%rjCi*+HGS*@Iz@eY z2&ESIACN415O;-v&oRGD0?Oijs*!W}2v7Vu3PrENH5rq?|IQc6YEjFl?&^h+OTXoR z(=h6ARz=l#VHhVhxHQy@s%BI{T~y0>>UbJDy~~=RYP#`1Mqbm4ng(ulL;H=Eqggby z{Ga)9S*ud7y4zTvIKOOfni_W?75{A%ZH)xXew3x<@krP9r>GEAy6QlU=RZbnwx@of zO7K+28XTR5D2QBvv8THFQG}h(G&sQANZrgI6rL+dakG?^N4lGP2B+f|p6PIb6nrWp zkbN!`NA*yec%Vzc?z)IaUAjro_F#+WX zfE++N%LT{+8)m@22uR8SdH|p_;Ec^EobvOMmU*uS816B@ADb+U2N)%(34t?gpfgY4 zx5fH$!Wa`%SBlBQDK{M7306WpK-lUAh12Y{1+)j8OO653E#jSGa~sDjVYHAW>PI-B zlzOF`Mktv=_jIml^gJ{X{q}n+@CZ2L<_5TI5xo-*&GxYEgClm7RwL;Mi5g)Q?wGbwyG!^rFo9PS`iBZ)SmK|&r!?hRZ9u{C!Hl(5m5GTLI{%2c%Jmdj~} zuM@VWgtvE>f&u9ezya;aGrin2J06F3UV>@D(=M>bed(3#FhY#qhR;pVUD#n>x0l5C zkd5hEY)Ge?`~zzvSeyQI)C@d#@x+TLy0G>K)j!e3uM0Ye~|~a6;+_$uk*RxGylha zG}YV9MM`$ar6buX+i(Hy07--`s)yB6MGLhar`N~Ddr<1#tPa)%j2Th&Jt?$xYZ(uUvGcAzpHNJ;} za?&qVPx(?$)P(MLR9E|2d#XHDpK4F_j^XOA@ud2twy(MB9>U&z-Bm%A+tT6>(%f}l z-$S~B_8n^P>paS zASTh$dlk6?2T;>^|Sm||u~l=%qLF=J2wy5!(w z2a}u2UW>IdploK&08sBz0Gjj=;&*$JokQ*;>8(m|La6L;Y+6Pjg?t5tx3G023{bYc zHHo@2@g+N27DY>)qULI&SkW(2zEscyUgu2cG-pNrl2y2wwcheEeH^u$NUiy>-?v9iJYVpM{%2y z*jphqVACyTn55q88$&{YFvuQ6PO4Bs@=R#?Gw}HrJTYOPg3!>=DO4;YK&+~}?~<>1 zi^q8BY*MCj1qM)(B`JQ6!7LS3n}H)4(eBeH34(ppevT)uqfi#|s-c~pE9wokp>g^K zFKLi_No9Tm%Lv2hxrRsjiUfKgblM}ItB!zXBdw#+9y?7)_(Q;pbY+yEA_I5ngp+TY zgi^C{UHnG)m>D5mOH1S;vpbjC;5o!HGV`JUqdo8uUAbhw4MkzVe3JB*#P+I}JdyoE$+%6uM@>f(@89IuXHnY&AWJ6po>nV0IE*QV1)Lc53}D zF61eFlMx(11-;mY&cK)W3EYcQp`=0blGFhI3%pVVQ1Uk8%%lpp(f3O{F*!q}Tva*s zG{46ayhMSLKO9y50k!hUkf4f_58|Y_)PqWYOL>CyuQHt#Cvbt+!p&;vM!27oyMmD| zTz&X4r|U9tWR?P}r29DB>T$YomHD!CmHb0AtfrLp@K4C2@cZGX3TM# zEsNrnG|;k^*j)*f$*`4_vDY-jT}lOw^gmKm-WV str: + if not extras: + return project + canonical_extras = sorted(canonicalize_name(e) for e in extras) + return "{}[{}]".format(project, ",".join(canonical_extras)) + + +class Constraint: + def __init__( + self, specifier: SpecifierSet, hashes: Hashes, links: FrozenSet[Link] + ) -> None: + self.specifier = specifier + self.hashes = hashes + self.links = links + + @classmethod + def empty(cls) -> "Constraint": + return Constraint(SpecifierSet(), Hashes(), frozenset()) + + @classmethod + def from_ireq(cls, ireq: InstallRequirement) -> "Constraint": + links = frozenset([ireq.link]) if ireq.link else frozenset() + return Constraint(ireq.specifier, ireq.hashes(trust_internet=False), links) + + def __bool__(self) -> bool: + return bool(self.specifier) or bool(self.hashes) or bool(self.links) + + def __and__(self, other: InstallRequirement) -> "Constraint": + if not isinstance(other, InstallRequirement): + return NotImplemented + specifier = self.specifier & other.specifier + hashes = self.hashes & other.hashes(trust_internet=False) + links = self.links + if other.link: + links = links.union([other.link]) + return Constraint(specifier, hashes, links) + + def is_satisfied_by(self, candidate: "Candidate") -> bool: + # Reject if there are any mismatched URL constraints on this package. + if self.links and not all(_match_link(link, candidate) for link in self.links): + return False + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + return self.specifier.contains(candidate.version, prereleases=True) + + +class Requirement: + @property + def project_name(self) -> NormalizedName: + """The "project name" of a requirement. + + This is different from ``name`` if this requirement contains extras, + in which case ``name`` would contain the ``[...]`` part, while this + refers to the name of the project. + """ + raise NotImplementedError("Subclass should override") + + @property + def name(self) -> str: + """The name identifying this requirement in the resolver. + + This is different from ``project_name`` if this requirement contains + extras, where ``project_name`` would not contain the ``[...]`` part. + """ + raise NotImplementedError("Subclass should override") + + def is_satisfied_by(self, candidate: "Candidate") -> bool: + return False + + def get_candidate_lookup(self) -> CandidateLookup: + raise NotImplementedError("Subclass should override") + + def format_for_error(self) -> str: + raise NotImplementedError("Subclass should override") + + +def _match_link(link: Link, candidate: "Candidate") -> bool: + if candidate.source_link: + return links_equivalent(link, candidate.source_link) + return False + + +class Candidate: + @property + def project_name(self) -> NormalizedName: + """The "project name" of the candidate. + + This is different from ``name`` if this candidate contains extras, + in which case ``name`` would contain the ``[...]`` part, while this + refers to the name of the project. + """ + raise NotImplementedError("Override in subclass") + + @property + def name(self) -> str: + """The name identifying this candidate in the resolver. + + This is different from ``project_name`` if this candidate contains + extras, where ``project_name`` would not contain the ``[...]`` part. + """ + raise NotImplementedError("Override in subclass") + + @property + def version(self) -> CandidateVersion: + raise NotImplementedError("Override in subclass") + + @property + def is_installed(self) -> bool: + raise NotImplementedError("Override in subclass") + + @property + def is_editable(self) -> bool: + raise NotImplementedError("Override in subclass") + + @property + def source_link(self) -> Optional[Link]: + raise NotImplementedError("Override in subclass") + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + raise NotImplementedError("Override in subclass") + + def get_install_requirement(self) -> Optional[InstallRequirement]: + raise NotImplementedError("Override in subclass") + + def format_for_error(self) -> str: + raise NotImplementedError("Subclass should override") diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py new file mode 100644 index 0000000..60fad55 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py @@ -0,0 +1,540 @@ +import logging +import sys +from typing import TYPE_CHECKING, Any, FrozenSet, Iterable, Optional, Tuple, Union, cast + +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version + +from pip._internal.exceptions import HashError, MetadataInconsistent +from pip._internal.metadata import BaseDistribution +from pip._internal.models.link import Link, links_equivalent +from pip._internal.models.wheel import Wheel +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, +) +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.misc import normalize_version_info + +from .base import Candidate, CandidateVersion, Requirement, format_name + +if TYPE_CHECKING: + from .factory import Factory + +logger = logging.getLogger(__name__) + +BaseCandidate = Union[ + "AlreadyInstalledCandidate", + "EditableCandidate", + "LinkCandidate", +] + +# Avoid conflicting with the PyPI package "Python". +REQUIRES_PYTHON_IDENTIFIER = cast(NormalizedName, "") + + +def as_base_candidate(candidate: Candidate) -> Optional[BaseCandidate]: + """The runtime version of BaseCandidate.""" + base_candidate_classes = ( + AlreadyInstalledCandidate, + EditableCandidate, + LinkCandidate, + ) + if isinstance(candidate, base_candidate_classes): + return candidate + return None + + +def make_install_req_from_link( + link: Link, template: InstallRequirement +) -> InstallRequirement: + assert not template.editable, "template is editable" + if template.req: + line = str(template.req) + else: + line = link.url + ireq = install_req_from_line( + line, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + options=dict( + install_options=template.install_options, + global_options=template.global_options, + hashes=template.hash_options, + ), + ) + ireq.original_link = template.original_link + ireq.link = link + return ireq + + +def make_install_req_from_editable( + link: Link, template: InstallRequirement +) -> InstallRequirement: + assert template.editable, "template not editable" + return install_req_from_editable( + link.url, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + permit_editable_wheels=template.permit_editable_wheels, + options=dict( + install_options=template.install_options, + global_options=template.global_options, + hashes=template.hash_options, + ), + ) + + +def _make_install_req_from_dist( + dist: BaseDistribution, template: InstallRequirement +) -> InstallRequirement: + from pip._internal.metadata.pkg_resources import Distribution as _Dist + + if template.req: + line = str(template.req) + elif template.link: + line = f"{dist.canonical_name} @ {template.link.url}" + else: + line = f"{dist.canonical_name}=={dist.version}" + ireq = install_req_from_line( + line, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + options=dict( + install_options=template.install_options, + global_options=template.global_options, + hashes=template.hash_options, + ), + ) + ireq.satisfied_by = cast(_Dist, dist)._dist + return ireq + + +class _InstallRequirementBackedCandidate(Candidate): + """A candidate backed by an ``InstallRequirement``. + + This represents a package request with the target not being already + in the environment, and needs to be fetched and installed. The backing + ``InstallRequirement`` is responsible for most of the leg work; this + class exposes appropriate information to the resolver. + + :param link: The link passed to the ``InstallRequirement``. The backing + ``InstallRequirement`` will use this link to fetch the distribution. + :param source_link: The link this candidate "originates" from. This is + different from ``link`` when the link is found in the wheel cache. + ``link`` would point to the wheel cache, while this points to the + found remote link (e.g. from pypi.org). + """ + + dist: BaseDistribution + is_installed = False + + def __init__( + self, + link: Link, + source_link: Link, + ireq: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[CandidateVersion] = None, + ) -> None: + self._link = link + self._source_link = source_link + self._factory = factory + self._ireq = ireq + self._name = name + self._version = version + self.dist = self._prepare() + + def __str__(self) -> str: + return f"{self.name} {self.version}" + + def __repr__(self) -> str: + return "{class_name}({link!r})".format( + class_name=self.__class__.__name__, + link=str(self._link), + ) + + def __hash__(self) -> int: + return hash((self.__class__, self._link)) + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return links_equivalent(self._link, other._link) + return False + + @property + def source_link(self) -> Optional[Link]: + return self._source_link + + @property + def project_name(self) -> NormalizedName: + """The normalised name of the project the candidate refers to""" + if self._name is None: + self._name = self.dist.canonical_name + return self._name + + @property + def name(self) -> str: + return self.project_name + + @property + def version(self) -> CandidateVersion: + if self._version is None: + self._version = self.dist.version + return self._version + + def format_for_error(self) -> str: + return "{} {} (from {})".format( + self.name, + self.version, + self._link.file_path if self._link.is_file else self._link, + ) + + def _prepare_distribution(self) -> BaseDistribution: + raise NotImplementedError("Override in subclass") + + def _check_metadata_consistency(self, dist: BaseDistribution) -> None: + """Check for consistency of project name and version of dist.""" + if self._name is not None and self._name != dist.canonical_name: + raise MetadataInconsistent( + self._ireq, + "name", + self._name, + dist.canonical_name, + ) + if self._version is not None and self._version != dist.version: + raise MetadataInconsistent( + self._ireq, + "version", + str(self._version), + str(dist.version), + ) + + def _prepare(self) -> BaseDistribution: + try: + dist = self._prepare_distribution() + except HashError as e: + # Provide HashError the underlying ireq that caused it. This + # provides context for the resulting error message to show the + # offending line to the user. + e.req = self._ireq + raise + self._check_metadata_consistency(dist) + return dist + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + requires = self.dist.iter_dependencies() if with_requires else () + for r in requires: + yield self._factory.make_requirement_from_spec(str(r), self._ireq) + yield self._factory.make_requires_python_requirement(self.dist.requires_python) + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return self._ireq + + +class LinkCandidate(_InstallRequirementBackedCandidate): + is_editable = False + + def __init__( + self, + link: Link, + template: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[CandidateVersion] = None, + ) -> None: + source_link = link + cache_entry = factory.get_wheel_cache_entry(link, name) + if cache_entry is not None: + logger.debug("Using cached wheel link: %s", cache_entry.link) + link = cache_entry.link + ireq = make_install_req_from_link(link, template) + assert ireq.link == link + if ireq.link.is_wheel and not ireq.link.is_file: + wheel = Wheel(ireq.link.filename) + wheel_name = canonicalize_name(wheel.name) + assert name == wheel_name, f"{name!r} != {wheel_name!r} for wheel" + # Version may not be present for PEP 508 direct URLs + if version is not None: + wheel_version = Version(wheel.version) + assert version == wheel_version, "{!r} != {!r} for wheel {}".format( + version, wheel_version, name + ) + + if ( + cache_entry is not None + and cache_entry.persistent + and template.link is template.original_link + ): + ireq.original_link_is_in_wheel_cache = True + + super().__init__( + link=link, + source_link=source_link, + ireq=ireq, + factory=factory, + name=name, + version=version, + ) + + def _prepare_distribution(self) -> BaseDistribution: + preparer = self._factory.preparer + return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) + + +class EditableCandidate(_InstallRequirementBackedCandidate): + is_editable = True + + def __init__( + self, + link: Link, + template: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[CandidateVersion] = None, + ) -> None: + super().__init__( + link=link, + source_link=link, + ireq=make_install_req_from_editable(link, template), + factory=factory, + name=name, + version=version, + ) + + def _prepare_distribution(self) -> BaseDistribution: + return self._factory.preparer.prepare_editable_requirement(self._ireq) + + +class AlreadyInstalledCandidate(Candidate): + is_installed = True + source_link = None + + def __init__( + self, + dist: BaseDistribution, + template: InstallRequirement, + factory: "Factory", + ) -> None: + self.dist = dist + self._ireq = _make_install_req_from_dist(dist, template) + self._factory = factory + + # This is just logging some messages, so we can do it eagerly. + # The returned dist would be exactly the same as self.dist because we + # set satisfied_by in _make_install_req_from_dist. + # TODO: Supply reason based on force_reinstall and upgrade_strategy. + skip_reason = "already satisfied" + factory.preparer.prepare_installed_requirement(self._ireq, skip_reason) + + def __str__(self) -> str: + return str(self.dist) + + def __repr__(self) -> str: + return "{class_name}({distribution!r})".format( + class_name=self.__class__.__name__, + distribution=self.dist, + ) + + def __hash__(self) -> int: + return hash((self.__class__, self.name, self.version)) + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return self.name == other.name and self.version == other.version + return False + + @property + def project_name(self) -> NormalizedName: + return self.dist.canonical_name + + @property + def name(self) -> str: + return self.project_name + + @property + def version(self) -> CandidateVersion: + return self.dist.version + + @property + def is_editable(self) -> bool: + return self.dist.editable + + def format_for_error(self) -> str: + return f"{self.name} {self.version} (Installed)" + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + if not with_requires: + return + for r in self.dist.iter_dependencies(): + yield self._factory.make_requirement_from_spec(str(r), self._ireq) + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return None + + +class ExtrasCandidate(Candidate): + """A candidate that has 'extras', indicating additional dependencies. + + Requirements can be for a project with dependencies, something like + foo[extra]. The extras don't affect the project/version being installed + directly, but indicate that we need additional dependencies. We model that + by having an artificial ExtrasCandidate that wraps the "base" candidate. + + The ExtrasCandidate differs from the base in the following ways: + + 1. It has a unique name, of the form foo[extra]. This causes the resolver + to treat it as a separate node in the dependency graph. + 2. When we're getting the candidate's dependencies, + a) We specify that we want the extra dependencies as well. + b) We add a dependency on the base candidate. + See below for why this is needed. + 3. We return None for the underlying InstallRequirement, as the base + candidate will provide it, and we don't want to end up with duplicates. + + The dependency on the base candidate is needed so that the resolver can't + decide that it should recommend foo[extra1] version 1.0 and foo[extra2] + version 2.0. Having those candidates depend on foo=1.0 and foo=2.0 + respectively forces the resolver to recognise that this is a conflict. + """ + + def __init__( + self, + base: BaseCandidate, + extras: FrozenSet[str], + ) -> None: + self.base = base + self.extras = extras + + def __str__(self) -> str: + name, rest = str(self.base).split(" ", 1) + return "{}[{}] {}".format(name, ",".join(self.extras), rest) + + def __repr__(self) -> str: + return "{class_name}(base={base!r}, extras={extras!r})".format( + class_name=self.__class__.__name__, + base=self.base, + extras=self.extras, + ) + + def __hash__(self) -> int: + return hash((self.base, self.extras)) + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return self.base == other.base and self.extras == other.extras + return False + + @property + def project_name(self) -> NormalizedName: + return self.base.project_name + + @property + def name(self) -> str: + """The normalised name of the project the candidate refers to""" + return format_name(self.base.project_name, self.extras) + + @property + def version(self) -> CandidateVersion: + return self.base.version + + def format_for_error(self) -> str: + return "{} [{}]".format( + self.base.format_for_error(), ", ".join(sorted(self.extras)) + ) + + @property + def is_installed(self) -> bool: + return self.base.is_installed + + @property + def is_editable(self) -> bool: + return self.base.is_editable + + @property + def source_link(self) -> Optional[Link]: + return self.base.source_link + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + factory = self.base._factory + + # Add a dependency on the exact base + # (See note 2b in the class docstring) + yield factory.make_requirement_from_candidate(self.base) + if not with_requires: + return + + # The user may have specified extras that the candidate doesn't + # support. We ignore any unsupported extras here. + valid_extras = self.extras.intersection(self.base.dist.iter_provided_extras()) + invalid_extras = self.extras.difference(self.base.dist.iter_provided_extras()) + for extra in sorted(invalid_extras): + logger.warning( + "%s %s does not provide the extra '%s'", + self.base.name, + self.version, + extra, + ) + + for r in self.base.dist.iter_dependencies(valid_extras): + requirement = factory.make_requirement_from_spec( + str(r), self.base._ireq, valid_extras + ) + if requirement: + yield requirement + + def get_install_requirement(self) -> Optional[InstallRequirement]: + # We don't return anything here, because we always + # depend on the base candidate, and we'll get the + # install requirement from that. + return None + + +class RequiresPythonCandidate(Candidate): + is_installed = False + source_link = None + + def __init__(self, py_version_info: Optional[Tuple[int, ...]]) -> None: + if py_version_info is not None: + version_info = normalize_version_info(py_version_info) + else: + version_info = sys.version_info[:3] + self._version = Version(".".join(str(c) for c in version_info)) + + # We don't need to implement __eq__() and __ne__() since there is always + # only one RequiresPythonCandidate in a resolution, i.e. the host Python. + # The built-in object.__eq__() and object.__ne__() do exactly what we want. + + def __str__(self) -> str: + return f"Python {self._version}" + + @property + def project_name(self) -> NormalizedName: + return REQUIRES_PYTHON_IDENTIFIER + + @property + def name(self) -> str: + return REQUIRES_PYTHON_IDENTIFIER + + @property + def version(self) -> CandidateVersion: + return self._version + + def format_for_error(self) -> str: + return f"Python {self.version}" + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + return () + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return None diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py new file mode 100644 index 0000000..766dc26 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py @@ -0,0 +1,701 @@ +import contextlib +import functools +import logging +from typing import ( + TYPE_CHECKING, + Dict, + FrozenSet, + Iterable, + Iterator, + List, + Mapping, + NamedTuple, + Optional, + Sequence, + Set, + Tuple, + TypeVar, + cast, +) + +from pip._vendor.packaging.requirements import InvalidRequirement +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.resolvelib import ResolutionImpossible + +from pip._internal.cache import CacheEntry, WheelCache +from pip._internal.exceptions import ( + DistributionNotFound, + InstallationError, + InstallationSubprocessError, + MetadataInconsistent, + UnsupportedPythonVersion, + UnsupportedWheel, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution, get_default_environment +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.constructors import install_req_from_link_and_ireq +from pip._internal.req.req_install import ( + InstallRequirement, + check_invalid_constraint_type, +) +from pip._internal.resolution.base import InstallRequirementProvider +from pip._internal.utils.compatibility_tags import get_supported +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.packaging import get_requirement +from pip._internal.utils.virtualenv import running_under_virtualenv + +from .base import Candidate, CandidateVersion, Constraint, Requirement +from .candidates import ( + AlreadyInstalledCandidate, + BaseCandidate, + EditableCandidate, + ExtrasCandidate, + LinkCandidate, + RequiresPythonCandidate, + as_base_candidate, +) +from .found_candidates import FoundCandidates, IndexCandidateInfo +from .requirements import ( + ExplicitRequirement, + RequiresPythonRequirement, + SpecifierRequirement, + UnsatisfiableRequirement, +) + +if TYPE_CHECKING: + from typing import Protocol + + class ConflictCause(Protocol): + requirement: RequiresPythonRequirement + parent: Candidate + + +logger = logging.getLogger(__name__) + +C = TypeVar("C") +Cache = Dict[Link, C] + + +class CollectedRootRequirements(NamedTuple): + requirements: List[Requirement] + constraints: Dict[str, Constraint] + user_requested: Dict[str, int] + + +class Factory: + def __init__( + self, + finder: PackageFinder, + preparer: RequirementPreparer, + make_install_req: InstallRequirementProvider, + wheel_cache: Optional[WheelCache], + use_user_site: bool, + force_reinstall: bool, + ignore_installed: bool, + ignore_requires_python: bool, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> None: + self._finder = finder + self.preparer = preparer + self._wheel_cache = wheel_cache + self._python_candidate = RequiresPythonCandidate(py_version_info) + self._make_install_req_from_spec = make_install_req + self._use_user_site = use_user_site + self._force_reinstall = force_reinstall + self._ignore_requires_python = ignore_requires_python + + self._build_failures: Cache[InstallationError] = {} + self._link_candidate_cache: Cache[LinkCandidate] = {} + self._editable_candidate_cache: Cache[EditableCandidate] = {} + self._installed_candidate_cache: Dict[str, AlreadyInstalledCandidate] = {} + self._extras_candidate_cache: Dict[ + Tuple[int, FrozenSet[str]], ExtrasCandidate + ] = {} + + if not ignore_installed: + env = get_default_environment() + self._installed_dists = { + dist.canonical_name: dist + for dist in env.iter_installed_distributions(local_only=False) + } + else: + self._installed_dists = {} + + @property + def force_reinstall(self) -> bool: + return self._force_reinstall + + def _fail_if_link_is_unsupported_wheel(self, link: Link) -> None: + if not link.is_wheel: + return + wheel = Wheel(link.filename) + if wheel.supported(self._finder.target_python.get_tags()): + return + msg = f"{link.filename} is not a supported wheel on this platform." + raise UnsupportedWheel(msg) + + def _make_extras_candidate( + self, base: BaseCandidate, extras: FrozenSet[str] + ) -> ExtrasCandidate: + cache_key = (id(base), extras) + try: + candidate = self._extras_candidate_cache[cache_key] + except KeyError: + candidate = ExtrasCandidate(base, extras) + self._extras_candidate_cache[cache_key] = candidate + return candidate + + def _make_candidate_from_dist( + self, + dist: BaseDistribution, + extras: FrozenSet[str], + template: InstallRequirement, + ) -> Candidate: + try: + base = self._installed_candidate_cache[dist.canonical_name] + except KeyError: + base = AlreadyInstalledCandidate(dist, template, factory=self) + self._installed_candidate_cache[dist.canonical_name] = base + if not extras: + return base + return self._make_extras_candidate(base, extras) + + def _make_candidate_from_link( + self, + link: Link, + extras: FrozenSet[str], + template: InstallRequirement, + name: Optional[NormalizedName], + version: Optional[CandidateVersion], + ) -> Optional[Candidate]: + # TODO: Check already installed candidate, and use it if the link and + # editable flag match. + + if link in self._build_failures: + # We already tried this candidate before, and it does not build. + # Don't bother trying again. + return None + + if template.editable: + if link not in self._editable_candidate_cache: + try: + self._editable_candidate_cache[link] = EditableCandidate( + link, + template, + factory=self, + name=name, + version=version, + ) + except (InstallationSubprocessError, MetadataInconsistent) as e: + logger.warning("Discarding %s. %s", link, e) + self._build_failures[link] = e + return None + base: BaseCandidate = self._editable_candidate_cache[link] + else: + if link not in self._link_candidate_cache: + try: + self._link_candidate_cache[link] = LinkCandidate( + link, + template, + factory=self, + name=name, + version=version, + ) + except (InstallationSubprocessError, MetadataInconsistent) as e: + logger.warning("Discarding %s. %s", link, e) + self._build_failures[link] = e + return None + base = self._link_candidate_cache[link] + + if not extras: + return base + return self._make_extras_candidate(base, extras) + + def _iter_found_candidates( + self, + ireqs: Sequence[InstallRequirement], + specifier: SpecifierSet, + hashes: Hashes, + prefers_installed: bool, + incompatible_ids: Set[int], + ) -> Iterable[Candidate]: + if not ireqs: + return () + + # The InstallRequirement implementation requires us to give it a + # "template". Here we just choose the first requirement to represent + # all of them. + # Hopefully the Project model can correct this mismatch in the future. + template = ireqs[0] + assert template.req, "Candidates found on index must be PEP 508" + name = canonicalize_name(template.req.name) + + extras: FrozenSet[str] = frozenset() + for ireq in ireqs: + assert ireq.req, "Candidates found on index must be PEP 508" + specifier &= ireq.req.specifier + hashes &= ireq.hashes(trust_internet=False) + extras |= frozenset(ireq.extras) + + def _get_installed_candidate() -> Optional[Candidate]: + """Get the candidate for the currently-installed version.""" + # If --force-reinstall is set, we want the version from the index + # instead, so we "pretend" there is nothing installed. + if self._force_reinstall: + return None + try: + installed_dist = self._installed_dists[name] + except KeyError: + return None + # Don't use the installed distribution if its version does not fit + # the current dependency graph. + if not specifier.contains(installed_dist.version, prereleases=True): + return None + candidate = self._make_candidate_from_dist( + dist=installed_dist, + extras=extras, + template=template, + ) + # The candidate is a known incompatiblity. Don't use it. + if id(candidate) in incompatible_ids: + return None + return candidate + + def iter_index_candidate_infos() -> Iterator[IndexCandidateInfo]: + result = self._finder.find_best_candidate( + project_name=name, + specifier=specifier, + hashes=hashes, + ) + icans = list(result.iter_applicable()) + + # PEP 592: Yanked releases must be ignored unless only yanked + # releases can satisfy the version range. So if this is false, + # all yanked icans need to be skipped. + all_yanked = all(ican.link.is_yanked for ican in icans) + + # PackageFinder returns earlier versions first, so we reverse. + for ican in reversed(icans): + if not all_yanked and ican.link.is_yanked: + continue + func = functools.partial( + self._make_candidate_from_link, + link=ican.link, + extras=extras, + template=template, + name=name, + version=ican.version, + ) + yield ican.version, func + + return FoundCandidates( + iter_index_candidate_infos, + _get_installed_candidate(), + prefers_installed, + incompatible_ids, + ) + + def _iter_explicit_candidates_from_base( + self, + base_requirements: Iterable[Requirement], + extras: FrozenSet[str], + ) -> Iterator[Candidate]: + """Produce explicit candidates from the base given an extra-ed package. + + :param base_requirements: Requirements known to the resolver. The + requirements are guaranteed to not have extras. + :param extras: The extras to inject into the explicit requirements' + candidates. + """ + for req in base_requirements: + lookup_cand, _ = req.get_candidate_lookup() + if lookup_cand is None: # Not explicit. + continue + # We've stripped extras from the identifier, and should always + # get a BaseCandidate here, unless there's a bug elsewhere. + base_cand = as_base_candidate(lookup_cand) + assert base_cand is not None, "no extras here" + yield self._make_extras_candidate(base_cand, extras) + + def _iter_candidates_from_constraints( + self, + identifier: str, + constraint: Constraint, + template: InstallRequirement, + ) -> Iterator[Candidate]: + """Produce explicit candidates from constraints. + + This creates "fake" InstallRequirement objects that are basically clones + of what "should" be the template, but with original_link set to link. + """ + for link in constraint.links: + self._fail_if_link_is_unsupported_wheel(link) + candidate = self._make_candidate_from_link( + link, + extras=frozenset(), + template=install_req_from_link_and_ireq(link, template), + name=canonicalize_name(identifier), + version=None, + ) + if candidate: + yield candidate + + def find_candidates( + self, + identifier: str, + requirements: Mapping[str, Iterable[Requirement]], + incompatibilities: Mapping[str, Iterator[Candidate]], + constraint: Constraint, + prefers_installed: bool, + ) -> Iterable[Candidate]: + # Collect basic lookup information from the requirements. + explicit_candidates: Set[Candidate] = set() + ireqs: List[InstallRequirement] = [] + for req in requirements[identifier]: + cand, ireq = req.get_candidate_lookup() + if cand is not None: + explicit_candidates.add(cand) + if ireq is not None: + ireqs.append(ireq) + + # If the current identifier contains extras, add explicit candidates + # from entries from extra-less identifier. + with contextlib.suppress(InvalidRequirement): + parsed_requirement = get_requirement(identifier) + explicit_candidates.update( + self._iter_explicit_candidates_from_base( + requirements.get(parsed_requirement.name, ()), + frozenset(parsed_requirement.extras), + ), + ) + + # Add explicit candidates from constraints. We only do this if there are + # kown ireqs, which represent requirements not already explicit. If + # there are no ireqs, we're constraining already-explicit requirements, + # which is handled later when we return the explicit candidates. + if ireqs: + try: + explicit_candidates.update( + self._iter_candidates_from_constraints( + identifier, + constraint, + template=ireqs[0], + ), + ) + except UnsupportedWheel: + # If we're constrained to install a wheel incompatible with the + # target architecture, no candidates will ever be valid. + return () + + # Since we cache all the candidates, incompatibility identification + # can be made quicker by comparing only the id() values. + incompat_ids = {id(c) for c in incompatibilities.get(identifier, ())} + + # If none of the requirements want an explicit candidate, we can ask + # the finder for candidates. + if not explicit_candidates: + return self._iter_found_candidates( + ireqs, + constraint.specifier, + constraint.hashes, + prefers_installed, + incompat_ids, + ) + + return ( + c + for c in explicit_candidates + if id(c) not in incompat_ids + and constraint.is_satisfied_by(c) + and all(req.is_satisfied_by(c) for req in requirements[identifier]) + ) + + def _make_requirement_from_install_req( + self, ireq: InstallRequirement, requested_extras: Iterable[str] + ) -> Optional[Requirement]: + if not ireq.match_markers(requested_extras): + logger.info( + "Ignoring %s: markers '%s' don't match your environment", + ireq.name, + ireq.markers, + ) + return None + if not ireq.link: + return SpecifierRequirement(ireq) + self._fail_if_link_is_unsupported_wheel(ireq.link) + cand = self._make_candidate_from_link( + ireq.link, + extras=frozenset(ireq.extras), + template=ireq, + name=canonicalize_name(ireq.name) if ireq.name else None, + version=None, + ) + if cand is None: + # There's no way we can satisfy a URL requirement if the underlying + # candidate fails to build. An unnamed URL must be user-supplied, so + # we fail eagerly. If the URL is named, an unsatisfiable requirement + # can make the resolver do the right thing, either backtrack (and + # maybe find some other requirement that's buildable) or raise a + # ResolutionImpossible eventually. + if not ireq.name: + raise self._build_failures[ireq.link] + return UnsatisfiableRequirement(canonicalize_name(ireq.name)) + return self.make_requirement_from_candidate(cand) + + def collect_root_requirements( + self, root_ireqs: List[InstallRequirement] + ) -> CollectedRootRequirements: + collected = CollectedRootRequirements([], {}, {}) + for i, ireq in enumerate(root_ireqs): + if ireq.constraint: + # Ensure we only accept valid constraints + problem = check_invalid_constraint_type(ireq) + if problem: + raise InstallationError(problem) + if not ireq.match_markers(): + continue + assert ireq.name, "Constraint must be named" + name = canonicalize_name(ireq.name) + if name in collected.constraints: + collected.constraints[name] &= ireq + else: + collected.constraints[name] = Constraint.from_ireq(ireq) + else: + req = self._make_requirement_from_install_req( + ireq, + requested_extras=(), + ) + if req is None: + continue + if ireq.user_supplied and req.name not in collected.user_requested: + collected.user_requested[req.name] = i + collected.requirements.append(req) + return collected + + def make_requirement_from_candidate( + self, candidate: Candidate + ) -> ExplicitRequirement: + return ExplicitRequirement(candidate) + + def make_requirement_from_spec( + self, + specifier: str, + comes_from: Optional[InstallRequirement], + requested_extras: Iterable[str] = (), + ) -> Optional[Requirement]: + ireq = self._make_install_req_from_spec(specifier, comes_from) + return self._make_requirement_from_install_req(ireq, requested_extras) + + def make_requires_python_requirement( + self, + specifier: SpecifierSet, + ) -> Optional[Requirement]: + if self._ignore_requires_python: + return None + # Don't bother creating a dependency for an empty Requires-Python. + if not str(specifier): + return None + return RequiresPythonRequirement(specifier, self._python_candidate) + + def get_wheel_cache_entry( + self, link: Link, name: Optional[str] + ) -> Optional[CacheEntry]: + """Look up the link in the wheel cache. + + If ``preparer.require_hashes`` is True, don't use the wheel cache, + because cached wheels, always built locally, have different hashes + than the files downloaded from the index server and thus throw false + hash mismatches. Furthermore, cached wheels at present have + nondeterministic contents due to file modification times. + """ + if self._wheel_cache is None or self.preparer.require_hashes: + return None + return self._wheel_cache.get_cache_entry( + link=link, + package_name=name, + supported_tags=get_supported(), + ) + + def get_dist_to_uninstall(self, candidate: Candidate) -> Optional[BaseDistribution]: + # TODO: Are there more cases this needs to return True? Editable? + dist = self._installed_dists.get(candidate.project_name) + if dist is None: # Not installed, no uninstallation required. + return None + + # We're installing into global site. The current installation must + # be uninstalled, no matter it's in global or user site, because the + # user site installation has precedence over global. + if not self._use_user_site: + return dist + + # We're installing into user site. Remove the user site installation. + if dist.in_usersite: + return dist + + # We're installing into user site, but the installed incompatible + # package is in global site. We can't uninstall that, and would let + # the new user installation to "shadow" it. But shadowing won't work + # in virtual environments, so we error out. + if running_under_virtualenv() and dist.in_site_packages: + message = ( + f"Will not install to the user site because it will lack " + f"sys.path precedence to {dist.raw_name} in {dist.location}" + ) + raise InstallationError(message) + return None + + def _report_requires_python_error( + self, causes: Sequence["ConflictCause"] + ) -> UnsupportedPythonVersion: + assert causes, "Requires-Python error reported with no cause" + + version = self._python_candidate.version + + if len(causes) == 1: + specifier = str(causes[0].requirement.specifier) + message = ( + f"Package {causes[0].parent.name!r} requires a different " + f"Python: {version} not in {specifier!r}" + ) + return UnsupportedPythonVersion(message) + + message = f"Packages require a different Python. {version} not in:" + for cause in causes: + package = cause.parent.format_for_error() + specifier = str(cause.requirement.specifier) + message += f"\n{specifier!r} (required by {package})" + return UnsupportedPythonVersion(message) + + def _report_single_requirement_conflict( + self, req: Requirement, parent: Optional[Candidate] + ) -> DistributionNotFound: + if parent is None: + req_disp = str(req) + else: + req_disp = f"{req} (from {parent.name})" + + cands = self._finder.find_all_candidates(req.project_name) + versions = [str(v) for v in sorted({c.version for c in cands})] + + logger.critical( + "Could not find a version that satisfies the requirement %s " + "(from versions: %s)", + req_disp, + ", ".join(versions) or "none", + ) + if str(req) == "requirements.txt": + logger.info( + "HINT: You are attempting to install a package literally " + 'named "requirements.txt" (which cannot exist). Consider ' + "using the '-r' flag to install the packages listed in " + "requirements.txt" + ) + + return DistributionNotFound(f"No matching distribution found for {req}") + + def get_installation_error( + self, + e: "ResolutionImpossible[Requirement, Candidate]", + constraints: Dict[str, Constraint], + ) -> InstallationError: + + assert e.causes, "Installation error reported with no cause" + + # If one of the things we can't solve is "we need Python X.Y", + # that is what we report. + requires_python_causes = [ + cause + for cause in e.causes + if isinstance(cause.requirement, RequiresPythonRequirement) + and not cause.requirement.is_satisfied_by(self._python_candidate) + ] + if requires_python_causes: + # The comprehension above makes sure all Requirement instances are + # RequiresPythonRequirement, so let's cast for convinience. + return self._report_requires_python_error( + cast("Sequence[ConflictCause]", requires_python_causes), + ) + + # Otherwise, we have a set of causes which can't all be satisfied + # at once. + + # The simplest case is when we have *one* cause that can't be + # satisfied. We just report that case. + if len(e.causes) == 1: + req, parent = e.causes[0] + if req.name not in constraints: + return self._report_single_requirement_conflict(req, parent) + + # OK, we now have a list of requirements that can't all be + # satisfied at once. + + # A couple of formatting helpers + def text_join(parts: List[str]) -> str: + if len(parts) == 1: + return parts[0] + + return ", ".join(parts[:-1]) + " and " + parts[-1] + + def describe_trigger(parent: Candidate) -> str: + ireq = parent.get_install_requirement() + if not ireq or not ireq.comes_from: + return f"{parent.name}=={parent.version}" + if isinstance(ireq.comes_from, InstallRequirement): + return str(ireq.comes_from.name) + return str(ireq.comes_from) + + triggers = set() + for req, parent in e.causes: + if parent is None: + # This is a root requirement, so we can report it directly + trigger = req.format_for_error() + else: + trigger = describe_trigger(parent) + triggers.add(trigger) + + if triggers: + info = text_join(sorted(triggers)) + else: + info = "the requested packages" + + msg = ( + "Cannot install {} because these package versions " + "have conflicting dependencies.".format(info) + ) + logger.critical(msg) + msg = "\nThe conflict is caused by:" + + relevant_constraints = set() + for req, parent in e.causes: + if req.name in constraints: + relevant_constraints.add(req.name) + msg = msg + "\n " + if parent: + msg = msg + f"{parent.name} {parent.version} depends on " + else: + msg = msg + "The user requested " + msg = msg + req.format_for_error() + for key in relevant_constraints: + spec = constraints[key].specifier + msg += f"\n The user requested (constraint) {key}{spec}" + + msg = ( + msg + + "\n\n" + + "To fix this you could try to:\n" + + "1. loosen the range of package versions you've specified\n" + + "2. remove package versions to allow pip attempt to solve " + + "the dependency conflict\n" + ) + + logger.info(msg) + + return DistributionNotFound( + "ResolutionImpossible: for help visit " + "https://pip.pypa.io/en/latest/user_guide/" + "#fixing-conflicting-dependencies" + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py new file mode 100644 index 0000000..8663097 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py @@ -0,0 +1,155 @@ +"""Utilities to lazily create and visit candidates found. + +Creating and visiting a candidate is a *very* costly operation. It involves +fetching, extracting, potentially building modules from source, and verifying +distribution metadata. It is therefore crucial for performance to keep +everything here lazy all the way down, so we only touch candidates that we +absolutely need, and not "download the world" when we only need one version of +something. +""" + +import functools +from collections.abc import Sequence +from typing import TYPE_CHECKING, Any, Callable, Iterator, Optional, Set, Tuple + +from pip._vendor.packaging.version import _BaseVersion + +from .base import Candidate + +IndexCandidateInfo = Tuple[_BaseVersion, Callable[[], Optional[Candidate]]] + +if TYPE_CHECKING: + SequenceCandidate = Sequence[Candidate] +else: + # For compatibility: Python before 3.9 does not support using [] on the + # Sequence class. + # + # >>> from collections.abc import Sequence + # >>> Sequence[str] + # Traceback (most recent call last): + # File "", line 1, in + # TypeError: 'ABCMeta' object is not subscriptable + # + # TODO: Remove this block after dropping Python 3.8 support. + SequenceCandidate = Sequence + + +def _iter_built(infos: Iterator[IndexCandidateInfo]) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the package is not already installed. Candidates + from index come later in their normal ordering. + """ + versions_found: Set[_BaseVersion] = set() + for version, func in infos: + if version in versions_found: + continue + candidate = func() + if candidate is None: + continue + yield candidate + versions_found.add(version) + + +def _iter_built_with_prepended( + installed: Candidate, infos: Iterator[IndexCandidateInfo] +) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the resolver prefers the already-installed + candidate and NOT to upgrade. The installed candidate is therefore + always yielded first, and candidates from index come later in their + normal ordering, except skipped when the version is already installed. + """ + yield installed + versions_found: Set[_BaseVersion] = {installed.version} + for version, func in infos: + if version in versions_found: + continue + candidate = func() + if candidate is None: + continue + yield candidate + versions_found.add(version) + + +def _iter_built_with_inserted( + installed: Candidate, infos: Iterator[IndexCandidateInfo] +) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the resolver prefers to upgrade an + already-installed package. Candidates from index are returned in their + normal ordering, except replaced when the version is already installed. + + The implementation iterates through and yields other candidates, inserting + the installed candidate exactly once before we start yielding older or + equivalent candidates, or after all other candidates if they are all newer. + """ + versions_found: Set[_BaseVersion] = set() + for version, func in infos: + if version in versions_found: + continue + # If the installed candidate is better, yield it first. + if installed.version >= version: + yield installed + versions_found.add(installed.version) + candidate = func() + if candidate is None: + continue + yield candidate + versions_found.add(version) + + # If the installed candidate is older than all other candidates. + if installed.version not in versions_found: + yield installed + + +class FoundCandidates(SequenceCandidate): + """A lazy sequence to provide candidates to the resolver. + + The intended usage is to return this from `find_matches()` so the resolver + can iterate through the sequence multiple times, but only access the index + page when remote packages are actually needed. This improve performances + when suitable candidates are already installed on disk. + """ + + def __init__( + self, + get_infos: Callable[[], Iterator[IndexCandidateInfo]], + installed: Optional[Candidate], + prefers_installed: bool, + incompatible_ids: Set[int], + ): + self._get_infos = get_infos + self._installed = installed + self._prefers_installed = prefers_installed + self._incompatible_ids = incompatible_ids + + def __getitem__(self, index: Any) -> Any: + # Implemented to satisfy the ABC check. This is not needed by the + # resolver, and should not be used by the provider either (for + # performance reasons). + raise NotImplementedError("don't do this") + + def __iter__(self) -> Iterator[Candidate]: + infos = self._get_infos() + if not self._installed: + iterator = _iter_built(infos) + elif self._prefers_installed: + iterator = _iter_built_with_prepended(self._installed, infos) + else: + iterator = _iter_built_with_inserted(self._installed, infos) + return (c for c in iterator if id(c) not in self._incompatible_ids) + + def __len__(self) -> int: + # Implemented to satisfy the ABC check. This is not needed by the + # resolver, and should not be used by the provider either (for + # performance reasons). + raise NotImplementedError("don't do this") + + @functools.lru_cache(maxsize=1) + def __bool__(self) -> bool: + if self._prefers_installed and self._installed: + return True + return any(self) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/provider.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/provider.py new file mode 100644 index 0000000..85d3b31 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/provider.py @@ -0,0 +1,215 @@ +import collections +import math +from typing import TYPE_CHECKING, Dict, Iterable, Iterator, Mapping, Sequence, Union + +from pip._vendor.resolvelib.providers import AbstractProvider + +from .base import Candidate, Constraint, Requirement +from .candidates import REQUIRES_PYTHON_IDENTIFIER +from .factory import Factory + +if TYPE_CHECKING: + from pip._vendor.resolvelib.providers import Preference + from pip._vendor.resolvelib.resolvers import RequirementInformation + + PreferenceInformation = RequirementInformation[Requirement, Candidate] + + _ProviderBase = AbstractProvider[Requirement, Candidate, str] +else: + _ProviderBase = AbstractProvider + +# Notes on the relationship between the provider, the factory, and the +# candidate and requirement classes. +# +# The provider is a direct implementation of the resolvelib class. Its role +# is to deliver the API that resolvelib expects. +# +# Rather than work with completely abstract "requirement" and "candidate" +# concepts as resolvelib does, pip has concrete classes implementing these two +# ideas. The API of Requirement and Candidate objects are defined in the base +# classes, but essentially map fairly directly to the equivalent provider +# methods. In particular, `find_matches` and `is_satisfied_by` are +# requirement methods, and `get_dependencies` is a candidate method. +# +# The factory is the interface to pip's internal mechanisms. It is stateless, +# and is created by the resolver and held as a property of the provider. It is +# responsible for creating Requirement and Candidate objects, and provides +# services to those objects (access to pip's finder and preparer). + + +class PipProvider(_ProviderBase): + """Pip's provider implementation for resolvelib. + + :params constraints: A mapping of constraints specified by the user. Keys + are canonicalized project names. + :params ignore_dependencies: Whether the user specified ``--no-deps``. + :params upgrade_strategy: The user-specified upgrade strategy. + :params user_requested: A set of canonicalized package names that the user + supplied for pip to install/upgrade. + """ + + def __init__( + self, + factory: Factory, + constraints: Dict[str, Constraint], + ignore_dependencies: bool, + upgrade_strategy: str, + user_requested: Dict[str, int], + ) -> None: + self._factory = factory + self._constraints = constraints + self._ignore_dependencies = ignore_dependencies + self._upgrade_strategy = upgrade_strategy + self._user_requested = user_requested + self._known_depths: Dict[str, float] = collections.defaultdict(lambda: math.inf) + + def identify(self, requirement_or_candidate: Union[Requirement, Candidate]) -> str: + return requirement_or_candidate.name + + def get_preference( # type: ignore + self, + identifier: str, + resolutions: Mapping[str, Candidate], + candidates: Mapping[str, Iterator[Candidate]], + information: Mapping[str, Iterable["PreferenceInformation"]], + backtrack_causes: Sequence["PreferenceInformation"], + ) -> "Preference": + """Produce a sort key for given requirement based on preference. + + The lower the return value is, the more preferred this group of + arguments is. + + Currently pip considers the followings in order: + + * Prefer if any of the known requirements is "direct", e.g. points to an + explicit URL. + * If equal, prefer if any requirement is "pinned", i.e. contains + operator ``===`` or ``==``. + * If equal, calculate an approximate "depth" and resolve requirements + closer to the user-specified requirements first. + * Order user-specified requirements by the order they are specified. + * If equal, prefers "non-free" requirements, i.e. contains at least one + operator, such as ``>=`` or ``<``. + * If equal, order alphabetically for consistency (helps debuggability). + """ + lookups = (r.get_candidate_lookup() for r, _ in information[identifier]) + candidate, ireqs = zip(*lookups) + operators = [ + specifier.operator + for specifier_set in (ireq.specifier for ireq in ireqs if ireq) + for specifier in specifier_set + ] + + direct = candidate is not None + pinned = any(op[:2] == "==" for op in operators) + unfree = bool(operators) + + try: + requested_order: Union[int, float] = self._user_requested[identifier] + except KeyError: + requested_order = math.inf + parent_depths = ( + self._known_depths[parent.name] if parent is not None else 0.0 + for _, parent in information[identifier] + ) + inferred_depth = min(d for d in parent_depths) + 1.0 + else: + inferred_depth = 1.0 + self._known_depths[identifier] = inferred_depth + + requested_order = self._user_requested.get(identifier, math.inf) + + # Requires-Python has only one candidate and the check is basically + # free, so we always do it first to avoid needless work if it fails. + requires_python = identifier == REQUIRES_PYTHON_IDENTIFIER + + # HACK: Setuptools have a very long and solid backward compatibility + # track record, and extremely few projects would request a narrow, + # non-recent version range of it since that would break a lot things. + # (Most projects specify it only to request for an installer feature, + # which does not work, but that's another topic.) Intentionally + # delaying Setuptools helps reduce branches the resolver has to check. + # This serves as a temporary fix for issues like "apache-airlfow[all]" + # while we work on "proper" branch pruning techniques. + delay_this = identifier == "setuptools" + + # Prefer the causes of backtracking on the assumption that the problem + # resolving the dependency tree is related to the failures that caused + # the backtracking + backtrack_cause = self.is_backtrack_cause(identifier, backtrack_causes) + + return ( + not requires_python, + delay_this, + not direct, + not pinned, + not backtrack_cause, + inferred_depth, + requested_order, + not unfree, + identifier, + ) + + def _get_constraint(self, identifier: str) -> Constraint: + if identifier in self._constraints: + return self._constraints[identifier] + + # HACK: Theoratically we should check whether this identifier is a valid + # "NAME[EXTRAS]" format, and parse out the name part with packaging or + # some regular expression. But since pip's resolver only spits out + # three kinds of identifiers: normalized PEP 503 names, normalized names + # plus extras, and Requires-Python, we can cheat a bit here. + name, open_bracket, _ = identifier.partition("[") + if open_bracket and name in self._constraints: + return self._constraints[name] + + return Constraint.empty() + + def find_matches( + self, + identifier: str, + requirements: Mapping[str, Iterator[Requirement]], + incompatibilities: Mapping[str, Iterator[Candidate]], + ) -> Iterable[Candidate]: + def _eligible_for_upgrade(name: str) -> bool: + """Are upgrades allowed for this project? + + This checks the upgrade strategy, and whether the project was one + that the user specified in the command line, in order to decide + whether we should upgrade if there's a newer version available. + + (Note that we don't need access to the `--upgrade` flag, because + an upgrade strategy of "to-satisfy-only" means that `--upgrade` + was not specified). + """ + if self._upgrade_strategy == "eager": + return True + elif self._upgrade_strategy == "only-if-needed": + return name in self._user_requested + return False + + return self._factory.find_candidates( + identifier=identifier, + requirements=requirements, + constraint=self._get_constraint(identifier), + prefers_installed=(not _eligible_for_upgrade(identifier)), + incompatibilities=incompatibilities, + ) + + def is_satisfied_by(self, requirement: Requirement, candidate: Candidate) -> bool: + return requirement.is_satisfied_by(candidate) + + def get_dependencies(self, candidate: Candidate) -> Sequence[Requirement]: + with_requires = not self._ignore_dependencies + return [r for r in candidate.iter_dependencies(with_requires) if r is not None] + + @staticmethod + def is_backtrack_cause( + identifier: str, backtrack_causes: Sequence["PreferenceInformation"] + ) -> bool: + for backtrack_cause in backtrack_causes: + if identifier == backtrack_cause.requirement.name: + return True + if backtrack_cause.parent and identifier == backtrack_cause.parent.name: + return True + return False diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/reporter.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/reporter.py new file mode 100644 index 0000000..6ced532 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/reporter.py @@ -0,0 +1,68 @@ +from collections import defaultdict +from logging import getLogger +from typing import Any, DefaultDict + +from pip._vendor.resolvelib.reporters import BaseReporter + +from .base import Candidate, Requirement + +logger = getLogger(__name__) + + +class PipReporter(BaseReporter): + def __init__(self) -> None: + self.backtracks_by_package: DefaultDict[str, int] = defaultdict(int) + + self._messages_at_backtrack = { + 1: ( + "pip is looking at multiple versions of {package_name} to " + "determine which version is compatible with other " + "requirements. This could take a while." + ), + 8: ( + "pip is looking at multiple versions of {package_name} to " + "determine which version is compatible with other " + "requirements. This could take a while." + ), + 13: ( + "This is taking longer than usual. You might need to provide " + "the dependency resolver with stricter constraints to reduce " + "runtime. See https://pip.pypa.io/warnings/backtracking for " + "guidance. If you want to abort this run, press Ctrl + C." + ), + } + + def backtracking(self, candidate: Candidate) -> None: + self.backtracks_by_package[candidate.name] += 1 + + count = self.backtracks_by_package[candidate.name] + if count not in self._messages_at_backtrack: + return + + message = self._messages_at_backtrack[count] + logger.info("INFO: %s", message.format(package_name=candidate.name)) + + +class PipDebuggingReporter(BaseReporter): + """A reporter that does an info log for every event it sees.""" + + def starting(self) -> None: + logger.info("Reporter.starting()") + + def starting_round(self, index: int) -> None: + logger.info("Reporter.starting_round(%r)", index) + + def ending_round(self, index: int, state: Any) -> None: + logger.info("Reporter.ending_round(%r, state)", index) + + def ending(self, state: Any) -> None: + logger.info("Reporter.ending(%r)", state) + + def adding_requirement(self, requirement: Requirement, parent: Candidate) -> None: + logger.info("Reporter.adding_requirement(%r, %r)", requirement, parent) + + def backtracking(self, candidate: Candidate) -> None: + logger.info("Reporter.backtracking(%r)", candidate) + + def pinning(self, candidate: Candidate) -> None: + logger.info("Reporter.pinning(%r)", candidate) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py new file mode 100644 index 0000000..c19f83c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py @@ -0,0 +1,166 @@ +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name + +from pip._internal.req.req_install import InstallRequirement + +from .base import Candidate, CandidateLookup, Requirement, format_name + + +class ExplicitRequirement(Requirement): + def __init__(self, candidate: Candidate) -> None: + self.candidate = candidate + + def __str__(self) -> str: + return str(self.candidate) + + def __repr__(self) -> str: + return "{class_name}({candidate!r})".format( + class_name=self.__class__.__name__, + candidate=self.candidate, + ) + + @property + def project_name(self) -> NormalizedName: + # No need to canonicalise - the candidate did this + return self.candidate.project_name + + @property + def name(self) -> str: + # No need to canonicalise - the candidate did this + return self.candidate.name + + def format_for_error(self) -> str: + return self.candidate.format_for_error() + + def get_candidate_lookup(self) -> CandidateLookup: + return self.candidate, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + return candidate == self.candidate + + +class SpecifierRequirement(Requirement): + def __init__(self, ireq: InstallRequirement) -> None: + assert ireq.link is None, "This is a link, not a specifier" + self._ireq = ireq + self._extras = frozenset(ireq.extras) + + def __str__(self) -> str: + return str(self._ireq.req) + + def __repr__(self) -> str: + return "{class_name}({requirement!r})".format( + class_name=self.__class__.__name__, + requirement=str(self._ireq.req), + ) + + @property + def project_name(self) -> NormalizedName: + assert self._ireq.req, "Specifier-backed ireq is always PEP 508" + return canonicalize_name(self._ireq.req.name) + + @property + def name(self) -> str: + return format_name(self.project_name, self._extras) + + def format_for_error(self) -> str: + + # Convert comma-separated specifiers into "A, B, ..., F and G" + # This makes the specifier a bit more "human readable", without + # risking a change in meaning. (Hopefully! Not all edge cases have + # been checked) + parts = [s.strip() for s in str(self).split(",")] + if len(parts) == 0: + return "" + elif len(parts) == 1: + return parts[0] + + return ", ".join(parts[:-1]) + " and " + parts[-1] + + def get_candidate_lookup(self) -> CandidateLookup: + return None, self._ireq + + def is_satisfied_by(self, candidate: Candidate) -> bool: + assert candidate.name == self.name, ( + f"Internal issue: Candidate is not for this requirement " + f"{candidate.name} vs {self.name}" + ) + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + assert self._ireq.req, "Specifier-backed ireq is always PEP 508" + spec = self._ireq.req.specifier + return spec.contains(candidate.version, prereleases=True) + + +class RequiresPythonRequirement(Requirement): + """A requirement representing Requires-Python metadata.""" + + def __init__(self, specifier: SpecifierSet, match: Candidate) -> None: + self.specifier = specifier + self._candidate = match + + def __str__(self) -> str: + return f"Python {self.specifier}" + + def __repr__(self) -> str: + return "{class_name}({specifier!r})".format( + class_name=self.__class__.__name__, + specifier=str(self.specifier), + ) + + @property + def project_name(self) -> NormalizedName: + return self._candidate.project_name + + @property + def name(self) -> str: + return self._candidate.name + + def format_for_error(self) -> str: + return str(self) + + def get_candidate_lookup(self) -> CandidateLookup: + if self.specifier.contains(self._candidate.version, prereleases=True): + return self._candidate, None + return None, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + assert candidate.name == self._candidate.name, "Not Python candidate" + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + return self.specifier.contains(candidate.version, prereleases=True) + + +class UnsatisfiableRequirement(Requirement): + """A requirement that cannot be satisfied.""" + + def __init__(self, name: NormalizedName) -> None: + self._name = name + + def __str__(self) -> str: + return f"{self._name} (unavailable)" + + def __repr__(self) -> str: + return "{class_name}({name!r})".format( + class_name=self.__class__.__name__, + name=str(self._name), + ) + + @property + def project_name(self) -> NormalizedName: + return self._name + + @property + def name(self) -> str: + return self._name + + def format_for_error(self) -> str: + return str(self) + + def get_candidate_lookup(self) -> CandidateLookup: + return None, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + return False diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py new file mode 100644 index 0000000..12f9670 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py @@ -0,0 +1,251 @@ +import functools +import logging +import os +from typing import TYPE_CHECKING, Dict, List, Optional, Set, Tuple, cast + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.resolvelib import BaseReporter, ResolutionImpossible +from pip._vendor.resolvelib import Resolver as RLResolver +from pip._vendor.resolvelib.structs import DirectedGraph + +from pip._internal.cache import WheelCache +from pip._internal.index.package_finder import PackageFinder +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_set import RequirementSet +from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider +from pip._internal.resolution.resolvelib.provider import PipProvider +from pip._internal.resolution.resolvelib.reporter import ( + PipDebuggingReporter, + PipReporter, +) + +from .base import Candidate, Requirement +from .factory import Factory + +if TYPE_CHECKING: + from pip._vendor.resolvelib.resolvers import Result as RLResult + + Result = RLResult[Requirement, Candidate, str] + + +logger = logging.getLogger(__name__) + + +class Resolver(BaseResolver): + _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} + + def __init__( + self, + preparer: RequirementPreparer, + finder: PackageFinder, + wheel_cache: Optional[WheelCache], + make_install_req: InstallRequirementProvider, + use_user_site: bool, + ignore_dependencies: bool, + ignore_installed: bool, + ignore_requires_python: bool, + force_reinstall: bool, + upgrade_strategy: str, + py_version_info: Optional[Tuple[int, ...]] = None, + ): + super().__init__() + assert upgrade_strategy in self._allowed_strategies + + self.factory = Factory( + finder=finder, + preparer=preparer, + make_install_req=make_install_req, + wheel_cache=wheel_cache, + use_user_site=use_user_site, + force_reinstall=force_reinstall, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + py_version_info=py_version_info, + ) + self.ignore_dependencies = ignore_dependencies + self.upgrade_strategy = upgrade_strategy + self._result: Optional[Result] = None + + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + collected = self.factory.collect_root_requirements(root_reqs) + provider = PipProvider( + factory=self.factory, + constraints=collected.constraints, + ignore_dependencies=self.ignore_dependencies, + upgrade_strategy=self.upgrade_strategy, + user_requested=collected.user_requested, + ) + if "PIP_RESOLVER_DEBUG" in os.environ: + reporter: BaseReporter = PipDebuggingReporter() + else: + reporter = PipReporter() + resolver: RLResolver[Requirement, Candidate, str] = RLResolver( + provider, + reporter, + ) + + try: + try_to_avoid_resolution_too_deep = 2000000 + result = self._result = resolver.resolve( + collected.requirements, max_rounds=try_to_avoid_resolution_too_deep + ) + + except ResolutionImpossible as e: + error = self.factory.get_installation_error( + cast("ResolutionImpossible[Requirement, Candidate]", e), + collected.constraints, + ) + raise error from e + + req_set = RequirementSet(check_supported_wheels=check_supported_wheels) + for candidate in result.mapping.values(): + ireq = candidate.get_install_requirement() + if ireq is None: + continue + + # Check if there is already an installation under the same name, + # and set a flag for later stages to uninstall it, if needed. + installed_dist = self.factory.get_dist_to_uninstall(candidate) + if installed_dist is None: + # There is no existing installation -- nothing to uninstall. + ireq.should_reinstall = False + elif self.factory.force_reinstall: + # The --force-reinstall flag is set -- reinstall. + ireq.should_reinstall = True + elif installed_dist.version != candidate.version: + # The installation is different in version -- reinstall. + ireq.should_reinstall = True + elif candidate.is_editable or installed_dist.editable: + # The incoming distribution is editable, or different in + # editable-ness to installation -- reinstall. + ireq.should_reinstall = True + elif candidate.source_link and candidate.source_link.is_file: + # The incoming distribution is under file:// + if candidate.source_link.is_wheel: + # is a local wheel -- do nothing. + logger.info( + "%s is already installed with the same version as the " + "provided wheel. Use --force-reinstall to force an " + "installation of the wheel.", + ireq.name, + ) + continue + + # is a local sdist or path -- reinstall + ireq.should_reinstall = True + else: + continue + + link = candidate.source_link + if link and link.is_yanked: + # The reason can contain non-ASCII characters, Unicode + # is required for Python 2. + msg = ( + "The candidate selected for download or install is a " + "yanked version: {name!r} candidate (version {version} " + "at {link})\nReason for being yanked: {reason}" + ).format( + name=candidate.name, + version=candidate.version, + link=link, + reason=link.yanked_reason or "", + ) + logger.warning(msg) + + req_set.add_named_requirement(ireq) + + reqs = req_set.all_requirements + self.factory.preparer.prepare_linked_requirements_more(reqs) + return req_set + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + """Get order for installation of requirements in RequirementSet. + + The returned list contains a requirement before another that depends on + it. This helps ensure that the environment is kept consistent as they + get installed one-by-one. + + The current implementation creates a topological ordering of the + dependency graph, while breaking any cycles in the graph at arbitrary + points. We make no guarantees about where the cycle would be broken, + other than they would be broken. + """ + assert self._result is not None, "must call resolve() first" + + graph = self._result.graph + weights = get_topological_weights( + graph, + expected_node_count=len(self._result.mapping) + 1, + ) + + sorted_items = sorted( + req_set.requirements.items(), + key=functools.partial(_req_set_item_sorter, weights=weights), + reverse=True, + ) + return [ireq for _, ireq in sorted_items] + + +def get_topological_weights( + graph: "DirectedGraph[Optional[str]]", expected_node_count: int +) -> Dict[Optional[str], int]: + """Assign weights to each node based on how "deep" they are. + + This implementation may change at any point in the future without prior + notice. + + We take the length for the longest path to any node from root, ignoring any + paths that contain a single node twice (i.e. cycles). This is done through + a depth-first search through the graph, while keeping track of the path to + the node. + + Cycles in the graph result would result in node being revisited while also + being it's own path. In this case, take no action. This helps ensure we + don't get stuck in a cycle. + + When assigning weight, the longer path (i.e. larger length) is preferred. + """ + path: Set[Optional[str]] = set() + weights: Dict[Optional[str], int] = {} + + def visit(node: Optional[str]) -> None: + if node in path: + # We hit a cycle, so we'll break it here. + return + + # Time to visit the children! + path.add(node) + for child in graph.iter_children(node): + visit(child) + path.remove(node) + + last_known_parent_count = weights.get(node, 0) + weights[node] = max(last_known_parent_count, len(path)) + + # `None` is guaranteed to be the root node by resolvelib. + visit(None) + + # Sanity checks + assert weights[None] == 0 + assert len(weights) == expected_node_count + + return weights + + +def _req_set_item_sorter( + item: Tuple[str, InstallRequirement], + weights: Dict[Optional[str], int], +) -> Tuple[int, str]: + """Key function used to sort install requirements for installation. + + Based on the "weight" mapping calculated in ``get_installation_order()``. + The canonical package name is returned as the second member as a tie- + breaker to ensure the result is predictable, which is useful in tests. + """ + name = canonicalize_name(item[0]) + return weights[name], name diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/self_outdated_check.py b/.venv/lib/python3.9/site-packages/pip/_internal/self_outdated_check.py new file mode 100644 index 0000000..09a6e91 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/self_outdated_check.py @@ -0,0 +1,212 @@ +import datetime +import hashlib +import json +import logging +import optparse +import os.path +import sys +from typing import Any, Dict, Optional + +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import get_default_environment +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.network.session import PipSession +from pip._internal.utils.filesystem import adjacent_tmp_file, check_path_owner, replace +from pip._internal.utils.misc import ensure_dir + +SELFCHECK_DATE_FMT = "%Y-%m-%dT%H:%M:%SZ" + + +logger = logging.getLogger(__name__) + + +def _get_statefile_name(key: str) -> str: + key_bytes = key.encode() + name = hashlib.sha224(key_bytes).hexdigest() + return name + + +class SelfCheckState: + def __init__(self, cache_dir: str) -> None: + self.state: Dict[str, Any] = {} + self.statefile_path = None + + # Try to load the existing state + if cache_dir: + self.statefile_path = os.path.join( + cache_dir, "selfcheck", _get_statefile_name(self.key) + ) + try: + with open(self.statefile_path, encoding="utf-8") as statefile: + self.state = json.load(statefile) + except (OSError, ValueError, KeyError): + # Explicitly suppressing exceptions, since we don't want to + # error out if the cache file is invalid. + pass + + @property + def key(self) -> str: + return sys.prefix + + def save(self, pypi_version: str, current_time: datetime.datetime) -> None: + # If we do not have a path to cache in, don't bother saving. + if not self.statefile_path: + return + + # Check to make sure that we own the directory + if not check_path_owner(os.path.dirname(self.statefile_path)): + return + + # Now that we've ensured the directory is owned by this user, we'll go + # ahead and make sure that all our directories are created. + ensure_dir(os.path.dirname(self.statefile_path)) + + state = { + # Include the key so it's easy to tell which pip wrote the + # file. + "key": self.key, + "last_check": current_time.strftime(SELFCHECK_DATE_FMT), + "pypi_version": pypi_version, + } + + text = json.dumps(state, sort_keys=True, separators=(",", ":")) + + with adjacent_tmp_file(self.statefile_path) as f: + f.write(text.encode()) + + try: + # Since we have a prefix-specific state file, we can just + # overwrite whatever is there, no need to check. + replace(f.name, self.statefile_path) + except OSError: + # Best effort. + pass + + +def was_installed_by_pip(pkg: str) -> bool: + """Checks whether pkg was installed by pip + + This is used not to display the upgrade message when pip is in fact + installed by system package manager, such as dnf on Fedora. + """ + dist = get_default_environment().get_distribution(pkg) + return dist is not None and "pip" == dist.installer + + +def pip_self_version_check_fetch(session: PipSession, options: optparse.Values) -> Optional[str]: + """Check for an update for pip and return the remote version string. + + Limit the frequency of checks to once per week. State is stored either in + the active virtualenv or in the user's USER_CACHE_DIR keyed off the prefix + of the pip script path. + + This function performs network access and imports modules, so it must run + BEFORE command execution to prevent malicious packages from overwriting + imported modules. + """ + installed_dist = get_default_environment().get_distribution("pip") + if not installed_dist: + return None + + pip_version = installed_dist.version + pypi_version = None + + try: + state = SelfCheckState(cache_dir=options.cache_dir) + + current_time = datetime.datetime.utcnow() + # Determine if we need to refresh the state + if "last_check" in state.state and "pypi_version" in state.state: + last_check = datetime.datetime.strptime( + state.state["last_check"], SELFCHECK_DATE_FMT + ) + if (current_time - last_check).total_seconds() < 7 * 24 * 60 * 60: + pypi_version = state.state["pypi_version"] + + # Refresh the version if we need to or just see if we need to warn + if pypi_version is None: + # Lets use PackageFinder to see what the latest pip version is + link_collector = LinkCollector.create( + session, + options=options, + suppress_no_index=True, + ) + + # Pass allow_yanked=False so we don't suggest upgrading to a + # yanked version. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=False, # Explicitly set to False + ) + + finder = PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + ) + best_candidate = finder.find_best_candidate("pip").best_candidate + if best_candidate is None: + return None + pypi_version = str(best_candidate.version) + + # save that we've performed a check + state.save(pypi_version, current_time) + except Exception: + logger.debug( + "There was an error checking the latest version of pip", + exc_info=True, + ) + return None + + return pypi_version + + +def pip_self_version_check_emit(remote_version: Optional[str]) -> None: + """Emit a warning if pip is out of date. + + This function only uses data fetched earlier and does no network access. + It can safely run after command execution without risk of importing + modules that may have been modified by malicious packages. + """ + if remote_version is None: + return + + installed_dist = get_default_environment().get_distribution("pip") + if not installed_dist: + return + + pip_version = installed_dist.version + + try: + remote_version_parsed = parse_version(remote_version) + + local_version_is_older = ( + pip_version < remote_version_parsed + and pip_version.base_version != remote_version_parsed.base_version + and was_installed_by_pip("pip") + ) + + # Determine if our pypi_version is older + if not local_version_is_older: + return + + # We cannot tell how the current pip is available in the current + # command context, so be pragmatic here and suggest the command + # that's always available. This does not accommodate spaces in + # `sys.executable`. + pip_cmd = f"{sys.executable} -m pip" + logger.warning( + "You are using pip version %s; however, version %s is " + "available.\nYou should consider upgrading via the " + "'%s install --upgrade pip' command.", + pip_version, + remote_version, + pip_cmd, + ) + except Exception: + logger.debug( + "There was an error checking the latest version of pip", + exc_info=True, + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d0f829ec647c6bbc757bd2254fbf6db9c06066d GIT binary patch literal 207 zcmYk0F$%&!5Jfj&Awmvf;Z9*Ch^XeL>+LuNN2SFrXHUdh%Y*jc%$^uvF{ zeE9Hfo-b6=?XK(Tz9#%DOV2)8W(lP_s%3U~sBVgX_ynl@6@j=BiOjwWP>@uEtq}u6 zCPVFDyV9J=p((6j3A)F&2S)|)7%Jbc^#+6juGpR$dqDvvhExpLwbnrlW!8 Re9pI5Uq*+!Y0W!XeF0EbIj{f# literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/_log.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/_log.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3deed75f8e75ecc24d24f98dfa9b1f7deb093ed0 GIT binary patch literal 1532 zcmZuxzi-<{6uu)VQKqfLNShYu(i=LMfI|+Q3KT(V#|;V?GGMnsp@pGz&k}8lWbckP zBxp;f4n>EK9^#@)`zLYjl)s=rr@nWTTp92I_jq@__v?G#yR_dA7>=KRi!T0g8T*?y zo5RD+3!M6U6p{^@@WU0thFg;*#bmfP9|9~34)h!o)w_Q*#5HTpu{*& zwHD{45@rhG4c!J6U4a^v8up?n3g3tsm}x1aAjpc$BrAh^p_rj1F#<78^Bg3u&}wu`R3^0<^@ju z1qxt@7aKZ~4_)w}10BS{z44?cJBUNq;?QmSuiHdgXNwJM za=3y#2n3GTN2doTXGbE_n4Y-?D8zSzZ%;5uDPA5O{O~HW*9M{2xHCOzyi`qe)4jZI zzY0vPim`(cuLqT%<_S*y8Hy#lV1_UG#92DO^HY|wrTYi}g<~PP#RWrZ{8b?6$J3CX zt1fCPpF|JEpG@`f^KTVT%NfL3b*Xh-Ri!fVDAUvH^a8-db(JMqfuYIdJj)>&r5a?6 z#V)SmJR8N;9P3!&Ng~TJ9=qBoMHUs&!REIi9?=<5 zVi%_-KzrQl*c0TEN5<3^o{l++^`JHB9OBfZXb^ehymy!EmcOOe;fn)Ij2h;Dj_!+5 zZ3Gm$R!HWuR^ncMs}@3rwABU~ddfxPHkig=*=x4$NFQ?bl>Sr6T4A&K6t_f(7Dh+W z9)`W2`M8T;Phpa2tla~V6N}dj$1sH@KK3~= z|7=>;IW_eI?M)4jZC#4Hl=i}XtCd9%iL4Mvndpu(QG!c+ITCwCZDYuTu%n1F%_F^j z3J&QdYBAeMr97r498ekQ{svYSH3F>J*?f;a#}mr~)(yBKSi)`f5vf`~T{Ew+sx6^x rb;xYfJ+{w~b*nz6+l0DRf6!&`>z209iAs70h3EJ9uIIT=g5A!4${~oD literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eba6da68185968ee65c5111b00390afe0d9597a7 GIT binary patch literal 1638 zcmZ8hKX2nU6cmKDcN59wVCbRdc@Lhme~2NWo9D2f)yRAgx;F9IVnHXT_K9;xIU zC561wB zA8?u$7a1%9Nn}`%1@U{h2yv$c-LM5C?u-?K&2TXyfr?Zl2k%2Ul%scSF_s6&iIF#c zPh~9k-VGLe@{FT-Dgx-wOAxi;cBS}* zDrE&qa#7b(gW;P>HihE0;->NvplkyrzYs;E3>To{yxP>l>QfXutH2B84S*^wuXWvf zI2A_CV|1ywE-fDEs^sV%?Si@lZ56-MX^dE+wDMJ7X9o&sU;cDmjn;M(~5r3U`J70%*=Ib4V2V_DRWrUGw==qP3aVXs*^A!>f8A;Aj)P`-)lHU;xOVquAEq%RRFK74lo_VtG3Euz%Qy1ET zyNBJ#*)yu%!GU;cz-Q`deGi`4FkhpxahN-Jo?&%kGNizfPRNP-rrjvZWR+)`cjRO2 zhIZ>7C2-hvdw9v_S^szfMNS_*H5UAZ>ey*j6@3X^MZEO~f%&5O?u*{^FYfp5oiXlW SvM3@EnS>L1zz(N}C+`2hxw#)xB1Bp&1NCu0)+(KwnT9{rBTvB0-AQNP3EhDdn)3iBGT{}hk+L{seZ z#w)@Tz6bNx0`cY_c-$7zW#{${zJG^H?PcCt5~T&XJmBpm8NbQN5Oq7(-wbUvn^C)9 zmhyZy6WY+cxEDoX>G{SkR6(ymk*mT`R&ZKMW@k#TnmjjF=ab5MRqt;|1@*g;Yt4nt zN@f>Xm2VprF~R=SvatA|EFNT7cS-Fyhcbq9bz65XH? z@*&5_;tj>fe;24AhaR{{l2vqrG1_8CD(-6xmfyk=tIA3@wzUGbN>3 zQ?psgyjYs!p!JpuYfE#Srt{n`s!0#<0Q^c8z$z;#)2ByI-USj)E92Rj=_f~rA0Hkb z?fjohHWeJWof|rM#pcNlpda zq^+2g8#-5%t=Z;2n`6y#13m`BK&)drT8JVfP2qg@kR4T;PFeBT(uts2FaX16>Y9VB zKlo~Jb~YGYr~k9~gpP7415mq)@el%L`oX2?wgN$zwb~J7T&zk_xMYyMI2rWMF0^Nj ztIdpM*42#-Rau)#WrS{fRXsNzco&Bqjr$C`(N0Td+$Dj_aBe7p-LMa)+869Q(9Ho1 zsMW-80VP{ei*%w64%%m)eXhRay=$z^JlA685~k-R(?+;xofj^e%G{B{b|1M$mT@)B zGS`r5KF^D}_P$+YHt>9889)!ZJ$PcyKrOUOvaDb$0gH8S04woCDH&=4tN@b;>MF#d zLoCU|`{kODu(oCm^m4IxqGLGfwH$rHYoDk~K3yqZN%71VmU#q293>b&l0?m@(>|a{ F{4eKBtgHY4 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aa8a1e3370d7d12b89f53085de6aed9c8fd75db0 GIT binary patch literal 4078 zcmb_f&2JmW72la%E?1-^%d)=w(PSYQsF~WNZMm*%7;f6QO`+Kt_MaJo=U1A?+-psst^FDrW)}NcJ z8F>Eqm*x|;Y#4u|&g4@?=Y72Cd(1F|(KZAVyvN!M|7MSeX4?#{wiQ;|6-HxL&kn2Y zYUs3`aHc&I*4nkO-mZtU?b&dyJr~Zm=b0hd;R#VWV(kT4ktc=S<);m~D5|fxaKy|D zt9?o?N>eVLHbf1)x|juTX^J-|=D}N@;++r+;H^ljTnm}wmN*GHi{ccW|$I;xO^E;Bn9kvVHfVzm+y?ugUbA4YRQB z1!-0|zfH0rj{IIxdDu^Svf&hS_xH2yIQm4Y6eER+b;XI!P*hKP8RQhRokY(X_O?io zpi}l1f+&+JQ4-XP{7@FBCOOZBg6BfN<0U;m>&7ZfpD$l%{;1(ycqEP~7|jMRW``@h zAnL}24Y_?4br3A$huRcIAK*>bKmf4g+5sY6*Y;{GzoThq4tUJ89Zal2~P}$3eQi>pzh)YxR==>g@VTc-;U- zdF-cBw3^Rk^sLnj9=A&CY&3t`N`p*ZO8m}_za`UF5+p4wgk@m!RzC}RX=`L#?Ivx) zX0l%_PoCP#VlRqCoFRdXl=L^aS^=HX(ahculDy&Sx!Xv^~;TSjhtdTzjkacI0Wa+X2l0fdr6j`*MXQ;UQ=uY5l6J|7fS1Vo(f zd7C(tO+n#jh1ru4y1aQ=twP|}tgtAew2KrOqp02LA&|+2x8J3G>CASOzj?myO$Au< zRxj@Oz4SI3qXmshG3U{iWI_+QQdF>MXS=YsRNPO}!i1~TEF?CndVl4jO_QF)3V%U_ zzq;Sa`hHK#DC)H5D8g+LE7MZhb68nwJU^}284RS0AO@>3i!I<+t2+O1>NZmsz@0L2 z1q?c&j`SyJXm7x;hlu$j_Q))~nRCH+xVo2H!hB|^F1!uk%*|CJw^k7Y49))!Qi(=#p?wef;0 z@Z?P5t1KYQDQrJUWF#7u(zHJ$N%hhbN_K<2!qJ^nCPQ}G?}A;LlXA2)=UK1QPqR3L zRfmclqe>IAhPJg~SI2hPB3oikWs#|C7<>Dw{a?4;#GI7i+d#rwaE!$rxQMeAxN4Rwav$7O9RkVQPNITGP@w%xJ7#bbkd^IN z>Ouww2`YKOTeN__x&Q*!;l%M+7b#6{MM->3;uH}WmEcINQ=6$f)Yh4HoNlLdzzwVa zs77I4YJ(VTmYw73S7@QY&Ici`6rqeV+(P206sHRn`Fr$Gn_hhu0z4|(eM8MtzzqOY zx_2&P=t29h!1>DfE8Tz?DutrUrK*FV{UNo#PwCakESb2Bbg>}S*HhDBHe7%l`G{my zN-^5m799g+7UjS61V!rTp?XK9R%`zS8b}aJut9|^-)CyA^vs|F%M)nufer9L6~tM1 zay2s#;Hw=zsODAmAh!;!tb%fD60H15Crq@YxhS}rYn5Eht74{&nUxWbK-&KV#(bdf zNUrZvsdMA5JG{b3;nMZZMRj$h-`RGD4s_E*c7kqz@gS7%^^L3R7xj7)3dUv}$)@`d^F~|m2ECs9Sh_y$ zSs^JHkF<5;zH)#5i@VK91x6TmbExzF#3@H(skKhljEwRql4R zP8Z#NDz*Oln&77UX(mH=BymawiihLv>CAEumjHJ<-2ZnSCIVHGFs@mPstPZR(D zyEP=1J8u@elTcnyXTSP2!d~Md#_AJFPY$SiH0d|vnT`etoopKJ$~^uVjZ;dg86uQe z4d*x&)m`G!cE!v%qK_pPwIKC|A12?0tvM=_<24CHq_;qfMT=X=dxzJ!!{-T(0mJ(D zFYAr%O!lnmRL@cOvA)4KH&N&DG|m=P&l7RS^9rs|GP3;y`Jo8glu3keqkRUS08LyG zBN3}+`CWinO^QrKkgfQbFH$pw6wfbcTX-j#v2Zh=l`Cq8%+Pc L-R<~m1gs$jC6=0y%V9puV%bnCqaxgHQnXzuBu;ES5>sO)->?^ z=`X?I53d-;KWVc3tYC5nulfhb=LR>r24~z%SeI2_vuomOCDz#P+GD5djNPs~_PXA< z(QPnVYbPt?X17_5on&>~>aJnzcCUP5aE~|64c-vzXI6KEo6%Kai)(yk&){1ET(LPY z-!X(I)r zc3*ww@@sta-0gmgn~#k4_T->>*B@uRNQAFPk@n+po`|tXweoeAC2=~$*B5Ej!wM0p z6aP4pDcH)7dRd`;E^;aQk&d%e1@`cssH)AA=hwZMP43vM%h?& z;{1tHMV@C;cY3iJ9Y=>k=uVNxVVnXA9uDF}guO@!-U*IGdelkcUMD}%qb&V#@UxDJ zwb;$0{*!1ZR40$~4mN5bfl8;)aiTg)2nP9yr0Clq^GuKitLEi)n8|n;V^gR`+40;5 zZLjpkLMa?wHsAv>%p_1JjmVcokGgIzs>$%O@3pR77?sI2qykPkM+S_}$ zK|VT|d>beP3lxGS`&HYO>yTeIW1!yaCy`P$0A7*}VgImP84CStjD;+{1q_k^lUIpc zBeF?ki^w(zaHuw1dROAw8*u&-me;{i#5NiY)?iz#X*F5Pl<$JmW^xCgw<6I2v%>5L z7--`V=|R&qwEk={LtDVkAPf)f$kL8BLZAu+?1R$dVh|OHevHs}qdXTWZ@XnCLM3Fqg9wfP@HN!0)`%niH2TqeJZF)mGO zAR@$s2nR_tEFFSgKpjL%q_VVJl_F1~ew7tUZT=BL_s=&2?C0Y7^ z)IyGrD5_GV>?5&I<~7sFm=nJrrDRbpc<%Nkp|E$Jvi)q}<4XHH6Q~+*8x4%eE?iuo zHqMR&_v5ramJt0ciWN3O8e%<@eq5dQzViEpl(2pw251i94k!;PSdO)VvNzyg*g@j! zqnCsFQtf-$cpRmCmvW&`@lMKLi&9`JQTs?gGVvKuX6C|?8AB$7N(h>WLO~md3h8(nB2JQ=NVL>W??C7018M8 zCij1r6&GPugH8^31N2#Sn}Bn*Vgc|%v0!p%|I$(lQe2opR={M$_DJho-Rg9Pu^tt@ z0Nz0@&ZDaERt`~})7eYr_o<7xc#szi8?U05(&W_m!_D8DGd4q7swyBQB&vj%KSw2e z!M-q<@fH3m$y?AO6k%z zUAFORa$}L0c(9jb{U}klgT?BvsViukRjn(VNb~(Ci8vBT+mlqm%k}xCxoD@#ouy_f z{LQ0JLbO)DeDK@SKFpBCso9XdQYIrtlnDQss zg@)mveZBO;kZ1iclvJl{ja_|`J|*^(WF(4 zW{sDHHIfRJ{D{bpKuYh+x@}x4yz5~YrD>+?J{OIn1)r7{I=Q+GQzfm`UGno~L2m5T x4d-nNI<*Jlq5wD8yJibN+uE>OD~P9;CTpTB0~k%<)OfXg|ymuChuJG1ktWIhWZp-<Nm^;yFEJaPMO;`KeNXK^L*`@WTVTuo~I znw8zSo;3OmN+g#}*%aO(6BXg#=lvyEb5T8XL`~FTy)0IwFR5%^B(epTr9&>3MeDxX zUlEPFq_g@DWJ5Z%^uNkYl%-+Z;br|3H5f({`FXmTmDNupB?smk6_*tdt*-LzK%)S0 z{L3iahIc&=%`h-oFjg@v*<_$QtgHzejLMRyVIoUUNi$aIz`^g%2ZuMpa|<5*Crkx7 zBFBW1f(p7$rp^|bGD8b8atzyd)Q!Rs&JoA;$c5RnQstO^0KVyGb59>Ua9;z zJt){wZ6+TB`01s&cYWW{#TVo!`a(oQ9iqQr5YbpC7*R0w2YjCk_o!L0W600$?f{tH z-ql-KI+4n>!}b|$ZIi(=kMg#X-;V*0M5d;#jf&E(?jCF3Z14H^rtjUG-n=*6YwGdF z46{t_UO%CiPv|?HrP7~-aU?<`%UYzPRGTmz$dX5J2MUoZJrI)6s46ZP!d)F?NfMbL z5{jXc4?{gHy)e&ZDwK<=#^T3HKFXrB!xfgXs-wNWkZ@VuRN)q;u74-$WiX%o*c)bv z>_z#u*5f?Sl<93mdbksgq%^&89tBal6DkpGMzIVwLM=tFJCW(67e^bteAf)K^!@Hf zJslZ&B@YMN;g-}r0ICOpMk*-A-q=L3?me%fU?}5UD&5U@%eNQQp$>AHU%PfSm@Ads zlu80hh=_g*CgS+ir<^vZM_W&Q)}S?5x11KdK?9ams$K=Zj#JijHdX_Pn<*eO8Bp9{ zK2S#dY`LBX!4NE>eQF#*g>yg!JHT?_cfLkqNfDWFBbFUUy#&r`1*Q&DSoF%r3HRzy z^%}|u>}+}kq;h@Xh;YNf>0WIxY78dSf#m%s3N?3b19^E2gtVKL=TQtI4R8iKLn-56 z5DtcNb|Nf_(}7oBfybWcFA$*IiHZ$9LfSx)Pg%kAB})%xiRT{E@7R=2-Kkd~Azl5U zwYt+vx>`_ud+zHM6rwApQgGuJY*Z~Og)8U*5~>DRvAan2`Y}-t!H0}o)7Zza&uxNC zeONW8)uO6?E2@u(rQ*^f@++JA^N8ib7yJO*!&wxd@7@8B@$%IgOyw%pveZV3K*}K=#8rp$%xOWhO zPdGNiat$>*5!CtE1gG>V8|ZtQ!>kOD!ZXU9TcqUkm}N*t{t#&cJ;N5Imn`A=9y8ApMd)66v2*s=kUi{x6%LlCP^1_RD+grMDN80kRTzS!a zcKHl?wQUTRWF_Cove+iRfSAS3Qr7<%k{!qL2DS-}?V;gZ0I1-{R@YlTdFmicPo4pX Cnj{?c^lD*gi1y>YVHE#O)6{QSP=eVT1;Z4!hx?*@}E5h4Hik99yE`4f+M zf`}7NYci!nNg7ipR|q?i}jGdkyDXLK@5JdjE)-@3A?vY^A-u)E)!l zpv_9sUrK6mwBlartD4y#NLmfwmzYWmW!LW5SSGRzKGscRuWoZuYd~LShP7aNWL%=b zwpv!ySMd^JeE0C&!($#I66BmN$N_o&+j%hGwPZpU!H9DDmOcy4!}I7LBCkip2D4u& z@y}E8BK?^x=!b9-O`?z3@)zlXVzYwzzmJ(VkSX1q3JyHOAlfNNYi?y1kq9};n9Q1^ z2~;+-V`j54Gf2Q@hA?He8n4?8Haq@ZIm=pkBAYY0@`)5=Vk8?4e9)=oRHv9w9=n~A zFXyEkb@Snpi?cp5pTiyBHlRJ<6Rf;=s-$%UHPaU*{j+%Al;u&-Ek z!bV^UB~*ci7PMq_(G7XA3g0(!pl0r-^0i&d%M11}DzlAXo@-zUyHs+!LyDRpwU!uz@=@89aVrL3FrTva;KQCA(Trtr|qy1mOg~sachOR7Y b=tigf`?TS04S)EtGv1(2`*b@Ms#dB*NqI?V--T8PK}(T9=pnV`5>%{Byh%3C*)_ZC z7ZRnXazLE9!Qs6le-Ia6Iq@&_fS6e)c`t}Vg(Z)7X4m7HZ{{1by}gD9*U!Inr@z)b z?@v@NUI8edz-@j4k$4G7y?*&5ed2V#@59qigIU-Q3GM}HWft|LS+!qvdYIN`^?rTU z=r=&GB+=OKU*b*POsc>6NiC`W820x-4|($~&)FJD1#GPy+odD|+vS8j@!HM5AR6ze zO^VvrnH5U1wCxvrMpzzaY4LW z0_|X+6u)>t2MfxwEL}jZ&V`+DYVc)~4~!Ky#~>*)G&>&0nj4ktAvd=S92#*KH67)0 zh^M;F!I853KAm$qWKt?i0aaWoDTXW+%k?`0K4iEfES-RJMiVg_am}TrsTzx6>1)~g z_Pb9zeb!li(7D%r_Wn!KS=P510Cc|QMF5euiLL`Qzk9j`kC(PLQ8V5X*|9NsmMLv} z17Rj}Hs##*@=U}+&Y4c)kw|$wV1_5X?g>=4mx@6zTiA(`huwQUY=+LJL3)|Udhnv< z8v3UPz@(rpIb7brg83l4NbiH(scHy@ZB_4sV!f63f;=adO#RQiXYW4u zZ7}su!d}z&_@WL8tkQQlz+<^z7*}}5~W$Xbo-V0CPUXfE`{WC&58@%w$0~_iG z&K9CgUI+cdbN#~UiUSznbnpf?npRJ1t6=2=yrI+TEAXL@R^b}nqY_?r4XWr6e(dN; zkt3L@!xfcnOHv277-3)YAB3^yfGRkl=fVKlj+ErxhI924j2vimNX?K-riC*1-Nv0Z zMcN1;9X%g4ZVMQ0^#XZ35;DOf*r45So;-RSKl$S6qXUerG;YV5d+~0&^e0uPoL8^r zdDqF|+R1{O|L5gGc;_*15_>OE@)nXGdKeO0hq;}SC1{^RbKkr}86{zdJh fnM(4Me~ce8m^KDpgEaQZe&iGX?=af0Uv2&ag7!^G literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d9d5e0cafec899c9ef5dcc8ef92fd51e34f0faa GIT binary patch literal 1316 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 N9%Eyo9sZG)o%XF` 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/six.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/six.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20969ac636bca8f09cd6dced30d616bdc7756085 GIT binary patch literal 27524 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..68b5250e7ffa820bb1f86c650288215594ee7952 GIT binary patch literal 1838 zcma)7OOM+&5GEyAmX&qZN%}w!Ep%uL7)YeF%_T)pY_kc90EJN?1&aDY$RfSwt}Lk} z?Z6A4vU}JY>r^+yC4J^QV7JsKrYG9Z9*7&4Ri#} z133422f&AQ=W(jVF=Ef~n)Sdng?S89V+swqATQzK=VV0(D_Y+fl;+twI>DbRRjQR! zds^h<+C3AC6;b%Vck^UYPDLWCGp%P;RVtH=q@KJ;PlYhatddL?FH*(XSmuI_01Z## zxhUpIE=NhVFq5+QE`FG3X~exM&Cb#jp_58h2?Hx$s>EhKD+{B_yxGLnqIOS&K>*r@ zMbEpNKx5EkE~wT6*Z&f%!Uj<-5Gz*&xbA?cTk|xZ2^(M|Zs4h_h3Ud#k4w<}-~4V} zsx~^rAarHeR4i>R-f>-xx6W292tt>CKxB~|3Xb!ht ztZvY6*8yWiIu(r7A!E~$&!B{?K49#RS(-N*bpUs$LllTv-9oW-W>=U!g;l@|YZQSK zxcJ!93=aM=(DVqVjzMf1KI9H}FDbM+0-xd#e$F@9$mcLPVo&d9K%MU)N z2{y|y-uwv&?D-{ObV;k55?9V9b$wT%Y3=1e$lBwnN&AjXWZjX4Gz{6h6Q=DC$d=Wy z&(H&wg3y4T-`?Pf*9ITpLSu{TCM=fZl)MI1oV;A=fb6==zRn4pZm~h`1}rYH&>WV3$XTQ z6(mb2x|e(hL6Dx3wlL{&;v4f3Qq@pziuL+z;KU@^E)f!rJn_tXex7;hbUGopK7Ec?-#kKow#jgXm^{aAe_*(p zL%fRB)Sx8uIqaXmTWqb;x1_2phM z=Hr3x^^WVyu*U}cK<*b4J{j=8?)ZT`=&>z7gosbEhuhf0Vg0@5!4aSKc<#L>^U*Jy zkj!Z_u8dqMQJ&&CdU1Y!_6n?4rG+*ZHo4GACY6PJK5HW6O0kG_YAhHukTeG`3$2Vh zF-DmtM7+bAadsxMwS;C*cYhvhq2uHd%3PV)z=sN~vnZ6U)AwNGUicW1{&C}@IKMZ% z^e=@!9HRf1telW0XnVagyl^Ae!e~M%GL=KK@8F|LT&?kVnikN{5|TxV_OTd;zhr11)3sZw@;H9NtZ?w? z#sr4#v8_ccOS2_ps&qz4mZ?IgF4lDuJ}p#UNq9!F7yAH%M`tvmw|oy{L=Q*X-1}P( GvHk~}64BiN literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d089b323a2161a3d2bbd4b7e16b3a2622f47784 GIT binary patch literal 7779 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 Gf`0)jdmH-z literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5fe4a6e6cd3c1f039767fb86e4c197e469abc88d GIT binary patch literal 4719 zcmb7I%a0>R9q#IG+dZDgPBxSGgG#~x9_`rdBZLgAXv5~Qf$S{F%qrkZtL-X}d#By) zRF!9Tj7N$zfdf)jh_-!FbyzxR&|j`Me_%>H~-ZXoH;kqJkz#Ay~!)?}!=iQDsheMt28U9`^`W+CQ73GDQhl>iU>Y+n$>q5u^_6SI-)8UPrT+5>Wg9t^(DE4 z`ZDUvVg>aTTVFx_f>=d;)z&Wvw&T<;KE$4!?V6WYJDKW5Mnp#D3;jrGX^TtKVrYgn zHxH=Q#61k6T*$;k!)Ml`OMG4M^%h_M317dpwSIeReTTn$d$;Y<{No>$DcwZUYsf~d zUp3AHcIq6n5gR#AIXli5Y`f;F5_@m zdeHA@$~0QB?jA<>q%@5|KMv#cFj6Ay#EA@B5f0R-AIS8ek;JV=|HyQ+^lJU}hK`Ng z>__eWXiw@!Kkhd|j1rk@w4-)cwzJfzENOJ*K*id`ZC&pl3i1>+d@z#Tacyi@0toxl&Og65j9$U1q@juLDjQhAw7yw@vC zZ3g{B)>!TeV^=J)C3@rH#3`Z4!mf;jRI6y$*7!`(nr)=HANAcp(qBg=9YSK$6->Cm zmM1*nIn9!&04qVh{C!yQ*2EBB@hu(H9+GTf;pIjzp|Q%xzYnDusFX+iAWCAv zFWKI5aq;9LYMeU|5x%I)Ibr<85)cq{glE<3& zRdx^yDY(fp9wkY3I9W>bB;J?&^5v`3m%GOFw;Bx$O>{k$rc=+)F_bTqf4>_94h#tp2o;Xm*82~yVjlO@M4()=(sT^^-JIQ-$HamEwdcXr?2;=5fqVdvJJyYIgR z^B+b>n#XB783@TWt}Xv)-tQ)x8l%99j`z~IbA%m4W_}xokuDG+c#Hahk0b^fF7Y%o z=VrkGEX}iy9XG{90XD#A0?fjkL`mljyE3qr7~d-W($v0{;q&wMogX-7X1WiQ?B%$D z0`5M@@01<8BUfD?v3tY^?kQu`|}W%U$V(fI@(ig3}qP;`jNVVY}WOpF^sd;88?pcM7{$8@C>dyBNwMx00_oAQzSti5&~lz;5b<}S z1Kh$73m6G0ME5s$_YcpRoNid0#wHBkrx`8hv*8o7o3Bqs%psG!P3b1RMt(COoqLcW z$F2bhoiGvszae~i+iD&C*n@TXH>m6tK%u=A81ZH>@+f57!RWC-s6ZmYnHg|$CiEh^_=di54iMJFnX8~p+~RB0pGS2U9}>S~kZgr?D~+WaunkKE`O^E5Hn%eocVY?{L4k!n+w%sVRU+0Oq% zTwSYQsb8@#K}x}w?Lk5+B*Kl0be2Y~L>3BhEH~Z(DR;8_5Ewe+A_GB_wlH1VjTLz) zLJCSX-H3+F6Y@YN8CvVTY#1j=WYwNbH}CE=Ks~zgk!&???e6}laT9Ebxx#ne{9rl* zCP?njzdD{~Q^^GTlno7q*OrY`nnS7f8;B$(YtttLWM(7PxA2%?@)qn{Z}{Zbpof2=?9Y__1zCIvo_+XNDs7?^|B|v_ zQT8v&eofhLkKe2ioI2ckqzwM}itdq6SF6+T5fh#t?BQ7hTlXXD+#(W8+Mx#Or$>>HH_6?_wx zOd!gm(#U(-IdPB6Badbp`KRn@=eRZn@X+2 zB<|QR_D2TpF1DwMrW{swK|k&q(h|}t(nSPudIkvSD{Kt`oyx=KX8Gh?RG$ME5f+)z zf{P3>jdPX?#{o`lp=X90ZJ;N<{5jGjxUJ2t`9Em)Dose?t&o|PY|k<~|0VSPnC1_V z;arP>AH1ljwT3?-RtpDSLp5KNy(muV0~06Oexw(g$@-O)UJ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9e8dbefd7b9da8fda10c240707ce9b4f91d56b4b GIT binary patch literal 4238 zcmbtX&2JmW6`z@1?k*|n)2d@TZNfUKTc$QC+iLm&#Yk#5P5Pm@k?S@@jqQrFl2+oE zXP0uwE`b7adnk|`iX3|IfdX>Ttw4*Odg>q1!(4mvxrYKd#QnWlk`fi$J#>kAJ3Ak5 z-pB8~c?@P}3k=U6KB?^f#I7y`TD91>um}CVT<07iEkb;H47G>^{YGWW>}3ndvVy__Tp<8%`G!C}IxY~(2RUfNlTUF~p zeFx{a64h>0<4{FGBkG5hPERlTkj>A8^EZ1*7#B%30m8VN2mONn76y&}bLb>2We0r7 zN&ifHyPIr%r!34~?PQ!u-PkCb5!$KePaYj7ip)7a_ze1Ww5f*e%q*6W1f@sme~ zn$cOK1D(Y#Ki~s91%A6sy@qcfK#Gs}z)Gwk#t(Ta{G7B>D{(TxXwT3+WVc|i1I+Gv zX!)c7I%B?z=*>#!ksI+rE@Ej;x@%0jslCtCKT=z|=h<*hdWU@Aq|PmN?|TCmyIoj+ z{*Vpal!O05>PmJf243nxGOqrL6&@tTH}N~qQt-V0dzl|D%0jZVdj_L3viOnM7RGu+<`>!1Pry{$}PFz`QwCh15zEPR1 zFT2{_Y|EZ@cfvr1D%MV%1W7m6?moVvc1t@d3}Si%amWJdOW>~U{Xq3TS})0V&0(Y6F%okK7-WA!pE zFA*WF)mMp-t+I1-aic+)^?a^d$%366zQyUM$K|w+i}>~(yj{ccS9^aOZ&e< zD;CC%@yGhwGDreF2YsSYPDY(;^M98 zVPeJVpG&Ni0r4g(4@8RCJHQDW0B@4({V_Y?14fdp7+Nl@tFJ*mWzanW!^&gQB_;xB z7@)lI_z50GI`s>FqaDcD-~Y{^?5Hak(uKQZ6|&}N0^Sk48jB)Vhg?uM-=P@a*%b_68xMfT2l@& z+ol{sf=?XsPkcz21|}2{QV5dHva~kfr18j*Q}Vi3GA^=_ZZHFPScf9D;fhzuO&jd~ ztErGSQk5lhNL9JS&c3Asm$^ugNM7KGD;#br>O9w`N|(<-*Q1!!9rao zViJ$lX?LC+(OTK&o%k>YPac+M`_QtKfm*YmPsS zwgpJj2~_BhGtCb6$0P>x7680+e2IHvPAu^SWQ?K^$Oc9CtmwaZA{U(IF@-{kC`!9G z(M;y0KvXZ_%gAzM9V=mMd0N8!IPz9LCJvN2ncZJLar|V#)VWjXXa$>qI4b6F5e_UM zZW)LZy^GW70i~XW1Om*DWJJt5*sI zwlE+}`cw_BenEptVe&Vy=wBcW5&;>Z#n8@*QlrfUN_L6Zb+$xrby}yyMHEv)wa%k7 z8TZ#%;*AQIY!>l5%umXf(HK@0MmtbkOm?Hlz;2J~G0f&q?aZ&CR2a^T?MUgCYQN*q z`G3m{gPtRH-ZcW5n9Gg4GKvL&$ zi{KKXYF>Slh{+|!I)qk5_4Fwd=?OTmJ;H2!0fYgZ7bxDXa}@KRFCh9oQTV)=dn#D3 zO@Z})gt_|3^JKXGXOiJLp?!Votf|nZYNo%Guw8_xY8EP+|7^#ek(zue{o?SrC+)cP}0K_0MH&K=&UE*m#NYK+xc8Qv^ epC+>Q)-pTXpz9%C0->4{KT+gGv21y^Xa5%^0IK%@ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35a935712047c38f36a448612d494e414bb6d98f GIT binary patch literal 689 zcmYjPyKWRQ6t(BQ*sL3{wx6s!v>5JI4(qS%I1+l;(plW{T+%l2fGmA6VNBsx9- zN?Jb0Efs%&QgJ<-NOLV8o%@(O=iV7QpC2KxuiqEvzXOE+cxP-WIPc-=7XS<~T%!iB zG4?#DgC<;uz*82pwm@QJNvOIxRCO zeXt1-?=Ru%PXHD()FbuCpc~W%7Voi5BKu?53p`RB%Jjv^&yV30jLCS8h`AUI}eP>5j{T-kPhTtf|)S$?z22)Vyf8 zsXC^2X=RLjL&z@kL<7r16@p>~OGGYiy1q5}#6_AzgLr75BA<^vBp&=~-JBlQa(I>U z)4TLO_6sHl|L%%ZUBiix7h3mHcFK^A(AAcnb8bj4MIqWPRjl|TK;njK&dB1Dx0j?A z8zQeka{FrWnrLD8OG(QMdd4-8LXrZiSf|LK?|yEwRa8o@7V_H7mZJ~omFwpKXnKM( z9E{IhlFjfeP{)wX)79z9TOO-9_`^!n)U#njzGfI~1dk!+vbRmg`kKG0Eyw2C~XYQUD`x(dZ*i%nRy9bsVft& zz=YFdz*1~~{;gk*S}x0sMqx z(dfMk5gJ3?POT9mjNV8y>{QTlwrv!lhI)&`7OZK&?_=kN%lZn)M7;2--KbY2@WzAW lE$sr#r?hT}!Px^4NOm<*%G&Rz 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 F{sp5~T$KO- literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py new file mode 100644 index 0000000..607b945 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py @@ -0,0 +1,146 @@ +import hashlib +import os +from textwrap import dedent + +from ..cache import BaseCache +from ..controller import CacheController + +try: + FileNotFoundError +except NameError: + # py2.X + FileNotFoundError = (IOError, OSError) + + +def _secure_open_write(filename, fmode): + # We only want to write to this file, so open it in write only mode + flags = os.O_WRONLY + + # os.O_CREAT | os.O_EXCL will fail if the file already exists, so we only + # will open *new* files. + # We specify this because we want to ensure that the mode we pass is the + # mode of the file. + flags |= os.O_CREAT | os.O_EXCL + + # Do not follow symlinks to prevent someone from making a symlink that + # we follow and insecurely open a cache file. + if hasattr(os, "O_NOFOLLOW"): + flags |= os.O_NOFOLLOW + + # On Windows we'll mark this file as binary + if hasattr(os, "O_BINARY"): + flags |= os.O_BINARY + + # Before we open our file, we want to delete any existing file that is + # there + try: + os.remove(filename) + except (IOError, OSError): + # The file must not exist already, so we can just skip ahead to opening + pass + + # Open our file, the use of os.O_CREAT | os.O_EXCL will ensure that if a + # race condition happens between the os.remove and this line, that an + # error will be raised. Because we utilize a lockfile this should only + # happen if someone is attempting to attack us. + fd = os.open(filename, flags, fmode) + try: + return os.fdopen(fd, "wb") + + except: + # An error occurred wrapping our FD in a file object + os.close(fd) + raise + + +class FileCache(BaseCache): + + def __init__( + self, + directory, + forever=False, + filemode=0o0600, + dirmode=0o0700, + use_dir_lock=None, + lock_class=None, + ): + + if use_dir_lock is not None and lock_class is not None: + raise ValueError("Cannot use use_dir_lock and lock_class together") + + try: + from lockfile import LockFile + from lockfile.mkdirlockfile import MkdirLockFile + except ImportError: + notice = dedent( + """ + NOTE: In order to use the FileCache you must have + lockfile installed. You can install it via pip: + pip install lockfile + """ + ) + raise ImportError(notice) + + else: + if use_dir_lock: + lock_class = MkdirLockFile + + elif lock_class is None: + lock_class = LockFile + + self.directory = directory + self.forever = forever + self.filemode = filemode + self.dirmode = dirmode + self.lock_class = lock_class + + @staticmethod + def encode(x): + return hashlib.sha224(x.encode()).hexdigest() + + def _fn(self, name): + # NOTE: This method should not change as some may depend on it. + # See: https://github.com/ionrock/cachecontrol/issues/63 + hashed = self.encode(name) + parts = list(hashed[:5]) + [hashed] + return os.path.join(self.directory, *parts) + + def get(self, key): + name = self._fn(key) + try: + with open(name, "rb") as fh: + return fh.read() + + except FileNotFoundError: + return None + + def set(self, key, value): + name = self._fn(key) + + # Make sure the directory exists + try: + os.makedirs(os.path.dirname(name), self.dirmode) + except (IOError, OSError): + pass + + with self.lock_class(name) as lock: + # Write our actual file + with _secure_open_write(lock.path, self.filemode) as fh: + fh.write(value) + + def delete(self, key): + name = self._fn(key) + if not self.forever: + try: + os.remove(name) + except FileNotFoundError: + pass + + +def url_to_file_path(url, filecache): + """Return the file cache path based on the URL. + + This does not ensure the file exists! + """ + key = CacheController.cache_url(url) + return filecache._fn(key) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py new file mode 100644 index 0000000..ed705ce --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py @@ -0,0 +1,33 @@ +from __future__ import division + +from datetime import datetime +from pip._vendor.cachecontrol.cache import BaseCache + + +class RedisCache(BaseCache): + + def __init__(self, conn): + self.conn = conn + + def get(self, key): + return self.conn.get(key) + + def set(self, key, value, expires=None): + if not expires: + self.conn.set(key, value) + else: + expires = expires - datetime.utcnow() + self.conn.setex(key, int(expires.total_seconds()), value) + + def delete(self, key): + self.conn.delete(key) + + def clear(self): + """Helper for clearing all the keys in a database. Use with + caution!""" + for key in self.conn.keys(): + self.conn.delete(key) + + def close(self): + """Redis uses connection pooling, no need to close the connection.""" + pass diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/compat.py b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/compat.py new file mode 100644 index 0000000..33b5aed --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/compat.py @@ -0,0 +1,29 @@ +try: + from urllib.parse import urljoin +except ImportError: + from urlparse import urljoin + + +try: + import cPickle as pickle +except ImportError: + import pickle + + +# Handle the case where the requests module has been patched to not have +# urllib3 bundled as part of its source. +try: + from pip._vendor.requests.packages.urllib3.response import HTTPResponse +except ImportError: + from pip._vendor.urllib3.response import HTTPResponse + +try: + from pip._vendor.requests.packages.urllib3.util import is_fp_closed +except ImportError: + from pip._vendor.urllib3.util import is_fp_closed + +# Replicate some six behaviour +try: + text_type = unicode +except NameError: + text_type = str diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/controller.py b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/controller.py new file mode 100644 index 0000000..dafe55c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/controller.py @@ -0,0 +1,376 @@ +""" +The httplib2 algorithms ported for use with requests. +""" +import logging +import re +import calendar +import time +from email.utils import parsedate_tz + +from pip._vendor.requests.structures import CaseInsensitiveDict + +from .cache import DictCache +from .serialize import Serializer + + +logger = logging.getLogger(__name__) + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + + +def parse_uri(uri): + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + groups = URI.match(uri).groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + + +class CacheController(object): + """An interface to see if request should cached or not. + """ + + def __init__( + self, cache=None, cache_etags=True, serializer=None, status_codes=None + ): + self.cache = DictCache() if cache is None else cache + self.cache_etags = cache_etags + self.serializer = serializer or Serializer() + self.cacheable_status_codes = status_codes or (200, 203, 300, 301) + + @classmethod + def _urlnorm(cls, uri): + """Normalize the URL to create a safe key for the cache""" + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise Exception("Only absolute URIs are allowed. uri = %s" % uri) + + scheme = scheme.lower() + authority = authority.lower() + + if not path: + path = "/" + + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + defrag_uri = scheme + "://" + authority + request_uri + + return defrag_uri + + @classmethod + def cache_url(cls, uri): + return cls._urlnorm(uri) + + def parse_cache_control(self, headers): + known_directives = { + # https://tools.ietf.org/html/rfc7234#section-5.2 + "max-age": (int, True), + "max-stale": (int, False), + "min-fresh": (int, True), + "no-cache": (None, False), + "no-store": (None, False), + "no-transform": (None, False), + "only-if-cached": (None, False), + "must-revalidate": (None, False), + "public": (None, False), + "private": (None, False), + "proxy-revalidate": (None, False), + "s-maxage": (int, True), + } + + cc_headers = headers.get("cache-control", headers.get("Cache-Control", "")) + + retval = {} + + for cc_directive in cc_headers.split(","): + if not cc_directive.strip(): + continue + + parts = cc_directive.split("=", 1) + directive = parts[0].strip() + + try: + typ, required = known_directives[directive] + except KeyError: + logger.debug("Ignoring unknown cache-control directive: %s", directive) + continue + + if not typ or not required: + retval[directive] = None + if typ: + try: + retval[directive] = typ(parts[1].strip()) + except IndexError: + if required: + logger.debug( + "Missing value for cache-control " "directive: %s", + directive, + ) + except ValueError: + logger.debug( + "Invalid value for cache-control directive " "%s, must be %s", + directive, + typ.__name__, + ) + + return retval + + def cached_request(self, request): + """ + Return a cached response if it exists in the cache, otherwise + return False. + """ + cache_url = self.cache_url(request.url) + logger.debug('Looking up "%s" in the cache', cache_url) + cc = self.parse_cache_control(request.headers) + + # Bail out if the request insists on fresh data + if "no-cache" in cc: + logger.debug('Request header has "no-cache", cache bypassed') + return False + + if "max-age" in cc and cc["max-age"] == 0: + logger.debug('Request header has "max_age" as 0, cache bypassed') + return False + + # Request allows serving from the cache, let's see if we find something + cache_data = self.cache.get(cache_url) + if cache_data is None: + logger.debug("No cache entry available") + return False + + # Check whether it can be deserialized + resp = self.serializer.loads(request, cache_data) + if not resp: + logger.warning("Cache entry deserialization failed, entry ignored") + return False + + # If we have a cached 301, return it immediately. We don't + # need to test our response for other headers b/c it is + # intrinsically "cacheable" as it is Permanent. + # See: + # https://tools.ietf.org/html/rfc7231#section-6.4.2 + # + # Client can try to refresh the value by repeating the request + # with cache busting headers as usual (ie no-cache). + if resp.status == 301: + msg = ( + 'Returning cached "301 Moved Permanently" response ' + "(ignoring date and etag information)" + ) + logger.debug(msg) + return resp + + headers = CaseInsensitiveDict(resp.headers) + if not headers or "date" not in headers: + if "etag" not in headers: + # Without date or etag, the cached response can never be used + # and should be deleted. + logger.debug("Purging cached response: no date or etag") + self.cache.delete(cache_url) + logger.debug("Ignoring cached response: no date") + return False + + now = time.time() + date = calendar.timegm(parsedate_tz(headers["date"])) + current_age = max(0, now - date) + logger.debug("Current age based on date: %i", current_age) + + # TODO: There is an assumption that the result will be a + # urllib3 response object. This may not be best since we + # could probably avoid instantiating or constructing the + # response until we know we need it. + resp_cc = self.parse_cache_control(headers) + + # determine freshness + freshness_lifetime = 0 + + # Check the max-age pragma in the cache control header + if "max-age" in resp_cc: + freshness_lifetime = resp_cc["max-age"] + logger.debug("Freshness lifetime from max-age: %i", freshness_lifetime) + + # If there isn't a max-age, check for an expires header + elif "expires" in headers: + expires = parsedate_tz(headers["expires"]) + if expires is not None: + expire_time = calendar.timegm(expires) - date + freshness_lifetime = max(0, expire_time) + logger.debug("Freshness lifetime from expires: %i", freshness_lifetime) + + # Determine if we are setting freshness limit in the + # request. Note, this overrides what was in the response. + if "max-age" in cc: + freshness_lifetime = cc["max-age"] + logger.debug( + "Freshness lifetime from request max-age: %i", freshness_lifetime + ) + + if "min-fresh" in cc: + min_fresh = cc["min-fresh"] + # adjust our current age by our min fresh + current_age += min_fresh + logger.debug("Adjusted current age from min-fresh: %i", current_age) + + # Return entry if it is fresh enough + if freshness_lifetime > current_age: + logger.debug('The response is "fresh", returning cached response') + logger.debug("%i > %i", freshness_lifetime, current_age) + return resp + + # we're not fresh. If we don't have an Etag, clear it out + if "etag" not in headers: + logger.debug('The cached response is "stale" with no etag, purging') + self.cache.delete(cache_url) + + # return the original handler + return False + + def conditional_headers(self, request): + cache_url = self.cache_url(request.url) + resp = self.serializer.loads(request, self.cache.get(cache_url)) + new_headers = {} + + if resp: + headers = CaseInsensitiveDict(resp.headers) + + if "etag" in headers: + new_headers["If-None-Match"] = headers["ETag"] + + if "last-modified" in headers: + new_headers["If-Modified-Since"] = headers["Last-Modified"] + + return new_headers + + def cache_response(self, request, response, body=None, status_codes=None): + """ + Algorithm for caching requests. + + This assumes a requests Response object. + """ + # From httplib2: Don't cache 206's since we aren't going to + # handle byte range requests + cacheable_status_codes = status_codes or self.cacheable_status_codes + if response.status not in cacheable_status_codes: + logger.debug( + "Status code %s not in %s", response.status, cacheable_status_codes + ) + return + + response_headers = CaseInsensitiveDict(response.headers) + + # If we've been given a body, our response has a Content-Length, that + # Content-Length is valid then we can check to see if the body we've + # been given matches the expected size, and if it doesn't we'll just + # skip trying to cache it. + if ( + body is not None + and "content-length" in response_headers + and response_headers["content-length"].isdigit() + and int(response_headers["content-length"]) != len(body) + ): + return + + cc_req = self.parse_cache_control(request.headers) + cc = self.parse_cache_control(response_headers) + + cache_url = self.cache_url(request.url) + logger.debug('Updating cache with response from "%s"', cache_url) + + # Delete it from the cache if we happen to have it stored there + no_store = False + if "no-store" in cc: + no_store = True + logger.debug('Response header has "no-store"') + if "no-store" in cc_req: + no_store = True + logger.debug('Request header has "no-store"') + if no_store and self.cache.get(cache_url): + logger.debug('Purging existing cache entry to honor "no-store"') + self.cache.delete(cache_url) + if no_store: + return + + # https://tools.ietf.org/html/rfc7234#section-4.1: + # A Vary header field-value of "*" always fails to match. + # Storing such a response leads to a deserialization warning + # during cache lookup and is not allowed to ever be served, + # so storing it can be avoided. + if "*" in response_headers.get("vary", ""): + logger.debug('Response header has "Vary: *"') + return + + # If we've been given an etag, then keep the response + if self.cache_etags and "etag" in response_headers: + logger.debug("Caching due to etag") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + # Add to the cache any 301s. We do this before looking that + # the Date headers. + elif response.status == 301: + logger.debug("Caching permanant redirect") + self.cache.set(cache_url, self.serializer.dumps(request, response)) + + # Add to the cache if the response headers demand it. If there + # is no date header then we can't do anything about expiring + # the cache. + elif "date" in response_headers: + # cache when there is a max-age > 0 + if "max-age" in cc and cc["max-age"] > 0: + logger.debug("Caching b/c date exists and max-age > 0") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + # If the request can expire, it means we should cache it + # in the meantime. + elif "expires" in response_headers: + if response_headers["expires"]: + logger.debug("Caching b/c of expires header") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + def update_cached_response(self, request, response): + """On a 304 we will get a new set of headers that we want to + update our cached value with, assuming we have one. + + This should only ever be called when we've sent an ETag and + gotten a 304 as the response. + """ + cache_url = self.cache_url(request.url) + + cached_response = self.serializer.loads(request, self.cache.get(cache_url)) + + if not cached_response: + # we didn't have a cached response + return response + + # Lets update our headers with the headers from the new request: + # http://tools.ietf.org/html/draft-ietf-httpbis-p4-conditional-26#section-4.1 + # + # The server isn't supposed to send headers that would make + # the cached body invalid. But... just in case, we'll be sure + # to strip out ones we know that might be problmatic due to + # typical assumptions. + excluded_headers = ["content-length"] + + cached_response.headers.update( + dict( + (k, v) + for k, v in response.headers.items() + if k.lower() not in excluded_headers + ) + ) + + # we want a 200 b/c we have content via the cache + cached_response.status = 200 + + # update our cache + self.cache.set(cache_url, self.serializer.dumps(request, cached_response)) + + return cached_response diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/filewrapper.py new file mode 100644 index 0000000..30ed4c5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/filewrapper.py @@ -0,0 +1,80 @@ +from io import BytesIO + + +class CallbackFileWrapper(object): + """ + Small wrapper around a fp object which will tee everything read into a + buffer, and when that file is closed it will execute a callback with the + contents of that buffer. + + All attributes are proxied to the underlying file object. + + This class uses members with a double underscore (__) leading prefix so as + not to accidentally shadow an attribute. + """ + + def __init__(self, fp, callback): + self.__buf = BytesIO() + self.__fp = fp + self.__callback = callback + + def __getattr__(self, name): + # The vaguaries of garbage collection means that self.__fp is + # not always set. By using __getattribute__ and the private + # name[0] allows looking up the attribute value and raising an + # AttributeError when it doesn't exist. This stop thigns from + # infinitely recursing calls to getattr in the case where + # self.__fp hasn't been set. + # + # [0] https://docs.python.org/2/reference/expressions.html#atom-identifiers + fp = self.__getattribute__("_CallbackFileWrapper__fp") + return getattr(fp, name) + + def __is_fp_closed(self): + try: + return self.__fp.fp is None + + except AttributeError: + pass + + try: + return self.__fp.closed + + except AttributeError: + pass + + # We just don't cache it then. + # TODO: Add some logging here... + return False + + def _close(self): + if self.__callback: + self.__callback(self.__buf.getvalue()) + + # We assign this to None here, because otherwise we can get into + # really tricky problems where the CPython interpreter dead locks + # because the callback is holding a reference to something which + # has a __del__ method. Setting this to None breaks the cycle + # and allows the garbage collector to do it's thing normally. + self.__callback = None + + def read(self, amt=None): + data = self.__fp.read(amt) + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data + + def _safe_read(self, amt): + data = self.__fp._safe_read(amt) + if amt == 2 and data == b"\r\n": + # urllib executes this read to toss the CRLF at the end + # of the chunk. + return data + + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/heuristics.py b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/heuristics.py new file mode 100644 index 0000000..6c0e979 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/heuristics.py @@ -0,0 +1,135 @@ +import calendar +import time + +from email.utils import formatdate, parsedate, parsedate_tz + +from datetime import datetime, timedelta + +TIME_FMT = "%a, %d %b %Y %H:%M:%S GMT" + + +def expire_after(delta, date=None): + date = date or datetime.utcnow() + return date + delta + + +def datetime_to_header(dt): + return formatdate(calendar.timegm(dt.timetuple())) + + +class BaseHeuristic(object): + + def warning(self, response): + """ + Return a valid 1xx warning header value describing the cache + adjustments. + + The response is provided too allow warnings like 113 + http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need + to explicitly say response is over 24 hours old. + """ + return '110 - "Response is Stale"' + + def update_headers(self, response): + """Update the response headers with any new headers. + + NOTE: This SHOULD always include some Warning header to + signify that the response was cached by the client, not + by way of the provided headers. + """ + return {} + + def apply(self, response): + updated_headers = self.update_headers(response) + + if updated_headers: + response.headers.update(updated_headers) + warning_header_value = self.warning(response) + if warning_header_value is not None: + response.headers.update({"Warning": warning_header_value}) + + return response + + +class OneDayCache(BaseHeuristic): + """ + Cache the response by providing an expires 1 day in the + future. + """ + + def update_headers(self, response): + headers = {} + + if "expires" not in response.headers: + date = parsedate(response.headers["date"]) + expires = expire_after(timedelta(days=1), date=datetime(*date[:6])) + headers["expires"] = datetime_to_header(expires) + headers["cache-control"] = "public" + return headers + + +class ExpiresAfter(BaseHeuristic): + """ + Cache **all** requests for a defined time period. + """ + + def __init__(self, **kw): + self.delta = timedelta(**kw) + + def update_headers(self, response): + expires = expire_after(self.delta) + return {"expires": datetime_to_header(expires), "cache-control": "public"} + + def warning(self, response): + tmpl = "110 - Automatically cached for %s. Response might be stale" + return tmpl % self.delta + + +class LastModified(BaseHeuristic): + """ + If there is no Expires header already, fall back on Last-Modified + using the heuristic from + http://tools.ietf.org/html/rfc7234#section-4.2.2 + to calculate a reasonable value. + + Firefox also does something like this per + https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ + http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397 + Unlike mozilla we limit this to 24-hr. + """ + cacheable_by_default_statuses = { + 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501 + } + + def update_headers(self, resp): + headers = resp.headers + + if "expires" in headers: + return {} + + if "cache-control" in headers and headers["cache-control"] != "public": + return {} + + if resp.status not in self.cacheable_by_default_statuses: + return {} + + if "date" not in headers or "last-modified" not in headers: + return {} + + date = calendar.timegm(parsedate_tz(headers["date"])) + last_modified = parsedate(headers["last-modified"]) + if date is None or last_modified is None: + return {} + + now = time.time() + current_age = max(0, now - date) + delta = date - calendar.timegm(last_modified) + freshness_lifetime = max(0, min(delta / 10, 24 * 3600)) + if freshness_lifetime <= current_age: + return {} + + expires = date + freshness_lifetime + return {"expires": time.strftime(TIME_FMT, time.gmtime(expires))} + + def warning(self, resp): + return None diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/serialize.py b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/serialize.py new file mode 100644 index 0000000..3b6ec2d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/serialize.py @@ -0,0 +1,188 @@ +import base64 +import io +import json +import zlib + +from pip._vendor import msgpack +from pip._vendor.requests.structures import CaseInsensitiveDict + +from .compat import HTTPResponse, pickle, text_type + + +def _b64_decode_bytes(b): + return base64.b64decode(b.encode("ascii")) + + +def _b64_decode_str(s): + return _b64_decode_bytes(s).decode("utf8") + + +class Serializer(object): + + def dumps(self, request, response, body=None): + response_headers = CaseInsensitiveDict(response.headers) + + if body is None: + body = response.read(decode_content=False) + + # NOTE: 99% sure this is dead code. I'm only leaving it + # here b/c I don't have a test yet to prove + # it. Basically, before using + # `cachecontrol.filewrapper.CallbackFileWrapper`, + # this made an effort to reset the file handle. The + # `CallbackFileWrapper` short circuits this code by + # setting the body as the content is consumed, the + # result being a `body` argument is *always* passed + # into cache_response, and in turn, + # `Serializer.dump`. + response._fp = io.BytesIO(body) + + # NOTE: This is all a bit weird, but it's really important that on + # Python 2.x these objects are unicode and not str, even when + # they contain only ascii. The problem here is that msgpack + # understands the difference between unicode and bytes and we + # have it set to differentiate between them, however Python 2 + # doesn't know the difference. Forcing these to unicode will be + # enough to have msgpack know the difference. + data = { + u"response": { + u"body": body, + u"headers": dict( + (text_type(k), text_type(v)) for k, v in response.headers.items() + ), + u"status": response.status, + u"version": response.version, + u"reason": text_type(response.reason), + u"strict": response.strict, + u"decode_content": response.decode_content, + } + } + + # Construct our vary headers + data[u"vary"] = {} + if u"vary" in response_headers: + varied_headers = response_headers[u"vary"].split(",") + for header in varied_headers: + header = text_type(header).strip() + header_value = request.headers.get(header, None) + if header_value is not None: + header_value = text_type(header_value) + data[u"vary"][header] = header_value + + return b",".join([b"cc=4", msgpack.dumps(data, use_bin_type=True)]) + + def loads(self, request, data): + # Short circuit if we've been given an empty set of data + if not data: + return + + # Determine what version of the serializer the data was serialized + # with + try: + ver, data = data.split(b",", 1) + except ValueError: + ver = b"cc=0" + + # Make sure that our "ver" is actually a version and isn't a false + # positive from a , being in the data stream. + if ver[:3] != b"cc=": + data = ver + data + ver = b"cc=0" + + # Get the version number out of the cc=N + ver = ver.split(b"=", 1)[-1].decode("ascii") + + # Dispatch to the actual load method for the given version + try: + return getattr(self, "_loads_v{}".format(ver))(request, data) + + except AttributeError: + # This is a version we don't have a loads function for, so we'll + # just treat it as a miss and return None + return + + def prepare_response(self, request, cached): + """Verify our vary headers match and construct a real urllib3 + HTTPResponse object. + """ + # Special case the '*' Vary value as it means we cannot actually + # determine if the cached response is suitable for this request. + # This case is also handled in the controller code when creating + # a cache entry, but is left here for backwards compatibility. + if "*" in cached.get("vary", {}): + return + + # Ensure that the Vary headers for the cached response match our + # request + for header, value in cached.get("vary", {}).items(): + if request.headers.get(header, None) != value: + return + + body_raw = cached["response"].pop("body") + + headers = CaseInsensitiveDict(data=cached["response"]["headers"]) + if headers.get("transfer-encoding", "") == "chunked": + headers.pop("transfer-encoding") + + cached["response"]["headers"] = headers + + try: + body = io.BytesIO(body_raw) + except TypeError: + # This can happen if cachecontrol serialized to v1 format (pickle) + # using Python 2. A Python 2 str(byte string) will be unpickled as + # a Python 3 str (unicode string), which will cause the above to + # fail with: + # + # TypeError: 'str' does not support the buffer interface + body = io.BytesIO(body_raw.encode("utf8")) + + return HTTPResponse(body=body, preload_content=False, **cached["response"]) + + def _loads_v0(self, request, data): + # The original legacy cache data. This doesn't contain enough + # information to construct everything we need, so we'll treat this as + # a miss. + return + + def _loads_v1(self, request, data): + try: + cached = pickle.loads(data) + except ValueError: + return + + return self.prepare_response(request, cached) + + def _loads_v2(self, request, data): + try: + cached = json.loads(zlib.decompress(data).decode("utf8")) + except (ValueError, zlib.error): + return + + # We need to decode the items that we've base64 encoded + cached["response"]["body"] = _b64_decode_bytes(cached["response"]["body"]) + cached["response"]["headers"] = dict( + (_b64_decode_str(k), _b64_decode_str(v)) + for k, v in cached["response"]["headers"].items() + ) + cached["response"]["reason"] = _b64_decode_str(cached["response"]["reason"]) + cached["vary"] = dict( + (_b64_decode_str(k), _b64_decode_str(v) if v is not None else v) + for k, v in cached["vary"].items() + ) + + return self.prepare_response(request, cached) + + def _loads_v3(self, request, data): + # Due to Python 2 encoding issues, it's impossible to know for sure + # exactly how to load v3 entries, thus we'll treat these as a miss so + # that they get rewritten out as v4 entries. + return + + def _loads_v4(self, request, data): + try: + cached = msgpack.loads(data, raw=False) + except ValueError: + return + + return self.prepare_response(request, cached) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/wrapper.py b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/wrapper.py new file mode 100644 index 0000000..d8e6fc6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/wrapper.py @@ -0,0 +1,29 @@ +from .adapter import CacheControlAdapter +from .cache import DictCache + + +def CacheControl( + sess, + cache=None, + cache_etags=True, + serializer=None, + heuristic=None, + controller_class=None, + adapter_class=None, + cacheable_methods=None, +): + + cache = DictCache() if cache is None else cache + adapter_class = adapter_class or CacheControlAdapter + adapter = adapter_class( + cache, + cache_etags=cache_etags, + serializer=serializer, + heuristic=heuristic, + controller_class=controller_class, + cacheable_methods=cacheable_methods, + ) + sess.mount("http://", adapter) + sess.mount("https://", adapter) + + return sess diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__init__.py new file mode 100644 index 0000000..eebdf88 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__init__.py @@ -0,0 +1,3 @@ +from .core import contents, where + +__version__ = "2021.05.30" diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__main__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__main__.py new file mode 100644 index 0000000..0037634 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__main__.py @@ -0,0 +1,12 @@ +import argparse + +from pip._vendor.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.9/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..777e178157a9c7c0a310854a708ea2f1732e30a4 GIT binary patch literal 291 zcmYjMF;2uV5Okb?PKQpSq@gDJAVq3P8=y(D(pWsVrsrUjF zc6TG~tVScv?2651O(H(O*l{2CPZF1)QM|JkoN*`Gn3ZqdEU3?m8KX{sMGn zKv4GN{b;Rm0UG7ISsW1qj8<`_XW=A2s2+JEJW5~_>Ir()fIWxK=pB0kuL9m%(VoOR mda%kuEY#9CXwe0AP{3o73Y;^0URKY8kz`%!=NS@$e(MldCZcdDR*Z z#=DTN7J#r}lWJ2;CVz6_e2XAFb}*(Pla<%485bd!IJXiVgd?kMDIUP67Rw6I>pP7s z`ePCy9A4nOYvLEz{cQ}{?iGf8sg#H&yIm-DYR_F5>@c;cjejF}*jx4R>G`5lwFezi7>IdBUCcFtM__mveAD q#^=BB`EPtKL?g8kqO|LfpEj-PYB-}YgX@FjY{YUpqB+axKKllj*os~N literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e3b2a7b1ba2da3c631c735bc6fc393bbd1f1b70a GIT binary patch literal 1538 zcmZuxO>Y}F5GA>kv|7m@P0}`pB3Kl;=#bq6?WI6a*ifA|MWG6ffV8?0^pdt{uXeX2 z6~{)}L*!F|pqHX&8|Wo}iPxU`7jo)wS4!N*6gZfnhCB0S-jHu>LOR^1q)@aTjcQ`e$Q{ZP63` zb3E;fjphb;ko!n%iY|DD(2_!eH#cHhmBh zO)(UW2n>l4_YoVbYRqjmlVaGU2(jd75V(-Bg3l#mE@G@n5%fM|KQDOR{PP;=Hhi-d zZ>n@w&Sk2qV`COoRcf2=D>FOcM^f5!Q7NX16Rrh2P`PCL+(?lo&t&l|&DDNdo!VJh ze3pEX8fE3Zif70CP@1$-Rm#9ilsaA2FwIIWp^%zDY>&x!CB(JuZn5#>F?%xE9euU? z-S?wCHr)GRa&1k9{wf7w5!3>Y23UJ;y@S+f9XNBXlbO`=V}HX3Ls)k~LIG*T?aXzx z;maK))S8`2`4tNFmhPG#x9gaRti-d0^w*`$)ZlkQD4sib)6OQT&sqsKZLlB3U2uoFup+=UJA4W zyKX4LH*kHD!O4G?pM@HMhttf!=qyg9&C=>vr8YM;%Rusb`-?*4GRd^P66`JCbsg5T z;1TQ3m$7S ze$rg>9~f*y)tD$V7*wiEL;E#YS`})xtpqX zg27C*H045P(rEuIYmcKzZp&*MUij$O=lZaDH@*zO!`uZy+hMRx38u7E8yM^jlGTll}`}EL4vG literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/core.py b/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/core.py new file mode 100644 index 0000000..f1a0b01 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/core.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- + +""" +certifi.py +~~~~~~~~~~ + +This module returns the installation location of cacert.pem or its contents. +""" +import os + + +class _PipPatchedCertificate(Exception): + pass + + +try: + raise ImportError # force fallback + # Return a certificate file on disk for a standalone pip zipapp running in + # an isolated build environment to use. Passing --cert to the standalone + # pip does not work since requests calls where() unconditionally on import. + _PIP_STANDALONE_CERT = os.environ.get("_PIP_STANDALONE_CERT") + if _PIP_STANDALONE_CERT: + def where(): + return _PIP_STANDALONE_CERT + raise _PipPatchedCertificate() + + from importlib.resources import path as get_path, read_text + + _CACERT_CTX = None + _CACERT_PATH = None + + def where(): + # 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("pip._vendor.certifi", "cacert.pem") + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + + return _CACERT_PATH + +except _PipPatchedCertificate: + pass + +except ImportError: + # 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(_module, _path, encoding="ascii"): + with open(where(), "r", 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(): + return '/etc/pki/tls/certs/ca-bundle.crt' + + +def contents(): + return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__init__.py new file mode 100644 index 0000000..80ad254 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__init__.py @@ -0,0 +1,83 @@ +######################## BEGIN LICENSE BLOCK ######################## +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + + +from .universaldetector import UniversalDetector +from .enums import InputState +from .version import __version__, VERSION + + +__all__ = ['UniversalDetector', 'detect', 'detect_all', '__version__', 'VERSION'] + + +def detect(byte_str): + """ + Detect the encoding of the given byte string. + + :param byte_str: The byte sequence to examine. + :type byte_str: ``bytes`` or ``bytearray`` + """ + if not isinstance(byte_str, bytearray): + if not isinstance(byte_str, bytes): + raise TypeError('Expected object of type bytes or bytearray, got: ' + '{}'.format(type(byte_str))) + else: + byte_str = bytearray(byte_str) + detector = UniversalDetector() + detector.feed(byte_str) + return detector.close() + + +def detect_all(byte_str): + """ + Detect all the possible encodings of the given byte string. + + :param byte_str: The byte sequence to examine. + :type byte_str: ``bytes`` or ``bytearray`` + """ + if not isinstance(byte_str, bytearray): + if not isinstance(byte_str, bytes): + raise TypeError('Expected object of type bytes or bytearray, got: ' + '{}'.format(type(byte_str))) + else: + byte_str = bytearray(byte_str) + + detector = UniversalDetector() + detector.feed(byte_str) + detector.close() + + if detector._input_state == InputState.HIGH_BYTE: + results = [] + for prober in detector._charset_probers: + if prober.get_confidence() > detector.MINIMUM_THRESHOLD: + charset_name = prober.charset_name + lower_charset_name = prober.charset_name.lower() + # Use Windows encoding name instead of ISO-8859 if we saw any + # extra Windows-specific bytes + if lower_charset_name.startswith('iso-8859'): + if detector._has_win_bytes: + charset_name = detector.ISO_WIN_MAP.get(lower_charset_name, + charset_name) + results.append({ + 'encoding': charset_name, + 'confidence': prober.get_confidence(), + 'language': prober.language, + }) + if len(results) > 0: + return sorted(results, key=lambda result: -result['confidence']) + + return [detector.result] diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8e95ea58710fa30c0ddc656226cf9b55a1c0ca4 GIT binary patch literal 1915 zcmd5-&2Jk;6rb5IuQyJbq@^XmVZ{kc#73%+(x{5~NJK1=6zY@@OLV;UOzd^`t25)K z4(kiygv5;_LN=T@@>lQ=^fcnesb_ALP0RQ08XvWsAaNAA&jfBH$^Mgfy}VcOdlZ z8V{>LP{qR@cChopHC>oJT5UeS4E}V0rUuBhZS>U_ zQ!_Vbi*vodbY$^|xjDKvwKSbA&(YM*?b!-7=9vEk8mk4pKD&|IxivRH&zQZEgLdJ; z9NnbmkEVw1qlfZVZk%FjfzPM%)!Znnlvchs+B(+S00Xeyliw}_8)~ZnbCwDb_M!`v z19<*7Fy}7Z%846_bbVvv-8*$tx#z{GyndP-hE$i7a-$#_i~%LjK>uo|&|O1!i#80Q zJ7W$lZw)OJwZ6}9!b$;J=u{48VjRgrEXfVnRqov=h^)C=&uGC&)4=Iets$V@51dj(~b* zl&`@`-Qg=Rab0n$QXZdBPMIQqQ?ITTQD0`SGx^s6b6tb$FvJFsD}`(5!gY-rwqRb; zWo+uAcCqooGAwKWZ~g7rHN0#TUiRyrS{a`|Lg#I%Y+p7@#<3_5wsQ6cUA!);LiBS( hNYN$=XP45{U5%fCAx`NyVq1Etz*7xFcoVwJ>OVq%3C{ok literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..16b02fde9dd740e441cea2bd05ed1b9db8a951b5 GIT binary patch literal 27194 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 HV?_HuGXArz literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7233a9525294213efe83cdf2b3fd77f1e76bfd0f GIT binary patch literal 1149 zcma)5OK%e~5VrS~ZIqPKs=$F0oFdWe0eV0}2%4Y@i4>&V_F`?;ZsK-d*iNfdy`@qm z&isIK>|e6Pi4%W;6EmAuU4)SE%CqCKJ&$ibC*5wF!1(gDfAl>d8rCNW}^q%&Cvus+(8)7_!eM#;(C$g+4_B-uhs z4SU_a_xrnSJYu7d!*?H22=K>nZ&vyRD1yY4li0Z=hm=$9T!gVJJnnMuf-Gt5gI;G1 zdT>cR5@Xga+s5##6jQ9=cA$>_aq4Fv3^DYaES)Ro8==Iw##_Rg`6gHr__xlo@$H`RasFGF0;1n-altLRh_?iGvRo%;ewNN2s{1m1} zh0t}{rXfAsx|rBf^UVK6Z4HoxTKqe3m?gz@4xsEbf;P*%-S36iWK54S+h!~;`5X{uw!_%x zd6KPmYTRrHI07}yLT!OpwGF~{Z@QX_ECZU{)xVBM5QLgZPe9T5xI@|r9NKmrTHBFu z_wvaN1gkzN#K>;0Xr}Sm<*R2`lhAI|oo#S#MZ*BRXy7Drw07Od<*p&&t5t!oA7esD Jf)1@e_c!j381Dc8 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0806bbcd61dfef12a8f7db2e9c54b01fe6fd62ae GIT binary patch literal 6235 zcmcgw&2JmW72i*CNl_B@VTrOGoBlvz7K!NCb=#zAtPjhw5}R^K8BO-k0mWHKD}Kqd zt2kmQ6h&MFXs-dvkyPbqrhDfeE|-bYCHEzeNL-vqtGb)MdusvKIu}7+-_NZ(#E6M7ZJyspJ$Ey?e zgsLnnJi?=o6&`gaKhf<|;4K~lA9GHDp8_A}L*R!bKMg*?hrtg^J_UY+kAfeS{0#Uc z9|J!o`P1OX`2_e0$)Dkq1toK;rDAy*JxDD*SX}!7Tf8%$XKSnMc7EymY&CytDIX-m zp0)XfyGyLFVlM^hcFTwNR~F~*vRf;KwfxG$gSC~_9Lvw+)t2{uevmx$9Fs>aC&`;x zUbuGs&1?MxjHak zBX|$-QJ%y*!N;)m<3Vb1t0-={o-f?>UEi(O=4-{up67b50`zZwzWlGoCmA>fH{1qP8u$vcvnHV(o|STp(*N`q`IVrq-Ilj5_zi7At)#ZYAzEECRhoY zFu%?=g!7Qq1$RU+#QfrV#bKV?aDvnR-i});Rv7P6mx&^@4ot@DH77`5zK;b2{$Z)H8#ciz}3mdeFV$II@xJ6VQNye_iz z?;Nt^yG!xeoxQ+f5byeo&64d#KomWqMobj>Yg||yusgGdGY4?ucu2DrzpVhr9HpsJGWb;OfI8~X}m>>$PAG)M96d@IY+hAAm2mr zA|Q$Z-L=NKftt&IE)k3lA9AzAO9Xv@N)zZVYhn^8QJU&gbziR;T-(>1I@imlSZe~C z+bTD{4d5}gsW+8vt*nSO4qRm=ey%>=qcL%WaJJk|2s^X$j3xEp}OIKkAtmE6j`2lv>m`L%hrb|=47xU+iq zRuC;b$S<+nsvx`umgGKMDrB_KlBzgvwGrBZBL!%+-Z+S2OaXWaSkCw=0t*^?zErFgZ40V9wbjlUqV|c&w|7e;#G{XQl;p5jDpaTG7QF?6_+MUq6Jy9pD`DEk^5um(qah3iyHDU;M=%qY_eH&a*Rs&#;Ppv$u?vST_G>Nx~mC7HjfOh)lD9=J?zzRCh5%2VhJ3<9n^fAfopn_Un2r5p8 zcaxU@i#ezq!h$?S2#Xliq_d&x@5!+EB}VkZ;?iK<`{RPlM@MIoM3D(YF9WL0AdKx( zVu!pG{^naq@CW)~|>V$XatCU0!IO*gjt9k7)PEMhajQhOjBEadF_Xp94s=3%?_=9UxK5ivdyr z-y&WDknTX?5J+^(4S_UDHR*=v`g1an{(=$5fHX++{y?IjsH2eOJOMHgNLS%{4BVEk z9sy?GsJ)8T2wYPh?m&*^JclGyKf+DJ;CHKU6PrS%$YiY5T9`9lSCK@FH^0L z)A|DK?bz3qbq`q0b0CDQ`%jYDK?t?vGG~LBvs>~X(RVqap-GSh1dWnCWg&ZH1}l?S z%3Fi@<~n`%m0e_VArlzNT>@(zflzkH03~A+g{2_6?Rv6Z`WxwLlGGlluWvggUtS!; xn;2yzVvY#ygdivj(zeS^(qeS70_&ad!uu}S)T7upskMJbawRz-e^bes{{ogB1S0?d literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..78ace8673b213c60b39083b561ac1f555ece981a GIT binary patch literal 2276 zcmbtV&2Jk;6rY*>@Y=D{5Rx_&5GmrLiy#)|0F?>_wX~uVE@}b?OK7zAOdLCo?aZuG z#cXUlx@<__=pqomW&&Z^mc6YQKjJNXA$OXja^RlIFDm!Cstt=*Ek^5Hn*G+&8j(A>{ zvfWScS{|{#p42ynTe{vIZCac%8k)4;>e`LRNl)vvJ|1;(+~dS3GD*u;VzsKT?C8Nx zz29xsN4x39aPY~>&ARQT`lC_O-b^~$)<@k@U1F6QntB@R zbPZ%lV0@m3_)T8_ZBrL>iHoUdDRwN9gk5H%y2f*Nnqr$&{cJNeGOFC#FmjR04Teq{7TV ziG``Uxxz_Pqg9uP%@KPA?0t|WjqzEyTj4&BFwXJG(glvY!_Ih329f7?Kz11n9x}U> zu>($C7aI9MQctWR>y6lR*5$Juoyzubu-;XA(AIf%nin}pw)7Eqwio7}*nAmBd`xG# zdKaOy*5{MAF0l6WcK^?4vw$O~W}8LGc|^rA2Exo0sOPO*!rV>Jc`Gjh)A2@UN|%5{ zv*Akhp)l17qDY zsl98L2g7u^=m3*NsQ8~0*z)Jl<7yFD%8|KB>`h|SE>7h!><>G@b{;6*8g~p;ox{B$ zWXC~Knv|ft?3z3s;@~1K-aSmyW_+?PhgHYAiE=b+k zrV*o^%+OUtJp)%!Mar$A8smbHc~#2oandi|xc2T^ULK(x;ucGH3%|%EL%=F3yEeU( z+PdGD@)Q7F_jHYuDsvg+8fV03!)gTxED=SEt}i#@AP+RILt7L>ZQ6^bjhOBTx9-&T V|AIV^ZWS(kK>@aOSd~}3e*mwo@4x^6 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00cdcff834d47ae8593c5323f2db30b5f6e0ea83 GIT binary patch literal 3498 zcmai1Pj4H?6`$FEqG(EX&tduzTsbA3z3r@uvvTUiumKnv*ZR6v!bL_q|ziDaus40%vF5zIp%V{oXtU zD=T#Z&tL!6+W+nZQS?Bl@VHvH5tVc>+*m~_fF?NDxUJGO>)$EM^f!X55DC)^dz zGrQw*x;5f@1)ZUFoA2;ZM~aGvoE z{g^c7EZ1P7$tmSfkjCVNeGHC+HTJfu!IzI7k&Qn;Zhrh9JO&1!vZN?%m3Ny|z73@F zVZT;l)E`9sf!`fz;ipMF`VDX@bd*@D^yq_mLl^Ftvlnf}6EXJw0VbL}Bga(JQ>buY zvvq8Zt-Iv$?PGgPPwladrS&h?yW|C>1Xi%d)v+^nPMsG-ZH*o791yw1U7+C(C_I!r zxjr^!H~$PkQD>9q_kwZJixR=~KnfT~nNTe4G4xK|sQ7|78w6dUZ!nScW2h=@N>S`l zuyJ%}qw~08juI$jNuZ-N3E~@UZpjc1K?n@6@gFA}|NLgQZy3k}Awk7cA)y*U5o97( zf<5|UsbRui>De6!5T50l0YrL2vM@+k7hOs7{y;OGGDs#JLRc@m-%40aqS6jz=m_#Pt-r07AQXG(M>D;9y$EQPpU;C+kT z0U>B!)X&pgfqhSMOnMXji5-==Knf;B76+l=a5U%+L?;$ZL7f&XP+=6!BHOB08%saT z&BB5#i!lV?2Rfia8D(0r!$A}d7*AP}YL-K|?@dm4c2ccMp86>y==8vU@#tjZ_2Z9c z%gH$*_4Dmlui-JsI*~tsT}`)G#;gjY3`X)@pcG4xc^qshJn<(DS4^=KDU(-C*WjryLa80}m2Vcc<4AJ$`zVirOpWtmS>b}|g1!z>)VIY@1*Q3^J$F9*euR*U+hc>LE zj}`)VfuK3`B62JA{v8%2dO1C|xOHr6xcbM?i#(%%-~{kU#(-09ze5aW-LVT;wd76Y zPa3dtVRfH-fO(fM0gBhh?x_u^UWa}5fg?}GmO24cqa;9fRR@5=Yo;O?>Bshyb>KXm za`NRFC)B@s@GmHN)u}!dI+uxpv(1utBwZ?D z)55@lgfpy^rk2dIa{?MnY0Nk%Du+TO?B=aAEVG2W6RQ+bzcgT)ng3r!G#m;ZL30(4 zD#N;>mx9tX409Y~b&>KOk33ps968U5N%3x@EAPRJcnM^FB-o8BoE?Am%O%f|F;i!H-ES5@7{lS4;EW@XC&1 zYKXjs1J(uk4t{N5M-zoZ0k;U3?;-tXIADi&rrKb~EwSB{c=LY%KZOCVS&mhAYqkZR yof#cie`ry|3(>~jqpX0gNb;d7yIU{q?u$?xrbU{H+Rf76TX?Rf%dXKH1oFROA%_eA literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b06cfc7a56844a09169bd387eac76506cf8fbab1 GIT binary patch literal 2925 zcmb7G&u<$=6rSC+9mjD@=?~EgiUtm-7Oh>Whl&b8OIx_mfRc!VFRRJUIG%L9yPX*) zO_g$KPn;3w_Sk=EublcXaDng5dXqRYNUSyE`T4zXzW3hjiuLsl!}HtkgS}Rdu|KJE z`e~qZAI084C7BFTHexcAQ5sCcQ5divm~6=AYbKj2dKHZtGT37M)_bgG8}9?u{h;hV z5y?bnYRd_y5}G>wMCjZ{v5!zGHVPygg)$gLWac#kq&F~X%9dO~za`sp75^);BiHcX zR;#ir*I%<&!Kfp9F#kb$@nJ4?w(AYfjf+2UmJY}BfLkKMrxh#ia=x#O9v^bScMdUO z)w7w(62-^4!B`=T)5$CqhGWzN5BT@F@n8xd)h;(tTq+#UVV6;f()-HZBb=tgmYa_0mK&>8G6TJ=Ywh4~oMP8nq#Nh+{( z=JH#$B=9lzA z69m{@2%NL@JOIvV3zfiRLi!LM(Xz@>j9^wOt9LUv%ZHtJjd16opfIh@a-IXj;F#8G zgvoJm@`H&+P$uv|l4nl9X^w;@if7^KP$!RLiH}r}OO-%mcqi)VR7p+w0z;Z&6|S`h zFbtY!;pkAc!{@R--rW3YvsSip_$gukOH=qLJ@NfnQ+zQ^y~HQ!d2*U%M>&s`A;!*} ztrG17@==}JUL^HANoNQ$QuaJty^D`cJ|!<$1dD+M!`B%fB-jR@Q^+RoPhIa(PIJQS(L;fxHF4*WthWu1E{gr0g zXuk^#UZRx_UJUagb=OgSi(gBMqqQ1Egt1OmN!j{{+X&Jo)~7+ga@Tw^ao^a2;| zMNdO>TcQ^?{CtG@5QW7}TH(hU*Vtu@e#BlzzTd<=twTT^u?E{~$ktsP)g#dBdu5|s zOHyHN?CAaDqp9rG(NYbT-D<@c*J^IcHSdM_dOBvmWt#Z&vUr`$W$L!5TA}%dm#Pes zvg6~@!<8K$s2;2mkV492rmS^;KlVN@}BHH z=VS7-_c3uJeYTjngl0eRM9men&vLnh)bKfjcSuaaAd7y+y4u5EETOPu%Q-H`@kU=| z-dFIoPwBEj35WpmsxISn)f@1iCzVR^JSnzL5&QDrh%MRof7rECe0$80sfNSaGR@5A znE2(GO1Lx;Ym|-tnpwlzvJ=x4Hp4{`m)$siHWTUmB3g-KnI~~{@&PpSG0 zRoN~~UMS-Zz3EdfJdP_-0p(fkvb literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de4c709cace212f786f7476cb5125ebdaf868026 GIT binary patch literal 414 zcmYjLu};G<5Oth{CZ!b{1AowgSfUdWLQG5uA;ChHD2cC)(iBfWK3sj=pW_D0uTx{XZPPq%XD6NZy1&wHp3yZ;G zOE{@dqR+-JNBYsMk}WWycE0LywMaD_vzdA1P^WJPX(vt$q5o;9Li zYOs~;*2y(9IQmlMx_t&3}=24iT03mqn{K)b!q)@ z>vMnm)21?3tI@=&vUpqYY-*H&#npZ(RIxv_+{yt@$EuLvy+4>_R=t~A*&lN~ly+B_ zBdK9!xxc%yzQKkAHu$)?^&y26e+>W1GV7p7l2Abs@0{#WL4|h~CB6)VFM=~Nqe%$5 zs~hyzISELDb+_wVF2_7&ikG+^sAB@0<{1b}EIlPN@51{|D6zf`W?-|>wq^wW?Nf3Q z;ff#-nC^5J>d;IosdWnu*AZi?P?j-`0dh#M*5 z-jOVh;!KU=YHG)2@uIg88)fD5il>KsUz)g5Rm@PE9ge$n$xSMI)aj) zz%-~3x=a`Sh@RYQ;Mu#r^IyOsxP3f}R1_2d^LFac9n~w~(j62|bK(w|bq5OpBv`?7 z`4l_`Q6t{TgJ#a=rvJ;^+Ag)^#lI6r887xHfJ@v+`o~4DH*_OxG}gyhy~tQziV2|3 z>JDRHCOn(3IOysKpago@slE$g^%{tJ>8i7-%rcifdPcNONwj&bemr?d9{g=a^XE&PP{}&0DLnC3OqD26%})b)g%z+;k**Ilthm NM_3T@phMl~{{}`y7&QO@ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..57e62a5fcc38a7cd4bd9568704b15fea2b821819 GIT binary patch literal 2663 zcmbtWOK;mo5GM7YD8|miJ+?p>=mQndN@t;6FEkLuCSvW?raa))!xAkH%d|AqXc^9{<%Sg{Svp9)l+6bQf#ysDK^UBzaF%c;Sd`)& z7@@)08RMW5f#!mEB#VLz#)TIWxC8Ukm=hmPJ!T|`>TfpC(e!uHQlMEteKL}IC=jZS0JBT3p z9svm8ML{l^^qH3=;T1_^;>ndpqm#97J1f_YMoX9SA{?J%f-R)Li!UCc_!xv;+u~*T z=a7{Oub@DKe5d`yvdw|%4y>c&uC;HOo&1CKGpFC|SdP`Ro84T0+B|NeWv(6e`exJ4 zD|XLz+fNVkVzb-LE323CB0ReG{c^O8``rie2)ft-0WK+_OV&SKmGc|Ud7q@&I_B{> zh$hRlIe1s-U!_d~ud|I*;TRv+;6ke03S_loI%eCk?1Nn2@158k*K%^r?m6y}c`Fk*1i{~riPo<9vDwgka`ZxAFJWVT%7P1<-zEXo6?*?01?+3)xIxn?0o3TJ8+k^NdA4>juwQ7);}s&VRfcn(&n+ zmJN>}!+1WVCOM14FusI1lk^K*d=bQ%AaMj`0-5>^kQR7wALDr4aE!eTU0|+K709D7 z-`(Xb&3Ghsf$bRqD#LJu-EW-52a2D>JOG{#B6$F$ygGjX%g8XRsd>>4#f^}|%?F+Lg* zDC^g;gicIj_`1NjX+}`!Fswo*?qj%*lrOLzV J!w1ko{s)MjhZ6t* literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9228744317301071096364f4ef994e60343324f GIT binary patch literal 2648 zcma)7&2Jk;6rb5$uh*YROX2H)r=;~`AoN(GBed{+!PKk=jX$Zw0)uonxN6j6RAmK3LgdQ;U(3J*QjTxaVWEA=NyWv#h! z_k+84mm62-9&KKod%Sfv7r+}YH8c)3^%W37Jj#h@aO#`Yu@1nUOXaRj+b~D#{6?)5w8HInNQ~HD!62p@o#w-+IA;Y?xh8H zq=a&P_f9b2!c{>>^u-<59}eXJOy{-+(&Zu+K@6sHMFdj7sQ2_~&pJYioqbpMD(vmM zQUrr`6psC!o^XW<{Go7RyXu6k*i~Y01l#d0DL}Lr3hoXfHy-GtLN1~>Z0);oM=01m zyJ$(THUdK%EhWgK8BOTw7)VTFIw6Nf*O*XFe*~np$%HU-Lb_I*>Du>*TmjxZ&c;rh zJESKdarU1-`$yRV$bNgaR=l)Ug0;!nS~*?gc+;Gw^O|1Mv@#*bubdFXG&sa)04xhV z03d5=^i>y`v(B1p>zhy3R@dq) zi486i5tnELnMLBDsPpLl=6#fvIsCOBZ*0}?HzWpZGUtOAp9(me1%pu(C)Zf&TESTW zF{DJCRL-aHxfm~r%@l@Gl9Aw=xN0Pp61|pw-ziOUj0HVkDaKC8-=kV*&=<9ExT`?D z;XuZELJwP84{F_7W|S;L3It80KSfG7m~(r{mvLA`gOtJi@LTA?;A(s}rhVz;N?_~y%j zu{1M%fazq`5MpRq4Y5bS%pi7bpi>b9E99HS13IDV_TB=Aky#U(uI??w8I(8#P%>M? zA*-n~1;chVCrfascD`Ih4)Q2?D|Jv}_CzEXaQZru8$hatyoo%@$=8ses`3^RJm6F4 zsse=2GR;$q8lZ6=bhqjF#uc5lBQGh8%41)Ku52Kn03i32HcqL21q}KD`r5O*lj0OO zEb{xJj+=F)8sl46F1;xEf9{qp99N}UeR&7?ROR!#of$&cF5G+7!8571|5`^AIb#|tn1`l1aIy2&?T_}ABz+aiXzidvY;0cXU>V~#uGr(U z{G|++fz8;pH+}_XLIG|+9~k&b;C?tTC#Eb<%r3$Y#$#h*oX`VnV#Q|H+BIYcAZaoH zphdbFZhTA(!Vr`hZtha~OKf+u08R&Hat1gady~LPxIYj3%OFwE66SI71an*oZY#q$ z_wt@S3unMyR%2BnhW>;OMJUDUZQzr9B)*H&EFuwHNv6KFwXv0A92HIM#>O^Vugh2U zYMO8Cwe2R%CC=)`myH#+ww)}dHp3E>p2qrVeNO}BZP=VfOGbk=ad!4&$ak?!Xpn|j zah6{(qrD6$t0e?)!XXObMyLZ3l!r({YU{XiAeZFzyhAI-`1%#6;t5sSs1`A&V@yC! z&okB^@DU_DmJ}J=8~MHIN|rG`2pH1|OviEJKvsjg5bw*kP#dk%JIH+qBq>dkZ6JC* z*mfR_Iwk0AfCUA&>TKXp%P!9s3!sCE-LZAfX;jNeX&R4d7L^#bNo88z(Ks{9nz)b= x(WtL0_dl%K3B>jy< z^w$F7B@FkkHA$ipm50(u)@50u89l?~i!~Su#W^|@PSwd`A6f4B@)}R99(E&#?@6Q(2DYX@M61Q1v`5=>@bB@uR2ECbkw&0p3;j zq`cz1(0&$u%%jLS%7d&${!!i~>#uCD(Oc`k)QhyNmso*TSdo=z)vrpKuIm-BzP>70 ztuUi&*6~VQMu+}p??3RGSg%=k1epi-&_iJB--9Pc<=5GuZlEK2qut|QeRdNSuF;fb9mx>Gc!3XNG)uSTLz#g<wLvwGucqftLNotyRaGu5E?7^wh7-6#y?9hd?FCmrMqHsV*%j*fuKtvqC-@?9`uvMF7>}4{+V5O58&GQ stQ3??Mh>qpYHlV+ja~T>jNN~g(q%fRfqHQLqm+}ic2MJsl3$em2h~2APXGV_ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ffb9e0ed3d31989a486aa3f80716459dac14fa7 GIT binary patch literal 2462 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 CJzFsV literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d1b62bb46f8bbc31ce63262971a8c61e19db4c2 GIT binary patch literal 1157 zcma)5J8u**5VrSqo8uBf6c9*MP@P0>3uurK0+NU#TtGR|Y-9P>PR_}`u)T@ylO0-fgCa~rrw4gdbkYt+?-2`GbcR^O@!U^i))}FG{0oDtJ~j`A zO|Heespgv#Do0#@lGT_?*jd}Gm?#fMnrc3z*+i5aRv&GD-rU*S5=u)kZnUV%w>Cn2AyQ!i#OSktX)3`^;E`?@>7_~ zDhRLOE{^eRy@luCy5_%twcu{ryS8qI0WfcO7Qxkxojth&C018sl zg7;xXc_5HCd)N-zKJ;IKO|(-j&oWbGyu#-E9k9CuMhNN+i9C0A*M@6QLzSK zC#FZpmxktx9fzHX0ZZVAp2{_FE7w7o<*U|aJkNnEHvp{IBNhcmrzfB&`^aP5i#*)* zJ?z#k>+TlgD+m_7k`^Shw&0qw&#zcKKgUF~>e|~P-hzt}cu_!1OH}8&mCH>>;#Z3T OUq7}9St9hX`}{xOkQ%Z8 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..94bf10785f236d9d8dfd8c3373174eaebb183cd7 GIT binary patch literal 27198 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..013de9186114a096bf1f6ed7f3d298b1692a4d7b GIT binary patch literal 1157 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 amwWc^IIu^j@&&?0_{&dm62wao?|%S?jf)-t literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6006d0230ec702c95aea39910c45f11d48bc71c GIT binary patch literal 1165 zcma)5OK%e~5VrS~ZInJJDiVkboQMQj(Q-jT2%4f^NI}YNFV<%5CT{nI?X;xoEtM*9 z<_DBx|B|nq_zRqv*=^KR2nnw|JLAVZzWJQ2uC@t`Z{K@IHX!6D8q322;~h-B2Z9q$ zGm_JoQq-Ny$=%qkbvN^JKlW?g%YwWWwgs;enuYHx7AgNV?%K3a+};J{U|h zBX?&;^e2fL3iDZ&BcWhtvtM#qjE5#MVvwX0SqNBtw7^T4 zm&7A6X5O-$CPKFm1eh$JAL(j?FxpICGN{nl~IoQlM!JNRqbxy8A+~EW~ z(}V7c_4Tw8Nj>9sC-;oNo!P?&J}jWZt*1~Sb|WT31xjHv@qAydRkH>Yt<~Zln6`tt02r)Da`6mS zv;%@TXAkd0T|V`Hkz0M_q!#}U9cD=}o&q??g+p{5;Ifx!LQl^VOMYZn~E$0!rWr8hDQ*Hnp00e(fHUy+6f%mb{$%; zBlXtv(G3VqzZBwRHygrfe1>`R3~M^tjk?E6>}v=afENwyM7GwhmvXsnO8BNJ@aKnA#E9_ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..65c85807a0c2e4859b88974c7ea4eef35a711e7d GIT binary patch literal 3034 zcmZuz%TF6e7@wKlHS1*|Jj1gjsrqsiaFdjlG;LY}4zU_cgh?x{RE>;hF*e3_W(@@D zNR@(=s^^|^0;v}+QPo5Lg8mhAt9qhUA5tHOTGv{Y+?l0wuT%Ac&wvvPnHkQD#N9X?O-D3q%;g+$X~H>0`q)g_S0; z$T5W}F{--e)-y8gSMSO4sxP6#MJZp(rK_2$p9Q71S80}y=TQ9(Q=sAmWUD;u6A zOfMoVuR}yUTXc9)VSA2AzDkEu5d@+)FO%OfCP5Er#P`h=Lo8-rb5 zQtlmpRr)*O?v8&2(#O9c{EqMk!k-9#A^eT-55m6){~=faxi1HvE&RN<|M8xaOfOB& z%uHXOoY`}C@+DE;2_~;xou1C(X*NET@tm*(Hvy`oN^9gXJ79+dZBrxM&}eG3G)6Rb zXtZnOAR6kX$q`M(9AyPt6<2E8Sulj4C8Me+fr&qKmsBT`LRBv0-5B%y8Rc7E9*PxDao-JmAfb%2r z{9$~(yy?gDm5l(1R?4y(U(E;WJDGy-SL0iiJTTtLNCBjZK3~lQzKBn4`=#x8F~1tG z>{i#yrE62y<3YaaPgXM7jZDrD;+1?Q&Ou9*WgNFCV6Am+(2&$rWmopWi9E%V?g1dQ zn?_oGdxNd^pK6@j8FMk1I){sl0|+n{50MH6GSdhq1D7&V$Dl%<(~B`v_Jbq`5C##> zBa9+UG~ohDBLLq)32Xp@{LBd5>ucktk2l+hFVsW1Nep*a)5K~>3F0nIBzDG_9D+&? zqio1As8mFn)>xR_XMh^hN2Wrqs)5~?$lR?@Tc z$s-o-m1a-x$j%3$@BaW)0_1~kVV|6GhKAOe9bnAs9pI6k-NBmqg1xDn)Y9@|oqj_` z{tX#75UuOnOUSoj$$KR^i#v6SFO{RH&4+5MsWSs)r zV6qSEH1r%8HF`)N(Hfm6Uwr+D)gW`jcnNI+k|Cdhjs>mAA(hKDSg_C`*!$pwyyF3m zL0-~hAj4R+J{B!quCKt_R(Pt{*Q>T_;~L<>ruO5=gNwk<(Sao|0dJ}ArB29qc>hS; zmx`p8R`_B<4MOsOKE9sMt@G90s?W=%;%*prcmsw}sDttfHZd|)bUv|?m|IDv78=oE z>#0FiDkHlkPg}!W^L_CX%naTDAY(3zFo)UHW{%;q9_kuBhC`hbMk6Q80KcNPx!2of zC0wB`#o#WmXzM%#0nR{2#V|o@K#OfyavW*{?4;YBWP{2n=rPf91?wPkh;;|nFbix4 zEqlX6JLy@v4YP<8(1Wum*px_FZ)vRTw2Quzm)ZLQc``m_Ttif z;%;-P04Tc;q9PTRx9#E)sGl-cx8fO&w)m6$GdAU(M>Vt@rsOjd81HYC?m zQPa9Yn_bY?uxPtr_y`J~$Wkg2+B4+xl8mnGVy2Yaf=g-?<_9_lvQzn`p>gIPn>qb0 z_(!k~WXCEi7!ZlCqOD%Eus2Nr;l&o_`be1Tufjwf8uA)Sn5X14!b_-1RGvVV`Yj0_ z>z*)n=K9g$78}R61s*iKEgX*5!WLZD9Nr520X!hW5&1g))g%Ijh@3)r6CsX(yOQr9 z!~m3APkuUS%j?+x5yB0G4-oJM*H@%`4J94PI(}!Mscg8F;N?@@m7n0~Ed<<>>Z-p# zvVO71d5hcN9WM2~izfXFO7Jd#%}jdcXPK6X{mgZ2$2Q^DZQo$j8HHjns^43wn5DYv oJ``S&5>2QqzqGX(gm%DxYN4R-f25%755q&eiLCUk>QXoRKXyH~@&Et; literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4aba6e79010db673b98c91b6895f64b1c18731d1 GIT binary patch literal 22150 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 bjbFKU-_C=3b*Wl7yavBgi;5j9cFg|)Aw%GA literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..79d909eb455a89944b569f6954c50d5aed9914d3 GIT binary patch literal 37623 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 RpG^op6??yS`oihY{10r4FMI$1 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60a7ece0fb625b940bd7e419d4709b62116228ed GIT binary patch literal 21825 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..afbc36108732c16533525842fd03d188eb9e9a7b GIT binary patch literal 20501 zcmeI22Yi&}8Ne?I0Yp$-xD~|#3W|NFe_*`D=Z!(GgQ&tv>jSChs^A3&0Bqn8zu_a~mgHuo)3JI6Y)w_T6w=vXfAMEqOQtg&~j|G&Gl{jAeFQD5Dx?T$OOy{ywY zPOElOOe(`w-BTaRgEe<2ied+WBVI!zy|QQ6I%Z8EE;qMcR93;pR@-a+P_MkIYSa+_hr`d4jHQ_fH+cA|Ax z5A?1@$JxTMs}`3%?rF5D!S+p4p^+Pf&PCVSTUR?8TfSDO&uP%pmT9}2f6vXL`^bf? z(`PPADsfgnng^S!W@ftYEFs~g?lC%_O)6wv@2M5lrl-xKb$dnFWt?amyPagOt*ja~ zrjD$0%kD9no~Sm}U?<&){CeB%=)T=4WL?iY>uS+%s3%IbuP0d{2i&$?s6{t(o~VR% zx2C6^X0vN6?MLo9>sC)amw!6CX0>Y{yPa}BbOf{G!KY z+QsYiJKOxE$-iZ{T}+&AZ{2k02<=@_*?LNS)3?(qYjwAijI7zdTi2b!*6odVb$9o$ zPJQ#Ea2aSTMSG#G7lo~(TXSpF%vt`_7wD>iY;o!>R&-w_e)elTc3-VW{ZpNGD_@V^ zwW!%sJ#Aw$zsw^&rMI0=l?Cdq{<`R+lKp1nOw?o5m`{tsRXu;7S^La8tw>HszMQYg zPPH95Wot-I#`}sbShuXI9X!eRhTEpC?HKiqJ*|wLavrshotrLxo7qjPbyWWc%h6j= z-Ojq{|6pB(PSDT#5UGB*ar5XNve|Oh3+e3anth8>z53pn#psANQ9wa5$gd{kp+WsP0qQY%i5N_3Q-Rn0E*&ZExS9rYb3^nE`6+?Ho9MrYAw!gh5JP0>u@bJt>bSyeAB zPDXodjk&FxU(Wir)Lpf?p3`cYZXKP6w$6%voOSbcYeuV|d2VsqJQ^>uz13K!4$gY? z#@2XXXH}!wb8%wDW-2>N&bn#Yno;#ay=Ad8>YMGl(fra;{ZZ>=#CfEeEK52oOx1w} zd(@xkitR93>?(J)=bdJY2)i!RM5J@u&+p5wW!_omcfJ05om#^KXGt^1Y0a?R>)3kd zGq1WdI%3riR2k}{9iq9xH)p+V-R;JfMvFo9GqbGg+ohRT4bDgPi@CGDB`Y26SritX z#+u*3wueoNP`!+Pud|(wEEQgN_ANFYjpWy48(Gu$v1_rLK8w#{x6v}MQFB`Jf`nJw z%R0LFxSHzkd0oc~Bz@c&XMNi;U$`EfU3Jzwdn0--T2+nC#ig0hId?2_mmhoMwl(gk zMzvtsSHE-(%Vu3I*}d%%yVjPv>!TfD7NVo(M^7Pl&AQX9_0XQy_=%FAmm0U_UVnme z4ofHD^KdfCaP1ipkm)RNU@uAM4n&-|tv+m5tg~>v~r0Zy)QfyOGdunb+D_ z^z2&gv5)oOGrwHA7kGMvYsy0V(Y2nkw zIayAT88TC5NsXK;r^#%ol{s>{oFQ{%o}4N3Vo(dh)7ZvO1(4$ zbxp}4Sse6Uqb!l7(j;j)Up&c3R+?p*ESC#pMbH@+%0+UqTp}NmOJ${8CYQ^qz=ze> zlx>d9uSk~36|yE-kt~-hWv#4}^&5N4?^d8Ux=X1$I^QRB$5mnFU0s$)_%3ArS*-;2`jS6i46&_HkqB-B+15Hd9a-e z{uCuPXl!l_@>t1j!+($Izra7iKfr7tpaGl<>Oc}?!9vgkUINYF zY%mX;4^9U)U>Qh(S}+lKU^$3`1z-ty8B7CHz^UN00A84q^O&9k&IFUd1t0-tf-}J6 z0A84|SxhrvJea@+xysD|i$Fb?3l@Vk$OZ7i6rarWFHA|c7nWiwYtxyAHELvf5m?F^ z1@Ne)M`gUQ@L?IxVoF<+4?McWqhub{^5_GPYI#&E_bw7u^=KcDKJe&g zuYZ8t9Hg)lS0K^U-T-hII6Oe^Vx%L$kzgR8H$2`2Z!j1Fsz5b31`Gwmz;JLZ7y*t0 zBf%&z8t~?MCx9^la^t`$Ovi!~!ASuI#>xUI_~;7}wr$vsY9n+bv>U1qt%Y_&heH2C zlcD3G8w996yU0V6F4Qm)p?|oh@&3ml^*&5a7;0F-FganeDV~-hY=N)}VYR{JT{q;O>Dv$uV`AC<58o*2J z@oISCMjcW;mxU>#Twt^ymtMz9H74Xy##g6qKb z;0ACbxCz`0ZUMJ~+raH$Gq?lX3GM=SgL}Y-!M)%{ zIQSTN0z3(x0#Acyz_Z{v@H}_{ycocn3C>~q3V0Q~20jix0X_*{2cH6;2A=_+1)l?- z2VVeR1YZJQ20my3UjbhQUjttU-vHkP-vZwT-vQqRt>Am$````m1MoxeBk*JJ6YwVZ zDfk)qIrs&5D}dLG^h@w7@N4iJ@LTXUcnACr{2u%P{1N;K{5gQP9OO#zt&&pulG0j zoBXT&YyIo|>-`)28~vO7oBdn-Tm9So+x^Y{9sZsEUH;wvJ^sD^eg6Ia1O9{lL;l15 zBmSfQWB%j*6aJI_Q~uNbGyb#wbN=)G3;v7#Oa9CLEB>qgYb`5VE^E2GWmU`SmMdD; zv|QP;wq;$*hL(*jn+El0?Y$uQx|K<0<4Y4ulC3=(6HDux6ZOf~-B^!jo8nELB)#~O zM7nhs+l(*ayIE_$?22@1L8399Zpx&xsb$Hym&m4?T6bTZOs3c?_OBl(6l63ok}mxWSZ0ICNEoE zm&!COPb^9%v(?S%R6MnGc@R;2VX841uS;Z-Qe72L4N2?SW+qH#mcm^^Ln?Hv2A@`>V9c#+n>QZ?Ek~M=u6U$ c%K%*$>q-Aqc8hxPZugx^o$-I2fet(4-^n7+RR910 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4c6eddb7e339183a5333e43cf2a53f776e72c15 GIT binary patch literal 20569 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b8ab98001f57928dd542b84ba539c139eeb5034 GIT binary patch literal 21770 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..41e6ab95e016000828685a7c9be32f8c99c081d8 GIT binary patch literal 20585 zcmeI2cXU-%7KdLF6hyF#U9pQwVi#<50clFWg5~+bevk(#&yyDv?7jD{6npQzmkCaH zdd>84TBbR@IQ4$-$DVUvfSEPpT9bdCcjddM?6dc8?{m%#Ynj~O!2>hNe^=a8zu>t= zHJSJ5r2ng_$z(<+10DPAl*w4eYFaX_HFJ{Dr2XGLwPpJ{eplcl(SygsD$dd-a-{+) zP*;AKR~}KH`tkz3C5yEwkQI?*%hlo0e|!u(JVxuvmiN+c<(5|9vv{ra7UTFF8r(*n zYLmXQLWdr#Re?$m>d9IPe1$S|B^vcJM$i4Ze_3LIPj*5!KCjU@tH?ybLeWrw#hR>$ zCttGgY&>_*SpKM+e5f zXGI=R5MxTA@<^}s$eP!g*X_rbzJ}DnYrtA%Sn0*<;(mCm2CgBhmp+Y4vFV{ycSWHEw`lQiS`CH>yYF-|_ z&h7y{9!rswjoMLhJc;h-|Nr(~P>rHm8){AbMH0dbBe2PKIe|p?+;4Szb_d_qkEU0 zSS_FFT?55e#XU#Xx-Q=C8Q+Q-wP=JoQDN3$6`!;p`IiDIW5idoMmy(Z#&zrdvx-rv zPz}^4f5mq%F$=B1E86PH=fHJErFc~|jcI3no*J;;YmT*70sr)%*PwEB)Dml;+*Lo1 z!fN-Swst~o>GP;M395mVX~cIct-w_gNBh(J9Jm5kmF|06%7~&JB7#R&)m0zmNX+=C zm*(0ONT07%7V;QtgAE!~cPXM$eimY!N)_%^{??|zqq%kZEp^0A$5Z9K8d62%HAlyv z{GedqVG*mLSgsx4Yp#JJ$~vxA9Z(lDrKO!v)>12N ztY=Q^d^K;4#Tuk7yv?i>Xe3<^)j;`c&wb~yVpe^{iYw`>=Vuu$=^8Mbe$ommGf^a+ zf939VLAUk+6&^Esm7nws3fy~d1?j%Gu_cCbjeE|BS0yUI+E+#uKE{k{;0k1ujuBU- z>!CA79L|8M?pmlztb(hJeiTdI)b?HQ8BP{${IFiL;l$(M4M7uon) z=5G)cu_}a(byQrv9N9Aqw7+zu7tx17L zBDx-rnyvv>%tpVSRaBr|@LcuQ9<$1`P+NY;NqfX>JoTrH&*feMBttHnxz-_3g7BUmD(tXK6K7J zn$8;jw9BkhPcew1)97lv?>AL3v8EN@ipWV>`!`Xw`1f?BZdF5^xJ*=+vn)Vb#XS1xuxDxk*-1I zy-9mh&e0Q=L|`{`?zI-`-nfPADkHmRtw}5BZMWurtZ(luy|SL6uaC+Zi9NNXz}J$K z#`RUFr!iWZAxDiWPn}9ebPkDvg)$_fc1LH*I|3R~3*N*RMF~9adGe#+B34qjidkZ(8z=_gDidCT3iz?6B7p zSF3_3WrbF$Dv(jUcszMj1bJg#ict__Y7KFiC9|kTEmY%QaTE*s!>afY(<|fad8
    sK8@NtLmuQdwfMvZDM@Q5>pYC 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 I@7krm0pt-~(EtDd literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15ee02009260aedcd59bf053bd94ce2dfd08f622 GIT binary patch literal 2277 zcma)7-EJF26rP#=$=X@FY0{rmKrx_#jA)DmTvRFuNJ1NlIw*Fzu!Kfy&%|D5z3a}7 zTVmWB5>yF^J02kBuJ=3vk1@Ag^%YR1aLzbM6PifOdXDGJ-}&au`OZY8QjtLU_4k$j z!xABXqjI{qpnM56{}_ZIf+l1@Ta;p(C2ZidoPpbNDY-|4Biwx=TuJwwmM6RhsroM{ zEUQveTJ1%uA@z4EYfDvSCd5{pb{jg<(u5D9PA^WS)jF``OhF7-^6x=N(xQU2n4m33 zTzW>fskK{Zxwh>Ie?Mq>(id|g*e83mH3#j2DB5-)=0&(qS_M%OW%w^XBQ9yp1JVU^ z?ZGI~@z=Xrp20e<6f029AGAaD4zuuP0^80}%|C*MCYnyj9_zCS74$djx(VTqARt}A z1nV+rd4d28rw-1VPolKTx8p=h^#XUT`o_ygL#dPpnh7|M(^zwEu8KI}>0%1wsj&dn#E01ORxR%82+HhC*vh_lCe*M{-1#$lGoR1F~r*lW#=^>QR}}!z2T=0>1fh%6hj0A$`95DcK79vc z>$qV1#O-%MId=O2n-U7H?mOxx$`jpHE1&=< zIio@l~|5LHI8fZ{TWMG&{4<~WDYG90I9>-fzJ4rMog?L>I0Ron+*X!0{eegkaQ z;r5p5ncf%-6FHEnmSSD0OsOT9HiL13#e_%h=4mvLpW$XUT-o@&3!t2y|NjuFD`@vB zit`Wz7|$aJh&!jOUv#_2bI*_p!yYfh`htO1?CsJ$_}0h|e?A2Q_1S?lp%Zq4OzBf+ z;%K+;?J!k`5&vLL00sL2)WU>KAzSHUe;!B|Qu64pN1>fvg4x^9U;a=3CFl?B{tHv` z)SUofq2~`EGuVRu%fh*f|BDAps7>4{0E9hfJ%C6!%LL_h@(Zpw9;d=RTF>nID`5L7 z?EKQMyf!7+I=DW?y_a`f_3{`S=vN?Bc=ho+xAF@7W<;v=VqJk0k*P|gD{aVQFlNJ8 zVHmwQgi^g>JO!5_jg!dK#T4OCsZL zODQ0`*=L}zw%%M{ZEn=>nM>VFbD3tNZjXydN2YA|$+v8Xe|U7+#DfTf}F5Ky$^^!hnjy1g3tx{iZr0bLze}X zxig79RAsaL@*xbJ z$0vmYEvPdh)A6kfET8pQmDZ~vz8#nc;O!`KKFGufvN<;)=Z{8Fax^l>xyU-4+q`UZ znF%1q;Qi6Nr{VxzX0e#k(M!^iNdn7Wxz?sdn-P)0?;>VQjRAGtvL6PF79Fg?TQQ&vuH(FAvANBZI>n!;!f>4Nhw8}}>k literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..83b93c9c7dcbfb6acefdd67cb64883431bebe487 GIT binary patch literal 1146 zcmZ8gTWb?R6rR~jF1s6R;{~65k6;#Cg%(7lQHvErF)hNr44a)vvgvHH&TLw$c@R=4 z2)_9P^s#?w@XaUxf%xQ^Nlequ@*U21b~fkooy4`8hv0nq)*SvUBlJs?)#Ctp4v?S0 zP((3D8ICa4zQwJ~j%?%G+{xU?HNL}3Sve{j-{qC88dZ&7;$G%QzVXXE$ZAo|_!WL5 zTZ`6=U*$Km^=KWVT|_y`tTfS1Ec5l;Xukrm0rCZy z0u^|QX4cS}Vv4_l423;Ig#&N_B|sTa0aO9r4D~BhMEoiG9{fOhz>w8y!>D{7kNTvS z@&YDTQ?8ukOb8!xs0tzJC@lyPIWnK1^ah ze`C_9+M?@(aSpS*4GHI_uDv_j=y5jy(g=+WZ#QnKx^4jmxl+B*SCls?dRy~$j5x}Z z!&EK;S}5hSNitk?Y*bT0zpFQWaY<`vE**(QL<_3?B!_)pM6|lf>%z(}0$OSFQE{?} eXxUAu7j za~|^t@^5(F*HooS{~#epWx97~XLsZkI*d`mdP{S4f89MjJ-xH*&BbET0Q>v#r`4A~ z3vjr+0T9|{0OwXej206KhBG2F2z|F z5_*uRdWiNBjRt9m1WD*;O%Ic>9kT#>uQ8QH#!XG^=I1y!u=Qx0m;!=3`Lv zap%}^Z5ekQ50@v?8gvxy=}|JE56}o1q)|FRV(6%%n0)@q0jlM%FcgpBH=mJh|+%GzWrIUS`JM)WZdYnw^ zQ*@HVX`D`xDV$M)B=j?uOquo~?z+|tjJ1^og& z$GFea3*;Qyy~ymoh=@2VJF!}0*1$Yqepo}_9I;BU3#8Ap%R%E@+)|UqM{Swh`XzE+ zzeJg>bctRf7ts1;vZyC5Jn%Vv+)pl&L9#?HF|D9o`@rm6SXq{%?^-i9-fkcD@VPqV zwyK}yVz}BxLS(|#E{^kef@R*vi_7SwCQI$2*t+A@F3!nME;@Uyw7b&j$}p{H1D?V= z{W4kBuh1k((#!M;xr}?_D!GygB(K&LcJ4|l#^7cyzgyg=nOd$!mji6H0+gYBgKS?Ubl7Xm$#@eC?oO3{)YfTBM=;ZmyCo(S570?&tPSGT)l! zc9S!^!G6koYo_Usk}5*5zgsPu`=C`RACJ$|J`8HiVnZUZx*oJ$)Nn) zg;9j@1Xdpf)6dse9z8q3XZ_Fp?CE*3@(CY$k<^>}NV2Mhq~OVdn@<#;e5XM`GfqR% ze?kW=a#B6+#A&9;$6IEKJekRekm^t#3g{5)!`i&Z_maazezR+G24u;$5-e7uu32YL|RsT_sBU!jNjmD-!n^K99EC^g>*lArx< z>q#6l5hk3Te4E*u?^u1SPVDWsGjV!ua@f#D@c!EM8`rLXo*C2AH60TC6xn);lzfFA z_q>A%W>1#WAP6)3Rwpan^%_Yh{I2D>A1c_ZOB@ipAD7u?G9sDXVxg9O^e|)QOPk_2 zqBb8x(SpS-zhx;x0JhK#(pdXlPiM9-%12nAp81aO9l=gnoo?*j3?K1u1K%_>{=WyU zwr`L};pf};R<3=umTu&dluR_#Kw`EUW$2D5Q1)8)M!20F1?(74<>jivdf57j^JZ9Sss*n*u880C~v~ z$Kg~ki57;d6rUm%MTppoQ3unHG)T|4o+MWcjqV@rRV(oMxDj4^c>iX0eIsLN>8-7& zTZWd|zO%J$1Rri^vYTlmg!Ig|F>W$GxU-erNI%JL-&xy88!?l*ncaMPH@#s*@arg) z7B-sSw2wMy~ZVtJDF_X$+(dX-#>uYIKtJMar zeAo>h<{U2gh6B#p91g?Bz=4Cq;SPVxG#XoAv^nGk#!RXO`z26$01*zw`$}r}V2`GX zKUsBy)X_n(Af2xI_uQ(FI{=K%m4rY literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..51e89a7c894c29e6d565b8897d1c4fca5abe41a0 GIT binary patch literal 3130 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 LQ~%Nc+0_3Bhd99$ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..71db276bf4bdd0a48ade0e3c1eb81e7e19d69411 GIT binary patch literal 2498 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 E0~;1B+yDRo literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..77667ab23b772e92ed6ce00823d8f18e6a11aa2c GIT binary patch literal 2007 zcma)7OK;mo5Z>iWluX&K9rOVdJ)}Si6^VtSC~5;m-PBTS1GW@M@X_r#ejmU`2t{GchOWS5-$4=MLx)l{-x9d`}Nx03O zbHW`#&&+O-7uuxaUQsx%LRER=z?W^2J(r`NkQGCDsD;UXJM%N4yj?#y2os?#SiZC| z;x`|!Kj9&JooB18y~}o+wfar~C*OO_Yb))5B1o5V(lt2knlDM8a)X=aZr9Sf#cj}S z;c$l+&dC|=7C?7-QR^-*@wsyXDR{gL@6t1CS!ZA~n-h@Elw1^Wo)b8pHY%>N)5%y!S%9s|Wh_j>j4^40 zDIJ_E1{xZc#;VMcNzCFN3jo|y*;1q;dqb6#il`6oB4a`1rzvA^$lpiRgHbH1;dq#W zhw(^e)n1q$yzmD?WYx(y1XnM7$yq;)1nc>!;MJ8QksMW{uvZ-)X9uI?>y@=?8fN0j z*bj#OzDTR%a9m}uijQO!qu_W})?Xd#dtMnI%OV8*2uA9HAatIVs6$Vd?{HkXN%FsO zdiY?KXhERH_Vd={`6lD|(C_X^3gaVg5hLIw^d4wm6 zGx2Fy{}miw^ak$2&fyfU&uE<3ko%L>{A}$?d%1O`JbhClV~HP&uW+{kf*2ulcV(T)6Me*$;)&5XBM^l!cgIueWq9?S`cPVhA-Q(7ZG^-m4Jom|kVaY;|j zshJrAb7;uNnKiJnnkhMq4lO-jfcYBCyYI{wVcycGlr90bp^cVB26No_mKcQ1!G1FE zU}qUtzJmUkzl2U1EDSCA>gGIL0f3v0D-2p{j#<>VtV)UaIb$iZio^_*U2nCTEs6c8 zoJO<5cI(Q?7bs`D(?;8U*4%5<*mg(R?atFyM=kHe9R(99MFMZA>qsQJfS^4!VHIoj zPJN@Z-Ply~dhICbhg>9qP)qHtW~;NY*I}KlRvnC;TE&v{=-=%fX99dnMFXgX>qgeG zzEdbxUkJVid(zK95b9D78pnm!xsmg9(eR+1T;pV6rg(7Qy`n*cFnN8IE1+=ntj7M^&EHQRy!~_i3LE5__WoM07&#*4W~0tF zww|`w^H%dmnANE|lOzg@_oJ zQb7Lw97c+kOD)55Jlmip6NkI3$)!;#sq%HV=7c8^ZDkAK^WcE#c~Upa=*)y{{B-82)WGz)I920{{XeP$0+~+ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7437c7794892631c1cc9f86b0f2dacea7ac4264 GIT binary patch literal 454 zcmYk3u};G<6h#vnC<QE5QOn2q73)Kmx?j#d7M`=9R>@Y^SCD1ZF+}MrQsd zD}TVqgegVhNxs&V-*E1=+}_TUI8V=P@)_@sAM<}Y(VWKPccQ3dkf?N!V*0YC)?U*= zM|EzKUbcA8?@IDe8`V?@_((o@FuIyUFyN`S6^-WLFgU^~=`n;7VT#U^(V&~UKnG?7 z!%{khAs;zY!;C^n8a#%^GCK#U6)YcCTi~0*%He|?qi1=3B%4qgcLe8B!&xQuat(Hs z)U5ckr{h{u#fGNt<%{(L)@S`TWmmnd?FymHP>6O*h!t2g>pqf)wtIhZb9;Gx^_IAe zSi@4jJTFa+oa}@5jkU%FUXU+ma)KCmV@Z&n#XMp}6^cT7RGdvwPkBWJxARD=_t_!$ m6mah^2)AT;1klPjz6#1$Jh6m!^Z2*pll13LvM5 +# +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +#Char to FreqOrder table +BIG5_TABLE_SIZE = 5376 + +BIG5_CHAR_TO_FREQ_ORDER = ( + 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 +3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 +1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 + 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 +3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 +4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 +5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 + 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 + 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 + 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 +2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 +1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 +3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 + 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 +3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 +2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 + 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 +3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 +1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 +5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 + 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 +5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 +1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 + 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 + 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 +3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 +3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 + 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 +2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 +2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 + 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 + 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 +3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 +1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 +1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 +1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 +2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 + 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 +4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 +1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 +5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 +2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 + 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 + 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 + 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 + 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 +5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 + 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 +1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 + 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 + 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 +5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 +1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 + 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 +3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 +4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 +3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 + 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 + 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 +1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 +4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 +3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 +3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 +2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 +5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 +3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 +5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 +1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 +2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 +1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 + 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 +1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 +4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 +3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 + 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 + 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 + 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 +2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 +5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 +1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 +2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 +1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 +1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 +5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 +5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 +5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 +3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 +4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 +4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 +2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 +5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 +3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 + 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 +5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 +5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 +1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 +2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 +3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 +4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 +5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 +3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 +4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 +1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 +1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 +4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 +1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 + 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 +1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 +1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 +3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 + 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 +5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 +2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 +1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 +1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 +5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 + 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 +4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 + 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 +2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 + 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 +1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 +1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 + 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 +4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 +4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 +1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 +3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 +5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 +5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 +1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 +2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 +1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 +3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 +2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 +3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 +2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 +4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 +4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 +3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 + 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 +3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 + 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 +3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 +4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 +3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 +1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 +5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 + 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 +5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 +1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 + 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 +4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 +4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 + 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 +2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 +2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 +3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 +1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 +4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 +2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 +1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 +1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 +2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 +3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 +1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 +5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 +1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 +4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 +1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 + 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 +1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 +4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 +4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 +2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 +1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 +4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 + 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 +5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 +2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 +3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 +4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 + 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 +5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 +5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 +1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 +4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 +4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 +2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 +3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 +3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 +2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 +1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 +4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 +3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 +3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 +2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 +4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 +5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 +3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 +2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 +3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 +1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 +2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 +3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 +4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 +2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 +2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 +5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 +1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 +2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 +1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 +3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 +4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 +2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 +3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 +3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 +2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 +4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 +2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 +3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 +4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 +5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 +3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 + 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 +1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 +4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 +1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 +4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 +5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 + 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 +5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 +5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 +2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 +3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 +2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 +2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 + 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 +1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 +4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 +3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 +3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 + 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 +2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 + 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 +2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 +4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 +1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 +4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 +1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 +3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 + 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 +3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 +5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 +5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 +3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 +3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 +1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 +2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 +5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 +1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 +1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 +3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 + 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 +1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 +4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 +5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 +2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 +3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 + 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 +1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 +2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 +2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 +5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 +5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 +5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 +2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 +2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 +1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 +4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 +3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 +3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 +4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 +4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 +2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 +2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 +5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 +4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 +5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 +4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 + 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 + 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 +1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 +3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 +4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 +1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 +5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 +2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 +2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 +3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 +5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 +1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 +3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 +5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 +1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 +5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 +2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 +3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 +2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 +3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 +3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 +3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 +4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 + 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 +2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 +4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 +3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 +5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 +1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 +5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 + 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 +1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 + 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 +4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 +1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 +4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 +1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 + 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 +3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 +4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 +5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 + 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 +3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 + 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 +2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 +) + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5prober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5prober.py new file mode 100644 index 0000000..98f9970 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5prober.py @@ -0,0 +1,47 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import Big5DistributionAnalysis +from .mbcssm import BIG5_SM_MODEL + + +class Big5Prober(MultiByteCharSetProber): + def __init__(self): + super(Big5Prober, self).__init__() + self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) + self.distribution_analyzer = Big5DistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "Big5" + + @property + def language(self): + return "Chinese" diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/chardistribution.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/chardistribution.py new file mode 100644 index 0000000..c0395f4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/chardistribution.py @@ -0,0 +1,233 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE, + EUCTW_TYPICAL_DISTRIBUTION_RATIO) +from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE, + EUCKR_TYPICAL_DISTRIBUTION_RATIO) +from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE, + GB2312_TYPICAL_DISTRIBUTION_RATIO) +from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE, + BIG5_TYPICAL_DISTRIBUTION_RATIO) +from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE, + JIS_TYPICAL_DISTRIBUTION_RATIO) + + +class CharDistributionAnalysis(object): + ENOUGH_DATA_THRESHOLD = 1024 + SURE_YES = 0.99 + SURE_NO = 0.01 + MINIMUM_DATA_THRESHOLD = 3 + + def __init__(self): + # Mapping table to get frequency order from char order (get from + # GetOrder()) + self._char_to_freq_order = None + self._table_size = None # Size of above table + # This is a constant value which varies from language to language, + # used in calculating confidence. See + # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html + # for further detail. + self.typical_distribution_ratio = None + self._done = None + self._total_chars = None + self._freq_chars = None + self.reset() + + def reset(self): + """reset analyser, clear any state""" + # If this flag is set to True, detection is done and conclusion has + # been made + self._done = False + self._total_chars = 0 # Total characters encountered + # The number of characters whose frequency order is less than 512 + self._freq_chars = 0 + + def feed(self, char, char_len): + """feed a character with known length""" + if char_len == 2: + # we only care about 2-bytes character in our distribution analysis + order = self.get_order(char) + else: + order = -1 + if order >= 0: + self._total_chars += 1 + # order is valid + if order < self._table_size: + if 512 > self._char_to_freq_order[order]: + self._freq_chars += 1 + + def get_confidence(self): + """return confidence based on existing data""" + # if we didn't receive any character in our consideration range, + # return negative answer + if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: + return self.SURE_NO + + if self._total_chars != self._freq_chars: + r = (self._freq_chars / ((self._total_chars - self._freq_chars) + * self.typical_distribution_ratio)) + if r < self.SURE_YES: + return r + + # normalize confidence (we don't want to be 100% sure) + return self.SURE_YES + + def got_enough_data(self): + # It is not necessary to receive all data to draw conclusion. + # For charset detection, certain amount of data is enough + return self._total_chars > self.ENOUGH_DATA_THRESHOLD + + def get_order(self, byte_str): + # We do not handle characters based on the original encoding string, + # but convert this encoding string to a number, here called order. + # This allows multiple encodings of a language to share one frequency + # table. + return -1 + + +class EUCTWDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCTWDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER + self._table_size = EUCTW_TABLE_SIZE + self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-TW encoding, we are interested + # first byte range: 0xc4 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char = byte_str[0] + if first_char >= 0xC4: + return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 + else: + return -1 + + +class EUCKRDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCKRDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER + self._table_size = EUCKR_TABLE_SIZE + self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-KR encoding, we are interested + # first byte range: 0xb0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char = byte_str[0] + if first_char >= 0xB0: + return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 + else: + return -1 + + +class GB2312DistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(GB2312DistributionAnalysis, self).__init__() + self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER + self._table_size = GB2312_TABLE_SIZE + self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for GB2312 encoding, we are interested + # first byte range: 0xb0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if (first_char >= 0xB0) and (second_char >= 0xA1): + return 94 * (first_char - 0xB0) + second_char - 0xA1 + else: + return -1 + + +class Big5DistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(Big5DistributionAnalysis, self).__init__() + self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER + self._table_size = BIG5_TABLE_SIZE + self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for big5 encoding, we are interested + # first byte range: 0xa4 -- 0xfe + # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if first_char >= 0xA4: + if second_char >= 0xA1: + return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 + else: + return 157 * (first_char - 0xA4) + second_char - 0x40 + else: + return -1 + + +class SJISDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(SJISDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for sjis encoding, we are interested + # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe + # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if (first_char >= 0x81) and (first_char <= 0x9F): + order = 188 * (first_char - 0x81) + elif (first_char >= 0xE0) and (first_char <= 0xEF): + order = 188 * (first_char - 0xE0 + 31) + else: + return -1 + order = order + second_char - 0x40 + if second_char > 0x7F: + order = -1 + return order + + +class EUCJPDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCJPDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-JP encoding, we are interested + # first byte range: 0xa0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + char = byte_str[0] + if char >= 0xA0: + return 94 * (char - 0xA1) + byte_str[1] - 0xa1 + else: + return -1 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetgroupprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetgroupprober.py new file mode 100644 index 0000000..5812cef --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetgroupprober.py @@ -0,0 +1,107 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState +from .charsetprober import CharSetProber + + +class CharSetGroupProber(CharSetProber): + def __init__(self, lang_filter=None): + super(CharSetGroupProber, self).__init__(lang_filter=lang_filter) + self._active_num = 0 + self.probers = [] + self._best_guess_prober = None + + def reset(self): + super(CharSetGroupProber, self).reset() + self._active_num = 0 + for prober in self.probers: + if prober: + prober.reset() + prober.active = True + self._active_num += 1 + self._best_guess_prober = None + + @property + def charset_name(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.charset_name + + @property + def language(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.language + + def feed(self, byte_str): + for prober in self.probers: + if not prober: + continue + if not prober.active: + continue + state = prober.feed(byte_str) + if not state: + continue + if state == ProbingState.FOUND_IT: + self._best_guess_prober = prober + self._state = ProbingState.FOUND_IT + return self.state + elif state == ProbingState.NOT_ME: + prober.active = False + self._active_num -= 1 + if self._active_num <= 0: + self._state = ProbingState.NOT_ME + return self.state + return self.state + + def get_confidence(self): + state = self.state + if state == ProbingState.FOUND_IT: + return 0.99 + elif state == ProbingState.NOT_ME: + return 0.01 + best_conf = 0.0 + self._best_guess_prober = None + for prober in self.probers: + if not prober: + continue + if not prober.active: + self.logger.debug('%s not active', prober.charset_name) + continue + conf = prober.get_confidence() + self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf) + if best_conf < conf: + best_conf = conf + self._best_guess_prober = prober + if not self._best_guess_prober: + return 0.0 + return best_conf diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetprober.py new file mode 100644 index 0000000..eac4e59 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetprober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import logging +import re + +from .enums import ProbingState + + +class CharSetProber(object): + + SHORTCUT_THRESHOLD = 0.95 + + def __init__(self, lang_filter=None): + self._state = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + + def reset(self): + self._state = ProbingState.DETECTING + + @property + def charset_name(self): + return None + + def feed(self, buf): + pass + + @property + def state(self): + return self._state + + def get_confidence(self): + return 0.0 + + @staticmethod + def filter_high_byte_only(buf): + buf = re.sub(b'([\x00-\x7F])+', b' ', buf) + return buf + + @staticmethod + def filter_international_words(buf): + """ + We define three types of bytes: + alphabet: english alphabets [a-zA-Z] + international: international characters [\x80-\xFF] + marker: everything else [^a-zA-Z\x80-\xFF] + + The input buffer can be thought to contain a series of words delimited + by markers. This function works to filter all words that contain at + least one international character. All contiguous sequences of markers + are replaced by a single space ascii character. + + This filter applies to all scripts which do not use English characters. + """ + filtered = bytearray() + + # This regex expression filters out only words that have at-least one + # international character. The word may include one marker character at + # the end. + words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?', + buf) + + for word in words: + filtered.extend(word[:-1]) + + # If the last character in the word is a marker, replace it with a + # space as markers shouldn't affect our analysis (they are used + # similarly across all languages and may thus have similar + # frequencies). + last_char = word[-1:] + if not last_char.isalpha() and last_char < b'\x80': + last_char = b' ' + filtered.extend(last_char) + + return filtered + + @staticmethod + def filter_with_english_letters(buf): + """ + Returns a copy of ``buf`` that retains only the sequences of English + alphabet and high byte characters that are not between <> characters. + Also retains English alphabet and high byte characters immediately + before occurrences of >. + + This filter can be applied to all scripts which contain both English + characters and extended ASCII characters, but is currently only used by + ``Latin1Prober``. + """ + filtered = bytearray() + in_tag = False + prev = 0 + + for curr in range(len(buf)): + # Slice here to get bytes instead of an int with Python 3 + buf_char = buf[curr:curr + 1] + # Check if we're coming out of or entering an HTML tag + if buf_char == b'>': + in_tag = False + elif buf_char == b'<': + in_tag = True + + # If current character is not extended-ASCII and not alphabetic... + if buf_char < b'\x80' and not buf_char.isalpha(): + # ...and we're not in a tag + if curr > prev and not in_tag: + # Keep everything after last non-extended-ASCII, + # non-alphabetic character + filtered.extend(buf[prev:curr]) + # Output a space to delimit stretch we kept + filtered.extend(b' ') + prev = curr + 1 + + # If we're not in a tag... + if not in_tag: + # Keep everything after last non-extended-ASCII, non-alphabetic + # character + filtered.extend(buf[prev:]) + + return filtered diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__init__.py @@ -0,0 +1 @@ + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23c98f0ba93b63ba782f4f9b0e376ee890405e60 GIT binary patch literal 211 zcmYjLF%H5o3``{kgw%&HP!CK<2=M|I9uTFCp>9iKC232)z|1H35-U$&W5S)_q&v$e z-^nIT7fNuuXH_EeH7);`%)KzoM65chWpa2ZKiNO|T%mLq1mZe`j@kJLIfZgC6=H;r zNmDx*Z}o{9)VT?0A?va2p`jdjjHPSW*#-hdT(K!?bH)Hn3|g+N^H7u$m#(5A(9%Xx T>x{?ee0y=WYj8Jx^cJcwJ#RYq literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..786eecc62869a5b33318f9f58a58fdb0da39084c GIT binary patch literal 2705 zcma)8TaOz_74Dnco*s`gdjTm6MD;*Kyqd8$fjnR#1loXDX*G&=1JW9HJ7rgS+@8Lr zs(Oqa&(rXP$QwUkES~rc{F8d!C;kFr6~5E9XB}l9Xv@`gId!VeIp6tC^P{84!SmO@ z_h$b>?`sNN!!M*}MJ`#PSXL;>CP^w;$<0(Vo(raAStvsy%uHpXn2<(}jTDj0$Aw7p za~(y$`7_VTR1OAF#PHl_<0)4gL8gmL);g(EK!>7HEw@`5uz8Y;Vy;ggK6?BJ12bjg zBA+AzXGr!@@A0kpt%3pLdYmM02|w(86h)s*SYGUmfK8<;E}=}Eu*7UlPGD1#mz7}? zRb)&Xn9_@)e(#dR2u7XjG_PZi${39^ZPuZX`Vi*eOD;ksLvaFblUc5;2q-sG5&gq#yHo`mA7)9 zIA5|W-?%IP+P(5u-i^2N*RJcVyqT|ngcm0-BFqMB#2IsqtH6ZnY~|iGP3z`h4MeTI zD|ZzL@2;a#;on57?Fe(hU1tq!hz8BBUGzdArMdj3_V{PgR4Qj2?t%5^h`k1QM$||7#3nAlU< z+w3umaw|7rpODY#WT+l3jMV#TbDqfoJ3~v$+uHz8X$s&XHZ)tGx2Jcr2e+)}Y?z$q zNCw;5U1NFo<<)?_ym||7FRyI$EmoIDBnIp$sjJkSbq`e&p|l5dNv;%M*kB^1uz^6% z*~U06w6x(yT2c6IC?w&^`g)=5_uvjP0DU8~-DPYzDOAQyw_zK#AvU1a zF3hyZf7<(bUjyf-B_Ch#bE*4fQucv$WUcCNlf6GqlU*N_ugArN?xXLa zaiY*|;TL(KOTEwy++)1kZumOz)ej&s236fY0ea-eIye4?j&Wu#vF9rn$aZI*@I_#p z8(%cmt_V$_9+<`~%tLBt&2v{YUp0^&BnhSz(M`)7K=SaFPqVb!m=78#+4T=#}R>=E&SxVQqGN?Oh`SU;IgQh*y_i*Qog&_!6N4(z1-GlS09` zIZ)PTGpKWHbBDdmt=E=+c=rF+ z3gquzp}4)w8=W1NHPPlCOl+fO<>gnur8+d9B0s+6f;nc2DkaxmNMZ}BF)Ab5-%$Sc z;DL}6j*J{^n7(U0HL~u9-M|J@nU*#n%WWfv?b;4BDV%5>3VPm%MQef;dRPfwpPGfz{U2DZ5J(rQ=RSntM&{iq self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrfreq.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrfreq.py new file mode 100644 index 0000000..b68078c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrfreq.py @@ -0,0 +1,195 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology + +# 128 --> 0.79 +# 256 --> 0.92 +# 512 --> 0.986 +# 1024 --> 0.99944 +# 2048 --> 0.99999 +# +# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 +# Random Distribution Ration = 512 / (2350-512) = 0.279. +# +# Typical Distribution Ratio + +EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 + +EUCKR_TABLE_SIZE = 2352 + +# Char to FreqOrder table , +EUCKR_CHAR_TO_FREQ_ORDER = ( + 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, +1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, +1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, + 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, + 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, + 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, +1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, + 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, + 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, +1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, +1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, +1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, +1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, +1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, + 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, +1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, +1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, +1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, +1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, + 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, +1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, + 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, + 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, +1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, + 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, +1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, + 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, + 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, +1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, +1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, +1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, +1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, + 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, +1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, + 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, + 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, +1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, +1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, +1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, +1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, +1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, +1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, + 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, + 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, + 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, +1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, + 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, +1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, + 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, + 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, +2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, + 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, + 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, +2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, +2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, +2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, + 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, + 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, +2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, + 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, +1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, +2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, +1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, +2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, +2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, +1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, + 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, +2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, +2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, + 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, + 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, +2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, +1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, +2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, +2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, +2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, +2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, +2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, +2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, +1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, +2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, +2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, +2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, +2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, +2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, +1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, +1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, +2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, +1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, +2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, +1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, + 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, +2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, + 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, +2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, + 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, +2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, +2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, + 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, +2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, +1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, + 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, +1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, +2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, +1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, +2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, + 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, +2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, +1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, +2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, +1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, +2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, +1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, + 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, +2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, +2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, + 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, + 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, +1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, +1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, + 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, +2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, +2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, + 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, + 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, + 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, +2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, + 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, + 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, +2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, +2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, + 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, +2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, +1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, + 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, +2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, +2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, +2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, + 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, + 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, + 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, +2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, +2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, +2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, +1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, +2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, + 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 +) + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrprober.py new file mode 100644 index 0000000..345a060 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrprober.py @@ -0,0 +1,47 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCKRDistributionAnalysis +from .mbcssm import EUCKR_SM_MODEL + + +class EUCKRProber(MultiByteCharSetProber): + def __init__(self): + super(EUCKRProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) + self.distribution_analyzer = EUCKRDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "EUC-KR" + + @property + def language(self): + return "Korean" diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwfreq.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwfreq.py new file mode 100644 index 0000000..ed7a995 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwfreq.py @@ -0,0 +1,387 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# EUCTW frequency table +# Converted from big5 work +# by Taiwan's Mandarin Promotion Council +# + +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Idea Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +# Char to FreqOrder table , +EUCTW_TABLE_SIZE = 5376 + +EUCTW_CHAR_TO_FREQ_ORDER = ( + 1,1800,1506, 255,1431, 198, 9, 82, 6,7310, 177, 202,3615,1256,2808, 110, # 2742 +3735, 33,3241, 261, 76, 44,2113, 16,2931,2184,1176, 659,3868, 26,3404,2643, # 2758 +1198,3869,3313,4060, 410,2211, 302, 590, 361,1963, 8, 204, 58,4296,7311,1931, # 2774 + 63,7312,7313, 317,1614, 75, 222, 159,4061,2412,1480,7314,3500,3068, 224,2809, # 2790 +3616, 3, 10,3870,1471, 29,2774,1135,2852,1939, 873, 130,3242,1123, 312,7315, # 2806 +4297,2051, 507, 252, 682,7316, 142,1914, 124, 206,2932, 34,3501,3173, 64, 604, # 2822 +7317,2494,1976,1977, 155,1990, 645, 641,1606,7318,3405, 337, 72, 406,7319, 80, # 2838 + 630, 238,3174,1509, 263, 939,1092,2644, 756,1440,1094,3406, 449, 69,2969, 591, # 2854 + 179,2095, 471, 115,2034,1843, 60, 50,2970, 134, 806,1868, 734,2035,3407, 180, # 2870 + 995,1607, 156, 537,2893, 688,7320, 319,1305, 779,2144, 514,2374, 298,4298, 359, # 2886 +2495, 90,2707,1338, 663, 11, 906,1099,2545, 20,2436, 182, 532,1716,7321, 732, # 2902 +1376,4062,1311,1420,3175, 25,2312,1056, 113, 399, 382,1949, 242,3408,2467, 529, # 2918 +3243, 475,1447,3617,7322, 117, 21, 656, 810,1297,2295,2329,3502,7323, 126,4063, # 2934 + 706, 456, 150, 613,4299, 71,1118,2036,4064, 145,3069, 85, 835, 486,2114,1246, # 2950 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,7324,2127,2354, 347,3736, 221, # 2966 +3503,3110,7325,1955,1153,4065, 83, 296,1199,3070, 192, 624, 93,7326, 822,1897, # 2982 +2810,3111, 795,2064, 991,1554,1542,1592, 27, 43,2853, 859, 139,1456, 860,4300, # 2998 + 437, 712,3871, 164,2392,3112, 695, 211,3017,2096, 195,3872,1608,3504,3505,3618, # 3014 +3873, 234, 811,2971,2097,3874,2229,1441,3506,1615,2375, 668,2076,1638, 305, 228, # 3030 +1664,4301, 467, 415,7327, 262,2098,1593, 239, 108, 300, 200,1033, 512,1247,2077, # 3046 +7328,7329,2173,3176,3619,2673, 593, 845,1062,3244, 88,1723,2037,3875,1950, 212, # 3062 + 266, 152, 149, 468,1898,4066,4302, 77, 187,7330,3018, 37, 5,2972,7331,3876, # 3078 +7332,7333, 39,2517,4303,2894,3177,2078, 55, 148, 74,4304, 545, 483,1474,1029, # 3094 +1665, 217,1869,1531,3113,1104,2645,4067, 24, 172,3507, 900,3877,3508,3509,4305, # 3110 + 32,1408,2811,1312, 329, 487,2355,2247,2708, 784,2674, 4,3019,3314,1427,1788, # 3126 + 188, 109, 499,7334,3620,1717,1789, 888,1217,3020,4306,7335,3510,7336,3315,1520, # 3142 +3621,3878, 196,1034, 775,7337,7338, 929,1815, 249, 439, 38,7339,1063,7340, 794, # 3158 +3879,1435,2296, 46, 178,3245,2065,7341,2376,7342, 214,1709,4307, 804, 35, 707, # 3174 + 324,3622,1601,2546, 140, 459,4068,7343,7344,1365, 839, 272, 978,2257,2572,3409, # 3190 +2128,1363,3623,1423, 697, 100,3071, 48, 70,1231, 495,3114,2193,7345,1294,7346, # 3206 +2079, 462, 586,1042,3246, 853, 256, 988, 185,2377,3410,1698, 434,1084,7347,3411, # 3222 + 314,2615,2775,4308,2330,2331, 569,2280, 637,1816,2518, 757,1162,1878,1616,3412, # 3238 + 287,1577,2115, 768,4309,1671,2854,3511,2519,1321,3737, 909,2413,7348,4069, 933, # 3254 +3738,7349,2052,2356,1222,4310, 765,2414,1322, 786,4311,7350,1919,1462,1677,2895, # 3270 +1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070, 309,1369, # 3286 +1130,2812, 364,2230,1653,1299,3881,3512,3882,3883,2646, 525,1085,3021, 902,2000, # 3302 +1475, 964,4313, 421,1844,1415,1057,2281, 940,1364,3116, 376,4314,4315,1381, 7, # 3318 +2520, 983,2378, 336,1710,2675,1845, 321,3414, 559,1131,3022,2742,1808,1132,1313, # 3334 + 265,1481,1857,7352, 352,1203,2813,3247, 167,1089, 420,2814, 776, 792,1724,3513, # 3350 +4071,2438,3248,7353,4072,7354, 446, 229, 333,2743, 901,3739,1200,1557,4316,2647, # 3366 +1920, 395,2744,2676,3740,4073,1835, 125, 916,3178,2616,4317,7355,7356,3741,7357, # 3382 +7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145, 438, # 3398 +2591,2896,2379,3317,1068, 958,3023, 461, 311,2855,2677,4074,1915,3179,4075,1978, # 3414 + 383, 750,2745,2617,4076, 274, 539, 385,1278,1442,7361,1154,1964, 384, 561, 210, # 3430 + 98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257, 129,7363,3742, 642, # 3446 + 523,2776,2777,2648,7364, 141,2231,1333, 68, 176, 441, 876, 907,4077, 603,2592, # 3462 + 710, 171,3417, 404, 549, 18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320, # 3478 +7366,2973, 368,7367, 146, 366, 99, 871,3627,1543, 748, 807,1586,1185, 22,2258, # 3494 + 379,3743,3180,7368,3181, 505,1941,2618,1991,1382,2314,7369, 380,2357, 218, 702, # 3510 +1817,1248,3418,3024,3517,3318,3249,7370,2974,3628, 930,3250,3744,7371, 59,7372, # 3526 + 585, 601,4078, 497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374, 749,1836, # 3542 + 690,1899,3745,1772,3885,1476, 429,1043,1790,2232,2116, 917,4079, 447,1086,1629, # 3558 +7375, 556,7376,7377,2020,1654, 844,1090, 105, 550, 966,1758,2815,1008,1782, 686, # 3574 +1095,7378,2282, 793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746, 980,2496, # 3590 + 544, 353, 527,4324, 908,2678,2899,7380, 381,2619,1942,1348,7381,1341,1252, 560, # 3606 +3072,7382,3420,2856,7383,2053, 973, 886,2080, 143,4325,7384,7385, 157,3886, 496, # 3622 +4081, 57, 840, 540,2038,4326,4327,3421,2117,1445, 970,2259,1748,1965,2081,4082, # 3638 +3119,1234,1775,3251,2816,3629, 773,1206,2129,1066,2039,1326,3887,1738,1725,4083, # 3654 + 279,3120, 51,1544,2594, 423,1578,2130,2066, 173,4328,1879,7386,7387,1583, 264, # 3670 + 610,3630,4329,2439, 280, 154,7388,7389,7390,1739, 338,1282,3073, 693,2857,1411, # 3686 +1074,3747,2440,7391,4330,7392,7393,1240, 952,2394,7394,2900,1538,2679, 685,1483, # 3702 +4084,2468,1436, 953,4085,2054,4331, 671,2395, 79,4086,2441,3252, 608, 567,2680, # 3718 +3422,4087,4088,1691, 393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672, # 3734 +3748,3182,1464, 522,1119, 661,1150, 216, 675,4333,3888,1432,3519, 609,4334,2681, # 3750 +2397,7400,7401,7402,4089,3025, 0,7403,2469, 315, 231,2442, 301,3319,4335,2380, # 3766 +7404, 233,4090,3631,1818,4336,4337,7405, 96,1776,1315,2082,7406, 257,7407,1809, # 3782 +3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074, 363,1655,3183, # 3798 +7409,2975,7410,7411,7412,3889,1567,3890, 718, 103,3184, 849,1443, 341,3320,2934, # 3814 +1484,7413,1712, 127, 67, 339,4092,2398, 679,1412, 821,7414,7415, 834, 738, 351, # 3830 +2976,2146, 846, 235,1497,1880, 418,1992,3749,2710, 186,1100,2147,2746,3520,1545, # 3846 +1355,2935,2858,1377, 583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358, # 3862 + 78,3750,3751, 267,1289,2099,2001,1594,4094, 348, 369,1274,2194,2175,1837,4338, # 3878 +1820,2817,3635,2747,2283,2002,4339,2936,2748, 144,3321, 882,4340,3892,2749,3423, # 3894 +4341,2901,7417,4095,1726, 320,7418,3893,3026, 788,2978,7419,2818,1773,1327,2859, # 3910 +3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650, 787,2022, 506, 824,3636, # 3926 + 534, 323,4343,1044,3322,2023,1900, 946,3424,7421,1778,1500,1678,7422,1881,4344, # 3942 + 165, 243,4345,3637,2521, 123, 683,4096, 764,4346, 36,3895,1792, 589,2902, 816, # 3958 + 626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932, 891, # 3974 +2083,2903, 304,4097,7424, 292,2979,2711,3522, 691,2100,4098,1115,4347, 118, 662, # 3990 +7425, 611,1156, 854,2381,1316,2861, 2, 386, 515,2904,7426,7427,3253, 868,2234, # 4006 +1486, 855,2651, 785,2212,3028,7428,1040,3185,3523,7429,3121, 448,7430,1525,7431, # 4022 +2164,4348,7432,3754,7433,4099,2820,3524,3122, 503, 818,3898,3123,1568, 814, 676, # 4038 +1444, 306,1749,7434,3755,1416,1030, 197,1428, 805,2821,1501,4349,7435,7436,7437, # 4054 +1993,7438,4350,7439,7440,2195, 13,2779,3638,2980,3124,1229,1916,7441,3756,2131, # 4070 +7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445, 646,3757,2443, 307, # 4086 +7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451, 519, # 4102 +7452, 128,2132, 92,2284,1979,7453,3900,1512, 342,3125,2196,7454,2780,2214,1980, # 4118 +3323,7455, 290,1656,1317, 789, 827,2360,7456,3758,4352, 562, 581,3901,7457, 401, # 4134 +4353,2248, 94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459, 828,1105,4101, # 4150 +1262,1394,7460,4102, 605,4356,7461,1783,2862,7462,2822, 819,2101, 578,2197,2937, # 4166 +7463,1502, 436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466, # 4182 +2332,2067, 23,4357, 193, 826,3759,2102, 699,1630,4104,3075, 390,1793,1064,3526, # 4198 +7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359, 137,4106, 598, # 4214 +3078,1966, 780, 104, 974,2938,7470, 278, 899, 253, 402, 572, 504, 493,1339,7471, # 4230 +3903,1275,4360,2574,2550,7472,3640,3029,3079,2249, 565,1334,2713, 863, 41,7473, # 4246 +7474,4361,7475,1657,2333, 19, 463,2750,4107, 606,7476,2981,3256,1087,2084,1323, # 4262 +2652,2982,7477,1631,1623,1750,4108,2682,7478,2864, 791,2714,2653,2334, 232,2416, # 4278 +7479,2983,1498,7480,2654,2620, 755,1366,3641,3257,3126,2025,1609, 119,1917,3427, # 4294 + 862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125, 817,4110, # 4310 +4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485, # 4326 +2683, 733, 40,1632,1106,2865, 345,4113, 841,2524, 230,4364,2984,1846,3259,3428, # 4342 +7486,1263, 986,3429,7487, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562,3907, # 4358 +3908,2939, 967,2751,2655,1349, 592,2133,1692,3324,2985,1994,4114,1679,3909,1901, # 4374 +2185,7488, 739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870, # 4390 +2752,2986,7490, 435,7491, 343,1108, 596, 17,1751,4365,2235,3430,3643,7492,4366, # 4406 + 294,3527,2940,1693, 477, 979, 281,2041,3528, 643,2042,3644,2621,2782,2261,1031, # 4422 +2335,2134,2298,3529,4367, 367,1249,2552,7493,3530,7494,4368,1283,3325,2004, 240, # 4438 +1762,3326,4369,4370, 836,1069,3128, 474,7495,2148,2525, 268,3531,7496,3188,1521, # 4454 +1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118, 961,1673, # 4470 +2622, 190,2005,2200,3762,4371,4372,7500, 570,2497,3645,1490,7501,4373,2623,3260, # 4486 +1956,4374, 584,1514, 396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910, 619, # 4502 +7505,3129,3261, 215,2006,2783,2553,3189,4377,3190,4378, 763,4119,3763,4379,7506, # 4518 +7507,1957,1767,2941,3328,3646,1174, 452,1477,4380,3329,3130,7508,2825,1253,2382, # 4534 +2186,1091,2285,4120, 492,7509, 638,1169,1824,2135,1752,3911, 648, 926,1021,1324, # 4550 +4381, 520,4382, 997, 847,1007, 892,4383,3764,2262,1871,3647,7510,2400,1784,4384, # 4566 +1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551, 30,2263,4122, # 4582 +7511,2026,4386,3534,7512, 501,7513,4123, 594,3431,2165,1821,3535,3432,3536,3192, # 4598 + 829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388, # 4614 +4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389, 374,3914, 652,4128,4129, # 4630 + 375,1140, 798,7520,7521,7522,2361,4390,2264, 546,1659, 138,3031,2445,4391,7523, # 4646 +2250, 612,1848, 910, 796,3765,1740,1371, 825,3766,3767,7524,2906,2554,7525, 692, # 4662 + 444,3032,2624, 801,4392,4130,7526,1491, 244,1053,3033,4131,4132, 340,7527,3915, # 4678 +1041,2987, 293,1168, 87,1357,7528,1539, 959,7529,2236, 721, 694,4133,3768, 219, # 4694 +1478, 644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825, # 4710 + 730,1515, 184,2827, 66,4393,7532,1660,2943, 246,3332, 378,1457, 226,3433, 975, # 4726 +3917,2944,1264,3537, 674, 696,7533, 163,7534,1141,2417,2166, 713,3538,3333,4394, # 4742 +3918,7535,7536,1186, 15,7537,1079,1070,7538,1522,3193,3539, 276,1050,2716, 758, # 4758 +1126, 653,2945,3263,7539,2337, 889,3540,3919,3081,2989, 903,1250,4395,3920,3434, # 4774 +3541,1342,1681,1718, 766,3264, 286, 89,2946,3649,7540,1713,7541,2597,3334,2990, # 4790 +7542,2947,2215,3194,2866,7543,4396,2498,2526, 181, 387,1075,3921, 731,2187,3335, # 4806 +7544,3265, 310, 313,3435,2299, 770,4134, 54,3034, 189,4397,3082,3769,3922,7545, # 4822 +1230,1617,1849, 355,3542,4135,4398,3336, 111,4136,3650,1350,3135,3436,3035,4137, # 4838 +2149,3266,3543,7546,2784,3923,3924,2991, 722,2008,7547,1071, 247,1207,2338,2471, # 4854 +1378,4399,2009, 864,1437,1214,4400, 373,3770,1142,2216, 667,4401, 442,2753,2555, # 4870 +3771,3925,1968,4138,3267,1839, 837, 170,1107, 934,1336,1882,7548,7549,2118,4139, # 4886 +2828, 743,1569,7550,4402,4140, 582,2384,1418,3437,7551,1802,7552, 357,1395,1729, # 4902 +3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554, 482, # 4918 +2446,4404,7555,7556,1492, 833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652, # 4934 +4142,1686,1794, 416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867, # 4950 +4405,1610,1584,3036,2419,2754, 443,3269,1163,3136,7561,7562,3926,7563,4143,2499, # 4966 +3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145, 431,3438,7565, 250, # 4982 + 97, 81,4146,7566,1648,1850,1558, 160, 848,7567, 866, 740,1694,7568,2201,2830, # 4998 +3195,4147,4407,3653,1687, 950,2472, 426, 469,3196,3654,3655,3928,7569,7570,1188, # 5014 + 424,1995, 861,3546,4148,3775,2202,2685, 168,1235,3547,4149,7571,2086,1674,4408, # 5030 +3337,3270, 220,2557,1009,7572,3776, 670,2992, 332,1208, 717,7573,7574,3548,2447, # 5046 +3929,3338,7575, 513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527, # 5062 +3656,3549, 815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932, # 5078 +1741,3933,3778,3934,7582, 236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411, # 5094 +7585, 308,7586,4412, 245,4413,1851,2473,1307,2575, 430, 715,2136,2449,7587, 270, # 5110 + 199,2869,3935,7588,3551,2718,1753, 761,1754, 725,1661,1840,4414,3440,3658,7589, # 5126 +7590, 587, 14,3272, 227,2598, 326, 480,2265, 943,2755,3552, 291, 650,1883,7591, # 5142 +1702,1226, 102,1547, 62,3441, 904,4415,3442,1164,4150,7592,7593,1224,1548,2756, # 5158 + 391, 498,1493,7594,1386,1419,7595,2055,1177,4416, 813, 880,1081,2363, 566,1145, # 5174 +4417,2286,1001,1035,2558,2599,2238, 394,1286,7596,7597,2068,7598, 86,1494,1730, # 5190 +3936, 491,1588, 745, 897,2948, 843,3340,3937,2757,2870,3273,1768, 998,2217,2069, # 5206 + 397,1826,1195,1969,3659,2993,3341, 284,7599,3782,2500,2137,2119,1903,7600,3938, # 5222 +2150,3939,4151,1036,3443,1904, 114,2559,4152, 209,1527,7601,7602,2949,2831,2625, # 5238 +2385,2719,3139, 812,2560,7603,3274,7604,1559, 737,1884,3660,1210, 885, 28,2686, # 5254 +3553,3783,7605,4153,1004,1779,4418,7606, 346,1981,2218,2687,4419,3784,1742, 797, # 5270 +1642,3940,1933,1072,1384,2151, 896,3941,3275,3661,3197,2871,3554,7607,2561,1958, # 5286 +4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528, # 5302 +2600, 161,1178,4156,1982, 987,4423,1101,4157, 631,3943,1157,3198,2420,1343,1241, # 5318 +1016,2239,2562, 372, 877,2339,2501,1160, 555,1934, 911,3944,7611, 466,1170, 169, # 5334 +1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612, 992,2340,3444,1540, # 5350 +2721,1201,2070,2401,1996,2475,7613,4424, 528,1922,2188,1503,1873,1570,2364,3342, # 5366 +3276,7614, 557,1073,7615,1827,3445,2087,2266,3140,3039,3084, 767,3085,2786,4425, # 5382 +1006,4158,4426,2341,1267,2176,3664,3199, 778,3945,3200,2722,1597,2657,7616,4427, # 5398 +7617,3446,7618,7619,7620,3277,2689,1433,3278, 131, 95,1504,3946, 723,4159,3141, # 5414 +1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949, # 5430 +4160,2576, 248,1634,3785, 912,7623,2832,3666,3040,3786, 654, 53,7624,2996,7625, # 5446 +1688,4428, 777,3447,1032,3950,1425,7626, 191, 820,2120,2833, 971,4429, 931,3202, # 5462 + 135, 664, 783,3787,1997, 772,2908,1935,3951,3788,4430,2909,3203, 282,2723, 640, # 5478 +1372,3448,1127, 922, 325,3344,7627,7628, 711,2044,7629,7630,3952,2219,2787,1936, # 5494 +3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955, # 5510 +3956,7632,2221, 258,3205,4432, 101,1227,7633,3280,1755,7634,1391,3281,7635,2910, # 5526 +2056, 893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642, 878,1325, # 5542 +1780,2788,4433, 259,1385,2577, 744,1183,2267,4434,7643,3957,2502,7644, 684,1024, # 5558 +4162,7645, 472,3557,3449,1165,3282,3958,3959, 322,2152, 881, 455,1695,1152,1340, # 5574 + 660, 554,2153,4435,1058,4436,4163, 830,1065,3346,3960,4437,1923,7646,1703,1918, # 5590 +7647, 932,2268, 122,7648,4438, 947, 677,7649,3791,2627, 297,1905,1924,2269,4439, # 5606 +2317,3283,7650,7651,4164,7652,4165, 84,4166, 112, 989,7653, 547,1059,3961, 701, # 5622 +3558,1019,7654,4167,7655,3450, 942, 639, 457,2301,2451, 993,2951, 407, 851, 494, # 5638 +4440,3347, 927,7656,1237,7657,2421,3348, 573,4168, 680, 921,2911,1279,1874, 285, # 5654 + 790,1448,1983, 719,2167,7658,7659,4441,3962,3963,1649,7660,1541, 563,7661,1077, # 5670 +7662,3349,3041,3451, 511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443, # 5686 +7663, 535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169, # 5702 +1238,2578,3086,1259,7665, 700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906, # 5718 +4444,2601,3967, 781,2422, 132,1589, 203, 147, 273,2789,2402, 898,1786,2154,3968, # 5734 +3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793, 965,7673,1804, # 5750 +2690,1516,3559,1121,1082,1329,3284,3970,1449,3794, 65,1128,2835,2913,2759,1590, # 5766 +3795,7674,7675, 12,2658, 45, 976,2579,3144,4447, 517,2528,1013,1037,3209,7676, # 5782 +3796,2836,7677,3797,7678,3452,7679,2602, 614,1998,2318,3798,3087,2724,2628,7680, # 5798 +2580,4172, 599,1269,7681,1810,3669,7682,2691,3088, 759,1060, 489,1805,3351,3285, # 5814 +1358,7683,7684,2386,1387,1215,2629,2252, 490,7685,7686,4173,1759,2387,2343,7687, # 5830 +4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344, 874,7688,7689,3454, # 5846 +3670,1858, 91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403, # 5862 +3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973, # 5878 +2365,4453,7694,2029,7695,7696,3974,2693,1216, 237,2581,4174,2319,3975,3802,4454, # 5894 +4455,2694,3560,3457, 445,4456,7697,7698,7699,7700,2761, 61,3976,3672,1822,3977, # 5910 +7701, 687,2045, 935, 925, 405,2660, 703,1096,1859,2725,4457,3978,1876,1367,2695, # 5926 +3352, 918,2105,1781,2476, 334,3287,1611,1093,4458, 564,3146,3458,3673,3353, 945, # 5942 +2631,2057,4459,7702,1925, 872,4175,7703,3459,2696,3089, 349,4176,3674,3979,4460, # 5958 +3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046, 782,3981, 400, 251,4179, # 5974 +1624,7704,7705, 277,3676, 299,1265, 476,1191,3804,2121,4180,4181,1109, 205,7706, # 5990 +2582,1000,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565, 107,2477,2157,3982, # 6006 +3460,3147,7711,1533, 541,1301, 158, 753,4182,2872,3562,7712,1696, 370,1088,4183, # 6022 +4466,3563, 579, 327, 440, 162,2240, 269,1937,1374,3461, 968,3043, 56,1396,3090, # 6038 +2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717, # 6054 +2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985, # 6070 +7722,1076, 49,7723, 951,3211,3289,3290, 450,2837, 920,7724,1811,2792,2366,4184, # 6086 +1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472, # 6102 +2388,2604, 260,1795,3213,7727,7728,3808,3291, 708,7729,3565,1704,7730,3566,1351, # 6118 +1618,3357,2999,1886, 944,4185,3358,4186,3044,3359,4187,7731,3678, 422, 413,1714, # 6134 +3292, 500,2058,2345,4188,2479,7732,1344,1910, 954,7733,1668,7734,7735,3986,2404, # 6150 +4189,3567,3809,4190,7736,2302,1318,2505,3091, 133,3092,2873,4473, 629, 31,2838, # 6166 +2697,3810,4474, 850, 949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988, 620, # 6182 +3214, 981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738, # 6198 +3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743, 869, # 6214 +2839, 655,3811,3812,3094,3989,3000,3813,1310,3569,4477,7744,7745,7746,1733, 558, # 6230 +4478,3681, 335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192, 470,2726,2107, # 6246 +2793, 913,1054,3990,7747,1027,7748,3046,3991,4479, 982,2662,3362,3148,3465,3216, # 6262 +3217,1946,2794,7749, 571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089, 984, # 6278 +4481,3683,1959,7753,3684, 852, 923,2795,3466,3685, 969,1519, 999,2048,2320,1705, # 6294 +7754,3095, 615,1662, 151, 597,3992,2405,2321,1049, 275,4482,3686,4193, 568,3687, # 6310 +3571,2480,4194,3688,7755,2425,2270, 409,3218,7756,1566,2874,3467,1002, 769,2840, # 6326 + 194,2090,3149,3689,2222,3294,4195, 628,1505,7757,7758,1763,2177,3001,3993, 521, # 6342 +1161,2584,1787,2203,2406,4483,3994,1625,4196,4197, 412, 42,3096, 464,7759,2632, # 6358 +4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295, # 6374 +1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091, 460,7765, # 6390 +4487,7766,3002, 962, 588,3574, 289,3219,2634,1116, 52,7767,3047,1796,7768,7769, # 6406 +7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365, 465,4489,1572, # 6422 + 510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776, # 6438 +7777,4199, 536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911, # 6454 +2796,7781,3296,1122, 377,3220,7782, 360,7783,7784,4200,1529, 551,7785,2059,3693, # 6470 +1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404, 136,1468,1479, 672, # 6486 +1171,3221,2303, 271,3151,7787,2762,7788,2049, 678,2727, 865,1947,4493,7789,2013, # 6502 +3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816, # 6518 + 509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010, # 6534 + 552, 681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154, 358, 453, 736, 175, # 6550 + 478,1117, 905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473, # 6566 +3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298, # 6582 +2918,3049,2179,3474, 595,2122,7800,3997,7801,7802,4206,1707,2636, 223,3696,1359, # 6598 + 751,3098, 183,3475,7803,2797,3003, 419,2369, 633, 704,3818,2389, 241,7804,7805, # 6614 +7806, 838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807, # 6630 +1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605, 484,3698,7810, # 6646 +3999, 625,4209,2273,3368,1499,4210,4000,7811,4001,4211,3222,2274,2275,3476,7812, # 6662 +7813,2764, 808,2606,3699,3369,4002,4212,3100,2532, 526,3370,3821,4213, 955,7814, # 6678 +1620,4214,2637,2427,7815,1429,3700,1669,1831, 994, 928,7816,3578,1260,7817,7818, # 6694 +7819,1948,2288, 741,2919,1626,4215,2729,2455, 867,1184, 362,3371,1392,7820,7821, # 6710 +4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877, # 6726 +1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702, # 6742 +2483,3299,7824,3703,4501,7825,7826, 666,1003,3005,1022,3579,4218,7827,4502,1813, # 6758 +2253, 574,3822,1603, 295,1535, 705,3823,4219, 283, 858, 417,7828,7829,3224,4503, # 6774 +4504,3051,1220,1889,1046,2276,2456,4004,1393,1599, 689,2567, 388,4220,7830,2484, # 6790 + 802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833, # 6806 + 809,7834,7835,7836, 575,2730,3477, 956,1552,1469,1144,2323,7837,2324,1560,2457, # 6822 +3580,3226,4005, 616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704, # 6838 +3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826, 607,2306,3827, 762,2878, # 6854 +1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508, # 6870 +2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451, # 6886 +7851,7852,7853,7854,2922,4006,4007,2485,2346, 411,4008,4009,3582,3300,3101,4509, # 6902 +1561,2664,1452,4010,1375,7855,7856, 47,2959, 316,7857,1406,1591,2923,3156,7858, # 6918 +1025,2141,3102,3157, 354,2731, 884,2224,4225,2407, 508,3706, 726,3583, 996,2428, # 6934 +3584, 729,7859, 392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800, # 6950 + 919,2347,2960,2348,1270,4511,4012, 73,7862,7863, 647,7864,3228,2843,2255,1550, # 6966 +1346,3006,7865,1332, 883,3479,7866,7867,7868,7869,3301,2765,7870,1212, 831,1347, # 6982 +4226,4512,2326,3830,1863,3053, 720,3831,4513,4514,3832,7871,4227,7872,7873,4515, # 6998 +7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924, 669,2208,2665, # 7014 +2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518, # 7030 +3158, 518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833, # 7046 + 516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961, # 7062 +1422, 577,1470,3008,1524,3373,7892,7893, 432,4232,3054,3480,7894,2586,1455,2508, # 7078 +2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482, # 7094 +2639,4016,4233,4521,2290, 895, 924,4234,2170, 331,2243,3056, 166,1627,3057,1098, # 7110 +7898,1232,2880,2227,3374,4522, 657, 403,1196,2372, 542,3709,3375,1600,4235,3483, # 7126 +7899,4523,2767,3230, 576, 530,1362,7900,4524,2533,2666,3710,4017,7901, 842,3834, # 7142 +7902,2801,2031,1014,4018, 213,2700,3376, 665, 621,4236,7903,3711,2925,2430,7904, # 7158 +2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906, 724, # 7174 +2277, 600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909, 651,4240,7910, # 7190 +1612,4241,2611,7911,2844,7912,2734,2307,3058,7913, 716,2459,3059, 174,1255,2701, # 7206 +4019,3590, 548,1320,1398, 728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062, # 7222 +3712,3591,3713, 747,7916, 635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922, # 7238 +3378,4530,2432, 451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925, # 7254 +4246, 350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024, 488,4532, 458,4248, # 7270 +4025,3715, 771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487, # 7286 +2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015, # 7302 +2736,7932,1155,1017,3716,3836,7933,3303,2308, 201,1864,4253,1430,7934,4026,7935, # 7318 +7936,7937,7938,7939,4254,1604,7940, 414,1865, 371,2587,4534,4535,3485,2016,3104, # 7334 +4536,1708, 960,4255, 887, 389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580, # 7350 +7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380, # 7366 +2882,4256,7950,4257,2640,3381,2802, 673,2703,2460, 709,3486,4028,3593,4258,7951, # 7382 +1148, 502, 634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105, 948, # 7398 +3232, 121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488, # 7414 +4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803, 531,2737, # 7430 +2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017, # 7446 + 120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047, # 7462 +2704,1266,7965,1368,4543,2845, 649,3383,3841,2539,2738,1102,2846,2669,7966,7967, # 7478 +1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385, # 7494 +2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460, 856,7974,3600,7975, # 7510 +2885,2963,7976,2886,3843,7977,4264, 632,2510, 875,3844,1697,3845,2291,7978,7979, # 7526 +4544,3010,1239, 580,4545,4265,7980, 914, 936,2074,1190,4032,1039,2123,7981,7982, # 7542 +7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033, 915,3305,4267,4268,3306, # 7558 +1605,1834,7986,2739, 398,3601,4269,3847,4034, 328,1912,2847,4035,3848,1331,4270, # 7574 +3011, 937,4271,7987,3602,4036,4037,3387,2160,4546,3388, 524, 742, 538,3065,1012, # 7590 +7988,7989,3849,2461,7990, 658,1103, 225,3850,7991,7992,4547,7993,4548,7994,3236, # 7606 +1243,7995,4038, 963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550, # 7622 +8000,8001,8002,3489,3307, 957,3389,2540,2032,1930,2927,2462, 870,2018,3604,1746, # 7638 +2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066, # 7654 +8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292, 977, # 7670 +2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689, 714,4551,3491,8009, # 7686 +2328,3852, 533,4273,3605,2181, 617,8010,2464,3308,3492,2310,8011,8012,3165,8013, # 7702 +8014,3853,1987, 618, 427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552, # 7718 +8018,3494,8019,8020,2279,1576, 473,3606,4275,3395, 972,8021,3607,8022,3067,8023, # 7734 +8024,4553,4554,8025,3727,4041,4042,8026, 153,4555, 356,8027,1891,2888,4276,2143, # 7750 + 408, 803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278, # 7766 +8031,2411,3396, 752,8032,8033,1961,2964,8034, 746,3012,2465,8035,4279,3728, 698, # 7782 +4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706, # 7798 +3858,1973,4281,8038,4282,3167, 823,1303,1288,1236,2848,3495,4044,3398, 774,3859, # 7814 +8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284, 344, # 7830 +1173, 288,2311, 454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563, 985, 894, # 7846 +8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194, # 7862 + 425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053, 636,4565,1855,3861, 760, # 7878 +1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210, # 7894 + 479,8058,8059, 832,8060,4049,2489,8061,2965,2490,3731, 990,3109, 627,1814,2642, # 7910 +4289,1582,4290,2125,2111,3496,4567,8062, 799,4291,3170,8063,4568,2112,1737,3013, # 7926 +1018, 543, 754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889, # 7942 +4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239, # 7958 +1842,3610,1715, 481, 365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240, # 7974 + 433,1894,2063,2075,8077, 602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083, # 7990 +3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088, # 8006 +4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094, # 8022 +8095,1895,8096,8097,4580,1896,4054, 318,8098,2094,4055,4293,8099,8100, 485,8101, # 8038 + 938,3862, 553,2670, 116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104, # 8054 +3613,2929,4056,1747,2930,2968,8105,8106, 207,8107,8108,2672,4581,2514,8109,3015, # 8070 + 890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114, 941, # 8086 +2294, 208,3499,4057,2019, 330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118, # 8102 +) + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwprober.py new file mode 100644 index 0000000..35669cc --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwprober.py @@ -0,0 +1,46 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCTWDistributionAnalysis +from .mbcssm import EUCTW_SM_MODEL + +class EUCTWProber(MultiByteCharSetProber): + def __init__(self): + super(EUCTWProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) + self.distribution_analyzer = EUCTWDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "EUC-TW" + + @property + def language(self): + return "Taiwan" diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312freq.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312freq.py new file mode 100644 index 0000000..697837b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312freq.py @@ -0,0 +1,283 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# GB2312 most frequently used character table +# +# Char to FreqOrder table , from hz6763 + +# 512 --> 0.79 -- 0.79 +# 1024 --> 0.92 -- 0.13 +# 2048 --> 0.98 -- 0.06 +# 6768 --> 1.00 -- 0.02 +# +# Ideal Distribution Ratio = 0.79135/(1-0.79135) = 3.79 +# Random Distribution Ration = 512 / (3755 - 512) = 0.157 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher that RDR + +GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9 + +GB2312_TABLE_SIZE = 3760 + +GB2312_CHAR_TO_FREQ_ORDER = ( +1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205, +2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842, +2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409, + 249,4088,1746,1873,2047,1774, 581,1813, 358,1174,3590,1014,1561,4844,2245, 670, +1636,3112, 889,1286, 953, 556,2327,3060,1290,3141, 613, 185,3477,1367, 850,3820, +1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349, 388,3098,2091,1360,3585, + 152,1687,1539, 738,1559, 59,1232,2925,2267,1388,1249,1741,1679,2960, 151,1566, +1125,1352,4271, 924,4296, 385,3166,4459, 310,1245,2850, 70,3285,2729,3534,3575, +2398,3298,3466,1960,2265, 217,3647, 864,1909,2084,4401,2773,1010,3269,5152, 853, +3051,3121,1244,4251,1895, 364,1499,1540,2313,1180,3655,2268, 562, 715,2417,3061, + 544, 336,3768,2380,1752,4075, 950, 280,2425,4382, 183,2759,3272, 333,4297,2155, +1688,2356,1444,1039,4540, 736,1177,3349,2443,2368,2144,2225, 565, 196,1482,3406, + 927,1335,4147, 692, 878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816, +2534,1546,2393,2760, 737,2494, 13, 447, 245,2747, 38,2765,2129,2589,1079, 606, + 360, 471,3755,2890, 404, 848, 699,1785,1236, 370,2221,1023,3746,2074,2026,2023, +2388,1581,2119, 812,1141,3091,2536,1519, 804,2053, 406,1596,1090, 784, 548,4414, +1806,2264,2936,1100, 343,4114,5096, 622,3358, 743,3668,1510,1626,5020,3567,2513, +3195,4115,5627,2489,2991, 24,2065,2697,1087,2719, 48,1634, 315, 68, 985,2052, + 198,2239,1347,1107,1439, 597,2366,2172, 871,3307, 919,2487,2790,1867, 236,2570, +1413,3794, 906,3365,3381,1701,1982,1818,1524,2924,1205, 616,2586,2072,2004, 575, + 253,3099, 32,1365,1182, 197,1714,2454,1201, 554,3388,3224,2748, 756,2587, 250, +2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153, 615, 911,1506, +1474,2495,1265,1906,2749,3756,3280,2161, 898,2714,1759,3450,2243,2444, 563, 26, +3286,2266,3769,3344,2707,3677, 611,1402, 531,1028,2871,4548,1375, 261,2948, 835, +1190,4134, 353, 840,2684,1900,3082,1435,2109,1207,1674, 329,1872,2781,4055,2686, +2104, 608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054, +1681,1153, 225,1627,2929, 162,2050,2511,3687,1954, 124,1859,2431,1684,3032,2894, + 585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209, 256, 518,2042,2105, +3777,3657, 643,2298,1148,1779, 190, 989,3544, 414, 11,2135,2063,2979,1471, 403, +3678, 126, 770,1563, 671,2499,3216,2877, 600,1179, 307,2805,4937,1268,1297,2694, + 252,4032,1448,1494,1331,1394, 127,2256, 222,1647,1035,1481,3056,1915,1048, 873, +3651, 210, 33,1608,2516, 200,1520, 415, 102, 0,3389,1287, 817, 91,3299,2940, + 836,1814, 549,2197,1396,1669,2987,3582,2297,2848,4528,1070, 687, 20,1819, 121, +1552,1364,1461,1968,2617,3540,2824,2083, 177, 948,4938,2291, 110,4549,2066, 648, +3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123, 208,1804,3159,2992, +2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680, 72, 842,1990, 212,1233, +1154,1586, 75,2027,3410,4900,1823,1337,2710,2676, 728,2810,1522,3026,4995, 157, + 755,1050,4022, 710, 785,1936,2194,2085,1406,2777,2400, 150,1250,4049,1206, 807, +1910, 534, 529,3309,1721,1660, 274, 39,2827, 661,2670,1578, 925,3248,3815,1094, +4278,4901,4252, 41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258, + 887, 538,4187,3199,1294,2439,3042,2329,2343,2497,1255, 107, 543,1527, 521,3478, +3568, 194,5062, 15, 961,3870,1241,1192,2664, 66,5215,3260,2111,1295,1127,2152, +3805,4135, 901,1164,1976, 398,1278, 530,1460, 748, 904,1054,1966,1426, 53,2909, + 509, 523,2279,1534, 536,1019, 239,1685, 460,2353, 673,1065,2401,3600,4298,2272, +1272,2363, 284,1753,3679,4064,1695, 81, 815,2677,2757,2731,1386, 859, 500,4221, +2190,2566, 757,1006,2519,2068,1166,1455, 337,2654,3203,1863,1682,1914,3025,1252, +1409,1366, 847, 714,2834,2038,3209, 964,2970,1901, 885,2553,1078,1756,3049, 301, +1572,3326, 688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088, 262,1158,1254, + 389,1641,1812, 526,1719, 923,2073,1073,1902, 468, 489,4625,1140, 857,2375,3070, +3319,2863, 380, 116,1328,2693,1161,2244, 273,1212,1884,2769,3011,1775,1142, 461, +3066,1200,2147,2212, 790, 702,2695,4222,1601,1058, 434,2338,5153,3640, 67,2360, +4099,2502, 618,3472,1329, 416,1132, 830,2782,1807,2653,3211,3510,1662, 192,2124, + 296,3979,1739,1611,3684, 23, 118, 324, 446,1239,1225, 293,2520,3814,3795,2535, +3116, 17,1074, 467,2692,2201, 387,2922, 45,1326,3055,1645,3659,2817, 958, 243, +1903,2320,1339,2825,1784,3289, 356, 576, 865,2315,2381,3377,3916,1088,3122,1713, +1655, 935, 628,4689,1034,1327, 441, 800, 720, 894,1979,2183,1528,5289,2702,1071, +4046,3572,2399,1571,3281, 79, 761,1103, 327, 134, 758,1899,1371,1615, 879, 442, + 215,2605,2579, 173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946, + 814,4968,3487,1548,2644,1567,1285, 2, 295,2636, 97, 946,3576, 832, 141,4257, +3273, 760,3821,3521,3156,2607, 949,1024,1733,1516,1803,1920,2125,2283,2665,3180, +1501,2064,3560,2171,1592, 803,3518,1416, 732,3897,4258,1363,1362,2458, 119,1427, + 602,1525,2608,1605,1639,3175, 694,3064, 10, 465, 76,2000,4846,4208, 444,3781, +1619,3353,2206,1273,3796, 740,2483, 320,1723,2377,3660,2619,1359,1137,1762,1724, +2345,2842,1850,1862, 912, 821,1866, 612,2625,1735,2573,3369,1093, 844, 89, 937, + 930,1424,3564,2413,2972,1004,3046,3019,2011, 711,3171,1452,4178, 428, 801,1943, + 432, 445,2811, 206,4136,1472, 730, 349, 73, 397,2802,2547, 998,1637,1167, 789, + 396,3217, 154,1218, 716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627, 552, +3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703, 640,1045,1370,1246, +4996, 371,1575,2436,1621,2210, 984,4033,1734,2638, 16,4529, 663,2755,3255,1451, +3917,2257,1253,1955,2234,1263,2951, 214,1229, 617, 485, 359,1831,1969, 473,2310, + 750,2058, 165, 80,2864,2419, 361,4344,2416,2479,1134, 796,3726,1266,2943, 860, +2715, 938, 390,2734,1313,1384, 248, 202, 877,1064,2854, 522,3907, 279,1602, 297, +2357, 395,3740, 137,2075, 944,4089,2584,1267,3802, 62,1533,2285, 178, 176, 780, +2440, 201,3707, 590, 478,1560,4354,2117,1075, 30, 74,4643,4004,1635,1441,2745, + 776,2596, 238,1077,1692,1912,2844, 605, 499,1742,3947, 241,3053, 980,1749, 936, +2640,4511,2582, 515,1543,2162,5322,2892,2993, 890,2148,1924, 665,1827,3581,1032, + 968,3163, 339,1044,1896, 270, 583,1791,1720,4367,1194,3488,3669, 43,2523,1657, + 163,2167, 290,1209,1622,3378, 550, 634,2508,2510, 695,2634,2384,2512,1476,1414, + 220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680, 854,3227,1299,2976, +3172, 186,2998,1459, 443,1067,3251,1495, 321,1932,3054, 909, 753,1410,1828, 436, +2441,1119,1587,3164,2186,1258, 227, 231,1425,1890,3200,3942, 247, 959, 725,5254, +2741, 577,2158,2079, 929, 120, 174, 838,2813, 591,1115, 417,2024, 40,3240,1536, +1037, 291,4151,2354, 632,1298,2406,2500,3535,1825,1846,3451, 205,1171, 345,4238, + 18,1163, 811, 685,2208,1217, 425,1312,1508,1175,4308,2552,1033, 587,1381,3059, +2984,3482, 340,1316,4023,3972, 792,3176, 519, 777,4690, 918, 933,4130,2981,3741, + 90,3360,2911,2200,5184,4550, 609,3079,2030, 272,3379,2736, 363,3881,1130,1447, + 286, 779, 357,1169,3350,3137,1630,1220,2687,2391, 747,1277,3688,2618,2682,2601, +1156,3196,5290,4034,3102,1689,3596,3128, 874, 219,2783, 798, 508,1843,2461, 269, +1658,1776,1392,1913,2983,3287,2866,2159,2372, 829,4076, 46,4253,2873,1889,1894, + 915,1834,1631,2181,2318, 298, 664,2818,3555,2735, 954,3228,3117, 527,3511,2173, + 681,2712,3033,2247,2346,3467,1652, 155,2164,3382, 113,1994, 450, 899, 494, 994, +1237,2958,1875,2336,1926,3727, 545,1577,1550, 633,3473, 204,1305,3072,2410,1956, +2471, 707,2134, 841,2195,2196,2663,3843,1026,4940, 990,3252,4997, 368,1092, 437, +3212,3258,1933,1829, 675,2977,2893, 412, 943,3723,4644,3294,3283,2230,2373,5154, +2389,2241,2661,2323,1404,2524, 593, 787, 677,3008,1275,2059, 438,2709,2609,2240, +2269,2246,1446, 36,1568,1373,3892,1574,2301,1456,3962, 693,2276,5216,2035,1143, +2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090, 424,1694, 312,3634, +3390,4179,3335,2252,1214, 561,1059,3243,2295,2561, 975,5155,2321,2751,3772, 472, +1537,3282,3398,1047,2077,2348,2878,1323,3340,3076, 690,2906, 51, 369, 170,3541, +1060,2187,2688,3670,2541,1083,1683, 928,3918, 459, 109,4427, 599,3744,4286, 143, +2101,2730,2490, 82,1588,3036,2121, 281,1860, 477,4035,1238,2812,3020,2716,3312, +1530,2188,2055,1317, 843, 636,1808,1173,3495, 649, 181,1002, 147,3641,1159,2414, +3750,2289,2795, 813,3123,2610,1136,4368, 5,3391,4541,2174, 420, 429,1728, 754, +1228,2115,2219, 347,2223,2733, 735,1518,3003,2355,3134,1764,3948,3329,1888,2424, +1001,1234,1972,3321,3363,1672,1021,1450,1584, 226, 765, 655,2526,3404,3244,2302, +3665, 731, 594,2184, 319,1576, 621, 658,2656,4299,2099,3864,1279,2071,2598,2739, + 795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004, +2591,1084, 213,2287,1963,3565,2250, 822, 793,4574,3187,1772,1789,3050, 595,1484, +1959,2770,1080,2650, 456, 422,2996, 940,3322,4328,4345,3092,2742, 965,2784, 739, +4124, 952,1358,2498,2949,2565, 332,2698,2378, 660,2260,2473,4194,3856,2919, 535, +1260,2651,1208,1428,1300,1949,1303,2942, 433,2455,2450,1251,1946, 614,1269, 641, +1306,1810,2737,3078,2912, 564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307, +3218,2175,1897,3063, 682,1157,4040,4005,1712,1160,1941,1399, 394, 402,2952,1573, +1151,2986,2404, 862, 299,2033,1489,3006, 346, 171,2886,3401,1726,2932, 168,2533, + 47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965, + 504,1036,2690,2988,2405, 745,5871, 849,2397,2056,3081, 863,2359,3857,2096, 99, +1397,1769,2300,4428,1643,3455,1978,1757,3718,1440, 35,4879,3742,1296,4228,2280, + 160,5063,1599,2013, 166, 520,3479,1646,3345,3012, 490,1937,1545,1264,2182,2505, +1096,1188,1369,1436,2421,1667,2792,2460,1270,2122, 727,3167,2143, 806,1706,1012, +1800,3037, 960,2218,1882, 805, 139,2456,1139,1521, 851,1052,3093,3089, 342,2039, + 744,5097,1468,1502,1585,2087, 223, 939, 326,2140,2577, 892,2481,1623,4077, 982, +3708, 135,2131, 87,2503,3114,2326,1106, 876,1616, 547,2997,2831,2093,3441,4530, +4314, 9,3256,4229,4148, 659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392, +3274,1368,3689,4645,1477, 705,3384,3635,1068,1529,2941,1458,3782,1509, 100,1656, +2548, 718,2339, 408,1590,2780,3548,1838,4117,3719,1345,3530, 717,3442,2778,3220, +2898,1892,4590,3614,3371,2043,1998,1224,3483, 891, 635, 584,2559,3355, 733,1766, +1729,1172,3789,1891,2307, 781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535, +3213,1189,1934,5693,3262, 586,3118,1324,1598, 517,1564,2217,1868,1893,4445,3728, +2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287, 338, +1993,3129,3489,2689,1809,2815,1997, 957,1855,3898,2550,3275,3057,1105,1319, 627, +1505,1911,1883,3526, 698,3629,3456,1833,1431, 746, 77,1261,2017,2296,1977,1885, + 125,1334,1600, 525,1798,1109,2222,1470,1945, 559,2236,1186,3443,2476,1929,1411, +2411,3135,1777,3372,2621,1841,1613,3229, 668,1430,1839,2643,2916, 195,1989,2671, +2358,1387, 629,3205,2293,5256,4439, 123,1310, 888,1879,4300,3021,3605,1003,1162, +3192,2910,2010, 140,2395,2859, 55,1082,2012,2901, 662, 419,2081,1438, 680,2774, +4654,3912,1620,1731,1625,5035,4065,2328, 512,1344, 802,5443,2163,2311,2537, 524, +3399, 98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346, + 180,1113,4655,3461,2028,1698, 833,2696,1235,1322,1594,4408,3623,3013,3225,2040, +3022, 541,2881, 607,3632,2029,1665,1219, 639,1385,1686,1099,2803,3231,1938,3188, +2858, 427, 676,2772,1168,2025, 454,3253,2486,3556, 230,1950, 580, 791,1991,1280, +1086,1974,2034, 630, 257,3338,2788,4903,1017, 86,4790, 966,2789,1995,1696,1131, + 259,3095,4188,1308, 179,1463,5257, 289,4107,1248, 42,3413,1725,2288, 896,1947, + 774,4474,4254, 604,3430,4264, 392,2514,2588, 452, 237,1408,3018, 988,4531,1970, +3034,3310, 540,2370,1562,1288,2990, 502,4765,1147, 4,1853,2708, 207, 294,2814, +4078,2902,2509, 684, 34,3105,3532,2551, 644, 709,2801,2344, 573,1727,3573,3557, +2021,1081,3100,4315,2100,3681, 199,2263,1837,2385, 146,3484,1195,2776,3949, 997, +1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076, 493, 117,5400,2521, 972, +1490,2934,1796,4542,2374,1512,2933,2657, 413,2888,1135,2762,2314,2156,1355,2369, + 766,2007,2527,2170,3124,2491,2593,2632,4757,2437, 234,3125,3591,1898,1750,1376, +1942,3468,3138, 570,2127,2145,3276,4131, 962, 132,1445,4196, 19, 941,3624,3480, +3366,1973,1374,4461,3431,2629, 283,2415,2275, 808,2887,3620,2112,2563,1353,3610, + 955,1089,3103,1053, 96, 88,4097, 823,3808,1583, 399, 292,4091,3313, 421,1128, + 642,4006, 903,2539,1877,2082, 596, 29,4066,1790, 722,2157, 130, 995,1569, 769, +1485, 464, 513,2213, 288,1923,1101,2453,4316, 133, 486,2445, 50, 625, 487,2207, + 57, 423, 481,2962, 159,3729,1558, 491, 303, 482, 501, 240,2837, 112,3648,2392, +1783, 362, 8,3433,3422, 610,2793,3277,1390,1284,1654, 21,3823, 734, 367, 623, + 193, 287, 374,1009,1483, 816, 476, 313,2255,2340,1262,2150,2899,1146,2581, 782, +2116,1659,2018,1880, 255,3586,3314,1110,2867,2137,2564, 986,2767,5185,2006, 650, + 158, 926, 762, 881,3157,2717,2362,3587, 306,3690,3245,1542,3077,2427,1691,2478, +2118,2985,3490,2438, 539,2305, 983, 129,1754, 355,4201,2386, 827,2923, 104,1773, +2838,2771, 411,2905,3919, 376, 767, 122,1114, 828,2422,1817,3506, 266,3460,1007, +1609,4998, 945,2612,4429,2274, 726,1247,1964,2914,2199,2070,4002,4108, 657,3323, +1422, 579, 455,2764,4737,1222,2895,1670, 824,1223,1487,2525, 558, 861,3080, 598, +2659,2515,1967, 752,2583,2376,2214,4180, 977, 704,2464,4999,2622,4109,1210,2961, + 819,1541, 142,2284, 44, 418, 457,1126,3730,4347,4626,1644,1876,3671,1864, 302, +1063,5694, 624, 723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098, 409, +1011,2325,3704,2306, 818,1732,1383,1824,1844,3757, 999,2705,3497,1216,1423,2683, +2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343, 783, 724, 191, +2434,1354,2220,5065,1763,2752,2472,4152, 131, 175,2885,3434, 92,1466,4920,2616, +3871,3872,3866, 128,1551,1632, 669,1854,3682,4691,4125,1230, 188,2973,3290,1302, +1213, 560,3266, 917, 763,3909,3249,1760, 868,1958, 764,1782,2097, 145,2277,3774, +4462, 64,1491,3062, 971,2132,3606,2442, 221,1226,1617, 218, 323,1185,3207,3147, + 571, 619,1473,1005,1744,2281, 449,1887,2396,3685, 275, 375,3816,1743,3844,3731, + 845,1983,2350,4210,1377, 773, 967,3499,3052,3743,2725,4007,1697,1022,3943,1464, +3264,2855,2722,1952,1029,2839,2467, 84,4383,2215, 820,1391,2015,2448,3672, 377, +1948,2168, 797,2545,3536,2578,2645, 94,2874,1678, 405,1259,3071, 771, 546,1315, + 470,1243,3083, 895,2468, 981, 969,2037, 846,4181, 653,1276,2928, 14,2594, 557, +3007,2474, 156, 902,1338,1740,2574, 537,2518, 973,2282,2216,2433,1928, 138,2903, +1293,2631,1612, 646,3457, 839,2935, 111, 496,2191,2847, 589,3186, 149,3994,2060, +4031,2641,4067,3145,1870, 37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261, +1301, 251,2446,2599,2153, 872,3246, 637, 334,3705, 831, 884, 921,3065,3140,4092, +2198,1944, 246,2964, 108,2045,1152,1921,2308,1031, 203,3173,4170,1907,3890, 810, +1401,2003,1690, 506, 647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708, + 498, 666,2613, 834,3817,1231, 184,2851,1124, 883,3197,2261,3710,1765,1553,2658, +1178,2639,2351, 93,1193, 942,2538,2141,4402, 235,1821, 870,1591,2192,1709,1871, +3341,1618,4126,2595,2334, 603, 651, 69, 701, 268,2662,3411,2555,1380,1606, 503, + 448, 254,2371,2646, 574,1187,2309,1770, 322,2235,1292,1801, 305, 566,1133, 229, +2067,2057, 706, 167, 483,2002,2672,3295,1820,3561,3067, 316, 378,2746,3452,1112, + 136,1981, 507,1651,2917,1117, 285,4591, 182,2580,3522,1304, 335,3303,1835,2504, +1795,1792,2248, 674,1018,2106,2449,1857,2292,2845, 976,3047,1781,2600,2727,1389, +1281, 52,3152, 153, 265,3950, 672,3485,3951,4463, 430,1183, 365, 278,2169, 27, +1407,1336,2304, 209,1340,1730,2202,1852,2403,2883, 979,1737,1062, 631,2829,2542, +3876,2592, 825,2086,2226,3048,3625, 352,1417,3724, 542, 991, 431,1351,3938,1861, +2294, 826,1361,2927,3142,3503,1738, 463,2462,2723, 582,1916,1595,2808, 400,3845, +3891,2868,3621,2254, 58,2492,1123, 910,2160,2614,1372,1603,1196,1072,3385,1700, +3267,1980, 696, 480,2430, 920, 799,1570,2920,1951,2041,4047,2540,1321,4223,2469, +3562,2228,1271,2602, 401,2833,3351,2575,5157, 907,2312,1256, 410, 263,3507,1582, + 996, 678,1849,2316,1480, 908,3545,2237, 703,2322, 667,1826,2849,1531,2604,2999, +2407,3146,2151,2630,1786,3711, 469,3542, 497,3899,2409, 858, 837,4446,3393,1274, + 786, 620,1845,2001,3311, 484, 308,3367,1204,1815,3691,2332,1532,2557,1842,2020, +2724,1927,2333,4440, 567, 22,1673,2728,4475,1987,1858,1144,1597, 101,1832,3601, + 12, 974,3783,4391, 951,1412, 1,3720, 453,4608,4041, 528,1041,1027,3230,2628, +1129, 875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278, 144,1758,3040, 31, + 475,1680, 366,2685,3184, 311,1642,4008,2466,5036,1593,1493,2809, 216,1420,1668, + 233, 304,2128,3284, 232,1429,1768,1040,2008,3407,2740,2967,2543, 242,2133, 778, +1565,2022,2620, 505,2189,2756,1098,2273, 372,1614, 708, 553,2846,2094,2278, 169, +3626,2835,4161, 228,2674,3165, 809,1454,1309, 466,1705,1095, 900,3423, 880,2667, +3751,5258,2317,3109,2571,4317,2766,1503,1342, 866,4447,1118, 63,2076, 314,1881, +1348,1061, 172, 978,3515,1747, 532, 511,3970, 6, 601, 905,2699,3300,1751, 276, +1467,3725,2668, 65,4239,2544,2779,2556,1604, 578,2451,1802, 992,2331,2624,1320, +3446, 713,1513,1013, 103,2786,2447,1661, 886,1702, 916, 654,3574,2031,1556, 751, +2178,2821,2179,1498,1538,2176, 271, 914,2251,2080,1325, 638,1953,2937,3877,2432, +2754, 95,3265,1716, 260,1227,4083, 775, 106,1357,3254, 426,1607, 555,2480, 772, +1985, 244,2546, 474, 495,1046,2611,1851,2061, 71,2089,1675,2590, 742,3758,2843, +3222,1433, 267,2180,2576,2826,2233,2092,3913,2435, 956,1745,3075, 856,2113,1116, + 451, 3,1988,2896,1398, 993,2463,1878,2049,1341,2718,2721,2870,2108, 712,2904, +4363,2753,2324, 277,2872,2349,2649, 384, 987, 435, 691,3000, 922, 164,3939, 652, +1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664, +2530,1434,2408, 893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078, 49,3770, +3469, 462, 318, 656,2259,3250,3069, 679,1629,2758, 344,1138,1104,3120,1836,1283, +3115,2154,1437,4448, 934, 759,1999, 794,2862,1038, 533,2560,1722,2342, 855,2626, +1197,1663,4476,3127, 85,4240,2528, 25,1111,1181,3673, 407,3470,4561,2679,2713, + 768,1925,2841,3986,1544,1165, 932, 373,1240,2146,1930,2673, 721,4766, 354,4333, + 391,2963, 187, 61,3364,1442,1102, 330,1940,1767, 341,3809,4118, 393,2496,2062, +2211, 105, 331, 300, 439, 913,1332, 626, 379,3304,1557, 328, 689,3952, 309,1555, + 931, 317,2517,3027, 325, 569, 686,2107,3084, 60,1042,1333,2794, 264,3177,4014, +1628, 258,3712, 7,4464,1176,1043,1778, 683, 114,1975, 78,1492, 383,1886, 510, + 386, 645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015, +1282,1289,4609, 697,1453,3044,2666,3611,1856,2412, 54, 719,1330, 568,3778,2459, +1748, 788, 492, 551,1191,1000, 488,3394,3763, 282,1799, 348,2016,1523,3155,2390, +1049, 382,2019,1788,1170, 729,2968,3523, 897,3926,2785,2938,3292, 350,2319,3238, +1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232, +1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624, + 381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189, + 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512 +) + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312prober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312prober.py new file mode 100644 index 0000000..8446d2d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312prober.py @@ -0,0 +1,46 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import GB2312DistributionAnalysis +from .mbcssm import GB2312_SM_MODEL + +class GB2312Prober(MultiByteCharSetProber): + def __init__(self): + super(GB2312Prober, self).__init__() + self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) + self.distribution_analyzer = GB2312DistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "GB2312" + + @property + def language(self): + return "Chinese" diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/hebrewprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/hebrewprober.py new file mode 100644 index 0000000..b0e1bf4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/hebrewprober.py @@ -0,0 +1,292 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Shy Shalom +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState + +# This prober doesn't actually recognize a language or a charset. +# It is a helper prober for the use of the Hebrew model probers + +### General ideas of the Hebrew charset recognition ### +# +# Four main charsets exist in Hebrew: +# "ISO-8859-8" - Visual Hebrew +# "windows-1255" - Logical Hebrew +# "ISO-8859-8-I" - Logical Hebrew +# "x-mac-hebrew" - ?? Logical Hebrew ?? +# +# Both "ISO" charsets use a completely identical set of code points, whereas +# "windows-1255" and "x-mac-hebrew" are two different proper supersets of +# these code points. windows-1255 defines additional characters in the range +# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific +# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6. +# x-mac-hebrew defines similar additional code points but with a different +# mapping. +# +# As far as an average Hebrew text with no diacritics is concerned, all four +# charsets are identical with respect to code points. Meaning that for the +# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters +# (including final letters). +# +# The dominant difference between these charsets is their directionality. +# "Visual" directionality means that the text is ordered as if the renderer is +# not aware of a BIDI rendering algorithm. The renderer sees the text and +# draws it from left to right. The text itself when ordered naturally is read +# backwards. A buffer of Visual Hebrew generally looks like so: +# "[last word of first line spelled backwards] [whole line ordered backwards +# and spelled backwards] [first word of first line spelled backwards] +# [end of line] [last word of second line] ... etc' " +# adding punctuation marks, numbers and English text to visual text is +# naturally also "visual" and from left to right. +# +# "Logical" directionality means the text is ordered "naturally" according to +# the order it is read. It is the responsibility of the renderer to display +# the text from right to left. A BIDI algorithm is used to place general +# punctuation marks, numbers and English text in the text. +# +# Texts in x-mac-hebrew are almost impossible to find on the Internet. From +# what little evidence I could find, it seems that its general directionality +# is Logical. +# +# To sum up all of the above, the Hebrew probing mechanism knows about two +# charsets: +# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are +# backwards while line order is natural. For charset recognition purposes +# the line order is unimportant (In fact, for this implementation, even +# word order is unimportant). +# Logical Hebrew - "windows-1255" - normal, naturally ordered text. +# +# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be +# specifically identified. +# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew +# that contain special punctuation marks or diacritics is displayed with +# some unconverted characters showing as question marks. This problem might +# be corrected using another model prober for x-mac-hebrew. Due to the fact +# that x-mac-hebrew texts are so rare, writing another model prober isn't +# worth the effort and performance hit. +# +#### The Prober #### +# +# The prober is divided between two SBCharSetProbers and a HebrewProber, +# all of which are managed, created, fed data, inquired and deleted by the +# SBCSGroupProber. The two SBCharSetProbers identify that the text is in +# fact some kind of Hebrew, Logical or Visual. The final decision about which +# one is it is made by the HebrewProber by combining final-letter scores +# with the scores of the two SBCharSetProbers to produce a final answer. +# +# The SBCSGroupProber is responsible for stripping the original text of HTML +# tags, English characters, numbers, low-ASCII punctuation characters, spaces +# and new lines. It reduces any sequence of such characters to a single space. +# The buffer fed to each prober in the SBCS group prober is pure text in +# high-ASCII. +# The two SBCharSetProbers (model probers) share the same language model: +# Win1255Model. +# The first SBCharSetProber uses the model normally as any other +# SBCharSetProber does, to recognize windows-1255, upon which this model was +# built. The second SBCharSetProber is told to make the pair-of-letter +# lookup in the language model backwards. This in practice exactly simulates +# a visual Hebrew model using the windows-1255 logical Hebrew model. +# +# The HebrewProber is not using any language model. All it does is look for +# final-letter evidence suggesting the text is either logical Hebrew or visual +# Hebrew. Disjointed from the model probers, the results of the HebrewProber +# alone are meaningless. HebrewProber always returns 0.00 as confidence +# since it never identifies a charset by itself. Instead, the pointer to the +# HebrewProber is passed to the model probers as a helper "Name Prober". +# When the Group prober receives a positive identification from any prober, +# it asks for the name of the charset identified. If the prober queried is a +# Hebrew model prober, the model prober forwards the call to the +# HebrewProber to make the final decision. In the HebrewProber, the +# decision is made according to the final-letters scores maintained and Both +# model probers scores. The answer is returned in the form of the name of the +# charset identified, either "windows-1255" or "ISO-8859-8". + +class HebrewProber(CharSetProber): + # windows-1255 / ISO-8859-8 code points of interest + FINAL_KAF = 0xea + NORMAL_KAF = 0xeb + FINAL_MEM = 0xed + NORMAL_MEM = 0xee + FINAL_NUN = 0xef + NORMAL_NUN = 0xf0 + FINAL_PE = 0xf3 + NORMAL_PE = 0xf4 + FINAL_TSADI = 0xf5 + NORMAL_TSADI = 0xf6 + + # Minimum Visual vs Logical final letter score difference. + # If the difference is below this, don't rely solely on the final letter score + # distance. + MIN_FINAL_CHAR_DISTANCE = 5 + + # Minimum Visual vs Logical model score difference. + # If the difference is below this, don't rely at all on the model score + # distance. + MIN_MODEL_DISTANCE = 0.01 + + VISUAL_HEBREW_NAME = "ISO-8859-8" + LOGICAL_HEBREW_NAME = "windows-1255" + + def __init__(self): + super(HebrewProber, self).__init__() + self._final_char_logical_score = None + self._final_char_visual_score = None + self._prev = None + self._before_prev = None + self._logical_prober = None + self._visual_prober = None + self.reset() + + def reset(self): + self._final_char_logical_score = 0 + self._final_char_visual_score = 0 + # The two last characters seen in the previous buffer, + # mPrev and mBeforePrev are initialized to space in order to simulate + # a word delimiter at the beginning of the data + self._prev = ' ' + self._before_prev = ' ' + # These probers are owned by the group prober. + + def set_model_probers(self, logicalProber, visualProber): + self._logical_prober = logicalProber + self._visual_prober = visualProber + + def is_final(self, c): + return c in [self.FINAL_KAF, self.FINAL_MEM, self.FINAL_NUN, + self.FINAL_PE, self.FINAL_TSADI] + + def is_non_final(self, c): + # The normal Tsadi is not a good Non-Final letter due to words like + # 'lechotet' (to chat) containing an apostrophe after the tsadi. This + # apostrophe is converted to a space in FilterWithoutEnglishLetters + # causing the Non-Final tsadi to appear at an end of a word even + # though this is not the case in the original text. + # The letters Pe and Kaf rarely display a related behavior of not being + # a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak' + # for example legally end with a Non-Final Pe or Kaf. However, the + # benefit of these letters as Non-Final letters outweighs the damage + # since these words are quite rare. + return c in [self.NORMAL_KAF, self.NORMAL_MEM, + self.NORMAL_NUN, self.NORMAL_PE] + + def feed(self, byte_str): + # Final letter analysis for logical-visual decision. + # Look for evidence that the received buffer is either logical Hebrew + # or visual Hebrew. + # The following cases are checked: + # 1) A word longer than 1 letter, ending with a final letter. This is + # an indication that the text is laid out "naturally" since the + # final letter really appears at the end. +1 for logical score. + # 2) A word longer than 1 letter, ending with a Non-Final letter. In + # normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi, + # should not end with the Non-Final form of that letter. Exceptions + # to this rule are mentioned above in isNonFinal(). This is an + # indication that the text is laid out backwards. +1 for visual + # score + # 3) A word longer than 1 letter, starting with a final letter. Final + # letters should not appear at the beginning of a word. This is an + # indication that the text is laid out backwards. +1 for visual + # score. + # + # The visual score and logical score are accumulated throughout the + # text and are finally checked against each other in GetCharSetName(). + # No checking for final letters in the middle of words is done since + # that case is not an indication for either Logical or Visual text. + # + # We automatically filter out all 7-bit characters (replace them with + # spaces) so the word boundary detection works properly. [MAP] + + if self.state == ProbingState.NOT_ME: + # Both model probers say it's not them. No reason to continue. + return ProbingState.NOT_ME + + byte_str = self.filter_high_byte_only(byte_str) + + for cur in byte_str: + if cur == ' ': + # We stand on a space - a word just ended + if self._before_prev != ' ': + # next-to-last char was not a space so self._prev is not a + # 1 letter word + if self.is_final(self._prev): + # case (1) [-2:not space][-1:final letter][cur:space] + self._final_char_logical_score += 1 + elif self.is_non_final(self._prev): + # case (2) [-2:not space][-1:Non-Final letter][ + # cur:space] + self._final_char_visual_score += 1 + else: + # Not standing on a space + if ((self._before_prev == ' ') and + (self.is_final(self._prev)) and (cur != ' ')): + # case (3) [-2:space][-1:final letter][cur:not space] + self._final_char_visual_score += 1 + self._before_prev = self._prev + self._prev = cur + + # Forever detecting, till the end or until both model probers return + # ProbingState.NOT_ME (handled above) + return ProbingState.DETECTING + + @property + def charset_name(self): + # Make the decision: is it Logical or Visual? + # If the final letter score distance is dominant enough, rely on it. + finalsub = self._final_char_logical_score - self._final_char_visual_score + if finalsub >= self.MIN_FINAL_CHAR_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE: + return self.VISUAL_HEBREW_NAME + + # It's not dominant enough, try to rely on the model scores instead. + modelsub = (self._logical_prober.get_confidence() + - self._visual_prober.get_confidence()) + if modelsub > self.MIN_MODEL_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if modelsub < -self.MIN_MODEL_DISTANCE: + return self.VISUAL_HEBREW_NAME + + # Still no good, back to final letter distance, maybe it'll save the + # day. + if finalsub < 0.0: + return self.VISUAL_HEBREW_NAME + + # (finalsub > 0 - Logical) or (don't know what to do) default to + # Logical. + return self.LOGICAL_HEBREW_NAME + + @property + def language(self): + return 'Hebrew' + + @property + def state(self): + # Remain active as long as any of the model probers are active. + if (self._logical_prober.state == ProbingState.NOT_ME) and \ + (self._visual_prober.state == ProbingState.NOT_ME): + return ProbingState.NOT_ME + return ProbingState.DETECTING diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/jisfreq.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/jisfreq.py new file mode 100644 index 0000000..83fc082 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/jisfreq.py @@ -0,0 +1,325 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology +# +# Japanese frequency table, applied to both S-JIS and EUC-JP +# They are sorted in order. + +# 128 --> 0.77094 +# 256 --> 0.85710 +# 512 --> 0.92635 +# 1024 --> 0.97130 +# 2048 --> 0.99431 +# +# Ideal Distribution Ratio = 0.92635 / (1-0.92635) = 12.58 +# Random Distribution Ration = 512 / (2965+62+83+86-512) = 0.191 +# +# Typical Distribution Ratio, 25% of IDR + +JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0 + +# Char to FreqOrder table , +JIS_TABLE_SIZE = 4368 + +JIS_CHAR_TO_FREQ_ORDER = ( + 40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16 +3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32 +1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48 +2042,1061,1062, 48, 49, 44, 45, 433, 434,1040,1041, 996, 787,2997,1255,4305, # 64 +2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928, # 80 +5081,3296,3432, 290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375, # 96 +1691,3297,4306,4307,4611, 452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086, # 112 +5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102, # 128 +5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117, # 144 +5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133, # 160 +5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149, # 176 +5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164, # 192 +5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472, 598, 618, 820,1205, # 208 +1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172, # 224 +1875,2043,2149,1793,1382,2973, 925,2404,1067,1241, 960,1377,2935,1491, 919,1217, # 240 +1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804, # 256 +2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998, # 272 +3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161, 26,3377, 2,3929, 20, # 288 +3691, 47,4100, 50, 17, 16, 35, 268, 27, 243, 42, 155, 24, 154, 29, 184, # 304 + 4, 91, 14, 92, 53, 396, 33, 289, 9, 37, 64, 620, 21, 39, 321, 5, # 320 + 12, 11, 52, 13, 3, 208, 138, 0, 7, 60, 526, 141, 151,1069, 181, 275, # 336 +1591, 83, 132,1475, 126, 331, 829, 15, 69, 160, 59, 22, 157, 55,1079, 312, # 352 + 109, 38, 23, 25, 10, 19, 79,5195, 61, 382,1124, 8, 30,5196,5197,5198, # 368 +5199,5200,5201,5202,5203,5204,5205,5206, 89, 62, 74, 34,2416, 112, 139, 196, # 384 + 271, 149, 84, 607, 131, 765, 46, 88, 153, 683, 76, 874, 101, 258, 57, 80, # 400 + 32, 364, 121,1508, 169,1547, 68, 235, 145,2999, 41, 360,3027, 70, 63, 31, # 416 + 43, 259, 262,1383, 99, 533, 194, 66, 93, 846, 217, 192, 56, 106, 58, 565, # 432 + 280, 272, 311, 256, 146, 82, 308, 71, 100, 128, 214, 655, 110, 261, 104,1140, # 448 + 54, 51, 36, 87, 67,3070, 185,2618,2936,2020, 28,1066,2390,2059,5207,5208, # 464 +5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223, # 480 +5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238, # 496 +5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247, # 512 +4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251, # 528 +5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267, # 544 +5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283, # 560 +5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299, # 576 +5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315, # 592 +5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331, # 608 +5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347, # 624 +5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, # 640 +5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379, # 656 +5380,5381, 363, 642,2787,2878,2788,2789,2316,3232,2317,3434,2011, 165,1942,3930, # 672 +3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392, # 688 +5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, # 704 +5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424, # 720 +5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440, # 736 +5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456, # 752 +5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472, # 768 +5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488, # 784 +5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504, # 800 +5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520, # 816 +5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536, # 832 +5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552, # 848 +5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568, # 864 +5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584, # 880 +5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600, # 896 +5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616, # 912 +5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632, # 928 +5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, # 944 +5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664, # 960 +5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680, # 976 +5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696, # 992 +5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712, # 1008 +5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728, # 1024 +5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744, # 1040 +5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760, # 1056 +5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776, # 1072 +5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792, # 1088 +5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808, # 1104 +5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824, # 1120 +5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840, # 1136 +5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856, # 1152 +5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872, # 1168 +5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, # 1184 +5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904, # 1200 +5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, # 1216 +5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936, # 1232 +5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952, # 1248 +5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, # 1264 +5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984, # 1280 +5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000, # 1296 +6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016, # 1312 +6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, # 1328 +6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048, # 1344 +6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064, # 1360 +6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080, # 1376 +6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096, # 1392 +6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112, # 1408 +6113,6114,2044,2060,4621, 997,1235, 473,1186,4622, 920,3378,6115,6116, 379,1108, # 1424 +4313,2657,2735,3934,6117,3809, 636,3233, 573,1026,3693,3435,2974,3300,2298,4105, # 1440 + 854,2937,2463, 393,2581,2417, 539, 752,1280,2750,2480, 140,1161, 440, 708,1569, # 1456 + 665,2497,1746,1291,1523,3000, 164,1603, 847,1331, 537,1997, 486, 508,1693,2418, # 1472 +1970,2227, 878,1220, 299,1030, 969, 652,2751, 624,1137,3301,2619, 65,3302,2045, # 1488 +1761,1859,3120,1930,3694,3516, 663,1767, 852, 835,3695, 269, 767,2826,2339,1305, # 1504 + 896,1150, 770,1616,6118, 506,1502,2075,1012,2519, 775,2520,2975,2340,2938,4314, # 1520 +3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557, 175, 597, 985, # 1536 +3517,2419,2521,1416,3029, 585, 938,1931,1007,1052,1932,1685,6120,3379,4316,4623, # 1552 + 804, 599,3121,1333,2128,2539,1159,1554,2032,3810, 687,2033,2904, 952, 675,1467, # 1568 +3436,6121,2241,1096,1786,2440,1543,1924, 980,1813,2228, 781,2692,1879, 728,1918, # 1584 +3696,4624, 548,1950,4625,1809,1088,1356,3303,2522,1944, 502, 972, 373, 513,2827, # 1600 + 586,2377,2391,1003,1976,1631,6122,2464,1084, 648,1776,4626,2141, 324, 962,2012, # 1616 +2177,2076,1384, 742,2178,1448,1173,1810, 222, 102, 301, 445, 125,2420, 662,2498, # 1632 + 277, 200,1476,1165,1068, 224,2562,1378,1446, 450,1880, 659, 791, 582,4627,2939, # 1648 +3936,1516,1274, 555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229, 412,2114, # 1664 +1900,2392,3518, 512,2597, 427,1925,2341,3122,1653,1686,2465,2499, 697, 330, 273, # 1680 + 380,2162, 951, 832, 780, 991,1301,3073, 965,2270,3519, 668,2523,2636,1286, 535, # 1696 +1407, 518, 671, 957,2658,2378, 267, 611,2197,3030,6123, 248,2299, 967,1799,2356, # 1712 + 850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879, # 1728 +2829, 499,2179, 676,4629, 557,2329,2214,2090, 325,3234, 464, 811,3001, 992,2342, # 1744 +2481,1232,1469, 303,2242, 466,1070,2163, 603,1777,2091,4630,2752,4631,2714, 322, # 1760 +2659,1964,1768, 481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849, # 1776 +2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634, # 1792 +1604, 943,1724,1454, 917, 868,2215,1169,2940, 552,1145,1800,1228,1823,1955, 316, # 1808 +1080,2510, 361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127, 541,1263,1229, # 1824 +1148,2540, 545, 465,1833,2880,3438,1901,3074,2482, 816,3937, 713,1788,2500, 122, # 1840 +1575, 195,1451,2501,1111,6128, 859, 374,1225,2243,2483,4317, 390,1033,3439,3075, # 1856 +2524,1687, 266, 793,1440,2599, 946, 779, 802, 507, 897,1081, 528,2189,1292, 711, # 1872 +1866,1725,1167,1640, 753, 398,2661,1053, 246, 348,4318, 137,1024,3440,1600,2077, # 1888 +2129, 825,4319, 698, 238, 521, 187,2300,1157,2423,1641,1605,1464,1610,1097,2541, # 1904 +1260,1436, 759,2255,1814,2150, 705,3235, 409,2563,3304, 561,3033,2005,2564, 726, # 1920 +1956,2343,3698,4109, 949,3812,3813,3520,1669, 653,1379,2525, 881,2198, 632,2256, # 1936 +1027, 778,1074, 733,1957, 514,1481,2466, 554,2180, 702,3938,1606,1017,1398,6129, # 1952 +1380,3521, 921, 993,1313, 594, 449,1489,1617,1166, 768,1426,1360, 495,1794,3601, # 1968 +1177,3602,1170,4320,2344, 476, 425,3167,4635,3168,1424, 401,2662,1171,3382,1998, # 1984 +1089,4110, 477,3169, 474,6130,1909, 596,2831,1842, 494, 693,1051,1028,1207,3076, # 2000 + 606,2115, 727,2790,1473,1115, 743,3522, 630, 805,1532,4321,2021, 366,1057, 838, # 2016 + 684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090, # 2032 +1536,3939,3523,3306,1455,2199, 336, 369,2331,1035, 584,2393, 902, 718,2600,6131, # 2048 +2753, 463,2151,1149,1611,2467, 715,1308,3124,1268, 343,1413,3236,1517,1347,2663, # 2064 +2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980, 872,2368, # 2080 +2441,2943, 320,2369,2116,1082, 679,1933,3941,2791,3815, 625,1143,2023, 422,2200, # 2096 +3816,6133, 730,1695, 356,2257,1626,2301,2858,2637,1627,1778, 937, 883,2906,2693, # 2112 +3002,1769,1086, 400,1063,1325,3307,2792,4111,3077, 456,2345,1046, 747,6134,1524, # 2128 + 884,1094,3383,1474,2164,1059, 974,1688,2181,2258,1047, 345,1665,1187, 358, 875, # 2144 +3170, 305, 660,3524,2190,1334,1135,3171,1540,1649,2542,1527, 927, 968,2793, 885, # 2160 +1972,1850, 482, 500,2638,1218,1109,1085,2543,1654,2034, 876, 78,2287,1482,1277, # 2176 + 861,1675,1083,1779, 724,2754, 454, 397,1132,1612,2332, 893, 672,1237, 257,2259, # 2192 +2370, 135,3384, 337,2244, 547, 352, 340, 709,2485,1400, 788,1138,2511, 540, 772, # 2208 +1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533, 407, # 2224 + 576,3308,1254,2071, 978,3385, 170, 136,1201,3125,2664,3172,2394, 213, 912, 873, # 2240 +3603,1713,2202, 699,3604,3699, 813,3442, 493, 531,1054, 468,2907,1483, 304, 281, # 2256 +4112,1726,1252,2094, 339,2319,2130,2639, 756,1563,2944, 748, 571,2976,1588,2425, # 2272 +2715,1851,1460,2426,1528,1392,1973,3237, 288,3309, 685,3386, 296, 892,2716,2216, # 2288 +1570,2245, 722,1747,2217, 905,3238,1103,6135,1893,1441,1965, 251,1805,2371,3700, # 2304 +2601,1919,1078, 75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817, 524, 706, # 2320 +1075, 292,3818,1756,2602, 317, 98,3173,3605,3525,1844,2218,3819,2502, 814, 567, # 2336 + 385,2908,1534,6137, 534,1642,3239, 797,6138,1670,1529, 953,4323, 188,1071, 538, # 2352 + 178, 729,3240,2109,1226,1374,2000,2357,2977, 731,2468,1116,2014,2051,6139,1261, # 2368 +1593, 803,2859,2736,3443, 556, 682, 823,1541,6140,1369,2289,1706,2794, 845, 462, # 2384 +2603,2665,1361, 387, 162,2358,1740, 739,1770,1720,1304,1401,3241,1049, 627,1571, # 2400 +2427,3526,1877,3942,1852,1500, 431,1910,1503, 677, 297,2795, 286,1433,1038,1198, # 2416 +2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442, 108, 712,4640,2372, 866, # 2432 +3701,2755,3242,1348, 834,1945,1408,3527,2395,3243,1811, 824, 994,1179,2110,1548, # 2448 +1453, 790,3003, 690,4324,4325,2832,2909,3820,1860,3821, 225,1748, 310, 346,1780, # 2464 +2470, 821,1993,2717,2796, 828, 877,3528,2860,2471,1702,2165,2910,2486,1789, 453, # 2480 + 359,2291,1676, 73,1164,1461,1127,3311, 421, 604, 314,1037, 589, 116,2487, 737, # 2496 + 837,1180, 111, 244, 735,6142,2261,1861,1362, 986, 523, 418, 581,2666,3822, 103, # 2512 + 855, 503,1414,1867,2488,1091, 657,1597, 979, 605,1316,4641,1021,2443,2078,2001, # 2528 +1209, 96, 587,2166,1032, 260,1072,2153, 173, 94, 226,3244, 819,2006,4642,4114, # 2544 +2203, 231,1744, 782, 97,2667, 786,3387, 887, 391, 442,2219,4326,1425,6143,2694, # 2560 + 633,1544,1202, 483,2015, 592,2052,1958,2472,1655, 419, 129,4327,3444,3312,1714, # 2576 +1257,3078,4328,1518,1098, 865,1310,1019,1885,1512,1734, 469,2444, 148, 773, 436, # 2592 +1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643, 579,1238, 932,2320, # 2608 + 353, 205, 801, 115,2428, 944,2321,1881, 399,2565,1211, 678, 766,3944, 335,2101, # 2624 +1459,1781,1402,3945,2737,2131,1010, 844, 981,1326,1013, 550,1816,1545,2620,1335, # 2640 +1008, 371,2881, 936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503, 416, # 2656 +1643,4330, 806,1126, 229, 591,3946,1314,1981,1576,1837,1666, 347,1790, 977,3313, # 2672 + 764,2861,1853, 688,2429,1920,1462, 77, 595, 415,2002,3034, 798,1192,4115,6144, # 2688 +2978,4331,3035,2695,2582,2072,2566, 430,2430,1727, 842,1396,3947,3702, 613, 377, # 2704 + 278, 236,1417,3388,3314,3174, 757,1869, 107,3530,6145,1194, 623,2262, 207,1253, # 2720 +2167,3446,3948, 492,1117,1935, 536,1838,2757,1246,4332, 696,2095,2406,1393,1572, # 2736 +3175,1782, 583, 190, 253,1390,2230, 830,3126,3389, 934,3245,1703,1749,2979,1870, # 2752 +2545,1656,2204, 869,2346,4116,3176,1817, 496,1764,4644, 942,1504, 404,1903,1122, # 2768 +1580,3606,2945,1022, 515, 372,1735, 955,2431,3036,6146,2797,1110,2302,2798, 617, # 2784 +6147, 441, 762,1771,3447,3607,3608,1904, 840,3037, 86, 939,1385, 572,1370,2445, # 2800 +1336, 114,3703, 898, 294, 203,3315, 703,1583,2274, 429, 961,4333,1854,1951,3390, # 2816 +2373,3704,4334,1318,1381, 966,1911,2322,1006,1155, 309, 989, 458,2718,1795,1372, # 2832 +1203, 252,1689,1363,3177, 517,1936, 168,1490, 562, 193,3823,1042,4117,1835, 551, # 2848 + 470,4645, 395, 489,3448,1871,1465,2583,2641, 417,1493, 279,1295, 511,1236,1119, # 2864 + 72,1231,1982,1812,3004, 871,1564, 984,3449,1667,2696,2096,4646,2347,2833,1673, # 2880 +3609, 695,3246,2668, 807,1183,4647, 890, 388,2333,1801,1457,2911,1765,1477,1031, # 2896 +3316,3317,1278,3391,2799,2292,2526, 163,3450,4335,2669,1404,1802,6148,2323,2407, # 2912 +1584,1728,1494,1824,1269, 298, 909,3318,1034,1632, 375, 776,1683,2061, 291, 210, # 2928 +1123, 809,1249,1002,2642,3038, 206,1011,2132, 144, 975, 882,1565, 342, 667, 754, # 2944 +1442,2143,1299,2303,2062, 447, 626,2205,1221,2739,2912,1144,1214,2206,2584, 760, # 2960 +1715, 614, 950,1281,2670,2621, 810, 577,1287,2546,4648, 242,2168, 250,2643, 691, # 2976 + 123,2644, 647, 313,1029, 689,1357,2946,1650, 216, 771,1339,1306, 808,2063, 549, # 2992 + 913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079, 406, # 3008 +2671,2117,3949,4649, 487,1825,2220,6150,2915, 448,2348,1073,6151,2397,1707, 130, # 3024 + 900,1598, 329, 176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155, # 3040 +3706,1912,1513,1614,6153,1988, 646, 392,2304,1589,3320,3039,1826,1239,1352,1340, # 3056 +2916, 505,2567,1709,1437,2408,2547, 906,6154,2672, 384,1458,1594,1100,1329, 710, # 3072 + 423,3531,2064,2231,2622,1989,2673,1087,1882, 333, 841,3005,1296,2882,2379, 580, # 3088 +1937,1827,1293,2585, 601, 574, 249,1772,4118,2079,1120, 645, 901,1176,1690, 795, # 3104 +2207, 478,1434, 516,1190,1530, 761,2080, 930,1264, 355, 435,1552, 644,1791, 987, # 3120 + 220,1364,1163,1121,1538, 306,2169,1327,1222, 546,2645, 218, 241, 610,1704,3321, # 3136 +1984,1839,1966,2528, 451,6155,2586,3707,2568, 907,3178, 254,2947, 186,1845,4650, # 3152 + 745, 432,1757, 428,1633, 888,2246,2221,2489,3611,2118,1258,1265, 956,3127,1784, # 3168 +4337,2490, 319, 510, 119, 457,3612, 274,2035,2007,4651,1409,3128, 970,2758, 590, # 3184 +2800, 661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111, 485,2491, # 3200 +1429,1156,6156,2548,2183,1495, 831,1840,2529,2446, 501,1657, 307,1894,3247,1341, # 3216 + 666, 899,2156,1539,2549,1559, 886, 349,2208,3081,2305,1736,3824,2170,2759,1014, # 3232 +1913,1386, 542,1397,2948, 490, 368, 716, 362, 159, 282,2569,1129,1658,1288,1750, # 3248 +2674, 276, 649,2016, 751,1496, 658,1818,1284,1862,2209,2087,2512,3451, 622,2834, # 3264 + 376, 117,1060,2053,1208,1721,1101,1443, 247,1250,3179,1792,3952,2760,2398,3953, # 3280 +6157,2144,3708, 446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082, 424,2222, # 3296 +1251,2449,2119,2836, 504,1581,4338, 602, 817, 857,3825,2349,2306, 357,3826,1470, # 3312 +1883,2883, 255, 958, 929,2917,3248, 302,4653,1050,1271,1751,2307,1952,1430,2697, # 3328 +2719,2359, 354,3180, 777, 158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232, # 3344 +3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428, 637, 931,2721,2145, # 3360 + 914,2550,2587, 81,2450, 612, 827,2646,1242,4655,1118,2884, 472,1855,3181,3533, # 3376 +3534, 569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152, # 3392 +1938, 134,1830, 471,3710,2276,1112,1535,3323,3453,3535, 982,1337,2950, 488, 826, # 3408 + 674,1058,1628,4120,2017, 522,2399, 211, 568,1367,3454, 350, 293,1872,1139,3249, # 3424 +1399,1946,3006,1300,2360,3324, 588, 736,6160,2606, 744, 669,3536,3828,6161,1358, # 3440 + 199, 723, 848, 933, 851,1939,1505,1514,1338,1618,1831,4656,1634,3613, 443,2740, # 3456 +3829, 717,1947, 491,1914,6162,2551,1542,4121,1025,6163,1099,1223, 198,3040,2722, # 3472 + 370, 410,1905,2589, 998,1248,3182,2380, 519,1449,4122,1710, 947, 928,1153,4341, # 3488 +2277, 344,2624,1511, 615, 105, 161,1212,1076,1960,3130,2054,1926,1175,1906,2473, # 3504 + 414,1873,2801,6164,2309, 315,1319,3325, 318,2018,2146,2157, 963, 631, 223,4342, # 3520 +4343,2675, 479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886, # 3536 +2184,1674,1330,1711,1635,1506, 799, 219,3250,3083,3954,1677,3713,3326,2081,3614, # 3552 +1652,2073,4657,1147,3041,1752, 643,1961, 147,1974,3955,6167,1716,2037, 918,3007, # 3568 +1994, 120,1537, 118, 609,3184,4345, 740,3455,1219, 332,1615,3830,6168,1621,2980, # 3584 +1582, 783, 212, 553,2350,3714,1349,2433,2082,4124, 889,6169,2310,1275,1410, 973, # 3600 + 166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658, 629, 822,3008, 763, 940, # 3616 +1990,2862, 439,2409,1566,1240,1622, 926,1282,1907,2764, 654,2210,1607, 327,1130, # 3632 +3956,1678,1623,6170,2434,2192, 686, 608,3831,3715, 903,3957,3042,6171,2741,1522, # 3648 +1915,1105,1555,2552,1359, 323,3251,4346,3457, 738,1354,2553,2311,2334,1828,2003, # 3664 +3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847, 520,1204,2607, # 3680 + 264,4659, 836,2677,2102, 600,4660,3833,2278,3084,6174,4347,3615,1342, 640, 532, # 3696 + 543,2608,1888,2400,2591,1009,4348,1497, 341,1737,3616,2723,1394, 529,3252,1321, # 3712 + 983,4661,1515,2120, 971,2592, 924, 287,1662,3186,4349,2700,4350,1519, 908,1948, # 3728 +2452, 156, 796,1629,1486,2223,2055, 694,4126,1259,1036,3392,1213,2249,2742,1889, # 3744 +1230,3958,1015, 910, 408, 559,3617,4662, 746, 725, 935,4663,3959,3009,1289, 563, # 3760 + 867,4664,3960,1567,2981,2038,2626, 988,2263,2381,4351, 143,2374, 704,1895,6175, # 3776 +1188,3716,2088, 673,3085,2362,4352, 484,1608,1921,2765,2918, 215, 904,3618,3537, # 3792 + 894, 509, 976,3043,2701,3961,4353,2837,2982, 498,6176,6177,1102,3538,1332,3393, # 3808 +1487,1636,1637, 233, 245,3962, 383, 650, 995,3044, 460,1520,1206,2352, 749,3327, # 3824 + 530, 700, 389,1438,1560,1773,3963,2264, 719,2951,2724,3834, 870,1832,1644,1000, # 3840 + 839,2474,3717, 197,1630,3394, 365,2886,3964,1285,2133, 734, 922, 818,1106, 732, # 3856 + 480,2083,1774,3458, 923,2279,1350, 221,3086, 85,2233,2234,3835,1585,3010,2147, # 3872 +1387,1705,2382,1619,2475, 133, 239,2802,1991,1016,2084,2383, 411,2838,1113, 651, # 3888 +1985,1160,3328, 990,1863,3087,1048,1276,2647, 265,2627,1599,3253,2056, 150, 638, # 3904 +2019, 656, 853, 326,1479, 680,1439,4354,1001,1759, 413,3459,3395,2492,1431, 459, # 3920 +4355,1125,3329,2265,1953,1450,2065,2863, 849, 351,2678,3131,3254,3255,1104,1577, # 3936 + 227,1351,1645,2453,2193,1421,2887, 812,2121, 634, 95,2435, 201,2312,4665,1646, # 3952 +1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189, # 3968 + 328,2679,1077,1940,1136, 558,1283, 964,1195, 621,2074,1199,1743,3460,3619,1896, # 3984 +1916,1890,3836,2952,1154,2112,1064, 862, 378,3011,2066,2113,2803,1568,2839,6178, # 4000 +3088,2919,1941,1660,2004,1992,2194, 142, 707,1590,1708,1624,1922,1023,1836,1233, # 4016 +1004,2313, 789, 741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721, 593, # 4032 +2840, 367,2920,1878,6180,3461,1521, 628,1168, 692,2211,2649, 300, 720,2067,2571, # 4048 +2953,3396, 959,2504,3966,3539,3462,1977, 701,6181, 954,1043, 800, 681, 183,3722, # 4064 +1803,1730,3540,4128,2103, 815,2314, 174, 467, 230,2454,1093,2134, 755,3541,3397, # 4080 +1141,1162,6182,1738,2039, 270,3256,2513,1005,1647,2185,3837, 858,1679,1897,1719, # 4096 +2954,2324,1806, 402, 670, 167,4129,1498,2158,2104, 750,6183, 915, 189,1680,1551, # 4112 + 455,4356,1501,2455, 405,1095,2955, 338,1586,1266,1819, 570, 641,1324, 237,1556, # 4128 +2650,1388,3723,6184,1368,2384,1343,1978,3089,2436, 879,3724, 792,1191, 758,3012, # 4144 +1411,2135,1322,4357, 240,4667,1848,3725,1574,6185, 420,3045,1546,1391, 714,4358, # 4160 +1967, 941,1864, 863, 664, 426, 560,1731,2680,1785,2864,1949,2363, 403,3330,1415, # 4176 +1279,2136,1697,2335, 204, 721,2097,3838, 90,6186,2085,2505, 191,3967, 124,2148, # 4192 +1376,1798,1178,1107,1898,1405, 860,4359,1243,1272,2375,2983,1558,2456,1638, 113, # 4208 +3621, 578,1923,2609, 880, 386,4130, 784,2186,2266,1422,2956,2172,1722, 497, 263, # 4224 +2514,1267,2412,2610, 177,2703,3542, 774,1927,1344, 616,1432,1595,1018, 172,4360, # 4240 +2325, 911,4361, 438,1468,3622, 794,3968,2024,2173,1681,1829,2957, 945, 895,3090, # 4256 + 575,2212,2476, 475,2401,2681, 785,2744,1745,2293,2555,1975,3133,2865, 394,4668, # 4272 +3839, 635,4131, 639, 202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457, # 4288 +3727,3134,4362, 843,2611, 437, 916,4669, 234, 769,1884,3046,3047,3623, 833,6187, # 4304 +1639,2250,2402,1355,1185,2010,2047, 999, 525,1732,1290,1488,2612, 948,1578,3728, # 4320 +2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336 +1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352 +2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512 +) + + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/jpcntx.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/jpcntx.py new file mode 100644 index 0000000..20044e4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/jpcntx.py @@ -0,0 +1,233 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + + +# This is hiragana 2-char sequence table, the number in each cell represents its frequency category +jp2CharContext = ( +(0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1), +(2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4), +(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2), +(0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,5,4,4,5,4,5,0,4,0,0,4,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,3,0,4,4,5,3,4,4,0,3,0,0,1,4), +(1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4), +(0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3), +(0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,3,3,4,4,4,4,5,4,2,0,3,3,2,4,3), +(0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3), +(0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4), +(0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3), +(2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4), +(0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3), +(0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5), +(0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3), +(2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5), +(0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4), +(1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4), +(0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3), +(0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3), +(0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3), +(0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5), +(0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4), +(0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5), +(0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3), +(0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4), +(0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4), +(0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4), +(0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1), +(0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), +(1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3), +(0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0), +(0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3), +(0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3), +(0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5), +(0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4), +(2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5), +(0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3), +(0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3), +(0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3), +(0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3), +(0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4), +(0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4), +(0,0,0,4,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2), +(0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3), +(0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3), +(0,0,0,0,0,0,0,0,0,0,3,0,2,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3), +(0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3), +(0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4), +(0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3), +(0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4), +(0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3), +(0,0,0,1,0,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3), +(0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4), +(0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4), +(0,0,0,3,0,3,0,0,0,0,3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3), +(2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4), +(0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4), +(0,3,0,3,0,1,0,0,0,1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3), +(0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4), +(0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4), +(1,4,0,4,0,3,0,1,0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4), +(0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3), +(0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2), +(0,2,0,3,0,4,0,4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2), +(0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3), +(0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3), +(0,4,0,5,0,4,0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5), +(0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3), +(0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4), +(1,3,0,4,0,2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4), +(0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,3,0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1), +(0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2), +(0,4,0,4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3), +(0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1), +) + +class JapaneseContextAnalysis(object): + NUM_OF_CATEGORY = 6 + DONT_KNOW = -1 + ENOUGH_REL_THRESHOLD = 100 + MAX_REL_THRESHOLD = 1000 + MINIMUM_DATA_THRESHOLD = 4 + + def __init__(self): + self._total_rel = None + self._rel_sample = None + self._need_to_skip_char_num = None + self._last_char_order = None + self._done = None + self.reset() + + def reset(self): + self._total_rel = 0 # total sequence received + # category counters, each integer counts sequence in its category + self._rel_sample = [0] * self.NUM_OF_CATEGORY + # if last byte in current buffer is not the last byte of a character, + # we need to know how many bytes to skip in next buffer + self._need_to_skip_char_num = 0 + self._last_char_order = -1 # The order of previous char + # If this flag is set to True, detection is done and conclusion has + # been made + self._done = False + + def feed(self, byte_str, num_bytes): + if self._done: + return + + # The buffer we got is byte oriented, and a character may span in more than one + # buffers. In case the last one or two byte in last buffer is not + # complete, we record how many byte needed to complete that character + # and skip these bytes here. We can choose to record those bytes as + # well and analyse the character once it is complete, but since a + # character will not make much difference, by simply skipping + # this character will simply our logic and improve performance. + i = self._need_to_skip_char_num + while i < num_bytes: + order, char_len = self.get_order(byte_str[i:i + 2]) + i += char_len + if i > num_bytes: + self._need_to_skip_char_num = i - num_bytes + self._last_char_order = -1 + else: + if (order != -1) and (self._last_char_order != -1): + self._total_rel += 1 + if self._total_rel > self.MAX_REL_THRESHOLD: + self._done = True + break + self._rel_sample[jp2CharContext[self._last_char_order][order]] += 1 + self._last_char_order = order + + def got_enough_data(self): + return self._total_rel > self.ENOUGH_REL_THRESHOLD + + def get_confidence(self): + # This is just one way to calculate confidence. It works well for me. + if self._total_rel > self.MINIMUM_DATA_THRESHOLD: + return (self._total_rel - self._rel_sample[0]) / self._total_rel + else: + return self.DONT_KNOW + + def get_order(self, byte_str): + return -1, 1 + +class SJISContextAnalysis(JapaneseContextAnalysis): + def __init__(self): + super(SJISContextAnalysis, self).__init__() + self._charset_name = "SHIFT_JIS" + + @property + def charset_name(self): + return self._charset_name + + def get_order(self, byte_str): + if not byte_str: + return -1, 1 + # find out current char's byte length + first_char = byte_str[0] + if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC): + char_len = 2 + if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): + self._charset_name = "CP932" + else: + char_len = 1 + + # return its order if it is hiragana + if len(byte_str) > 1: + second_char = byte_str[1] + if (first_char == 202) and (0x9F <= second_char <= 0xF1): + return second_char - 0x9F, char_len + + return -1, char_len + +class EUCJPContextAnalysis(JapaneseContextAnalysis): + def get_order(self, byte_str): + if not byte_str: + return -1, 1 + # find out current char's byte length + first_char = byte_str[0] + if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE): + char_len = 2 + elif first_char == 0x8F: + char_len = 3 + else: + char_len = 1 + + # return its order if it is hiragana + if len(byte_str) > 1: + second_char = byte_str[1] + if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3): + return second_char - 0xA1, char_len + + return -1, char_len + + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langbulgarianmodel.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langbulgarianmodel.py new file mode 100644 index 0000000..f5fcf83 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langbulgarianmodel.py @@ -0,0 +1,4649 @@ +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +BULGARIAN_LANG_MODEL = { + 63: { # 'e' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 1, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 0, # 'и' + 26: 1, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 1, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 0, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 45: { # '\xad' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 1, # 'М' + 36: 0, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 0, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 31: { # 'А' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 2, # 'З' + 40: 1, # 'И' + 59: 1, # 'Й' + 33: 1, # 'К' + 46: 2, # 'Л' + 38: 1, # 'М' + 36: 2, # 'Н' + 41: 1, # 'О' + 30: 2, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 2, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 2, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 1, # 'а' + 18: 2, # 'б' + 9: 2, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 1, # 'е' + 23: 1, # 'ж' + 15: 2, # 'з' + 2: 0, # 'и' + 26: 2, # 'й' + 12: 2, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 0, # 'о' + 13: 2, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 1, # 'у' + 29: 2, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 32: { # 'Б' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 2, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 1, # 'Е' + 55: 1, # 'Ж' + 47: 2, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 2, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 2, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 1, # 'Щ' + 61: 2, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 1, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 35: { # 'В' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 2, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 2, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 2, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 43: { # 'Г' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 1, # 'Щ' + 61: 1, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 1, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 37: { # 'Д' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 2, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 2, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 44: { # 'Е' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 1, # 'Й' + 33: 2, # 'К' + 46: 2, # 'Л' + 38: 1, # 'М' + 36: 2, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 2, # 'Ф' + 49: 1, # 'Х' + 53: 2, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 1, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 0, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 0, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 0, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 2, # 'н' + 4: 0, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 1, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 55: { # 'Ж' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 47: { # 'З' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 2, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 1, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 1, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 40: { # 'И' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 2, # 'З' + 40: 1, # 'И' + 59: 1, # 'Й' + 33: 2, # 'К' + 46: 2, # 'Л' + 38: 2, # 'М' + 36: 2, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 0, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 1, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 2, # 'Я' + 1: 1, # 'а' + 18: 1, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 1, # 'д' + 3: 1, # 'е' + 23: 0, # 'ж' + 15: 3, # 'з' + 2: 0, # 'и' + 26: 1, # 'й' + 12: 1, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 2, # 'н' + 4: 0, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 0, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 59: { # 'Й' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 1, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 33: { # 'К' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 2, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 1, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 3, # 'р' + 8: 1, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 46: { # 'Л' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 2, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 0, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 38: { # 'М' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 0, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 36: { # 'Н' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 2, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 1, # 'Й' + 33: 2, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 1, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 1, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 2, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 41: { # 'О' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 1, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 1, # 'Й' + 33: 2, # 'К' + 46: 2, # 'Л' + 38: 2, # 'М' + 36: 2, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 0, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 1, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 1, # 'а' + 18: 2, # 'б' + 9: 2, # 'в' + 20: 2, # 'г' + 11: 1, # 'д' + 3: 1, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 0, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 0, # 'о' + 13: 2, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 2, # 'ч' + 27: 0, # 'ш' + 24: 2, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 30: { # 'П' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 2, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 3, # 'л' + 14: 0, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 3, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 2, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 39: { # 'Р' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 2, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 1, # 'с' + 5: 0, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 28: { # 'С' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 3, # 'А' + 32: 2, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 2, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 2, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 34: { # 'Т' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 2, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 2, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 3, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 51: { # 'У' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 0, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 2, # 'Т' + 51: 0, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 2, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 2, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 2, # 'с' + 5: 1, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 48: { # 'Ф' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 49: { # 'Х' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 53: { # 'Ц' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 2, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 2, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 1, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 50: { # 'Ч' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 1, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 54: { # 'Ш' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 2, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 57: { # 'Щ' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 1, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 1, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 61: { # 'Ъ' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 0, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 2, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 0, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 1, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 1, # 'л' + 14: 0, # 'м' + 6: 1, # 'н' + 4: 0, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 60: { # 'Ю' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 0, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 0, # 'Е' + 55: 1, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 2, # 'г' + 11: 1, # 'д' + 3: 0, # 'е' + 23: 2, # 'ж' + 15: 1, # 'з' + 2: 1, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 0, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 56: { # 'Я' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 1, # 'С' + 34: 2, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 1, # 'и' + 26: 1, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 2, # 'м' + 6: 2, # 'н' + 4: 0, # 'о' + 13: 2, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 1: { # 'а' + 63: 1, # 'e' + 45: 1, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 3, # 'и' + 26: 3, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 3, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 3, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 18: { # 'б' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 3, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 0, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 2, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 3, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 9: { # 'в' + 63: 1, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 1, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 0, # 'в' + 20: 2, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 3, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 2, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 3, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 20: { # 'г' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 3, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 11: { # 'д' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 2, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 1, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 3: { # 'е' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 2, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 2, # 'и' + 26: 3, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 3, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 3, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 23: { # 'ж' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 15: { # 'з' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 2: { # 'и' + 63: 1, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 1, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 1, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 3, # 'и' + 26: 3, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 3, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 3, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 26: { # 'й' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 2, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 2, # 'з' + 2: 1, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 2, # 'ф' + 25: 1, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 12: { # 'к' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 3, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 10: { # 'л' + 63: 1, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 1, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 1, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 2, # 'п' + 7: 2, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 2, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 2, # 'ь' + 42: 3, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 14: { # 'м' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 3, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 1, # 'т' + 19: 3, # 'у' + 29: 2, # 'ф' + 25: 1, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 6: { # 'н' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 1, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 2, # 'б' + 9: 2, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 2, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 3, # 'ф' + 25: 2, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 2, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 4: { # 'о' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 3, # 'и' + 26: 3, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 3, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 3, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 13: { # 'п' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 3, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 7: { # 'р' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 2, # 'п' + 7: 1, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 2, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 2, # 'ч' + 27: 3, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 8: { # 'с' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 2, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 1, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 2, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 2, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 2, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 5: { # 'т' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 2, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 2, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 19: { # 'у' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 2, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 2, # 'и' + 26: 2, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 2, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 2, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 29: { # 'ф' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 1, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 2, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 25: { # 'х' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 3, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 1, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 22: { # 'ц' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 2, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 0, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 21: { # 'ч' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 3, # 'в' + 20: 1, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 27: { # 'ш' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 2, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 2, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 1, # 'т' + 19: 2, # 'у' + 29: 1, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 24: { # 'щ' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 1, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 17: { # 'ъ' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 2, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 1, # 'и' + 26: 2, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 3, # 'ч' + 27: 2, # 'ш' + 24: 3, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 2, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 52: { # 'ь' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 1, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 1, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 1, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 42: { # 'ю' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 2, # 'б' + 9: 1, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 1, # 'е' + 23: 2, # 'ж' + 15: 2, # 'з' + 2: 1, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 2, # 'н' + 4: 1, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 2, # 'ц' + 21: 3, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 16: { # 'я' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 3, # 'д' + 3: 2, # 'е' + 23: 1, # 'ж' + 15: 2, # 'з' + 2: 1, # 'и' + 26: 2, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 1, # 'о' + 13: 2, # 'п' + 7: 2, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 3, # 'х' + 22: 2, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 2, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 58: { # 'є' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 0, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 62: { # '№' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 0, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +ISO_8859_5_BULGARIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 77, # 'A' + 66: 90, # 'B' + 67: 99, # 'C' + 68: 100, # 'D' + 69: 72, # 'E' + 70: 109, # 'F' + 71: 107, # 'G' + 72: 101, # 'H' + 73: 79, # 'I' + 74: 185, # 'J' + 75: 81, # 'K' + 76: 102, # 'L' + 77: 76, # 'M' + 78: 94, # 'N' + 79: 82, # 'O' + 80: 110, # 'P' + 81: 186, # 'Q' + 82: 108, # 'R' + 83: 91, # 'S' + 84: 74, # 'T' + 85: 119, # 'U' + 86: 84, # 'V' + 87: 96, # 'W' + 88: 111, # 'X' + 89: 187, # 'Y' + 90: 115, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 65, # 'a' + 98: 69, # 'b' + 99: 70, # 'c' + 100: 66, # 'd' + 101: 63, # 'e' + 102: 68, # 'f' + 103: 112, # 'g' + 104: 103, # 'h' + 105: 92, # 'i' + 106: 194, # 'j' + 107: 104, # 'k' + 108: 95, # 'l' + 109: 86, # 'm' + 110: 87, # 'n' + 111: 71, # 'o' + 112: 116, # 'p' + 113: 195, # 'q' + 114: 85, # 'r' + 115: 93, # 's' + 116: 97, # 't' + 117: 113, # 'u' + 118: 196, # 'v' + 119: 197, # 'w' + 120: 198, # 'x' + 121: 199, # 'y' + 122: 200, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 194, # '\x80' + 129: 195, # '\x81' + 130: 196, # '\x82' + 131: 197, # '\x83' + 132: 198, # '\x84' + 133: 199, # '\x85' + 134: 200, # '\x86' + 135: 201, # '\x87' + 136: 202, # '\x88' + 137: 203, # '\x89' + 138: 204, # '\x8a' + 139: 205, # '\x8b' + 140: 206, # '\x8c' + 141: 207, # '\x8d' + 142: 208, # '\x8e' + 143: 209, # '\x8f' + 144: 210, # '\x90' + 145: 211, # '\x91' + 146: 212, # '\x92' + 147: 213, # '\x93' + 148: 214, # '\x94' + 149: 215, # '\x95' + 150: 216, # '\x96' + 151: 217, # '\x97' + 152: 218, # '\x98' + 153: 219, # '\x99' + 154: 220, # '\x9a' + 155: 221, # '\x9b' + 156: 222, # '\x9c' + 157: 223, # '\x9d' + 158: 224, # '\x9e' + 159: 225, # '\x9f' + 160: 81, # '\xa0' + 161: 226, # 'Ё' + 162: 227, # 'Ђ' + 163: 228, # 'Ѓ' + 164: 229, # 'Є' + 165: 230, # 'Ѕ' + 166: 105, # 'І' + 167: 231, # 'Ї' + 168: 232, # 'Ј' + 169: 233, # 'Љ' + 170: 234, # 'Њ' + 171: 235, # 'Ћ' + 172: 236, # 'Ќ' + 173: 45, # '\xad' + 174: 237, # 'Ў' + 175: 238, # 'Џ' + 176: 31, # 'А' + 177: 32, # 'Б' + 178: 35, # 'В' + 179: 43, # 'Г' + 180: 37, # 'Д' + 181: 44, # 'Е' + 182: 55, # 'Ж' + 183: 47, # 'З' + 184: 40, # 'И' + 185: 59, # 'Й' + 186: 33, # 'К' + 187: 46, # 'Л' + 188: 38, # 'М' + 189: 36, # 'Н' + 190: 41, # 'О' + 191: 30, # 'П' + 192: 39, # 'Р' + 193: 28, # 'С' + 194: 34, # 'Т' + 195: 51, # 'У' + 196: 48, # 'Ф' + 197: 49, # 'Х' + 198: 53, # 'Ц' + 199: 50, # 'Ч' + 200: 54, # 'Ш' + 201: 57, # 'Щ' + 202: 61, # 'Ъ' + 203: 239, # 'Ы' + 204: 67, # 'Ь' + 205: 240, # 'Э' + 206: 60, # 'Ю' + 207: 56, # 'Я' + 208: 1, # 'а' + 209: 18, # 'б' + 210: 9, # 'в' + 211: 20, # 'г' + 212: 11, # 'д' + 213: 3, # 'е' + 214: 23, # 'ж' + 215: 15, # 'з' + 216: 2, # 'и' + 217: 26, # 'й' + 218: 12, # 'к' + 219: 10, # 'л' + 220: 14, # 'м' + 221: 6, # 'н' + 222: 4, # 'о' + 223: 13, # 'п' + 224: 7, # 'р' + 225: 8, # 'с' + 226: 5, # 'т' + 227: 19, # 'у' + 228: 29, # 'ф' + 229: 25, # 'х' + 230: 22, # 'ц' + 231: 21, # 'ч' + 232: 27, # 'ш' + 233: 24, # 'щ' + 234: 17, # 'ъ' + 235: 75, # 'ы' + 236: 52, # 'ь' + 237: 241, # 'э' + 238: 42, # 'ю' + 239: 16, # 'я' + 240: 62, # '№' + 241: 242, # 'ё' + 242: 243, # 'ђ' + 243: 244, # 'ѓ' + 244: 58, # 'є' + 245: 245, # 'ѕ' + 246: 98, # 'і' + 247: 246, # 'ї' + 248: 247, # 'ј' + 249: 248, # 'љ' + 250: 249, # 'њ' + 251: 250, # 'ћ' + 252: 251, # 'ќ' + 253: 91, # '§' + 254: 252, # 'ў' + 255: 253, # 'џ' +} + +ISO_8859_5_BULGARIAN_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-5', + language='Bulgarian', + char_to_order_map=ISO_8859_5_BULGARIAN_CHAR_TO_ORDER, + language_model=BULGARIAN_LANG_MODEL, + typical_positive_ratio=0.969392, + keep_ascii_letters=False, + alphabet='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя') + +WINDOWS_1251_BULGARIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 77, # 'A' + 66: 90, # 'B' + 67: 99, # 'C' + 68: 100, # 'D' + 69: 72, # 'E' + 70: 109, # 'F' + 71: 107, # 'G' + 72: 101, # 'H' + 73: 79, # 'I' + 74: 185, # 'J' + 75: 81, # 'K' + 76: 102, # 'L' + 77: 76, # 'M' + 78: 94, # 'N' + 79: 82, # 'O' + 80: 110, # 'P' + 81: 186, # 'Q' + 82: 108, # 'R' + 83: 91, # 'S' + 84: 74, # 'T' + 85: 119, # 'U' + 86: 84, # 'V' + 87: 96, # 'W' + 88: 111, # 'X' + 89: 187, # 'Y' + 90: 115, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 65, # 'a' + 98: 69, # 'b' + 99: 70, # 'c' + 100: 66, # 'd' + 101: 63, # 'e' + 102: 68, # 'f' + 103: 112, # 'g' + 104: 103, # 'h' + 105: 92, # 'i' + 106: 194, # 'j' + 107: 104, # 'k' + 108: 95, # 'l' + 109: 86, # 'm' + 110: 87, # 'n' + 111: 71, # 'o' + 112: 116, # 'p' + 113: 195, # 'q' + 114: 85, # 'r' + 115: 93, # 's' + 116: 97, # 't' + 117: 113, # 'u' + 118: 196, # 'v' + 119: 197, # 'w' + 120: 198, # 'x' + 121: 199, # 'y' + 122: 200, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 206, # 'Ђ' + 129: 207, # 'Ѓ' + 130: 208, # '‚' + 131: 209, # 'ѓ' + 132: 210, # '„' + 133: 211, # '…' + 134: 212, # '†' + 135: 213, # '‡' + 136: 120, # '€' + 137: 214, # '‰' + 138: 215, # 'Љ' + 139: 216, # '‹' + 140: 217, # 'Њ' + 141: 218, # 'Ќ' + 142: 219, # 'Ћ' + 143: 220, # 'Џ' + 144: 221, # 'ђ' + 145: 78, # '‘' + 146: 64, # '’' + 147: 83, # '“' + 148: 121, # '”' + 149: 98, # '•' + 150: 117, # '–' + 151: 105, # '—' + 152: 222, # None + 153: 223, # '™' + 154: 224, # 'љ' + 155: 225, # '›' + 156: 226, # 'њ' + 157: 227, # 'ќ' + 158: 228, # 'ћ' + 159: 229, # 'џ' + 160: 88, # '\xa0' + 161: 230, # 'Ў' + 162: 231, # 'ў' + 163: 232, # 'Ј' + 164: 233, # '¤' + 165: 122, # 'Ґ' + 166: 89, # '¦' + 167: 106, # '§' + 168: 234, # 'Ё' + 169: 235, # '©' + 170: 236, # 'Є' + 171: 237, # '«' + 172: 238, # '¬' + 173: 45, # '\xad' + 174: 239, # '®' + 175: 240, # 'Ї' + 176: 73, # '°' + 177: 80, # '±' + 178: 118, # 'І' + 179: 114, # 'і' + 180: 241, # 'ґ' + 181: 242, # 'µ' + 182: 243, # '¶' + 183: 244, # '·' + 184: 245, # 'ё' + 185: 62, # '№' + 186: 58, # 'є' + 187: 246, # '»' + 188: 247, # 'ј' + 189: 248, # 'Ѕ' + 190: 249, # 'ѕ' + 191: 250, # 'ї' + 192: 31, # 'А' + 193: 32, # 'Б' + 194: 35, # 'В' + 195: 43, # 'Г' + 196: 37, # 'Д' + 197: 44, # 'Е' + 198: 55, # 'Ж' + 199: 47, # 'З' + 200: 40, # 'И' + 201: 59, # 'Й' + 202: 33, # 'К' + 203: 46, # 'Л' + 204: 38, # 'М' + 205: 36, # 'Н' + 206: 41, # 'О' + 207: 30, # 'П' + 208: 39, # 'Р' + 209: 28, # 'С' + 210: 34, # 'Т' + 211: 51, # 'У' + 212: 48, # 'Ф' + 213: 49, # 'Х' + 214: 53, # 'Ц' + 215: 50, # 'Ч' + 216: 54, # 'Ш' + 217: 57, # 'Щ' + 218: 61, # 'Ъ' + 219: 251, # 'Ы' + 220: 67, # 'Ь' + 221: 252, # 'Э' + 222: 60, # 'Ю' + 223: 56, # 'Я' + 224: 1, # 'а' + 225: 18, # 'б' + 226: 9, # 'в' + 227: 20, # 'г' + 228: 11, # 'д' + 229: 3, # 'е' + 230: 23, # 'ж' + 231: 15, # 'з' + 232: 2, # 'и' + 233: 26, # 'й' + 234: 12, # 'к' + 235: 10, # 'л' + 236: 14, # 'м' + 237: 6, # 'н' + 238: 4, # 'о' + 239: 13, # 'п' + 240: 7, # 'р' + 241: 8, # 'с' + 242: 5, # 'т' + 243: 19, # 'у' + 244: 29, # 'ф' + 245: 25, # 'х' + 246: 22, # 'ц' + 247: 21, # 'ч' + 248: 27, # 'ш' + 249: 24, # 'щ' + 250: 17, # 'ъ' + 251: 75, # 'ы' + 252: 52, # 'ь' + 253: 253, # 'э' + 254: 42, # 'ю' + 255: 16, # 'я' +} + +WINDOWS_1251_BULGARIAN_MODEL = SingleByteCharSetModel(charset_name='windows-1251', + language='Bulgarian', + char_to_order_map=WINDOWS_1251_BULGARIAN_CHAR_TO_ORDER, + language_model=BULGARIAN_LANG_MODEL, + typical_positive_ratio=0.969392, + keep_ascii_letters=False, + alphabet='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя') + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langgreekmodel.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langgreekmodel.py new file mode 100644 index 0000000..e120745 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langgreekmodel.py @@ -0,0 +1,4397 @@ +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +GREEK_LANG_MODEL = { + 60: { # 'e' + 60: 2, # 'e' + 55: 1, # 'o' + 58: 2, # 't' + 36: 1, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 55: { # 'o' + 60: 0, # 'e' + 55: 2, # 'o' + 58: 2, # 't' + 36: 1, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 1, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 1, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 58: { # 't' + 60: 2, # 'e' + 55: 1, # 'o' + 58: 1, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 1, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 36: { # '·' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 61: { # 'Ά' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 1, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 1, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 46: { # 'Έ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 2, # 'β' + 20: 2, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 2, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 1, # 'σ' + 2: 2, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 54: { # 'Ό' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 2, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 31: { # 'Α' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 2, # 'Β' + 43: 2, # 'Γ' + 41: 1, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 2, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 2, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 1, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 2, # 'Υ' + 56: 2, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 2, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 1, # 'θ' + 5: 0, # 'ι' + 11: 2, # 'κ' + 16: 3, # 'λ' + 10: 2, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 2, # 'ς' + 7: 2, # 'σ' + 2: 0, # 'τ' + 12: 3, # 'υ' + 28: 2, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 51: { # 'Β' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 1, # 'Η' + 52: 0, # 'Θ' + 47: 1, # 'Ι' + 44: 0, # 'Κ' + 53: 1, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 2, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 43: { # 'Γ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 1, # 'Α' + 51: 0, # 'Β' + 43: 2, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 1, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 1, # 'Κ' + 53: 1, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 1, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 41: { # 'Δ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 2, # 'ή' + 15: 2, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 1, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 34: { # 'Ε' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 2, # 'Γ' + 41: 2, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 2, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 1, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 2, # 'Χ' + 57: 2, # 'Ω' + 17: 3, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 3, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 1, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 1, # 'θ' + 5: 2, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 2, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 2, # 'τ' + 12: 2, # 'υ' + 28: 2, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 1, # 'ύ' + 27: 0, # 'ώ' + }, + 40: { # 'Η' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 1, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 2, # 'Θ' + 47: 0, # 'Ι' + 44: 2, # 'Κ' + 53: 0, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 1, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 1, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 1, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 52: { # 'Θ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 1, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 1, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 47: { # 'Ι' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 1, # 'Β' + 43: 1, # 'Γ' + 41: 2, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 2, # 'Κ' + 53: 2, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 0, # 'Υ' + 56: 2, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 1, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 1, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 1, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 44: { # 'Κ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 1, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 1, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 1, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 1, # 'Ω' + 17: 3, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 53: { # 'Λ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 2, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 2, # 'Σ' + 33: 0, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 1, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 38: { # 'Μ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 2, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 2, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 2, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 2, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 49: { # 'Ν' + 60: 2, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 2, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 1, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 1, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 59: { # 'Ξ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 1, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 1, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 39: { # 'Ο' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 1, # 'Β' + 43: 2, # 'Γ' + 41: 2, # 'Δ' + 34: 2, # 'Ε' + 40: 1, # 'Η' + 52: 2, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 2, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 2, # 'Υ' + 56: 2, # 'Φ' + 50: 2, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 2, # 'κ' + 16: 2, # 'λ' + 10: 2, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 2, # 'τ' + 12: 2, # 'υ' + 28: 1, # 'φ' + 23: 1, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 35: { # 'Π' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 2, # 'Λ' + 38: 1, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 1, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 2, # 'Ω' + 17: 2, # 'ά' + 18: 1, # 'έ' + 22: 1, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 3, # 'ώ' + }, + 48: { # 'Ρ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 1, # 'Γ' + 41: 1, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 1, # 'Τ' + 45: 1, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 1, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 1, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 37: { # 'Σ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 1, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 0, # 'Λ' + 38: 2, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 2, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 2, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 2, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 2, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 2, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 33: { # 'Τ' + 60: 0, # 'e' + 55: 1, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 1, # 'Τ' + 45: 1, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 2, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 3, # 'ώ' + }, + 45: { # 'Υ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 2, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 2, # 'Η' + 52: 2, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 1, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 1, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 56: { # 'Φ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 1, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 1, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 2, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 1, # 'ύ' + 27: 1, # 'ώ' + }, + 50: { # 'Χ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 1, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 1, # 'Ν' + 59: 0, # 'Ξ' + 39: 1, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 1, # 'Ω' + 17: 2, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 2, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 57: { # 'Ω' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 1, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 1, # 'Λ' + 38: 0, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 2, # 'ς' + 7: 2, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 1, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 17: { # 'ά' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 3, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 2, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 3, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 18: { # 'έ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 3, # 'ε' + 32: 2, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 3, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 22: { # 'ή' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 1, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 15: { # 'ί' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 3, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 1, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 3, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 1: { # 'α' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 3, # 'ί' + 1: 0, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 2, # 'ε' + 32: 3, # 'ζ' + 13: 1, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 29: { # 'β' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 2, # 'γ' + 21: 2, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 3, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 20: { # 'γ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 3, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 3, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 2, # 'ύ' + 27: 3, # 'ώ' + }, + 21: { # 'δ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 3: { # 'ε' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 3, # 'ί' + 1: 2, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 2, # 'ε' + 32: 2, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 3, # 'ω' + 19: 2, # 'ό' + 26: 3, # 'ύ' + 27: 2, # 'ώ' + }, + 32: { # 'ζ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 2, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 1, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 2, # 'ώ' + }, + 13: { # 'η' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 25: { # 'θ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 1, # 'λ' + 10: 3, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 5: { # 'ι' + 60: 0, # 'e' + 55: 1, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 2, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 0, # 'ύ' + 27: 3, # 'ώ' + }, + 11: { # 'κ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 2, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 2, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 2, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 16: { # 'λ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 1, # 'β' + 20: 2, # 'γ' + 21: 1, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 2, # 'θ' + 5: 3, # 'ι' + 11: 2, # 'κ' + 16: 3, # 'λ' + 10: 2, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 2, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 10: { # 'μ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 3, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 3, # 'φ' + 23: 0, # 'χ' + 42: 2, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 6: { # 'ν' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 2, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 1, # 'λ' + 10: 0, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 30: { # 'ξ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 2, # 'ό' + 26: 3, # 'ύ' + 27: 1, # 'ώ' + }, + 4: { # 'ο' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 2, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 2, # 'ω' + 19: 1, # 'ό' + 26: 3, # 'ύ' + 27: 2, # 'ώ' + }, + 9: { # 'π' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 3, # 'λ' + 10: 0, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 2, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 2, # 'ύ' + 27: 3, # 'ώ' + }, + 8: { # 'ρ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 1, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 3, # 'ο' + 9: 2, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 14: { # 'ς' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 7: { # 'σ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 3, # 'β' + 20: 0, # 'γ' + 21: 2, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 2, # 'ώ' + }, + 2: { # 'τ' + 60: 0, # 'e' + 55: 2, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 2, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 2, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 2, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 12: { # 'υ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 2, # 'ε' + 32: 2, # 'ζ' + 13: 2, # 'η' + 25: 3, # 'θ' + 5: 2, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 2, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 2, # 'ώ' + }, + 28: { # 'φ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 2, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 1, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 1, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 23: { # 'χ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 2, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 2, # 'μ' + 6: 3, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 42: { # 'ψ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 1, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 2, # 'τ' + 12: 1, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 24: { # 'ω' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 1, # 'ά' + 18: 0, # 'έ' + 22: 2, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 19: { # 'ό' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 1, # 'ε' + 32: 2, # 'ζ' + 13: 2, # 'η' + 25: 2, # 'θ' + 5: 2, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 1, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 26: { # 'ύ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 2, # 'β' + 20: 2, # 'γ' + 21: 1, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 2, # 'χ' + 42: 2, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 27: { # 'ώ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 1, # 'β' + 20: 0, # 'γ' + 21: 3, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 1, # 'η' + 25: 2, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 1, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 1, # 'φ' + 23: 1, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +WINDOWS_1253_GREEK_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 82, # 'A' + 66: 100, # 'B' + 67: 104, # 'C' + 68: 94, # 'D' + 69: 98, # 'E' + 70: 101, # 'F' + 71: 116, # 'G' + 72: 102, # 'H' + 73: 111, # 'I' + 74: 187, # 'J' + 75: 117, # 'K' + 76: 92, # 'L' + 77: 88, # 'M' + 78: 113, # 'N' + 79: 85, # 'O' + 80: 79, # 'P' + 81: 118, # 'Q' + 82: 105, # 'R' + 83: 83, # 'S' + 84: 67, # 'T' + 85: 114, # 'U' + 86: 119, # 'V' + 87: 95, # 'W' + 88: 99, # 'X' + 89: 109, # 'Y' + 90: 188, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 72, # 'a' + 98: 70, # 'b' + 99: 80, # 'c' + 100: 81, # 'd' + 101: 60, # 'e' + 102: 96, # 'f' + 103: 93, # 'g' + 104: 89, # 'h' + 105: 68, # 'i' + 106: 120, # 'j' + 107: 97, # 'k' + 108: 77, # 'l' + 109: 86, # 'm' + 110: 69, # 'n' + 111: 55, # 'o' + 112: 78, # 'p' + 113: 115, # 'q' + 114: 65, # 'r' + 115: 66, # 's' + 116: 58, # 't' + 117: 76, # 'u' + 118: 106, # 'v' + 119: 103, # 'w' + 120: 87, # 'x' + 121: 107, # 'y' + 122: 112, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 255, # '€' + 129: 255, # None + 130: 255, # '‚' + 131: 255, # 'ƒ' + 132: 255, # '„' + 133: 255, # '…' + 134: 255, # '†' + 135: 255, # '‡' + 136: 255, # None + 137: 255, # '‰' + 138: 255, # None + 139: 255, # '‹' + 140: 255, # None + 141: 255, # None + 142: 255, # None + 143: 255, # None + 144: 255, # None + 145: 255, # '‘' + 146: 255, # '’' + 147: 255, # '“' + 148: 255, # '”' + 149: 255, # '•' + 150: 255, # '–' + 151: 255, # '—' + 152: 255, # None + 153: 255, # '™' + 154: 255, # None + 155: 255, # '›' + 156: 255, # None + 157: 255, # None + 158: 255, # None + 159: 255, # None + 160: 253, # '\xa0' + 161: 233, # '΅' + 162: 61, # 'Ά' + 163: 253, # '£' + 164: 253, # '¤' + 165: 253, # '¥' + 166: 253, # '¦' + 167: 253, # '§' + 168: 253, # '¨' + 169: 253, # '©' + 170: 253, # None + 171: 253, # '«' + 172: 253, # '¬' + 173: 74, # '\xad' + 174: 253, # '®' + 175: 253, # '―' + 176: 253, # '°' + 177: 253, # '±' + 178: 253, # '²' + 179: 253, # '³' + 180: 247, # '΄' + 181: 253, # 'µ' + 182: 253, # '¶' + 183: 36, # '·' + 184: 46, # 'Έ' + 185: 71, # 'Ή' + 186: 73, # 'Ί' + 187: 253, # '»' + 188: 54, # 'Ό' + 189: 253, # '½' + 190: 108, # 'Ύ' + 191: 123, # 'Ώ' + 192: 110, # 'ΐ' + 193: 31, # 'Α' + 194: 51, # 'Β' + 195: 43, # 'Γ' + 196: 41, # 'Δ' + 197: 34, # 'Ε' + 198: 91, # 'Ζ' + 199: 40, # 'Η' + 200: 52, # 'Θ' + 201: 47, # 'Ι' + 202: 44, # 'Κ' + 203: 53, # 'Λ' + 204: 38, # 'Μ' + 205: 49, # 'Ν' + 206: 59, # 'Ξ' + 207: 39, # 'Ο' + 208: 35, # 'Π' + 209: 48, # 'Ρ' + 210: 250, # None + 211: 37, # 'Σ' + 212: 33, # 'Τ' + 213: 45, # 'Υ' + 214: 56, # 'Φ' + 215: 50, # 'Χ' + 216: 84, # 'Ψ' + 217: 57, # 'Ω' + 218: 120, # 'Ϊ' + 219: 121, # 'Ϋ' + 220: 17, # 'ά' + 221: 18, # 'έ' + 222: 22, # 'ή' + 223: 15, # 'ί' + 224: 124, # 'ΰ' + 225: 1, # 'α' + 226: 29, # 'β' + 227: 20, # 'γ' + 228: 21, # 'δ' + 229: 3, # 'ε' + 230: 32, # 'ζ' + 231: 13, # 'η' + 232: 25, # 'θ' + 233: 5, # 'ι' + 234: 11, # 'κ' + 235: 16, # 'λ' + 236: 10, # 'μ' + 237: 6, # 'ν' + 238: 30, # 'ξ' + 239: 4, # 'ο' + 240: 9, # 'π' + 241: 8, # 'ρ' + 242: 14, # 'ς' + 243: 7, # 'σ' + 244: 2, # 'τ' + 245: 12, # 'υ' + 246: 28, # 'φ' + 247: 23, # 'χ' + 248: 42, # 'ψ' + 249: 24, # 'ω' + 250: 64, # 'ϊ' + 251: 75, # 'ϋ' + 252: 19, # 'ό' + 253: 26, # 'ύ' + 254: 27, # 'ώ' + 255: 253, # None +} + +WINDOWS_1253_GREEK_MODEL = SingleByteCharSetModel(charset_name='windows-1253', + language='Greek', + char_to_order_map=WINDOWS_1253_GREEK_CHAR_TO_ORDER, + language_model=GREEK_LANG_MODEL, + typical_positive_ratio=0.982851, + keep_ascii_letters=False, + alphabet='ΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩάέήίαβγδεζηθικλμνξοπρςστυφχψωόύώ') + +ISO_8859_7_GREEK_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 82, # 'A' + 66: 100, # 'B' + 67: 104, # 'C' + 68: 94, # 'D' + 69: 98, # 'E' + 70: 101, # 'F' + 71: 116, # 'G' + 72: 102, # 'H' + 73: 111, # 'I' + 74: 187, # 'J' + 75: 117, # 'K' + 76: 92, # 'L' + 77: 88, # 'M' + 78: 113, # 'N' + 79: 85, # 'O' + 80: 79, # 'P' + 81: 118, # 'Q' + 82: 105, # 'R' + 83: 83, # 'S' + 84: 67, # 'T' + 85: 114, # 'U' + 86: 119, # 'V' + 87: 95, # 'W' + 88: 99, # 'X' + 89: 109, # 'Y' + 90: 188, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 72, # 'a' + 98: 70, # 'b' + 99: 80, # 'c' + 100: 81, # 'd' + 101: 60, # 'e' + 102: 96, # 'f' + 103: 93, # 'g' + 104: 89, # 'h' + 105: 68, # 'i' + 106: 120, # 'j' + 107: 97, # 'k' + 108: 77, # 'l' + 109: 86, # 'm' + 110: 69, # 'n' + 111: 55, # 'o' + 112: 78, # 'p' + 113: 115, # 'q' + 114: 65, # 'r' + 115: 66, # 's' + 116: 58, # 't' + 117: 76, # 'u' + 118: 106, # 'v' + 119: 103, # 'w' + 120: 87, # 'x' + 121: 107, # 'y' + 122: 112, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 255, # '\x80' + 129: 255, # '\x81' + 130: 255, # '\x82' + 131: 255, # '\x83' + 132: 255, # '\x84' + 133: 255, # '\x85' + 134: 255, # '\x86' + 135: 255, # '\x87' + 136: 255, # '\x88' + 137: 255, # '\x89' + 138: 255, # '\x8a' + 139: 255, # '\x8b' + 140: 255, # '\x8c' + 141: 255, # '\x8d' + 142: 255, # '\x8e' + 143: 255, # '\x8f' + 144: 255, # '\x90' + 145: 255, # '\x91' + 146: 255, # '\x92' + 147: 255, # '\x93' + 148: 255, # '\x94' + 149: 255, # '\x95' + 150: 255, # '\x96' + 151: 255, # '\x97' + 152: 255, # '\x98' + 153: 255, # '\x99' + 154: 255, # '\x9a' + 155: 255, # '\x9b' + 156: 255, # '\x9c' + 157: 255, # '\x9d' + 158: 255, # '\x9e' + 159: 255, # '\x9f' + 160: 253, # '\xa0' + 161: 233, # '‘' + 162: 90, # '’' + 163: 253, # '£' + 164: 253, # '€' + 165: 253, # '₯' + 166: 253, # '¦' + 167: 253, # '§' + 168: 253, # '¨' + 169: 253, # '©' + 170: 253, # 'ͺ' + 171: 253, # '«' + 172: 253, # '¬' + 173: 74, # '\xad' + 174: 253, # None + 175: 253, # '―' + 176: 253, # '°' + 177: 253, # '±' + 178: 253, # '²' + 179: 253, # '³' + 180: 247, # '΄' + 181: 248, # '΅' + 182: 61, # 'Ά' + 183: 36, # '·' + 184: 46, # 'Έ' + 185: 71, # 'Ή' + 186: 73, # 'Ί' + 187: 253, # '»' + 188: 54, # 'Ό' + 189: 253, # '½' + 190: 108, # 'Ύ' + 191: 123, # 'Ώ' + 192: 110, # 'ΐ' + 193: 31, # 'Α' + 194: 51, # 'Β' + 195: 43, # 'Γ' + 196: 41, # 'Δ' + 197: 34, # 'Ε' + 198: 91, # 'Ζ' + 199: 40, # 'Η' + 200: 52, # 'Θ' + 201: 47, # 'Ι' + 202: 44, # 'Κ' + 203: 53, # 'Λ' + 204: 38, # 'Μ' + 205: 49, # 'Ν' + 206: 59, # 'Ξ' + 207: 39, # 'Ο' + 208: 35, # 'Π' + 209: 48, # 'Ρ' + 210: 250, # None + 211: 37, # 'Σ' + 212: 33, # 'Τ' + 213: 45, # 'Υ' + 214: 56, # 'Φ' + 215: 50, # 'Χ' + 216: 84, # 'Ψ' + 217: 57, # 'Ω' + 218: 120, # 'Ϊ' + 219: 121, # 'Ϋ' + 220: 17, # 'ά' + 221: 18, # 'έ' + 222: 22, # 'ή' + 223: 15, # 'ί' + 224: 124, # 'ΰ' + 225: 1, # 'α' + 226: 29, # 'β' + 227: 20, # 'γ' + 228: 21, # 'δ' + 229: 3, # 'ε' + 230: 32, # 'ζ' + 231: 13, # 'η' + 232: 25, # 'θ' + 233: 5, # 'ι' + 234: 11, # 'κ' + 235: 16, # 'λ' + 236: 10, # 'μ' + 237: 6, # 'ν' + 238: 30, # 'ξ' + 239: 4, # 'ο' + 240: 9, # 'π' + 241: 8, # 'ρ' + 242: 14, # 'ς' + 243: 7, # 'σ' + 244: 2, # 'τ' + 245: 12, # 'υ' + 246: 28, # 'φ' + 247: 23, # 'χ' + 248: 42, # 'ψ' + 249: 24, # 'ω' + 250: 64, # 'ϊ' + 251: 75, # 'ϋ' + 252: 19, # 'ό' + 253: 26, # 'ύ' + 254: 27, # 'ώ' + 255: 253, # None +} + +ISO_8859_7_GREEK_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-7', + language='Greek', + char_to_order_map=ISO_8859_7_GREEK_CHAR_TO_ORDER, + language_model=GREEK_LANG_MODEL, + typical_positive_ratio=0.982851, + keep_ascii_letters=False, + alphabet='ΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩάέήίαβγδεζηθικλμνξοπρςστυφχψωόύώ') + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhebrewmodel.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhebrewmodel.py new file mode 100644 index 0000000..2a19e61 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhebrewmodel.py @@ -0,0 +1,4382 @@ +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +HEBREW_LANG_MODEL = { + 50: { # 'a' + 50: 0, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 2, # 'l' + 54: 2, # 'n' + 49: 0, # 'o' + 51: 2, # 'r' + 43: 1, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 1, # 'ק' + 7: 0, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 60: { # 'c' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 0, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 0, # 'n' + 49: 1, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 61: { # 'd' + 50: 1, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 2, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 0, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 1, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 42: { # 'e' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 2, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 2, # 'l' + 54: 2, # 'n' + 49: 1, # 'o' + 51: 2, # 'r' + 43: 2, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 1, # '–' + 52: 2, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 53: { # 'i' + 50: 1, # 'a' + 60: 2, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 0, # 'i' + 56: 1, # 'l' + 54: 2, # 'n' + 49: 2, # 'o' + 51: 1, # 'r' + 43: 2, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 56: { # 'l' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 2, # 'e' + 53: 2, # 'i' + 56: 2, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 0, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 54: { # 'n' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 0, # 'r' + 43: 1, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 2, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 49: { # 'o' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 2, # 'n' + 49: 1, # 'o' + 51: 2, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 51: { # 'r' + 50: 2, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 2, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 2, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 2, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 43: { # 's' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 0, # 'd' + 42: 2, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 2, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 44: { # 't' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 0, # 'd' + 42: 2, # 'e' + 53: 2, # 'i' + 56: 1, # 'l' + 54: 0, # 'n' + 49: 1, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 2, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 63: { # 'u' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 0, # 'o' + 51: 1, # 'r' + 43: 2, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 34: { # '\xa0' + 50: 1, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 0, # 'e' + 53: 1, # 'i' + 56: 0, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 0, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 2, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 2, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 2, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 55: { # '´' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 1, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 2, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 1, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 48: { # '¼' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 39: { # '½' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 57: { # '¾' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 30: { # 'ְ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 1, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 2, # 'ו' + 24: 2, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 2, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 1, # 'ם' + 6: 2, # 'מ' + 23: 0, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 2, # 'ע' + 26: 0, # 'ף' + 18: 2, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 59: { # 'ֱ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 1, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 0, # 'ם' + 6: 2, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 41: { # 'ֲ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 1, # 'י' + 25: 1, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 0, # 'ם' + 6: 2, # 'מ' + 23: 0, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 1, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 33: { # 'ִ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 1, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 0, # 'ַ' + 29: 1, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 1, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 2, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 37: { # 'ֵ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 1, # 'ַ' + 29: 1, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 2, # 'ח' + 22: 1, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 1, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 1, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 36: { # 'ֶ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 1, # 'ַ' + 29: 1, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 2, # 'ח' + 22: 1, # 'ט' + 1: 2, # 'י' + 25: 2, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 1, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 2, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 31: { # 'ַ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 0, # 'ַ' + 29: 2, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 1, # 'ו' + 24: 2, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 2, # 'ע' + 26: 2, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 29: { # 'ָ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 1, # 'ַ' + 29: 2, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 1, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 3, # 'ה' + 2: 2, # 'ו' + 24: 2, # 'ז' + 14: 2, # 'ח' + 22: 1, # 'ט' + 1: 2, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 35: { # 'ֹ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 1, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 1, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 62: { # 'ֻ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 1, # 'ם' + 6: 1, # 'מ' + 23: 1, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 28: { # 'ּ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 3, # 'ְ' + 59: 0, # 'ֱ' + 41: 1, # 'ֲ' + 33: 3, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 3, # 'ַ' + 29: 3, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 2, # 'ׁ' + 45: 1, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 1, # 'ה' + 2: 2, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 2, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 1, # 'ם' + 6: 2, # 'מ' + 23: 1, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 1, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 38: { # 'ׁ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 2, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 45: { # 'ׂ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 2, # 'ֶ' + 31: 1, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 1, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 2, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 1, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 0, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 9: { # 'א' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 2, # 'ֱ' + 41: 2, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 2, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 8: { # 'ב' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 3, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 1, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 20: { # 'ג' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 2, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 1, # 'ִ' + 37: 1, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 0, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 1, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 16: { # 'ד' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 1, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 3: { # 'ה' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 1, # 'ֱ' + 41: 2, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 3, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 0, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 2: { # 'ו' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 3, # 'ֹ' + 62: 0, # 'ֻ' + 28: 3, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 3, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 24: { # 'ז' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 1, # 'ֲ' + 33: 1, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 2, # 'ח' + 22: 1, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 1, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 14: { # 'ח' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 1, # 'ֱ' + 41: 2, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 1, # 'ע' + 26: 2, # 'ף' + 18: 2, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 22: { # 'ט' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 1, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 1, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 1, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 3, # 'ר' + 10: 2, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 1: { # 'י' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 3, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 25: { # 'ך' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 2, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 1, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 15: { # 'כ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 3, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 2, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 4: { # 'ל' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 3, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 11: { # 'ם' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 1, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 1, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 6: { # 'מ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 0, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 23: { # 'ן' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 1, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 12: { # 'נ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 19: { # 'ס' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 1, # 'ָ' + 35: 1, # 'ֹ' + 62: 2, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 1, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 1, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 13: { # 'ע' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 1, # 'ֱ' + 41: 2, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 1, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 2, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 26: { # 'ף' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 1, # 'ס' + 13: 0, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 18: { # 'פ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 2, # 'ֶ' + 31: 1, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 2, # 'ב' + 20: 3, # 'ג' + 16: 2, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 2, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 27: { # 'ץ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 1, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 0, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 21: { # 'צ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 1, # 'ז' + 14: 3, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 1, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 1, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 0, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 17: { # 'ק' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 1, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 2, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 7: { # 'ר' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 2, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 1, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 3, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 10: { # 'ש' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 1, # 'ִ' + 37: 1, # 'ֵ' + 36: 1, # 'ֶ' + 31: 1, # 'ַ' + 29: 1, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 3, # 'ׁ' + 45: 2, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 5: { # 'ת' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 1, # '¼' + 39: 1, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 2, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 32: { # '–' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 1, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 52: { # '’' + 50: 1, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 1, # 'r' + 43: 2, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 47: { # '“' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 46: { # '”' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 58: { # '†' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 2, # '†' + 40: 0, # '…' + }, + 40: { # '…' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 0, # 'l' + 54: 1, # 'n' + 49: 0, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +WINDOWS_1255_HEBREW_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 69, # 'A' + 66: 91, # 'B' + 67: 79, # 'C' + 68: 80, # 'D' + 69: 92, # 'E' + 70: 89, # 'F' + 71: 97, # 'G' + 72: 90, # 'H' + 73: 68, # 'I' + 74: 111, # 'J' + 75: 112, # 'K' + 76: 82, # 'L' + 77: 73, # 'M' + 78: 95, # 'N' + 79: 85, # 'O' + 80: 78, # 'P' + 81: 121, # 'Q' + 82: 86, # 'R' + 83: 71, # 'S' + 84: 67, # 'T' + 85: 102, # 'U' + 86: 107, # 'V' + 87: 84, # 'W' + 88: 114, # 'X' + 89: 103, # 'Y' + 90: 115, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 50, # 'a' + 98: 74, # 'b' + 99: 60, # 'c' + 100: 61, # 'd' + 101: 42, # 'e' + 102: 76, # 'f' + 103: 70, # 'g' + 104: 64, # 'h' + 105: 53, # 'i' + 106: 105, # 'j' + 107: 93, # 'k' + 108: 56, # 'l' + 109: 65, # 'm' + 110: 54, # 'n' + 111: 49, # 'o' + 112: 66, # 'p' + 113: 110, # 'q' + 114: 51, # 'r' + 115: 43, # 's' + 116: 44, # 't' + 117: 63, # 'u' + 118: 81, # 'v' + 119: 77, # 'w' + 120: 98, # 'x' + 121: 75, # 'y' + 122: 108, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 124, # '€' + 129: 202, # None + 130: 203, # '‚' + 131: 204, # 'ƒ' + 132: 205, # '„' + 133: 40, # '…' + 134: 58, # '†' + 135: 206, # '‡' + 136: 207, # 'ˆ' + 137: 208, # '‰' + 138: 209, # None + 139: 210, # '‹' + 140: 211, # None + 141: 212, # None + 142: 213, # None + 143: 214, # None + 144: 215, # None + 145: 83, # '‘' + 146: 52, # '’' + 147: 47, # '“' + 148: 46, # '”' + 149: 72, # '•' + 150: 32, # '–' + 151: 94, # '—' + 152: 216, # '˜' + 153: 113, # '™' + 154: 217, # None + 155: 109, # '›' + 156: 218, # None + 157: 219, # None + 158: 220, # None + 159: 221, # None + 160: 34, # '\xa0' + 161: 116, # '¡' + 162: 222, # '¢' + 163: 118, # '£' + 164: 100, # '₪' + 165: 223, # '¥' + 166: 224, # '¦' + 167: 117, # '§' + 168: 119, # '¨' + 169: 104, # '©' + 170: 125, # '×' + 171: 225, # '«' + 172: 226, # '¬' + 173: 87, # '\xad' + 174: 99, # '®' + 175: 227, # '¯' + 176: 106, # '°' + 177: 122, # '±' + 178: 123, # '²' + 179: 228, # '³' + 180: 55, # '´' + 181: 229, # 'µ' + 182: 230, # '¶' + 183: 101, # '·' + 184: 231, # '¸' + 185: 232, # '¹' + 186: 120, # '÷' + 187: 233, # '»' + 188: 48, # '¼' + 189: 39, # '½' + 190: 57, # '¾' + 191: 234, # '¿' + 192: 30, # 'ְ' + 193: 59, # 'ֱ' + 194: 41, # 'ֲ' + 195: 88, # 'ֳ' + 196: 33, # 'ִ' + 197: 37, # 'ֵ' + 198: 36, # 'ֶ' + 199: 31, # 'ַ' + 200: 29, # 'ָ' + 201: 35, # 'ֹ' + 202: 235, # None + 203: 62, # 'ֻ' + 204: 28, # 'ּ' + 205: 236, # 'ֽ' + 206: 126, # '־' + 207: 237, # 'ֿ' + 208: 238, # '׀' + 209: 38, # 'ׁ' + 210: 45, # 'ׂ' + 211: 239, # '׃' + 212: 240, # 'װ' + 213: 241, # 'ױ' + 214: 242, # 'ײ' + 215: 243, # '׳' + 216: 127, # '״' + 217: 244, # None + 218: 245, # None + 219: 246, # None + 220: 247, # None + 221: 248, # None + 222: 249, # None + 223: 250, # None + 224: 9, # 'א' + 225: 8, # 'ב' + 226: 20, # 'ג' + 227: 16, # 'ד' + 228: 3, # 'ה' + 229: 2, # 'ו' + 230: 24, # 'ז' + 231: 14, # 'ח' + 232: 22, # 'ט' + 233: 1, # 'י' + 234: 25, # 'ך' + 235: 15, # 'כ' + 236: 4, # 'ל' + 237: 11, # 'ם' + 238: 6, # 'מ' + 239: 23, # 'ן' + 240: 12, # 'נ' + 241: 19, # 'ס' + 242: 13, # 'ע' + 243: 26, # 'ף' + 244: 18, # 'פ' + 245: 27, # 'ץ' + 246: 21, # 'צ' + 247: 17, # 'ק' + 248: 7, # 'ר' + 249: 10, # 'ש' + 250: 5, # 'ת' + 251: 251, # None + 252: 252, # None + 253: 128, # '\u200e' + 254: 96, # '\u200f' + 255: 253, # None +} + +WINDOWS_1255_HEBREW_MODEL = SingleByteCharSetModel(charset_name='windows-1255', + language='Hebrew', + char_to_order_map=WINDOWS_1255_HEBREW_CHAR_TO_ORDER, + language_model=HEBREW_LANG_MODEL, + typical_positive_ratio=0.984004, + keep_ascii_letters=False, + alphabet='אבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ') + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhungarianmodel.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhungarianmodel.py new file mode 100644 index 0000000..8260cb9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhungarianmodel.py @@ -0,0 +1,4649 @@ +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +HUNGARIAN_LANG_MODEL = { + 28: { # 'A' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 2, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 2, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 2, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 2, # 'N' + 47: 1, # 'O' + 46: 2, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 2, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 2, # 'p' + 10: 2, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 1, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 1, # 'Á' + 44: 0, # 'É' + 61: 1, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 40: { # 'B' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 0, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 1, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 3, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 54: { # 'C' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 0, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 0, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 1, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 3, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 45: { # 'D' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 0, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 0, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 1, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 32: { # 'E' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 2, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 2, # 'K' + 41: 2, # 'L' + 34: 2, # 'M' + 35: 2, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 1, # 't' + 21: 2, # 'u' + 19: 1, # 'v' + 62: 1, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 0, # 'Ú' + 63: 1, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 50: { # 'F' + 28: 1, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 0, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 0, # 'V' + 55: 1, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 1, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 1, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 0, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 49: { # 'G' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 2, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 38: { # 'H' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 0, # 'D' + 32: 1, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 1, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 1, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 1, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 0, # 'V' + 55: 1, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 1, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 0, # 'n' + 8: 3, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 2, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 2, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 39: { # 'I' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 2, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 2, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 2, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 0, # 'e' + 27: 1, # 'f' + 12: 2, # 'g' + 20: 1, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 53: { # 'J' + 28: 2, # 'A' + 40: 0, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 1, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 0, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 36: { # 'K' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 1, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 3, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 2, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 41: { # 'L' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 1, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 34: { # 'M' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 3, # 'a' + 18: 0, # 'b' + 26: 1, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 3, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 1, # 'ű' + }, + 35: { # 'N' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 2, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 2, # 'Y' + 52: 1, # 'Z' + 2: 3, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 47: { # 'O' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 2, # 'K' + 41: 2, # 'L' + 34: 2, # 'M' + 35: 2, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 1, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 1, # 's' + 3: 2, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 1, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 46: { # 'P' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 0, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 1, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 1, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 0, # 'Ú' + 63: 1, # 'Ü' + 14: 3, # 'á' + 15: 2, # 'é' + 30: 0, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 43: { # 'R' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 2, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 2, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 33: { # 'S' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 3, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 1, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 1, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 1, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 37: { # 'T' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 1, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 2, # 'Á' + 44: 2, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 57: { # 'U' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 0, # 'f' + 12: 2, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 1, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 48: { # 'V' + 28: 2, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 0, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 2, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 0, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 55: { # 'Y' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 2, # 'Z' + 2: 1, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 1, # 'o' + 23: 1, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 52: { # 'Z' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 0, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 1, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 1, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 1, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 2, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 2: { # 'a' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 2, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 2, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 2, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 18: { # 'b' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 2, # 's' + 3: 1, # 't' + 21: 3, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 3, # 'ó' + 24: 2, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 26: { # 'c' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 1, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 1, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 1, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 2, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 2, # 't' + 21: 2, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 2, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 17: { # 'd' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 2, # 'k' + 6: 1, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 1: { # 'e' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 2, # 'e' + 27: 3, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 2, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 2, # 'u' + 19: 3, # 'v' + 62: 2, # 'x' + 16: 2, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 27: { # 'f' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 0, # 'p' + 10: 3, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 2, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 3, # 'ö' + 31: 1, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 12: { # 'g' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 2, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 2, # 'k' + 6: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 3, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 3, # 'ó' + 24: 2, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 20: { # 'h' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 2, # 's' + 3: 1, # 't' + 21: 3, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 2, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 9: { # 'i' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 3, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 2, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 3, # 'ó' + 24: 1, # 'ö' + 31: 2, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 1, # 'ű' + }, + 22: { # 'j' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 1, # 'i' + 22: 2, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 1, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 3, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 7: { # 'k' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 2, # 'ó' + 24: 3, # 'ö' + 31: 1, # 'ú' + 29: 3, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 6: { # 'l' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 1, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 3, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 3, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 3, # 'ő' + 56: 1, # 'ű' + }, + 13: { # 'm' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 1, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 8: 3, # 'o' + 23: 3, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 3, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 2, # 'ű' + }, + 4: { # 'n' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 1, # 'x' + 16: 3, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 3, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 8: { # 'o' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 1, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 2, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 2, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 23: { # 'p' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 1, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 2, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 3, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 10: { # 'r' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 2, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 3, # 'ú' + 29: 3, # 'ü' + 42: 2, # 'ő' + 56: 2, # 'ű' + }, + 5: { # 's' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 2, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 2, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 3, # 'k' + 6: 2, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 3, # 'ú' + 29: 3, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 3: { # 't' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 1, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 3, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 3, # 'ú' + 29: 3, # 'ü' + 42: 3, # 'ő' + 56: 2, # 'ű' + }, + 21: { # 'u' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 2, # 'b' + 26: 2, # 'c' + 17: 3, # 'd' + 1: 2, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 2, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 1, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 1, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 0, # 'ö' + 31: 1, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 19: { # 'v' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 2, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 62: { # 'x' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 0, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 1, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 16: { # 'y' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 2, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 2, # 'ű' + }, + 11: { # 'z' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 2, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 3, # 'k' + 6: 2, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 3, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 51: { # 'Á' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 1, # 'F' + 49: 2, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 2, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 1, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 44: { # 'É' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 0, # 'F' + 49: 2, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 2, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 61: { # 'Í' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 1, # 'J' + 36: 0, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 2, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 1, # 'm' + 4: 0, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 0, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 58: { # 'Ó' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 2, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 0, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 59: { # 'Ö' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 0, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 0, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 60: { # 'Ú' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 2, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 2, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 63: { # 'Ü' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 0, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 0, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 0, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 1, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 14: { # 'á' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 1, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 2, # 'h' + 9: 2, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 2, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 15: { # 'é' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 3, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 0, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 30: { # 'í' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 2, # 's' + 3: 3, # 't' + 21: 0, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 25: { # 'ó' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 3, # 'd' + 1: 1, # 'e' + 27: 2, # 'f' + 12: 2, # 'g' + 20: 2, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 1, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 24: { # 'ö' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 0, # 'a' + 18: 3, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 0, # 'e' + 27: 1, # 'f' + 12: 2, # 'g' + 20: 1, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 0, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 0, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 31: { # 'ú' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 3, # 'j' + 7: 1, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 2, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 29: { # 'ü' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 2, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 0, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 42: { # 'ő' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 2, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 1, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 56: { # 'ű' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 0, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +WINDOWS_1250_HUNGARIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 28, # 'A' + 66: 40, # 'B' + 67: 54, # 'C' + 68: 45, # 'D' + 69: 32, # 'E' + 70: 50, # 'F' + 71: 49, # 'G' + 72: 38, # 'H' + 73: 39, # 'I' + 74: 53, # 'J' + 75: 36, # 'K' + 76: 41, # 'L' + 77: 34, # 'M' + 78: 35, # 'N' + 79: 47, # 'O' + 80: 46, # 'P' + 81: 72, # 'Q' + 82: 43, # 'R' + 83: 33, # 'S' + 84: 37, # 'T' + 85: 57, # 'U' + 86: 48, # 'V' + 87: 64, # 'W' + 88: 68, # 'X' + 89: 55, # 'Y' + 90: 52, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 2, # 'a' + 98: 18, # 'b' + 99: 26, # 'c' + 100: 17, # 'd' + 101: 1, # 'e' + 102: 27, # 'f' + 103: 12, # 'g' + 104: 20, # 'h' + 105: 9, # 'i' + 106: 22, # 'j' + 107: 7, # 'k' + 108: 6, # 'l' + 109: 13, # 'm' + 110: 4, # 'n' + 111: 8, # 'o' + 112: 23, # 'p' + 113: 67, # 'q' + 114: 10, # 'r' + 115: 5, # 's' + 116: 3, # 't' + 117: 21, # 'u' + 118: 19, # 'v' + 119: 65, # 'w' + 120: 62, # 'x' + 121: 16, # 'y' + 122: 11, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 161, # '€' + 129: 162, # None + 130: 163, # '‚' + 131: 164, # None + 132: 165, # '„' + 133: 166, # '…' + 134: 167, # '†' + 135: 168, # '‡' + 136: 169, # None + 137: 170, # '‰' + 138: 171, # 'Š' + 139: 172, # '‹' + 140: 173, # 'Ś' + 141: 174, # 'Ť' + 142: 175, # 'Ž' + 143: 176, # 'Ź' + 144: 177, # None + 145: 178, # '‘' + 146: 179, # '’' + 147: 180, # '“' + 148: 78, # '”' + 149: 181, # '•' + 150: 69, # '–' + 151: 182, # '—' + 152: 183, # None + 153: 184, # '™' + 154: 185, # 'š' + 155: 186, # '›' + 156: 187, # 'ś' + 157: 188, # 'ť' + 158: 189, # 'ž' + 159: 190, # 'ź' + 160: 191, # '\xa0' + 161: 192, # 'ˇ' + 162: 193, # '˘' + 163: 194, # 'Ł' + 164: 195, # '¤' + 165: 196, # 'Ą' + 166: 197, # '¦' + 167: 76, # '§' + 168: 198, # '¨' + 169: 199, # '©' + 170: 200, # 'Ş' + 171: 201, # '«' + 172: 202, # '¬' + 173: 203, # '\xad' + 174: 204, # '®' + 175: 205, # 'Ż' + 176: 81, # '°' + 177: 206, # '±' + 178: 207, # '˛' + 179: 208, # 'ł' + 180: 209, # '´' + 181: 210, # 'µ' + 182: 211, # '¶' + 183: 212, # '·' + 184: 213, # '¸' + 185: 214, # 'ą' + 186: 215, # 'ş' + 187: 216, # '»' + 188: 217, # 'Ľ' + 189: 218, # '˝' + 190: 219, # 'ľ' + 191: 220, # 'ż' + 192: 221, # 'Ŕ' + 193: 51, # 'Á' + 194: 83, # 'Â' + 195: 222, # 'Ă' + 196: 80, # 'Ä' + 197: 223, # 'Ĺ' + 198: 224, # 'Ć' + 199: 225, # 'Ç' + 200: 226, # 'Č' + 201: 44, # 'É' + 202: 227, # 'Ę' + 203: 228, # 'Ë' + 204: 229, # 'Ě' + 205: 61, # 'Í' + 206: 230, # 'Î' + 207: 231, # 'Ď' + 208: 232, # 'Đ' + 209: 233, # 'Ń' + 210: 234, # 'Ň' + 211: 58, # 'Ó' + 212: 235, # 'Ô' + 213: 66, # 'Ő' + 214: 59, # 'Ö' + 215: 236, # '×' + 216: 237, # 'Ř' + 217: 238, # 'Ů' + 218: 60, # 'Ú' + 219: 70, # 'Ű' + 220: 63, # 'Ü' + 221: 239, # 'Ý' + 222: 240, # 'Ţ' + 223: 241, # 'ß' + 224: 84, # 'ŕ' + 225: 14, # 'á' + 226: 75, # 'â' + 227: 242, # 'ă' + 228: 71, # 'ä' + 229: 82, # 'ĺ' + 230: 243, # 'ć' + 231: 73, # 'ç' + 232: 244, # 'č' + 233: 15, # 'é' + 234: 85, # 'ę' + 235: 79, # 'ë' + 236: 86, # 'ě' + 237: 30, # 'í' + 238: 77, # 'î' + 239: 87, # 'ď' + 240: 245, # 'đ' + 241: 246, # 'ń' + 242: 247, # 'ň' + 243: 25, # 'ó' + 244: 74, # 'ô' + 245: 42, # 'ő' + 246: 24, # 'ö' + 247: 248, # '÷' + 248: 249, # 'ř' + 249: 250, # 'ů' + 250: 31, # 'ú' + 251: 56, # 'ű' + 252: 29, # 'ü' + 253: 251, # 'ý' + 254: 252, # 'ţ' + 255: 253, # '˙' +} + +WINDOWS_1250_HUNGARIAN_MODEL = SingleByteCharSetModel(charset_name='windows-1250', + language='Hungarian', + char_to_order_map=WINDOWS_1250_HUNGARIAN_CHAR_TO_ORDER, + language_model=HUNGARIAN_LANG_MODEL, + typical_positive_ratio=0.947368, + keep_ascii_letters=True, + alphabet='ABCDEFGHIJKLMNOPRSTUVZabcdefghijklmnoprstuvzÁÉÍÓÖÚÜáéíóöúüŐőŰű') + +ISO_8859_2_HUNGARIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 28, # 'A' + 66: 40, # 'B' + 67: 54, # 'C' + 68: 45, # 'D' + 69: 32, # 'E' + 70: 50, # 'F' + 71: 49, # 'G' + 72: 38, # 'H' + 73: 39, # 'I' + 74: 53, # 'J' + 75: 36, # 'K' + 76: 41, # 'L' + 77: 34, # 'M' + 78: 35, # 'N' + 79: 47, # 'O' + 80: 46, # 'P' + 81: 71, # 'Q' + 82: 43, # 'R' + 83: 33, # 'S' + 84: 37, # 'T' + 85: 57, # 'U' + 86: 48, # 'V' + 87: 64, # 'W' + 88: 68, # 'X' + 89: 55, # 'Y' + 90: 52, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 2, # 'a' + 98: 18, # 'b' + 99: 26, # 'c' + 100: 17, # 'd' + 101: 1, # 'e' + 102: 27, # 'f' + 103: 12, # 'g' + 104: 20, # 'h' + 105: 9, # 'i' + 106: 22, # 'j' + 107: 7, # 'k' + 108: 6, # 'l' + 109: 13, # 'm' + 110: 4, # 'n' + 111: 8, # 'o' + 112: 23, # 'p' + 113: 67, # 'q' + 114: 10, # 'r' + 115: 5, # 's' + 116: 3, # 't' + 117: 21, # 'u' + 118: 19, # 'v' + 119: 65, # 'w' + 120: 62, # 'x' + 121: 16, # 'y' + 122: 11, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 159, # '\x80' + 129: 160, # '\x81' + 130: 161, # '\x82' + 131: 162, # '\x83' + 132: 163, # '\x84' + 133: 164, # '\x85' + 134: 165, # '\x86' + 135: 166, # '\x87' + 136: 167, # '\x88' + 137: 168, # '\x89' + 138: 169, # '\x8a' + 139: 170, # '\x8b' + 140: 171, # '\x8c' + 141: 172, # '\x8d' + 142: 173, # '\x8e' + 143: 174, # '\x8f' + 144: 175, # '\x90' + 145: 176, # '\x91' + 146: 177, # '\x92' + 147: 178, # '\x93' + 148: 179, # '\x94' + 149: 180, # '\x95' + 150: 181, # '\x96' + 151: 182, # '\x97' + 152: 183, # '\x98' + 153: 184, # '\x99' + 154: 185, # '\x9a' + 155: 186, # '\x9b' + 156: 187, # '\x9c' + 157: 188, # '\x9d' + 158: 189, # '\x9e' + 159: 190, # '\x9f' + 160: 191, # '\xa0' + 161: 192, # 'Ą' + 162: 193, # '˘' + 163: 194, # 'Ł' + 164: 195, # '¤' + 165: 196, # 'Ľ' + 166: 197, # 'Ś' + 167: 75, # '§' + 168: 198, # '¨' + 169: 199, # 'Š' + 170: 200, # 'Ş' + 171: 201, # 'Ť' + 172: 202, # 'Ź' + 173: 203, # '\xad' + 174: 204, # 'Ž' + 175: 205, # 'Ż' + 176: 79, # '°' + 177: 206, # 'ą' + 178: 207, # '˛' + 179: 208, # 'ł' + 180: 209, # '´' + 181: 210, # 'ľ' + 182: 211, # 'ś' + 183: 212, # 'ˇ' + 184: 213, # '¸' + 185: 214, # 'š' + 186: 215, # 'ş' + 187: 216, # 'ť' + 188: 217, # 'ź' + 189: 218, # '˝' + 190: 219, # 'ž' + 191: 220, # 'ż' + 192: 221, # 'Ŕ' + 193: 51, # 'Á' + 194: 81, # 'Â' + 195: 222, # 'Ă' + 196: 78, # 'Ä' + 197: 223, # 'Ĺ' + 198: 224, # 'Ć' + 199: 225, # 'Ç' + 200: 226, # 'Č' + 201: 44, # 'É' + 202: 227, # 'Ę' + 203: 228, # 'Ë' + 204: 229, # 'Ě' + 205: 61, # 'Í' + 206: 230, # 'Î' + 207: 231, # 'Ď' + 208: 232, # 'Đ' + 209: 233, # 'Ń' + 210: 234, # 'Ň' + 211: 58, # 'Ó' + 212: 235, # 'Ô' + 213: 66, # 'Ő' + 214: 59, # 'Ö' + 215: 236, # '×' + 216: 237, # 'Ř' + 217: 238, # 'Ů' + 218: 60, # 'Ú' + 219: 69, # 'Ű' + 220: 63, # 'Ü' + 221: 239, # 'Ý' + 222: 240, # 'Ţ' + 223: 241, # 'ß' + 224: 82, # 'ŕ' + 225: 14, # 'á' + 226: 74, # 'â' + 227: 242, # 'ă' + 228: 70, # 'ä' + 229: 80, # 'ĺ' + 230: 243, # 'ć' + 231: 72, # 'ç' + 232: 244, # 'č' + 233: 15, # 'é' + 234: 83, # 'ę' + 235: 77, # 'ë' + 236: 84, # 'ě' + 237: 30, # 'í' + 238: 76, # 'î' + 239: 85, # 'ď' + 240: 245, # 'đ' + 241: 246, # 'ń' + 242: 247, # 'ň' + 243: 25, # 'ó' + 244: 73, # 'ô' + 245: 42, # 'ő' + 246: 24, # 'ö' + 247: 248, # '÷' + 248: 249, # 'ř' + 249: 250, # 'ů' + 250: 31, # 'ú' + 251: 56, # 'ű' + 252: 29, # 'ü' + 253: 251, # 'ý' + 254: 252, # 'ţ' + 255: 253, # '˙' +} + +ISO_8859_2_HUNGARIAN_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-2', + language='Hungarian', + char_to_order_map=ISO_8859_2_HUNGARIAN_CHAR_TO_ORDER, + language_model=HUNGARIAN_LANG_MODEL, + typical_positive_ratio=0.947368, + keep_ascii_letters=True, + alphabet='ABCDEFGHIJKLMNOPRSTUVZabcdefghijklmnoprstuvzÁÉÍÓÖÚÜáéíóöúüŐőŰű') + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langrussianmodel.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langrussianmodel.py new file mode 100644 index 0000000..c1a060d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langrussianmodel.py @@ -0,0 +1,5717 @@ +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +RUSSIAN_LANG_MODEL = { + 37: { # 'А' + 37: 0, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 2, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 1, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 0, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 1, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 0, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 44: { # 'Б' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 1, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 2, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 33: { # 'В' + 37: 2, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 2, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 1, # 'ъ' + 18: 3, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 0, # 'ю' + 16: 1, # 'я' + }, + 46: { # 'Г' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 2, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 41: { # 'Д' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 2, # 'Е' + 56: 1, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 2, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 3, # 'ж' + 20: 1, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 48: { # 'Е' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 2, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 2, # 'Р' + 32: 2, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 2, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 2, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 1, # 'н' + 1: 0, # 'о' + 15: 1, # 'п' + 9: 1, # 'р' + 7: 3, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 2, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 56: { # 'Ж' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 1, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 2, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 1, # 'м' + 5: 0, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 2, # 'ю' + 16: 0, # 'я' + }, + 51: { # 'З' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 0, # 'г' + 13: 2, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 1, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 1, # 'я' + }, + 42: { # 'И' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 2, # 'Е' + 56: 1, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 2, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 1, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 2, # 'з' + 4: 1, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 1, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 1, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 60: { # 'Й' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 1, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 36: { # 'К' + 37: 2, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 2, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 1, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 0, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 49: { # 'Л' + 37: 2, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 1, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 0, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 0, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 1, # 'л' + 12: 0, # 'м' + 5: 1, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 2, # 'ю' + 16: 1, # 'я' + }, + 38: { # 'М' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 0, # 'Ь' + 47: 1, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 1, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 1, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 31: { # 'Н' + 37: 2, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 1, # 'З' + 42: 2, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 1, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 3, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 34: { # 'О' + 37: 0, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 2, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 2, # 'Л' + 38: 1, # 'М' + 31: 2, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 2, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 1, # 'а' + 21: 2, # 'б' + 10: 1, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 0, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 1, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 0, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 1, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 35: { # 'П' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 2, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 0, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 3, # 'р' + 7: 1, # 'с' + 6: 1, # 'т' + 14: 2, # 'у' + 39: 1, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 0, # 'ю' + 16: 2, # 'я' + }, + 45: { # 'Р' + 37: 2, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 2, # 'Е' + 56: 1, # 'Ж' + 51: 0, # 'З' + 42: 2, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 2, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 1, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 2, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 2, # 'я' + }, + 32: { # 'С' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 2, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 1, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 2, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 1, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 1, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 40: { # 'Т' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 2, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 1, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 1, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 52: { # 'У' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 1, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 2, # 'и' + 23: 1, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 1, # 'н' + 1: 2, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 0, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 53: { # 'Ф' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 1, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 55: { # 'Х' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 2, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 0, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 58: { # 'Ц' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 0, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 50: { # 'Ч' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 1, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 1, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 1, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 57: { # 'Ш' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 1, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 2, # 'о' + 15: 2, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 63: { # 'Щ' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 1, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 1, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 1, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 62: { # 'Ы' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 0, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 0, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 0, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 61: { # 'Ь' + 37: 0, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 1, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 1, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 0, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 0, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 47: { # 'Э' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 0, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 2, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 59: { # 'Ю' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 1, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 0, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 1, # 'п' + 9: 1, # 'р' + 7: 1, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 43: { # 'Я' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 0, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 0, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 1, # 'й' + 11: 1, # 'к' + 8: 1, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 1, # 'п' + 9: 1, # 'р' + 7: 1, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 3: { # 'а' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 3, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 3, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 21: { # 'б' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 1, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 0, # 'ф' + 26: 2, # 'х' + 28: 1, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 3, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 10: { # 'в' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 3, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 3, # 'ш' + 29: 2, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 3, # 'я' + }, + 19: { # 'г' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 3, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 13: { # 'д' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 3, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 2: { # 'е' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 2, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 3, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 24: { # 'ж' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 1, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 1, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 0, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 20: { # 'з' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 3, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 3, # 'я' + }, + 4: { # 'и' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 3, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 3, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 23: { # 'й' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 2, # 'з' + 4: 1, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 2, # 'ф' + 26: 1, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 2, # 'я' + }, + 11: { # 'к' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 3, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 8: { # 'л' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 3, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 1, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 1, # 'ц' + 22: 3, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 12: { # 'м' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 1, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 2, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 3, # 'я' + }, + 5: { # 'н' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 3, # 'ц' + 22: 3, # 'ч' + 25: 2, # 'ш' + 29: 2, # 'щ' + 54: 1, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 1: { # 'о' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 3, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 15: { # 'п' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 3, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 0, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 3, # 'я' + }, + 9: { # 'р' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 2, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 3, # 'ш' + 29: 2, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 2, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 7: { # 'с' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 1, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 6: { # 'т' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 2, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 2, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 14: { # 'у' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 2, # 'и' + 23: 2, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 2, # 'я' + }, + 39: { # 'ф' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 1, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 2, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 26: { # 'х' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 3, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 1, # 'п' + 9: 3, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 0, # 'щ' + 54: 1, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 28: { # 'ц' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 1, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 1, # 'т' + 14: 3, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 1, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 1, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 22: { # 'ч' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 3, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 25: { # 'ш' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 1, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 29: { # 'щ' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 1, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 2, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 54: { # 'ъ' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 0, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 2, # 'я' + }, + 18: { # 'ы' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 2, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 1, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 2, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 2, # 'я' + }, + 17: { # 'ь' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 3, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 0, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 2, # 'п' + 9: 1, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 0, # 'у' + 39: 2, # 'ф' + 26: 1, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 3, # 'ш' + 29: 2, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 30: { # 'э' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 1, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 1, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 2, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 2, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 27: { # 'ю' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 1, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 1, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 1, # 'и' + 23: 1, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 1, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 0, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 2, # 'ю' + 16: 1, # 'я' + }, + 16: { # 'я' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 2, # 'и' + 23: 2, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 0, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 1, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 2, # 'ю' + 16: 2, # 'я' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +IBM866_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 37, # 'А' + 129: 44, # 'Б' + 130: 33, # 'В' + 131: 46, # 'Г' + 132: 41, # 'Д' + 133: 48, # 'Е' + 134: 56, # 'Ж' + 135: 51, # 'З' + 136: 42, # 'И' + 137: 60, # 'Й' + 138: 36, # 'К' + 139: 49, # 'Л' + 140: 38, # 'М' + 141: 31, # 'Н' + 142: 34, # 'О' + 143: 35, # 'П' + 144: 45, # 'Р' + 145: 32, # 'С' + 146: 40, # 'Т' + 147: 52, # 'У' + 148: 53, # 'Ф' + 149: 55, # 'Х' + 150: 58, # 'Ц' + 151: 50, # 'Ч' + 152: 57, # 'Ш' + 153: 63, # 'Щ' + 154: 70, # 'Ъ' + 155: 62, # 'Ы' + 156: 61, # 'Ь' + 157: 47, # 'Э' + 158: 59, # 'Ю' + 159: 43, # 'Я' + 160: 3, # 'а' + 161: 21, # 'б' + 162: 10, # 'в' + 163: 19, # 'г' + 164: 13, # 'д' + 165: 2, # 'е' + 166: 24, # 'ж' + 167: 20, # 'з' + 168: 4, # 'и' + 169: 23, # 'й' + 170: 11, # 'к' + 171: 8, # 'л' + 172: 12, # 'м' + 173: 5, # 'н' + 174: 1, # 'о' + 175: 15, # 'п' + 176: 191, # '░' + 177: 192, # '▒' + 178: 193, # '▓' + 179: 194, # '│' + 180: 195, # '┤' + 181: 196, # '╡' + 182: 197, # '╢' + 183: 198, # '╖' + 184: 199, # '╕' + 185: 200, # '╣' + 186: 201, # '║' + 187: 202, # '╗' + 188: 203, # '╝' + 189: 204, # '╜' + 190: 205, # '╛' + 191: 206, # '┐' + 192: 207, # '└' + 193: 208, # '┴' + 194: 209, # '┬' + 195: 210, # '├' + 196: 211, # '─' + 197: 212, # '┼' + 198: 213, # '╞' + 199: 214, # '╟' + 200: 215, # '╚' + 201: 216, # '╔' + 202: 217, # '╩' + 203: 218, # '╦' + 204: 219, # '╠' + 205: 220, # '═' + 206: 221, # '╬' + 207: 222, # '╧' + 208: 223, # '╨' + 209: 224, # '╤' + 210: 225, # '╥' + 211: 226, # '╙' + 212: 227, # '╘' + 213: 228, # '╒' + 214: 229, # '╓' + 215: 230, # '╫' + 216: 231, # '╪' + 217: 232, # '┘' + 218: 233, # '┌' + 219: 234, # '█' + 220: 235, # '▄' + 221: 236, # '▌' + 222: 237, # '▐' + 223: 238, # '▀' + 224: 9, # 'р' + 225: 7, # 'с' + 226: 6, # 'т' + 227: 14, # 'у' + 228: 39, # 'ф' + 229: 26, # 'х' + 230: 28, # 'ц' + 231: 22, # 'ч' + 232: 25, # 'ш' + 233: 29, # 'щ' + 234: 54, # 'ъ' + 235: 18, # 'ы' + 236: 17, # 'ь' + 237: 30, # 'э' + 238: 27, # 'ю' + 239: 16, # 'я' + 240: 239, # 'Ё' + 241: 68, # 'ё' + 242: 240, # 'Є' + 243: 241, # 'є' + 244: 242, # 'Ї' + 245: 243, # 'ї' + 246: 244, # 'Ў' + 247: 245, # 'ў' + 248: 246, # '°' + 249: 247, # '∙' + 250: 248, # '·' + 251: 249, # '√' + 252: 250, # '№' + 253: 251, # '¤' + 254: 252, # '■' + 255: 255, # '\xa0' +} + +IBM866_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='IBM866', + language='Russian', + char_to_order_map=IBM866_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +WINDOWS_1251_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 191, # 'Ђ' + 129: 192, # 'Ѓ' + 130: 193, # '‚' + 131: 194, # 'ѓ' + 132: 195, # '„' + 133: 196, # '…' + 134: 197, # '†' + 135: 198, # '‡' + 136: 199, # '€' + 137: 200, # '‰' + 138: 201, # 'Љ' + 139: 202, # '‹' + 140: 203, # 'Њ' + 141: 204, # 'Ќ' + 142: 205, # 'Ћ' + 143: 206, # 'Џ' + 144: 207, # 'ђ' + 145: 208, # '‘' + 146: 209, # '’' + 147: 210, # '“' + 148: 211, # '”' + 149: 212, # '•' + 150: 213, # '–' + 151: 214, # '—' + 152: 215, # None + 153: 216, # '™' + 154: 217, # 'љ' + 155: 218, # '›' + 156: 219, # 'њ' + 157: 220, # 'ќ' + 158: 221, # 'ћ' + 159: 222, # 'џ' + 160: 223, # '\xa0' + 161: 224, # 'Ў' + 162: 225, # 'ў' + 163: 226, # 'Ј' + 164: 227, # '¤' + 165: 228, # 'Ґ' + 166: 229, # '¦' + 167: 230, # '§' + 168: 231, # 'Ё' + 169: 232, # '©' + 170: 233, # 'Є' + 171: 234, # '«' + 172: 235, # '¬' + 173: 236, # '\xad' + 174: 237, # '®' + 175: 238, # 'Ї' + 176: 239, # '°' + 177: 240, # '±' + 178: 241, # 'І' + 179: 242, # 'і' + 180: 243, # 'ґ' + 181: 244, # 'µ' + 182: 245, # '¶' + 183: 246, # '·' + 184: 68, # 'ё' + 185: 247, # '№' + 186: 248, # 'є' + 187: 249, # '»' + 188: 250, # 'ј' + 189: 251, # 'Ѕ' + 190: 252, # 'ѕ' + 191: 253, # 'ї' + 192: 37, # 'А' + 193: 44, # 'Б' + 194: 33, # 'В' + 195: 46, # 'Г' + 196: 41, # 'Д' + 197: 48, # 'Е' + 198: 56, # 'Ж' + 199: 51, # 'З' + 200: 42, # 'И' + 201: 60, # 'Й' + 202: 36, # 'К' + 203: 49, # 'Л' + 204: 38, # 'М' + 205: 31, # 'Н' + 206: 34, # 'О' + 207: 35, # 'П' + 208: 45, # 'Р' + 209: 32, # 'С' + 210: 40, # 'Т' + 211: 52, # 'У' + 212: 53, # 'Ф' + 213: 55, # 'Х' + 214: 58, # 'Ц' + 215: 50, # 'Ч' + 216: 57, # 'Ш' + 217: 63, # 'Щ' + 218: 70, # 'Ъ' + 219: 62, # 'Ы' + 220: 61, # 'Ь' + 221: 47, # 'Э' + 222: 59, # 'Ю' + 223: 43, # 'Я' + 224: 3, # 'а' + 225: 21, # 'б' + 226: 10, # 'в' + 227: 19, # 'г' + 228: 13, # 'д' + 229: 2, # 'е' + 230: 24, # 'ж' + 231: 20, # 'з' + 232: 4, # 'и' + 233: 23, # 'й' + 234: 11, # 'к' + 235: 8, # 'л' + 236: 12, # 'м' + 237: 5, # 'н' + 238: 1, # 'о' + 239: 15, # 'п' + 240: 9, # 'р' + 241: 7, # 'с' + 242: 6, # 'т' + 243: 14, # 'у' + 244: 39, # 'ф' + 245: 26, # 'х' + 246: 28, # 'ц' + 247: 22, # 'ч' + 248: 25, # 'ш' + 249: 29, # 'щ' + 250: 54, # 'ъ' + 251: 18, # 'ы' + 252: 17, # 'ь' + 253: 30, # 'э' + 254: 27, # 'ю' + 255: 16, # 'я' +} + +WINDOWS_1251_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='windows-1251', + language='Russian', + char_to_order_map=WINDOWS_1251_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +IBM855_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 191, # 'ђ' + 129: 192, # 'Ђ' + 130: 193, # 'ѓ' + 131: 194, # 'Ѓ' + 132: 68, # 'ё' + 133: 195, # 'Ё' + 134: 196, # 'є' + 135: 197, # 'Є' + 136: 198, # 'ѕ' + 137: 199, # 'Ѕ' + 138: 200, # 'і' + 139: 201, # 'І' + 140: 202, # 'ї' + 141: 203, # 'Ї' + 142: 204, # 'ј' + 143: 205, # 'Ј' + 144: 206, # 'љ' + 145: 207, # 'Љ' + 146: 208, # 'њ' + 147: 209, # 'Њ' + 148: 210, # 'ћ' + 149: 211, # 'Ћ' + 150: 212, # 'ќ' + 151: 213, # 'Ќ' + 152: 214, # 'ў' + 153: 215, # 'Ў' + 154: 216, # 'џ' + 155: 217, # 'Џ' + 156: 27, # 'ю' + 157: 59, # 'Ю' + 158: 54, # 'ъ' + 159: 70, # 'Ъ' + 160: 3, # 'а' + 161: 37, # 'А' + 162: 21, # 'б' + 163: 44, # 'Б' + 164: 28, # 'ц' + 165: 58, # 'Ц' + 166: 13, # 'д' + 167: 41, # 'Д' + 168: 2, # 'е' + 169: 48, # 'Е' + 170: 39, # 'ф' + 171: 53, # 'Ф' + 172: 19, # 'г' + 173: 46, # 'Г' + 174: 218, # '«' + 175: 219, # '»' + 176: 220, # '░' + 177: 221, # '▒' + 178: 222, # '▓' + 179: 223, # '│' + 180: 224, # '┤' + 181: 26, # 'х' + 182: 55, # 'Х' + 183: 4, # 'и' + 184: 42, # 'И' + 185: 225, # '╣' + 186: 226, # '║' + 187: 227, # '╗' + 188: 228, # '╝' + 189: 23, # 'й' + 190: 60, # 'Й' + 191: 229, # '┐' + 192: 230, # '└' + 193: 231, # '┴' + 194: 232, # '┬' + 195: 233, # '├' + 196: 234, # '─' + 197: 235, # '┼' + 198: 11, # 'к' + 199: 36, # 'К' + 200: 236, # '╚' + 201: 237, # '╔' + 202: 238, # '╩' + 203: 239, # '╦' + 204: 240, # '╠' + 205: 241, # '═' + 206: 242, # '╬' + 207: 243, # '¤' + 208: 8, # 'л' + 209: 49, # 'Л' + 210: 12, # 'м' + 211: 38, # 'М' + 212: 5, # 'н' + 213: 31, # 'Н' + 214: 1, # 'о' + 215: 34, # 'О' + 216: 15, # 'п' + 217: 244, # '┘' + 218: 245, # '┌' + 219: 246, # '█' + 220: 247, # '▄' + 221: 35, # 'П' + 222: 16, # 'я' + 223: 248, # '▀' + 224: 43, # 'Я' + 225: 9, # 'р' + 226: 45, # 'Р' + 227: 7, # 'с' + 228: 32, # 'С' + 229: 6, # 'т' + 230: 40, # 'Т' + 231: 14, # 'у' + 232: 52, # 'У' + 233: 24, # 'ж' + 234: 56, # 'Ж' + 235: 10, # 'в' + 236: 33, # 'В' + 237: 17, # 'ь' + 238: 61, # 'Ь' + 239: 249, # '№' + 240: 250, # '\xad' + 241: 18, # 'ы' + 242: 62, # 'Ы' + 243: 20, # 'з' + 244: 51, # 'З' + 245: 25, # 'ш' + 246: 57, # 'Ш' + 247: 30, # 'э' + 248: 47, # 'Э' + 249: 29, # 'щ' + 250: 63, # 'Щ' + 251: 22, # 'ч' + 252: 50, # 'Ч' + 253: 251, # '§' + 254: 252, # '■' + 255: 255, # '\xa0' +} + +IBM855_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='IBM855', + language='Russian', + char_to_order_map=IBM855_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +KOI8_R_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 191, # '─' + 129: 192, # '│' + 130: 193, # '┌' + 131: 194, # '┐' + 132: 195, # '└' + 133: 196, # '┘' + 134: 197, # '├' + 135: 198, # '┤' + 136: 199, # '┬' + 137: 200, # '┴' + 138: 201, # '┼' + 139: 202, # '▀' + 140: 203, # '▄' + 141: 204, # '█' + 142: 205, # '▌' + 143: 206, # '▐' + 144: 207, # '░' + 145: 208, # '▒' + 146: 209, # '▓' + 147: 210, # '⌠' + 148: 211, # '■' + 149: 212, # '∙' + 150: 213, # '√' + 151: 214, # '≈' + 152: 215, # '≤' + 153: 216, # '≥' + 154: 217, # '\xa0' + 155: 218, # '⌡' + 156: 219, # '°' + 157: 220, # '²' + 158: 221, # '·' + 159: 222, # '÷' + 160: 223, # '═' + 161: 224, # '║' + 162: 225, # '╒' + 163: 68, # 'ё' + 164: 226, # '╓' + 165: 227, # '╔' + 166: 228, # '╕' + 167: 229, # '╖' + 168: 230, # '╗' + 169: 231, # '╘' + 170: 232, # '╙' + 171: 233, # '╚' + 172: 234, # '╛' + 173: 235, # '╜' + 174: 236, # '╝' + 175: 237, # '╞' + 176: 238, # '╟' + 177: 239, # '╠' + 178: 240, # '╡' + 179: 241, # 'Ё' + 180: 242, # '╢' + 181: 243, # '╣' + 182: 244, # '╤' + 183: 245, # '╥' + 184: 246, # '╦' + 185: 247, # '╧' + 186: 248, # '╨' + 187: 249, # '╩' + 188: 250, # '╪' + 189: 251, # '╫' + 190: 252, # '╬' + 191: 253, # '©' + 192: 27, # 'ю' + 193: 3, # 'а' + 194: 21, # 'б' + 195: 28, # 'ц' + 196: 13, # 'д' + 197: 2, # 'е' + 198: 39, # 'ф' + 199: 19, # 'г' + 200: 26, # 'х' + 201: 4, # 'и' + 202: 23, # 'й' + 203: 11, # 'к' + 204: 8, # 'л' + 205: 12, # 'м' + 206: 5, # 'н' + 207: 1, # 'о' + 208: 15, # 'п' + 209: 16, # 'я' + 210: 9, # 'р' + 211: 7, # 'с' + 212: 6, # 'т' + 213: 14, # 'у' + 214: 24, # 'ж' + 215: 10, # 'в' + 216: 17, # 'ь' + 217: 18, # 'ы' + 218: 20, # 'з' + 219: 25, # 'ш' + 220: 30, # 'э' + 221: 29, # 'щ' + 222: 22, # 'ч' + 223: 54, # 'ъ' + 224: 59, # 'Ю' + 225: 37, # 'А' + 226: 44, # 'Б' + 227: 58, # 'Ц' + 228: 41, # 'Д' + 229: 48, # 'Е' + 230: 53, # 'Ф' + 231: 46, # 'Г' + 232: 55, # 'Х' + 233: 42, # 'И' + 234: 60, # 'Й' + 235: 36, # 'К' + 236: 49, # 'Л' + 237: 38, # 'М' + 238: 31, # 'Н' + 239: 34, # 'О' + 240: 35, # 'П' + 241: 43, # 'Я' + 242: 45, # 'Р' + 243: 32, # 'С' + 244: 40, # 'Т' + 245: 52, # 'У' + 246: 56, # 'Ж' + 247: 33, # 'В' + 248: 61, # 'Ь' + 249: 62, # 'Ы' + 250: 51, # 'З' + 251: 57, # 'Ш' + 252: 47, # 'Э' + 253: 63, # 'Щ' + 254: 50, # 'Ч' + 255: 70, # 'Ъ' +} + +KOI8_R_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='KOI8-R', + language='Russian', + char_to_order_map=KOI8_R_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +MACCYRILLIC_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 37, # 'А' + 129: 44, # 'Б' + 130: 33, # 'В' + 131: 46, # 'Г' + 132: 41, # 'Д' + 133: 48, # 'Е' + 134: 56, # 'Ж' + 135: 51, # 'З' + 136: 42, # 'И' + 137: 60, # 'Й' + 138: 36, # 'К' + 139: 49, # 'Л' + 140: 38, # 'М' + 141: 31, # 'Н' + 142: 34, # 'О' + 143: 35, # 'П' + 144: 45, # 'Р' + 145: 32, # 'С' + 146: 40, # 'Т' + 147: 52, # 'У' + 148: 53, # 'Ф' + 149: 55, # 'Х' + 150: 58, # 'Ц' + 151: 50, # 'Ч' + 152: 57, # 'Ш' + 153: 63, # 'Щ' + 154: 70, # 'Ъ' + 155: 62, # 'Ы' + 156: 61, # 'Ь' + 157: 47, # 'Э' + 158: 59, # 'Ю' + 159: 43, # 'Я' + 160: 191, # '†' + 161: 192, # '°' + 162: 193, # 'Ґ' + 163: 194, # '£' + 164: 195, # '§' + 165: 196, # '•' + 166: 197, # '¶' + 167: 198, # 'І' + 168: 199, # '®' + 169: 200, # '©' + 170: 201, # '™' + 171: 202, # 'Ђ' + 172: 203, # 'ђ' + 173: 204, # '≠' + 174: 205, # 'Ѓ' + 175: 206, # 'ѓ' + 176: 207, # '∞' + 177: 208, # '±' + 178: 209, # '≤' + 179: 210, # '≥' + 180: 211, # 'і' + 181: 212, # 'µ' + 182: 213, # 'ґ' + 183: 214, # 'Ј' + 184: 215, # 'Є' + 185: 216, # 'є' + 186: 217, # 'Ї' + 187: 218, # 'ї' + 188: 219, # 'Љ' + 189: 220, # 'љ' + 190: 221, # 'Њ' + 191: 222, # 'њ' + 192: 223, # 'ј' + 193: 224, # 'Ѕ' + 194: 225, # '¬' + 195: 226, # '√' + 196: 227, # 'ƒ' + 197: 228, # '≈' + 198: 229, # '∆' + 199: 230, # '«' + 200: 231, # '»' + 201: 232, # '…' + 202: 233, # '\xa0' + 203: 234, # 'Ћ' + 204: 235, # 'ћ' + 205: 236, # 'Ќ' + 206: 237, # 'ќ' + 207: 238, # 'ѕ' + 208: 239, # '–' + 209: 240, # '—' + 210: 241, # '“' + 211: 242, # '”' + 212: 243, # '‘' + 213: 244, # '’' + 214: 245, # '÷' + 215: 246, # '„' + 216: 247, # 'Ў' + 217: 248, # 'ў' + 218: 249, # 'Џ' + 219: 250, # 'џ' + 220: 251, # '№' + 221: 252, # 'Ё' + 222: 68, # 'ё' + 223: 16, # 'я' + 224: 3, # 'а' + 225: 21, # 'б' + 226: 10, # 'в' + 227: 19, # 'г' + 228: 13, # 'д' + 229: 2, # 'е' + 230: 24, # 'ж' + 231: 20, # 'з' + 232: 4, # 'и' + 233: 23, # 'й' + 234: 11, # 'к' + 235: 8, # 'л' + 236: 12, # 'м' + 237: 5, # 'н' + 238: 1, # 'о' + 239: 15, # 'п' + 240: 9, # 'р' + 241: 7, # 'с' + 242: 6, # 'т' + 243: 14, # 'у' + 244: 39, # 'ф' + 245: 26, # 'х' + 246: 28, # 'ц' + 247: 22, # 'ч' + 248: 25, # 'ш' + 249: 29, # 'щ' + 250: 54, # 'ъ' + 251: 18, # 'ы' + 252: 17, # 'ь' + 253: 30, # 'э' + 254: 27, # 'ю' + 255: 255, # '€' +} + +MACCYRILLIC_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='MacCyrillic', + language='Russian', + char_to_order_map=MACCYRILLIC_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +ISO_8859_5_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 191, # '\x80' + 129: 192, # '\x81' + 130: 193, # '\x82' + 131: 194, # '\x83' + 132: 195, # '\x84' + 133: 196, # '\x85' + 134: 197, # '\x86' + 135: 198, # '\x87' + 136: 199, # '\x88' + 137: 200, # '\x89' + 138: 201, # '\x8a' + 139: 202, # '\x8b' + 140: 203, # '\x8c' + 141: 204, # '\x8d' + 142: 205, # '\x8e' + 143: 206, # '\x8f' + 144: 207, # '\x90' + 145: 208, # '\x91' + 146: 209, # '\x92' + 147: 210, # '\x93' + 148: 211, # '\x94' + 149: 212, # '\x95' + 150: 213, # '\x96' + 151: 214, # '\x97' + 152: 215, # '\x98' + 153: 216, # '\x99' + 154: 217, # '\x9a' + 155: 218, # '\x9b' + 156: 219, # '\x9c' + 157: 220, # '\x9d' + 158: 221, # '\x9e' + 159: 222, # '\x9f' + 160: 223, # '\xa0' + 161: 224, # 'Ё' + 162: 225, # 'Ђ' + 163: 226, # 'Ѓ' + 164: 227, # 'Є' + 165: 228, # 'Ѕ' + 166: 229, # 'І' + 167: 230, # 'Ї' + 168: 231, # 'Ј' + 169: 232, # 'Љ' + 170: 233, # 'Њ' + 171: 234, # 'Ћ' + 172: 235, # 'Ќ' + 173: 236, # '\xad' + 174: 237, # 'Ў' + 175: 238, # 'Џ' + 176: 37, # 'А' + 177: 44, # 'Б' + 178: 33, # 'В' + 179: 46, # 'Г' + 180: 41, # 'Д' + 181: 48, # 'Е' + 182: 56, # 'Ж' + 183: 51, # 'З' + 184: 42, # 'И' + 185: 60, # 'Й' + 186: 36, # 'К' + 187: 49, # 'Л' + 188: 38, # 'М' + 189: 31, # 'Н' + 190: 34, # 'О' + 191: 35, # 'П' + 192: 45, # 'Р' + 193: 32, # 'С' + 194: 40, # 'Т' + 195: 52, # 'У' + 196: 53, # 'Ф' + 197: 55, # 'Х' + 198: 58, # 'Ц' + 199: 50, # 'Ч' + 200: 57, # 'Ш' + 201: 63, # 'Щ' + 202: 70, # 'Ъ' + 203: 62, # 'Ы' + 204: 61, # 'Ь' + 205: 47, # 'Э' + 206: 59, # 'Ю' + 207: 43, # 'Я' + 208: 3, # 'а' + 209: 21, # 'б' + 210: 10, # 'в' + 211: 19, # 'г' + 212: 13, # 'д' + 213: 2, # 'е' + 214: 24, # 'ж' + 215: 20, # 'з' + 216: 4, # 'и' + 217: 23, # 'й' + 218: 11, # 'к' + 219: 8, # 'л' + 220: 12, # 'м' + 221: 5, # 'н' + 222: 1, # 'о' + 223: 15, # 'п' + 224: 9, # 'р' + 225: 7, # 'с' + 226: 6, # 'т' + 227: 14, # 'у' + 228: 39, # 'ф' + 229: 26, # 'х' + 230: 28, # 'ц' + 231: 22, # 'ч' + 232: 25, # 'ш' + 233: 29, # 'щ' + 234: 54, # 'ъ' + 235: 18, # 'ы' + 236: 17, # 'ь' + 237: 30, # 'э' + 238: 27, # 'ю' + 239: 16, # 'я' + 240: 239, # '№' + 241: 68, # 'ё' + 242: 240, # 'ђ' + 243: 241, # 'ѓ' + 244: 242, # 'є' + 245: 243, # 'ѕ' + 246: 244, # 'і' + 247: 245, # 'ї' + 248: 246, # 'ј' + 249: 247, # 'љ' + 250: 248, # 'њ' + 251: 249, # 'ћ' + 252: 250, # 'ќ' + 253: 251, # '§' + 254: 252, # 'ў' + 255: 255, # 'џ' +} + +ISO_8859_5_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-5', + language='Russian', + char_to_order_map=ISO_8859_5_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langthaimodel.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langthaimodel.py new file mode 100644 index 0000000..24e0df2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langthaimodel.py @@ -0,0 +1,4382 @@ +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +THAI_LANG_MODEL = { + 5: { # 'ก' + 5: 2, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 2, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 3, # 'ฎ' + 57: 2, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 2, # 'ณ' + 20: 2, # 'ด' + 19: 3, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 1, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 1, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 3, # 'ร' + 61: 2, # 'ฤ' + 15: 3, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 3, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 1, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 2, # 'ื' + 32: 2, # 'ุ' + 35: 1, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 3, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 30: { # 'ข' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 1, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 2, # 'ณ' + 20: 0, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 2, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 2, # 'ี' + 40: 3, # 'ึ' + 27: 1, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 2, # '่' + 7: 3, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 24: { # 'ค' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 2, # 'ค' + 8: 2, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 2, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 0, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 3, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 2, # 'า' + 36: 3, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 3, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 8: { # 'ง' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 3, # 'ค' + 8: 2, # 'ง' + 26: 2, # 'จ' + 52: 1, # 'ฉ' + 34: 2, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 1, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 2, # 'ศ' + 46: 1, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 1, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 1, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 3, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 26: { # 'จ' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 0, # 'ค' + 8: 2, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 1, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 1, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 3, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 2, # 'ิ' + 13: 1, # 'ี' + 40: 3, # 'ึ' + 27: 1, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 2, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 52: { # 'ฉ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 3, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 3, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 1, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 1, # 'ั' + 1: 1, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 34: { # 'ช' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 1, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 1, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 1, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 1, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 51: { # 'ซ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 1, # 'ั' + 1: 1, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 2, # 'ี' + 40: 3, # 'ึ' + 27: 2, # 'ื' + 32: 1, # 'ุ' + 35: 1, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 1, # '่' + 7: 2, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 47: { # 'ญ' + 5: 1, # 'ก' + 30: 1, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 3, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 2, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 0, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 58: { # 'ฎ' + 5: 2, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 1, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 57: { # 'ฏ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 49: { # 'ฐ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 53: { # 'ฑ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 55: { # 'ฒ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 43: { # 'ณ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 3, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 3, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 3, # 'ะ' + 10: 0, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 20: { # 'ด' + 5: 2, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 3, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 2, # 'า' + 36: 2, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 1, # 'ึ' + 27: 2, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 2, # 'ๆ' + 37: 2, # '็' + 6: 1, # '่' + 7: 3, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 19: { # 'ต' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 1, # 'ต' + 44: 2, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 2, # 'ภ' + 9: 1, # 'ม' + 16: 1, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 0, # 'ห' + 4: 3, # 'อ' + 63: 1, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 1, # 'ึ' + 27: 1, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 2, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 44: { # 'ถ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 1, # 'ี' + 40: 3, # 'ึ' + 27: 2, # 'ื' + 32: 2, # 'ุ' + 35: 3, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 14: { # 'ท' + 5: 1, # 'ก' + 30: 1, # 'ข' + 24: 3, # 'ค' + 8: 1, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 3, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 3, # 'ย' + 2: 3, # 'ร' + 61: 1, # 'ฤ' + 15: 1, # 'ล' + 12: 2, # 'ว' + 42: 3, # 'ศ' + 46: 1, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 2, # 'ิ' + 13: 3, # 'ี' + 40: 2, # 'ึ' + 27: 1, # 'ื' + 32: 3, # 'ุ' + 35: 1, # 'ู' + 11: 0, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 48: { # 'ธ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 1, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 2, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 2, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 3: { # 'น' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 3, # 'ค' + 8: 1, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 1, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 2, # 'ถ' + 14: 3, # 'ท' + 48: 3, # 'ธ' + 3: 2, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 1, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 1, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 3, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 3, # 'โ' + 29: 3, # 'ใ' + 33: 3, # 'ไ' + 50: 2, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 17: { # 'บ' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 1, # 'ง' + 26: 1, # 'จ' + 52: 1, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 2, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 2, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 2, # '่' + 7: 2, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 25: { # 'ป' + 5: 2, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 1, # 'ฎ' + 57: 3, # 'ฏ' + 49: 1, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 0, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 1, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 1, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 3, # 'ั' + 1: 1, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 2, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 3, # '็' + 6: 1, # '่' + 7: 2, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 39: { # 'ผ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 1, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 2, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 1, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 1, # 'ื' + 32: 0, # 'ุ' + 35: 3, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 1, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 62: { # 'ฝ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 1, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 1, # 'ี' + 40: 2, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 1, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 31: { # 'พ' + 5: 1, # 'ก' + 30: 1, # 'ข' + 24: 1, # 'ค' + 8: 1, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 1, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 2, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 1, # 'ึ' + 27: 3, # 'ื' + 32: 1, # 'ุ' + 35: 2, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 0, # '่' + 7: 1, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 54: { # 'ฟ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 2, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 2, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 1, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 2, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 45: { # 'ภ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 3, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 2, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 9: { # 'ม' + 5: 2, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 2, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 3, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 2, # 'ร' + 61: 2, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 1, # 'ศ' + 46: 1, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 3, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 2, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 2, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 16: { # 'ย' + 5: 3, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 2, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 3, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 3, # 'ี' + 40: 1, # 'ึ' + 27: 2, # 'ื' + 32: 2, # 'ุ' + 35: 3, # 'ู' + 11: 2, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 2, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 2, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 2: { # 'ร' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 2, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 3, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 3, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 3, # 'ถ' + 14: 3, # 'ท' + 48: 1, # 'ธ' + 3: 2, # 'น' + 17: 2, # 'บ' + 25: 3, # 'ป' + 39: 2, # 'ผ' + 62: 1, # 'ฝ' + 31: 2, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 2, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 1, # 'ฯ' + 22: 3, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 2, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 3, # 'ู' + 11: 3, # 'เ' + 28: 3, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 3, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 61: { # 'ฤ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 2, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 15: { # 'ล' + 5: 2, # 'ก' + 30: 3, # 'ข' + 24: 1, # 'ค' + 8: 3, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 3, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 3, # 'อ' + 63: 2, # 'ฯ' + 22: 3, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 2, # 'ึ' + 27: 3, # 'ื' + 32: 2, # 'ุ' + 35: 3, # 'ู' + 11: 2, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 2, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 12: { # 'ว' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 1, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 2, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 42: { # 'ศ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 1, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 2, # 'ว' + 42: 1, # 'ศ' + 46: 2, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 0, # 'ี' + 40: 3, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 2, # 'ู' + 11: 0, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 46: { # 'ษ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 2, # 'ฎ' + 57: 1, # 'ฏ' + 49: 2, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 3, # 'ณ' + 20: 0, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 18: { # 'ส' + 5: 2, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 2, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 3, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 2, # 'ภ' + 9: 3, # 'ม' + 16: 1, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 2, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 3, # 'ู' + 11: 2, # 'เ' + 28: 0, # 'แ' + 41: 1, # 'โ' + 29: 0, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 1, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 21: { # 'ห' + 5: 3, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 1, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 3, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 0, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 1, # 'ุ' + 35: 1, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 3, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 4: { # 'อ' + 5: 3, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 2, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 1, # '็' + 6: 2, # '่' + 7: 2, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 63: { # 'ฯ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 22: { # 'ะ' + 5: 3, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 1, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 3, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 1, # 'ธ' + 3: 2, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 1, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 10: { # 'ั' + 5: 3, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 3, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 3, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 2, # 'ฐ' + 53: 0, # 'ฑ' + 55: 3, # 'ฒ' + 43: 3, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 1: { # 'า' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 3, # 'ค' + 8: 3, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 3, # 'ช' + 51: 1, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 3, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 2, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 1, # 'ฝ' + 31: 3, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 3, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 3, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 36: { # 'ำ' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 3, # 'ค' + 8: 2, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 1, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 3, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 23: { # 'ิ' + 5: 3, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 3, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 3, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 3, # 'พ' + 54: 1, # 'ฟ' + 45: 2, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 3, # 'ศ' + 46: 2, # 'ษ' + 18: 2, # 'ส' + 21: 3, # 'ห' + 4: 1, # 'อ' + 63: 1, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 2, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 13: { # 'ี' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 3, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 2, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 40: { # 'ึ' + 5: 3, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 3, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 27: { # 'ื' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 3, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 32: { # 'ุ' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 3, # 'ค' + 8: 3, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 1, # 'ฒ' + 43: 3, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 2, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 1, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 1, # 'ว' + 42: 1, # 'ศ' + 46: 2, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 1, # 'โ' + 29: 0, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 2, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 35: { # 'ู' + 5: 3, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 2, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 0, # 'บ' + 25: 3, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 11: { # 'เ' + 5: 3, # 'ก' + 30: 3, # 'ข' + 24: 3, # 'ค' + 8: 2, # 'ง' + 26: 3, # 'จ' + 52: 3, # 'ฉ' + 34: 3, # 'ช' + 51: 2, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 3, # 'ป' + 39: 2, # 'ผ' + 62: 1, # 'ฝ' + 31: 3, # 'พ' + 54: 1, # 'ฟ' + 45: 3, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 28: { # 'แ' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 1, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 3, # 'ต' + 44: 2, # 'ถ' + 14: 3, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 3, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 2, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 41: { # 'โ' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 1, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 1, # 'บ' + 25: 3, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 0, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 29: { # 'ใ' + 5: 2, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 3, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 1, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 33: { # 'ไ' + 5: 1, # 'ก' + 30: 2, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 3, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 1, # 'บ' + 25: 3, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 2, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 0, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 3, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 2, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 50: { # 'ๆ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 37: { # '็' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 2, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 1, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 6: { # '่' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 1, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 1, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 1, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 0, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 7: { # '้' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 3, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 38: { # '์' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 1, # 'ฤ' + 15: 1, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 56: { # '๑' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 2, # '๑' + 59: 1, # '๒' + 60: 1, # '๕' + }, + 59: { # '๒' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 1, # '๑' + 59: 1, # '๒' + 60: 3, # '๕' + }, + 60: { # '๕' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 2, # '๑' + 59: 1, # '๒' + 60: 0, # '๕' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +TIS_620_THAI_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 182, # 'A' + 66: 106, # 'B' + 67: 107, # 'C' + 68: 100, # 'D' + 69: 183, # 'E' + 70: 184, # 'F' + 71: 185, # 'G' + 72: 101, # 'H' + 73: 94, # 'I' + 74: 186, # 'J' + 75: 187, # 'K' + 76: 108, # 'L' + 77: 109, # 'M' + 78: 110, # 'N' + 79: 111, # 'O' + 80: 188, # 'P' + 81: 189, # 'Q' + 82: 190, # 'R' + 83: 89, # 'S' + 84: 95, # 'T' + 85: 112, # 'U' + 86: 113, # 'V' + 87: 191, # 'W' + 88: 192, # 'X' + 89: 193, # 'Y' + 90: 194, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 64, # 'a' + 98: 72, # 'b' + 99: 73, # 'c' + 100: 114, # 'd' + 101: 74, # 'e' + 102: 115, # 'f' + 103: 116, # 'g' + 104: 102, # 'h' + 105: 81, # 'i' + 106: 201, # 'j' + 107: 117, # 'k' + 108: 90, # 'l' + 109: 103, # 'm' + 110: 78, # 'n' + 111: 82, # 'o' + 112: 96, # 'p' + 113: 202, # 'q' + 114: 91, # 'r' + 115: 79, # 's' + 116: 84, # 't' + 117: 104, # 'u' + 118: 105, # 'v' + 119: 97, # 'w' + 120: 98, # 'x' + 121: 92, # 'y' + 122: 203, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 209, # '\x80' + 129: 210, # '\x81' + 130: 211, # '\x82' + 131: 212, # '\x83' + 132: 213, # '\x84' + 133: 88, # '\x85' + 134: 214, # '\x86' + 135: 215, # '\x87' + 136: 216, # '\x88' + 137: 217, # '\x89' + 138: 218, # '\x8a' + 139: 219, # '\x8b' + 140: 220, # '\x8c' + 141: 118, # '\x8d' + 142: 221, # '\x8e' + 143: 222, # '\x8f' + 144: 223, # '\x90' + 145: 224, # '\x91' + 146: 99, # '\x92' + 147: 85, # '\x93' + 148: 83, # '\x94' + 149: 225, # '\x95' + 150: 226, # '\x96' + 151: 227, # '\x97' + 152: 228, # '\x98' + 153: 229, # '\x99' + 154: 230, # '\x9a' + 155: 231, # '\x9b' + 156: 232, # '\x9c' + 157: 233, # '\x9d' + 158: 234, # '\x9e' + 159: 235, # '\x9f' + 160: 236, # None + 161: 5, # 'ก' + 162: 30, # 'ข' + 163: 237, # 'ฃ' + 164: 24, # 'ค' + 165: 238, # 'ฅ' + 166: 75, # 'ฆ' + 167: 8, # 'ง' + 168: 26, # 'จ' + 169: 52, # 'ฉ' + 170: 34, # 'ช' + 171: 51, # 'ซ' + 172: 119, # 'ฌ' + 173: 47, # 'ญ' + 174: 58, # 'ฎ' + 175: 57, # 'ฏ' + 176: 49, # 'ฐ' + 177: 53, # 'ฑ' + 178: 55, # 'ฒ' + 179: 43, # 'ณ' + 180: 20, # 'ด' + 181: 19, # 'ต' + 182: 44, # 'ถ' + 183: 14, # 'ท' + 184: 48, # 'ธ' + 185: 3, # 'น' + 186: 17, # 'บ' + 187: 25, # 'ป' + 188: 39, # 'ผ' + 189: 62, # 'ฝ' + 190: 31, # 'พ' + 191: 54, # 'ฟ' + 192: 45, # 'ภ' + 193: 9, # 'ม' + 194: 16, # 'ย' + 195: 2, # 'ร' + 196: 61, # 'ฤ' + 197: 15, # 'ล' + 198: 239, # 'ฦ' + 199: 12, # 'ว' + 200: 42, # 'ศ' + 201: 46, # 'ษ' + 202: 18, # 'ส' + 203: 21, # 'ห' + 204: 76, # 'ฬ' + 205: 4, # 'อ' + 206: 66, # 'ฮ' + 207: 63, # 'ฯ' + 208: 22, # 'ะ' + 209: 10, # 'ั' + 210: 1, # 'า' + 211: 36, # 'ำ' + 212: 23, # 'ิ' + 213: 13, # 'ี' + 214: 40, # 'ึ' + 215: 27, # 'ื' + 216: 32, # 'ุ' + 217: 35, # 'ู' + 218: 86, # 'ฺ' + 219: 240, # None + 220: 241, # None + 221: 242, # None + 222: 243, # None + 223: 244, # '฿' + 224: 11, # 'เ' + 225: 28, # 'แ' + 226: 41, # 'โ' + 227: 29, # 'ใ' + 228: 33, # 'ไ' + 229: 245, # 'ๅ' + 230: 50, # 'ๆ' + 231: 37, # '็' + 232: 6, # '่' + 233: 7, # '้' + 234: 67, # '๊' + 235: 77, # '๋' + 236: 38, # '์' + 237: 93, # 'ํ' + 238: 246, # '๎' + 239: 247, # '๏' + 240: 68, # '๐' + 241: 56, # '๑' + 242: 59, # '๒' + 243: 65, # '๓' + 244: 69, # '๔' + 245: 60, # '๕' + 246: 70, # '๖' + 247: 80, # '๗' + 248: 71, # '๘' + 249: 87, # '๙' + 250: 248, # '๚' + 251: 249, # '๛' + 252: 250, # None + 253: 251, # None + 254: 252, # None + 255: 253, # None +} + +TIS_620_THAI_MODEL = SingleByteCharSetModel(charset_name='TIS-620', + language='Thai', + char_to_order_map=TIS_620_THAI_CHAR_TO_ORDER, + language_model=THAI_LANG_MODEL, + typical_positive_ratio=0.926386, + keep_ascii_letters=False, + alphabet='กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛') + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langturkishmodel.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langturkishmodel.py new file mode 100644 index 0000000..354b600 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langturkishmodel.py @@ -0,0 +1,4382 @@ +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +TURKISH_LANG_MODEL = { + 23: { # 'A' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 1, # 'i' + 24: 0, # 'j' + 10: 2, # 'k' + 5: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 37: { # 'B' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 2, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 47: { # 'C' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 1, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 2, # 'l' + 13: 2, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 2, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 39: { # 'D' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 1, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 1, # 'Ş' + 19: 0, # 'ş' + }, + 29: { # 'E' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 1, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 1, # 'j' + 10: 0, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 1, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 52: { # 'F' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 1, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 2, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 1, # 'b' + 28: 1, # 'c' + 12: 1, # 'd' + 2: 0, # 'e' + 18: 1, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 1, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 2, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 2, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 2, # 'ş' + }, + 36: { # 'G' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 2, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 2, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 1, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 1, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 0, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 1, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 45: { # 'H' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 2, # 'G' + 45: 1, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 1, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 2, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 1, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 2, # 'ğ' + 41: 1, # 'İ' + 6: 0, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 53: { # 'I' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 2, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 60: { # 'J' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 0, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 1, # 's' + 9: 0, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 16: { # 'K' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 1, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 0, # 'u' + 32: 3, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 49: { # 'L' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 2, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 2, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 0, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 1, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 2, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 1, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 20: { # 'M' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 2, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 0, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 46: { # 'N' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 1, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 1, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 1, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 42: { # 'O' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 1, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 2, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 2, # 'İ' + 6: 1, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 48: { # 'P' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 2, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 0, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 44: { # 'R' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 1, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 2, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 1, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 35: { # 'S' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 1, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 1, # 'l' + 13: 2, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 1, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 2, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 31: { # 'T' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 2, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 1, # 'j' + 10: 2, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 2, # 'r' + 8: 0, # 's' + 9: 2, # 't' + 14: 2, # 'u' + 32: 1, # 'v' + 57: 1, # 'w' + 58: 1, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 51: { # 'U' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 1, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 1, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 38: { # 'V' + 23: 1, # 'A' + 37: 1, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 2, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 1, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 1, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 62: { # 'W' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 0, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 43: { # 'Y' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 1, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 2, # 'N' + 42: 0, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 1, # 'j' + 10: 1, # 'k' + 5: 1, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 1, # 'Ü' + 59: 1, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 0, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 56: { # 'Z' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 2, # 'Z' + 1: 2, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 1, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 1, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 1: { # 'a' + 23: 3, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 2, # 'Z' + 1: 2, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 2, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 3, # 'v' + 57: 2, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 1, # 'î' + 34: 1, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 21: { # 'b' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 3, # 'g' + 25: 1, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 1, # 'r' + 8: 2, # 's' + 9: 2, # 't' + 14: 2, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 28: { # 'c' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 2, # 'E' + 52: 0, # 'F' + 36: 2, # 'G' + 45: 2, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 2, # 'T' + 51: 2, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 3, # 'Y' + 56: 0, # 'Z' + 1: 1, # 'a' + 21: 1, # 'b' + 28: 2, # 'c' + 12: 2, # 'd' + 2: 1, # 'e' + 18: 1, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 1, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 2, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 1, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 1, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 1, # 'î' + 34: 2, # 'ö' + 17: 2, # 'ü' + 30: 2, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 2, # 'ş' + }, + 12: { # 'd' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 2, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 1, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 2, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 1, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 2: { # 'e' + 23: 2, # 'A' + 37: 0, # 'B' + 47: 2, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 2, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 3, # 'v' + 57: 2, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 1, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 18: { # 'f' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 1, # 'i' + 24: 1, # 'j' + 10: 1, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 1, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 1, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 27: { # 'g' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 2, # 'r' + 8: 2, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 25: { # 'h' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 3: { # 'i' + 23: 2, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 1, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 3, # 'g' + 25: 1, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 1, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 1, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 1, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 24: { # 'j' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 1, # 'j' + 10: 2, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 2, # 'r' + 8: 3, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 10: { # 'k' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 1, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 2, # 'r' + 8: 2, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 3, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 5: { # 'l' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 1, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 1, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 2, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 13: { # 'm' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 2, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 2, # 'u' + 32: 2, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 4: { # 'n' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 2, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 1, # 'f' + 27: 2, # 'g' + 25: 3, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 3, # 'p' + 7: 2, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 15: { # 'o' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 2, # 'L' + 20: 0, # 'M' + 46: 2, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 2, # 'ğ' + 41: 2, # 'İ' + 6: 3, # 'ı' + 40: 2, # 'Ş' + 19: 2, # 'ş' + }, + 26: { # 'p' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 1, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 2, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 7: { # 'r' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 2, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 1, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 3, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 8: { # 's' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 2, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 9: { # 't' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 3, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 14: { # 'u' + 23: 3, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 2, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 2, # 'Z' + 1: 2, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 2, # 'e' + 18: 2, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 2, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 32: { # 'v' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 1, # 'j' + 10: 1, # 'k' + 5: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 1, # 'r' + 8: 2, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 57: { # 'w' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 1, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 1, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 1, # 's' + 9: 0, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 2, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 58: { # 'x' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 1, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 1, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 2, # 's' + 9: 1, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 11: { # 'y' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 1, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 2, # 'r' + 8: 1, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 22: { # 'z' + 23: 2, # 'A' + 37: 2, # 'B' + 47: 1, # 'C' + 39: 2, # 'D' + 29: 3, # 'E' + 52: 1, # 'F' + 36: 2, # 'G' + 45: 2, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 2, # 'N' + 42: 2, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 3, # 'T' + 51: 2, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 1, # 'Z' + 1: 1, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 2, # 'd' + 2: 2, # 'e' + 18: 3, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 2, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 0, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 2, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 2, # 'Ü' + 59: 1, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 2, # 'ü' + 30: 2, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 1, # 'Ş' + 19: 2, # 'ş' + }, + 63: { # '·' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 1, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 54: { # 'Ç' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 0, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 0, # 'h' + 3: 3, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 2, # 'r' + 8: 0, # 's' + 9: 1, # 't' + 14: 0, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 2, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 50: { # 'Ö' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 2, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 2, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 1, # 'N' + 42: 2, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 2, # 'd' + 2: 0, # 'e' + 18: 1, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 0, # 'j' + 10: 2, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 3, # 'n' + 15: 2, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 1, # 's' + 9: 2, # 't' + 14: 0, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 2, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 55: { # 'Ü' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 1, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 59: { # 'â' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 1, # 'Ş' + 19: 0, # 'ş' + }, + 33: { # 'ç' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 0, # 'e' + 18: 2, # 'f' + 27: 1, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 0, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 2, # 's' + 9: 3, # 't' + 14: 0, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 61: { # 'î' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 1, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 1, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 34: { # 'ö' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 1, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 2, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 1, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 3, # 's' + 9: 1, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 2, # 'ğ' + 41: 1, # 'İ' + 6: 1, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 17: { # 'ü' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 1, # 'f' + 27: 2, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 1, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 2, # 'r' + 8: 3, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 1, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 30: { # 'ğ' + 23: 0, # 'A' + 37: 2, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 2, # 'N' + 42: 2, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 3, # 'j' + 10: 1, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 2, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 2, # 'İ' + 6: 2, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 41: { # 'İ' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 1, # 'E' + 52: 0, # 'F' + 36: 2, # 'G' + 45: 2, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 1, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 2, # 'd' + 2: 1, # 'e' + 18: 0, # 'f' + 27: 3, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 2, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 2, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 1, # 'Ü' + 59: 1, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 1, # 'ü' + 30: 2, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 6: { # 'ı' + 23: 2, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 2, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 3, # 'v' + 57: 1, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 40: { # 'Ş' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 1, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 2, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 2, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 1, # 'Z' + 1: 0, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 0, # 'e' + 18: 3, # 'f' + 27: 0, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 3, # 'r' + 8: 2, # 's' + 9: 2, # 't' + 14: 1, # 'u' + 32: 3, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 1, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 1, # 'ü' + 30: 2, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 1, # 'Ş' + 19: 2, # 'ş' + }, + 19: { # 'ş' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 2, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 1, # 'h' + 3: 1, # 'i' + 24: 0, # 'j' + 10: 2, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 1, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 1, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +ISO_8859_9_TURKISH_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 255, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 255, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 255, # ' ' + 33: 255, # '!' + 34: 255, # '"' + 35: 255, # '#' + 36: 255, # '$' + 37: 255, # '%' + 38: 255, # '&' + 39: 255, # "'" + 40: 255, # '(' + 41: 255, # ')' + 42: 255, # '*' + 43: 255, # '+' + 44: 255, # ',' + 45: 255, # '-' + 46: 255, # '.' + 47: 255, # '/' + 48: 255, # '0' + 49: 255, # '1' + 50: 255, # '2' + 51: 255, # '3' + 52: 255, # '4' + 53: 255, # '5' + 54: 255, # '6' + 55: 255, # '7' + 56: 255, # '8' + 57: 255, # '9' + 58: 255, # ':' + 59: 255, # ';' + 60: 255, # '<' + 61: 255, # '=' + 62: 255, # '>' + 63: 255, # '?' + 64: 255, # '@' + 65: 23, # 'A' + 66: 37, # 'B' + 67: 47, # 'C' + 68: 39, # 'D' + 69: 29, # 'E' + 70: 52, # 'F' + 71: 36, # 'G' + 72: 45, # 'H' + 73: 53, # 'I' + 74: 60, # 'J' + 75: 16, # 'K' + 76: 49, # 'L' + 77: 20, # 'M' + 78: 46, # 'N' + 79: 42, # 'O' + 80: 48, # 'P' + 81: 69, # 'Q' + 82: 44, # 'R' + 83: 35, # 'S' + 84: 31, # 'T' + 85: 51, # 'U' + 86: 38, # 'V' + 87: 62, # 'W' + 88: 65, # 'X' + 89: 43, # 'Y' + 90: 56, # 'Z' + 91: 255, # '[' + 92: 255, # '\\' + 93: 255, # ']' + 94: 255, # '^' + 95: 255, # '_' + 96: 255, # '`' + 97: 1, # 'a' + 98: 21, # 'b' + 99: 28, # 'c' + 100: 12, # 'd' + 101: 2, # 'e' + 102: 18, # 'f' + 103: 27, # 'g' + 104: 25, # 'h' + 105: 3, # 'i' + 106: 24, # 'j' + 107: 10, # 'k' + 108: 5, # 'l' + 109: 13, # 'm' + 110: 4, # 'n' + 111: 15, # 'o' + 112: 26, # 'p' + 113: 64, # 'q' + 114: 7, # 'r' + 115: 8, # 's' + 116: 9, # 't' + 117: 14, # 'u' + 118: 32, # 'v' + 119: 57, # 'w' + 120: 58, # 'x' + 121: 11, # 'y' + 122: 22, # 'z' + 123: 255, # '{' + 124: 255, # '|' + 125: 255, # '}' + 126: 255, # '~' + 127: 255, # '\x7f' + 128: 180, # '\x80' + 129: 179, # '\x81' + 130: 178, # '\x82' + 131: 177, # '\x83' + 132: 176, # '\x84' + 133: 175, # '\x85' + 134: 174, # '\x86' + 135: 173, # '\x87' + 136: 172, # '\x88' + 137: 171, # '\x89' + 138: 170, # '\x8a' + 139: 169, # '\x8b' + 140: 168, # '\x8c' + 141: 167, # '\x8d' + 142: 166, # '\x8e' + 143: 165, # '\x8f' + 144: 164, # '\x90' + 145: 163, # '\x91' + 146: 162, # '\x92' + 147: 161, # '\x93' + 148: 160, # '\x94' + 149: 159, # '\x95' + 150: 101, # '\x96' + 151: 158, # '\x97' + 152: 157, # '\x98' + 153: 156, # '\x99' + 154: 155, # '\x9a' + 155: 154, # '\x9b' + 156: 153, # '\x9c' + 157: 152, # '\x9d' + 158: 151, # '\x9e' + 159: 106, # '\x9f' + 160: 150, # '\xa0' + 161: 149, # '¡' + 162: 148, # '¢' + 163: 147, # '£' + 164: 146, # '¤' + 165: 145, # '¥' + 166: 144, # '¦' + 167: 100, # '§' + 168: 143, # '¨' + 169: 142, # '©' + 170: 141, # 'ª' + 171: 140, # '«' + 172: 139, # '¬' + 173: 138, # '\xad' + 174: 137, # '®' + 175: 136, # '¯' + 176: 94, # '°' + 177: 80, # '±' + 178: 93, # '²' + 179: 135, # '³' + 180: 105, # '´' + 181: 134, # 'µ' + 182: 133, # '¶' + 183: 63, # '·' + 184: 132, # '¸' + 185: 131, # '¹' + 186: 130, # 'º' + 187: 129, # '»' + 188: 128, # '¼' + 189: 127, # '½' + 190: 126, # '¾' + 191: 125, # '¿' + 192: 124, # 'À' + 193: 104, # 'Á' + 194: 73, # 'Â' + 195: 99, # 'Ã' + 196: 79, # 'Ä' + 197: 85, # 'Å' + 198: 123, # 'Æ' + 199: 54, # 'Ç' + 200: 122, # 'È' + 201: 98, # 'É' + 202: 92, # 'Ê' + 203: 121, # 'Ë' + 204: 120, # 'Ì' + 205: 91, # 'Í' + 206: 103, # 'Î' + 207: 119, # 'Ï' + 208: 68, # 'Ğ' + 209: 118, # 'Ñ' + 210: 117, # 'Ò' + 211: 97, # 'Ó' + 212: 116, # 'Ô' + 213: 115, # 'Õ' + 214: 50, # 'Ö' + 215: 90, # '×' + 216: 114, # 'Ø' + 217: 113, # 'Ù' + 218: 112, # 'Ú' + 219: 111, # 'Û' + 220: 55, # 'Ü' + 221: 41, # 'İ' + 222: 40, # 'Ş' + 223: 86, # 'ß' + 224: 89, # 'à' + 225: 70, # 'á' + 226: 59, # 'â' + 227: 78, # 'ã' + 228: 71, # 'ä' + 229: 82, # 'å' + 230: 88, # 'æ' + 231: 33, # 'ç' + 232: 77, # 'è' + 233: 66, # 'é' + 234: 84, # 'ê' + 235: 83, # 'ë' + 236: 110, # 'ì' + 237: 75, # 'í' + 238: 61, # 'î' + 239: 96, # 'ï' + 240: 30, # 'ğ' + 241: 67, # 'ñ' + 242: 109, # 'ò' + 243: 74, # 'ó' + 244: 87, # 'ô' + 245: 102, # 'õ' + 246: 34, # 'ö' + 247: 95, # '÷' + 248: 81, # 'ø' + 249: 108, # 'ù' + 250: 76, # 'ú' + 251: 72, # 'û' + 252: 17, # 'ü' + 253: 6, # 'ı' + 254: 19, # 'ş' + 255: 107, # 'ÿ' +} + +ISO_8859_9_TURKISH_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-9', + language='Turkish', + char_to_order_map=ISO_8859_9_TURKISH_CHAR_TO_ORDER, + language_model=TURKISH_LANG_MODEL, + typical_positive_ratio=0.97029, + keep_ascii_letters=True, + alphabet='ABCDEFGHIJKLMNOPRSTUVYZabcdefghijklmnoprstuvyzÂÇÎÖÛÜâçîöûüĞğİıŞş') + diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/latin1prober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/latin1prober.py new file mode 100644 index 0000000..7d1e8c2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/latin1prober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState + +FREQ_CAT_NUM = 4 + +UDF = 0 # undefined +OTH = 1 # other +ASC = 2 # ascii capital letter +ASS = 3 # ascii small letter +ACV = 4 # accent capital vowel +ACO = 5 # accent capital other +ASV = 6 # accent small vowel +ASO = 7 # accent small other +CLASS_NUM = 8 # total classes + +Latin1_CharToClass = ( + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F + OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47 + ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F + ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57 + ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F + OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67 + ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F + ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77 + ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F + OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87 + OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F + UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97 + OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF + ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7 + ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF + ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7 + ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF + ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7 + ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF + ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7 + ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF +) + +# 0 : illegal +# 1 : very unlikely +# 2 : normal +# 3 : very likely +Latin1ClassModel = ( +# UDF OTH ASC ASS ACV ACO ASV ASO + 0, 0, 0, 0, 0, 0, 0, 0, # UDF + 0, 3, 3, 3, 3, 3, 3, 3, # OTH + 0, 3, 3, 3, 3, 3, 3, 3, # ASC + 0, 3, 3, 3, 1, 1, 3, 3, # ASS + 0, 3, 3, 3, 1, 2, 1, 2, # ACV + 0, 3, 3, 3, 3, 3, 3, 3, # ACO + 0, 3, 1, 3, 1, 1, 1, 3, # ASV + 0, 3, 1, 3, 1, 1, 3, 3, # ASO +) + + +class Latin1Prober(CharSetProber): + def __init__(self): + super(Latin1Prober, self).__init__() + self._last_char_class = None + self._freq_counter = None + self.reset() + + def reset(self): + self._last_char_class = OTH + self._freq_counter = [0] * FREQ_CAT_NUM + CharSetProber.reset(self) + + @property + def charset_name(self): + return "ISO-8859-1" + + @property + def language(self): + return "" + + def feed(self, byte_str): + byte_str = self.filter_with_english_letters(byte_str) + for c in byte_str: + char_class = Latin1_CharToClass[c] + freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) + + char_class] + if freq == 0: + self._state = ProbingState.NOT_ME + break + self._freq_counter[freq] += 1 + self._last_char_class = char_class + + return self.state + + def get_confidence(self): + if self.state == ProbingState.NOT_ME: + return 0.01 + + total = sum(self._freq_counter) + if total < 0.01: + confidence = 0.0 + else: + confidence = ((self._freq_counter[3] - self._freq_counter[1] * 20.0) + / total) + if confidence < 0.0: + confidence = 0.0 + # lower the confidence of latin1 so that other more accurate + # detector can take priority. + confidence = confidence * 0.73 + return confidence diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcharsetprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcharsetprober.py new file mode 100644 index 0000000..6256ecf --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcharsetprober.py @@ -0,0 +1,91 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState + + +class MultiByteCharSetProber(CharSetProber): + """ + MultiByteCharSetProber + """ + + def __init__(self, lang_filter=None): + super(MultiByteCharSetProber, self).__init__(lang_filter=lang_filter) + self.distribution_analyzer = None + self.coding_sm = None + self._last_char = [0, 0] + + def reset(self): + super(MultiByteCharSetProber, self).reset() + if self.coding_sm: + self.coding_sm.reset() + if self.distribution_analyzer: + self.distribution_analyzer.reset() + self._last_char = [0, 0] + + @property + def charset_name(self): + raise NotImplementedError + + @property + def language(self): + raise NotImplementedError + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.distribution_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + return self.distribution_analyzer.get_confidence() diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcsgroupprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcsgroupprober.py new file mode 100644 index 0000000..530abe7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcsgroupprober.py @@ -0,0 +1,54 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetgroupprober import CharSetGroupProber +from .utf8prober import UTF8Prober +from .sjisprober import SJISProber +from .eucjpprober import EUCJPProber +from .gb2312prober import GB2312Prober +from .euckrprober import EUCKRProber +from .cp949prober import CP949Prober +from .big5prober import Big5Prober +from .euctwprober import EUCTWProber + + +class MBCSGroupProber(CharSetGroupProber): + def __init__(self, lang_filter=None): + super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) + self.probers = [ + UTF8Prober(), + SJISProber(), + EUCJPProber(), + GB2312Prober(), + EUCKRProber(), + CP949Prober(), + Big5Prober(), + EUCTWProber() + ] + self.reset() diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcssm.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcssm.py new file mode 100644 index 0000000..8360d0f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcssm.py @@ -0,0 +1,572 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import MachineState + +# BIG5 + +BIG5_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,1, # 78 - 7f + 4,4,4,4,4,4,4,4, # 80 - 87 + 4,4,4,4,4,4,4,4, # 88 - 8f + 4,4,4,4,4,4,4,4, # 90 - 97 + 4,4,4,4,4,4,4,4, # 98 - 9f + 4,3,3,3,3,3,3,3, # a0 - a7 + 3,3,3,3,3,3,3,3, # a8 - af + 3,3,3,3,3,3,3,3, # b0 - b7 + 3,3,3,3,3,3,3,3, # b8 - bf + 3,3,3,3,3,3,3,3, # c0 - c7 + 3,3,3,3,3,3,3,3, # c8 - cf + 3,3,3,3,3,3,3,3, # d0 - d7 + 3,3,3,3,3,3,3,3, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,3,3,3, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,3,3,0 # f8 - ff +) + +BIG5_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17 +) + +BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0) + +BIG5_SM_MODEL = {'class_table': BIG5_CLS, + 'class_factor': 5, + 'state_table': BIG5_ST, + 'char_len_table': BIG5_CHAR_LEN_TABLE, + 'name': 'Big5'} + +# CP949 + +CP949_CLS = ( + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0, # 00 - 0f + 1,1,1,1,1,1,1,1, 1,1,1,0,1,1,1,1, # 10 - 1f + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 20 - 2f + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 30 - 3f + 1,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4, # 40 - 4f + 4,4,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 50 - 5f + 1,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5, # 60 - 6f + 5,5,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 70 - 7f + 0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 80 - 8f + 6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 90 - 9f + 6,7,7,7,7,7,7,7, 7,7,7,7,7,8,8,8, # a0 - af + 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, # b0 - bf + 7,7,7,7,7,7,9,2, 2,3,2,2,2,2,2,2, # c0 - cf + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # d0 - df + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # e0 - ef + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,0, # f0 - ff +) + +CP949_ST = ( +#cls= 0 1 2 3 4 5 6 7 8 9 # previous state = + MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4 + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5 + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6 +) + +CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) + +CP949_SM_MODEL = {'class_table': CP949_CLS, + 'class_factor': 10, + 'state_table': CP949_ST, + 'char_len_table': CP949_CHAR_LEN_TABLE, + 'name': 'CP949'} + +# EUC-JP + +EUCJP_CLS = ( + 4,4,4,4,4,4,4,4, # 00 - 07 + 4,4,4,4,4,4,5,5, # 08 - 0f + 4,4,4,4,4,4,4,4, # 10 - 17 + 4,4,4,5,4,4,4,4, # 18 - 1f + 4,4,4,4,4,4,4,4, # 20 - 27 + 4,4,4,4,4,4,4,4, # 28 - 2f + 4,4,4,4,4,4,4,4, # 30 - 37 + 4,4,4,4,4,4,4,4, # 38 - 3f + 4,4,4,4,4,4,4,4, # 40 - 47 + 4,4,4,4,4,4,4,4, # 48 - 4f + 4,4,4,4,4,4,4,4, # 50 - 57 + 4,4,4,4,4,4,4,4, # 58 - 5f + 4,4,4,4,4,4,4,4, # 60 - 67 + 4,4,4,4,4,4,4,4, # 68 - 6f + 4,4,4,4,4,4,4,4, # 70 - 77 + 4,4,4,4,4,4,4,4, # 78 - 7f + 5,5,5,5,5,5,5,5, # 80 - 87 + 5,5,5,5,5,5,1,3, # 88 - 8f + 5,5,5,5,5,5,5,5, # 90 - 97 + 5,5,5,5,5,5,5,5, # 98 - 9f + 5,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,2,2,2, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,2,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,0,5 # f8 - ff +) + +EUCJP_ST = ( + 3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f + 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27 +) + +EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0) + +EUCJP_SM_MODEL = {'class_table': EUCJP_CLS, + 'class_factor': 6, + 'state_table': EUCJP_ST, + 'char_len_table': EUCJP_CHAR_LEN_TABLE, + 'name': 'EUC-JP'} + +# EUC-KR + +EUCKR_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 1,1,1,1,1,1,1,1, # 40 - 47 + 1,1,1,1,1,1,1,1, # 48 - 4f + 1,1,1,1,1,1,1,1, # 50 - 57 + 1,1,1,1,1,1,1,1, # 58 - 5f + 1,1,1,1,1,1,1,1, # 60 - 67 + 1,1,1,1,1,1,1,1, # 68 - 6f + 1,1,1,1,1,1,1,1, # 70 - 77 + 1,1,1,1,1,1,1,1, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,3,3,3, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,3,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 2,2,2,2,2,2,2,2, # e0 - e7 + 2,2,2,2,2,2,2,2, # e8 - ef + 2,2,2,2,2,2,2,2, # f0 - f7 + 2,2,2,2,2,2,2,0 # f8 - ff +) + +EUCKR_ST = ( + MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f +) + +EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0) + +EUCKR_SM_MODEL = {'class_table': EUCKR_CLS, + 'class_factor': 4, + 'state_table': EUCKR_ST, + 'char_len_table': EUCKR_CHAR_LEN_TABLE, + 'name': 'EUC-KR'} + +# EUC-TW + +EUCTW_CLS = ( + 2,2,2,2,2,2,2,2, # 00 - 07 + 2,2,2,2,2,2,0,0, # 08 - 0f + 2,2,2,2,2,2,2,2, # 10 - 17 + 2,2,2,0,2,2,2,2, # 18 - 1f + 2,2,2,2,2,2,2,2, # 20 - 27 + 2,2,2,2,2,2,2,2, # 28 - 2f + 2,2,2,2,2,2,2,2, # 30 - 37 + 2,2,2,2,2,2,2,2, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,2, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,6,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,3,4,4,4,4,4,4, # a0 - a7 + 5,5,1,1,1,1,1,1, # a8 - af + 1,1,1,1,1,1,1,1, # b0 - b7 + 1,1,1,1,1,1,1,1, # b8 - bf + 1,1,3,1,3,3,3,3, # c0 - c7 + 3,3,3,3,3,3,3,3, # c8 - cf + 3,3,3,3,3,3,3,3, # d0 - d7 + 3,3,3,3,3,3,3,3, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,3,3,3, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,3,3,0 # f8 - ff +) + +EUCTW_ST = ( + MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17 + MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27 + MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f +) + +EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3) + +EUCTW_SM_MODEL = {'class_table': EUCTW_CLS, + 'class_factor': 7, + 'state_table': EUCTW_ST, + 'char_len_table': EUCTW_CHAR_LEN_TABLE, + 'name': 'x-euc-tw'} + +# GB2312 + +GB2312_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 3,3,3,3,3,3,3,3, # 30 - 37 + 3,3,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,4, # 78 - 7f + 5,6,6,6,6,6,6,6, # 80 - 87 + 6,6,6,6,6,6,6,6, # 88 - 8f + 6,6,6,6,6,6,6,6, # 90 - 97 + 6,6,6,6,6,6,6,6, # 98 - 9f + 6,6,6,6,6,6,6,6, # a0 - a7 + 6,6,6,6,6,6,6,6, # a8 - af + 6,6,6,6,6,6,6,6, # b0 - b7 + 6,6,6,6,6,6,6,6, # b8 - bf + 6,6,6,6,6,6,6,6, # c0 - c7 + 6,6,6,6,6,6,6,6, # c8 - cf + 6,6,6,6,6,6,6,6, # d0 - d7 + 6,6,6,6,6,6,6,6, # d8 - df + 6,6,6,6,6,6,6,6, # e0 - e7 + 6,6,6,6,6,6,6,6, # e8 - ef + 6,6,6,6,6,6,6,6, # f0 - f7 + 6,6,6,6,6,6,6,0 # f8 - ff +) + +GB2312_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17 + 4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f +) + +# To be accurate, the length of class 6 can be either 2 or 4. +# But it is not necessary to discriminate between the two since +# it is used for frequency analysis only, and we are validating +# each code range there as well. So it is safe to set it to be +# 2 here. +GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2) + +GB2312_SM_MODEL = {'class_table': GB2312_CLS, + 'class_factor': 7, + 'state_table': GB2312_ST, + 'char_len_table': GB2312_CHAR_LEN_TABLE, + 'name': 'GB2312'} + +# Shift_JIS + +SJIS_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,1, # 78 - 7f + 3,3,3,3,3,2,2,3, # 80 - 87 + 3,3,3,3,3,3,3,3, # 88 - 8f + 3,3,3,3,3,3,3,3, # 90 - 97 + 3,3,3,3,3,3,3,3, # 98 - 9f + #0xa0 is illegal in sjis encoding, but some pages does + #contain such byte. We need to be more error forgiven. + 2,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,2,2,2, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,2,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,4,4,4, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,0,0,0) # f8 - ff + + +SJIS_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17 +) + +SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0) + +SJIS_SM_MODEL = {'class_table': SJIS_CLS, + 'class_factor': 6, + 'state_table': SJIS_ST, + 'char_len_table': SJIS_CHAR_LEN_TABLE, + 'name': 'Shift_JIS'} + +# UCS2-BE + +UCS2BE_CLS = ( + 0,0,0,0,0,0,0,0, # 00 - 07 + 0,0,1,0,0,2,0,0, # 08 - 0f + 0,0,0,0,0,0,0,0, # 10 - 17 + 0,0,0,3,0,0,0,0, # 18 - 1f + 0,0,0,0,0,0,0,0, # 20 - 27 + 0,3,3,3,3,3,0,0, # 28 - 2f + 0,0,0,0,0,0,0,0, # 30 - 37 + 0,0,0,0,0,0,0,0, # 38 - 3f + 0,0,0,0,0,0,0,0, # 40 - 47 + 0,0,0,0,0,0,0,0, # 48 - 4f + 0,0,0,0,0,0,0,0, # 50 - 57 + 0,0,0,0,0,0,0,0, # 58 - 5f + 0,0,0,0,0,0,0,0, # 60 - 67 + 0,0,0,0,0,0,0,0, # 68 - 6f + 0,0,0,0,0,0,0,0, # 70 - 77 + 0,0,0,0,0,0,0,0, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,0,0,0,0,0,0,0, # a0 - a7 + 0,0,0,0,0,0,0,0, # a8 - af + 0,0,0,0,0,0,0,0, # b0 - b7 + 0,0,0,0,0,0,0,0, # b8 - bf + 0,0,0,0,0,0,0,0, # c0 - c7 + 0,0,0,0,0,0,0,0, # c8 - cf + 0,0,0,0,0,0,0,0, # d0 - d7 + 0,0,0,0,0,0,0,0, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,4,5 # f8 - ff +) + +UCS2BE_ST = ( + 5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17 + 6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f + 6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27 + 5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f + 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37 +) + +UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2) + +UCS2BE_SM_MODEL = {'class_table': UCS2BE_CLS, + 'class_factor': 6, + 'state_table': UCS2BE_ST, + 'char_len_table': UCS2BE_CHAR_LEN_TABLE, + 'name': 'UTF-16BE'} + +# UCS2-LE + +UCS2LE_CLS = ( + 0,0,0,0,0,0,0,0, # 00 - 07 + 0,0,1,0,0,2,0,0, # 08 - 0f + 0,0,0,0,0,0,0,0, # 10 - 17 + 0,0,0,3,0,0,0,0, # 18 - 1f + 0,0,0,0,0,0,0,0, # 20 - 27 + 0,3,3,3,3,3,0,0, # 28 - 2f + 0,0,0,0,0,0,0,0, # 30 - 37 + 0,0,0,0,0,0,0,0, # 38 - 3f + 0,0,0,0,0,0,0,0, # 40 - 47 + 0,0,0,0,0,0,0,0, # 48 - 4f + 0,0,0,0,0,0,0,0, # 50 - 57 + 0,0,0,0,0,0,0,0, # 58 - 5f + 0,0,0,0,0,0,0,0, # 60 - 67 + 0,0,0,0,0,0,0,0, # 68 - 6f + 0,0,0,0,0,0,0,0, # 70 - 77 + 0,0,0,0,0,0,0,0, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,0,0,0,0,0,0,0, # a0 - a7 + 0,0,0,0,0,0,0,0, # a8 - af + 0,0,0,0,0,0,0,0, # b0 - b7 + 0,0,0,0,0,0,0,0, # b8 - bf + 0,0,0,0,0,0,0,0, # c0 - c7 + 0,0,0,0,0,0,0,0, # c8 - cf + 0,0,0,0,0,0,0,0, # d0 - d7 + 0,0,0,0,0,0,0,0, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,4,5 # f8 - ff +) + +UCS2LE_ST = ( + 6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17 + 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f + 7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27 + 5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f + 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37 +) + +UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2) + +UCS2LE_SM_MODEL = {'class_table': UCS2LE_CLS, + 'class_factor': 6, + 'state_table': UCS2LE_ST, + 'char_len_table': UCS2LE_CHAR_LEN_TABLE, + 'name': 'UTF-16LE'} + +# UTF-8 + +UTF8_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 1,1,1,1,1,1,1,1, # 40 - 47 + 1,1,1,1,1,1,1,1, # 48 - 4f + 1,1,1,1,1,1,1,1, # 50 - 57 + 1,1,1,1,1,1,1,1, # 58 - 5f + 1,1,1,1,1,1,1,1, # 60 - 67 + 1,1,1,1,1,1,1,1, # 68 - 6f + 1,1,1,1,1,1,1,1, # 70 - 77 + 1,1,1,1,1,1,1,1, # 78 - 7f + 2,2,2,2,3,3,3,3, # 80 - 87 + 4,4,4,4,4,4,4,4, # 88 - 8f + 4,4,4,4,4,4,4,4, # 90 - 97 + 4,4,4,4,4,4,4,4, # 98 - 9f + 5,5,5,5,5,5,5,5, # a0 - a7 + 5,5,5,5,5,5,5,5, # a8 - af + 5,5,5,5,5,5,5,5, # b0 - b7 + 5,5,5,5,5,5,5,5, # b8 - bf + 0,0,6,6,6,6,6,6, # c0 - c7 + 6,6,6,6,6,6,6,6, # c8 - cf + 6,6,6,6,6,6,6,6, # d0 - d7 + 6,6,6,6,6,6,6,6, # d8 - df + 7,8,8,8,8,8,8,8, # e0 - e7 + 8,8,8,8,8,9,8,8, # e8 - ef + 10,11,11,11,11,11,11,11, # f0 - f7 + 12,13,13,13,14,15,0,0 # f8 - ff +) + +UTF8_ST = ( + MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07 + 9, 11, 8, 7, 6, 5, 4, 3,#08-0f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27 + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f + MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f + MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f + MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f + MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af + MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf +) + +UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) + +UTF8_SM_MODEL = {'class_table': UTF8_CLS, + 'class_factor': 16, + 'state_table': UTF8_ST, + 'char_len_table': UTF8_CHAR_LEN_TABLE, + 'name': 'UTF-8'} diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b74a8b6014f2f21f6a97b6886a22b5738f0f2d1 GIT binary patch literal 216 zcmYk0u?@mN3`Gx#0wFO71#v-zgb)+ZFu=*-3^61*>+X^$1q)EK1S`=p0v#1j1z-Bl zvSoi6XS1nM-R{|WsILM48fmjt$Fahhy_t`84-#a6leK$P> literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75117ebab0d67ac65e517a98d58358205da3bfba GIT binary patch literal 7947 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 self.SB_ENOUGH_REL_THRESHOLD: + confidence = self.get_confidence() + if confidence > self.POSITIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, we have a winner', + charset_name, confidence) + self._state = ProbingState.FOUND_IT + elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, below negative ' + 'shortcut threshhold %s', charset_name, + confidence, + self.NEGATIVE_SHORTCUT_THRESHOLD) + self._state = ProbingState.NOT_ME + + return self.state + + def get_confidence(self): + r = 0.01 + if self._total_seqs > 0: + r = ((1.0 * self._seq_counters[SequenceLikelihood.POSITIVE]) / + self._total_seqs / self._model.typical_positive_ratio) + r = r * self._freq_char / self._total_char + if r >= 1.0: + r = 0.99 + return r diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcsgroupprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcsgroupprober.py new file mode 100644 index 0000000..bdeef4e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcsgroupprober.py @@ -0,0 +1,83 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetgroupprober import CharSetGroupProber +from .hebrewprober import HebrewProber +from .langbulgarianmodel import (ISO_8859_5_BULGARIAN_MODEL, + WINDOWS_1251_BULGARIAN_MODEL) +from .langgreekmodel import ISO_8859_7_GREEK_MODEL, WINDOWS_1253_GREEK_MODEL +from .langhebrewmodel import WINDOWS_1255_HEBREW_MODEL +# from .langhungarianmodel import (ISO_8859_2_HUNGARIAN_MODEL, +# WINDOWS_1250_HUNGARIAN_MODEL) +from .langrussianmodel import (IBM855_RUSSIAN_MODEL, IBM866_RUSSIAN_MODEL, + ISO_8859_5_RUSSIAN_MODEL, KOI8_R_RUSSIAN_MODEL, + MACCYRILLIC_RUSSIAN_MODEL, + WINDOWS_1251_RUSSIAN_MODEL) +from .langthaimodel import TIS_620_THAI_MODEL +from .langturkishmodel import ISO_8859_9_TURKISH_MODEL +from .sbcharsetprober import SingleByteCharSetProber + + +class SBCSGroupProber(CharSetGroupProber): + def __init__(self): + super(SBCSGroupProber, self).__init__() + hebrew_prober = HebrewProber() + logical_hebrew_prober = SingleByteCharSetProber(WINDOWS_1255_HEBREW_MODEL, + False, hebrew_prober) + # TODO: See if using ISO-8859-8 Hebrew model works better here, since + # it's actually the visual one + visual_hebrew_prober = SingleByteCharSetProber(WINDOWS_1255_HEBREW_MODEL, + True, hebrew_prober) + hebrew_prober.set_model_probers(logical_hebrew_prober, + visual_hebrew_prober) + # TODO: ORDER MATTERS HERE. I changed the order vs what was in master + # and several tests failed that did not before. Some thought + # should be put into the ordering, and we should consider making + # order not matter here, because that is very counter-intuitive. + self.probers = [ + SingleByteCharSetProber(WINDOWS_1251_RUSSIAN_MODEL), + SingleByteCharSetProber(KOI8_R_RUSSIAN_MODEL), + SingleByteCharSetProber(ISO_8859_5_RUSSIAN_MODEL), + SingleByteCharSetProber(MACCYRILLIC_RUSSIAN_MODEL), + SingleByteCharSetProber(IBM866_RUSSIAN_MODEL), + SingleByteCharSetProber(IBM855_RUSSIAN_MODEL), + SingleByteCharSetProber(ISO_8859_7_GREEK_MODEL), + SingleByteCharSetProber(WINDOWS_1253_GREEK_MODEL), + SingleByteCharSetProber(ISO_8859_5_BULGARIAN_MODEL), + SingleByteCharSetProber(WINDOWS_1251_BULGARIAN_MODEL), + # TODO: Restore Hungarian encodings (iso-8859-2 and windows-1250) + # after we retrain model. + # SingleByteCharSetProber(ISO_8859_2_HUNGARIAN_MODEL), + # SingleByteCharSetProber(WINDOWS_1250_HUNGARIAN_MODEL), + SingleByteCharSetProber(TIS_620_THAI_MODEL), + SingleByteCharSetProber(ISO_8859_9_TURKISH_MODEL), + hebrew_prober, + logical_hebrew_prober, + visual_hebrew_prober, + ] + self.reset() diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sjisprober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sjisprober.py new file mode 100644 index 0000000..9e29623 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sjisprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import SJISDistributionAnalysis +from .jpcntx import SJISContextAnalysis +from .mbcssm import SJIS_SM_MODEL +from .enums import ProbingState, MachineState + + +class SJISProber(MultiByteCharSetProber): + def __init__(self): + super(SJISProber, self).__init__() + self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) + self.distribution_analyzer = SJISDistributionAnalysis() + self.context_analyzer = SJISContextAnalysis() + self.reset() + + def reset(self): + super(SJISProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return self.context_analyzer.charset_name + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char[2 - char_len:], + char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i + 1 - char_len:i + 3 + - char_len], char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/universaldetector.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/universaldetector.py new file mode 100644 index 0000000..055a8ac --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/universaldetector.py @@ -0,0 +1,286 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### +""" +Module containing the UniversalDetector detector class, which is the primary +class a user of ``chardet`` should use. + +:author: Mark Pilgrim (initial port to Python) +:author: Shy Shalom (original C code) +:author: Dan Blanchard (major refactoring for 3.0) +:author: Ian Cordasco +""" + + +import codecs +import logging +import re + +from .charsetgroupprober import CharSetGroupProber +from .enums import InputState, LanguageFilter, ProbingState +from .escprober import EscCharSetProber +from .latin1prober import Latin1Prober +from .mbcsgroupprober import MBCSGroupProber +from .sbcsgroupprober import SBCSGroupProber + + +class UniversalDetector(object): + """ + The ``UniversalDetector`` class underlies the ``chardet.detect`` function + and coordinates all of the different charset probers. + + To get a ``dict`` containing an encoding and its confidence, you can simply + run: + + .. code:: + + u = UniversalDetector() + u.feed(some_bytes) + u.close() + detected = u.result + + """ + + MINIMUM_THRESHOLD = 0.20 + HIGH_BYTE_DETECTOR = re.compile(b'[\x80-\xFF]') + ESC_DETECTOR = re.compile(b'(\033|~{)') + WIN_BYTE_DETECTOR = re.compile(b'[\x80-\x9F]') + ISO_WIN_MAP = {'iso-8859-1': 'Windows-1252', + 'iso-8859-2': 'Windows-1250', + 'iso-8859-5': 'Windows-1251', + 'iso-8859-6': 'Windows-1256', + 'iso-8859-7': 'Windows-1253', + 'iso-8859-8': 'Windows-1255', + 'iso-8859-9': 'Windows-1254', + 'iso-8859-13': 'Windows-1257'} + + def __init__(self, lang_filter=LanguageFilter.ALL): + self._esc_charset_prober = None + self._charset_probers = [] + self.result = None + self.done = None + self._got_data = None + self._input_state = None + self._last_char = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + self._has_win_bytes = None + self.reset() + + def reset(self): + """ + Reset the UniversalDetector and all of its probers back to their + initial states. This is called by ``__init__``, so you only need to + call this directly in between analyses of different documents. + """ + self.result = {'encoding': None, 'confidence': 0.0, 'language': None} + self.done = False + self._got_data = False + self._has_win_bytes = False + self._input_state = InputState.PURE_ASCII + self._last_char = b'' + if self._esc_charset_prober: + self._esc_charset_prober.reset() + for prober in self._charset_probers: + prober.reset() + + def feed(self, byte_str): + """ + Takes a chunk of a document and feeds it through all of the relevant + charset probers. + + After calling ``feed``, you can check the value of the ``done`` + attribute to see if you need to continue feeding the + ``UniversalDetector`` more data, or if it has made a prediction + (in the ``result`` attribute). + + .. note:: + You should always call ``close`` when you're done feeding in your + document if ``done`` is not already ``True``. + """ + if self.done: + return + + if not len(byte_str): + return + + if not isinstance(byte_str, bytearray): + byte_str = bytearray(byte_str) + + # First check for known BOMs, since these are guaranteed to be correct + if not self._got_data: + # If the data starts with BOM, we know it is UTF + if byte_str.startswith(codecs.BOM_UTF8): + # EF BB BF UTF-8 with BOM + self.result = {'encoding': "UTF-8-SIG", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_UTF32_LE, + codecs.BOM_UTF32_BE)): + # FF FE 00 00 UTF-32, little-endian BOM + # 00 00 FE FF UTF-32, big-endian BOM + self.result = {'encoding': "UTF-32", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\xFE\xFF\x00\x00'): + # FE FF 00 00 UCS-4, unusual octet order BOM (3412) + self.result = {'encoding': "X-ISO-10646-UCS-4-3412", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\x00\x00\xFF\xFE'): + # 00 00 FF FE UCS-4, unusual octet order BOM (2143) + self.result = {'encoding': "X-ISO-10646-UCS-4-2143", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_LE, codecs.BOM_BE)): + # FF FE UTF-16, little endian BOM + # FE FF UTF-16, big endian BOM + self.result = {'encoding': "UTF-16", + 'confidence': 1.0, + 'language': ''} + + self._got_data = True + if self.result['encoding'] is not None: + self.done = True + return + + # If none of those matched and we've only see ASCII so far, check + # for high bytes and escape sequences + if self._input_state == InputState.PURE_ASCII: + if self.HIGH_BYTE_DETECTOR.search(byte_str): + self._input_state = InputState.HIGH_BYTE + elif self._input_state == InputState.PURE_ASCII and \ + self.ESC_DETECTOR.search(self._last_char + byte_str): + self._input_state = InputState.ESC_ASCII + + self._last_char = byte_str[-1:] + + # If we've seen escape sequences, use the EscCharSetProber, which + # uses a simple state machine to check for known escape sequences in + # HZ and ISO-2022 encodings, since those are the only encodings that + # use such sequences. + if self._input_state == InputState.ESC_ASCII: + if not self._esc_charset_prober: + self._esc_charset_prober = EscCharSetProber(self.lang_filter) + if self._esc_charset_prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': + self._esc_charset_prober.charset_name, + 'confidence': + self._esc_charset_prober.get_confidence(), + 'language': + self._esc_charset_prober.language} + self.done = True + # If we've seen high bytes (i.e., those with values greater than 127), + # we need to do more complicated checks using all our multi-byte and + # single-byte probers that are left. The single-byte probers + # use character bigram distributions to determine the encoding, whereas + # the multi-byte probers use a combination of character unigram and + # bigram distributions. + elif self._input_state == InputState.HIGH_BYTE: + if not self._charset_probers: + self._charset_probers = [MBCSGroupProber(self.lang_filter)] + # If we're checking non-CJK encodings, use single-byte prober + if self.lang_filter & LanguageFilter.NON_CJK: + self._charset_probers.append(SBCSGroupProber()) + self._charset_probers.append(Latin1Prober()) + for prober in self._charset_probers: + if prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': prober.charset_name, + 'confidence': prober.get_confidence(), + 'language': prober.language} + self.done = True + break + if self.WIN_BYTE_DETECTOR.search(byte_str): + self._has_win_bytes = True + + def close(self): + """ + Stop analyzing the current document and come up with a final + prediction. + + :returns: The ``result`` attribute, a ``dict`` with the keys + `encoding`, `confidence`, and `language`. + """ + # Don't bother with checks if we're already done + if self.done: + return self.result + self.done = True + + if not self._got_data: + self.logger.debug('no data received!') + + # Default to ASCII if it is all we've seen so far + elif self._input_state == InputState.PURE_ASCII: + self.result = {'encoding': 'ascii', + 'confidence': 1.0, + 'language': ''} + + # If we have seen non-ASCII, return the best that met MINIMUM_THRESHOLD + elif self._input_state == InputState.HIGH_BYTE: + prober_confidence = None + max_prober_confidence = 0.0 + max_prober = None + for prober in self._charset_probers: + if not prober: + continue + prober_confidence = prober.get_confidence() + if prober_confidence > max_prober_confidence: + max_prober_confidence = prober_confidence + max_prober = prober + if max_prober and (max_prober_confidence > self.MINIMUM_THRESHOLD): + charset_name = max_prober.charset_name + lower_charset_name = max_prober.charset_name.lower() + confidence = max_prober.get_confidence() + # Use Windows encoding name instead of ISO-8859 if we saw any + # extra Windows-specific bytes + if lower_charset_name.startswith('iso-8859'): + if self._has_win_bytes: + charset_name = self.ISO_WIN_MAP.get(lower_charset_name, + charset_name) + self.result = {'encoding': charset_name, + 'confidence': confidence, + 'language': max_prober.language} + + # Log all prober confidences if none met MINIMUM_THRESHOLD + if self.logger.getEffectiveLevel() <= logging.DEBUG: + if self.result['encoding'] is None: + self.logger.debug('no probers hit minimum threshold') + for group_prober in self._charset_probers: + if not group_prober: + continue + if isinstance(group_prober, CharSetGroupProber): + for prober in group_prober.probers: + self.logger.debug('%s %s confidence = %s', + prober.charset_name, + prober.language, + prober.get_confidence()) + else: + self.logger.debug('%s %s confidence = %s', + group_prober.charset_name, + group_prober.language, + group_prober.get_confidence()) + return self.result diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/utf8prober.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/utf8prober.py new file mode 100644 index 0000000..6c3196c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/utf8prober.py @@ -0,0 +1,82 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState +from .codingstatemachine import CodingStateMachine +from .mbcssm import UTF8_SM_MODEL + + + +class UTF8Prober(CharSetProber): + ONE_CHAR_PROB = 0.5 + + def __init__(self): + super(UTF8Prober, self).__init__() + self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) + self._num_mb_chars = None + self.reset() + + def reset(self): + super(UTF8Prober, self).reset() + self.coding_sm.reset() + self._num_mb_chars = 0 + + @property + def charset_name(self): + return "utf-8" + + @property + def language(self): + return "" + + def feed(self, byte_str): + for c in byte_str: + coding_state = self.coding_sm.next_state(c) + if coding_state == MachineState.ERROR: + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + if self.coding_sm.get_current_charlen() >= 2: + self._num_mb_chars += 1 + + if self.state == ProbingState.DETECTING: + if self.get_confidence() > self.SHORTCUT_THRESHOLD: + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + unlike = 0.99 + if self._num_mb_chars < 6: + unlike *= self.ONE_CHAR_PROB ** self._num_mb_chars + return 1.0 - unlike + else: + return unlike diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/version.py b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/version.py new file mode 100644 index 0000000..70369b9 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/version.py @@ -0,0 +1,9 @@ +""" +This module exists only to simplify retrieving the version number of chardet +from within setup.py and from chardet subpackages. + +:author: Dan Blanchard (dan.blanchard@gmail.com) +""" + +__version__ = "4.0.0" +VERSION = __version__.split('.') diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__init__.py new file mode 100644 index 0000000..b149ed7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__init__.py @@ -0,0 +1,6 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from .initialise import init, deinit, reinit, colorama_text +from .ansi import Fore, Back, Style, Cursor +from .ansitowin32 import AnsiToWin32 + +__version__ = '0.4.4' diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81bdfc9e5b0c4cd6adfd2651ed93ea184a4d4407 GIT binary patch literal 459 zcmYjNxlRKy5Zyb+vZBo|q+pFm8YG0cL`f4QBsZ3mHN=U%wrp=g_ylTxf?sk=MMY1A zhX{$0{Kj*=(HmM-!zkG6TfO=U{sV&lmW1FUJbM$MiJDkMGRCn?a3WKj$_!^Qn-7;vPUBU;vd8Do$;I(7e%?WR})HLLg3r6PDvIf-~)^3pCbEJ1}soF_>io!m2q=P*A#4OTWqp+}T hltF)|KqOFcM@X%AzJDfF(+PGC!YpVQ#iRHj`2lG7e}n)4 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0394a670608a80f966de48c5b024eb6ec914fdf GIT binary patch literal 3244 zcmc&$OK;mo5ayDUL{U#Gj@=|htG>{vZA3Hy3N$GK%d+CQQDnoi;f86-(%OwhTb7jN zI<5@|DBzrW?hi(Fr1Ko@8c=%S)+peJYv=n_irBgspDLTh8hnkybS-=9z z0T!7JI6Jjj_gTCJjt9F~QyXCGB!@G{d`qkZFD;P2w_|*a5aFB9PuE)ZTKV%*X zwfFTKPhmcLM^YUEJ{t{O8!+oI!yQrB{ z{!6D9tUJR!(H->fRKIt^K(Jdwzq93Uu+SL>L&t+%bif_u1b^Fi{C*fzhkG)I`aLo5 z&~;%Jzg-8=2!~|R&KQWiF$2-C18o`%Ju+}#zkRO)7B05y(wJ>D!NPj4X;8MtqGy1Zf9`m^ub~t1G(wItIUqag>rHx~p zPn%}Ps(L}6T^&<2iHcyJ7-;JZ%n-RugUZvO@}T~p+6-zy(wH(`gILwUrtrjfqP0nw zb$tCh00E&mBy-xco3F?Lc|$1qi-eZY53~bvsK3&Mfh%Di=!fLcAleIyj zJ3Jil2rIvXksJ+NqdFCu<5oaUwSrolusXj1TP5j_nWjoaUtRhFI7hXypL?&dy1H}; zeY0`OqRi8(%(=z2)|X?-3S-KUcL{a%i`AtbEH1Crmgg#C8sofB4y_)sFQIhqVx{J6 zt^VliF^%IkBCmrX8x33^hwwunR5yppiMu&;_BfonYJ5iP9l0mTL#4f997XguN%l^A z+E`j_-vV)?sOHBU4Xjp$@XvsK{!LfBc!R}1hJCz@@CgEjkE2I98p%-!zm1^k^Xv$4f%e86R z%~0FT(u|vT8(K0xd3IoJ`CwHySOOe9~w( z7uTdY+gxqP)Z^NGqqS0#X8lR6B@=587gicFvD|1kR%EWZF#m8xiSQaf$&4aF6cRB{ zi9|B5c(G`tvq!J4HjpYP>PXdlHmXD_mZek!d2Sf*fPLS>4ADszF;8E{$tN85|3BfK zh0{oM6VykTqS03fn5WS<2$-x<6~RG3lOl@15S}A!AaoG|giVAkfEI56p6i`8V9dk( zuinA^7kdYrz{SZAiJXl8)NQc`#~n;qo(G7g5MXMpO6qhXCTEv1m!vVb@K`2Wi_4E| zO_^3{=GB_bbFD)2G1t{^brf@sPqBHR%F(SPQ=Uf$9na%<%I8??JcE!%z{3{D;}6Hf zhfEIEH(5uhpQq{rDqA=@MM;+?mM9bmL{cV{l`>gZ4g0+Bl-3XNZ~VRv62dZonNaCy USa8{fZ5A`dTyYAnWRl?Z4-1rgS^xk5 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f05bc18a7bb063094b488aa7845850d1c3c74673 GIT binary patch literal 7710 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53363233da37fee27405de8f8ed19db39a051d92 GIT binary patch literal 1726 zcma)6OOG2x5bo}IcxdOh1~-}f)hVrSK^YtG*?df3tU1~JNt?hi5^vTS9eWM%~xNQ?DaYf$M1jbOn+%H z_7531M~KF^DAu7;O!0yZS2G`SZ;PQ&LIp)I3x^>`4;i7vC@qvkg|e+86`!$TM{TJ@ zwa@slt2(NSJ8POxdumPf&e$m*_Elf4ZvJrKi?bC(aj;y_#VZ6h{|E0a}Mu0=J+W;7Z(h}V~^QOzMlpVphwfKz>IV2R5f=^ z8?@CfmqqcC0fMno|1PpgHPe}?kF1^7bp|S#uT5^sg#?v9Glk9%rPV6i zIo9QIR+z)AK5>((+}-&yv&QL9YdJcSV{NnA)LD*Rs)B4(6&1*t%uH#Vk%h5(r#^ug zL)b#Glmx~T?spDG-lQ!Yv?f3Q)4$ZpTZjHl>GaRW<*F)m6R(UW0X;U> z;W?q1hD}?}UF8YUv@rH#4X%msMpHK--F{6FNGPt5a`yqQ>?f$0*y2eP^H_9v9Q0o& zmvb2M4u_A>aFi?#_gsKhNbmwBK8-vk(8V>Zk?ND`k-FmVYUN{$ zm8K|n@!Zk|aVjQWZR7e@JXA+?Lxo}=q9RHeB-P*iPfYUj4aJ^dH9e)u!nsUV^Jl)k zRVJ+`;3fgH)#+VCV8MHC>7A)>R8?x4vbr80UHB!SoPP zm-2;ko%5#u=Bk-2vEhMFA`o)^vp2%@O!YiSzMfTTUg&Qqx4w=NWM?AQ0t{Pt36iLD LFKJ;FB}wZ)fNyHn literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2285e4f6c484798c992ed9046370b920a2af2129 GIT binary patch literal 3958 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2e33dd504e39f569fa73d48d75d4623da5b53215 GIT binary patch literal 4680 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 U=aclGB%hKSRBc{1E2WC{KR467!~g&Q literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansi.py b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansi.py new file mode 100644 index 0000000..11ec695 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansi.py @@ -0,0 +1,102 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +''' +This module generates ANSI character codes to printing colors to terminals. +See: http://en.wikipedia.org/wiki/ANSI_escape_code +''' + +CSI = '\033[' +OSC = '\033]' +BEL = '\a' + + +def code_to_chars(code): + return CSI + str(code) + 'm' + +def set_title(title): + return OSC + '2;' + title + BEL + +def clear_screen(mode=2): + return CSI + str(mode) + 'J' + +def clear_line(mode=2): + return CSI + str(mode) + 'K' + + +class AnsiCodes(object): + def __init__(self): + # the subclasses declare class attributes which are numbers. + # Upon instantiation we define instance attributes, which are the same + # as the class attributes but wrapped with the ANSI escape sequence + for name in dir(self): + if not name.startswith('_'): + value = getattr(self, name) + setattr(self, name, code_to_chars(value)) + + +class AnsiCursor(object): + def UP(self, n=1): + return CSI + str(n) + 'A' + def DOWN(self, n=1): + return CSI + str(n) + 'B' + def FORWARD(self, n=1): + return CSI + str(n) + 'C' + def BACK(self, n=1): + return CSI + str(n) + 'D' + def POS(self, x=1, y=1): + return CSI + str(y) + ';' + str(x) + 'H' + + +class AnsiFore(AnsiCodes): + BLACK = 30 + RED = 31 + GREEN = 32 + YELLOW = 33 + BLUE = 34 + MAGENTA = 35 + CYAN = 36 + WHITE = 37 + RESET = 39 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 90 + LIGHTRED_EX = 91 + LIGHTGREEN_EX = 92 + LIGHTYELLOW_EX = 93 + LIGHTBLUE_EX = 94 + LIGHTMAGENTA_EX = 95 + LIGHTCYAN_EX = 96 + LIGHTWHITE_EX = 97 + + +class AnsiBack(AnsiCodes): + BLACK = 40 + RED = 41 + GREEN = 42 + YELLOW = 43 + BLUE = 44 + MAGENTA = 45 + CYAN = 46 + WHITE = 47 + RESET = 49 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 100 + LIGHTRED_EX = 101 + LIGHTGREEN_EX = 102 + LIGHTYELLOW_EX = 103 + LIGHTBLUE_EX = 104 + LIGHTMAGENTA_EX = 105 + LIGHTCYAN_EX = 106 + LIGHTWHITE_EX = 107 + + +class AnsiStyle(AnsiCodes): + BRIGHT = 1 + DIM = 2 + NORMAL = 22 + RESET_ALL = 0 + +Fore = AnsiFore() +Back = AnsiBack() +Style = AnsiStyle() +Cursor = AnsiCursor() diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansitowin32.py b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansitowin32.py new file mode 100644 index 0000000..6039a05 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansitowin32.py @@ -0,0 +1,258 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import re +import sys +import os + +from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style, BEL +from .winterm import WinTerm, WinColor, WinStyle +from .win32 import windll, winapi_test + + +winterm = None +if windll is not None: + winterm = WinTerm() + + +class StreamWrapper(object): + ''' + Wraps a stream (such as stdout), acting as a transparent proxy for all + attribute access apart from method 'write()', which is delegated to our + Converter instance. + ''' + def __init__(self, wrapped, converter): + # double-underscore everything to prevent clashes with names of + # attributes on the wrapped stream object. + self.__wrapped = wrapped + self.__convertor = converter + + def __getattr__(self, name): + return getattr(self.__wrapped, name) + + def __enter__(self, *args, **kwargs): + # special method lookup bypasses __getattr__/__getattribute__, see + # https://stackoverflow.com/questions/12632894/why-doesnt-getattr-work-with-exit + # thus, contextlib magic methods are not proxied via __getattr__ + return self.__wrapped.__enter__(*args, **kwargs) + + def __exit__(self, *args, **kwargs): + return self.__wrapped.__exit__(*args, **kwargs) + + def write(self, text): + self.__convertor.write(text) + + def isatty(self): + stream = self.__wrapped + if 'PYCHARM_HOSTED' in os.environ: + if stream is not None and (stream is sys.__stdout__ or stream is sys.__stderr__): + return True + try: + stream_isatty = stream.isatty + except AttributeError: + return False + else: + return stream_isatty() + + @property + def closed(self): + stream = self.__wrapped + try: + return stream.closed + except AttributeError: + return True + + +class AnsiToWin32(object): + ''' + Implements a 'write()' method which, on Windows, will strip ANSI character + sequences from the text, and if outputting to a tty, will convert them into + win32 function calls. + ''' + ANSI_CSI_RE = re.compile('\001?\033\\[((?:\\d|;)*)([a-zA-Z])\002?') # Control Sequence Introducer + ANSI_OSC_RE = re.compile('\001?\033\\]([^\a]*)(\a)\002?') # Operating System Command + + def __init__(self, wrapped, convert=None, strip=None, autoreset=False): + # The wrapped stream (normally sys.stdout or sys.stderr) + self.wrapped = wrapped + + # should we reset colors to defaults after every .write() + self.autoreset = autoreset + + # create the proxy wrapping our output stream + self.stream = StreamWrapper(wrapped, self) + + on_windows = os.name == 'nt' + # We test if the WinAPI works, because even if we are on Windows + # we may be using a terminal that doesn't support the WinAPI + # (e.g. Cygwin Terminal). In this case it's up to the terminal + # to support the ANSI codes. + conversion_supported = on_windows and winapi_test() + + # should we strip ANSI sequences from our output? + if strip is None: + strip = conversion_supported or (not self.stream.closed and not self.stream.isatty()) + self.strip = strip + + # should we should convert ANSI sequences into win32 calls? + if convert is None: + convert = conversion_supported and not self.stream.closed and self.stream.isatty() + self.convert = convert + + # dict of ansi codes to win32 functions and parameters + self.win32_calls = self.get_win32_calls() + + # are we wrapping stderr? + self.on_stderr = self.wrapped is sys.stderr + + def should_wrap(self): + ''' + True if this class is actually needed. If false, then the output + stream will not be affected, nor will win32 calls be issued, so + wrapping stdout is not actually required. This will generally be + False on non-Windows platforms, unless optional functionality like + autoreset has been requested using kwargs to init() + ''' + return self.convert or self.strip or self.autoreset + + def get_win32_calls(self): + if self.convert and winterm: + return { + AnsiStyle.RESET_ALL: (winterm.reset_all, ), + AnsiStyle.BRIGHT: (winterm.style, WinStyle.BRIGHT), + AnsiStyle.DIM: (winterm.style, WinStyle.NORMAL), + AnsiStyle.NORMAL: (winterm.style, WinStyle.NORMAL), + AnsiFore.BLACK: (winterm.fore, WinColor.BLACK), + AnsiFore.RED: (winterm.fore, WinColor.RED), + AnsiFore.GREEN: (winterm.fore, WinColor.GREEN), + AnsiFore.YELLOW: (winterm.fore, WinColor.YELLOW), + AnsiFore.BLUE: (winterm.fore, WinColor.BLUE), + AnsiFore.MAGENTA: (winterm.fore, WinColor.MAGENTA), + AnsiFore.CYAN: (winterm.fore, WinColor.CYAN), + AnsiFore.WHITE: (winterm.fore, WinColor.GREY), + AnsiFore.RESET: (winterm.fore, ), + AnsiFore.LIGHTBLACK_EX: (winterm.fore, WinColor.BLACK, True), + AnsiFore.LIGHTRED_EX: (winterm.fore, WinColor.RED, True), + AnsiFore.LIGHTGREEN_EX: (winterm.fore, WinColor.GREEN, True), + AnsiFore.LIGHTYELLOW_EX: (winterm.fore, WinColor.YELLOW, True), + AnsiFore.LIGHTBLUE_EX: (winterm.fore, WinColor.BLUE, True), + AnsiFore.LIGHTMAGENTA_EX: (winterm.fore, WinColor.MAGENTA, True), + AnsiFore.LIGHTCYAN_EX: (winterm.fore, WinColor.CYAN, True), + AnsiFore.LIGHTWHITE_EX: (winterm.fore, WinColor.GREY, True), + AnsiBack.BLACK: (winterm.back, WinColor.BLACK), + AnsiBack.RED: (winterm.back, WinColor.RED), + AnsiBack.GREEN: (winterm.back, WinColor.GREEN), + AnsiBack.YELLOW: (winterm.back, WinColor.YELLOW), + AnsiBack.BLUE: (winterm.back, WinColor.BLUE), + AnsiBack.MAGENTA: (winterm.back, WinColor.MAGENTA), + AnsiBack.CYAN: (winterm.back, WinColor.CYAN), + AnsiBack.WHITE: (winterm.back, WinColor.GREY), + AnsiBack.RESET: (winterm.back, ), + AnsiBack.LIGHTBLACK_EX: (winterm.back, WinColor.BLACK, True), + AnsiBack.LIGHTRED_EX: (winterm.back, WinColor.RED, True), + AnsiBack.LIGHTGREEN_EX: (winterm.back, WinColor.GREEN, True), + AnsiBack.LIGHTYELLOW_EX: (winterm.back, WinColor.YELLOW, True), + AnsiBack.LIGHTBLUE_EX: (winterm.back, WinColor.BLUE, True), + AnsiBack.LIGHTMAGENTA_EX: (winterm.back, WinColor.MAGENTA, True), + AnsiBack.LIGHTCYAN_EX: (winterm.back, WinColor.CYAN, True), + AnsiBack.LIGHTWHITE_EX: (winterm.back, WinColor.GREY, True), + } + return dict() + + def write(self, text): + if self.strip or self.convert: + self.write_and_convert(text) + else: + self.wrapped.write(text) + self.wrapped.flush() + if self.autoreset: + self.reset_all() + + + def reset_all(self): + if self.convert: + self.call_win32('m', (0,)) + elif not self.strip and not self.stream.closed: + self.wrapped.write(Style.RESET_ALL) + + + def write_and_convert(self, text): + ''' + Write the given text to our wrapped stream, stripping any ANSI + sequences from the text, and optionally converting them into win32 + calls. + ''' + cursor = 0 + text = self.convert_osc(text) + for match in self.ANSI_CSI_RE.finditer(text): + start, end = match.span() + self.write_plain_text(text, cursor, start) + self.convert_ansi(*match.groups()) + cursor = end + self.write_plain_text(text, cursor, len(text)) + + + def write_plain_text(self, text, start, end): + if start < end: + self.wrapped.write(text[start:end]) + self.wrapped.flush() + + + def convert_ansi(self, paramstring, command): + if self.convert: + params = self.extract_params(command, paramstring) + self.call_win32(command, params) + + + def extract_params(self, command, paramstring): + if command in 'Hf': + params = tuple(int(p) if len(p) != 0 else 1 for p in paramstring.split(';')) + while len(params) < 2: + # defaults: + params = params + (1,) + else: + params = tuple(int(p) for p in paramstring.split(';') if len(p) != 0) + if len(params) == 0: + # defaults: + if command in 'JKm': + params = (0,) + elif command in 'ABCD': + params = (1,) + + return params + + + def call_win32(self, command, params): + if command == 'm': + for param in params: + if param in self.win32_calls: + func_args = self.win32_calls[param] + func = func_args[0] + args = func_args[1:] + kwargs = dict(on_stderr=self.on_stderr) + func(*args, **kwargs) + elif command in 'J': + winterm.erase_screen(params[0], on_stderr=self.on_stderr) + elif command in 'K': + winterm.erase_line(params[0], on_stderr=self.on_stderr) + elif command in 'Hf': # cursor position - absolute + winterm.set_cursor_position(params, on_stderr=self.on_stderr) + elif command in 'ABCD': # cursor position - relative + n = params[0] + # A - up, B - down, C - forward, D - back + x, y = {'A': (0, -n), 'B': (0, n), 'C': (n, 0), 'D': (-n, 0)}[command] + winterm.cursor_adjust(x, y, on_stderr=self.on_stderr) + + + def convert_osc(self, text): + for match in self.ANSI_OSC_RE.finditer(text): + start, end = match.span() + text = text[:start] + text[end:] + paramstring, command = match.groups() + if command == BEL: + if paramstring.count(";") == 1: + params = paramstring.split(";") + # 0 - change title and icon (we will only change title) + # 1 - change icon (we don't support this) + # 2 - change title + if params[0] in '02': + winterm.set_title(params[1]) + return text diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/initialise.py b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/initialise.py new file mode 100644 index 0000000..430d066 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/initialise.py @@ -0,0 +1,80 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import atexit +import contextlib +import sys + +from .ansitowin32 import AnsiToWin32 + + +orig_stdout = None +orig_stderr = None + +wrapped_stdout = None +wrapped_stderr = None + +atexit_done = False + + +def reset_all(): + if AnsiToWin32 is not None: # Issue #74: objects might become None at exit + AnsiToWin32(orig_stdout).reset_all() + + +def init(autoreset=False, convert=None, strip=None, wrap=True): + + if not wrap and any([autoreset, convert, strip]): + raise ValueError('wrap=False conflicts with any other arg=True') + + global wrapped_stdout, wrapped_stderr + global orig_stdout, orig_stderr + + orig_stdout = sys.stdout + orig_stderr = sys.stderr + + if sys.stdout is None: + wrapped_stdout = None + else: + sys.stdout = wrapped_stdout = \ + wrap_stream(orig_stdout, convert, strip, autoreset, wrap) + if sys.stderr is None: + wrapped_stderr = None + else: + sys.stderr = wrapped_stderr = \ + wrap_stream(orig_stderr, convert, strip, autoreset, wrap) + + global atexit_done + if not atexit_done: + atexit.register(reset_all) + atexit_done = True + + +def deinit(): + if orig_stdout is not None: + sys.stdout = orig_stdout + if orig_stderr is not None: + sys.stderr = orig_stderr + + +@contextlib.contextmanager +def colorama_text(*args, **kwargs): + init(*args, **kwargs) + try: + yield + finally: + deinit() + + +def reinit(): + if wrapped_stdout is not None: + sys.stdout = wrapped_stdout + if wrapped_stderr is not None: + sys.stderr = wrapped_stderr + + +def wrap_stream(stream, convert, strip, autoreset, wrap): + if wrap: + wrapper = AnsiToWin32(stream, + convert=convert, strip=strip, autoreset=autoreset) + if wrapper.should_wrap(): + stream = wrapper.stream + return stream diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/win32.py b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/win32.py new file mode 100644 index 0000000..c2d8360 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/win32.py @@ -0,0 +1,152 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. + +# from winbase.h +STDOUT = -11 +STDERR = -12 + +try: + import ctypes + from ctypes import LibraryLoader + windll = LibraryLoader(ctypes.WinDLL) + from ctypes import wintypes +except (AttributeError, ImportError): + windll = None + SetConsoleTextAttribute = lambda *_: None + winapi_test = lambda *_: None +else: + from ctypes import byref, Structure, c_char, POINTER + + COORD = wintypes._COORD + + class CONSOLE_SCREEN_BUFFER_INFO(Structure): + """struct in wincon.h.""" + _fields_ = [ + ("dwSize", COORD), + ("dwCursorPosition", COORD), + ("wAttributes", wintypes.WORD), + ("srWindow", wintypes.SMALL_RECT), + ("dwMaximumWindowSize", COORD), + ] + def __str__(self): + return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % ( + self.dwSize.Y, self.dwSize.X + , self.dwCursorPosition.Y, self.dwCursorPosition.X + , self.wAttributes + , self.srWindow.Top, self.srWindow.Left, self.srWindow.Bottom, self.srWindow.Right + , self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X + ) + + _GetStdHandle = windll.kernel32.GetStdHandle + _GetStdHandle.argtypes = [ + wintypes.DWORD, + ] + _GetStdHandle.restype = wintypes.HANDLE + + _GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo + _GetConsoleScreenBufferInfo.argtypes = [ + wintypes.HANDLE, + POINTER(CONSOLE_SCREEN_BUFFER_INFO), + ] + _GetConsoleScreenBufferInfo.restype = wintypes.BOOL + + _SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute + _SetConsoleTextAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + ] + _SetConsoleTextAttribute.restype = wintypes.BOOL + + _SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition + _SetConsoleCursorPosition.argtypes = [ + wintypes.HANDLE, + COORD, + ] + _SetConsoleCursorPosition.restype = wintypes.BOOL + + _FillConsoleOutputCharacterA = windll.kernel32.FillConsoleOutputCharacterA + _FillConsoleOutputCharacterA.argtypes = [ + wintypes.HANDLE, + c_char, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputCharacterA.restype = wintypes.BOOL + + _FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute + _FillConsoleOutputAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputAttribute.restype = wintypes.BOOL + + _SetConsoleTitleW = windll.kernel32.SetConsoleTitleW + _SetConsoleTitleW.argtypes = [ + wintypes.LPCWSTR + ] + _SetConsoleTitleW.restype = wintypes.BOOL + + def _winapi_test(handle): + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return bool(success) + + def winapi_test(): + return any(_winapi_test(h) for h in + (_GetStdHandle(STDOUT), _GetStdHandle(STDERR))) + + def GetConsoleScreenBufferInfo(stream_id=STDOUT): + handle = _GetStdHandle(stream_id) + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return csbi + + def SetConsoleTextAttribute(stream_id, attrs): + handle = _GetStdHandle(stream_id) + return _SetConsoleTextAttribute(handle, attrs) + + def SetConsoleCursorPosition(stream_id, position, adjust=True): + position = COORD(*position) + # If the position is out of range, do nothing. + if position.Y <= 0 or position.X <= 0: + return + # Adjust for Windows' SetConsoleCursorPosition: + # 1. being 0-based, while ANSI is 1-based. + # 2. expecting (x,y), while ANSI uses (y,x). + adjusted_position = COORD(position.Y - 1, position.X - 1) + if adjust: + # Adjust for viewport's scroll position + sr = GetConsoleScreenBufferInfo(STDOUT).srWindow + adjusted_position.Y += sr.Top + adjusted_position.X += sr.Left + # Resume normal processing + handle = _GetStdHandle(stream_id) + return _SetConsoleCursorPosition(handle, adjusted_position) + + def FillConsoleOutputCharacter(stream_id, char, length, start): + handle = _GetStdHandle(stream_id) + char = c_char(char.encode()) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + success = _FillConsoleOutputCharacterA( + handle, char, length, start, byref(num_written)) + return num_written.value + + def FillConsoleOutputAttribute(stream_id, attr, length, start): + ''' FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )''' + handle = _GetStdHandle(stream_id) + attribute = wintypes.WORD(attr) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + return _FillConsoleOutputAttribute( + handle, attribute, length, start, byref(num_written)) + + def SetConsoleTitle(title): + return _SetConsoleTitleW(title) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/winterm.py b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/winterm.py new file mode 100644 index 0000000..0fdb4ec --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/winterm.py @@ -0,0 +1,169 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from . import win32 + + +# from wincon.h +class WinColor(object): + BLACK = 0 + BLUE = 1 + GREEN = 2 + CYAN = 3 + RED = 4 + MAGENTA = 5 + YELLOW = 6 + GREY = 7 + +# from wincon.h +class WinStyle(object): + NORMAL = 0x00 # dim text, dim background + BRIGHT = 0x08 # bright text, dim background + BRIGHT_BACKGROUND = 0x80 # dim text, bright background + +class WinTerm(object): + + def __init__(self): + self._default = win32.GetConsoleScreenBufferInfo(win32.STDOUT).wAttributes + self.set_attrs(self._default) + self._default_fore = self._fore + self._default_back = self._back + self._default_style = self._style + # In order to emulate LIGHT_EX in windows, we borrow the BRIGHT style. + # So that LIGHT_EX colors and BRIGHT style do not clobber each other, + # we track them separately, since LIGHT_EX is overwritten by Fore/Back + # and BRIGHT is overwritten by Style codes. + self._light = 0 + + def get_attrs(self): + return self._fore + self._back * 16 + (self._style | self._light) + + def set_attrs(self, value): + self._fore = value & 7 + self._back = (value >> 4) & 7 + self._style = value & (WinStyle.BRIGHT | WinStyle.BRIGHT_BACKGROUND) + + def reset_all(self, on_stderr=None): + self.set_attrs(self._default) + self.set_console(attrs=self._default) + self._light = 0 + + def fore(self, fore=None, light=False, on_stderr=False): + if fore is None: + fore = self._default_fore + self._fore = fore + # Emulate LIGHT_EX with BRIGHT Style + if light: + self._light |= WinStyle.BRIGHT + else: + self._light &= ~WinStyle.BRIGHT + self.set_console(on_stderr=on_stderr) + + def back(self, back=None, light=False, on_stderr=False): + if back is None: + back = self._default_back + self._back = back + # Emulate LIGHT_EX with BRIGHT_BACKGROUND Style + if light: + self._light |= WinStyle.BRIGHT_BACKGROUND + else: + self._light &= ~WinStyle.BRIGHT_BACKGROUND + self.set_console(on_stderr=on_stderr) + + def style(self, style=None, on_stderr=False): + if style is None: + style = self._default_style + self._style = style + self.set_console(on_stderr=on_stderr) + + def set_console(self, attrs=None, on_stderr=False): + if attrs is None: + attrs = self.get_attrs() + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleTextAttribute(handle, attrs) + + def get_position(self, handle): + position = win32.GetConsoleScreenBufferInfo(handle).dwCursorPosition + # Because Windows coordinates are 0-based, + # and win32.SetConsoleCursorPosition expects 1-based. + position.X += 1 + position.Y += 1 + return position + + def set_cursor_position(self, position=None, on_stderr=False): + if position is None: + # I'm not currently tracking the position, so there is no default. + # position = self.get_position() + return + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleCursorPosition(handle, position) + + def cursor_adjust(self, x, y, on_stderr=False): + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + position = self.get_position(handle) + adjusted_position = (position.Y + y, position.X + x) + win32.SetConsoleCursorPosition(handle, adjusted_position, adjust=False) + + def erase_screen(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the screen. + # 1 should clear from the cursor to the beginning of the screen. + # 2 should clear the entire screen, and move cursor to (1,1) + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + # get the number of character cells in the current buffer + cells_in_screen = csbi.dwSize.X * csbi.dwSize.Y + # get number of character cells before current cursor position + cells_before_cursor = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = cells_in_screen - cells_before_cursor + elif mode == 1: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_before_cursor + elif mode == 2: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_in_screen + else: + # invalid mode + return + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + if mode == 2: + # put the cursor where needed + win32.SetConsoleCursorPosition(handle, (1, 1)) + + def erase_line(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the line. + # 1 should clear from the cursor to the beginning of the line. + # 2 should clear the entire line. + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = csbi.dwSize.X - csbi.dwCursorPosition.X + elif mode == 1: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwCursorPosition.X + elif mode == 2: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwSize.X + else: + # invalid mode + return + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + + def set_title(self, title): + win32.SetConsoleTitle(title) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__init__.py new file mode 100644 index 0000000..1154948 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2019 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import logging + +__version__ = '0.3.3' + +class DistlibException(Exception): + pass + +try: + from logging import NullHandler +except ImportError: # pragma: no cover + class NullHandler(logging.Handler): + def handle(self, record): pass + def emit(self, record): pass + def createLock(self): self.lock = None + +logger = logging.getLogger(__name__) +logger.addHandler(NullHandler()) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d36f7da768ee2100a8fb11d220ffe143e3c768f GIT binary patch literal 1072 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

    7&@B*YHmgg_%s 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc11e86e6c3e00fd6c2020c9cc28f12710d14779 GIT binary patch literal 17305 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 WLZdE0BH+9^#6Ud@!~(;~w*Ci6=VY}2 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3d5e1fba30db50de2dafe339e291f3cab2a7849 GIT binary patch literal 38269 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 Yw0x}m*%Sn~3>HczmHN|ME|>m)0YbOd`~Uy| literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2460db20ee5cc45e969c90981b5eba64170cec1 GIT binary patch literal 10208 zcmb_i&2t-9a-S~@1|axpSzlJPW7#qZg#^8}YuBsQ%9bU{t6d3FM6Q!XXoCa10XfuQ z26{6fMP#s*GQC+RRY^Hjd&nsvtM;(I<&;Azr~MC-Q);reRHe#$Oj4C9U7TOP`2Yw> zt{g(vy!m>sr(bu!?qBzVH9cLH@b?$LtnL2W_ay1x>1O<|fSdPm1iwPVq=v*~rnquL z7H6fQh_l*I#aU};;#_DHn94L)?-m3F7PGCbl=s~_Psruhs~Z9?!?AD%X2z*5Dp5PoBLPFgSppgSKeEC z?+4{-RL1G`>Q@Trw&@e&e=2U?#}N$B*b=lNkw&16-y`{dCPN+?(%LInpwXm?G^W2BML<~Bp$vWY*d z*K-f3@1DgSzaN+o6FPVSsbzo13e9~RgD?_$<#tUBs<%l<*&ki&IBwzyuA>R1UHM26 zts2R_)1h>v9ZSdZu^dUwLL}`L@J>G?;jYN&nGu!_>8{LV*p)J1;w!}79nT3J3kG3> zdl*s>T3#Dmb4-3di!W6qRmCA3q$HLu0pmG!+%1^06|U z!h0#2!uv{8*{uwxBRQHrl=dul@we;BWb6UGVDkED;mya#gJ!IdS=LT z_#e#WmX!{E#!KXe^$rL|G87L_aV!THLSMn6axPHV17at@T!b8!O_7dcp1<Dz8?HLMO5A`rF$!j|m=aIi(a5CV1p$}lL&h)3Wx0Z54(-6q4LcE5?V9ViEjPGcOG%vwMT9Fz zHtRS7GWKoE@8h|lOvqvv+Waf&ua(EzdSXYgubgwS6fsq$_GY6@3%(ild#*icZ{=&W zCfa_tcb#C}f8me@uf34RQSaxn8DMlk?j1}nBupNG$z%B=31+1TmB{rIY`%rw@DAi; z6Bjb!g-h4AZ4dB;U;h*8@_jUeOE2ax>s;0O0`(`O8VMyXLW?2*=!x{J1);fyv2S@4 zae`O}itoE2e;Wg1xs%B2yF^9!D#CW#I0A}4Qenm@%M=I<`4kRap8I+*JHgxuK~cOU zoeJkg4ANQzjF3sMP1w3{Tjy`OwgrPl6mR>k3mBIzsu~GzG%*UIRe8+#atn+LZK5$m zhs28@QVnKu*2K#btB?Rvj$n7eXSNDAHCkgs4G;(XJyQ4wkqXao5nu;480pB6)W1}M zi=lFaEFjWptv_DsKpv|k1O^rc8S z4KMmBs6peWtUU-k_l^&^-?oubQo=|Wo`UiIj?>;TZG>D~c(ODjOgwFe``t-Mms8u? z5}mfTmQ9}{x_AA(ET23vI_>prUXe4AM8f=*00J^nVl_n&!H(Z|kyhDBy4yh(VTCy( zlyKyKGmtGD0K5yHUAJlfjuKOCk+XV;?a<1Z{&UEjd_Fku`DqXn zfY-z{+B=jXUgmMpej@rmo!NH%mgTOb<8Ke%e(@+|ZU_66JSI_bR0hbYWK`#&@jefr z^NcVSIH9b;$~TZtV1A++O8GAHr(=Xt+Hql%bVEon)cM`<^{`2OW{_ z?NL_j9%Kw5Lr-(d=MEmsJ08j!4v;Bq7s>c#Ue)6{6d!nCQzTAI8c$NmQCWiWZT=>v z85fZXdXP2Vr+nw{3EfnU1VfcZg!JS)v60e&6UQ>adz2R(o<59=*+oH2cQO#pr=~n& z@Kby(sH2f)7YYX4`;5E*FA7(m-s!UPwV~3J1zUX^T`t)nW`KV`$epPgAv)nF;H131L2@120yn9pM&ZYQ}<-L23k^>CeV_2K13}{ zlZG0O0(_y$^gW3`Nyir-Nqj3*nGva}FA~)nP?TALYF>o%hMM;?jGMx^e@e$yFz#OmH!qr=AJ`C_bPZZpS?k{t07U=J3u+r zg~8wDEB7O^F)Osk{p2W7NsA)6l|09J2_pr8u|Ztm*sJCZQ=lbEd=ukZ&Wl3Jlq`en zGOdElG)Mk~Q+QAEVuOD`*SDxyqvkd>A5!x}YVJ@&fLHXZSGDK%r@%aT{W7N-4pvTJ zUP}%6+t>5Ux2~JDTI~eVAU1O3NMJ=E#|nY62pE10HF8QGzDyuktnCA-Ppl1o6&-$u zBSBv)x&2Nq=@FJ4;Y47&e8ykV0v=o$p9^F-n#TX@jQB^y@kul(X7ZoeOu$;Mg2Ag} zTv=uS2ZYdcZA``22lIXJk>~HDlAHUr0)GqCViiT)SVw6NMOIFe8SlFRzHqGz*lnVIX za`F_jMkTL>5?9tKCwA-p`syE|a^>#_-xs~aI3jb;YMb}h$3$_bV=g9$XVC-?A@AGf z5($FY9SccNRroqj2q2YrIz#mC`g~L>OjIhkzH|jh>=IBNvX?|xmpZ;Lp3!y&Nt_<6 zwk%E$YbbDca^}a`=^!h%u?OM<9>NcUFVtH`WGCj4RHel{sL1R(HcPqpy>a`3^`Ur0 zSWe*1#dKWG!IBe_>A|Yf8CQi6p_8#Oi3!2>1Px%jP@qFpJX&_RZ`)o@4qSJsTP6%l zcYKb{HcIWVGK>TXs=-mQEgww^a)Ktex9umnik3$d$Oy6-m}Ji>Jz*X>m3*y`lCf9S z@8XL9@4)FG?b144Ss@@9a?67e3Zw`6%=e%) zGNPm}9_{wA6Gng^<^9pN2JzlUsUIAzIM~w4zma$eyvY27kRFOHbVU0^b*`(tOv-Q+dE11;0m6ksFSbbn%|^`AbD(L z%HbPyOLZ0kvQQYmOr0j8&s{u&-;@H%;H3+iJV#g&HD#&~VP9g*Ur#{e7rSeM7|(Op z09w*6VB&;>zDQ3|W=pWLrZf|4Sxetrr zSW?)ivdI|=Yb7hmd@h_HY&}WEGL0-%$-TFbu#O?e;Vqtc? zNmuVvGhuI(yj02Fs3I>_U~kA#p0%}!H0y+|O=BP>B4qQyuPF)9_yvNHAxg#kEEPbg zzPFAi>r#li`y-8C1wbe;RN{|N>_L$hFknc#Vlv;QH`ISMMHTPL;tRN9S~wGx59KL| zQkmhDcRhPEoQkH>Z~iN;l5hT&z8OtnOyN*Qi+we;#Y6dQIv!li4lC4BQ48OmVLI+< z#>B}xtQeKBom&B?Q%I?dGg1e2~9sM+ocsHUi z{B2JCvy?ih;_Z1>7GqMXOrsfgki-djsgXhYs7_h0KwTTDccv^U*s)!A#dRKuFq*)m zEUd$;TDgxV*WGumQN5n(uPE~*KU>HOFzM=|MVvYJ#OI5UJ|4ITSS;s@3?8qX3C`RJ7pWYU1cYi%2`)p#mLzM-LW#MQ#5mx%WY~Dns*XGf;Qt@N zsyU%w{vB#+XzEYp&4IGH`BeU7pwzAmW-bTGf9(pL2YPZ>or}v3vIL+BY{p{?Jmj&$ z?YNjuA)akM`02(E@7J3jtvy`7bH5%>H3^Y6Lm$y0F2NIq*w*(wUd2aa1NcI0sKvS+ zw5^^!s#%Zisr{6goJCWePBM#=;YhdyvGa*6geDZLw52NC19^bPwB7B62bp(mloISi z(Ta#pdJpnRKOpZxX{%Jy;5o{QhV0`s_CBe`aUOT4#U5xG*Jb&vd;w9cBGX&Mv#-nQ z1zb@@1UsejjB;KXyfVs2o{7IFiXW7o&>{Q|?WW)d6toe9EiBrs8j39|Q3AQhP@ZNg zl?#Sih~xuBXcQ!lRcv!;7~D5Z{kwUU}Ay7Fgl{AD2WQ2eWq^Uklyn6Q!E!@2dXA2WrI^AOBk(-DmI7Y+f{X=KHkjH zZ#gJAY&PR^lYRw�%GzX7h3165IH=D>j=b12>!e48F<<#)WaXz*(WY%l@_Bmzxkc@PM1BZ>vFPEG?qk)V1_tWn`w)DLJ%*aO1cO86Ph zU9nBc1ETvTHQUr%zSo#<-n@VJ?u`fQYt08YHa6BC)?<0SF^i}7?yc1~)^0WL-l?y} z75oB>JUFVZz*;*rSoZ~x7r&=^-qd5`S|aT0I=Tn+V+u{wKB?MCRS5j6x>8nWCvg0&3qr?8n2~kN1A>$)BFC z8hHNpkNJ(^oMHTjUJgGtUfw~GyCB?X8=P@7Vr`~tvu*0yYFoOt+cvkj9hG`c+hGRy zQdI7_ZMRoxSM<9RReMwI8u;=WYflH}Zk@Y(tUbdkyn5eg&+;i=Lw)RhgHQANeS_D7 z<2zP+j?eH}w4Vr0>=^Bne>f4$p+3cr^JBbxpS4eObJ=Ll4c@Qb@`VgUqnn6EwjMNs zcqkZ-jB<*3zxU8<(%lS07-xM(Y6s zZ8BApnF!-GFWXK7*)&x-jJ+*LR<)GA<`sf5@K`GmJwFNu0l$MUg-NU`VVngb6+t#w zym)bi|MKF>JZSUM%H2!NeC5KUO)D4jmGh4^o^N(Ym+?cqh4LEcwn5Q#3>_tS7x-Axt-= z?5AlWvW3-9uHW@Hf*@Pyr=b_dcYVRVZWsmLsxJe+Fi*R&5QVD?>2|iB#IMc&WOF<711OiY7&X!WEr z_3PFD8qAt8WSOzca$}F(G`@IdXy$C!%&gqpwfAsk&l)>yk1^w`dREHW4tA$$w)BQH z9X0FSS^9YSgO6I?tsA#*FMZrnF75*-U6kXeDRfq5>yC2PMAA>CvSg4oEybjAL?HW7 zrdUt!TtRBkM@@TcL5Ah(DWEUhbU}FZ^7i`Pq z7Ayg_1zOV7(X_0ot7%2ks-{z#)-;{gw65vQw>4PkEI$TID)HlFF{-k(c|EIRLh12CJQaOFwD8=>*(NOX zJJ!;>^qr~LJ;k;k-8XkJ@_Vb?zy2yF{SU<$9G~bnKkhu*x5QaYFFx?hgrgfS=!nEG zK<0@d^Z99sv*<0fPhnbEg}rPXLGr@WB~SLnI+Dc8KSLr+{s=n$>gf_6Tm8`_lTAKl zUni?S+J3(Fbcv7YdNj$e|DC;cQsQG)M(+LyI==NY zBpz+mSH=>XwSDv2wSDUvi1{_j^Vjy-;=Z|v>iWKU{hG3Ta;b?>W*F}~agqUgI~L}T zp9+`~ir)S6I0wKR)A07&9FYfL&D=7?i{KG${1q@awBmC)%grq&u4E>MlRpKQ{};66 z7>(Y4YYEnlDR2GGKs)0O+U?xVjSU;K;;h8WxjmZ2xQkv$;T6(Y%|N_|&E;|CKvbi|=!r*RX=`GdC~quwfasi`tD} zEJpsF0myAWy=4$L8C5ApkCLBl`ft^ro$uN#O& z`hwz})omRiUG4Vc&eboANJa!-^+OR*xb)>j91X~5Dk3C`sbm^-!fpr=odm(ny{v!$ z`mzR9LB=iUYCiZ8&)`Hq-i(vGabwFDp}!ghR~s)$T!3_NDoGpq{CjDnKN@h|XGQA( zTCpw%=fW7s6Vj)8P%)HAOe2avRWHJgG14|&@dADNMItW|d6`Iq$a6%_6CpTmnxaYk zCE}}sE}V{p)YS5JocZ^bguwl@dDzKRHAxYc&<02~*GjSv4wTiybbzAVF+z%CB#aQg zSy8qOqOP)mmO_4H|x zI&&GlyZD`9$ITk}S?2s`qQA;c==NE57(>Tewh;Nao)`PQ!1Gkq^Lh#IBcAhA&GWwM z`_ZVU?0G!tc%INcT|3JI^$v7A1I;dwj)bNzvr7(p;_nA%M$p&}%H*LWgMuGz?tcP9 z$;5qQ2(!;%;)rT5QgpjvZdfo9I0A6?(2QMf4;e2Z+Jl*Ar42iCcFTJPsHY zH#aSDg}f2BAecN%X@{LQ-l8!SdfKgl`;wg3f2xF7(~rinXsPFK;NF#bVO&&5R8&m_ zQGhTz3buj>;b(@p6e&*VM+ighFzzO*JPI|Hy@}BE(Wq(;$xzSFyly{=#-{Q|T8hs7 za7`Rslv8Z*3Nj%d0j)PS>%}PP_>sIm{{#W59**rm+lFG7mGQuW*k(=5J=~|SnL71I z<5=f%B8vgDY2;`0DI`>#b>w8~*-6XD&>t3|4rYw@NX<-U$ZeSgy+cDr-)kRC8mDn{ zBk6}XNKgoe%x_zIW0B3eDzE#}&u{`3I>h@JB5u++o6H3+O)7UhT9wDEIQeAd%VV9L zLRE2t#L+#|-)`FCJ>owk@_QoMZyZ>k&NOBoIkPV?P+kNvm|G^-P&I94TP8D+dmNag z3m(bU4^CasO?W8&rPPXUhBn7OUC@6Fe*-xEFN#gb!oGDTIxzs7Rsc{}FUY8c~vL_S3^spD?|L zyc2rsj|`fh!~~j@g-x^?3ZM%kP2!-#f)`jWt+L+D(C(gQVfbLqVspL}@Rd-tQ(?WNCdE2p1AOrR!)1}f-MYh+eHG#`G@BRuY<_#cL-Qy&44Ms4LJ zs~gxkjZ@k>gin1PBBbXb_c{SUGj literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6ed04d6ea135ab392687a543c3ecd2f4055f7c8 GIT binary patch literal 26603 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 N`);^hKxPy1{|7e@lZpTU literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26af7f8409ab0869a501f933bbc8b1ca60bfc97b GIT binary patch literal 11026 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 J1}pRK{{w*ulg

    CQG*ZrxXGJcQv!JLp|Bs_G#YCtLEHM~_MIvv>w`{JTTbccA ztg5$JWhHS6dO!sB{zmva*z=F{N7)$sI6oJn$n%U#zaNXyMR*1v{UVQpIK2ot3kGol zK|d70{Pt@|U;9bi_w$7w?T>sBOW4j)*l-BK&*R+3jS_eoCVnB~MEJKn+WAD)!$M}k zLWoVIAs(P1R)f0qk#V2Cjo6?Yv`H=6{FlFrwbni5XxSpc?_#J74*Z^W968Bx5P10( zrp{Dx8iJR{`%hKv#(VrkHI{Dhyt^75beC~}rzaO}+`5&`X BY$X5y literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fcb6e2210c38c03edc7b56145816a31643037089 GIT binary patch literal 1347 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 JD7!Ob{{_R11U>)& literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..614d923b0c8d4434f38fbe88abb52f5de4909d88 GIT binary patch literal 957 zcmY*XyKWRQ6tz9G&+LmR%0r@ zsHqSIl>7@{FfCPnfr{(N3O1JR(e?3t`Pj7GZX#Hpzqpsb2tvQjW_4Mxc>$)r0=z{G z`G{dgLL3pFVB=e%71_QGzU^07#jkS0YpgmYJBZg=Z4a@!-*~_^fNS!~l=#gD{2K5r zf9(O+-b1{}t6PY#fi<>}-{LjiW}R<@by@F|?RVItA?mN^n};Ig`X=R$h^L8+s1`}= zHt%3=)W=0-l%*jDr>@daXnw78+g;4UKFRB@rqUhfPl3_n+$}mU{ing;Y&19-9=|>r z_A7a<47tut#65=jk_4wwo`!iui}snnk_q9tNQ;ht{APviTg%jovfe#XS#(DGr>kM4 zuwxqWqAI!0WIVy5ZNx@iTYVQ}Aj}QaZV!7hHL%NIgi@T*fr?GA%;onF8hqC^x++ zxPt-5{WGoapigsvwXRIFeNZH3KaZX^)d6EJr9+T7j-PuJ1(& a%R>I#D6iH5s#c4%h>bV!Mr|9gXZ;2FxBiF# literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ecbf4f722c0aa9cb3c54e8d61b72acba0ff531f GIT binary patch literal 1688 zcmb7E&2Jnv6!*u>>}2vGvQ$Ns3PwmER%&+;Jyn9LkQNjaZBVzgBC0f+jJ;WJ<_p`C zXrtXzIB|s|hvdk=!rKnCG#I=kEb;V;bimO`3tpe-9 zwGVf=?}E~0P`U_8^ST%T&m>DnqTuOqrZ`LbXS_N~;Lb@i)#JK))PI~Pq4~om%TKctu98MH2?S~` z0i>kWqELyuQNNj*J8!$&hQ)}$fQYp78$epS%?t`gxx>g1UEI~=iZXhQ zue@vYhRo3%zed$P4{2Wqx-+8FCm7l1C&-Z@`W($HpWemOAEYQVIgLdLES9{|ndLRE zM+=;9p}VA@R{bT+edC{t>d_Yi^X}d-{ciAMda(b^Ui#|!i{bv^pcfjdrpkm(k?Bz_ zOG9d9IxC8N)f7UTov$_UecWpPT*_LS&f#z|iC$$zyD$RXI5nLm*Z;96L%>4%Fzi5A zc0fUdJxs`5+$AA)-)=zZfs2iDP)e9wY%vUlgXRbzy91EnX?zPTbVV4s#&diT&G3ZI z$mfL$>@sR<-E~*Qu?r6`gVy;!T*R`8bnlV>*&6yR(S| z)R@v)m2;pD$|ztwuNm)o@;w`}+sHcSN~Kj+as}DW;&NO5p;DQ21E(o zf+qx)2#)X;4QYr265)tQ>v@AK`LFx0jI2 zx{eu#(klgshaU5r@)AWcw3YH?v93a literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e38bf831e113872b0f5bcf97622387c6a7ff3f8d GIT binary patch literal 5202 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..62dc15f0d6653ea79efb85af37bea913d0ba82ef GIT binary patch literal 996 zcmZvb&2Q5%6u|8y{aD#YCD4S}#Rm>l8VRry5}No>50gfVmH}dy$c^2_t!oF{X;s87 zz=<7=hQBYkg&I_`j^z-fl_mGIAqybjb8dQsLTqX{n2gY|1IQJaQ0LdtfM=lH8h^n7 z6v{IV*8#}-HjuxWL1a(W!kABK;@ z&L8M48uW14G~5+NrImfTJWw`ZzkqEW2!|$^;i+%78H&+|O_&6d-UWJ#)U5zHe;Hz! z1xD{+UNL%rKB7s${At4+*70444`gH3yui3RbGtg@T4QfHzIG1(X#cFH3R!xMLD^)~ zEQB&JT_kq8s0+Y5wjQOs9A$5#^zG7??Oakf)@BB#mF112db)jMv?+IoulfUMO7f8eW4dYdco2%X@LOGqRLwlZS zK~Np}3z;p@|9*-xJ>!wcr`8sE^?^krVY3CDaPFca7m#5=4NJyC@?=CUXHf_Q^9YJZ z`O;-t9fXe~D;&R{({xJDxs8A`s!DUCsEi6Hq>a`<*V+;0%X0Vsu8Pmz0fD>@4m=NU z!qfIwdKY(b+cP`h?fGRZNtjNP#5BOJU)Hy~BDTR%wx6v2wZm#awh1EGX#3l{{{W~F B8czTK literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/logging.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/logging.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bce6d0c121b82dc7fdebd38f6669013a095849c1 GIT binary patch literal 9302 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 PNdG{;17}+XI@tdMvyi=h literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/models.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/models.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d423e259b525e0f3fb992136021449f92c0da219 GIT binary patch literal 2075 zcmb_d&u=3&6t+E+WSS;v+U<6?tacT|DF-qV91s#hKo1BZDx|_?E|xQP5~uTPZKq4B z+`1>u9D9Ic`IF|#iGP6;@69yXQf)-h;>aF<{_*_z^LsC%+ieplKmRhC-}r?5f#7cO z0DJ+}egusq5s_4~ghmv;Ucyo@@=`zY(?-;wUqe^?eO#>u+{DAsg-hmImZ zgG5Zy$dgQZQx^HEp_-B$S46Ho*_5r{_8HU@sJ0KyimnJJD+Vp-dq!^P>5!Qw%$OE5 z@K(N6$;1RWvIETxFRiQ?6b z!qJ7wF2Y2Q!(!=XdG_(>)6iOdjJbG@a`kk;oeR9FCNioX2E1uNgK5@cAO&!NfF1cgufO?KD~2ueKCZ5#%`FS~f2|2s d)+<(M>5f2~Bg){j`j($#0<5I+y?`Eie*<`M#Q^{S literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aad2c80185f00b47fd7330523ea5240e973e804e GIT binary patch literal 2651 zcmaJ@NpIUm6y}hWM9Y-7*iM|J=_Fkc0X5Y&?V(0d#K=+@b(|pfiA5mM z!}uKslaCF9+t9?H&_zZ>62mXw#3wK|6En4Zi{PA<*lESDXxUDxY0a;tj_>GkC7DX= zeqGDeWIA8wAiWha?S=lyvtPbCZK1^&areN7CcuM?B ztj1PW4Cb)Q(R9}Y=}P3jvZ6*b^V0UOvUz4jv#-o(E}Dn&J1}0+z@o7Z1jpoW9;IXmQB&zm+2@&iu5bO6Diyj4BFy1tk^RSR{ zo&|}j?DUHSH#CZ;du`4{-sd3`u%|8x7RKF}aiMAl(8Gb>h?;)Pp7mqSQkF?L=H88k z;iCW9!D!9C7%j+>%b6iIN{E&|!}nwFa7r4rFD4rMRTlsmeh9cSHK zRXLM=o`ohlGI}tdHE4IBiO--LKu-GxcO!G#kj9V zHLwQefdR3xgI|eZ)G0i7dMtcO<1UpwM)%?ameEJr7&@|rrhyE5OwfSd7&$Fg%PlwP zS#Z3%*0xpzJV?h!wHs@6o!(lN7+;!qX`D$xIV&K>5V|+0ef#UZ_lG0aVWgWkbS#$>q)0MwxtZ;8tv@xKI{Cik0OwV4bt;0$3DuBRdF^INBb=W{qxiY3E#~JG2)-L^BA7 z-c7qXhd7tFZS5%HHESI6tlTq2+e~r?rz#L+!IZt9$C4|vq>#tCch z27*N`h<$d@O5)vCsq>ciMN7nztrkJ}6bL6;MO?Jtpky3a)&h1UFsBzG^ImbNmUKRW zahgqIA}oMKLKn6f$Fxb^TqgVq%mE*5Ad%#AFbDy{XAknC0!{PcI}jprOeC;Fl6~{U zF4TNPn#j7aU#sCFPVAohZG03hvj zR6%YwJ7+jVFjFWrw6n+LpSa5&ZBR>UftNb|M2MIR!+x? z0eAf@0u<5@go0w(Q1w{EnUFyiGG2u^szoeq8&Hq%JuY#|oitCmlcuO@lJD&?u4;gn z4D!qysK-h25LlLH+=U^xaL(>RIaZZ0$pr)aUd6e_*tT{Sq)a*Ep_<0cP&=`BYs{A2 zWz=>9x+XMn4LYM@lR0AkV_Pn%6Pvi^0!>8egG97 zNCc(3#*<5c4>B}Q4Zc{uO@lz5pDkkLZCYDuYGZ4AXMJ9V7EO>c=&p7ZiwRQX1V5ML=<_={B%b#}Ndx+tq>o>J=xDyX&tUm^EPFHz!XDl+ z1zMVfe*&-bKFp#IBWhzY-Gn^?uQwcyac*8$Q{8?R$~;ft>x!@ejjF-YAWpor{AzPN zpxkn9lzq&Ws>;Ix4M6I1fiX!4c>&&f@2|4 zD{pL^{FA`pf0v;y>Gg4`^Vo}!=|2}j!~OiSu7qA1i?Afe6hvyXWR26-z;Cztd+69Q zDz`wdvUed&x(sRv>-?*!g!kK+3Z^4EkpZmg9Lb@aFVj5gC+sWCzIY!x2N2}KZ_b2< U61-irZUbxnb}!CdnRDvoU&{XO{{R30 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/parallel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/parallel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..032633de5b6b1e463f87173c4514661cbb9a2ec2 GIT binary patch literal 3222 zcmds3&2JmW6`x%$C5j>``AfEBS()Y%s7OdBIi(GZrm9@1@rMw}F|sH?3^_w_rQO-h z%&t@lDo{W^_0k@C%ptiH@V~T&UV6&E(1X+88!lxEJB=TM&y z=d1Px+811XK5iz9;bPJXTS+@?C!Mg9EQL$1uMsaN*TQQaQ%h?8u#RtGcjTH{RM!tYb%WMWEp;7o6`D7odE=Wv-jugq)WbD-_bqxW@;3DD%JsMC z-I1%%TURT8^~|nX3s`tB+|UhmH@v6T!wtE($2RYYfzQ}hs*jb9l+Jl3jEG|uN2el> zQq9v5A4dmcWq4{Nag8rbAKFJo}{vf70*n197$z)evISE6(3=hffycHp6cfABp+j~kGRkh|J+V&t`f^*C`9^z+ak+Slk-t((5HuElj_+9 z6Ez$Q9ofYGqS^d_CnD=7MVv=iYN)Ke+?0=v5|Z|s$Y?ZDMrlmw7QqA)E>rzp&JPLzrgNouK2{Y*z^q!GHlL1~+;ys0C4d+w9=ZQ0 zS4IqC)x{n$BQG=njwdvx8s3}km}hAkTRt48*^dVDNarag7hD&~fJ`)kQlXFR``o5b z6;sHLm6`B3#k{j6EiWwAabsg)4irBYaRI9U;OPv}sp3PS0R(`dqaCILK1`D=RhqFD6@!YbM8f(VX#aWv>_li7<(N?iW zH=C66v@;x{OOP!?u$u2Rf`-@dny*Nj6|{X%$ZiH@K!j2@W{z1dT)3a1vBMg~?4de+ zTlg$xkR0HjdFMVr^-llsm|PW}=;nea5Z_G0iPqqG%9ViIR$++Xxd;bv8OP)JY({V# z+(v$H)z<~0HWKj#XK@8Kqj1wR%J|5QKS3i{1Sac7aPFUjB9tYP0PPHO+Q8>(GDv~= z4#8)NEO+CuRSX5~siY4RV_%3*EsjOxyu9m_;Kwygx>+-KaB{OsVvPiudMa+AR<`>T zS2KG3C7LW4p0Ne94*4TI12m9xJ3K!{C1<&J&d$BRZ2YlyR{Pc`bkF?nYR{Pu*9};} z&XIWc*oVw^@59yU{R&^@)<0|!L(NR-*r{R@N9?v3BoSa3tAwx+GnRAoR+-=-uy`X~ zVaVIb%7OJ$goO>fm9E?*vmgbxX_x$zeC=BmhZ|)2n8gR2H4^0{ioYtD+76WMQ}WyxZ!+42lW`DR-_Krh)c_s_ixYu0|kn)m;UHDCRY z*1VLf{y&TvOpS@_0$m%(mZlA0%?62gNL&fM<<~}=g7FMWmCZVyc^7}1p1J*>#XIGE zzc15azfTn;H&mKcY5)}*GCT6+rE3lN)zr~y?vWr53U6KM@5&-cCgx`}b}pY}G=!qv zERZ1jG>ar~0msb{tlsT|`(RW9x%bXnUr zCN*LE(Pvwq_xH9R_n+==KS6HZdA$Af+5QyS8nTFECFjl#A46%u5Mf;c*TL+_t?}vf zy7_?A?C&6g>kYrnXH2t6!Ao;Ac*$=*V)0=zMdR<$(XzR>*(DeQd DkqD7` literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/pkg_resources.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/pkg_resources.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25376c9b337aa4d2900c87d6ee426458aa318111 GIT binary patch literal 1884 zcmah}&5s*36t_K-?`$@^EVN6hm_sjfAXBvmgoLU}6i}tILR1Kmi#3V8iL;ZL!FIMv zlyaawaYWoG5Y zU3jmU@I~#VKWxBhQ`A9jh$hG_kZXn95^a#%Aa`U9ZXu>4x^ULr-q{m9koQ3DZ87_z z4`=&@9wrW6dE!vK11EjKAi5*h#jw7THWsmsR}UVS?AJOwS3>H*PGcKr84DB4FJZx{ zN~8%+bv6&;K!5_3rLkTPPD19ICCb&cvzEx&g2YqW9qQ&oY{3a~Y}p%$P-;FHKGD?iHP@mV~PCdySF!9^%-8Yj`hsszr?CR|ICE%aEL zLB4cN4iIHIZ=vr+P;~X~Zu$l#0$oqzxztU7{(t;4at`rp)T=Qk7fg4N?<2vmH>3xg z>rP{{O%b9>PmU{|?4l|T;5?v>q5$6jv+A$O49aj!{-CePci@OmEL%RICy`f=|kKz}fRpM}0{bv3VTh`;lNHcmToj?H$XvueW@O zgjcj<##-f;<8-(dQUgVgU~bcU{hZSj5TYp9be58*{F)gPdoqcD2#cN~5tGoj=O5L>~gX zX&Vee-$ZhZ1Pfafs>s=n$A$0Mhq?{~x53$OQlH)Q`d+_z1oX%&{+@&lSGUVtrIW%7 qT^K>t?ik*&0f*O4WO`6}zc#Imim$WknxAgseSjG^sOyMzy?+7Eajs+l literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..88ac683a8b24a1ed963f5ee701ce27f18cc59f62 GIT binary patch literal 3446 zcmZ`*&6C?m71x(#k1fySYqQCIfWj8*5k&SDP(_g;TPzfTP+>wb!+~Kbm+WraN@PiN z%QG3Ta-sG_!Hwe_;Fy1aKY%|&S5DmbK!t2Azt=5$Jd+@my8Cs%?tUM?_nx9|w{770 z(_i~fetXR@{zb&*(*^M(e9|)wgBi?Bj3er;#GG44*4#d_=gyI18q7Xwu(!F(9q!&X zcoVNhBi1-;FqbtyZydGOtD48HIa=V@V(rhJqpdZE-rG5|na8?VX|GpS=iBNY-LCH1 zK5MZZb_M($@LycJdgice>^j!GOJ}V(H&0ycJ=f#LnaAE@H?hCV%mX91^>4D%eqdM5 zqgWPI>v3MhSsEo(>wy1Z!P7C1dN5i%&ofc@ady|wN5X?rP^&F+(L{Wv|& z#u0(1-&V)n%Oerhu2@;)o_{#wKG_9`(YyQkDUC;bb!dNc_eJB~^FLuM)&TYO63{}l zys+z{iSPLjC;p*Wz+)_y(J0~4&$*BUbDvz{Yga5pEj}5emi{&8Y#bIbCjA2XoHO|n zHX1ACu%HxK+s{vcT`lI)3K#gs%WfE^Sx7R3XMG+@*aGnc>qeYxBc(uAckDl`3#tK1aNb>I=fYPzaViVkw(_BZYvtyGPvU2l zLl~{P2m+lK32fS_gzD8p{#fff0a3cbD;?qe!uX@9buVpZ!okh5$)LT`9b@I*COALF zJn~~b-(beV6u-t?qioc3t{8zvnP2UN-CFxWjR=yaYBGMzlPq6usmNtKmoHmks8ykG zu2l_z%$IJcLi;6nHN$;v?+x3CcW|l>-*;*B9yRY%^Cm~Uci9oOG|Cl^uuBpWj4jWy zO!a>0x}Mdt9Mc1;JnAj+4R8dGa!=*)=@g+n$y6k%ETWJ`=vqBgh3He2=UW&kYg@3j z_1uQdEmckI(i9(pLa(fc6{;@#fvLUSTHUm4hatuxWgBe{EsOX7M{7&GN%i+HtG+r< z>7HP(hGE0A+FH+VVlME`VW>=9?Fc^3>Wr600G=bVtPo`Usy)N604g(Om2*cZzi;KI zb?w*C?0|puQ1nt3RtEYf24xG-Y-ng=d<)>awE@#Dm5H3^ow7qgT4y4n8p@O%lxPCy zA!ghfu$@u^c80lT4cHFAN_-{eTBQbU2lxFMH2y@D8#-lMoPqA>lhZcFUVV!z{sF36 zx;1AnTFqfSwKBTjH)Tkh$oPWuIBA~f9 z0qeDxS|uwgRG(p&{0mhdPs4}fruDflvEyNVXmHH^Q=+o$HS>oH+71;X^9t7Kh zGGyfzr#WmTD2)q>FhOA@2tKI$g{Yhnex_B0Q3XIHQWdU(u&fT;s4uG0s3Oz);XGrD zgnx`bIYTluE%U~f^_A5%OuVm1Y*!@&_rKn|G$sn;>uUU^=dI`T%745&G=uMzcV%-; J?^Ne~@jse>O4tAZ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45ceae120b7ab0ee84c827ec0e0332ac1c52b1a4 GIT binary patch literal 6259 zcma)ATW=i4mG0a040|rTisD6=Hf7nGgdQ>pcH=OzVp*bWItry&vIS4#44P9#vZV_QymHym@cheN}jiXNmjaTu-Kh-sjX-p5adiK}rx@sGB zL;cOViN6t8tz13Vvg>v$U(dG+^+Ic?KGbsRPODfiwo3JqPV>#6+^WOBxYFoib zYqUP9>bYR7HC`WYP1Gk;+YU~(ChL>B#&hB+=H@};bp15iL%hVN_~g1Vtxaq7X;!Gu zWIcR(-JI6=G#mQRU=AxjvFfuJ8RApaOYnS3jg?p#V`ol`DL6G=VZ#_ddt$t(@MPG| z0n^BbIX2410C}FBI|1u*18Fm&_=a_y+tDgTa+PT$gL6+~ndwaQY?TzJYUtd{$U7AYRHj07zw#p2{C8gYjRnN z+B|H;S$9>Jvnyeo5Neuwr?b`;QIp53c8$%zUDekRR*&q?A^7LCNPvBwAkL_DQ%{bEn0_ zBzD&$;W9sN2i|Tb$&YpS7##zsb3}u_MHH#_-ld+74b;^Jo=c29GqF;gD24@UrKr85 zVMAe>XcJefIWdlzVi<+Y#hU?tD02@wQNpDeC*mVR8ns0+MIf{fSusPvLzg#r$RD=F zm9L^1(}FF-_)GT%@QnoxWTv*Vb~%WeUJzfY9ZZ5&TU(JIex$3dKZ$+(8CXbDV;hAw z&!c8`zw+G_(L+bE_E4-a~w-XA^ zyk^1~?L#ZufMdi4(!T>bv5R7Zk9rGrRr=Zy< z1>jt!g95E+Us=ZRAMt737X{zuUhvmsdoUwI_WU!@jz0s#Rlvox9L*9{l+~OpG+V5H z2%9@h<^n(Du`Ke3e$v1}PCBs|17wqSeemQ_Dd1DmCv}7(LfLy3)L$pt(aSMo%Sg=> zDw)8VJl4}(VlndryJx4iIubuWW>Z4uX4Xq>6(_^#wqQbWcHJa$JF)t~X2Sd&9$Qxd zDnvVevUzZ_qE6E8z$mGarM4%$maEpazH@B*W7erm|*-}g~W41zC+NN zCP=OOvul~H%E&=afIovJDY==H+($=5)?0E0%q+Q&`Uk$zKjJ;bmJ4aq*bY1F2c34n zVPmrexR)LgAJBnLnDjD+t4q$KY_#`?`P)9@qF1%WOV|WCe1ecH9>Ff1LtN6%P{@2A z1#ANyF>!&=*x7-UX23&Pym{;O#`TqVR<19#JOkl&h9 z9dq;U9Na-je}5y41fP4aT9PKzS{CEYXa`!%Ku>Wk%Td_qyUB=gIRWP+yhe2YNN0TL zn;4IqvYf%d!T2HyWw{f^JZTJ?`F<22D^SkHx(A=c8X0Xxwh@KFZgzr-w8s8(27ih= z)d~6?PGpL+)6ql;{@F_Nsy>B!KGntN5^YQG6%%92?3F?XEeow&uasze_P&;u?(4mB zS}tkP&9s1-dash^6o&64d37#xX^|Oe?y;e3NnvYf&)L^{!>KL4n-1?4Q=9yLnnz49 z(i=ffDIH<@K42d_=`JSatx7UXSWp|GFLmO7$A2`mRLe+*naQjV^1ab}TKKZ1C1bmP z*0tW4u65mXNc<_(*mGFg{!bPLzpmgzI!em-J7M>J%t&Nzf=?yt#BgaNBrWjZxQkL-kEe9cJ5So z7qidqYu`3{lfBdFah!@ogX3%~uE$q3hK(j(e)rS-Y8v9LZGUvX5+7Ht* zW<5!VP=AsoIreFJex->SRrvrhgJNVqEgMvg!}f&xZF=>y-?gv|h^O$2eC;0L^T%_eUr zlugWIhU+orQzAel7i-5jSdBu!>}>k*IW6vmvHPv}GB@KQ4mo01KEp}h-cY>gZhOKf zYHsMkM=JkFa}W4w3m@(i)Deim=x-bmX6-hmE|;nUqQ{Mv+LLvX(!86QvVj+iX~Aw7 zCA2{soXxvr*APHK;B0^_+Y@E+j_hvVuPgWr0!|ks20~qnlFgcXZ<9k{qz(tmAWFnN z_JLpqTMjK4C`8n3c0>$$(%fT8<8FHK0U`wbEk8u=0=5<91I*cc4;prmm<@cdAG=87 zSf@Ey-)eX4txgycM}3FqUX10)8ZwMH@ZwFu5x+Ni)kbigAe@kPwp#Uv`eqKu#6}_~ zq5voEURYLv&P7@R90zogH<6kgr=UBc22UY#YLc`VbVw|rr)oXZ9b4oLyU!z*pd`(m zyBN8OfNrFDDd_Oi6^+`WG5?YnYl`5~P&oGpZ{0*4F=E-1AXH;8zy8GsR4fJtB! z>>wkCeem02QgKh7T0%O0lEpbi+Qv=@B;dk9_T?uuE0)fY2*F1;r*Q?g_fcHrQE1sOliF$k^geiq}QHuhQ1oWLrK zk~#!R|6hfmGBJ|K1`lPDls!^*9MfS*wC^Ln{8zUJ@gX`v28rlG{{V5uJ=~L8cpoEj z3`f48#kEDmY4pB}PhD&nt4OpDsnN-*8ls3_wyB@thahkj(Ip6_+v<+P&g6pIRxKuD zr{x@_B}#if>3%*NZjh`8C$G_0l*22J45(_X(q#)>Ux@Qm&|(ECjvz6BJ4HLC4#mJD zswpmJ{|1>du|}!5HiWf*O8JpZN9dE0vgo0=>fBgWeqoiKyEm#A#5W1?+foN$H3=JKX%jsq|6?4_`ksq(E%$RJCkD&Os7VG;+CDy?pJ#Akt2&ZjYIK+P6$ zx2;^+&ZH2^^jB4FRkS-xp%g8Q-EJ`DtR>x;_bO}MFyiwfe%zZDolVi6f3hh=G~WtZ zo1#~d;?cbB(XdqI$DiK1z2q;ie5R(CKe@Sl$A55hdHJ?~{o3`L%c^p3`5%4VLrwV^ zCgY*>3l_d*Sc}NIGHwySgU3XsjF&3YkC9}?uJJEdc8rYm4b#|R0qfPd@tMJl2Sy*I z*roIeO5CvV+qIYxPkqlwuUFipFiP9n3#wJ_a$5^M>PEp|JhAI47t$^G>(68>6{3ck4T7@}K@!nMWD zcD9+sZ!f&Rn1-2{?_evjed%H+>?~p+wheo=*v-NyT_pMV5YR$rTg`4n$yyK{UetN4 zDAkr`m06XUtZd42s2h_Y$`C_gZyzEf46-m-7i(JF`>Lu2Z>6?9H3kr7?t_vbD zdq2As^RN|U!h>;Sn?iblH#V`Ctb3^UHbSU_N3(f3PY_MjE1sa6CG$Ctd|_C-B59`^ zmV6B#`8p+UP(m7cfct7HvO+-fXvz7vdl$!+ad5L1MgzVzbGn*yEjUo1hw`L8BhJD1 z9_usC_DLDc-WNAS=D{DWhZ|ifxOadDZ#@b&y!C{Hk@G#a7B7S5TpqH?#d^?Ust{{`%i1~e+9J8{q!zOSmj-%fZJ_Uo%j-+$B% zqN1hb`#fp+zV!5hpzz9GOOitJzl6~?PeBxCWetlB?!b<3il_s>)QW->?wPhdc@jfI z;E7t12$1b|pf9u^i45fS$a^nTwJNM`hG{YUpuz;CWd$Jdig50c%@b|!?p^3wM~YO$ z&?#UKa)g1V_wt#pWtj}ux|v8n7`lf}kZleNjwu(IW45E;Ytz zE$R41+ar$ULwClCXt)qNZ|h6Kxmpj<*Q%4<5=}#hXUR5UAT@`>^P~nVDTfUPOE` zx=ebU?U*qR06V6xG32{_W6$ba`)mg>2r$9slsXiTeYbBRE%j}=nU!gL`o+h_S1c>< zRrNkQP^IGg+U5{9Mlr!d+Xmj0Lc39_nq^kDT-&yRGZVj*(y9WdJ2K;-OG7 zcqmV=ULSGQ$6-MO(VX|=CdL-$3gQ1N1`K9CGcJi?AJ~i~p0*@`IAvyQIo{L)L=8Oy z3(;#J+0#~Pi!G@I}h3>xt3$e+T=#YbLUWImQoz$UOgOt}n zQI!f0G*I3jqf#$P(yaNA@y#arlF#t{e?yOyaIk@M2M`Ubn>MudsIKPSB|(=KLCL{m zAw%I*Gk6)93<|JkX4V!NG<21l-&ovw#=x4HIeRX*`{uq$4gyR$y{p%?v-ge-S30Dn zIK&Ds%u=n%UKo3HVpt$`d|~6jHUEOm!#G`pruFdYi`R03$3~A2yf@QENtsD1N%d42 zb4R&co4W#nNx2+c>~5N+xpSDH>SJs}E}`My@oMyIz_-<*FNb*?=;GeS~WUf(_IsR$LE%Yh`5&mL@bL6+N#1qTL~Z!H&hxZPN3G|Rn+8AaZ&@l8g{m> zPG93&K?{CpOnrj?fHOM^{c@cmjnTWdj+l$HN)!Qt6*Mk22x@BQi^|IyhXx_A zEa~@pHyU3NksQFqWB4A;okzj3+5b8?v3Fwr%Y`4ldF6X=z5UMj-~GXR@8bZY$^$9p zURj4MOY2phP=4^HWP^RS2am8%(1>N`EXk zQ2BjIJR}3(rE7Hr(UzfYM4Jb7`ft2>>?hB4;aC+MVivk~q@#2m@D9cUvJ>)vEh4vv zB*Xe~$H#WruDN9Vdp*XE9hj8*0@bED42v{-4HR|wdMzHA?a{T z_dG+BB5u>dZah3>5<#?q{meGobTEowvAMG12*$NuZw4}GLDN$TTBOEAWT=WyFp`Y1 zIKl-8a=5e#xkq6r-A*yL*BX+z?BNvUQKvY`hBWd4#r2~mpL&<*nr1Bl@lW(Er4FKq zlK_P4bg71e7V$QuQH*YkZ03)Uhw*}asc>8EDn|zKhEP@{VpYLyr_69slB!o*NqY^R zLeuk!8G>vig*J>>)ow3eTe`J!!@qv>+P(YA-b%u_;V7#WrSbvDD;BB>4xc>akh&_z z;)%YtIRs1934f#58Qq-z560$DyE23DQ~kfPbq>I#YEj8WX$Gaw4233& zf7fZ2|3s3bnH-vZZtj>nh{=04X({xM@7TJX4lVY+x#Q4P&Ys(M=!o*bh~Kh}th607 zW5;Di?_A&ADre=b3Us;o721CaV7KFb={`E2f3M)$N7Jhkg&haF{@X|A^O|g83;$jm z!c$IG+p7alIs1gC2xvPi@*}KT-k{_rB_AVcoRFhf@1&h5%yJJQsK-AcQ4UZ~C{^k1 z{becfhl7J7Rh%eydHE-|?yt(*)bS1_E0o-&#j7I;3>PZLk^Oh&n#p_zYtabFq`$RJAx^;@^Y(uL^SW%EiSg2IR1YTxY&4z3ws<2_dPou-=8?-wF%* zZ-s?+n6@O{u1Qi@RlyzTZ4Fp+ndmK|C94`aF>J0+SJkQhiv(8X2QeH;VZFZow?W_b z<@bJcO_yUbjo1i2X?71tXc#?I`D%X4`Xh21DPdzeO60#O=9yDw)tqz+#Pz>!Y05I$ QscQYC{?_WYYt_H_f7#&tn*aa+ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..01d37d9a80334df48f7e8eabe7c02bd52ff561db GIT binary patch literal 8486 zcmc&(+jHAidIt_b5TvN9<-3!>j=gI-GNokGZ0hx7oy2ycY*uk?XS2&m%0N7j1c?Ob zgG0+?z&xz76DKp7rZfB0x-IqAymdN#=v#OC)TjOdcx-1n*o zCDSP-9Gp82zRT~sz@MBf8~AZH~B8= zg6~${;=5h9`Ch0O`0mslz8C97+^v?|F4arza=qN1s85)*m)$D1EAxWGvFo#Eiqq}DPSa2wqJ!;gC_viUpC+a7H z1gZ_eJ!&B1THBIAZMkJPu(TXSPPhiE|XvLGX;&Zbn#@3V$ z)&x(=@&i*&$jV1{{i(nU%7J&>kdqIDoRZV%I~|m$CpaT#&^IgR(DyXvdFVOxz>@Rw zFnZ38_BkStqIE9tq~JY{$>V5$C#Ycd39LUUPoe!?d2zIZkWW6a;EV^RkNmi?YTe6Z{53Uck=J$OY_N zlj4?9UF@HFTZgSshe6`0pylg8dcJCIgm;6aR(?owvQo7&cUcF@Uu^}M{brcx%zdk) z!#MI=RWmEr!_IQF7Na`593|RsVH*ryQz}+fJDYl?{#@hQPj6paxwZV(%B^hb_RBZN z+mk=7k2k04%Qwc_*tHx)Nmm688LIxt)&6r{JC@y6;Dw17#oF`l`eBRC)<4zixBcHY zij5o<=&p*I^j3R6$h=|UdKFi4423p^ko;Y9z_rvMxkwGrO7vfOEzq9c2)t%jsUXr` zx9ule-u6b=-0;HaZrlRZybb?u7_ECc_7Y4Fu_9=9V&$u_)vGCbUR7iwPO<_o$GL3U z<_km3VC>88;zryK7Q@a~l5{&*s25kmWMkXk3R2}_aPl2 zGa#u>E72JY}6zIicA(`R|G(F%MCB9M4}58W&ThB;%prt`Hh z=WyX}RnV>obqX^;hyoEJd7Kgj4DU{FG5e*!|!}p3u+5qa5qqp5t2~oPZ)V|6nIH@6>lFjb*y^S=i@&If$GZj+f_4v z?Sgs&Zv;t++wC}NbX2ew-ebyUPTt6D6@dIC$76J!-td!gD*q6}$vg_fvWcpuZ8}74 zT&}53qaS=M?H?#}w6E3!ol{%Ty3voQy)Sn#ZP3_Fa|juO%z@fmCr!4vZlxl%)=3`i z)K0|~;h))mlZlg)cb~eXI_YI8bvmV2_$tn-Lo<^N3Z%6P5K5I4~0o1fAYbi70gS>fE#uN;yGig z^QbqeWBf-%W96hRrKyb_V;VMJidRU9td;O<=+DDt41(9B>toO6Q?S0AZh#978Lau; zmTmxqgGQ&-O&Yxk&7WMpzm=P-@1A2wW?4TF&U-@Y#ie@zu}R7*lECgv>On)1MUV` zkkH`_vuvs7aleg+xx^+ynapj)O}6}5aSbkj4x;@12oU#vq#h+)ER8oIbpSyF(h+4wD3KA#cFjk@Lptt?mZ0 z3e$A28Fa|Og08Dzz1#9tjsfkUy&9+-cd>I1GYN5WyEeY_c>;q4kI`Vk12`}uRCD`y zW)Bn2czy?N0eQM>&=YSpfHmY3jb5wft;7I+J_td~2sReRpY1g_{0N>E@P}+^oYeB| zL7mad0dsPsA=-|iO^wGhp;lp8f%>ghybTxnh3C}~C`SKJZeu!eE$7$=13Es4HrCdv zN6!S?!rb5X;;v3Yi6gV6^!AO4cOL5%*;;iNMJBdaSE@(U1l8@h6GT}NkD@2B8-E=Y zHo%!n8r@=7pMZ*L>W^p}a)8E+oV^)`*aQ!x1#Ep3`Hh(a!nFZ7ZV<_Y#4dA^4e~p) ziDumC(Iey4O@M7H2G0mga%7y$AM*lre4jQd&;dJ{g09QD))!S+N}? z37p+bV7f!Xyw>?9vX#4}5RBO^Y@S?3VU%3BxVAY3pRWQh#KvC*t%_L|;%i~gne(D7 zT&rvf^eqUQUH*#7DWPs)Jq!nvhR@8-F`Gcz8b5MU$U+keCMOv2?%RYP_r=iMWoH*i zb9TQ42Sr_w)<8sW?)7O4eJ@EHeJ}3!+333o{1VZ@S_ge=vWUJJT^Ksjy)W3bmf#K* zH_=LkEX#?{tbx`4NS9ag@@zv_djFCK$$Ij>xDU7W zzO`d>aQ)(vp{I6?PfX08)-zPfsR!1_#>eKz;$!P$d#xa+<;+JFa&|XovDTKepD`xl ziF1T{j9gp;a?Js`4*9zW$OT#cmdM452Jm9l`S!rY+Y$Qx{{t5gSCdNvuXH2Fn-TH? zt^e<_t8dlT`+d8nsZ^Ix7StsK=G3^y1HQ^k)xY?v9}%r&0GMru2sGdc6XKH{@N}<} zdvFYN=aRmqE?wvsx_a&6ivUIdM>D3t>=7rDG>bIp7HJbXk?Zh~-YX->GB=Gs7kBJi zx$g=;_6>|uq+MIeoZNyuh6a}j*XT?y{R1Zd4=$tsWH*B3F+|iZlND?wFQKwG5z2lW z)AE4wcPcw&+bG;j{u#x6OU=V!Kr8~c#5|5#1CGw77>NEG{i*wC0}RA~)a?bRo3&~8 z-XAGkVbhUt(SIS3d$JHc*R?e)(tNlx$Zh?6l;Oh4OT5zU{k3Tf;Ar$cK!vSKa8Sxn zc|_9W)VzcF65}6QQ8~Xa8B2KnaAMa`{|I0xT*3W5PS+3-o=kVndpIj>m>v?@Un2Jp zBzOn6hlFYm$zj~2hYtpq zyblJ7J=#icb%>!HqGv@+qgmO>H^XS_t=#xsJ#b$*^^{p~O0o*#T@p7WKi1-`JYp^6 zF>`PGiYKzcQm`Y|ScQOG8wuYD2|+UwLGii&dU zuuP|C6LAnxm64ViZSgA%CkrSHn4cM#A%VXs{LM{Fi3)mbOJD@OUx}|zI7m-8j`_QV z^aS)XiL1;=4f+2`T%A?Q;evi72tw8Go>q!Zi z%mS0t7HYY^ZcvTm5?JpM|AN0jXYw2hvfigauBn4dhG*`Nf*vz@L^E}dw&+p8l6)Y}#}F>!gtYG{kpZov+J9kkLh}r90>WGo z#1RKPQ6Hl35eXo!DApAQR}MF6A%27=bTLPM1xEq2Hpp}N+LF%x8c#k;cXa_Y1k>5=z21Sjy5&SVy^o}AwdsqS-N?oRS4AGto5G8>84_!g} z2vD7T{>Vx^6VIK@SA*YTIECbrv&()?^a}Vr-TODdG7@_I3wmZaD=j>aR=K&Cm9+OG+PP;z`{dK{m^Lj9kCShQGoRR_1m5?g zbgmf6)u;C8O0r)q_7|@M2Ud}W=3LGV&R%nV4Io0sfb^g?hO}cb5=L`1p%~}e#z_6e z0Eb4a#A5l7|;El!uR&AQ~BOIFk+h+=M^o=_dCvweCrK2ld`;5-!+73D^z5GIIM zMsSRvxYuSiV3o?I_fkuZ{K;AA8i&O&VJf06VieiL2tnK(Ij$U*wU$Ws!^U%y+s9Sab6H4D}~}KT#S%LnNT>7 zp7vrVij#10Bqhw5ugQ$fm{S&GG#Rwt*v?tt!IU}wNZ%QnMe&yDiV8kL@RN{V-M1B4 zr5OVqBi$fJ^6^X);WyEo(SppyC?QPAVMwPmw?wi4e6|pS*}8xjY(YEZU?GOOiaZkX zQW&-A14ac7*k_c%xruc)*0pqLSf-gtYk!9cT{&v#$)mLX9&$>Q*8&PePwHu8lM1|_ zAf4B<5_t2M#$T~p#-A~YEB$HCN#yynMZ~CZueUewd5weM{@nQJy^HHKp+54i^UpZB zDnLxnBf}ZBVqd~=tf{ySSzUnN&7`_Wq$269{=jP<_~uQdSMzi~X(6Ka{?m_n?vGBO z$fG)UU|TX*1%8W6h-!n>xqCs*o}vglE5k70$SkclsF&Oe?j5PPB1?PVkFbemanIZ) zQcWSea8@9gpnU;Qzo0db%40T>Q-j_2S79P@m#R<^_=Y1YUkS_ottcGhmW$RrS{3*S z0uqS7U)x3XDR!-zNX@KN7qeocfdp}*fy@IOByx->fvH%#o~4>k1v^Xpq7Dd5v&fN9 zB!P+yn4%m&b_{-5ZT}lwEzfpQLM%_1Jn`r-f1;}q#fWD~P8+5YIc$n(`^_EmB}lV1 zb8I0S{$}pixs3){`bHxs>in&@Z`^q6=Iv`&$G)^?7DBjeVwpZx>fEa<$Y8a*p4s$W zHM8K1kCfZ65OW4r0Nt zgoUj2gFlQx*JcsmHj4pw9Jclj>jLgFe1MYP1)PfZ6KtZVmCi+(6&DyZplCgNvj54` zX9o!}UM&j~O0H{JPOSO*v2!23$M7i%g5d@&uLJ{u=K| z8?`6w?> zGRa2I^Ma4Ync^%REO@y{i+r3`r+O;N_Xi)OD%bp8l}(PbBd*dauTt2kxrA`jTIYpI zAwo5%PEG%a>k)vFnoRke+gm6o8$vk3J_H6cNQhr$dMd5{jdT!DSfxwH045sE@QOI; zHRv3l<0aDmELepM!`NCyPD_@!vDF}F)0o2ZSd#&@vX2K+`IEu}0CTpoXi$%abjSl#^$G18!4fKo5L@9}q7;~81G+#Uu? zyd+BxByNa&)DY$$6ZtUg#~Dte2PM%15|rHKg&jp+-v&*1l?p zdZnWV&S24T0N7);zhdxc=bas-+p~Cq9O|;(j|8m!E8JnXEM9tz2UXoV+x=fv|EuMu zv^F)Hs>nVBdv^a@QPW9QQc)JC)HdB!^&xkP0&#`IHtmY;mO|4tPE5NHldPBus0unG zhlghmOHtl)O1B)i^F+~1a%y*6wG%KylvGc1MXMsy&w&AZ^umK%xb|G*)b;9xW%h+F z3)Hw}?@0F2{iI`Jr7fpUa%hLQ?5?*#n8;q#cD1xyO#Dq&)cjK^g_Q4DMHlQ3u9;)J zf|n*#TIS`E>1Aq?=c9saXit^+j!XuROjvRa!E6|2+wvy4z@O!ob$J&|>LCc^`zbcdNdcTF8GJ` Ux2SB3MDWY8ZIHFT@(2iU0rr literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa07eb0b24453a187057234a3996a95d0fe17466 GIT binary patch literal 3301 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/_log.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/_log.py new file mode 100644 index 0000000..92c4c6a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/_log.py @@ -0,0 +1,38 @@ +"""Customize logging + +Defines custom logger class for the `logger.verbose(...)` method. + +init_logging() must be called before any other modules that call logging.getLogger. +""" + +import logging +from typing import Any, cast + +# custom log level for `--verbose` output +# between DEBUG and INFO +VERBOSE = 15 + + +class VerboseLogger(logging.Logger): + """Custom Logger, defining a verbose log-level + + VERBOSE is between INFO and DEBUG. + """ + + def verbose(self, msg: str, *args: Any, **kwargs: Any) -> None: + return self.log(VERBOSE, msg, *args, **kwargs) + + +def getLogger(name: str) -> VerboseLogger: + """logging.getLogger, but ensures our VerboseLogger class is returned""" + return cast(VerboseLogger, logging.getLogger(name)) + + +def init_logging() -> None: + """Register our VerboseLogger and VERBOSE log level. + + Should be called before any calls to getLogger(), + i.e. in pip._internal.__init__ + """ + logging.setLoggerClass(VerboseLogger) + logging.addLevelName(VERBOSE, "VERBOSE") diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/appdirs.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/appdirs.py new file mode 100644 index 0000000..16933bf --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/appdirs.py @@ -0,0 +1,52 @@ +""" +This code wraps the vendored appdirs module to so the return values are +compatible for the current pip code base. + +The intention is to rewrite current usages gradually, keeping the tests pass, +and eventually drop this after all usages are changed. +""" + +import os +import sys +from typing import List + +from pip._vendor import platformdirs as _appdirs + + +def user_cache_dir(appname: str) -> str: + return _appdirs.user_cache_dir(appname, appauthor=False) + + +def _macos_user_config_dir(appname: str, roaming: bool = True) -> str: + # Use ~/Application Support/pip, if the directory exists. + path = _appdirs.user_data_dir(appname, appauthor=False, roaming=roaming) + if os.path.isdir(path): + return path + + # Use a Linux-like ~/.config/pip, by default. + linux_like_path = "~/.config/" + if appname: + linux_like_path = os.path.join(linux_like_path, appname) + + return os.path.expanduser(linux_like_path) + + +def user_config_dir(appname: str, roaming: bool = True) -> str: + if sys.platform == "darwin": + return _macos_user_config_dir(appname, roaming) + + return _appdirs.user_config_dir(appname, appauthor=False, roaming=roaming) + + +# for the discussion regarding site_config_dir locations +# see +def site_config_dirs(appname: str) -> List[str]: + if sys.platform == "darwin": + return [_appdirs.site_data_dir(appname, appauthor=False, multipath=True)] + + dirval = _appdirs.site_config_dir(appname, appauthor=False, multipath=True) + if sys.platform == "win32": + return [dirval] + + # Unix-y system. Look in /etc as well. + return dirval.split(os.pathsep) + ["/etc"] diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/compat.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/compat.py new file mode 100644 index 0000000..3f4d300 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/compat.py @@ -0,0 +1,63 @@ +"""Stuff that differs in different Python versions and platform +distributions.""" + +import logging +import os +import sys + +__all__ = ["get_path_uid", "stdlib_pkgs", "WINDOWS"] + + +logger = logging.getLogger(__name__) + + +def has_tls() -> bool: + try: + import _ssl # noqa: F401 # ignore unused + + return True + except ImportError: + pass + + from pip._vendor.urllib3.util import IS_PYOPENSSL + + return IS_PYOPENSSL + + +def get_path_uid(path: str) -> int: + """ + Return path's uid. + + Does not follow symlinks: + https://github.com/pypa/pip/pull/935#discussion_r5307003 + + Placed this function in compat due to differences on AIX and + Jython, that should eventually go away. + + :raises OSError: When path is a symlink or can't be read. + """ + if hasattr(os, "O_NOFOLLOW"): + fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW) + file_uid = os.fstat(fd).st_uid + os.close(fd) + else: # AIX and Jython + # WARNING: time of check vulnerability, but best we can do w/o NOFOLLOW + if not os.path.islink(path): + # older versions of Jython don't have `os.fstat` + file_uid = os.stat(path).st_uid + else: + # raise OSError for parity with os.O_NOFOLLOW above + raise OSError(f"{path} is a symlink; Will not return uid for symlinks") + return file_uid + + +# packages in the stdlib that may have installation metadata, but should not be +# considered 'installed'. this theoretically could be determined based on +# dist.location (py27:`sysconfig.get_paths()['stdlib']`, +# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may +# make this ineffective, so hard-coding +stdlib_pkgs = {"python", "wsgiref", "argparse"} + + +# windows detection, covers cpython and ironpython +WINDOWS = sys.platform.startswith("win") or (sys.platform == "cli" and os.name == "nt") diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/compatibility_tags.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/compatibility_tags.py new file mode 100644 index 0000000..b6ed9a7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/compatibility_tags.py @@ -0,0 +1,165 @@ +"""Generate and work with PEP 425 Compatibility Tags. +""" + +import re +from typing import List, Optional, Tuple + +from pip._vendor.packaging.tags import ( + PythonVersion, + Tag, + compatible_tags, + cpython_tags, + generic_tags, + interpreter_name, + interpreter_version, + mac_platforms, +) + +_osx_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)") + + +def version_info_to_nodot(version_info: Tuple[int, ...]) -> str: + # Only use up to the first two numbers. + return "".join(map(str, version_info[:2])) + + +def _mac_platforms(arch: str) -> List[str]: + match = _osx_arch_pat.match(arch) + if match: + name, major, minor, actual_arch = match.groups() + mac_version = (int(major), int(minor)) + arches = [ + # Since we have always only checked that the platform starts + # with "macosx", for backwards-compatibility we extract the + # actual prefix provided by the user in case they provided + # something like "macosxcustom_". It may be good to remove + # this as undocumented or deprecate it in the future. + "{}_{}".format(name, arch[len("macosx_") :]) + for arch in mac_platforms(mac_version, actual_arch) + ] + else: + # arch pattern didn't match (?!) + arches = [arch] + return arches + + +def _custom_manylinux_platforms(arch: str) -> List[str]: + arches = [arch] + arch_prefix, arch_sep, arch_suffix = arch.partition("_") + if arch_prefix == "manylinux2014": + # manylinux1/manylinux2010 wheels run on most manylinux2014 systems + # with the exception of wheels depending on ncurses. PEP 599 states + # manylinux1/manylinux2010 wheels should be considered + # manylinux2014 wheels: + # https://www.python.org/dev/peps/pep-0599/#backwards-compatibility-with-manylinux2010-wheels + if arch_suffix in {"i686", "x86_64"}: + arches.append("manylinux2010" + arch_sep + arch_suffix) + arches.append("manylinux1" + arch_sep + arch_suffix) + elif arch_prefix == "manylinux2010": + # manylinux1 wheels run on most manylinux2010 systems with the + # exception of wheels depending on ncurses. PEP 571 states + # manylinux1 wheels should be considered manylinux2010 wheels: + # https://www.python.org/dev/peps/pep-0571/#backwards-compatibility-with-manylinux1-wheels + arches.append("manylinux1" + arch_sep + arch_suffix) + return arches + + +def _get_custom_platforms(arch: str) -> List[str]: + arch_prefix, arch_sep, arch_suffix = arch.partition("_") + if arch.startswith("macosx"): + arches = _mac_platforms(arch) + elif arch_prefix in ["manylinux2014", "manylinux2010"]: + arches = _custom_manylinux_platforms(arch) + else: + arches = [arch] + return arches + + +def _expand_allowed_platforms(platforms: Optional[List[str]]) -> Optional[List[str]]: + if not platforms: + return None + + seen = set() + result = [] + + for p in platforms: + if p in seen: + continue + additions = [c for c in _get_custom_platforms(p) if c not in seen] + seen.update(additions) + result.extend(additions) + + return result + + +def _get_python_version(version: str) -> PythonVersion: + if len(version) > 1: + return int(version[0]), int(version[1:]) + else: + return (int(version[0]),) + + +def _get_custom_interpreter( + implementation: Optional[str] = None, version: Optional[str] = None +) -> str: + if implementation is None: + implementation = interpreter_name() + if version is None: + version = interpreter_version() + return f"{implementation}{version}" + + +def get_supported( + version: Optional[str] = None, + platforms: Optional[List[str]] = None, + impl: Optional[str] = None, + abis: Optional[List[str]] = None, +) -> List[Tag]: + """Return a list of supported tags for each version specified in + `versions`. + + :param version: a string version, of the form "33" or "32", + or None. The version will be assumed to support our ABI. + :param platform: specify a list of platforms you want valid + tags for, or None. If None, use the local system platform. + :param impl: specify the exact implementation you want valid + tags for, or None. If None, use the local interpreter impl. + :param abis: specify a list of abis you want valid + tags for, or None. If None, use the local interpreter abi. + """ + supported: List[Tag] = [] + + python_version: Optional[PythonVersion] = None + if version is not None: + python_version = _get_python_version(version) + + interpreter = _get_custom_interpreter(impl, version) + + platforms = _expand_allowed_platforms(platforms) + + is_cpython = (impl or interpreter_name()) == "cp" + if is_cpython: + supported.extend( + cpython_tags( + python_version=python_version, + abis=abis, + platforms=platforms, + ) + ) + else: + supported.extend( + generic_tags( + interpreter=interpreter, + abis=abis, + platforms=platforms, + ) + ) + supported.extend( + compatible_tags( + python_version=python_version, + interpreter=interpreter, + platforms=platforms, + ) + ) + + return supported diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/datetime.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/datetime.py new file mode 100644 index 0000000..8668b3b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/datetime.py @@ -0,0 +1,11 @@ +"""For when pip wants to check the date or time. +""" + +import datetime + + +def today_is_later_than(year: int, month: int, day: int) -> bool: + today = datetime.date.today() + given = datetime.date(year, month, day) + + return today > given diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/deprecation.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/deprecation.py new file mode 100644 index 0000000..72bd6f2 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/deprecation.py @@ -0,0 +1,120 @@ +""" +A module that implements tooling to enable easy warnings about deprecations. +""" + +import logging +import warnings +from typing import Any, Optional, TextIO, Type, Union + +from pip._vendor.packaging.version import parse + +from pip import __version__ as current_version # NOTE: tests patch this name. + +DEPRECATION_MSG_PREFIX = "DEPRECATION: " + + +class PipDeprecationWarning(Warning): + pass + + +_original_showwarning: Any = None + + +# Warnings <-> Logging Integration +def _showwarning( + message: Union[Warning, str], + category: Type[Warning], + filename: str, + lineno: int, + file: Optional[TextIO] = None, + line: Optional[str] = None, +) -> None: + if file is not None: + if _original_showwarning is not None: + _original_showwarning(message, category, filename, lineno, file, line) + elif issubclass(category, PipDeprecationWarning): + # We use a specially named logger which will handle all of the + # deprecation messages for pip. + logger = logging.getLogger("pip._internal.deprecations") + logger.warning(message) + else: + _original_showwarning(message, category, filename, lineno, file, line) + + +def install_warning_logger() -> None: + # Enable our Deprecation Warnings + warnings.simplefilter("default", PipDeprecationWarning, append=True) + + global _original_showwarning + + if _original_showwarning is None: + _original_showwarning = warnings.showwarning + warnings.showwarning = _showwarning + + +def deprecated( + *, + reason: str, + replacement: Optional[str], + gone_in: Optional[str], + feature_flag: Optional[str] = None, + issue: Optional[int] = None, +) -> None: + """Helper to deprecate existing functionality. + + reason: + Textual reason shown to the user about why this functionality has + been deprecated. Should be a complete sentence. + replacement: + Textual suggestion shown to the user about what alternative + functionality they can use. + gone_in: + The version of pip does this functionality should get removed in. + Raises an error if pip's current version is greater than or equal to + this. + feature_flag: + Command-line flag of the form --use-feature={feature_flag} for testing + upcoming functionality. + issue: + Issue number on the tracker that would serve as a useful place for + users to find related discussion and provide feedback. + """ + + # Determine whether or not the feature is already gone in this version. + is_gone = gone_in is not None and parse(current_version) >= parse(gone_in) + + message_parts = [ + (reason, f"{DEPRECATION_MSG_PREFIX}{{}}"), + ( + gone_in, + "pip {} will enforce this behaviour change." + if not is_gone + else "Since pip {}, this is no longer supported.", + ), + ( + replacement, + "A possible replacement is {}.", + ), + ( + feature_flag, + "You can use the flag --use-feature={} to test the upcoming behaviour." + if not is_gone + else None, + ), + ( + issue, + "Discussion can be found at https://github.com/pypa/pip/issues/{}", + ), + ] + + message = " ".join( + format_str.format(value) + for value, format_str in message_parts + if format_str is not None and value is not None + ) + + # Raise as an error if this behaviour is deprecated. + if is_gone: + raise PipDeprecationWarning(message) + + warnings.warn(message, category=PipDeprecationWarning, stacklevel=2) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/direct_url_helpers.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/direct_url_helpers.py new file mode 100644 index 0000000..0e8e5e1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/direct_url_helpers.py @@ -0,0 +1,87 @@ +from typing import Optional + +from pip._internal.models.direct_url import ArchiveInfo, DirectUrl, DirInfo, VcsInfo +from pip._internal.models.link import Link +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import vcs + + +def direct_url_as_pep440_direct_reference(direct_url: DirectUrl, name: str) -> str: + """Convert a DirectUrl to a pip requirement string.""" + direct_url.validate() # if invalid, this is a pip bug + requirement = name + " @ " + fragments = [] + if isinstance(direct_url.info, VcsInfo): + requirement += "{}+{}@{}".format( + direct_url.info.vcs, direct_url.url, direct_url.info.commit_id + ) + elif isinstance(direct_url.info, ArchiveInfo): + requirement += direct_url.url + if direct_url.info.hash: + fragments.append(direct_url.info.hash) + else: + assert isinstance(direct_url.info, DirInfo) + requirement += direct_url.url + if direct_url.subdirectory: + fragments.append("subdirectory=" + direct_url.subdirectory) + if fragments: + requirement += "#" + "&".join(fragments) + return requirement + + +def direct_url_for_editable(source_dir: str) -> DirectUrl: + return DirectUrl( + url=path_to_url(source_dir), + info=DirInfo(editable=True), + ) + + +def direct_url_from_link( + link: Link, source_dir: Optional[str] = None, link_is_in_wheel_cache: bool = False +) -> DirectUrl: + if link.is_vcs: + vcs_backend = vcs.get_backend_for_scheme(link.scheme) + assert vcs_backend + url, requested_revision, _ = vcs_backend.get_url_rev_and_auth( + link.url_without_fragment + ) + # For VCS links, we need to find out and add commit_id. + if link_is_in_wheel_cache: + # If the requested VCS link corresponds to a cached + # wheel, it means the requested revision was an + # immutable commit hash, otherwise it would not have + # been cached. In that case we don't have a source_dir + # with the VCS checkout. + assert requested_revision + commit_id = requested_revision + else: + # If the wheel was not in cache, it means we have + # had to checkout from VCS to build and we have a source_dir + # which we can inspect to find out the commit id. + assert source_dir + commit_id = vcs_backend.get_revision(source_dir) + return DirectUrl( + url=url, + info=VcsInfo( + vcs=vcs_backend.name, + commit_id=commit_id, + requested_revision=requested_revision, + ), + subdirectory=link.subdirectory_fragment, + ) + elif link.is_existing_dir(): + return DirectUrl( + url=link.url_without_fragment, + info=DirInfo(), + subdirectory=link.subdirectory_fragment, + ) + else: + hash = None + hash_name = link.hash_name + if hash_name: + hash = f"{hash_name}={link.hash}" + return DirectUrl( + url=link.url_without_fragment, + info=ArchiveInfo(hash=hash), + subdirectory=link.subdirectory_fragment, + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/distutils_args.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/distutils_args.py new file mode 100644 index 0000000..e4aa5b8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/distutils_args.py @@ -0,0 +1,42 @@ +from distutils.errors import DistutilsArgError +from distutils.fancy_getopt import FancyGetopt +from typing import Dict, List + +_options = [ + ("exec-prefix=", None, ""), + ("home=", None, ""), + ("install-base=", None, ""), + ("install-data=", None, ""), + ("install-headers=", None, ""), + ("install-lib=", None, ""), + ("install-platlib=", None, ""), + ("install-purelib=", None, ""), + ("install-scripts=", None, ""), + ("prefix=", None, ""), + ("root=", None, ""), + ("user", None, ""), +] + + +# typeshed doesn't permit Tuple[str, None, str], see python/typeshed#3469. +_distutils_getopt = FancyGetopt(_options) # type: ignore + + +def parse_distutils_args(args: List[str]) -> Dict[str, str]: + """Parse provided arguments, returning an object that has the + matched arguments. + + Any unknown arguments are ignored. + """ + result = {} + for arg in args: + try: + _, match = _distutils_getopt.getopt(args=[arg]) + except DistutilsArgError: + # We don't care about any other options, which here may be + # considered unrecognized since our option list is not + # exhaustive. + pass + else: + result.update(match.__dict__) + return result diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/egg_link.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/egg_link.py new file mode 100644 index 0000000..9e0da8d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/egg_link.py @@ -0,0 +1,75 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import os +import re +import sys +from typing import Optional + +from pip._internal.locations import site_packages, user_site +from pip._internal.utils.virtualenv import ( + running_under_virtualenv, + virtualenv_no_global, +) + +__all__ = [ + "egg_link_path_from_sys_path", + "egg_link_path_from_location", +] + + +def _egg_link_name(raw_name: str) -> str: + """ + Convert a Name metadata value to a .egg-link name, by applying + the same substitution as pkg_resources's safe_name function. + Note: we cannot use canonicalize_name because it has a different logic. + """ + return re.sub("[^A-Za-z0-9.]+", "-", raw_name) + ".egg-link" + + +def egg_link_path_from_sys_path(raw_name: str) -> Optional[str]: + """ + Look for a .egg-link file for project name, by walking sys.path. + """ + egg_link_name = _egg_link_name(raw_name) + for path_item in sys.path: + egg_link = os.path.join(path_item, egg_link_name) + if os.path.isfile(egg_link): + return egg_link + return None + + +def egg_link_path_from_location(raw_name: str) -> Optional[str]: + """ + Return the path for the .egg-link file if it exists, otherwise, None. + + There's 3 scenarios: + 1) not in a virtualenv + try to find in site.USER_SITE, then site_packages + 2) in a no-global virtualenv + try to find in site_packages + 3) in a yes-global virtualenv + try to find in site_packages, then site.USER_SITE + (don't look in global location) + + For #1 and #3, there could be odd cases, where there's an egg-link in 2 + locations. + + This method will just return the first one found. + """ + sites = [] + if running_under_virtualenv(): + sites.append(site_packages) + if not virtualenv_no_global() and user_site: + sites.append(user_site) + else: + if user_site: + sites.append(user_site) + sites.append(site_packages) + + egg_link_name = _egg_link_name(raw_name) + for site in sites: + egglink = os.path.join(site, egg_link_name) + if os.path.isfile(egglink): + return egglink + return None diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/encoding.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/encoding.py new file mode 100644 index 0000000..1c73f6c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/encoding.py @@ -0,0 +1,36 @@ +import codecs +import locale +import re +import sys +from typing import List, Tuple + +BOMS: List[Tuple[bytes, str]] = [ + (codecs.BOM_UTF8, "utf-8"), + (codecs.BOM_UTF16, "utf-16"), + (codecs.BOM_UTF16_BE, "utf-16-be"), + (codecs.BOM_UTF16_LE, "utf-16-le"), + (codecs.BOM_UTF32, "utf-32"), + (codecs.BOM_UTF32_BE, "utf-32-be"), + (codecs.BOM_UTF32_LE, "utf-32-le"), +] + +ENCODING_RE = re.compile(br"coding[:=]\s*([-\w.]+)") + + +def auto_decode(data: bytes) -> str: + """Check a bytes string for a BOM to correctly detect the encoding + + Fallback to locale.getpreferredencoding(False) like open() on Python3""" + for bom, encoding in BOMS: + if data.startswith(bom): + return data[len(bom) :].decode(encoding) + # Lets check the first two lines as in PEP263 + for line in data.split(b"\n")[:2]: + if line[0:1] == b"#" and ENCODING_RE.search(line): + result = ENCODING_RE.search(line) + assert result is not None + encoding = result.groups()[0].decode("ascii") + return data.decode(encoding) + return data.decode( + locale.getpreferredencoding(False) or sys.getdefaultencoding(), + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/entrypoints.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/entrypoints.py new file mode 100644 index 0000000..07d941b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/entrypoints.py @@ -0,0 +1,28 @@ +import sys +from typing import List, Optional + +from pip._internal.cli.main import main + + +def _wrapper(args: Optional[List[str]] = None, _nowarn: bool = False) -> int: + """Central wrapper for all old entrypoints. + + Historically pip has had several entrypoints defined. Because of issues + arising from PATH, sys.path, multiple Pythons, their interactions, and most + of them having a pip installed, users suffer every time an entrypoint gets + moved. + + To alleviate this pain, and provide a mechanism for warning users and + directing them to an appropriate place for help, we now define all of + our old entrypoints as wrappers for the current one. + """ + if not _nowarn: + sys.stderr.write( + "WARNING: pip is being invoked by an old script wrapper. This will " + "fail in a future version of pip.\n" + "Please see https://github.com/pypa/pip/issues/5599 for advice on " + "fixing the underlying issue.\n" + "To avoid this problem you can invoke Python with '-m pip' instead of " + "running pip directly.\n" + ) + return main(args) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/filesystem.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/filesystem.py new file mode 100644 index 0000000..b7e6191 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/filesystem.py @@ -0,0 +1,182 @@ +import fnmatch +import os +import os.path +import random +import shutil +import stat +import sys +from contextlib import contextmanager +from tempfile import NamedTemporaryFile +from typing import Any, BinaryIO, Iterator, List, Union, cast + +from pip._vendor.tenacity import retry, stop_after_delay, wait_fixed + +from pip._internal.utils.compat import get_path_uid +from pip._internal.utils.misc import format_size + + +def check_path_owner(path: str) -> bool: + # If we don't have a way to check the effective uid of this process, then + # we'll just assume that we own the directory. + if sys.platform == "win32" or not hasattr(os, "geteuid"): + return True + + assert os.path.isabs(path) + + previous = None + while path != previous: + if os.path.lexists(path): + # Check if path is writable by current user. + if os.geteuid() == 0: + # Special handling for root user in order to handle properly + # cases where users use sudo without -H flag. + try: + path_uid = get_path_uid(path) + except OSError: + return False + return path_uid == 0 + else: + return os.access(path, os.W_OK) + else: + previous, path = path, os.path.dirname(path) + return False # assume we don't own the path + + +def copy2_fixed(src: str, dest: str) -> None: + """Wrap shutil.copy2() but map errors copying socket files to + SpecialFileError as expected. + + See also https://bugs.python.org/issue37700. + """ + try: + shutil.copy2(src, dest) + except OSError: + for f in [src, dest]: + try: + is_socket_file = is_socket(f) + except OSError: + # An error has already occurred. Another error here is not + # a problem and we can ignore it. + pass + else: + if is_socket_file: + raise shutil.SpecialFileError(f"`{f}` is a socket") + + raise + + +def is_socket(path: str) -> bool: + return stat.S_ISSOCK(os.lstat(path).st_mode) + + +@contextmanager +def adjacent_tmp_file(path: str, **kwargs: Any) -> Iterator[BinaryIO]: + """Return a file-like object pointing to a tmp file next to path. + + The file is created securely and is ensured to be written to disk + after the context reaches its end. + + kwargs will be passed to tempfile.NamedTemporaryFile to control + the way the temporary file will be opened. + """ + with NamedTemporaryFile( + delete=False, + dir=os.path.dirname(path), + prefix=os.path.basename(path), + suffix=".tmp", + **kwargs, + ) as f: + result = cast(BinaryIO, f) + try: + yield result + finally: + result.flush() + os.fsync(result.fileno()) + + +# Tenacity raises RetryError by default, explicitly raise the original exception +_replace_retry = retry(reraise=True, stop=stop_after_delay(1), wait=wait_fixed(0.25)) + +replace = _replace_retry(os.replace) + + +# test_writable_dir and _test_writable_dir_win are copied from Flit, +# with the author's agreement to also place them under pip's license. +def test_writable_dir(path: str) -> bool: + """Check if a directory is writable. + + Uses os.access() on POSIX, tries creating files on Windows. + """ + # If the directory doesn't exist, find the closest parent that does. + while not os.path.isdir(path): + parent = os.path.dirname(path) + if parent == path: + break # Should never get here, but infinite loops are bad + path = parent + + if os.name == "posix": + return os.access(path, os.W_OK) + + return _test_writable_dir_win(path) + + +def _test_writable_dir_win(path: str) -> bool: + # os.access doesn't work on Windows: http://bugs.python.org/issue2528 + # and we can't use tempfile: http://bugs.python.org/issue22107 + basename = "accesstest_deleteme_fishfingers_custard_" + alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" + for _ in range(10): + name = basename + "".join(random.choice(alphabet) for _ in range(6)) + file = os.path.join(path, name) + try: + fd = os.open(file, os.O_RDWR | os.O_CREAT | os.O_EXCL) + except FileExistsError: + pass + except PermissionError: + # This could be because there's a directory with the same name. + # But it's highly unlikely there's a directory called that, + # so we'll assume it's because the parent dir is not writable. + # This could as well be because the parent dir is not readable, + # due to non-privileged user access. + return False + else: + os.close(fd) + os.unlink(file) + return True + + # This should never be reached + raise OSError("Unexpected condition testing for writable directory") + + +def find_files(path: str, pattern: str) -> List[str]: + """Returns a list of absolute paths of files beneath path, recursively, + with filenames which match the UNIX-style shell glob pattern.""" + result: List[str] = [] + for root, _, files in os.walk(path): + matches = fnmatch.filter(files, pattern) + result.extend(os.path.join(root, f) for f in matches) + return result + + +def file_size(path: str) -> Union[int, float]: + # If it's a symlink, return 0. + if os.path.islink(path): + return 0 + return os.path.getsize(path) + + +def format_file_size(path: str) -> str: + return format_size(file_size(path)) + + +def directory_size(path: str) -> Union[int, float]: + size = 0.0 + for root, _dirs, files in os.walk(path): + for filename in files: + file_path = os.path.join(root, filename) + size += file_size(file_path) + return size + + +def format_directory_size(path: str) -> str: + return format_size(directory_size(path)) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/filetypes.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/filetypes.py new file mode 100644 index 0000000..5948570 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/filetypes.py @@ -0,0 +1,27 @@ +"""Filetype information. +""" + +from typing import Tuple + +from pip._internal.utils.misc import splitext + +WHEEL_EXTENSION = ".whl" +BZ2_EXTENSIONS: Tuple[str, ...] = (".tar.bz2", ".tbz") +XZ_EXTENSIONS: Tuple[str, ...] = ( + ".tar.xz", + ".txz", + ".tlz", + ".tar.lz", + ".tar.lzma", +) +ZIP_EXTENSIONS: Tuple[str, ...] = (".zip", WHEEL_EXTENSION) +TAR_EXTENSIONS: Tuple[str, ...] = (".tar.gz", ".tgz", ".tar") +ARCHIVE_EXTENSIONS = ZIP_EXTENSIONS + BZ2_EXTENSIONS + TAR_EXTENSIONS + XZ_EXTENSIONS + + +def is_archive_file(name: str) -> bool: + """Return True if `name` is a considered as an archive file.""" + ext = splitext(name)[1].lower() + if ext in ARCHIVE_EXTENSIONS: + return True + return False diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/glibc.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/glibc.py new file mode 100644 index 0000000..7bd3c20 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/glibc.py @@ -0,0 +1,88 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import os +import sys +from typing import Optional, Tuple + + +def glibc_version_string() -> Optional[str]: + "Returns glibc version string, or None if not using glibc." + return glibc_version_string_confstr() or glibc_version_string_ctypes() + + +def glibc_version_string_confstr() -> Optional[str]: + "Primary implementation of glibc_version_string using os.confstr." + # os.confstr is quite a bit faster than ctypes.DLL. It's also less likely + # to be broken or missing. This strategy is used in the standard library + # platform module: + # https://github.com/python/cpython/blob/fcf1d003bf4f0100c9d0921ff3d70e1127ca1b71/Lib/platform.py#L175-L183 + if sys.platform == "win32": + return None + try: + # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17": + _, version = os.confstr("CS_GNU_LIBC_VERSION").split() + except (AttributeError, OSError, ValueError): + # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... + return None + return version + + +def glibc_version_string_ctypes() -> Optional[str]: + "Fallback implementation of glibc_version_string using ctypes." + + try: + import ctypes + except ImportError: + return None + + # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen + # manpage says, "If filename is NULL, then the returned handle is for the + # main program". This way we can let the linker do the work to figure out + # which libc our process is actually using. + process_namespace = ctypes.CDLL(None) + try: + gnu_get_libc_version = process_namespace.gnu_get_libc_version + except AttributeError: + # Symbol doesn't exist -> therefore, we are not linked to + # glibc. + return None + + # Call gnu_get_libc_version, which returns a string like "2.5" + gnu_get_libc_version.restype = ctypes.c_char_p + version_str = gnu_get_libc_version() + # py2 / py3 compatibility: + if not isinstance(version_str, str): + version_str = version_str.decode("ascii") + + return version_str + + +# platform.libc_ver regularly returns completely nonsensical glibc +# versions. E.g. on my computer, platform says: +# +# ~$ python2.7 -c 'import platform; print(platform.libc_ver())' +# ('glibc', '2.7') +# ~$ python3.5 -c 'import platform; print(platform.libc_ver())' +# ('glibc', '2.9') +# +# But the truth is: +# +# ~$ ldd --version +# ldd (Debian GLIBC 2.22-11) 2.22 +# +# This is unfortunate, because it means that the linehaul data on libc +# versions that was generated by pip 8.1.2 and earlier is useless and +# misleading. Solution: instead of using platform, use our code that actually +# works. +def libc_ver() -> Tuple[str, str]: + """Try to determine the glibc version + + Returns a tuple of strings (lib, version) which default to empty strings + in case the lookup fails. + """ + glibc_version = glibc_version_string() + if glibc_version is None: + return ("", "") + else: + return ("glibc", glibc_version) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/hashes.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/hashes.py new file mode 100644 index 0000000..82eb035 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/hashes.py @@ -0,0 +1,144 @@ +import hashlib +from typing import TYPE_CHECKING, BinaryIO, Dict, Iterator, List + +from pip._internal.exceptions import HashMismatch, HashMissing, InstallationError +from pip._internal.utils.misc import read_chunks + +if TYPE_CHECKING: + from hashlib import _Hash + + # NoReturn introduced in 3.6.2; imported only for type checking to maintain + # pip compatibility with older patch versions of Python 3.6 + from typing import NoReturn + + +# The recommended hash algo of the moment. Change this whenever the state of +# the art changes; it won't hurt backward compatibility. +FAVORITE_HASH = "sha256" + + +# Names of hashlib algorithms allowed by the --hash option and ``pip hash`` +# Currently, those are the ones at least as collision-resistant as sha256. +STRONG_HASHES = ["sha256", "sha384", "sha512"] + + +class Hashes: + """A wrapper that builds multiple hashes at once and checks them against + known-good values + + """ + + def __init__(self, hashes: Dict[str, List[str]] = None) -> None: + """ + :param hashes: A dict of algorithm names pointing to lists of allowed + hex digests + """ + allowed = {} + if hashes is not None: + for alg, keys in hashes.items(): + # Make sure values are always sorted (to ease equality checks) + allowed[alg] = sorted(keys) + self._allowed = allowed + + def __and__(self, other: "Hashes") -> "Hashes": + if not isinstance(other, Hashes): + return NotImplemented + + # If either of the Hashes object is entirely empty (i.e. no hash + # specified at all), all hashes from the other object are allowed. + if not other: + return self + if not self: + return other + + # Otherwise only hashes that present in both objects are allowed. + new = {} + for alg, values in other._allowed.items(): + if alg not in self._allowed: + continue + new[alg] = [v for v in values if v in self._allowed[alg]] + return Hashes(new) + + @property + def digest_count(self) -> int: + return sum(len(digests) for digests in self._allowed.values()) + + def is_hash_allowed(self, hash_name: str, hex_digest: str) -> bool: + """Return whether the given hex digest is allowed.""" + return hex_digest in self._allowed.get(hash_name, []) + + def check_against_chunks(self, chunks: Iterator[bytes]) -> None: + """Check good hashes against ones built from iterable of chunks of + data. + + Raise HashMismatch if none match. + + """ + gots = {} + for hash_name in self._allowed.keys(): + try: + gots[hash_name] = hashlib.new(hash_name) + except (ValueError, TypeError): + raise InstallationError(f"Unknown hash name: {hash_name}") + + for chunk in chunks: + for hash in gots.values(): + hash.update(chunk) + + for hash_name, got in gots.items(): + if got.hexdigest() in self._allowed[hash_name]: + return + self._raise(gots) + + def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn": + raise HashMismatch(self._allowed, gots) + + def check_against_file(self, file: BinaryIO) -> None: + """Check good hashes against a file-like object + + Raise HashMismatch if none match. + + """ + return self.check_against_chunks(read_chunks(file)) + + def check_against_path(self, path: str) -> None: + with open(path, "rb") as file: + return self.check_against_file(file) + + def __bool__(self) -> bool: + """Return whether I know any known-good hashes.""" + return bool(self._allowed) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Hashes): + return NotImplemented + return self._allowed == other._allowed + + def __hash__(self) -> int: + return hash( + ",".join( + sorted( + ":".join((alg, digest)) + for alg, digest_list in self._allowed.items() + for digest in digest_list + ) + ) + ) + + +class MissingHashes(Hashes): + """A workalike for Hashes used when we're missing a hash for a requirement + + It computes the actual hash of the requirement and raises a HashMissing + exception showing it to the user. + + """ + + def __init__(self) -> None: + """Don't offer the ``hashes`` kwarg.""" + # Pass our favorite hash in to generate a "gotten hash". With the + # empty list, it will never match, so an error will always raise. + super().__init__(hashes={FAVORITE_HASH: []}) + + def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn": + raise HashMissing(gots[FAVORITE_HASH].hexdigest()) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/inject_securetransport.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/inject_securetransport.py new file mode 100644 index 0000000..276aa79 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/inject_securetransport.py @@ -0,0 +1,35 @@ +"""A helper module that injects SecureTransport, on import. + +The import should be done as early as possible, to ensure all requests and +sessions (or whatever) are created after injecting SecureTransport. + +Note that we only do the injection on macOS, when the linked OpenSSL is too +old to handle TLSv1.2. +""" + +import sys + + +def inject_securetransport() -> None: + # Only relevant on macOS + if sys.platform != "darwin": + return + + try: + import ssl + except ImportError: + return + + # Checks for OpenSSL 1.0.1 + if ssl.OPENSSL_VERSION_NUMBER >= 0x1000100F: + return + + try: + from pip._vendor.urllib3.contrib import securetransport + except (ImportError, OSError): + return + + securetransport.inject_into_urllib3() + + +inject_securetransport() diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/logging.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/logging.py new file mode 100644 index 0000000..a4b828a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/logging.py @@ -0,0 +1,358 @@ +import contextlib +import errno +import logging +import logging.handlers +import os +import sys +from logging import Filter +from typing import IO, Any, Callable, Iterator, Optional, TextIO, Type, cast + +from pip._internal.utils._log import VERBOSE, getLogger +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.deprecation import DEPRECATION_MSG_PREFIX +from pip._internal.utils.misc import ensure_dir + +try: + import threading +except ImportError: + import dummy_threading as threading # type: ignore + + +try: + from pip._vendor import colorama +# Lots of different errors can come from this, including SystemError and +# ImportError. +except Exception: + colorama = None + + +_log_state = threading.local() +subprocess_logger = getLogger("pip.subprocessor") + + +class BrokenStdoutLoggingError(Exception): + """ + Raised if BrokenPipeError occurs for the stdout stream while logging. + """ + + +def _is_broken_pipe_error(exc_class: Type[BaseException], exc: BaseException) -> bool: + if exc_class is BrokenPipeError: + return True + + # On Windows, a broken pipe can show up as EINVAL rather than EPIPE: + # https://bugs.python.org/issue19612 + # https://bugs.python.org/issue30418 + if not WINDOWS: + return False + + return isinstance(exc, OSError) and exc.errno in (errno.EINVAL, errno.EPIPE) + + +@contextlib.contextmanager +def indent_log(num: int = 2) -> Iterator[None]: + """ + A context manager which will cause the log output to be indented for any + log messages emitted inside it. + """ + # For thread-safety + _log_state.indentation = get_indentation() + _log_state.indentation += num + try: + yield + finally: + _log_state.indentation -= num + + +def get_indentation() -> int: + return getattr(_log_state, "indentation", 0) + + +class IndentingFormatter(logging.Formatter): + default_time_format = "%Y-%m-%dT%H:%M:%S" + + def __init__( + self, + *args: Any, + add_timestamp: bool = False, + **kwargs: Any, + ) -> None: + """ + A logging.Formatter that obeys the indent_log() context manager. + + :param add_timestamp: A bool indicating output lines should be prefixed + with their record's timestamp. + """ + self.add_timestamp = add_timestamp + super().__init__(*args, **kwargs) + + def get_message_start(self, formatted: str, levelno: int) -> str: + """ + Return the start of the formatted log message (not counting the + prefix to add to each line). + """ + if levelno < logging.WARNING: + return "" + if formatted.startswith(DEPRECATION_MSG_PREFIX): + # Then the message already has a prefix. We don't want it to + # look like "WARNING: DEPRECATION: ...." + return "" + if levelno < logging.ERROR: + return "WARNING: " + + return "ERROR: " + + def format(self, record: logging.LogRecord) -> str: + """ + Calls the standard formatter, but will indent all of the log message + lines by our current indentation level. + """ + formatted = super().format(record) + message_start = self.get_message_start(formatted, record.levelno) + formatted = message_start + formatted + + prefix = "" + if self.add_timestamp: + prefix = f"{self.formatTime(record)} " + prefix += " " * get_indentation() + formatted = "".join([prefix + line for line in formatted.splitlines(True)]) + return formatted + + +def _color_wrap(*colors: str) -> Callable[[str], str]: + def wrapped(inp: str) -> str: + return "".join(list(colors) + [inp, colorama.Style.RESET_ALL]) + + return wrapped + + +class ColorizedStreamHandler(logging.StreamHandler): + + # Don't build up a list of colors if we don't have colorama + if colorama: + COLORS = [ + # This needs to be in order from highest logging level to lowest. + (logging.ERROR, _color_wrap(colorama.Fore.RED)), + (logging.WARNING, _color_wrap(colorama.Fore.YELLOW)), + ] + else: + COLORS = [] + + def __init__(self, stream: Optional[TextIO] = None, no_color: bool = None) -> None: + super().__init__(stream) + self._no_color = no_color + + if WINDOWS and colorama: + self.stream = colorama.AnsiToWin32(self.stream) + + def _using_stdout(self) -> bool: + """ + Return whether the handler is using sys.stdout. + """ + if WINDOWS and colorama: + # Then self.stream is an AnsiToWin32 object. + stream = cast(colorama.AnsiToWin32, self.stream) + return stream.wrapped is sys.stdout + + return self.stream is sys.stdout + + def should_color(self) -> bool: + # Don't colorize things if we do not have colorama or if told not to + if not colorama or self._no_color: + return False + + real_stream = ( + self.stream + if not isinstance(self.stream, colorama.AnsiToWin32) + else self.stream.wrapped + ) + + # If the stream is a tty we should color it + if hasattr(real_stream, "isatty") and real_stream.isatty(): + return True + + # If we have an ANSI term we should color it + if os.environ.get("TERM") == "ANSI": + return True + + # If anything else we should not color it + return False + + def format(self, record: logging.LogRecord) -> str: + msg = super().format(record) + + if self.should_color(): + for level, color in self.COLORS: + if record.levelno >= level: + msg = color(msg) + break + + return msg + + # The logging module says handleError() can be customized. + def handleError(self, record: logging.LogRecord) -> None: + exc_class, exc = sys.exc_info()[:2] + # If a broken pipe occurred while calling write() or flush() on the + # stdout stream in logging's Handler.emit(), then raise our special + # exception so we can handle it in main() instead of logging the + # broken pipe error and continuing. + if ( + exc_class + and exc + and self._using_stdout() + and _is_broken_pipe_error(exc_class, exc) + ): + raise BrokenStdoutLoggingError() + + return super().handleError(record) + + +class BetterRotatingFileHandler(logging.handlers.RotatingFileHandler): + def _open(self) -> IO[Any]: + ensure_dir(os.path.dirname(self.baseFilename)) + return super()._open() + + +class MaxLevelFilter(Filter): + def __init__(self, level: int) -> None: + self.level = level + + def filter(self, record: logging.LogRecord) -> bool: + return record.levelno < self.level + + +class ExcludeLoggerFilter(Filter): + + """ + A logging Filter that excludes records from a logger (or its children). + """ + + def filter(self, record: logging.LogRecord) -> bool: + # The base Filter class allows only records from a logger (or its + # children). + return not super().filter(record) + + +def setup_logging(verbosity: int, no_color: bool, user_log_file: Optional[str]) -> int: + """Configures and sets up all of the logging + + Returns the requested logging level, as its integer value. + """ + + # Determine the level to be logging at. + if verbosity >= 2: + level_number = logging.DEBUG + elif verbosity == 1: + level_number = VERBOSE + elif verbosity == -1: + level_number = logging.WARNING + elif verbosity == -2: + level_number = logging.ERROR + elif verbosity <= -3: + level_number = logging.CRITICAL + else: + level_number = logging.INFO + + level = logging.getLevelName(level_number) + + # The "root" logger should match the "console" level *unless* we also need + # to log to a user log file. + include_user_log = user_log_file is not None + if include_user_log: + additional_log_file = user_log_file + root_level = "DEBUG" + else: + additional_log_file = "/dev/null" + root_level = level + + # Disable any logging besides WARNING unless we have DEBUG level logging + # enabled for vendored libraries. + vendored_log_level = "WARNING" if level in ["INFO", "ERROR"] else "DEBUG" + + # Shorthands for clarity + log_streams = { + "stdout": "ext://sys.stdout", + "stderr": "ext://sys.stderr", + } + handler_classes = { + "stream": "pip._internal.utils.logging.ColorizedStreamHandler", + "file": "pip._internal.utils.logging.BetterRotatingFileHandler", + } + handlers = ["console", "console_errors", "console_subprocess"] + ( + ["user_log"] if include_user_log else [] + ) + + logging.config.dictConfig( + { + "version": 1, + "disable_existing_loggers": False, + "filters": { + "exclude_warnings": { + "()": "pip._internal.utils.logging.MaxLevelFilter", + "level": logging.WARNING, + }, + "restrict_to_subprocess": { + "()": "logging.Filter", + "name": subprocess_logger.name, + }, + "exclude_subprocess": { + "()": "pip._internal.utils.logging.ExcludeLoggerFilter", + "name": subprocess_logger.name, + }, + }, + "formatters": { + "indent": { + "()": IndentingFormatter, + "format": "%(message)s", + }, + "indent_with_timestamp": { + "()": IndentingFormatter, + "format": "%(message)s", + "add_timestamp": True, + }, + }, + "handlers": { + "console": { + "level": level, + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stdout"], + "filters": ["exclude_subprocess", "exclude_warnings"], + "formatter": "indent", + }, + "console_errors": { + "level": "WARNING", + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stderr"], + "filters": ["exclude_subprocess"], + "formatter": "indent", + }, + # A handler responsible for logging to the console messages + # from the "subprocessor" logger. + "console_subprocess": { + "level": level, + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stderr"], + "filters": ["restrict_to_subprocess"], + "formatter": "indent", + }, + "user_log": { + "level": "DEBUG", + "class": handler_classes["file"], + "filename": additional_log_file, + "encoding": "utf-8", + "delay": True, + "formatter": "indent_with_timestamp", + }, + }, + "root": { + "level": root_level, + "handlers": handlers, + }, + "loggers": {"pip._vendor": {"level": vendored_log_level}}, + } + ) + + return level_number diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/misc.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/misc.py new file mode 100644 index 0000000..d3e9053 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/misc.py @@ -0,0 +1,689 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import contextlib +import errno +import getpass +import hashlib +import io +import logging +import os +import posixpath +import shutil +import stat +import sys +import urllib.parse +from io import StringIO +from itertools import filterfalse, tee, zip_longest +from types import TracebackType +from typing import ( + Any, + BinaryIO, + Callable, + ContextManager, + Iterable, + Iterator, + List, + Optional, + TextIO, + Tuple, + Type, + TypeVar, + cast, +) + +from pip._vendor.pkg_resources import Distribution +from pip._vendor.tenacity import retry, stop_after_delay, wait_fixed + +from pip import __version__ +from pip._internal.exceptions import CommandError +from pip._internal.locations import get_major_minor_version, site_packages, user_site +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.egg_link import egg_link_path_from_location +from pip._internal.utils.virtualenv import running_under_virtualenv + +__all__ = [ + "rmtree", + "display_path", + "backup_dir", + "ask", + "splitext", + "format_size", + "is_installable_dir", + "normalize_path", + "renames", + "get_prog", + "captured_stdout", + "ensure_dir", + "remove_auth_from_url", +] + + +logger = logging.getLogger(__name__) + +T = TypeVar("T") +ExcInfo = Tuple[Type[BaseException], BaseException, TracebackType] +VersionInfo = Tuple[int, int, int] +NetlocTuple = Tuple[str, Tuple[Optional[str], Optional[str]]] + + +def get_pip_version() -> str: + pip_pkg_dir = os.path.join(os.path.dirname(__file__), "..", "..") + pip_pkg_dir = os.path.abspath(pip_pkg_dir) + + return "pip {} from {} (python {})".format( + __version__, + pip_pkg_dir, + get_major_minor_version(), + ) + + +def normalize_version_info(py_version_info: Tuple[int, ...]) -> Tuple[int, int, int]: + """ + Convert a tuple of ints representing a Python version to one of length + three. + + :param py_version_info: a tuple of ints representing a Python version, + or None to specify no version. The tuple can have any length. + + :return: a tuple of length three if `py_version_info` is non-None. + Otherwise, return `py_version_info` unchanged (i.e. None). + """ + if len(py_version_info) < 3: + py_version_info += (3 - len(py_version_info)) * (0,) + elif len(py_version_info) > 3: + py_version_info = py_version_info[:3] + + return cast("VersionInfo", py_version_info) + + +def ensure_dir(path: str) -> None: + """os.path.makedirs without EEXIST.""" + try: + os.makedirs(path) + except OSError as e: + # Windows can raise spurious ENOTEMPTY errors. See #6426. + if e.errno != errno.EEXIST and e.errno != errno.ENOTEMPTY: + raise + + +def get_prog() -> str: + try: + prog = os.path.basename(sys.argv[0]) + if prog in ("__main__.py", "-c"): + return f"{sys.executable} -m pip" + else: + return prog + except (AttributeError, TypeError, IndexError): + pass + return "pip" + + +# Retry every half second for up to 3 seconds +# Tenacity raises RetryError by default, explicitly raise the original exception +@retry(reraise=True, stop=stop_after_delay(3), wait=wait_fixed(0.5)) +def rmtree(dir: str, ignore_errors: bool = False) -> None: + shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler) + + +def rmtree_errorhandler(func: Callable[..., Any], path: str, exc_info: ExcInfo) -> None: + """On Windows, the files in .svn are read-only, so when rmtree() tries to + remove them, an exception is thrown. We catch that here, remove the + read-only attribute, and hopefully continue without problems.""" + try: + has_attr_readonly = not (os.stat(path).st_mode & stat.S_IWRITE) + except OSError: + # it's equivalent to os.path.exists + return + + if has_attr_readonly: + # convert to read/write + os.chmod(path, stat.S_IWRITE) + # use the original function to repeat the operation + func(path) + return + else: + raise + + +def display_path(path: str) -> str: + """Gives the display value for a given path, making it relative to cwd + if possible.""" + path = os.path.normcase(os.path.abspath(path)) + if path.startswith(os.getcwd() + os.path.sep): + path = "." + path[len(os.getcwd()) :] + return path + + +def backup_dir(dir: str, ext: str = ".bak") -> str: + """Figure out the name of a directory to back up the given dir to + (adding .bak, .bak2, etc)""" + n = 1 + extension = ext + while os.path.exists(dir + extension): + n += 1 + extension = ext + str(n) + return dir + extension + + +def ask_path_exists(message: str, options: Iterable[str]) -> str: + for action in os.environ.get("PIP_EXISTS_ACTION", "").split(): + if action in options: + return action + return ask(message, options) + + +def _check_no_input(message: str) -> None: + """Raise an error if no input is allowed.""" + if os.environ.get("PIP_NO_INPUT"): + raise Exception( + f"No input was expected ($PIP_NO_INPUT set); question: {message}" + ) + + +def ask(message: str, options: Iterable[str]) -> str: + """Ask the message interactively, with the given possible responses""" + while 1: + _check_no_input(message) + response = input(message) + response = response.strip().lower() + if response not in options: + print( + "Your response ({!r}) was not one of the expected responses: " + "{}".format(response, ", ".join(options)) + ) + else: + return response + + +def ask_input(message: str) -> str: + """Ask for input interactively.""" + _check_no_input(message) + return input(message) + + +def ask_password(message: str) -> str: + """Ask for a password interactively.""" + _check_no_input(message) + return getpass.getpass(message) + + +def strtobool(val: str) -> int: + """Convert a string representation of truth to true (1) or false (0). + + True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values + are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if + 'val' is anything else. + """ + val = val.lower() + if val in ("y", "yes", "t", "true", "on", "1"): + return 1 + elif val in ("n", "no", "f", "false", "off", "0"): + return 0 + else: + raise ValueError(f"invalid truth value {val!r}") + + +def format_size(bytes: float) -> str: + if bytes > 1000 * 1000: + return "{:.1f} MB".format(bytes / 1000.0 / 1000) + elif bytes > 10 * 1000: + return "{} kB".format(int(bytes / 1000)) + elif bytes > 1000: + return "{:.1f} kB".format(bytes / 1000.0) + else: + return "{} bytes".format(int(bytes)) + + +def tabulate(rows: Iterable[Iterable[Any]]) -> Tuple[List[str], List[int]]: + """Return a list of formatted rows and a list of column sizes. + + For example:: + + >>> tabulate([['foobar', 2000], [0xdeadbeef]]) + (['foobar 2000', '3735928559'], [10, 4]) + """ + rows = [tuple(map(str, row)) for row in rows] + sizes = [max(map(len, col)) for col in zip_longest(*rows, fillvalue="")] + table = [" ".join(map(str.ljust, row, sizes)).rstrip() for row in rows] + return table, sizes + + +def is_installable_dir(path: str) -> bool: + """Is path is a directory containing pyproject.toml or setup.py? + + If pyproject.toml exists, this is a PEP 517 project. Otherwise we look for + a legacy setuptools layout by identifying setup.py. We don't check for the + setup.cfg because using it without setup.py is only available for PEP 517 + projects, which are already covered by the pyproject.toml check. + """ + if not os.path.isdir(path): + return False + if os.path.isfile(os.path.join(path, "pyproject.toml")): + return True + if os.path.isfile(os.path.join(path, "setup.py")): + return True + return False + + +def read_chunks(file: BinaryIO, size: int = io.DEFAULT_BUFFER_SIZE) -> Iterator[bytes]: + """Yield pieces of data from a file-like object until EOF.""" + while True: + chunk = file.read(size) + if not chunk: + break + yield chunk + + +def normalize_path(path: str, resolve_symlinks: bool = True) -> str: + """ + Convert a path to its canonical, case-normalized, absolute version. + + """ + path = os.path.expanduser(path) + if resolve_symlinks: + path = os.path.realpath(path) + else: + path = os.path.abspath(path) + return os.path.normcase(path) + + +def splitext(path: str) -> Tuple[str, str]: + """Like os.path.splitext, but take off .tar too""" + base, ext = posixpath.splitext(path) + if base.lower().endswith(".tar"): + ext = base[-4:] + ext + base = base[:-4] + return base, ext + + +def renames(old: str, new: str) -> None: + """Like os.renames(), but handles renaming across devices.""" + # Implementation borrowed from os.renames(). + head, tail = os.path.split(new) + if head and tail and not os.path.exists(head): + os.makedirs(head) + + shutil.move(old, new) + + head, tail = os.path.split(old) + if head and tail: + try: + os.removedirs(head) + except OSError: + pass + + +def is_local(path: str) -> bool: + """ + Return True if path is within sys.prefix, if we're running in a virtualenv. + + If we're not in a virtualenv, all paths are considered "local." + + Caution: this function assumes the head of path has been normalized + with normalize_path. + """ + if not running_under_virtualenv(): + return True + return path.startswith(normalize_path(sys.prefix)) + + +def dist_is_local(dist: Distribution) -> bool: + """ + Return True if given Distribution object is installed locally + (i.e. within current virtualenv). + + Always True if we're not in a virtualenv. + + """ + return is_local(dist_location(dist)) + + +def dist_in_usersite(dist: Distribution) -> bool: + """ + Return True if given Distribution is installed in user site. + """ + return dist_location(dist).startswith(normalize_path(user_site)) + + +def dist_in_site_packages(dist: Distribution) -> bool: + """ + Return True if given Distribution is installed in + sysconfig.get_python_lib(). + """ + return dist_location(dist).startswith(normalize_path(site_packages)) + + +def get_distribution(req_name: str) -> Optional[Distribution]: + """Given a requirement name, return the installed Distribution object. + + This searches from *all* distributions available in the environment, to + match the behavior of ``pkg_resources.get_distribution()``. + + Left for compatibility until direct pkg_resources uses are refactored out. + """ + from pip._internal.metadata import get_default_environment + from pip._internal.metadata.pkg_resources import Distribution as _Dist + + dist = get_default_environment().get_distribution(req_name) + if dist is None: + return None + return cast(_Dist, dist)._dist + + +def dist_location(dist: Distribution) -> str: + """ + Get the site-packages location of this distribution. Generally + this is dist.location, except in the case of develop-installed + packages, where dist.location is the source code location, and we + want to know where the egg-link file is. + + The returned location is normalized (in particular, with symlinks removed). + """ + egg_link = egg_link_path_from_location(dist.project_name) + if egg_link: + return normalize_path(egg_link) + return normalize_path(dist.location) + + +def write_output(msg: Any, *args: Any) -> None: + logger.info(msg, *args) + + +class StreamWrapper(StringIO): + orig_stream: TextIO = None + + @classmethod + def from_stream(cls, orig_stream: TextIO) -> "StreamWrapper": + cls.orig_stream = orig_stream + return cls() + + # compileall.compile_dir() needs stdout.encoding to print to stdout + # https://github.com/python/mypy/issues/4125 + @property + def encoding(self): # type: ignore + return self.orig_stream.encoding + + +@contextlib.contextmanager +def captured_output(stream_name: str) -> Iterator[StreamWrapper]: + """Return a context manager used by captured_stdout/stdin/stderr + that temporarily replaces the sys stream *stream_name* with a StringIO. + + Taken from Lib/support/__init__.py in the CPython repo. + """ + orig_stdout = getattr(sys, stream_name) + setattr(sys, stream_name, StreamWrapper.from_stream(orig_stdout)) + try: + yield getattr(sys, stream_name) + finally: + setattr(sys, stream_name, orig_stdout) + + +def captured_stdout() -> ContextManager[StreamWrapper]: + """Capture the output of sys.stdout: + + with captured_stdout() as stdout: + print('hello') + self.assertEqual(stdout.getvalue(), 'hello\n') + + Taken from Lib/support/__init__.py in the CPython repo. + """ + return captured_output("stdout") + + +def captured_stderr() -> ContextManager[StreamWrapper]: + """ + See captured_stdout(). + """ + return captured_output("stderr") + + +# Simulates an enum +def enum(*sequential: Any, **named: Any) -> Type[Any]: + enums = dict(zip(sequential, range(len(sequential))), **named) + reverse = {value: key for key, value in enums.items()} + enums["reverse_mapping"] = reverse + return type("Enum", (), enums) + + +def build_netloc(host: str, port: Optional[int]) -> str: + """ + Build a netloc from a host-port pair + """ + if port is None: + return host + if ":" in host: + # Only wrap host with square brackets when it is IPv6 + host = f"[{host}]" + return f"{host}:{port}" + + +def build_url_from_netloc(netloc: str, scheme: str = "https") -> str: + """ + Build a full URL from a netloc. + """ + if netloc.count(":") >= 2 and "@" not in netloc and "[" not in netloc: + # It must be a bare IPv6 address, so wrap it with brackets. + netloc = f"[{netloc}]" + return f"{scheme}://{netloc}" + + +def parse_netloc(netloc: str) -> Tuple[str, Optional[int]]: + """ + Return the host-port pair from a netloc. + """ + url = build_url_from_netloc(netloc) + parsed = urllib.parse.urlparse(url) + return parsed.hostname, parsed.port + + +def split_auth_from_netloc(netloc: str) -> NetlocTuple: + """ + Parse out and remove the auth information from a netloc. + + Returns: (netloc, (username, password)). + """ + if "@" not in netloc: + return netloc, (None, None) + + # Split from the right because that's how urllib.parse.urlsplit() + # behaves if more than one @ is present (which can be checked using + # the password attribute of urlsplit()'s return value). + auth, netloc = netloc.rsplit("@", 1) + pw: Optional[str] = None + if ":" in auth: + # Split from the left because that's how urllib.parse.urlsplit() + # behaves if more than one : is present (which again can be checked + # using the password attribute of the return value) + user, pw = auth.split(":", 1) + else: + user, pw = auth, None + + user = urllib.parse.unquote(user) + if pw is not None: + pw = urllib.parse.unquote(pw) + + return netloc, (user, pw) + + +def redact_netloc(netloc: str) -> str: + """ + Replace the sensitive data in a netloc with "****", if it exists. + + For example: + - "user:pass@example.com" returns "user:****@example.com" + - "accesstoken@example.com" returns "****@example.com" + """ + netloc, (user, password) = split_auth_from_netloc(netloc) + if user is None: + return netloc + if password is None: + user = "****" + password = "" + else: + user = urllib.parse.quote(user) + password = ":****" + return "{user}{password}@{netloc}".format( + user=user, password=password, netloc=netloc + ) + + +def _transform_url( + url: str, transform_netloc: Callable[[str], Tuple[Any, ...]] +) -> Tuple[str, NetlocTuple]: + """Transform and replace netloc in a url. + + transform_netloc is a function taking the netloc and returning a + tuple. The first element of this tuple is the new netloc. The + entire tuple is returned. + + Returns a tuple containing the transformed url as item 0 and the + original tuple returned by transform_netloc as item 1. + """ + purl = urllib.parse.urlsplit(url) + netloc_tuple = transform_netloc(purl.netloc) + # stripped url + url_pieces = (purl.scheme, netloc_tuple[0], purl.path, purl.query, purl.fragment) + surl = urllib.parse.urlunsplit(url_pieces) + return surl, cast("NetlocTuple", netloc_tuple) + + +def _get_netloc(netloc: str) -> NetlocTuple: + return split_auth_from_netloc(netloc) + + +def _redact_netloc(netloc: str) -> Tuple[str]: + return (redact_netloc(netloc),) + + +def split_auth_netloc_from_url(url: str) -> Tuple[str, str, Tuple[str, str]]: + """ + Parse a url into separate netloc, auth, and url with no auth. + + Returns: (url_without_auth, netloc, (username, password)) + """ + url_without_auth, (netloc, auth) = _transform_url(url, _get_netloc) + return url_without_auth, netloc, auth + + +def remove_auth_from_url(url: str) -> str: + """Return a copy of url with 'username:password@' removed.""" + # username/pass params are passed to subversion through flags + # and are not recognized in the url. + return _transform_url(url, _get_netloc)[0] + + +def redact_auth_from_url(url: str) -> str: + """Replace the password in a given url with ****.""" + return _transform_url(url, _redact_netloc)[0] + + +class HiddenText: + def __init__(self, secret: str, redacted: str) -> None: + self.secret = secret + self.redacted = redacted + + def __repr__(self) -> str: + return "".format(str(self)) + + def __str__(self) -> str: + return self.redacted + + # This is useful for testing. + def __eq__(self, other: Any) -> bool: + if type(self) != type(other): + return False + + # The string being used for redaction doesn't also have to match, + # just the raw, original string. + return self.secret == other.secret + + +def hide_value(value: str) -> HiddenText: + return HiddenText(value, redacted="****") + + +def hide_url(url: str) -> HiddenText: + redacted = redact_auth_from_url(url) + return HiddenText(url, redacted=redacted) + + +def protect_pip_from_modification_on_windows(modifying_pip: bool) -> None: + """Protection of pip.exe from modification on Windows + + On Windows, any operation modifying pip should be run as: + python -m pip ... + """ + pip_names = [ + "pip.exe", + "pip{}.exe".format(sys.version_info[0]), + "pip{}.{}.exe".format(*sys.version_info[:2]), + ] + + # See https://github.com/pypa/pip/issues/1299 for more discussion + should_show_use_python_msg = ( + modifying_pip and WINDOWS and os.path.basename(sys.argv[0]) in pip_names + ) + + if should_show_use_python_msg: + new_command = [sys.executable, "-m", "pip"] + sys.argv[1:] + raise CommandError( + "To modify pip, please run the following command:\n{}".format( + " ".join(new_command) + ) + ) + + +def is_console_interactive() -> bool: + """Is this console interactive?""" + return sys.stdin is not None and sys.stdin.isatty() + + +def hash_file(path: str, blocksize: int = 1 << 20) -> Tuple[Any, int]: + """Return (hash, length) for path using hashlib.sha256()""" + + h = hashlib.sha256() + length = 0 + with open(path, "rb") as f: + for block in read_chunks(f, size=blocksize): + length += len(block) + h.update(block) + return h, length + + +def is_wheel_installed() -> bool: + """ + Return whether the wheel package is installed. + """ + try: + import wheel # noqa: F401 + except ImportError: + return False + + return True + + +def pairwise(iterable: Iterable[Any]) -> Iterator[Tuple[Any, Any]]: + """ + Return paired elements. + + For example: + s -> (s0, s1), (s2, s3), (s4, s5), ... + """ + iterable = iter(iterable) + return zip_longest(iterable, iterable) + + +def partition( + pred: Callable[[T], bool], + iterable: Iterable[T], +) -> Tuple[Iterable[T], Iterable[T]]: + """ + Use a predicate to partition entries into false entries and true entries, + like + + partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9 + """ + t1, t2 = tee(iterable) + return filterfalse(pred, t1), filter(pred, t2) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/models.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/models.py new file mode 100644 index 0000000..b6bb21a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/models.py @@ -0,0 +1,39 @@ +"""Utilities for defining models +""" + +import operator +from typing import Any, Callable, Type + + +class KeyBasedCompareMixin: + """Provides comparison capabilities that is based on a key""" + + __slots__ = ["_compare_key", "_defining_class"] + + def __init__(self, key: Any, defining_class: Type["KeyBasedCompareMixin"]) -> None: + self._compare_key = key + self._defining_class = defining_class + + def __hash__(self) -> int: + return hash(self._compare_key) + + def __lt__(self, other: Any) -> bool: + return self._compare(other, operator.__lt__) + + def __le__(self, other: Any) -> bool: + return self._compare(other, operator.__le__) + + def __gt__(self, other: Any) -> bool: + return self._compare(other, operator.__gt__) + + def __ge__(self, other: Any) -> bool: + return self._compare(other, operator.__ge__) + + def __eq__(self, other: Any) -> bool: + return self._compare(other, operator.__eq__) + + def _compare(self, other: Any, method: Callable[[Any, Any], bool]) -> bool: + if not isinstance(other, self._defining_class): + return NotImplemented + + return method(self._compare_key, other._compare_key) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/packaging.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/packaging.py new file mode 100644 index 0000000..f100473 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/packaging.py @@ -0,0 +1,84 @@ +import functools +import logging +from email.message import Message +from email.parser import FeedParser +from typing import Optional, Tuple + +from pip._vendor import pkg_resources +from pip._vendor.packaging import specifiers, version +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.pkg_resources import Distribution + +from pip._internal.exceptions import NoneMetadataError +from pip._internal.utils.misc import display_path + +logger = logging.getLogger(__name__) + + +def check_requires_python( + requires_python: Optional[str], version_info: Tuple[int, ...] +) -> bool: + """ + Check if the given Python version matches a "Requires-Python" specifier. + + :param version_info: A 3-tuple of ints representing a Python + major-minor-micro version to check (e.g. `sys.version_info[:3]`). + + :return: `True` if the given Python version satisfies the requirement. + Otherwise, return `False`. + + :raises InvalidSpecifier: If `requires_python` has an invalid format. + """ + if requires_python is None: + # The package provides no information + return True + requires_python_specifier = specifiers.SpecifierSet(requires_python) + + python_version = version.parse(".".join(map(str, version_info))) + return python_version in requires_python_specifier + + +def get_metadata(dist: Distribution) -> Message: + """ + :raises NoneMetadataError: if the distribution reports `has_metadata()` + True but `get_metadata()` returns None. + """ + metadata_name = "METADATA" + if isinstance(dist, pkg_resources.DistInfoDistribution) and dist.has_metadata( + metadata_name + ): + metadata = dist.get_metadata(metadata_name) + elif dist.has_metadata("PKG-INFO"): + metadata_name = "PKG-INFO" + metadata = dist.get_metadata(metadata_name) + else: + logger.warning("No metadata found in %s", display_path(dist.location)) + metadata = "" + + if metadata is None: + raise NoneMetadataError(dist, metadata_name) + + feed_parser = FeedParser() + # The following line errors out if with a "NoneType" TypeError if + # passed metadata=None. + feed_parser.feed(metadata) + return feed_parser.close() + + +def get_installer(dist: Distribution) -> str: + if dist.has_metadata("INSTALLER"): + for line in dist.get_metadata_lines("INSTALLER"): + if line.strip(): + return line.strip() + return "" + + +@functools.lru_cache(maxsize=512) +def get_requirement(req_string: str) -> Requirement: + """Construct a packaging.Requirement object with caching""" + # Parsing requirement strings is expensive, and is also expected to happen + # with a low diversity of different arguments (at least relative the number + # constructed). This method adds a cache to requirement object creation to + # minimize repeated parsing of the same string to construct equivalent + # Requirement objects. + return Requirement(req_string) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/parallel.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/parallel.py new file mode 100644 index 0000000..e318577 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/parallel.py @@ -0,0 +1,103 @@ +"""Convenient parallelization of higher order functions. + +This module provides two helper functions, with appropriate fallbacks on +Python 2 and on systems lacking support for synchronization mechanisms: + +- map_multiprocess +- map_multithread + +These helpers work like Python 3's map, with two differences: + +- They don't guarantee the order of processing of + the elements of the iterable. +- The underlying process/thread pools chop the iterable into + a number of chunks, so that for very long iterables using + a large value for chunksize can make the job complete much faster + than using the default value of 1. +""" + +__all__ = ["map_multiprocess", "map_multithread"] + +from contextlib import contextmanager +from multiprocessing import Pool as ProcessPool +from multiprocessing import pool +from multiprocessing.dummy import Pool as ThreadPool +from typing import Callable, Iterable, Iterator, TypeVar, Union + +from pip._vendor.requests.adapters import DEFAULT_POOLSIZE + +Pool = Union[pool.Pool, pool.ThreadPool] +S = TypeVar("S") +T = TypeVar("T") + +# On platforms without sem_open, multiprocessing[.dummy] Pool +# cannot be created. +try: + import multiprocessing.synchronize # noqa +except ImportError: + LACK_SEM_OPEN = True +else: + LACK_SEM_OPEN = False + +# Incredibly large timeout to work around bpo-8296 on Python 2. +TIMEOUT = 2000000 + + +@contextmanager +def closing(pool: Pool) -> Iterator[Pool]: + """Return a context manager making sure the pool closes properly.""" + try: + yield pool + finally: + # For Pool.imap*, close and join are needed + # for the returned iterator to begin yielding. + pool.close() + pool.join() + pool.terminate() + + +def _map_fallback( + func: Callable[[S], T], iterable: Iterable[S], chunksize: int = 1 +) -> Iterator[T]: + """Make an iterator applying func to each element in iterable. + + This function is the sequential fallback either on Python 2 + where Pool.imap* doesn't react to KeyboardInterrupt + or when sem_open is unavailable. + """ + return map(func, iterable) + + +def _map_multiprocess( + func: Callable[[S], T], iterable: Iterable[S], chunksize: int = 1 +) -> Iterator[T]: + """Chop iterable into chunks and submit them to a process pool. + + For very long iterables using a large value for chunksize can make + the job complete much faster than using the default value of 1. + + Return an unordered iterator of the results. + """ + with closing(ProcessPool()) as pool: + return pool.imap_unordered(func, iterable, chunksize) + + +def _map_multithread( + func: Callable[[S], T], iterable: Iterable[S], chunksize: int = 1 +) -> Iterator[T]: + """Chop iterable into chunks and submit them to a thread pool. + + For very long iterables using a large value for chunksize can make + the job complete much faster than using the default value of 1. + + Return an unordered iterator of the results. + """ + with closing(ThreadPool(DEFAULT_POOLSIZE)) as pool: + return pool.imap_unordered(func, iterable, chunksize) + + +if LACK_SEM_OPEN: + map_multiprocess = map_multithread = _map_fallback +else: + map_multiprocess = _map_multiprocess + map_multithread = _map_multithread diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/pkg_resources.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/pkg_resources.py new file mode 100644 index 0000000..bd846aa --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/pkg_resources.py @@ -0,0 +1,33 @@ +from typing import Dict, Iterable, List + +from pip._vendor.pkg_resources import yield_lines + + +class DictMetadata: + """IMetadataProvider that reads metadata files from a dictionary.""" + + def __init__(self, metadata: Dict[str, bytes]) -> None: + self._metadata = metadata + + def has_metadata(self, name: str) -> bool: + return name in self._metadata + + def get_metadata(self, name: str) -> str: + try: + return self._metadata[name].decode() + except UnicodeDecodeError as e: + # Mirrors handling done in pkg_resources.NullProvider. + e.reason += f" in {name} file" + raise + + def get_metadata_lines(self, name: str) -> Iterable[str]: + return yield_lines(self.get_metadata(name)) + + def metadata_isdir(self, name: str) -> bool: + return False + + def metadata_listdir(self, name: str) -> List[str]: + return [] + + def run_script(self, script_name: str, namespace: str) -> None: + pass diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/setuptools_build.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/setuptools_build.py new file mode 100644 index 0000000..9d65ceb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/setuptools_build.py @@ -0,0 +1,167 @@ +import sys +from typing import List, Optional, Sequence + +# Shim to wrap setup.py invocation with setuptools +# +# We set sys.argv[0] to the path to the underlying setup.py file so +# setuptools / distutils don't take the path to the setup.py to be "-c" when +# invoking via the shim. This avoids e.g. the following manifest_maker +# warning: "warning: manifest_maker: standard file '-c' not found". +_SETUPTOOLS_SHIM = ( + "import io, os, sys, setuptools, tokenize; sys.argv[0] = {0!r}; __file__={0!r};" + "f = getattr(tokenize, 'open', open)(__file__) " + "if os.path.exists(__file__) " + "else io.StringIO('from setuptools import setup; setup()');" + "code = f.read().replace('\\r\\n', '\\n');" + "f.close();" + "exec(compile(code, __file__, 'exec'))" +) + + +def make_setuptools_shim_args( + setup_py_path: str, + global_options: Sequence[str] = None, + no_user_config: bool = False, + unbuffered_output: bool = False, +) -> List[str]: + """ + Get setuptools command arguments with shim wrapped setup file invocation. + + :param setup_py_path: The path to setup.py to be wrapped. + :param global_options: Additional global options. + :param no_user_config: If True, disables personal user configuration. + :param unbuffered_output: If True, adds the unbuffered switch to the + argument list. + """ + args = [sys.executable] + if unbuffered_output: + args += ["-u"] + args += ["-c", _SETUPTOOLS_SHIM.format(setup_py_path)] + if global_options: + args += global_options + if no_user_config: + args += ["--no-user-cfg"] + return args + + +def make_setuptools_bdist_wheel_args( + setup_py_path: str, + global_options: Sequence[str], + build_options: Sequence[str], + destination_dir: str, +) -> List[str]: + # NOTE: Eventually, we'd want to also -S to the flags here, when we're + # isolating. Currently, it breaks Python in virtualenvs, because it + # relies on site.py to find parts of the standard library outside the + # virtualenv. + args = make_setuptools_shim_args( + setup_py_path, global_options=global_options, unbuffered_output=True + ) + args += ["bdist_wheel", "-d", destination_dir] + args += build_options + return args + + +def make_setuptools_clean_args( + setup_py_path: str, + global_options: Sequence[str], +) -> List[str]: + args = make_setuptools_shim_args( + setup_py_path, global_options=global_options, unbuffered_output=True + ) + args += ["clean", "--all"] + return args + + +def make_setuptools_develop_args( + setup_py_path: str, + global_options: Sequence[str], + install_options: Sequence[str], + no_user_config: bool, + prefix: Optional[str], + home: Optional[str], + use_user_site: bool, +) -> List[str]: + assert not (use_user_site and prefix) + + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + no_user_config=no_user_config, + ) + + args += ["develop", "--no-deps"] + + args += install_options + + if prefix: + args += ["--prefix", prefix] + if home is not None: + args += ["--install-dir", home] + + if use_user_site: + args += ["--user", "--prefix="] + + return args + + +def make_setuptools_egg_info_args( + setup_py_path: str, + egg_info_dir: Optional[str], + no_user_config: bool, +) -> List[str]: + args = make_setuptools_shim_args(setup_py_path, no_user_config=no_user_config) + + args += ["egg_info"] + + if egg_info_dir: + args += ["--egg-base", egg_info_dir] + + return args + + +def make_setuptools_install_args( + setup_py_path: str, + global_options: Sequence[str], + install_options: Sequence[str], + record_filename: str, + root: Optional[str], + prefix: Optional[str], + header_dir: Optional[str], + home: Optional[str], + use_user_site: bool, + no_user_config: bool, + pycompile: bool, +) -> List[str]: + assert not (use_user_site and prefix) + assert not (use_user_site and root) + + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + no_user_config=no_user_config, + unbuffered_output=True, + ) + args += ["install", "--record", record_filename] + args += ["--single-version-externally-managed"] + + if root is not None: + args += ["--root", root] + if prefix is not None: + args += ["--prefix", prefix] + if home is not None: + args += ["--home", home] + if use_user_site: + args += ["--user", "--prefix="] + + if pycompile: + args += ["--compile"] + else: + args += ["--no-compile"] + + if header_dir: + args += ["--install-headers", header_dir] + + args += install_options + + return args diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py new file mode 100644 index 0000000..f6e8b21 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py @@ -0,0 +1,289 @@ +import logging +import os +import shlex +import subprocess +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Iterable, + List, + Mapping, + Optional, + Union, +) + +from pip._internal.cli.spinners import SpinnerInterface, open_spinner +from pip._internal.exceptions import InstallationSubprocessError +from pip._internal.utils.logging import VERBOSE, subprocess_logger +from pip._internal.utils.misc import HiddenText + +if TYPE_CHECKING: + # Literal was introduced in Python 3.8. + # + # TODO: Remove `if TYPE_CHECKING` when dropping support for Python 3.7. + from typing import Literal + +CommandArgs = List[Union[str, HiddenText]] + + +LOG_DIVIDER = "----------------------------------------" + + +def make_command(*args: Union[str, HiddenText, CommandArgs]) -> CommandArgs: + """ + Create a CommandArgs object. + """ + command_args: CommandArgs = [] + for arg in args: + # Check for list instead of CommandArgs since CommandArgs is + # only known during type-checking. + if isinstance(arg, list): + command_args.extend(arg) + else: + # Otherwise, arg is str or HiddenText. + command_args.append(arg) + + return command_args + + +def format_command_args(args: Union[List[str], CommandArgs]) -> str: + """ + Format command arguments for display. + """ + # For HiddenText arguments, display the redacted form by calling str(). + # Also, we don't apply str() to arguments that aren't HiddenText since + # this can trigger a UnicodeDecodeError in Python 2 if the argument + # has type unicode and includes a non-ascii character. (The type + # checker doesn't ensure the annotations are correct in all cases.) + return " ".join( + shlex.quote(str(arg)) if isinstance(arg, HiddenText) else shlex.quote(arg) + for arg in args + ) + + +def reveal_command_args(args: Union[List[str], CommandArgs]) -> List[str]: + """ + Return the arguments in their raw, unredacted form. + """ + return [arg.secret if isinstance(arg, HiddenText) else arg for arg in args] + + +def make_subprocess_output_error( + cmd_args: Union[List[str], CommandArgs], + cwd: Optional[str], + lines: List[str], + exit_status: int, +) -> str: + """ + Create and return the error message to use to log a subprocess error + with command output. + + :param lines: A list of lines, each ending with a newline. + """ + command = format_command_args(cmd_args) + + # We know the joined output value ends in a newline. + output = "".join(lines) + msg = ( + # Use a unicode string to avoid "UnicodeEncodeError: 'ascii' + # codec can't encode character ..." in Python 2 when a format + # argument (e.g. `output`) has a non-ascii character. + "Command errored out with exit status {exit_status}:\n" + " command: {command_display}\n" + " cwd: {cwd_display}\n" + "Complete output ({line_count} lines):\n{output}{divider}" + ).format( + exit_status=exit_status, + command_display=command, + cwd_display=cwd, + line_count=len(lines), + output=output, + divider=LOG_DIVIDER, + ) + return msg + + +def call_subprocess( + cmd: Union[List[str], CommandArgs], + show_stdout: bool = False, + cwd: Optional[str] = None, + on_returncode: 'Literal["raise", "warn", "ignore"]' = "raise", + extra_ok_returncodes: Optional[Iterable[int]] = None, + command_desc: Optional[str] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + unset_environ: Optional[Iterable[str]] = None, + spinner: Optional[SpinnerInterface] = None, + log_failed_cmd: Optional[bool] = True, + stdout_only: Optional[bool] = False, +) -> str: + """ + Args: + show_stdout: if true, use INFO to log the subprocess's stderr and + stdout streams. Otherwise, use DEBUG. Defaults to False. + extra_ok_returncodes: an iterable of integer return codes that are + acceptable, in addition to 0. Defaults to None, which means []. + unset_environ: an iterable of environment variable names to unset + prior to calling subprocess.Popen(). + log_failed_cmd: if false, failed commands are not logged, only raised. + stdout_only: if true, return only stdout, else return both. When true, + logging of both stdout and stderr occurs when the subprocess has + terminated, else logging occurs as subprocess output is produced. + """ + if extra_ok_returncodes is None: + extra_ok_returncodes = [] + if unset_environ is None: + unset_environ = [] + # Most places in pip use show_stdout=False. What this means is-- + # + # - We connect the child's output (combined stderr and stdout) to a + # single pipe, which we read. + # - We log this output to stderr at DEBUG level as it is received. + # - If DEBUG logging isn't enabled (e.g. if --verbose logging wasn't + # requested), then we show a spinner so the user can still see the + # subprocess is in progress. + # - If the subprocess exits with an error, we log the output to stderr + # at ERROR level if it hasn't already been displayed to the console + # (e.g. if --verbose logging wasn't enabled). This way we don't log + # the output to the console twice. + # + # If show_stdout=True, then the above is still done, but with DEBUG + # replaced by INFO. + if show_stdout: + # Then log the subprocess output at INFO level. + log_subprocess = subprocess_logger.info + used_level = logging.INFO + else: + # Then log the subprocess output using VERBOSE. This also ensures + # it will be logged to the log file (aka user_log), if enabled. + log_subprocess = subprocess_logger.verbose + used_level = VERBOSE + + # Whether the subprocess will be visible in the console. + showing_subprocess = subprocess_logger.getEffectiveLevel() <= used_level + + # Only use the spinner if we're not showing the subprocess output + # and we have a spinner. + use_spinner = not showing_subprocess and spinner is not None + + if command_desc is None: + command_desc = format_command_args(cmd) + + log_subprocess("Running command %s", command_desc) + env = os.environ.copy() + if extra_environ: + env.update(extra_environ) + for name in unset_environ: + env.pop(name, None) + try: + proc = subprocess.Popen( + # Convert HiddenText objects to the underlying str. + reveal_command_args(cmd), + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT if not stdout_only else subprocess.PIPE, + cwd=cwd, + env=env, + errors="backslashreplace", + ) + except Exception as exc: + if log_failed_cmd: + subprocess_logger.critical( + "Error %s while executing command %s", + exc, + command_desc, + ) + raise + all_output = [] + if not stdout_only: + assert proc.stdout + assert proc.stdin + proc.stdin.close() + # In this mode, stdout and stderr are in the same pipe. + while True: + line: str = proc.stdout.readline() + if not line: + break + line = line.rstrip() + all_output.append(line + "\n") + + # Show the line immediately. + log_subprocess(line) + # Update the spinner. + if use_spinner: + assert spinner + spinner.spin() + try: + proc.wait() + finally: + if proc.stdout: + proc.stdout.close() + output = "".join(all_output) + else: + # In this mode, stdout and stderr are in different pipes. + # We must use communicate() which is the only safe way to read both. + out, err = proc.communicate() + # log line by line to preserve pip log indenting + for out_line in out.splitlines(): + log_subprocess(out_line) + all_output.append(out) + for err_line in err.splitlines(): + log_subprocess(err_line) + all_output.append(err) + output = out + + proc_had_error = proc.returncode and proc.returncode not in extra_ok_returncodes + if use_spinner: + assert spinner + if proc_had_error: + spinner.finish("error") + else: + spinner.finish("done") + if proc_had_error: + if on_returncode == "raise": + if not showing_subprocess and log_failed_cmd: + # Then the subprocess streams haven't been logged to the + # console yet. + msg = make_subprocess_output_error( + cmd_args=cmd, + cwd=cwd, + lines=all_output, + exit_status=proc.returncode, + ) + subprocess_logger.error(msg) + raise InstallationSubprocessError(proc.returncode, command_desc) + elif on_returncode == "warn": + subprocess_logger.warning( + 'Command "%s" had error code %s in %s', + command_desc, + proc.returncode, + cwd, + ) + elif on_returncode == "ignore": + pass + else: + raise ValueError(f"Invalid value: on_returncode={on_returncode!r}") + return output + + +def runner_with_spinner_message(message: str) -> Callable[..., None]: + """Provide a subprocess_runner that shows a spinner message. + + Intended for use with for pep517's Pep517HookCaller. Thus, the runner has + an API that matches what's expected by Pep517HookCaller.subprocess_runner. + """ + + def runner( + cmd: List[str], + cwd: Optional[str] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + ) -> None: + with open_spinner(message) as spinner: + call_subprocess( + cmd, + cwd=cwd, + extra_environ=extra_environ, + spinner=spinner, + ) + + return runner diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/temp_dir.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/temp_dir.py new file mode 100644 index 0000000..442679a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/temp_dir.py @@ -0,0 +1,246 @@ +import errno +import itertools +import logging +import os.path +import tempfile +from contextlib import ExitStack, contextmanager +from typing import Any, Dict, Iterator, Optional, TypeVar, Union + +from pip._internal.utils.misc import enum, rmtree + +logger = logging.getLogger(__name__) + +_T = TypeVar("_T", bound="TempDirectory") + + +# Kinds of temporary directories. Only needed for ones that are +# globally-managed. +tempdir_kinds = enum( + BUILD_ENV="build-env", + EPHEM_WHEEL_CACHE="ephem-wheel-cache", + REQ_BUILD="req-build", +) + + +_tempdir_manager: Optional[ExitStack] = None + + +@contextmanager +def global_tempdir_manager() -> Iterator[None]: + global _tempdir_manager + with ExitStack() as stack: + old_tempdir_manager, _tempdir_manager = _tempdir_manager, stack + try: + yield + finally: + _tempdir_manager = old_tempdir_manager + + +class TempDirectoryTypeRegistry: + """Manages temp directory behavior""" + + def __init__(self) -> None: + self._should_delete: Dict[str, bool] = {} + + def set_delete(self, kind: str, value: bool) -> None: + """Indicate whether a TempDirectory of the given kind should be + auto-deleted. + """ + self._should_delete[kind] = value + + def get_delete(self, kind: str) -> bool: + """Get configured auto-delete flag for a given TempDirectory type, + default True. + """ + return self._should_delete.get(kind, True) + + +_tempdir_registry: Optional[TempDirectoryTypeRegistry] = None + + +@contextmanager +def tempdir_registry() -> Iterator[TempDirectoryTypeRegistry]: + """Provides a scoped global tempdir registry that can be used to dictate + whether directories should be deleted. + """ + global _tempdir_registry + old_tempdir_registry = _tempdir_registry + _tempdir_registry = TempDirectoryTypeRegistry() + try: + yield _tempdir_registry + finally: + _tempdir_registry = old_tempdir_registry + + +class _Default: + pass + + +_default = _Default() + + +class TempDirectory: + """Helper class that owns and cleans up a temporary directory. + + This class can be used as a context manager or as an OO representation of a + temporary directory. + + Attributes: + path + Location to the created temporary directory + delete + Whether the directory should be deleted when exiting + (when used as a contextmanager) + + Methods: + cleanup() + Deletes the temporary directory + + When used as a context manager, if the delete attribute is True, on + exiting the context the temporary directory is deleted. + """ + + def __init__( + self, + path: Optional[str] = None, + delete: Union[bool, None, _Default] = _default, + kind: str = "temp", + globally_managed: bool = False, + ): + super().__init__() + + if delete is _default: + if path is not None: + # If we were given an explicit directory, resolve delete option + # now. + delete = False + else: + # Otherwise, we wait until cleanup and see what + # tempdir_registry says. + delete = None + + # The only time we specify path is in for editables where it + # is the value of the --src option. + if path is None: + path = self._create(kind) + + self._path = path + self._deleted = False + self.delete = delete + self.kind = kind + + if globally_managed: + assert _tempdir_manager is not None + _tempdir_manager.enter_context(self) + + @property + def path(self) -> str: + assert not self._deleted, f"Attempted to access deleted path: {self._path}" + return self._path + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} {self.path!r}>" + + def __enter__(self: _T) -> _T: + return self + + def __exit__(self, exc: Any, value: Any, tb: Any) -> None: + if self.delete is not None: + delete = self.delete + elif _tempdir_registry: + delete = _tempdir_registry.get_delete(self.kind) + else: + delete = True + + if delete: + self.cleanup() + + def _create(self, kind: str) -> str: + """Create a temporary directory and store its path in self.path""" + # We realpath here because some systems have their default tmpdir + # symlinked to another directory. This tends to confuse build + # scripts, so we canonicalize the path by traversing potential + # symlinks here. + path = os.path.realpath(tempfile.mkdtemp(prefix=f"pip-{kind}-")) + logger.debug("Created temporary directory: %s", path) + return path + + def cleanup(self) -> None: + """Remove the temporary directory created and reset state""" + self._deleted = True + if not os.path.exists(self._path): + return + rmtree(self._path) + + +class AdjacentTempDirectory(TempDirectory): + """Helper class that creates a temporary directory adjacent to a real one. + + Attributes: + original + The original directory to create a temp directory for. + path + After calling create() or entering, contains the full + path to the temporary directory. + delete + Whether the directory should be deleted when exiting + (when used as a contextmanager) + + """ + + # The characters that may be used to name the temp directory + # We always prepend a ~ and then rotate through these until + # a usable name is found. + # pkg_resources raises a different error for .dist-info folder + # with leading '-' and invalid metadata + LEADING_CHARS = "-~.=%0123456789" + + def __init__(self, original: str, delete: Optional[bool] = None) -> None: + self.original = original.rstrip("/\\") + super().__init__(delete=delete) + + @classmethod + def _generate_names(cls, name: str) -> Iterator[str]: + """Generates a series of temporary names. + + The algorithm replaces the leading characters in the name + with ones that are valid filesystem characters, but are not + valid package names (for both Python and pip definitions of + package). + """ + for i in range(1, len(name)): + for candidate in itertools.combinations_with_replacement( + cls.LEADING_CHARS, i - 1 + ): + new_name = "~" + "".join(candidate) + name[i:] + if new_name != name: + yield new_name + + # If we make it this far, we will have to make a longer name + for i in range(len(cls.LEADING_CHARS)): + for candidate in itertools.combinations_with_replacement( + cls.LEADING_CHARS, i + ): + new_name = "~" + "".join(candidate) + name + if new_name != name: + yield new_name + + def _create(self, kind: str) -> str: + root, name = os.path.split(self.original) + for candidate in self._generate_names(name): + path = os.path.join(root, candidate) + try: + os.mkdir(path) + except OSError as ex: + # Continue if the name exists already + if ex.errno != errno.EEXIST: + raise + else: + path = os.path.realpath(path) + break + else: + # Final fallback on the default behavior. + path = os.path.realpath(tempfile.mkdtemp(prefix=f"pip-{kind}-")) + + logger.debug("Created temporary directory: %s", path) + return path diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/unpacking.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/unpacking.py new file mode 100644 index 0000000..c92ad82 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/unpacking.py @@ -0,0 +1,351 @@ +"""Utilities related archives. +""" + +import logging +import os +import shutil +import stat +import sys +import tarfile +import zipfile +from typing import Iterable, List, Optional +from zipfile import ZipInfo + +from pip._internal.exceptions import InstallationError +from pip._internal.utils.filetypes import ( + BZ2_EXTENSIONS, + TAR_EXTENSIONS, + XZ_EXTENSIONS, + ZIP_EXTENSIONS, +) +from pip._internal.utils.misc import ensure_dir + +logger = logging.getLogger(__name__) + + +SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS + +try: + import bz2 # noqa + + SUPPORTED_EXTENSIONS += BZ2_EXTENSIONS +except ImportError: + logger.debug("bz2 module is not available") + +try: + # Only for Python 3.3+ + import lzma # noqa + + SUPPORTED_EXTENSIONS += XZ_EXTENSIONS +except ImportError: + logger.debug("lzma module is not available") + + +def current_umask() -> int: + """Get the current umask which involves having to set it temporarily.""" + mask = os.umask(0) + os.umask(mask) + return mask + + +def split_leading_dir(path: str) -> List[str]: + path = path.lstrip("/").lstrip("\\") + if "/" in path and ( + ("\\" in path and path.find("/") < path.find("\\")) or "\\" not in path + ): + return path.split("/", 1) + elif "\\" in path: + return path.split("\\", 1) + else: + return [path, ""] + + +def has_leading_dir(paths: Iterable[str]) -> bool: + """Returns true if all the paths have the same leading path name + (i.e., everything is in one subdirectory in an archive)""" + common_prefix = None + for path in paths: + prefix, rest = split_leading_dir(path) + if not prefix: + return False + elif common_prefix is None: + common_prefix = prefix + elif prefix != common_prefix: + return False + return True + + +def is_within_directory(directory: str, target: str) -> bool: + """ + Return true if the absolute path of target is within the directory + """ + abs_directory = os.path.abspath(directory) + abs_target = os.path.abspath(target) + + prefix = os.path.commonpath([abs_directory, abs_target]) + return prefix == abs_directory + + +def _get_default_mode_plus_executable() -> int: + return 0o777 & ~current_umask() | 0o111 + + +def set_extracted_file_to_default_mode_plus_executable(path: str) -> None: + """ + Make file present at path have execute for user/group/world + (chmod +x) is no-op on windows per python docs + """ + os.chmod(path, _get_default_mode_plus_executable()) + + +def zip_item_is_executable(info: ZipInfo) -> bool: + mode = info.external_attr >> 16 + # if mode and regular file and any execute permissions for + # user/group/world? + return bool(mode and stat.S_ISREG(mode) and mode & 0o111) + + +def unzip_file(filename: str, location: str, flatten: bool = True) -> None: + """ + Unzip the file (with path `filename`) to the destination `location`. All + files are written based on system defaults and umask (i.e. permissions are + not preserved), except that regular file members with any execute + permissions (user, group, or world) have "chmod +x" applied after being + written. Note that for windows, any execute changes using os.chmod are + no-ops per the python docs. + """ + ensure_dir(location) + zipfp = open(filename, "rb") + try: + zip = zipfile.ZipFile(zipfp, allowZip64=True) + leading = has_leading_dir(zip.namelist()) and flatten + for info in zip.infolist(): + name = info.filename + fn = name + if leading: + fn = split_leading_dir(name)[1] + fn = os.path.join(location, fn) + dir = os.path.dirname(fn) + if not is_within_directory(location, fn): + message = ( + "The zip file ({}) has a file ({}) trying to install " + "outside target directory ({})" + ) + raise InstallationError(message.format(filename, fn, location)) + if fn.endswith("/") or fn.endswith("\\"): + # A directory + ensure_dir(fn) + else: + ensure_dir(dir) + # Don't use read() to avoid allocating an arbitrarily large + # chunk of memory for the file's content + fp = zip.open(name) + try: + with open(fn, "wb") as destfp: + shutil.copyfileobj(fp, destfp) + finally: + fp.close() + if zip_item_is_executable(info): + set_extracted_file_to_default_mode_plus_executable(fn) + finally: + zipfp.close() + + +def untar_file(filename: str, location: str) -> None: + """ + Untar the file (with path `filename`) to the destination `location`. + All files are written based on system defaults and umask (i.e. permissions + are not preserved), except that regular file members with any execute + permissions (user, group, or world) have "chmod +x" applied on top of the + default. Note that for windows, any execute changes using os.chmod are + no-ops per the python docs. + """ + ensure_dir(location) + if filename.lower().endswith(".gz") or filename.lower().endswith(".tgz"): + mode = "r:gz" + elif filename.lower().endswith(BZ2_EXTENSIONS): + mode = "r:bz2" + elif filename.lower().endswith(XZ_EXTENSIONS): + mode = "r:xz" + elif filename.lower().endswith(".tar"): + mode = "r" + else: + logger.warning( + "Cannot determine compression type for file %s", + filename, + ) + mode = "r:*" + tar = tarfile.open(filename, mode, encoding="utf-8") + try: + leading = has_leading_dir([member.name for member in tar.getmembers()]) + + # PEP 706 added `tarfile.data_filter`, and made some other changes to + # Python's tarfile module (see below). The features were backported to + # security releases. + try: + data_filter = tarfile.data_filter + except AttributeError: + _untar_without_filter(filename, location, tar, leading) + else: + default_mode_plus_executable = _get_default_mode_plus_executable() + + def pip_filter(member: tarfile.TarInfo, path: str) -> tarfile.TarInfo: + if leading: + member.name = split_leading_dir(member.name)[1] + orig_mode = member.mode + try: + try: + member = data_filter(member, location) + except tarfile.LinkOutsideDestinationError: + if sys.version_info[:3] in { + (3, 8, 17), + (3, 9, 17), + (3, 10, 12), + (3, 11, 4), + }: + # The tarfile filter in specific Python versions + # raises LinkOutsideDestinationError on valid input + # (https://github.com/python/cpython/issues/107845) + # Ignore the error there, but do use the + # more lax `tar_filter` + member = tarfile.tar_filter(member, location) + else: + raise + except tarfile.TarError as exc: + message = "Invalid member in the tar file {}: {}" + # Filter error messages mention the member name. + # No need to add it here. + raise InstallationError( + message.format( + filename, + exc, + ) + ) + if member.isfile() and orig_mode & 0o111: + member.mode = default_mode_plus_executable + else: + # See PEP 706 note above. + # The PEP changed this from `int` to `Optional[int]`, + # where None means "use the default". Mypy doesn't + # know this yet. + member.mode = None # type: ignore [assignment] + return member + + tar.extractall(location, filter=pip_filter) + + finally: + tar.close() + + +def is_symlink_target_in_tar(tar: tarfile.TarFile, tarinfo: tarfile.TarInfo) -> bool: + """Check if the file pointed to by the symbolic link is in the tar archive""" + linkname = os.path.join(os.path.dirname(tarinfo.name), tarinfo.linkname) + + linkname = os.path.normpath(linkname) + linkname = linkname.replace("\\", "/") + + try: + tar.getmember(linkname) + return True + except KeyError: + return False + + +def _untar_without_filter( + filename: str, + location: str, + tar: tarfile.TarFile, + leading: bool, +) -> None: + """Fallback for Python without tarfile.data_filter""" + # NOTE: This function can be removed once pip requires CPython ≥ 3.12.​ + # PEP 706 added tarfile.data_filter, made tarfile extraction operations more secure. + # This feature is fully supported from CPython 3.12 onward. + for member in tar.getmembers(): + fn = member.name + if leading: + fn = split_leading_dir(fn)[1] + path = os.path.join(location, fn) + if not is_within_directory(location, path): + message = ( + "The tar file ({}) has a file ({}) trying to install " + "outside target directory ({})" + ) + raise InstallationError(message.format(filename, path, location)) + if member.isdir(): + ensure_dir(path) + elif member.issym(): + if not is_symlink_target_in_tar(tar, member): + message = ( + "The tar file ({}) has a file ({}) trying to install " + "outside target directory ({})" + ) + raise InstallationError( + message.format(filename, member.name, member.linkname) + ) + try: + tar._extract_member(member, path) + except Exception as exc: + # Some corrupt tar files seem to produce this + # (specifically bad symlinks) + logger.warning( + "In the tar file %s the member %s is invalid: %s", + filename, + member.name, + exc, + ) + continue + else: + try: + fp = tar.extractfile(member) + except (KeyError, AttributeError) as exc: + # Some corrupt tar files seem to produce this + # (specifically bad symlinks) + logger.warning( + "In the tar file %s the member %s is invalid: %s", + filename, + member.name, + exc, + ) + continue + ensure_dir(os.path.dirname(path)) + assert fp is not None + with open(path, "wb") as destfp: + shutil.copyfileobj(fp, destfp) + fp.close() + # Update the timestamp (useful for cython compiled files) + tar.utime(member, path) + # member have any execute permissions for user/group/world? + if member.mode & 0o111: + set_extracted_file_to_default_mode_plus_executable(path) + + +def unpack_file( + filename: str, + location: str, + content_type: Optional[str] = None, +) -> None: + filename = os.path.realpath(filename) + if ( + content_type == "application/zip" + or filename.lower().endswith(ZIP_EXTENSIONS) + or zipfile.is_zipfile(filename) + ): + unzip_file(filename, location, flatten=not filename.endswith(".whl")) + elif ( + content_type == "application/x-gzip" + or tarfile.is_tarfile(filename) + or filename.lower().endswith(TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS) + ): + untar_file(filename, location) + else: + # FIXME: handle? + # FIXME: magic signatures? + logger.critical( + "Cannot unpack file %s (downloaded from %s, content-type: %s); " + "cannot detect archive format", + filename, + location, + content_type, + ) + raise InstallationError(f"Cannot determine archive format of {location}") diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/urls.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/urls.py new file mode 100644 index 0000000..6ba2e04 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/urls.py @@ -0,0 +1,62 @@ +import os +import string +import urllib.parse +import urllib.request +from typing import Optional + +from .compat import WINDOWS + + +def get_url_scheme(url: str) -> Optional[str]: + if ":" not in url: + return None + return url.split(":", 1)[0].lower() + + +def path_to_url(path: str) -> str: + """ + Convert a path to a file: URL. The path will be made absolute and have + quoted path parts. + """ + path = os.path.normpath(os.path.abspath(path)) + url = urllib.parse.urljoin("file:", urllib.request.pathname2url(path)) + return url + + +def url_to_path(url: str) -> str: + """ + Convert a file: URL to a path. + """ + assert url.startswith( + "file:" + ), f"You can only turn file: urls into filenames (not {url!r})" + + _, netloc, path, _, _ = urllib.parse.urlsplit(url) + + if not netloc or netloc == "localhost": + # According to RFC 8089, same as empty authority. + netloc = "" + elif WINDOWS: + # If we have a UNC path, prepend UNC share notation. + netloc = "\\\\" + netloc + else: + raise ValueError( + f"non-local file URIs are not supported on this platform: {url!r}" + ) + + path = urllib.request.url2pathname(netloc + path) + + # On Windows, urlsplit parses the path as something like "/C:/Users/foo". + # This creates issues for path-related functions like io.open(), so we try + # to detect and strip the leading slash. + if ( + WINDOWS + and not netloc # Not UNC. + and len(path) >= 3 + and path[0] == "/" # Leading slash to strip. + and path[1] in string.ascii_letters # Drive letter. + and path[2:4] in (":", ":/") # Colon + end of string, or colon + absolute path. + ): + path = path[1:] + + return path diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/virtualenv.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/virtualenv.py new file mode 100644 index 0000000..c926db4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/virtualenv.py @@ -0,0 +1,104 @@ +import logging +import os +import re +import site +import sys +from typing import List, Optional + +logger = logging.getLogger(__name__) +_INCLUDE_SYSTEM_SITE_PACKAGES_REGEX = re.compile( + r"include-system-site-packages\s*=\s*(?Ptrue|false)" +) + + +def _running_under_venv() -> bool: + """Checks if sys.base_prefix and sys.prefix match. + + This handles PEP 405 compliant virtual environments. + """ + return sys.prefix != getattr(sys, "base_prefix", sys.prefix) + + +def _running_under_regular_virtualenv() -> bool: + """Checks if sys.real_prefix is set. + + This handles virtual environments created with pypa's virtualenv. + """ + # pypa/virtualenv case + return hasattr(sys, "real_prefix") + + +def running_under_virtualenv() -> bool: + """Return True if we're running inside a virtualenv, False otherwise.""" + return _running_under_venv() or _running_under_regular_virtualenv() + + +def _get_pyvenv_cfg_lines() -> Optional[List[str]]: + """Reads {sys.prefix}/pyvenv.cfg and returns its contents as list of lines + + Returns None, if it could not read/access the file. + """ + pyvenv_cfg_file = os.path.join(sys.prefix, "pyvenv.cfg") + try: + # Although PEP 405 does not specify, the built-in venv module always + # writes with UTF-8. (pypa/pip#8717) + with open(pyvenv_cfg_file, encoding="utf-8") as f: + return f.read().splitlines() # avoids trailing newlines + except OSError: + return None + + +def _no_global_under_venv() -> bool: + """Check `{sys.prefix}/pyvenv.cfg` for system site-packages inclusion + + PEP 405 specifies that when system site-packages are not supposed to be + visible from a virtual environment, `pyvenv.cfg` must contain the following + line: + + include-system-site-packages = false + + Additionally, log a warning if accessing the file fails. + """ + cfg_lines = _get_pyvenv_cfg_lines() + if cfg_lines is None: + # We're not in a "sane" venv, so assume there is no system + # site-packages access (since that's PEP 405's default state). + logger.warning( + "Could not access 'pyvenv.cfg' despite a virtual environment " + "being active. Assuming global site-packages is not accessible " + "in this environment." + ) + return True + + for line in cfg_lines: + match = _INCLUDE_SYSTEM_SITE_PACKAGES_REGEX.match(line) + if match is not None and match.group("value") == "false": + return True + return False + + +def _no_global_under_regular_virtualenv() -> bool: + """Check if "no-global-site-packages.txt" exists beside site.py + + This mirrors logic in pypa/virtualenv for determining whether system + site-packages are visible in the virtual environment. + """ + site_mod_dir = os.path.dirname(os.path.abspath(site.__file__)) + no_global_site_packages_file = os.path.join( + site_mod_dir, + "no-global-site-packages.txt", + ) + return os.path.exists(no_global_site_packages_file) + + +def virtualenv_no_global() -> bool: + """Returns a boolean, whether running in venv with no system site-packages.""" + # PEP 405 compliance needs to be checked first since virtualenv >=20 would + # return True for both checks, but is only able to use the PEP 405 config. + if _running_under_venv(): + return _no_global_under_venv() + + if _running_under_regular_virtualenv(): + return _no_global_under_regular_virtualenv() + + return False diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/utils/wheel.py b/.venv/lib/python3.9/site-packages/pip/_internal/utils/wheel.py new file mode 100644 index 0000000..03f00e4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/utils/wheel.py @@ -0,0 +1,182 @@ +"""Support functions for working with wheel files. +""" + +import logging +from email.message import Message +from email.parser import Parser +from typing import Dict, Tuple +from zipfile import BadZipFile, ZipFile + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.pkg_resources import DistInfoDistribution, Distribution + +from pip._internal.exceptions import UnsupportedWheel +from pip._internal.utils.pkg_resources import DictMetadata + +VERSION_COMPATIBLE = (1, 0) + + +logger = logging.getLogger(__name__) + + +class WheelMetadata(DictMetadata): + """Metadata provider that maps metadata decoding exceptions to our + internal exception type. + """ + + def __init__(self, metadata: Dict[str, bytes], wheel_name: str) -> None: + super().__init__(metadata) + self._wheel_name = wheel_name + + def get_metadata(self, name: str) -> str: + try: + return super().get_metadata(name) + except UnicodeDecodeError as e: + # Augment the default error with the origin of the file. + raise UnsupportedWheel( + f"Error decoding metadata for {self._wheel_name}: {e}" + ) + + +def pkg_resources_distribution_for_wheel( + wheel_zip: ZipFile, name: str, location: str +) -> Distribution: + """Get a pkg_resources distribution given a wheel. + + :raises UnsupportedWheel: on any errors + """ + info_dir, _ = parse_wheel(wheel_zip, name) + + metadata_files = [p for p in wheel_zip.namelist() if p.startswith(f"{info_dir}/")] + + metadata_text: Dict[str, bytes] = {} + for path in metadata_files: + _, metadata_name = path.split("/", 1) + + try: + metadata_text[metadata_name] = read_wheel_metadata_file(wheel_zip, path) + except UnsupportedWheel as e: + raise UnsupportedWheel("{} has an invalid wheel, {}".format(name, str(e))) + + metadata = WheelMetadata(metadata_text, location) + + return DistInfoDistribution(location=location, metadata=metadata, project_name=name) + + +def parse_wheel(wheel_zip: ZipFile, name: str) -> Tuple[str, Message]: + """Extract information from the provided wheel, ensuring it meets basic + standards. + + Returns the name of the .dist-info directory and the parsed WHEEL metadata. + """ + try: + info_dir = wheel_dist_info_dir(wheel_zip, name) + metadata = wheel_metadata(wheel_zip, info_dir) + version = wheel_version(metadata) + except UnsupportedWheel as e: + raise UnsupportedWheel("{} has an invalid wheel, {}".format(name, str(e))) + + check_compatibility(version, name) + + return info_dir, metadata + + +def wheel_dist_info_dir(source: ZipFile, name: str) -> str: + """Returns the name of the contained .dist-info directory. + + Raises AssertionError or UnsupportedWheel if not found, >1 found, or + it doesn't match the provided name. + """ + # Zip file path separators must be / + subdirs = {p.split("/", 1)[0] for p in source.namelist()} + + info_dirs = [s for s in subdirs if s.endswith(".dist-info")] + + if not info_dirs: + raise UnsupportedWheel(".dist-info directory not found") + + if len(info_dirs) > 1: + raise UnsupportedWheel( + "multiple .dist-info directories found: {}".format(", ".join(info_dirs)) + ) + + info_dir = info_dirs[0] + + info_dir_name = canonicalize_name(info_dir) + canonical_name = canonicalize_name(name) + if not info_dir_name.startswith(canonical_name): + raise UnsupportedWheel( + ".dist-info directory {!r} does not start with {!r}".format( + info_dir, canonical_name + ) + ) + + return info_dir + + +def read_wheel_metadata_file(source: ZipFile, path: str) -> bytes: + try: + return source.read(path) + # BadZipFile for general corruption, KeyError for missing entry, + # and RuntimeError for password-protected files + except (BadZipFile, KeyError, RuntimeError) as e: + raise UnsupportedWheel(f"could not read {path!r} file: {e!r}") + + +def wheel_metadata(source: ZipFile, dist_info_dir: str) -> Message: + """Return the WHEEL metadata of an extracted wheel, if possible. + Otherwise, raise UnsupportedWheel. + """ + path = f"{dist_info_dir}/WHEEL" + # Zip file path separators must be / + wheel_contents = read_wheel_metadata_file(source, path) + + try: + wheel_text = wheel_contents.decode() + except UnicodeDecodeError as e: + raise UnsupportedWheel(f"error decoding {path!r}: {e!r}") + + # FeedParser (used by Parser) does not raise any exceptions. The returned + # message may have .defects populated, but for backwards-compatibility we + # currently ignore them. + return Parser().parsestr(wheel_text) + + +def wheel_version(wheel_data: Message) -> Tuple[int, ...]: + """Given WHEEL metadata, return the parsed Wheel-Version. + Otherwise, raise UnsupportedWheel. + """ + version_text = wheel_data["Wheel-Version"] + if version_text is None: + raise UnsupportedWheel("WHEEL is missing Wheel-Version") + + version = version_text.strip() + + try: + return tuple(map(int, version.split("."))) + except ValueError: + raise UnsupportedWheel(f"invalid Wheel-Version: {version!r}") + + +def check_compatibility(version: Tuple[int, ...], name: str) -> None: + """Raises errors or warns if called with an incompatible Wheel-Version. + + pip should refuse to install a Wheel-Version that's a major series + ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when + installing a version only minor version ahead (e.g 1.2 > 1.1). + + version: a 2-tuple representing a Wheel-Version (Major, Minor) + name: name of wheel or package to raise exception about + + :raises UnsupportedWheel: when an incompatible Wheel-Version is given + """ + if version[0] > VERSION_COMPATIBLE[0]: + raise UnsupportedWheel( + "{}'s Wheel-Version ({}) is not compatible with this version " + "of pip".format(name, ".".join(map(str, version))) + ) + elif version > VERSION_COMPATIBLE: + logger.warning( + "Installing from a newer Wheel-Version (%s)", + ".".join(map(str, version)), + ) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__init__.py b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__init__.py new file mode 100644 index 0000000..b6beddb --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__init__.py @@ -0,0 +1,15 @@ +# Expose a limited set of classes and functions so callers outside of +# the vcs package don't need to import deeper than `pip._internal.vcs`. +# (The test directory may still need to import from a vcs sub-package.) +# Import all vcs modules to register each VCS in the VcsSupport object. +import pip._internal.vcs.bazaar +import pip._internal.vcs.git +import pip._internal.vcs.mercurial +import pip._internal.vcs.subversion # noqa: F401 +from pip._internal.vcs.versioncontrol import ( # noqa: F401 + RemoteNotFoundError, + RemoteNotValidError, + is_url, + make_vcs_requirement_url, + vcs, +) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0448ae9f3b1f019db8420efd5acb56d34a708cf GIT binary patch literal 530 zcmZWlyG{c!5Oi{RT!K;|q)1TErr=yqAt6KqWePwP*I2&Xk~p!?X6;K9K7pE_;FsJ| z@e5SgAwrREEzfvoWNSTqG#Zjn?;qLnsZGdNYz`}ElgDkq_6-0 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..730fc724a4d7a1f6810d72900461ade784ab5bfc GIT binary patch literal 3240 zcmZ`*TW=h<6((o6v$GdTD`|C$-DI2C4JL_qgSIHpAP8c+byGA|fmCRLL5sm?NNLBO zn@O$|4OTCeffNPu)<-``kN!(U-}>ag5Clli;piTB7UUit9+KzsokPY83ta-=zy3Xb z8uSSHFAlDM3{;5&`uRe*kS~Ud`BJ!)55hsd94=EL$mxn$J)`09cZ9dO|AKH|3{Ko|O)Q_T zi?uTf>*=3K(0L8oknO-V?8{VXYr7WfC zekBf?^ORZqi;xOVeq0t>mYH!65|yBC*FW!kp#B4dAR*->bT|!N?u3lHVT-fS6K&y( zj_|h#Z@qN5$J;O12@Siz?TJ43dFLhLUEX`a!i5{WK3@Rd;tk#+Ujp8e7yx$}+6wL~ zR`*=keelxxhU`(k%vWCY;e?@;^7$&9I^=8i)U|88b-rPF>z3E-w81xDx_pbjWoI_O zA&i7u5SKf~dlc7kERDNc%bJa$H{Py{i)0$KYafOmPPMM;&IP6FHj+wBn_0C7vzCQ~ zhjUrgOzovMu&xvb#*;$NWRcKoen#4X_86M-q2qK;_8m~m*{+=j@)ZfFTn4^ez39HH zCetz(leBuK)U2vXsVBRsnjXeah0v2(l}2fC7)u`E;n8la1fPr#L~$_5(%ngQq^D)^ zi}9}~D%Ija6(`T)eW4~*T1{Y~77`#i0Z2@Ctyjj?ky+js+HMqq9Z@Xz)d;jvs5o)z z&BlG>9|>&-%rGth>n?!Q^l))$L9gTrEKM*`FFpiZ8=CdRXF$x|Q*uU*nWm=zyty-H z+MUxAdIpKB8F#n~60I`=GxVf&+?tb9Z{D)$M!%qBaFNJS-484cV zdJNB=lcz*e^wkOYggf6lSh~O$?zZvNVG1X{qQ*@QdEm&mVSzO-VDcTLZ`yH7Vfh}2 zOrSMEr}e_QYR$Gc^lE_^HmldWKxjZUcOY8yjGVZ~4D^I(f`;y;hHTrgYL;bk3*;sG zByg>E@+ZhZWrNlm_53N$UnWQ6U2j(LSc{*-ltK>?I=IrfnF9~lm{}ZJAfp_7DDR#( zH3mYH6LL!D^o;(^J*LObF`y6;c}C?uu!?SwW0(aLx_hqmb?rfA_+&Dv8CC+Q_bo_M zfYlHa1QMZ1q5^;cCEIkBj-^I7P9a^~BvXxInDnMIQ$oTGpcDkI6Gce|WE3^_B9LSN z-LIh8;z8UM+65TZcdn)6?Gxdi@v}0C@$zZX@VfbkdTcg$H4q3YPWK^zkZ_cJSQ*j{-dB zttVx+TR1A6yl|iqS#yj8P+A7Vqm(9z%V5V)eW*!Ird#u*q%hS0J+Z zluC7!@<=?N#o1p$tSN48y>+hlkEMdQj2}g)dK8&%6y+tK!6h4+eiY#@&5Xn|O`E51 zm*&EB5Dj*bX)Azf4tVQB+UqpQ1>DBmxPU&1ag}S>VfB>ovL*6e?B2ufedtWj7Jz1v zMDIxSm+WANl|X)q-RIC5wp*5&e1zn}dErPzmR%GNTQMJ?v@IhTJS>F@55#-O{<;ob zcZa>9J7f;M*LLX2BD9V}CCUdIrj0iyT(HK|M-}`xHdvidJF^L|it**EVm#Anrp9@y zlEy?tu6g@SGHSM4$ubd2HCON(H^Q8=`DjKr_kh<6Jb3IQH)$TZjf*gC8^89ETEOEw z0OT+2y)O}S@(y-ro&oId!$V!jYv{3Vvp2Z^X%qX;5UmPd6h0j~1KNk*UBBxN{_sE9 C)gll8 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/git.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/git.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c7825d11ce2908031357a70ae79155d02b79830e GIT binary patch literal 12364 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b28a9a035068a8d469364d363b4d699d2d4637b0 GIT binary patch literal 4883 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 amzDWyZkDaO1zvy)h<|(bht?0R3;zvZ>UHh_ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f09b10202c1381ef5e2ade2c710fb77c28aa0ada GIT binary patch literal 20902 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 List[str]: + return ["-r", rev] + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + rev_display = rev_options.to_display() + logger.info( + "Checking out %s%s to %s", + url, + rev_display, + display_path(dest), + ) + cmd_args = make_command("branch", "-q", rev_options.to_args(), url, dest) + self.run_command(cmd_args) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command(make_command("switch", url), cwd=dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + cmd_args = make_command("pull", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + # hotfix the URL scheme after removing bzr+ from bzr+ssh:// readd it + url, rev, user_pass = super().get_url_rev_and_auth(url) + if url.startswith("ssh://"): + url = "bzr+" + url + return url, rev, user_pass + + @classmethod + def get_remote_url(cls, location: str) -> str: + urls = cls.run_command( + ["info"], show_stdout=False, stdout_only=True, cwd=location + ) + for line in urls.splitlines(): + line = line.strip() + for x in ("checkout of branch: ", "parent branch: "): + if line.startswith(x): + repo = line.split(x)[1] + if cls._is_local_repository(repo): + return path_to_url(repo) + return repo + raise RemoteNotFoundError + + @classmethod + def get_revision(cls, location: str) -> str: + revision = cls.run_command( + ["revno"], + show_stdout=False, + stdout_only=True, + cwd=location, + ) + return revision.splitlines()[-1] + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + +vcs.register(Bazaar) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/git.py b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/git.py new file mode 100644 index 0000000..7a78ad1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/git.py @@ -0,0 +1,513 @@ +import logging +import os.path +import pathlib +import re +import urllib.parse +import urllib.request +from typing import List, Optional, Tuple + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import HiddenText, display_path, hide_url +from pip._internal.utils.subprocess import make_command +from pip._internal.vcs.versioncontrol import ( + AuthInfo, + RemoteNotFoundError, + RemoteNotValidError, + RevOptions, + VersionControl, + find_path_to_project_root_from_repo_root, + vcs, +) + +urlsplit = urllib.parse.urlsplit +urlunsplit = urllib.parse.urlunsplit + + +logger = logging.getLogger(__name__) + + +GIT_VERSION_REGEX = re.compile( + r"^git version " # Prefix. + r"(\d+)" # Major. + r"\.(\d+)" # Dot, minor. + r"(?:\.(\d+))?" # Optional dot, patch. + r".*$" # Suffix, including any pre- and post-release segments we don't care about. +) + +HASH_REGEX = re.compile("^[a-fA-F0-9]{40}$") + +# SCP (Secure copy protocol) shorthand. e.g. 'git@example.com:foo/bar.git' +SCP_REGEX = re.compile( + r"""^ + # Optional user, e.g. 'git@' + (\w+@)? + # Server, e.g. 'github.com'. + ([^/:]+): + # The server-side path. e.g. 'user/project.git'. Must start with an + # alphanumeric character so as not to be confusable with a Windows paths + # like 'C:/foo/bar' or 'C:\foo\bar'. + (\w[^:]*) + $""", + re.VERBOSE, +) + + +def looks_like_hash(sha: str) -> bool: + return bool(HASH_REGEX.match(sha)) + + +class Git(VersionControl): + name = "git" + dirname = ".git" + repo_name = "clone" + schemes = ( + "git+http", + "git+https", + "git+ssh", + "git+git", + "git+file", + ) + # Prevent the user's environment variables from interfering with pip: + # https://github.com/pypa/pip/issues/1130 + unset_environ = ("GIT_DIR", "GIT_WORK_TREE") + default_arg_rev = "HEAD" + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return [rev] + + def is_immutable_rev_checkout(self, url: str, dest: str) -> bool: + _, rev_options = self.get_url_rev_options(hide_url(url)) + if not rev_options.rev: + return False + if not self.is_commit_id_equal(dest, rev_options.rev): + # the current commit is different from rev, + # which means rev was something else than a commit hash + return False + # return False in the rare case rev is both a commit hash + # and a tag or a branch; we don't want to cache in that case + # because that branch/tag could point to something else in the future + is_tag_or_branch = bool(self.get_revision_sha(dest, rev_options.rev)[0]) + return not is_tag_or_branch + + def get_git_version(self) -> Tuple[int, ...]: + version = self.run_command(["version"], show_stdout=False, stdout_only=True) + match = GIT_VERSION_REGEX.match(version) + if not match: + logger.warning("Can't parse git version: %s", version) + return () + return tuple(int(c) for c in match.groups()) + + @classmethod + def get_current_branch(cls, location: str) -> Optional[str]: + """ + Return the current branch, or None if HEAD isn't at a branch + (e.g. detached HEAD). + """ + # git-symbolic-ref exits with empty stdout if "HEAD" is a detached + # HEAD rather than a symbolic ref. In addition, the -q causes the + # command to exit with status code 1 instead of 128 in this case + # and to suppress the message to stderr. + args = ["symbolic-ref", "-q", "HEAD"] + output = cls.run_command( + args, + extra_ok_returncodes=(1,), + show_stdout=False, + stdout_only=True, + cwd=location, + ) + ref = output.strip() + + if ref.startswith("refs/heads/"): + return ref[len("refs/heads/") :] + + return None + + @classmethod + def get_revision_sha(cls, dest: str, rev: str) -> Tuple[Optional[str], bool]: + """ + Return (sha_or_none, is_branch), where sha_or_none is a commit hash + if the revision names a remote branch or tag, otherwise None. + + Args: + dest: the repository directory. + rev: the revision name. + """ + # Pass rev to pre-filter the list. + output = cls.run_command( + ["show-ref", rev], + cwd=dest, + show_stdout=False, + stdout_only=True, + on_returncode="ignore", + ) + refs = {} + # NOTE: We do not use splitlines here since that would split on other + # unicode separators, which can be maliciously used to install a + # different revision. + for line in output.strip().split("\n"): + line = line.rstrip("\r") + if not line: + continue + try: + ref_sha, ref_name = line.split(" ", maxsplit=2) + except ValueError: + # Include the offending line to simplify troubleshooting if + # this error ever occurs. + raise ValueError(f"unexpected show-ref line: {line!r}") + + refs[ref_name] = ref_sha + + branch_ref = f"refs/remotes/origin/{rev}" + tag_ref = f"refs/tags/{rev}" + + sha = refs.get(branch_ref) + if sha is not None: + return (sha, True) + + sha = refs.get(tag_ref) + + return (sha, False) + + @classmethod + def _should_fetch(cls, dest: str, rev: str) -> bool: + """ + Return true if rev is a ref or is a commit that we don't have locally. + + Branches and tags are not considered in this method because they are + assumed to be always available locally (which is a normal outcome of + ``git clone`` and ``git fetch --tags``). + """ + if rev.startswith("refs/"): + # Always fetch remote refs. + return True + + if not looks_like_hash(rev): + # Git fetch would fail with abbreviated commits. + return False + + if cls.has_commit(dest, rev): + # Don't fetch if we have the commit locally. + return False + + return True + + @classmethod + def resolve_revision( + cls, dest: str, url: HiddenText, rev_options: RevOptions + ) -> RevOptions: + """ + Resolve a revision to a new RevOptions object with the SHA1 of the + branch, tag, or ref if found. + + Args: + rev_options: a RevOptions object. + """ + rev = rev_options.arg_rev + # The arg_rev property's implementation for Git ensures that the + # rev return value is always non-None. + assert rev is not None + + sha, is_branch = cls.get_revision_sha(dest, rev) + + if sha is not None: + rev_options = rev_options.make_new(sha) + rev_options.branch_name = rev if is_branch else None + + return rev_options + + # Do not show a warning for the common case of something that has + # the form of a Git commit hash. + if not looks_like_hash(rev): + logger.warning( + "Did not find branch or tag '%s', assuming revision or ref.", + rev, + ) + + if not cls._should_fetch(dest, rev): + return rev_options + + # fetch the requested revision + cls.run_command( + make_command("fetch", "-q", url, rev_options.to_args()), + cwd=dest, + ) + # Change the revision to the SHA of the ref we fetched + sha = cls.get_revision(dest, rev="FETCH_HEAD") + rev_options = rev_options.make_new(sha) + + return rev_options + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """ + Return whether the current commit hash equals the given name. + + Args: + dest: the repository directory. + name: a string name. + """ + if not name: + # Then avoid an unnecessary subprocess call. + return False + + return cls.get_revision(dest) == name + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + rev_display = rev_options.to_display() + logger.info("Cloning %s%s to %s", url, rev_display, display_path(dest)) + if self.get_git_version() >= (2, 17): + # Git added support for partial clone in 2.17 + # https://git-scm.com/docs/partial-clone + # Speeds up cloning by functioning without a complete copy of repository + self.run_command( + make_command( + "clone", + "--filter=blob:none", + "-q", + url, + dest, + ) + ) + else: + self.run_command(make_command("clone", "-q", url, dest)) + + if rev_options.rev: + # Then a specific revision was requested. + rev_options = self.resolve_revision(dest, url, rev_options) + branch_name = getattr(rev_options, "branch_name", None) + logger.debug("Rev options %s, branch_name %s", rev_options, branch_name) + if branch_name is None: + # Only do a checkout if the current commit id doesn't match + # the requested revision. + if not self.is_commit_id_equal(dest, rev_options.rev): + cmd_args = make_command( + "checkout", + "-q", + rev_options.to_args(), + ) + self.run_command(cmd_args, cwd=dest) + elif self.get_current_branch(dest) != branch_name: + # Then a specific branch was requested, and that branch + # is not yet checked out. + track_branch = f"origin/{branch_name}" + cmd_args = [ + "checkout", + "-b", + branch_name, + "--track", + track_branch, + ] + self.run_command(cmd_args, cwd=dest) + else: + sha = self.get_revision(dest) + rev_options = rev_options.make_new(sha) + + logger.info("Resolved %s to commit %s", url, rev_options.rev) + + #: repo may contain submodules + self.update_submodules(dest) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command( + make_command("config", "remote.origin.url", url), + cwd=dest, + ) + cmd_args = make_command("checkout", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + self.update_submodules(dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + # First fetch changes from the default remote + if self.get_git_version() >= (1, 9): + # fetch tags in addition to everything else + self.run_command(["fetch", "-q", "--tags"], cwd=dest) + else: + self.run_command(["fetch", "-q"], cwd=dest) + # Then reset to wanted revision (maybe even origin/master) + rev_options = self.resolve_revision(dest, url, rev_options) + cmd_args = make_command("reset", "--hard", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + #: update submodules + self.update_submodules(dest) + + @classmethod + def get_remote_url(cls, location: str) -> str: + """ + Return URL of the first remote encountered. + + Raises RemoteNotFoundError if the repository does not have a remote + url configured. + """ + # We need to pass 1 for extra_ok_returncodes since the command + # exits with return code 1 if there are no matching lines. + stdout = cls.run_command( + ["config", "--get-regexp", r"remote\..*\.url"], + extra_ok_returncodes=(1,), + show_stdout=False, + stdout_only=True, + cwd=location, + ) + remotes = stdout.splitlines() + try: + found_remote = remotes[0] + except IndexError: + raise RemoteNotFoundError + + for remote in remotes: + if remote.startswith("remote.origin.url "): + found_remote = remote + break + url = found_remote.split(" ")[1] + return cls._git_remote_to_pip_url(url.strip()) + + @staticmethod + def _git_remote_to_pip_url(url: str) -> str: + """ + Convert a remote url from what git uses to what pip accepts. + + There are 3 legal forms **url** may take: + + 1. A fully qualified url: ssh://git@example.com/foo/bar.git + 2. A local project.git folder: /path/to/bare/repository.git + 3. SCP shorthand for form 1: git@example.com:foo/bar.git + + Form 1 is output as-is. Form 2 must be converted to URI and form 3 must + be converted to form 1. + + See the corresponding test test_git_remote_url_to_pip() for examples of + sample inputs/outputs. + """ + if re.match(r"\w+://", url): + # This is already valid. Pass it though as-is. + return url + if os.path.exists(url): + # A local bare remote (git clone --mirror). + # Needs a file:// prefix. + return pathlib.PurePath(url).as_uri() + scp_match = SCP_REGEX.match(url) + if scp_match: + # Add an ssh:// prefix and replace the ':' with a '/'. + return scp_match.expand(r"ssh://\1\2/\3") + # Otherwise, bail out. + raise RemoteNotValidError(url) + + @classmethod + def has_commit(cls, location: str, rev: str) -> bool: + """ + Check if rev is a commit that is available in the local repository. + """ + try: + cls.run_command( + ["rev-parse", "-q", "--verify", "sha^" + rev], + cwd=location, + log_failed_cmd=False, + ) + except InstallationError: + return False + else: + return True + + @classmethod + def get_revision(cls, location: str, rev: Optional[str] = None) -> str: + if rev is None: + rev = "HEAD" + current_rev = cls.run_command( + ["rev-parse", rev], + show_stdout=False, + stdout_only=True, + cwd=location, + ) + return current_rev.strip() + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + # find the repo root + git_dir = cls.run_command( + ["rev-parse", "--git-dir"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + if not os.path.isabs(git_dir): + git_dir = os.path.join(location, git_dir) + repo_root = os.path.abspath(os.path.join(git_dir, "..")) + return find_path_to_project_root_from_repo_root(location, repo_root) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + """ + Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'. + That's required because although they use SSH they sometimes don't + work with a ssh:// scheme (e.g. GitHub). But we need a scheme for + parsing. Hence we remove it again afterwards and return it as a stub. + """ + # Works around an apparent Git bug + # (see https://article.gmane.org/gmane.comp.version-control.git/146500) + scheme, netloc, path, query, fragment = urlsplit(url) + if scheme.endswith("file"): + initial_slashes = path[: -len(path.lstrip("/"))] + newpath = initial_slashes + urllib.request.url2pathname(path).replace( + "\\", "/" + ).lstrip("/") + after_plus = scheme.find("+") + 1 + url = scheme[:after_plus] + urlunsplit( + (scheme[after_plus:], netloc, newpath, query, fragment), + ) + + if "://" not in url: + assert "file:" not in url + url = url.replace("git+", "git+ssh://") + url, rev, user_pass = super().get_url_rev_and_auth(url) + url = url.replace("ssh://", "") + else: + url, rev, user_pass = super().get_url_rev_and_auth(url) + + return url, rev, user_pass + + @classmethod + def update_submodules(cls, location: str) -> None: + if not os.path.exists(os.path.join(location, ".gitmodules")): + return + cls.run_command( + ["submodule", "update", "--init", "--recursive", "-q"], + cwd=location, + ) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + loc = super().get_repository_root(location) + if loc: + return loc + try: + r = cls.run_command( + ["rev-parse", "--show-toplevel"], + cwd=location, + show_stdout=False, + stdout_only=True, + on_returncode="raise", + log_failed_cmd=False, + ) + except BadCommand: + logger.debug( + "could not determine if %s is under git control " + "because git is not available", + location, + ) + return None + except InstallationError: + return None + return os.path.normpath(r.rstrip("\r\n")) + + @staticmethod + def should_add_vcs_url_prefix(repo_url: str) -> bool: + """In either https or ssh form, requirements must be prefixed with git+.""" + return True + + +vcs.register(Git) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/mercurial.py b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/mercurial.py new file mode 100644 index 0000000..39a2e55 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/mercurial.py @@ -0,0 +1,153 @@ +import configparser +import logging +import os +from typing import List, Optional + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import HiddenText, display_path +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs.versioncontrol import ( + RevOptions, + VersionControl, + find_path_to_project_root_from_repo_root, + vcs, +) + +logger = logging.getLogger(__name__) + + +class Mercurial(VersionControl): + name = "hg" + dirname = ".hg" + repo_name = "clone" + schemes = ( + "hg+file", + "hg+http", + "hg+https", + "hg+ssh", + "hg+static-http", + ) + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return [f"--rev={rev}"] + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + rev_display = rev_options.to_display() + logger.info( + "Cloning hg %s%s to %s", + url, + rev_display, + display_path(dest), + ) + self.run_command(make_command("clone", "--noupdate", "-q", url, dest)) + self.run_command( + make_command("update", "-q", rev_options.to_args()), + cwd=dest, + ) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + repo_config = os.path.join(dest, self.dirname, "hgrc") + config = configparser.RawConfigParser() + try: + config.read(repo_config) + config.set("paths", "default", url.secret) + with open(repo_config, "w") as config_file: + config.write(config_file) + except (OSError, configparser.NoSectionError) as exc: + logger.warning("Could not switch Mercurial repository to %s: %s", url, exc) + else: + cmd_args = make_command("update", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command(["pull", "-q"], cwd=dest) + cmd_args = make_command("update", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + @classmethod + def get_remote_url(cls, location: str) -> str: + url = cls.run_command( + ["showconfig", "paths.default"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + if cls._is_local_repository(url): + url = path_to_url(url) + return url.strip() + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the repository-local changeset revision number, as an integer. + """ + current_revision = cls.run_command( + ["parents", "--template={rev}"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + return current_revision + + @classmethod + def get_requirement_revision(cls, location: str) -> str: + """ + Return the changeset identification hash, as a 40-character + hexadecimal string + """ + current_rev_hash = cls.run_command( + ["parents", "--template={node}"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + return current_rev_hash + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + # find the repo root + repo_root = cls.run_command( + ["root"], show_stdout=False, stdout_only=True, cwd=location + ).strip() + if not os.path.isabs(repo_root): + repo_root = os.path.abspath(os.path.join(location, repo_root)) + return find_path_to_project_root_from_repo_root(location, repo_root) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + loc = super().get_repository_root(location) + if loc: + return loc + try: + r = cls.run_command( + ["root"], + cwd=location, + show_stdout=False, + stdout_only=True, + on_returncode="raise", + log_failed_cmd=False, + ) + except BadCommand: + logger.debug( + "could not determine if %s is under hg control " + "because hg is not available", + location, + ) + return None + except InstallationError: + return None + return os.path.normpath(r.rstrip("\r\n")) + + +vcs.register(Mercurial) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/subversion.py b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/subversion.py new file mode 100644 index 0000000..b5b6fd5 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/subversion.py @@ -0,0 +1,318 @@ +import logging +import os +import re +from typing import List, Optional, Tuple + +from pip._internal.utils.misc import ( + HiddenText, + display_path, + is_console_interactive, + is_installable_dir, + split_auth_from_netloc, +) +from pip._internal.utils.subprocess import CommandArgs, make_command +from pip._internal.vcs.versioncontrol import ( + AuthInfo, + RemoteNotFoundError, + RevOptions, + VersionControl, + vcs, +) + +logger = logging.getLogger(__name__) + +_svn_xml_url_re = re.compile('url="([^"]+)"') +_svn_rev_re = re.compile(r'committed-rev="(\d+)"') +_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"') +_svn_info_xml_url_re = re.compile(r"(.*)") + + +class Subversion(VersionControl): + name = "svn" + dirname = ".svn" + repo_name = "checkout" + schemes = ("svn+ssh", "svn+http", "svn+https", "svn+svn", "svn+file") + + @classmethod + def should_add_vcs_url_prefix(cls, remote_url: str) -> bool: + return True + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return ["-r", rev] + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the maximum revision for all files under a given location + """ + # Note: taken from setuptools.command.egg_info + revision = 0 + + for base, dirs, _ in os.walk(location): + if cls.dirname not in dirs: + dirs[:] = [] + continue # no sense walking uncontrolled subdirs + dirs.remove(cls.dirname) + entries_fn = os.path.join(base, cls.dirname, "entries") + if not os.path.exists(entries_fn): + # FIXME: should we warn? + continue + + dirurl, localrev = cls._get_svn_url_rev(base) + + if base == location: + assert dirurl is not None + base = dirurl + "/" # save the root url + elif not dirurl or not dirurl.startswith(base): + dirs[:] = [] + continue # not part of the same svn tree, skip it + revision = max(revision, localrev) + return str(revision) + + @classmethod + def get_netloc_and_auth( + cls, netloc: str, scheme: str + ) -> Tuple[str, Tuple[Optional[str], Optional[str]]]: + """ + This override allows the auth information to be passed to svn via the + --username and --password options instead of via the URL. + """ + if scheme == "ssh": + # The --username and --password options can't be used for + # svn+ssh URLs, so keep the auth information in the URL. + return super().get_netloc_and_auth(netloc, scheme) + + return split_auth_from_netloc(netloc) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + # hotfix the URL scheme after removing svn+ from svn+ssh:// readd it + url, rev, user_pass = super().get_url_rev_and_auth(url) + if url.startswith("ssh://"): + url = "svn+" + url + return url, rev, user_pass + + @staticmethod + def make_rev_args( + username: Optional[str], password: Optional[HiddenText] + ) -> CommandArgs: + extra_args: CommandArgs = [] + if username: + extra_args += ["--username", username] + if password: + extra_args += ["--password", password] + + return extra_args + + @classmethod + def get_remote_url(cls, location: str) -> str: + # In cases where the source is in a subdirectory, we have to look up in + # the location until we find a valid project root. + orig_location = location + while not is_installable_dir(location): + last_location = location + location = os.path.dirname(location) + if location == last_location: + # We've traversed up to the root of the filesystem without + # finding a Python project. + logger.warning( + "Could not find Python project for directory %s (tried all " + "parent directories)", + orig_location, + ) + raise RemoteNotFoundError + + url, _rev = cls._get_svn_url_rev(location) + if url is None: + raise RemoteNotFoundError + + return url + + @classmethod + def _get_svn_url_rev(cls, location: str) -> Tuple[Optional[str], int]: + from pip._internal.exceptions import InstallationError + + entries_path = os.path.join(location, cls.dirname, "entries") + if os.path.exists(entries_path): + with open(entries_path) as f: + data = f.read() + else: # subversion >= 1.7 does not have the 'entries' file + data = "" + + url = None + if data.startswith("8") or data.startswith("9") or data.startswith("10"): + entries = list(map(str.splitlines, data.split("\n\x0c\n"))) + del entries[0][0] # get rid of the '8' + url = entries[0][3] + revs = [int(d[9]) for d in entries if len(d) > 9 and d[9]] + [0] + elif data.startswith("= 1.7 + # Note that using get_remote_call_options is not necessary here + # because `svn info` is being run against a local directory. + # We don't need to worry about making sure interactive mode + # is being used to prompt for passwords, because passwords + # are only potentially needed for remote server requests. + xml = cls.run_command( + ["info", "--xml", location], + show_stdout=False, + stdout_only=True, + ) + match = _svn_info_xml_url_re.search(xml) + assert match is not None + url = match.group(1) + revs = [int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml)] + except InstallationError: + url, revs = None, [] + + if revs: + rev = max(revs) + else: + rev = 0 + + return url, rev + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + def __init__(self, use_interactive: bool = None) -> None: + if use_interactive is None: + use_interactive = is_console_interactive() + self.use_interactive = use_interactive + + # This member is used to cache the fetched version of the current + # ``svn`` client. + # Special value definitions: + # None: Not evaluated yet. + # Empty tuple: Could not parse version. + self._vcs_version: Optional[Tuple[int, ...]] = None + + super().__init__() + + def call_vcs_version(self) -> Tuple[int, ...]: + """Query the version of the currently installed Subversion client. + + :return: A tuple containing the parts of the version information or + ``()`` if the version returned from ``svn`` could not be parsed. + :raises: BadCommand: If ``svn`` is not installed. + """ + # Example versions: + # svn, version 1.10.3 (r1842928) + # compiled Feb 25 2019, 14:20:39 on x86_64-apple-darwin17.0.0 + # svn, version 1.7.14 (r1542130) + # compiled Mar 28 2018, 08:49:13 on x86_64-pc-linux-gnu + # svn, version 1.12.0-SlikSvn (SlikSvn/1.12.0) + # compiled May 28 2019, 13:44:56 on x86_64-microsoft-windows6.2 + version_prefix = "svn, version " + version = self.run_command(["--version"], show_stdout=False, stdout_only=True) + if not version.startswith(version_prefix): + return () + + version = version[len(version_prefix) :].split()[0] + version_list = version.partition("-")[0].split(".") + try: + parsed_version = tuple(map(int, version_list)) + except ValueError: + return () + + return parsed_version + + def get_vcs_version(self) -> Tuple[int, ...]: + """Return the version of the currently installed Subversion client. + + If the version of the Subversion client has already been queried, + a cached value will be used. + + :return: A tuple containing the parts of the version information or + ``()`` if the version returned from ``svn`` could not be parsed. + :raises: BadCommand: If ``svn`` is not installed. + """ + if self._vcs_version is not None: + # Use cached version, if available. + # If parsing the version failed previously (empty tuple), + # do not attempt to parse it again. + return self._vcs_version + + vcs_version = self.call_vcs_version() + self._vcs_version = vcs_version + return vcs_version + + def get_remote_call_options(self) -> CommandArgs: + """Return options to be used on calls to Subversion that contact the server. + + These options are applicable for the following ``svn`` subcommands used + in this class. + + - checkout + - switch + - update + + :return: A list of command line arguments to pass to ``svn``. + """ + if not self.use_interactive: + # --non-interactive switch is available since Subversion 0.14.4. + # Subversion < 1.8 runs in interactive mode by default. + return ["--non-interactive"] + + svn_version = self.get_vcs_version() + # By default, Subversion >= 1.8 runs in non-interactive mode if + # stdin is not a TTY. Since that is how pip invokes SVN, in + # call_subprocess(), pip must pass --force-interactive to ensure + # the user can be prompted for a password, if required. + # SVN added the --force-interactive option in SVN 1.8. Since + # e.g. RHEL/CentOS 7, which is supported until 2024, ships with + # SVN 1.7, pip should continue to support SVN 1.7. Therefore, pip + # can't safely add the option if the SVN version is < 1.8 (or unknown). + if svn_version >= (1, 8): + return ["--force-interactive"] + + return [] + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + rev_display = rev_options.to_display() + logger.info( + "Checking out %s%s to %s", + url, + rev_display, + display_path(dest), + ) + cmd_args = make_command( + "checkout", + "-q", + self.get_remote_call_options(), + rev_options.to_args(), + url, + dest, + ) + self.run_command(cmd_args) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + cmd_args = make_command( + "switch", + self.get_remote_call_options(), + rev_options.to_args(), + url, + dest, + ) + self.run_command(cmd_args) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + cmd_args = make_command( + "update", + self.get_remote_call_options(), + rev_options.to_args(), + dest, + ) + self.run_command(cmd_args) + + +vcs.register(Subversion) diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/vcs/versioncontrol.py b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/versioncontrol.py new file mode 100644 index 0000000..1139051 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/vcs/versioncontrol.py @@ -0,0 +1,693 @@ +"""Handles all VCS (version control) support""" + +import logging +import os +import shutil +import sys +import urllib.parse +from typing import ( + TYPE_CHECKING, + Any, + Dict, + Iterable, + Iterator, + List, + Mapping, + Optional, + Tuple, + Type, + Union, +) + +from pip._internal.cli.spinners import SpinnerInterface +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import ( + HiddenText, + ask_path_exists, + backup_dir, + display_path, + hide_url, + hide_value, + is_installable_dir, + rmtree, +) +from pip._internal.utils.subprocess import CommandArgs, call_subprocess, make_command +from pip._internal.utils.urls import get_url_scheme + +if TYPE_CHECKING: + # Literal was introduced in Python 3.8. + # + # TODO: Remove `if TYPE_CHECKING` when dropping support for Python 3.7. + from typing import Literal + + +__all__ = ["vcs"] + + +logger = logging.getLogger(__name__) + +AuthInfo = Tuple[Optional[str], Optional[str]] + + +def is_url(name: str) -> bool: + """ + Return true if the name looks like a URL. + """ + scheme = get_url_scheme(name) + if scheme is None: + return False + return scheme in ["http", "https", "file", "ftp"] + vcs.all_schemes + + +def make_vcs_requirement_url( + repo_url: str, rev: str, project_name: str, subdir: Optional[str] = None +) -> str: + """ + Return the URL for a VCS requirement. + + Args: + repo_url: the remote VCS url, with any needed VCS prefix (e.g. "git+"). + project_name: the (unescaped) project name. + """ + egg_project_name = project_name.replace("-", "_") + req = f"{repo_url}@{rev}#egg={egg_project_name}" + if subdir: + req += f"&subdirectory={subdir}" + + return req + + +def find_path_to_project_root_from_repo_root( + location: str, repo_root: str +) -> Optional[str]: + """ + Find the the Python project's root by searching up the filesystem from + `location`. Return the path to project root relative to `repo_root`. + Return None if the project root is `repo_root`, or cannot be found. + """ + # find project root. + orig_location = location + while not is_installable_dir(location): + last_location = location + location = os.path.dirname(location) + if location == last_location: + # We've traversed up to the root of the filesystem without + # finding a Python project. + logger.warning( + "Could not find a Python project for directory %s (tried all " + "parent directories)", + orig_location, + ) + return None + + if os.path.samefile(repo_root, location): + return None + + return os.path.relpath(location, repo_root) + + +class RemoteNotFoundError(Exception): + pass + + +class RemoteNotValidError(Exception): + def __init__(self, url: str): + super().__init__(url) + self.url = url + + +class RevOptions: + + """ + Encapsulates a VCS-specific revision to install, along with any VCS + install options. + + Instances of this class should be treated as if immutable. + """ + + def __init__( + self, + vc_class: Type["VersionControl"], + rev: Optional[str] = None, + extra_args: Optional[CommandArgs] = None, + ) -> None: + """ + Args: + vc_class: a VersionControl subclass. + rev: the name of the revision to install. + extra_args: a list of extra options. + """ + if extra_args is None: + extra_args = [] + + self.extra_args = extra_args + self.rev = rev + self.vc_class = vc_class + self.branch_name: Optional[str] = None + + def __repr__(self) -> str: + return f"" + + @property + def arg_rev(self) -> Optional[str]: + if self.rev is None: + return self.vc_class.default_arg_rev + + return self.rev + + def to_args(self) -> CommandArgs: + """ + Return the VCS-specific command arguments. + """ + args: CommandArgs = [] + rev = self.arg_rev + if rev is not None: + args += self.vc_class.get_base_rev_args(rev) + args += self.extra_args + + return args + + def to_display(self) -> str: + if not self.rev: + return "" + + return f" (to revision {self.rev})" + + def make_new(self, rev: str) -> "RevOptions": + """ + Make a copy of the current instance, but with a new rev. + + Args: + rev: the name of the revision for the new object. + """ + return self.vc_class.make_rev_options(rev, extra_args=self.extra_args) + + +class VcsSupport: + _registry: Dict[str, "VersionControl"] = {} + schemes = ["ssh", "git", "hg", "bzr", "sftp", "svn"] + + def __init__(self) -> None: + # Register more schemes with urlparse for various version control + # systems + urllib.parse.uses_netloc.extend(self.schemes) + super().__init__() + + def __iter__(self) -> Iterator[str]: + return self._registry.__iter__() + + @property + def backends(self) -> List["VersionControl"]: + return list(self._registry.values()) + + @property + def dirnames(self) -> List[str]: + return [backend.dirname for backend in self.backends] + + @property + def all_schemes(self) -> List[str]: + schemes: List[str] = [] + for backend in self.backends: + schemes.extend(backend.schemes) + return schemes + + def register(self, cls: Type["VersionControl"]) -> None: + if not hasattr(cls, "name"): + logger.warning("Cannot register VCS %s", cls.__name__) + return + if cls.name not in self._registry: + self._registry[cls.name] = cls() + logger.debug("Registered VCS backend: %s", cls.name) + + def unregister(self, name: str) -> None: + if name in self._registry: + del self._registry[name] + + def get_backend_for_dir(self, location: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object if a repository of that type is found + at the given directory. + """ + vcs_backends = {} + for vcs_backend in self._registry.values(): + repo_path = vcs_backend.get_repository_root(location) + if not repo_path: + continue + logger.debug("Determine that %s uses VCS: %s", location, vcs_backend.name) + vcs_backends[repo_path] = vcs_backend + + if not vcs_backends: + return None + + # Choose the VCS in the inner-most directory. Since all repository + # roots found here would be either `location` or one of its + # parents, the longest path should have the most path components, + # i.e. the backend representing the inner-most repository. + inner_most_repo_path = max(vcs_backends, key=len) + return vcs_backends[inner_most_repo_path] + + def get_backend_for_scheme(self, scheme: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object or None. + """ + for vcs_backend in self._registry.values(): + if scheme in vcs_backend.schemes: + return vcs_backend + return None + + def get_backend(self, name: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object or None. + """ + name = name.lower() + return self._registry.get(name) + + +vcs = VcsSupport() + + +class VersionControl: + name = "" + dirname = "" + repo_name = "" + # List of supported schemes for this Version Control + schemes: Tuple[str, ...] = () + # Iterable of environment variable names to pass to call_subprocess(). + unset_environ: Tuple[str, ...] = () + default_arg_rev: Optional[str] = None + + @classmethod + def should_add_vcs_url_prefix(cls, remote_url: str) -> bool: + """ + Return whether the vcs prefix (e.g. "git+") should be added to a + repository's remote url when used in a requirement. + """ + return not remote_url.lower().startswith(f"{cls.name}:") + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + return None + + @classmethod + def get_requirement_revision(cls, repo_dir: str) -> str: + """ + Return the revision string that should be used in a requirement. + """ + return cls.get_revision(repo_dir) + + @classmethod + def get_src_requirement(cls, repo_dir: str, project_name: str) -> str: + """ + Return the requirement string to use to redownload the files + currently at the given repository directory. + + Args: + project_name: the (unescaped) project name. + + The return value has a form similar to the following: + + {repository_url}@{revision}#egg={project_name} + """ + repo_url = cls.get_remote_url(repo_dir) + + if cls.should_add_vcs_url_prefix(repo_url): + repo_url = f"{cls.name}+{repo_url}" + + revision = cls.get_requirement_revision(repo_dir) + subdir = cls.get_subdirectory(repo_dir) + req = make_vcs_requirement_url(repo_url, revision, project_name, subdir=subdir) + + return req + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + """ + Return the base revision arguments for a vcs command. + + Args: + rev: the name of a revision to install. Cannot be None. + """ + raise NotImplementedError + + def is_immutable_rev_checkout(self, url: str, dest: str) -> bool: + """ + Return true if the commit hash checked out at dest matches + the revision in url. + + Always return False, if the VCS does not support immutable commit + hashes. + + This method does not check if there are local uncommitted changes + in dest after checkout, as pip currently has no use case for that. + """ + return False + + @classmethod + def make_rev_options( + cls, rev: Optional[str] = None, extra_args: Optional[CommandArgs] = None + ) -> RevOptions: + """ + Return a RevOptions object. + + Args: + rev: the name of a revision to install. + extra_args: a list of extra options. + """ + return RevOptions(cls, rev, extra_args=extra_args) + + @classmethod + def _is_local_repository(cls, repo: str) -> bool: + """ + posix absolute paths start with os.path.sep, + win32 ones start with drive (like c:\\folder) + """ + drive, tail = os.path.splitdrive(repo) + return repo.startswith(os.path.sep) or bool(drive) + + @classmethod + def get_netloc_and_auth( + cls, netloc: str, scheme: str + ) -> Tuple[str, Tuple[Optional[str], Optional[str]]]: + """ + Parse the repository URL's netloc, and return the new netloc to use + along with auth information. + + Args: + netloc: the original repository URL netloc. + scheme: the repository URL's scheme without the vcs prefix. + + This is mainly for the Subversion class to override, so that auth + information can be provided via the --username and --password options + instead of through the URL. For other subclasses like Git without + such an option, auth information must stay in the URL. + + Returns: (netloc, (username, password)). + """ + return netloc, (None, None) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + """ + Parse the repository URL to use, and return the URL, revision, + and auth info to use. + + Returns: (url, rev, (username, password)). + """ + scheme, netloc, path, query, frag = urllib.parse.urlsplit(url) + if "+" not in scheme: + raise ValueError( + "Sorry, {!r} is a malformed VCS url. " + "The format is +://, " + "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp".format(url) + ) + # Remove the vcs prefix. + scheme = scheme.split("+", 1)[1] + netloc, user_pass = cls.get_netloc_and_auth(netloc, scheme) + rev = None + if "@" in path: + path, rev = path.rsplit("@", 1) + if not rev: + raise InstallationError( + "The URL {!r} has an empty revision (after @) " + "which is not supported. Include a revision after @ " + "or remove @ from the URL.".format(url) + ) + url = urllib.parse.urlunsplit((scheme, netloc, path, query, "")) + return url, rev, user_pass + + @staticmethod + def make_rev_args( + username: Optional[str], password: Optional[HiddenText] + ) -> CommandArgs: + """ + Return the RevOptions "extra arguments" to use in obtain(). + """ + return [] + + def get_url_rev_options(self, url: HiddenText) -> Tuple[HiddenText, RevOptions]: + """ + Return the URL and RevOptions object to use in obtain(), + as a tuple (url, rev_options). + """ + secret_url, rev, user_pass = self.get_url_rev_and_auth(url.secret) + username, secret_password = user_pass + password: Optional[HiddenText] = None + if secret_password is not None: + password = hide_value(secret_password) + extra_args = self.make_rev_args(username, password) + rev_options = self.make_rev_options(rev, extra_args=extra_args) + + return hide_url(secret_url), rev_options + + @staticmethod + def normalize_url(url: str) -> str: + """ + Normalize a URL for comparison by unquoting it and removing any + trailing slash. + """ + return urllib.parse.unquote(url).rstrip("/") + + @classmethod + def compare_urls(cls, url1: str, url2: str) -> bool: + """ + Compare two repo URLs for identity, ignoring incidental differences. + """ + return cls.normalize_url(url1) == cls.normalize_url(url2) + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + """ + Fetch a revision from a repository, in the case that this is the + first fetch from the repository. + + Args: + dest: the directory to fetch the repository to. + rev_options: a RevOptions object. + """ + raise NotImplementedError + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + """ + Switch the repo at ``dest`` to point to ``URL``. + + Args: + rev_options: a RevOptions object. + """ + raise NotImplementedError + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + """ + Update an already-existing repo to the given ``rev_options``. + + Args: + rev_options: a RevOptions object. + """ + raise NotImplementedError + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """ + Return whether the id of the current commit equals the given name. + + Args: + dest: the repository directory. + name: a string name. + """ + raise NotImplementedError + + def obtain(self, dest: str, url: HiddenText) -> None: + """ + Install or update in editable mode the package represented by this + VersionControl object. + + :param dest: the repository directory in which to install or update. + :param url: the repository URL starting with a vcs prefix. + """ + url, rev_options = self.get_url_rev_options(url) + + if not os.path.exists(dest): + self.fetch_new(dest, url, rev_options) + return + + rev_display = rev_options.to_display() + if self.is_repository_directory(dest): + existing_url = self.get_remote_url(dest) + if self.compare_urls(existing_url, url.secret): + logger.debug( + "%s in %s exists, and has correct URL (%s)", + self.repo_name.title(), + display_path(dest), + url, + ) + if not self.is_commit_id_equal(dest, rev_options.rev): + logger.info( + "Updating %s %s%s", + display_path(dest), + self.repo_name, + rev_display, + ) + self.update(dest, url, rev_options) + else: + logger.info("Skipping because already up-to-date.") + return + + logger.warning( + "%s %s in %s exists with URL %s", + self.name, + self.repo_name, + display_path(dest), + existing_url, + ) + prompt = ("(s)witch, (i)gnore, (w)ipe, (b)ackup ", ("s", "i", "w", "b")) + else: + logger.warning( + "Directory %s already exists, and is not a %s %s.", + dest, + self.name, + self.repo_name, + ) + # https://github.com/python/mypy/issues/1174 + prompt = ("(i)gnore, (w)ipe, (b)ackup ", ("i", "w", "b")) # type: ignore + + logger.warning( + "The plan is to install the %s repository %s", + self.name, + url, + ) + response = ask_path_exists("What to do? {}".format(prompt[0]), prompt[1]) + + if response == "a": + sys.exit(-1) + + if response == "w": + logger.warning("Deleting %s", display_path(dest)) + rmtree(dest) + self.fetch_new(dest, url, rev_options) + return + + if response == "b": + dest_dir = backup_dir(dest) + logger.warning("Backing up %s to %s", display_path(dest), dest_dir) + shutil.move(dest, dest_dir) + self.fetch_new(dest, url, rev_options) + return + + # Do nothing if the response is "i". + if response == "s": + logger.info( + "Switching %s %s to %s%s", + self.repo_name, + display_path(dest), + url, + rev_display, + ) + self.switch(dest, url, rev_options) + + def unpack(self, location: str, url: HiddenText) -> None: + """ + Clean up current location and download the url repository + (and vcs infos) into location + + :param url: the repository URL starting with a vcs prefix. + """ + if os.path.exists(location): + rmtree(location) + self.obtain(location, url=url) + + @classmethod + def get_remote_url(cls, location: str) -> str: + """ + Return the url used at location + + Raises RemoteNotFoundError if the repository does not have a remote + url configured. + """ + raise NotImplementedError + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the current commit id of the files at the given location. + """ + raise NotImplementedError + + @classmethod + def run_command( + cls, + cmd: Union[List[str], CommandArgs], + show_stdout: bool = True, + cwd: Optional[str] = None, + on_returncode: 'Literal["raise", "warn", "ignore"]' = "raise", + extra_ok_returncodes: Optional[Iterable[int]] = None, + command_desc: Optional[str] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + spinner: Optional[SpinnerInterface] = None, + log_failed_cmd: bool = True, + stdout_only: bool = False, + ) -> str: + """ + Run a VCS subcommand + This is simply a wrapper around call_subprocess that adds the VCS + command name, and checks that the VCS is available + """ + cmd = make_command(cls.name, *cmd) + try: + return call_subprocess( + cmd, + show_stdout, + cwd, + on_returncode=on_returncode, + extra_ok_returncodes=extra_ok_returncodes, + command_desc=command_desc, + extra_environ=extra_environ, + unset_environ=cls.unset_environ, + spinner=spinner, + log_failed_cmd=log_failed_cmd, + stdout_only=stdout_only, + ) + except FileNotFoundError: + # errno.ENOENT = no such file or directory + # In other words, the VCS executable isn't available + raise BadCommand( + f"Cannot find command {cls.name!r} - do you have " + f"{cls.name!r} installed and in your PATH?" + ) + except PermissionError: + # errno.EACCES = Permission denied + # This error occurs, for instance, when the command is installed + # only for another user. So, the current user don't have + # permission to call the other user command. + raise BadCommand( + f"No permission to execute {cls.name!r} - install it " + f"locally, globally (ask admin), or check your PATH. " + f"See possible solutions at " + f"https://pip.pypa.io/en/latest/reference/pip_freeze/" + f"#fixing-permission-denied." + ) + + @classmethod + def is_repository_directory(cls, path: str) -> bool: + """ + Return whether a directory path is a repository directory. + """ + logger.debug("Checking in %s for %s (%s)...", path, cls.dirname, cls.name) + return os.path.exists(os.path.join(path, cls.dirname)) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + """ + Return the "root" (top-level) directory controlled by the vcs, + or `None` if the directory is not in any. + + It is meant to be overridden to implement smarter detection + mechanisms for specific vcs. + + This can do more than is_repository_directory() alone. For + example, the Git override checks that Git is actually available. + """ + if cls.is_repository_directory(location): + return location + return None diff --git a/.venv/lib/python3.9/site-packages/pip/_internal/wheel_builder.py b/.venv/lib/python3.9/site-packages/pip/_internal/wheel_builder.py new file mode 100644 index 0000000..a9123a0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_internal/wheel_builder.py @@ -0,0 +1,375 @@ +"""Orchestrator for building wheels from InstallRequirements. +""" + +import logging +import os.path +import re +import shutil +from typing import Any, Callable, Iterable, List, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name, canonicalize_version +from pip._vendor.packaging.version import InvalidVersion, Version + +from pip._internal.cache import WheelCache +from pip._internal.exceptions import InvalidWheelFilename, UnsupportedWheel +from pip._internal.metadata import FilesystemWheel, get_wheel_distribution +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.operations.build.wheel import build_wheel_pep517 +from pip._internal.operations.build.wheel_editable import build_wheel_editable +from pip._internal.operations.build.wheel_legacy import build_wheel_legacy +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ensure_dir, hash_file, is_wheel_installed +from pip._internal.utils.setuptools_build import make_setuptools_clean_args +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import vcs + +logger = logging.getLogger(__name__) + +_egg_info_re = re.compile(r"([a-z0-9_.]+)-([a-z0-9_.!+-]+)", re.IGNORECASE) + +BinaryAllowedPredicate = Callable[[InstallRequirement], bool] +BuildResult = Tuple[List[InstallRequirement], List[InstallRequirement]] + + +def _contains_egg_info(s: str) -> bool: + """Determine whether the string looks like an egg_info. + + :param s: The string to parse. E.g. foo-2.1 + """ + return bool(_egg_info_re.search(s)) + + +def _should_build( + req: InstallRequirement, + need_wheel: bool, + check_binary_allowed: BinaryAllowedPredicate, +) -> bool: + """Return whether an InstallRequirement should be built into a wheel.""" + if req.constraint: + # never build requirements that are merely constraints + return False + if req.is_wheel: + if need_wheel: + logger.info( + "Skipping %s, due to already being wheel.", + req.name, + ) + return False + + if need_wheel: + # i.e. pip wheel, not pip install + return True + + # From this point, this concerns the pip install command only + # (need_wheel=False). + + if not req.source_dir: + return False + + if req.editable: + # we only build PEP 660 editable requirements + return req.supports_pyproject_editable() + + if req.use_pep517: + return True + + if not check_binary_allowed(req): + logger.info( + "Skipping wheel build for %s, due to binaries being disabled for it.", + req.name, + ) + return False + + if not is_wheel_installed(): + # we don't build legacy requirements if wheel is not installed + logger.info( + "Using legacy 'setup.py install' for %s, " + "since package 'wheel' is not installed.", + req.name, + ) + return False + + return True + + +def should_build_for_wheel_command( + req: InstallRequirement, +) -> bool: + return _should_build(req, need_wheel=True, check_binary_allowed=_always_true) + + +def should_build_for_install_command( + req: InstallRequirement, + check_binary_allowed: BinaryAllowedPredicate, +) -> bool: + return _should_build( + req, need_wheel=False, check_binary_allowed=check_binary_allowed + ) + + +def _should_cache( + req: InstallRequirement, +) -> Optional[bool]: + """ + Return whether a built InstallRequirement can be stored in the persistent + wheel cache, assuming the wheel cache is available, and _should_build() + has determined a wheel needs to be built. + """ + if req.editable or not req.source_dir: + # never cache editable requirements + return False + + if req.link and req.link.is_vcs: + # VCS checkout. Do not cache + # unless it points to an immutable commit hash. + assert not req.editable + assert req.source_dir + vcs_backend = vcs.get_backend_for_scheme(req.link.scheme) + assert vcs_backend + if vcs_backend.is_immutable_rev_checkout(req.link.url, req.source_dir): + return True + return False + + assert req.link + base, ext = req.link.splitext() + if _contains_egg_info(base): + return True + + # Otherwise, do not cache. + return False + + +def _get_cache_dir( + req: InstallRequirement, + wheel_cache: WheelCache, +) -> str: + """Return the persistent or temporary cache directory where the built + wheel need to be stored. + """ + cache_available = bool(wheel_cache.cache_dir) + assert req.link + if cache_available and _should_cache(req): + cache_dir = wheel_cache.get_path_for_link(req.link) + else: + cache_dir = wheel_cache.get_ephem_path_for_link(req.link) + return cache_dir + + +def _always_true(_: Any) -> bool: + return True + + +def _verify_one(req: InstallRequirement, wheel_path: str) -> None: + canonical_name = canonicalize_name(req.name or "") + w = Wheel(os.path.basename(wheel_path)) + if canonicalize_name(w.name) != canonical_name: + raise InvalidWheelFilename( + "Wheel has unexpected file name: expected {!r}, " + "got {!r}".format(canonical_name, w.name), + ) + dist = get_wheel_distribution(FilesystemWheel(wheel_path), canonical_name) + dist_verstr = str(dist.version) + if canonicalize_version(dist_verstr) != canonicalize_version(w.version): + raise InvalidWheelFilename( + "Wheel has unexpected file name: expected {!r}, " + "got {!r}".format(dist_verstr, w.version), + ) + metadata_version_value = dist.metadata_version + if metadata_version_value is None: + raise UnsupportedWheel("Missing Metadata-Version") + try: + metadata_version = Version(metadata_version_value) + except InvalidVersion: + msg = f"Invalid Metadata-Version: {metadata_version_value}" + raise UnsupportedWheel(msg) + if metadata_version >= Version("1.2") and not isinstance(dist.version, Version): + raise UnsupportedWheel( + "Metadata 1.2 mandates PEP 440 version, " + "but {!r} is not".format(dist_verstr) + ) + + +def _build_one( + req: InstallRequirement, + output_dir: str, + verify: bool, + build_options: List[str], + global_options: List[str], + editable: bool, +) -> Optional[str]: + """Build one wheel. + + :return: The filename of the built wheel, or None if the build failed. + """ + artifact = "editable" if editable else "wheel" + try: + ensure_dir(output_dir) + except OSError as e: + logger.warning( + "Building %s for %s failed: %s", + artifact, + req.name, + e, + ) + return None + + # Install build deps into temporary directory (PEP 518) + with req.build_env: + wheel_path = _build_one_inside_env( + req, output_dir, build_options, global_options, editable + ) + if wheel_path and verify: + try: + _verify_one(req, wheel_path) + except (InvalidWheelFilename, UnsupportedWheel) as e: + logger.warning("Built %s for %s is invalid: %s", artifact, req.name, e) + return None + return wheel_path + + +def _build_one_inside_env( + req: InstallRequirement, + output_dir: str, + build_options: List[str], + global_options: List[str], + editable: bool, +) -> Optional[str]: + with TempDirectory(kind="wheel") as temp_dir: + assert req.name + if req.use_pep517: + assert req.metadata_directory + assert req.pep517_backend + if global_options: + logger.warning( + "Ignoring --global-option when building %s using PEP 517", req.name + ) + if build_options: + logger.warning( + "Ignoring --build-option when building %s using PEP 517", req.name + ) + if editable: + wheel_path = build_wheel_editable( + name=req.name, + backend=req.pep517_backend, + metadata_directory=req.metadata_directory, + tempd=temp_dir.path, + ) + else: + wheel_path = build_wheel_pep517( + name=req.name, + backend=req.pep517_backend, + metadata_directory=req.metadata_directory, + tempd=temp_dir.path, + ) + else: + wheel_path = build_wheel_legacy( + name=req.name, + setup_py_path=req.setup_py_path, + source_dir=req.unpacked_source_directory, + global_options=global_options, + build_options=build_options, + tempd=temp_dir.path, + ) + + if wheel_path is not None: + wheel_name = os.path.basename(wheel_path) + dest_path = os.path.join(output_dir, wheel_name) + try: + wheel_hash, length = hash_file(wheel_path) + shutil.move(wheel_path, dest_path) + logger.info( + "Created wheel for %s: filename=%s size=%d sha256=%s", + req.name, + wheel_name, + length, + wheel_hash.hexdigest(), + ) + logger.info("Stored in directory: %s", output_dir) + return dest_path + except Exception as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, + e, + ) + # Ignore return, we can't do anything else useful. + if not req.use_pep517: + _clean_one_legacy(req, global_options) + return None + + +def _clean_one_legacy(req: InstallRequirement, global_options: List[str]) -> bool: + clean_args = make_setuptools_clean_args( + req.setup_py_path, + global_options=global_options, + ) + + logger.info("Running setup.py clean for %s", req.name) + try: + call_subprocess(clean_args, cwd=req.source_dir) + return True + except Exception: + logger.error("Failed cleaning build dir for %s", req.name) + return False + + +def build( + requirements: Iterable[InstallRequirement], + wheel_cache: WheelCache, + verify: bool, + build_options: List[str], + global_options: List[str], +) -> BuildResult: + """Build wheels. + + :return: The list of InstallRequirement that succeeded to build and + the list of InstallRequirement that failed to build. + """ + if not requirements: + return [], [] + + # Build the wheels. + logger.info( + "Building wheels for collected packages: %s", + ", ".join(req.name for req in requirements), # type: ignore + ) + + with indent_log(): + build_successes, build_failures = [], [] + for req in requirements: + assert req.name + cache_dir = _get_cache_dir(req, wheel_cache) + wheel_file = _build_one( + req, + cache_dir, + verify, + build_options, + global_options, + req.editable and req.permit_editable_wheels, + ) + if wheel_file: + # Update the link for this. + req.link = Link(path_to_url(wheel_file)) + req.local_file_path = req.link.file_path + assert req.link.is_wheel + build_successes.append(req) + else: + build_failures.append(req) + + # notify success/failure + if build_successes: + logger.info( + "Successfully built %s", + " ".join([req.name for req in build_successes]), # type: ignore + ) + if build_failures: + logger.info( + "Failed to build %s", + " ".join([req.name for req in build_failures]), # type: ignore + ) + # Return a list of requirements that failed to build + return build_successes, build_failures diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/__init__.py new file mode 100644 index 0000000..3843cb0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/__init__.py @@ -0,0 +1,111 @@ +""" +pip._vendor is for vendoring dependencies of pip to prevent needing pip to +depend on something external. + +Files inside of pip._vendor should be considered immutable and should only be +updated to versions from upstream. +""" +from __future__ import absolute_import + +import glob +import os.path +import sys + +# Downstream redistributors which have debundled our dependencies should also +# patch this value to be true. This will trigger the additional patching +# to cause things like "six" to be available as pip. +DEBUNDLED = False + +# By default, look in this directory for a bunch of .whl files which we will +# add to the beginning of sys.path before attempting to import anything. This +# is done to support downstream re-distributors like Debian and Fedora who +# wish to create their own Wheels for our dependencies to aid in debundling. +WHEEL_DIR = os.path.abspath(os.path.dirname(__file__)) + + +# Define a small helper function to alias our vendored modules to the real ones +# if the vendored ones do not exist. This idea of this was taken from +# https://github.com/kennethreitz/requests/pull/2567. +def vendored(modulename): + vendored_name = "{0}.{1}".format(__name__, modulename) + + try: + __import__(modulename, globals(), locals(), level=0) + except ImportError: + # We can just silently allow import failures to pass here. If we + # got to this point it means that ``import pip._vendor.whatever`` + # failed and so did ``import whatever``. Since we're importing this + # upfront in an attempt to alias imports, not erroring here will + # just mean we get a regular import error whenever pip *actually* + # tries to import one of these modules to use it, which actually + # gives us a better error message than we would have otherwise + # gotten. + pass + else: + sys.modules[vendored_name] = sys.modules[modulename] + base, head = vendored_name.rsplit(".", 1) + setattr(sys.modules[base], head, sys.modules[modulename]) + + +# If we're operating in a debundled setup, then we want to go ahead and trigger +# the aliasing of our vendored libraries as well as looking for wheels to add +# to our sys.path. This will cause all of this code to be a no-op typically +# however downstream redistributors can enable it in a consistent way across +# all platforms. +if DEBUNDLED: + # Actually look inside of WHEEL_DIR to find .whl files and add them to the + # front of our sys.path. + sys.path[:] = glob.glob(os.path.join(WHEEL_DIR, "*.whl")) + sys.path + + # Actually alias all of our vendored dependencies. + vendored("cachecontrol") + vendored("certifi") + vendored("colorama") + vendored("distlib") + vendored("distro") + vendored("html5lib") + vendored("six") + vendored("six.moves") + vendored("six.moves.urllib") + vendored("six.moves.urllib.parse") + vendored("packaging") + vendored("packaging.version") + vendored("packaging.specifiers") + vendored("pep517") + vendored("pkg_resources") + vendored("platformdirs") + vendored("progress") + vendored("requests") + vendored("requests.exceptions") + vendored("requests.packages") + vendored("requests.packages.urllib3") + vendored("requests.packages.urllib3._collections") + vendored("requests.packages.urllib3.connection") + vendored("requests.packages.urllib3.connectionpool") + vendored("requests.packages.urllib3.contrib") + vendored("requests.packages.urllib3.contrib.ntlmpool") + vendored("requests.packages.urllib3.contrib.pyopenssl") + vendored("requests.packages.urllib3.exceptions") + vendored("requests.packages.urllib3.fields") + vendored("requests.packages.urllib3.filepost") + vendored("requests.packages.urllib3.packages") + vendored("requests.packages.urllib3.packages.ordered_dict") + vendored("requests.packages.urllib3.packages.six") + vendored("requests.packages.urllib3.packages.ssl_match_hostname") + vendored("requests.packages.urllib3.packages.ssl_match_hostname." + "_implementation") + vendored("requests.packages.urllib3.poolmanager") + vendored("requests.packages.urllib3.request") + vendored("requests.packages.urllib3.response") + vendored("requests.packages.urllib3.util") + vendored("requests.packages.urllib3.util.connection") + vendored("requests.packages.urllib3.util.request") + vendored("requests.packages.urllib3.util.response") + vendored("requests.packages.urllib3.util.retry") + vendored("requests.packages.urllib3.util.ssl_") + vendored("requests.packages.urllib3.util.timeout") + vendored("requests.packages.urllib3.util.url") + vendored("resolvelib") + vendored("tenacity") + vendored("tomli") + vendored("urllib3") diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac63eee30ed5fad6a5d3f536c6c35a35f291ff36 GIT binary patch literal 2920 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

    A}BWWmd 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 D2QApp literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc7a1147228fd43a7c28a0ccb2f2e98eac702619 GIT binary patch literal 20371 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 Tw*HTk9kBi{dV2x% literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..992dcb45d257a1ca3157c5c8a828e9f1612b29f4 GIT binary patch literal 27184 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

    T(e{#(4bT^bGTd3MuYrG@}nATLO}2(QjD0y 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 A(EtDd literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1442db269bbc397029134b476b1988c6c77158bc GIT binary patch literal 1119 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 ATmS$7 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/misc.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/misc.py new file mode 100644 index 0000000..cfb318d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/misc.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Backports for individual classes and functions.""" + +import os +import sys + +__all__ = ['cache_from_source', 'callable', 'fsencode'] + + +try: + from imp import cache_from_source +except ImportError: + def cache_from_source(py_file, debug=__debug__): + ext = debug and 'c' or 'o' + return py_file + ext + + +try: + callable = callable +except NameError: + from collections import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode +except AttributeError: + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, str): + return filename.encode(sys.getfilesystemencoding()) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/shutil.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/shutil.py new file mode 100644 index 0000000..10ed362 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/shutil.py @@ -0,0 +1,764 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Utility functions for copying and archiving files and directory trees. + +XXX The functions here don't copy the resource fork or other metadata on Mac. + +""" + +import os +import sys +import stat +from os.path import abspath +import fnmatch +try: + from collections.abc import Callable +except ImportError: + from collections import Callable +import errno +from . import tarfile + +try: + import bz2 + _BZ2_SUPPORTED = True +except ImportError: + _BZ2_SUPPORTED = False + +try: + from pwd import getpwnam +except ImportError: + getpwnam = None + +try: + from grp import getgrnam +except ImportError: + getgrnam = None + +__all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2", + "copytree", "move", "rmtree", "Error", "SpecialFileError", + "ExecError", "make_archive", "get_archive_formats", + "register_archive_format", "unregister_archive_format", + "get_unpack_formats", "register_unpack_format", + "unregister_unpack_format", "unpack_archive", "ignore_patterns"] + +class Error(EnvironmentError): + pass + +class SpecialFileError(EnvironmentError): + """Raised when trying to do a kind of operation (e.g. copying) which is + not supported on a special file (e.g. a named pipe)""" + +class ExecError(EnvironmentError): + """Raised when a command could not be executed""" + +class ReadError(EnvironmentError): + """Raised when an archive cannot be read""" + +class RegistryError(Exception): + """Raised when a registry operation with the archiving + and unpacking registries fails""" + + +try: + WindowsError +except NameError: + WindowsError = None + +def copyfileobj(fsrc, fdst, length=16*1024): + """copy data from file-like object fsrc to file-like object fdst""" + while 1: + buf = fsrc.read(length) + if not buf: + break + fdst.write(buf) + +def _samefile(src, dst): + # Macintosh, Unix. + if hasattr(os.path, 'samefile'): + try: + return os.path.samefile(src, dst) + except OSError: + return False + + # All other platforms: check for same pathname. + return (os.path.normcase(os.path.abspath(src)) == + os.path.normcase(os.path.abspath(dst))) + +def copyfile(src, dst): + """Copy data from src to dst""" + if _samefile(src, dst): + raise Error("`%s` and `%s` are the same file" % (src, dst)) + + for fn in [src, dst]: + try: + st = os.stat(fn) + except OSError: + # File most likely does not exist + pass + else: + # XXX What about other special files? (sockets, devices...) + if stat.S_ISFIFO(st.st_mode): + raise SpecialFileError("`%s` is a named pipe" % fn) + + with open(src, 'rb') as fsrc: + with open(dst, 'wb') as fdst: + copyfileobj(fsrc, fdst) + +def copymode(src, dst): + """Copy mode bits from src to dst""" + if hasattr(os, 'chmod'): + st = os.stat(src) + mode = stat.S_IMODE(st.st_mode) + os.chmod(dst, mode) + +def copystat(src, dst): + """Copy all stat info (mode bits, atime, mtime, flags) from src to dst""" + st = os.stat(src) + mode = stat.S_IMODE(st.st_mode) + if hasattr(os, 'utime'): + os.utime(dst, (st.st_atime, st.st_mtime)) + if hasattr(os, 'chmod'): + os.chmod(dst, mode) + if hasattr(os, 'chflags') and hasattr(st, 'st_flags'): + try: + os.chflags(dst, st.st_flags) + except OSError as why: + if (not hasattr(errno, 'EOPNOTSUPP') or + why.errno != errno.EOPNOTSUPP): + raise + +def copy(src, dst): + """Copy data and mode bits ("cp src dst"). + + The destination may be a directory. + + """ + if os.path.isdir(dst): + dst = os.path.join(dst, os.path.basename(src)) + copyfile(src, dst) + copymode(src, dst) + +def copy2(src, dst): + """Copy data and all stat info ("cp -p src dst"). + + The destination may be a directory. + + """ + if os.path.isdir(dst): + dst = os.path.join(dst, os.path.basename(src)) + copyfile(src, dst) + copystat(src, dst) + +def ignore_patterns(*patterns): + """Function that can be used as copytree() ignore parameter. + + Patterns is a sequence of glob-style patterns + that are used to exclude files""" + def _ignore_patterns(path, names): + ignored_names = [] + for pattern in patterns: + ignored_names.extend(fnmatch.filter(names, pattern)) + return set(ignored_names) + return _ignore_patterns + +def copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, + ignore_dangling_symlinks=False): + """Recursively copy a directory tree. + + The destination directory must not already exist. + If exception(s) occur, an Error is raised with a list of reasons. + + If the optional symlinks flag is true, symbolic links in the + source tree result in symbolic links in the destination tree; if + it is false, the contents of the files pointed to by symbolic + links are copied. If the file pointed by the symlink doesn't + exist, an exception will be added in the list of errors raised in + an Error exception at the end of the copy process. + + You can set the optional ignore_dangling_symlinks flag to true if you + want to silence this exception. Notice that this has no effect on + platforms that don't support os.symlink. + + The optional ignore argument is a callable. If given, it + is called with the `src` parameter, which is the directory + being visited by copytree(), and `names` which is the list of + `src` contents, as returned by os.listdir(): + + callable(src, names) -> ignored_names + + Since copytree() is called recursively, the callable will be + called once for each directory that is copied. It returns a + list of names relative to the `src` directory that should + not be copied. + + The optional copy_function argument is a callable that will be used + to copy each file. It will be called with the source path and the + destination path as arguments. By default, copy2() is used, but any + function that supports the same signature (like copy()) can be used. + + """ + names = os.listdir(src) + if ignore is not None: + ignored_names = ignore(src, names) + else: + ignored_names = set() + + os.makedirs(dst) + errors = [] + for name in names: + if name in ignored_names: + continue + srcname = os.path.join(src, name) + dstname = os.path.join(dst, name) + try: + if os.path.islink(srcname): + linkto = os.readlink(srcname) + if symlinks: + os.symlink(linkto, dstname) + else: + # ignore dangling symlink if the flag is on + if not os.path.exists(linkto) and ignore_dangling_symlinks: + continue + # otherwise let the copy occurs. copy2 will raise an error + copy_function(srcname, dstname) + elif os.path.isdir(srcname): + copytree(srcname, dstname, symlinks, ignore, copy_function) + else: + # Will raise a SpecialFileError for unsupported file types + copy_function(srcname, dstname) + # catch the Error from the recursive copytree so that we can + # continue with other files + except Error as err: + errors.extend(err.args[0]) + except EnvironmentError as why: + errors.append((srcname, dstname, str(why))) + try: + copystat(src, dst) + except OSError as why: + if WindowsError is not None and isinstance(why, WindowsError): + # Copying file access times may fail on Windows + pass + else: + errors.extend((src, dst, str(why))) + if errors: + raise Error(errors) + +def rmtree(path, ignore_errors=False, onerror=None): + """Recursively delete a directory tree. + + If ignore_errors is set, errors are ignored; otherwise, if onerror + is set, it is called to handle the error with arguments (func, + path, exc_info) where func is os.listdir, os.remove, or os.rmdir; + path is the argument to that function that caused it to fail; and + exc_info is a tuple returned by sys.exc_info(). If ignore_errors + is false and onerror is None, an exception is raised. + + """ + if ignore_errors: + def onerror(*args): + pass + elif onerror is None: + def onerror(*args): + raise + try: + if os.path.islink(path): + # symlinks to directories are forbidden, see bug #1669 + raise OSError("Cannot call rmtree on a symbolic link") + except OSError: + onerror(os.path.islink, path, sys.exc_info()) + # can't continue even if onerror hook returns + return + names = [] + try: + names = os.listdir(path) + except os.error: + onerror(os.listdir, path, sys.exc_info()) + for name in names: + fullname = os.path.join(path, name) + try: + mode = os.lstat(fullname).st_mode + except os.error: + mode = 0 + if stat.S_ISDIR(mode): + rmtree(fullname, ignore_errors, onerror) + else: + try: + os.remove(fullname) + except os.error: + onerror(os.remove, fullname, sys.exc_info()) + try: + os.rmdir(path) + except os.error: + onerror(os.rmdir, path, sys.exc_info()) + + +def _basename(path): + # A basename() variant which first strips the trailing slash, if present. + # Thus we always get the last component of the path, even for directories. + return os.path.basename(path.rstrip(os.path.sep)) + +def move(src, dst): + """Recursively move a file or directory to another location. This is + similar to the Unix "mv" command. + + If the destination is a directory or a symlink to a directory, the source + is moved inside the directory. The destination path must not already + exist. + + If the destination already exists but is not a directory, it may be + overwritten depending on os.rename() semantics. + + If the destination is on our current filesystem, then rename() is used. + Otherwise, src is copied to the destination and then removed. + A lot more could be done here... A look at a mv.c shows a lot of + the issues this implementation glosses over. + + """ + real_dst = dst + if os.path.isdir(dst): + if _samefile(src, dst): + # We might be on a case insensitive filesystem, + # perform the rename anyway. + os.rename(src, dst) + return + + real_dst = os.path.join(dst, _basename(src)) + if os.path.exists(real_dst): + raise Error("Destination path '%s' already exists" % real_dst) + try: + os.rename(src, real_dst) + except OSError: + if os.path.isdir(src): + if _destinsrc(src, dst): + raise Error("Cannot move a directory '%s' into itself '%s'." % (src, dst)) + copytree(src, real_dst, symlinks=True) + rmtree(src) + else: + copy2(src, real_dst) + os.unlink(src) + +def _destinsrc(src, dst): + src = abspath(src) + dst = abspath(dst) + if not src.endswith(os.path.sep): + src += os.path.sep + if not dst.endswith(os.path.sep): + dst += os.path.sep + return dst.startswith(src) + +def _get_gid(name): + """Returns a gid, given a group name.""" + if getgrnam is None or name is None: + return None + try: + result = getgrnam(name) + except KeyError: + result = None + if result is not None: + return result[2] + return None + +def _get_uid(name): + """Returns an uid, given a user name.""" + if getpwnam is None or name is None: + return None + try: + result = getpwnam(name) + except KeyError: + result = None + if result is not None: + return result[2] + return None + +def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0, + owner=None, group=None, logger=None): + """Create a (possibly compressed) tar file from all the files under + 'base_dir'. + + 'compress' must be "gzip" (the default), "bzip2", or None. + + 'owner' and 'group' can be used to define an owner and a group for the + archive that is being built. If not provided, the current owner and group + will be used. + + The output tar file will be named 'base_name' + ".tar", possibly plus + the appropriate compression extension (".gz", or ".bz2"). + + Returns the output filename. + """ + tar_compression = {'gzip': 'gz', None: ''} + compress_ext = {'gzip': '.gz'} + + if _BZ2_SUPPORTED: + tar_compression['bzip2'] = 'bz2' + compress_ext['bzip2'] = '.bz2' + + # flags for compression program, each element of list will be an argument + if compress is not None and compress not in compress_ext: + raise ValueError("bad value for 'compress', or compression format not " + "supported : {0}".format(compress)) + + archive_name = base_name + '.tar' + compress_ext.get(compress, '') + archive_dir = os.path.dirname(archive_name) + + if not os.path.exists(archive_dir): + if logger is not None: + logger.info("creating %s", archive_dir) + if not dry_run: + os.makedirs(archive_dir) + + # creating the tarball + if logger is not None: + logger.info('Creating tar archive') + + uid = _get_uid(owner) + gid = _get_gid(group) + + def _set_uid_gid(tarinfo): + if gid is not None: + tarinfo.gid = gid + tarinfo.gname = group + if uid is not None: + tarinfo.uid = uid + tarinfo.uname = owner + return tarinfo + + if not dry_run: + tar = tarfile.open(archive_name, 'w|%s' % tar_compression[compress]) + try: + tar.add(base_dir, filter=_set_uid_gid) + finally: + tar.close() + + return archive_name + +def _call_external_zip(base_dir, zip_filename, verbose=False, dry_run=False): + # XXX see if we want to keep an external call here + if verbose: + zipoptions = "-r" + else: + zipoptions = "-rq" + from distutils.errors import DistutilsExecError + from distutils.spawn import spawn + try: + spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run) + except DistutilsExecError: + # XXX really should distinguish between "couldn't find + # external 'zip' command" and "zip failed". + raise ExecError("unable to create zip file '%s': " + "could neither import the 'zipfile' module nor " + "find a standalone zip utility") % zip_filename + +def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None): + """Create a zip file from all the files under 'base_dir'. + + The output zip file will be named 'base_name' + ".zip". Uses either the + "zipfile" Python module (if available) or the InfoZIP "zip" utility + (if installed and found on the default search path). If neither tool is + available, raises ExecError. Returns the name of the output zip + file. + """ + zip_filename = base_name + ".zip" + archive_dir = os.path.dirname(base_name) + + if not os.path.exists(archive_dir): + if logger is not None: + logger.info("creating %s", archive_dir) + if not dry_run: + os.makedirs(archive_dir) + + # If zipfile module is not available, try spawning an external 'zip' + # command. + try: + import zipfile + except ImportError: + zipfile = None + + if zipfile is None: + _call_external_zip(base_dir, zip_filename, verbose, dry_run) + else: + if logger is not None: + logger.info("creating '%s' and adding '%s' to it", + zip_filename, base_dir) + + if not dry_run: + zip = zipfile.ZipFile(zip_filename, "w", + compression=zipfile.ZIP_DEFLATED) + + for dirpath, dirnames, filenames in os.walk(base_dir): + for name in filenames: + path = os.path.normpath(os.path.join(dirpath, name)) + if os.path.isfile(path): + zip.write(path, path) + if logger is not None: + logger.info("adding '%s'", path) + zip.close() + + return zip_filename + +_ARCHIVE_FORMATS = { + 'gztar': (_make_tarball, [('compress', 'gzip')], "gzip'ed tar-file"), + 'bztar': (_make_tarball, [('compress', 'bzip2')], "bzip2'ed tar-file"), + 'tar': (_make_tarball, [('compress', None)], "uncompressed tar file"), + 'zip': (_make_zipfile, [], "ZIP file"), + } + +if _BZ2_SUPPORTED: + _ARCHIVE_FORMATS['bztar'] = (_make_tarball, [('compress', 'bzip2')], + "bzip2'ed tar-file") + +def get_archive_formats(): + """Returns a list of supported formats for archiving and unarchiving. + + Each element of the returned sequence is a tuple (name, description) + """ + formats = [(name, registry[2]) for name, registry in + _ARCHIVE_FORMATS.items()] + formats.sort() + return formats + +def register_archive_format(name, function, extra_args=None, description=''): + """Registers an archive format. + + name is the name of the format. function is the callable that will be + used to create archives. If provided, extra_args is a sequence of + (name, value) tuples that will be passed as arguments to the callable. + description can be provided to describe the format, and will be returned + by the get_archive_formats() function. + """ + if extra_args is None: + extra_args = [] + if not isinstance(function, Callable): + raise TypeError('The %s object is not callable' % function) + if not isinstance(extra_args, (tuple, list)): + raise TypeError('extra_args needs to be a sequence') + for element in extra_args: + if not isinstance(element, (tuple, list)) or len(element) !=2: + raise TypeError('extra_args elements are : (arg_name, value)') + + _ARCHIVE_FORMATS[name] = (function, extra_args, description) + +def unregister_archive_format(name): + del _ARCHIVE_FORMATS[name] + +def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, + dry_run=0, owner=None, group=None, logger=None): + """Create an archive file (eg. zip or tar). + + 'base_name' is the name of the file to create, minus any format-specific + extension; 'format' is the archive format: one of "zip", "tar", "bztar" + or "gztar". + + 'root_dir' is a directory that will be the root directory of the + archive; ie. we typically chdir into 'root_dir' before creating the + archive. 'base_dir' is the directory where we start archiving from; + ie. 'base_dir' will be the common prefix of all files and + directories in the archive. 'root_dir' and 'base_dir' both default + to the current directory. Returns the name of the archive file. + + 'owner' and 'group' are used when creating a tar archive. By default, + uses the current owner and group. + """ + save_cwd = os.getcwd() + if root_dir is not None: + if logger is not None: + logger.debug("changing into '%s'", root_dir) + base_name = os.path.abspath(base_name) + if not dry_run: + os.chdir(root_dir) + + if base_dir is None: + base_dir = os.curdir + + kwargs = {'dry_run': dry_run, 'logger': logger} + + try: + format_info = _ARCHIVE_FORMATS[format] + except KeyError: + raise ValueError("unknown archive format '%s'" % format) + + func = format_info[0] + for arg, val in format_info[1]: + kwargs[arg] = val + + if format != 'zip': + kwargs['owner'] = owner + kwargs['group'] = group + + try: + filename = func(base_name, base_dir, **kwargs) + finally: + if root_dir is not None: + if logger is not None: + logger.debug("changing back to '%s'", save_cwd) + os.chdir(save_cwd) + + return filename + + +def get_unpack_formats(): + """Returns a list of supported formats for unpacking. + + Each element of the returned sequence is a tuple + (name, extensions, description) + """ + formats = [(name, info[0], info[3]) for name, info in + _UNPACK_FORMATS.items()] + formats.sort() + return formats + +def _check_unpack_options(extensions, function, extra_args): + """Checks what gets registered as an unpacker.""" + # first make sure no other unpacker is registered for this extension + existing_extensions = {} + for name, info in _UNPACK_FORMATS.items(): + for ext in info[0]: + existing_extensions[ext] = name + + for extension in extensions: + if extension in existing_extensions: + msg = '%s is already registered for "%s"' + raise RegistryError(msg % (extension, + existing_extensions[extension])) + + if not isinstance(function, Callable): + raise TypeError('The registered function must be a callable') + + +def register_unpack_format(name, extensions, function, extra_args=None, + description=''): + """Registers an unpack format. + + `name` is the name of the format. `extensions` is a list of extensions + corresponding to the format. + + `function` is the callable that will be + used to unpack archives. The callable will receive archives to unpack. + If it's unable to handle an archive, it needs to raise a ReadError + exception. + + If provided, `extra_args` is a sequence of + (name, value) tuples that will be passed as arguments to the callable. + description can be provided to describe the format, and will be returned + by the get_unpack_formats() function. + """ + if extra_args is None: + extra_args = [] + _check_unpack_options(extensions, function, extra_args) + _UNPACK_FORMATS[name] = extensions, function, extra_args, description + +def unregister_unpack_format(name): + """Removes the pack format from the registry.""" + del _UNPACK_FORMATS[name] + +def _ensure_directory(path): + """Ensure that the parent directory of `path` exists""" + dirname = os.path.dirname(path) + if not os.path.isdir(dirname): + os.makedirs(dirname) + +def _unpack_zipfile(filename, extract_dir): + """Unpack zip `filename` to `extract_dir` + """ + try: + import zipfile + except ImportError: + raise ReadError('zlib not supported, cannot unpack this archive.') + + if not zipfile.is_zipfile(filename): + raise ReadError("%s is not a zip file" % filename) + + zip = zipfile.ZipFile(filename) + try: + for info in zip.infolist(): + name = info.filename + + # don't extract absolute paths or ones with .. in them + if name.startswith('/') or '..' in name: + continue + + target = os.path.join(extract_dir, *name.split('/')) + if not target: + continue + + _ensure_directory(target) + if not name.endswith('/'): + # file + data = zip.read(info.filename) + f = open(target, 'wb') + try: + f.write(data) + finally: + f.close() + del data + finally: + zip.close() + +def _unpack_tarfile(filename, extract_dir): + """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir` + """ + try: + tarobj = tarfile.open(filename) + except tarfile.TarError: + raise ReadError( + "%s is not a compressed or uncompressed tar file" % filename) + try: + tarobj.extractall(extract_dir) + finally: + tarobj.close() + +_UNPACK_FORMATS = { + 'gztar': (['.tar.gz', '.tgz'], _unpack_tarfile, [], "gzip'ed tar-file"), + 'tar': (['.tar'], _unpack_tarfile, [], "uncompressed tar file"), + 'zip': (['.zip'], _unpack_zipfile, [], "ZIP file") + } + +if _BZ2_SUPPORTED: + _UNPACK_FORMATS['bztar'] = (['.bz2'], _unpack_tarfile, [], + "bzip2'ed tar-file") + +def _find_unpack_format(filename): + for name, info in _UNPACK_FORMATS.items(): + for extension in info[0]: + if filename.endswith(extension): + return name + return None + +def unpack_archive(filename, extract_dir=None, format=None): + """Unpack an archive. + + `filename` is the name of the archive. + + `extract_dir` is the name of the target directory, where the archive + is unpacked. If not provided, the current working directory is used. + + `format` is the archive format: one of "zip", "tar", or "gztar". Or any + other registered format. If not provided, unpack_archive will use the + filename extension and see if an unpacker was registered for that + extension. + + In case none is found, a ValueError is raised. + """ + if extract_dir is None: + extract_dir = os.getcwd() + + if format is not None: + try: + format_info = _UNPACK_FORMATS[format] + except KeyError: + raise ValueError("Unknown unpack format '{0}'".format(format)) + + func = format_info[1] + func(filename, extract_dir, **dict(format_info[2])) + else: + # we need to look at the registered unpackers supported extensions + format = _find_unpack_format(filename) + if format is None: + raise ReadError("Unknown archive format '{0}'".format(filename)) + + func = _UNPACK_FORMATS[format][1] + kwargs = dict(_UNPACK_FORMATS[format][2]) + func(filename, extract_dir, **kwargs) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg new file mode 100644 index 0000000..1746bd0 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg @@ -0,0 +1,84 @@ +[posix_prefix] +# Configuration directories. Some of these come straight out of the +# configure script. They are for implementing the other variables, not to +# be used directly in [resource_locations]. +confdir = /etc +datadir = /usr/share +libdir = /usr/lib +statedir = /var +# User resource directory +local = ~/.local/{distribution.name} + +stdlib = {base}/lib/python{py_version_short} +platstdlib = {platbase}/lib/python{py_version_short} +purelib = {base}/lib/python{py_version_short}/site-packages +platlib = {platbase}/lib/python{py_version_short}/site-packages +include = {base}/include/python{py_version_short}{abiflags} +platinclude = {platbase}/include/python{py_version_short}{abiflags} +data = {base} + +[posix_home] +stdlib = {base}/lib/python +platstdlib = {base}/lib/python +purelib = {base}/lib/python +platlib = {base}/lib/python +include = {base}/include/python +platinclude = {base}/include/python +scripts = {base}/bin +data = {base} + +[nt] +stdlib = {base}/Lib +platstdlib = {base}/Lib +purelib = {base}/Lib/site-packages +platlib = {base}/Lib/site-packages +include = {base}/Include +platinclude = {base}/Include +scripts = {base}/Scripts +data = {base} + +[os2] +stdlib = {base}/Lib +platstdlib = {base}/Lib +purelib = {base}/Lib/site-packages +platlib = {base}/Lib/site-packages +include = {base}/Include +platinclude = {base}/Include +scripts = {base}/Scripts +data = {base} + +[os2_home] +stdlib = {userbase}/lib/python{py_version_short} +platstdlib = {userbase}/lib/python{py_version_short} +purelib = {userbase}/lib/python{py_version_short}/site-packages +platlib = {userbase}/lib/python{py_version_short}/site-packages +include = {userbase}/include/python{py_version_short} +scripts = {userbase}/bin +data = {userbase} + +[nt_user] +stdlib = {userbase}/Python{py_version_nodot} +platstdlib = {userbase}/Python{py_version_nodot} +purelib = {userbase}/Python{py_version_nodot}/site-packages +platlib = {userbase}/Python{py_version_nodot}/site-packages +include = {userbase}/Python{py_version_nodot}/Include +scripts = {userbase}/Scripts +data = {userbase} + +[posix_user] +stdlib = {userbase}/lib/python{py_version_short} +platstdlib = {userbase}/lib/python{py_version_short} +purelib = {userbase}/lib/python{py_version_short}/site-packages +platlib = {userbase}/lib/python{py_version_short}/site-packages +include = {userbase}/include/python{py_version_short} +scripts = {userbase}/bin +data = {userbase} + +[osx_framework_user] +stdlib = {userbase}/lib/python +platstdlib = {userbase}/lib/python +purelib = {userbase}/lib/python/site-packages +platlib = {userbase}/lib/python/site-packages +include = {userbase}/include +scripts = {userbase}/bin +data = {userbase} diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.py new file mode 100644 index 0000000..b470a37 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.py @@ -0,0 +1,786 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Access to Python's configuration information.""" + +import codecs +import os +import re +import sys +from os.path import pardir, realpath +try: + import configparser +except ImportError: + import ConfigParser as configparser + + +__all__ = [ + 'get_config_h_filename', + 'get_config_var', + 'get_config_vars', + 'get_makefile_filename', + 'get_path', + 'get_path_names', + 'get_paths', + 'get_platform', + 'get_python_version', + 'get_scheme_names', + 'parse_config_h', +] + + +def _safe_realpath(path): + try: + return realpath(path) + except OSError: + return path + + +if sys.executable: + _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable)) +else: + # sys.executable can be empty if argv[0] has been changed and Python is + # unable to retrieve the real program name + _PROJECT_BASE = _safe_realpath(os.getcwd()) + +if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir)) +# PC/VS7.1 +if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) +# PC/AMD64 +if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) + + +def is_python_build(): + for fn in ("Setup.dist", "Setup.local"): + if os.path.isfile(os.path.join(_PROJECT_BASE, "Modules", fn)): + return True + return False + +_PYTHON_BUILD = is_python_build() + +_cfg_read = False + +def _ensure_cfg_read(): + global _cfg_read + if not _cfg_read: + from ..resources import finder + backport_package = __name__.rsplit('.', 1)[0] + _finder = finder(backport_package) + _cfgfile = _finder.find('sysconfig.cfg') + assert _cfgfile, 'sysconfig.cfg exists' + with _cfgfile.as_stream() as s: + _SCHEMES.readfp(s) + if _PYTHON_BUILD: + for scheme in ('posix_prefix', 'posix_home'): + _SCHEMES.set(scheme, 'include', '{srcdir}/Include') + _SCHEMES.set(scheme, 'platinclude', '{projectbase}/.') + + _cfg_read = True + + +_SCHEMES = configparser.RawConfigParser() +_VAR_REPL = re.compile(r'\{([^{]*?)\}') + +def _expand_globals(config): + _ensure_cfg_read() + if config.has_section('globals'): + globals = config.items('globals') + else: + globals = tuple() + + sections = config.sections() + for section in sections: + if section == 'globals': + continue + for option, value in globals: + if config.has_option(section, option): + continue + config.set(section, option, value) + config.remove_section('globals') + + # now expanding local variables defined in the cfg file + # + for section in config.sections(): + variables = dict(config.items(section)) + + def _replacer(matchobj): + name = matchobj.group(1) + if name in variables: + return variables[name] + return matchobj.group(0) + + for option, value in config.items(section): + config.set(section, option, _VAR_REPL.sub(_replacer, value)) + +#_expand_globals(_SCHEMES) + +_PY_VERSION = '%s.%s.%s' % sys.version_info[:3] +_PY_VERSION_SHORT = '%s.%s' % sys.version_info[:2] +_PY_VERSION_SHORT_NO_DOT = '%s%s' % sys.version_info[:2] +_PREFIX = os.path.normpath(sys.prefix) +_EXEC_PREFIX = os.path.normpath(sys.exec_prefix) +_CONFIG_VARS = None +_USER_BASE = None + + +def _subst_vars(path, local_vars): + """In the string `path`, replace tokens like {some.thing} with the + corresponding value from the map `local_vars`. + + If there is no corresponding value, leave the token unchanged. + """ + def _replacer(matchobj): + name = matchobj.group(1) + if name in local_vars: + return local_vars[name] + elif name in os.environ: + return os.environ[name] + return matchobj.group(0) + return _VAR_REPL.sub(_replacer, path) + + +def _extend_dict(target_dict, other_dict): + target_keys = target_dict.keys() + for key, value in other_dict.items(): + if key in target_keys: + continue + target_dict[key] = value + + +def _expand_vars(scheme, vars): + res = {} + if vars is None: + vars = {} + _extend_dict(vars, get_config_vars()) + + for key, value in _SCHEMES.items(scheme): + if os.name in ('posix', 'nt'): + value = os.path.expanduser(value) + res[key] = os.path.normpath(_subst_vars(value, vars)) + return res + + +def format_value(value, vars): + def _replacer(matchobj): + name = matchobj.group(1) + if name in vars: + return vars[name] + return matchobj.group(0) + return _VAR_REPL.sub(_replacer, value) + + +def _get_default_scheme(): + if os.name == 'posix': + # the default scheme for posix is posix_prefix + return 'posix_prefix' + return os.name + + +def _getuserbase(): + env_base = os.environ.get("PYTHONUSERBASE", None) + + def joinuser(*args): + return os.path.expanduser(os.path.join(*args)) + + # what about 'os2emx', 'riscos' ? + if os.name == "nt": + base = os.environ.get("APPDATA") or "~" + if env_base: + return env_base + else: + return joinuser(base, "Python") + + if sys.platform == "darwin": + framework = get_config_var("PYTHONFRAMEWORK") + if framework: + if env_base: + return env_base + else: + return joinuser("~", "Library", framework, "%d.%d" % + sys.version_info[:2]) + + if env_base: + return env_base + else: + return joinuser("~", ".local") + + +def _parse_makefile(filename, vars=None): + """Parse a Makefile-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + # Regexes needed for parsing Makefile (and similar syntaxes, + # like old-style Setup files). + _variable_rx = re.compile(r"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)") + _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)") + _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") + + if vars is None: + vars = {} + done = {} + notdone = {} + + with codecs.open(filename, encoding='utf-8', errors="surrogateescape") as f: + lines = f.readlines() + + for line in lines: + if line.startswith('#') or line.strip() == '': + continue + m = _variable_rx.match(line) + if m: + n, v = m.group(1, 2) + v = v.strip() + # `$$' is a literal `$' in make + tmpv = v.replace('$$', '') + + if "$" in tmpv: + notdone[n] = v + else: + try: + v = int(v) + except ValueError: + # insert literal `$' + done[n] = v.replace('$$', '$') + else: + done[n] = v + + # do variable interpolation here + variables = list(notdone.keys()) + + # Variables with a 'PY_' prefix in the makefile. These need to + # be made available without that prefix through sysconfig. + # Special care is needed to ensure that variable expansion works, even + # if the expansion uses the name without a prefix. + renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') + + while len(variables) > 0: + for name in tuple(variables): + value = notdone[name] + m = _findvar1_rx.search(value) or _findvar2_rx.search(value) + if m is not None: + n = m.group(1) + found = True + if n in done: + item = str(done[n]) + elif n in notdone: + # get it on a subsequent round + found = False + elif n in os.environ: + # do it like make: fall back to environment + item = os.environ[n] + + elif n in renamed_variables: + if (name.startswith('PY_') and + name[3:] in renamed_variables): + item = "" + + elif 'PY_' + n in notdone: + found = False + + else: + item = str(done['PY_' + n]) + + else: + done[n] = item = "" + + if found: + after = value[m.end():] + value = value[:m.start()] + item + after + if "$" in after: + notdone[name] = value + else: + try: + value = int(value) + except ValueError: + done[name] = value.strip() + else: + done[name] = value + variables.remove(name) + + if (name.startswith('PY_') and + name[3:] in renamed_variables): + + name = name[3:] + if name not in done: + done[name] = value + + else: + # bogus variable reference (e.g. "prefix=$/opt/python"); + # just drop it since we can't deal + done[name] = value + variables.remove(name) + + # strip spurious spaces + for k, v in done.items(): + if isinstance(v, str): + done[k] = v.strip() + + # save the results in the global dictionary + vars.update(done) + return vars + + +def get_makefile_filename(): + """Return the path of the Makefile.""" + if _PYTHON_BUILD: + return os.path.join(_PROJECT_BASE, "Makefile") + if hasattr(sys, 'abiflags'): + config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags) + else: + config_dir_name = 'config' + return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile') + + +def _init_posix(vars): + """Initialize the module as appropriate for POSIX systems.""" + # load the installed Makefile: + makefile = get_makefile_filename() + try: + _parse_makefile(makefile, vars) + except IOError as e: + msg = "invalid Python installation: unable to open %s" % makefile + if hasattr(e, "strerror"): + msg = msg + " (%s)" % e.strerror + raise IOError(msg) + # load the installed pyconfig.h: + config_h = get_config_h_filename() + try: + with open(config_h) as f: + parse_config_h(f, vars) + except IOError as e: + msg = "invalid Python installation: unable to open %s" % config_h + if hasattr(e, "strerror"): + msg = msg + " (%s)" % e.strerror + raise IOError(msg) + # On AIX, there are wrong paths to the linker scripts in the Makefile + # -- these paths are relative to the Python source, but when installed + # the scripts are in another directory. + if _PYTHON_BUILD: + vars['LDSHARED'] = vars['BLDSHARED'] + + +def _init_non_posix(vars): + """Initialize the module as appropriate for NT""" + # set basic install directories + vars['LIBDEST'] = get_path('stdlib') + vars['BINLIBDEST'] = get_path('platstdlib') + vars['INCLUDEPY'] = get_path('include') + vars['SO'] = '.pyd' + vars['EXE'] = '.exe' + vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT + vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) + +# +# public APIs +# + + +def parse_config_h(fp, vars=None): + """Parse a config.h-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + if vars is None: + vars = {} + define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") + undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") + + while True: + line = fp.readline() + if not line: + break + m = define_rx.match(line) + if m: + n, v = m.group(1, 2) + try: + v = int(v) + except ValueError: + pass + vars[n] = v + else: + m = undef_rx.match(line) + if m: + vars[m.group(1)] = 0 + return vars + + +def get_config_h_filename(): + """Return the path of pyconfig.h.""" + if _PYTHON_BUILD: + if os.name == "nt": + inc_dir = os.path.join(_PROJECT_BASE, "PC") + else: + inc_dir = _PROJECT_BASE + else: + inc_dir = get_path('platinclude') + return os.path.join(inc_dir, 'pyconfig.h') + + +def get_scheme_names(): + """Return a tuple containing the schemes names.""" + return tuple(sorted(_SCHEMES.sections())) + + +def get_path_names(): + """Return a tuple containing the paths names.""" + # xxx see if we want a static list + return _SCHEMES.options('posix_prefix') + + +def get_paths(scheme=_get_default_scheme(), vars=None, expand=True): + """Return a mapping containing an install scheme. + + ``scheme`` is the install scheme name. If not provided, it will + return the default scheme for the current platform. + """ + _ensure_cfg_read() + if expand: + return _expand_vars(scheme, vars) + else: + return dict(_SCHEMES.items(scheme)) + + +def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True): + """Return a path corresponding to the scheme. + + ``scheme`` is the install scheme name. + """ + return get_paths(scheme, vars, expand)[name] + + +def get_config_vars(*args): + """With no arguments, return a dictionary of all configuration + variables relevant for the current platform. + + On Unix, this means every variable defined in Python's installed Makefile; + On Windows and Mac OS it's a much smaller set. + + With arguments, return a list of values that result from looking up + each argument in the configuration variable dictionary. + """ + global _CONFIG_VARS + if _CONFIG_VARS is None: + _CONFIG_VARS = {} + # Normalized versions of prefix and exec_prefix are handy to have; + # in fact, these are the standard versions used most places in the + # distutils2 module. + _CONFIG_VARS['prefix'] = _PREFIX + _CONFIG_VARS['exec_prefix'] = _EXEC_PREFIX + _CONFIG_VARS['py_version'] = _PY_VERSION + _CONFIG_VARS['py_version_short'] = _PY_VERSION_SHORT + _CONFIG_VARS['py_version_nodot'] = _PY_VERSION[0] + _PY_VERSION[2] + _CONFIG_VARS['base'] = _PREFIX + _CONFIG_VARS['platbase'] = _EXEC_PREFIX + _CONFIG_VARS['projectbase'] = _PROJECT_BASE + try: + _CONFIG_VARS['abiflags'] = sys.abiflags + except AttributeError: + # sys.abiflags may not be defined on all platforms. + _CONFIG_VARS['abiflags'] = '' + + if os.name in ('nt', 'os2'): + _init_non_posix(_CONFIG_VARS) + if os.name == 'posix': + _init_posix(_CONFIG_VARS) + # Setting 'userbase' is done below the call to the + # init function to enable using 'get_config_var' in + # the init-function. + if sys.version >= '2.6': + _CONFIG_VARS['userbase'] = _getuserbase() + + if 'srcdir' not in _CONFIG_VARS: + _CONFIG_VARS['srcdir'] = _PROJECT_BASE + else: + _CONFIG_VARS['srcdir'] = _safe_realpath(_CONFIG_VARS['srcdir']) + + # Convert srcdir into an absolute path if it appears necessary. + # Normally it is relative to the build directory. However, during + # testing, for example, we might be running a non-installed python + # from a different directory. + if _PYTHON_BUILD and os.name == "posix": + base = _PROJECT_BASE + try: + cwd = os.getcwd() + except OSError: + cwd = None + if (not os.path.isabs(_CONFIG_VARS['srcdir']) and + base != cwd): + # srcdir is relative and we are not in the same directory + # as the executable. Assume executable is in the build + # directory and make srcdir absolute. + srcdir = os.path.join(base, _CONFIG_VARS['srcdir']) + _CONFIG_VARS['srcdir'] = os.path.normpath(srcdir) + + if sys.platform == 'darwin': + kernel_version = os.uname()[2] # Kernel version (8.4.3) + major_version = int(kernel_version.split('.')[0]) + + if major_version < 8: + # On Mac OS X before 10.4, check if -arch and -isysroot + # are in CFLAGS or LDFLAGS and remove them if they are. + # This is needed when building extensions on a 10.3 system + # using a universal build of python. + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + flags = _CONFIG_VARS[key] + flags = re.sub(r'-arch\s+\w+\s', ' ', flags) + flags = re.sub('-isysroot [^ \t]*', ' ', flags) + _CONFIG_VARS[key] = flags + else: + # Allow the user to override the architecture flags using + # an environment variable. + # NOTE: This name was introduced by Apple in OSX 10.5 and + # is used by several scripting languages distributed with + # that OS release. + if 'ARCHFLAGS' in os.environ: + arch = os.environ['ARCHFLAGS'] + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _CONFIG_VARS[key] + flags = re.sub(r'-arch\s+\w+\s', ' ', flags) + flags = flags + ' ' + arch + _CONFIG_VARS[key] = flags + + # If we're on OSX 10.5 or later and the user tries to + # compiles an extension using an SDK that is not present + # on the current machine it is better to not use an SDK + # than to fail. + # + # The major usecase for this is users using a Python.org + # binary installer on OSX 10.6: that installer uses + # the 10.4u SDK, but that SDK is not installed by default + # when you install Xcode. + # + CFLAGS = _CONFIG_VARS.get('CFLAGS', '') + m = re.search(r'-isysroot\s+(\S+)', CFLAGS) + if m is not None: + sdk = m.group(1) + if not os.path.exists(sdk): + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _CONFIG_VARS[key] + flags = re.sub(r'-isysroot\s+\S+(\s|$)', ' ', flags) + _CONFIG_VARS[key] = flags + + if args: + vals = [] + for name in args: + vals.append(_CONFIG_VARS.get(name)) + return vals + else: + return _CONFIG_VARS + + +def get_config_var(name): + """Return the value of a single variable using the dictionary returned by + 'get_config_vars()'. + + Equivalent to get_config_vars().get(name) + """ + return get_config_vars().get(name) + + +def get_platform(): + """Return a string that identifies the current platform. + + This is used mainly to distinguish platform-specific build directories and + platform-specific built distributions. Typically includes the OS name + and version and the architecture (as supplied by 'os.uname()'), + although the exact information included depends on the OS; eg. for IRIX + the architecture isn't particularly important (IRIX only runs on SGI + hardware), but for Linux the kernel version isn't particularly + important. + + Examples of returned values: + linux-i586 + linux-alpha (?) + solaris-2.6-sun4u + irix-5.3 + irix64-6.2 + + Windows will return one of: + win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) + win-ia64 (64bit Windows on Itanium) + win32 (all others - specifically, sys.platform is returned) + + For other non-POSIX platforms, currently just returns 'sys.platform'. + """ + if os.name == 'nt': + # sniff sys.version for architecture. + prefix = " bit (" + i = sys.version.find(prefix) + if i == -1: + return sys.platform + j = sys.version.find(")", i) + look = sys.version[i+len(prefix):j].lower() + if look == 'amd64': + return 'win-amd64' + if look == 'itanium': + return 'win-ia64' + return sys.platform + + if os.name != "posix" or not hasattr(os, 'uname'): + # XXX what about the architecture? NT is Intel or Alpha, + # Mac OS is M68k or PPC, etc. + return sys.platform + + # Try to distinguish various flavours of Unix + osname, host, release, version, machine = os.uname() + + # Convert the OS name to lowercase, remove '/' characters + # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh") + osname = osname.lower().replace('/', '') + machine = machine.replace(' ', '_') + machine = machine.replace('/', '-') + + if osname[:5] == "linux": + # At least on Linux/Intel, 'machine' is the processor -- + # i386, etc. + # XXX what about Alpha, SPARC, etc? + return "%s-%s" % (osname, machine) + elif osname[:5] == "sunos": + if release[0] >= "5": # SunOS 5 == Solaris 2 + osname = "solaris" + release = "%d.%s" % (int(release[0]) - 3, release[2:]) + # fall through to standard osname-release-machine representation + elif osname[:4] == "irix": # could be "irix64"! + return "%s-%s" % (osname, release) + elif osname[:3] == "aix": + return "%s-%s.%s" % (osname, version, release) + elif osname[:6] == "cygwin": + osname = "cygwin" + rel_re = re.compile(r'[\d.]+') + m = rel_re.match(release) + if m: + release = m.group() + elif osname[:6] == "darwin": + # + # For our purposes, we'll assume that the system version from + # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set + # to. This makes the compatibility story a bit more sane because the + # machine is going to compile and link as if it were + # MACOSX_DEPLOYMENT_TARGET. + cfgvars = get_config_vars() + macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET') + + if True: + # Always calculate the release of the running machine, + # needed to determine if we can build fat binaries or not. + + macrelease = macver + # Get the system version. Reading this plist is a documented + # way to get the system version (see the documentation for + # the Gestalt Manager) + try: + f = open('/System/Library/CoreServices/SystemVersion.plist') + except IOError: + # We're on a plain darwin box, fall back to the default + # behaviour. + pass + else: + try: + m = re.search(r'ProductUserVisibleVersion\s*' + r'(.*?)', f.read()) + finally: + f.close() + if m is not None: + macrelease = '.'.join(m.group(1).split('.')[:2]) + # else: fall back to the default behaviour + + if not macver: + macver = macrelease + + if macver: + release = macver + osname = "macosx" + + if ((macrelease + '.') >= '10.4.' and + '-arch' in get_config_vars().get('CFLAGS', '').strip()): + # The universal build will build fat binaries, but not on + # systems before 10.4 + # + # Try to detect 4-way universal builds, those have machine-type + # 'universal' instead of 'fat'. + + machine = 'fat' + cflags = get_config_vars().get('CFLAGS') + + archs = re.findall(r'-arch\s+(\S+)', cflags) + archs = tuple(sorted(set(archs))) + + if len(archs) == 1: + machine = archs[0] + elif archs == ('i386', 'ppc'): + machine = 'fat' + elif archs == ('i386', 'x86_64'): + machine = 'intel' + elif archs == ('i386', 'ppc', 'x86_64'): + machine = 'fat3' + elif archs == ('ppc64', 'x86_64'): + machine = 'fat64' + elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): + machine = 'universal' + else: + raise ValueError( + "Don't know machine value for archs=%r" % (archs,)) + + elif machine == 'i386': + # On OSX the machine type returned by uname is always the + # 32-bit variant, even if the executable architecture is + # the 64-bit variant + if sys.maxsize >= 2**32: + machine = 'x86_64' + + elif machine in ('PowerPC', 'Power_Macintosh'): + # Pick a sane name for the PPC architecture. + # See 'i386' case + if sys.maxsize >= 2**32: + machine = 'ppc64' + else: + machine = 'ppc' + + return "%s-%s-%s" % (osname, release, machine) + + +def get_python_version(): + return _PY_VERSION_SHORT + + +def _print_dict(title, data): + for index, (key, value) in enumerate(sorted(data.items())): + if index == 0: + print('%s: ' % (title)) + print('\t%s = "%s"' % (key, value)) + + +def _main(): + """Display all information sysconfig detains.""" + print('Platform: "%s"' % get_platform()) + print('Python version: "%s"' % get_python_version()) + print('Current installation scheme: "%s"' % _get_default_scheme()) + print() + _print_dict('Paths', get_paths()) + print() + _print_dict('Variables', get_config_vars()) + + +if __name__ == '__main__': + _main() diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/tarfile.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/tarfile.py new file mode 100644 index 0000000..d66d856 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/tarfile.py @@ -0,0 +1,2607 @@ +#------------------------------------------------------------------- +# tarfile.py +#------------------------------------------------------------------- +# Copyright (C) 2002 Lars Gustaebel +# All rights reserved. +# +# 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. +# +from __future__ import print_function + +"""Read from and write to tar format archives. +""" + +__version__ = "$Revision$" + +version = "0.9.0" +__author__ = "Lars Gust\u00e4bel (lars@gustaebel.de)" +__date__ = "$Date: 2011-02-25 17:42:01 +0200 (Fri, 25 Feb 2011) $" +__cvsid__ = "$Id: tarfile.py 88586 2011-02-25 15:42:01Z marc-andre.lemburg $" +__credits__ = "Gustavo Niemeyer, Niels Gust\u00e4bel, Richard Townsend." + +#--------- +# Imports +#--------- +import sys +import os +import stat +import errno +import time +import struct +import copy +import re + +try: + import grp, pwd +except ImportError: + grp = pwd = None + +# os.symlink on Windows prior to 6.0 raises NotImplementedError +symlink_exception = (AttributeError, NotImplementedError) +try: + # WindowsError (1314) will be raised if the caller does not hold the + # SeCreateSymbolicLinkPrivilege privilege + symlink_exception += (WindowsError,) +except NameError: + pass + +# from tarfile import * +__all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError"] + +if sys.version_info[0] < 3: + import __builtin__ as builtins +else: + import builtins + +_open = builtins.open # Since 'open' is TarFile.open + +#--------------------------------------------------------- +# tar constants +#--------------------------------------------------------- +NUL = b"\0" # the null character +BLOCKSIZE = 512 # length of processing blocks +RECORDSIZE = BLOCKSIZE * 20 # length of records +GNU_MAGIC = b"ustar \0" # magic gnu tar string +POSIX_MAGIC = b"ustar\x0000" # magic posix tar string + +LENGTH_NAME = 100 # maximum length of a filename +LENGTH_LINK = 100 # maximum length of a linkname +LENGTH_PREFIX = 155 # maximum length of the prefix field + +REGTYPE = b"0" # regular file +AREGTYPE = b"\0" # regular file +LNKTYPE = b"1" # link (inside tarfile) +SYMTYPE = b"2" # symbolic link +CHRTYPE = b"3" # character special device +BLKTYPE = b"4" # block special device +DIRTYPE = b"5" # directory +FIFOTYPE = b"6" # fifo special device +CONTTYPE = b"7" # contiguous file + +GNUTYPE_LONGNAME = b"L" # GNU tar longname +GNUTYPE_LONGLINK = b"K" # GNU tar longlink +GNUTYPE_SPARSE = b"S" # GNU tar sparse file + +XHDTYPE = b"x" # POSIX.1-2001 extended header +XGLTYPE = b"g" # POSIX.1-2001 global header +SOLARIS_XHDTYPE = b"X" # Solaris extended header + +USTAR_FORMAT = 0 # POSIX.1-1988 (ustar) format +GNU_FORMAT = 1 # GNU tar format +PAX_FORMAT = 2 # POSIX.1-2001 (pax) format +DEFAULT_FORMAT = GNU_FORMAT + +#--------------------------------------------------------- +# tarfile constants +#--------------------------------------------------------- +# File types that tarfile supports: +SUPPORTED_TYPES = (REGTYPE, AREGTYPE, LNKTYPE, + SYMTYPE, DIRTYPE, FIFOTYPE, + CONTTYPE, CHRTYPE, BLKTYPE, + GNUTYPE_LONGNAME, GNUTYPE_LONGLINK, + GNUTYPE_SPARSE) + +# File types that will be treated as a regular file. +REGULAR_TYPES = (REGTYPE, AREGTYPE, + CONTTYPE, GNUTYPE_SPARSE) + +# File types that are part of the GNU tar format. +GNU_TYPES = (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK, + GNUTYPE_SPARSE) + +# Fields from a pax header that override a TarInfo attribute. +PAX_FIELDS = ("path", "linkpath", "size", "mtime", + "uid", "gid", "uname", "gname") + +# Fields from a pax header that are affected by hdrcharset. +PAX_NAME_FIELDS = set(("path", "linkpath", "uname", "gname")) + +# Fields in a pax header that are numbers, all other fields +# are treated as strings. +PAX_NUMBER_FIELDS = { + "atime": float, + "ctime": float, + "mtime": float, + "uid": int, + "gid": int, + "size": int +} + +#--------------------------------------------------------- +# Bits used in the mode field, values in octal. +#--------------------------------------------------------- +S_IFLNK = 0o120000 # symbolic link +S_IFREG = 0o100000 # regular file +S_IFBLK = 0o060000 # block device +S_IFDIR = 0o040000 # directory +S_IFCHR = 0o020000 # character device +S_IFIFO = 0o010000 # fifo + +TSUID = 0o4000 # set UID on execution +TSGID = 0o2000 # set GID on execution +TSVTX = 0o1000 # reserved + +TUREAD = 0o400 # read by owner +TUWRITE = 0o200 # write by owner +TUEXEC = 0o100 # execute/search by owner +TGREAD = 0o040 # read by group +TGWRITE = 0o020 # write by group +TGEXEC = 0o010 # execute/search by group +TOREAD = 0o004 # read by other +TOWRITE = 0o002 # write by other +TOEXEC = 0o001 # execute/search by other + +#--------------------------------------------------------- +# initialization +#--------------------------------------------------------- +if os.name in ("nt", "ce"): + ENCODING = "utf-8" +else: + ENCODING = sys.getfilesystemencoding() + +#--------------------------------------------------------- +# Some useful functions +#--------------------------------------------------------- + +def stn(s, length, encoding, errors): + """Convert a string to a null-terminated bytes object. + """ + s = s.encode(encoding, errors) + return s[:length] + (length - len(s)) * NUL + +def nts(s, encoding, errors): + """Convert a null-terminated bytes object to a string. + """ + p = s.find(b"\0") + if p != -1: + s = s[:p] + return s.decode(encoding, errors) + +def nti(s): + """Convert a number field to a python number. + """ + # There are two possible encodings for a number field, see + # itn() below. + if s[0] != chr(0o200): + try: + n = int(nts(s, "ascii", "strict") or "0", 8) + except ValueError: + raise InvalidHeaderError("invalid header") + else: + n = 0 + for i in range(len(s) - 1): + n <<= 8 + n += ord(s[i + 1]) + return n + +def itn(n, digits=8, format=DEFAULT_FORMAT): + """Convert a python number to a number field. + """ + # POSIX 1003.1-1988 requires numbers to be encoded as a string of + # octal digits followed by a null-byte, this allows values up to + # (8**(digits-1))-1. GNU tar allows storing numbers greater than + # that if necessary. A leading 0o200 byte indicates this particular + # encoding, the following digits-1 bytes are a big-endian + # representation. This allows values up to (256**(digits-1))-1. + if 0 <= n < 8 ** (digits - 1): + s = ("%0*o" % (digits - 1, n)).encode("ascii") + NUL + else: + if format != GNU_FORMAT or n >= 256 ** (digits - 1): + raise ValueError("overflow in number field") + + if n < 0: + # XXX We mimic GNU tar's behaviour with negative numbers, + # this could raise OverflowError. + n = struct.unpack("L", struct.pack("l", n))[0] + + s = bytearray() + for i in range(digits - 1): + s.insert(0, n & 0o377) + n >>= 8 + s.insert(0, 0o200) + return s + +def calc_chksums(buf): + """Calculate the checksum for a member's header by summing up all + characters except for the chksum field which is treated as if + it was filled with spaces. According to the GNU tar sources, + some tars (Sun and NeXT) calculate chksum with signed char, + which will be different if there are chars in the buffer with + the high bit set. So we calculate two checksums, unsigned and + signed. + """ + unsigned_chksum = 256 + sum(struct.unpack("148B", buf[:148]) + struct.unpack("356B", buf[156:512])) + signed_chksum = 256 + sum(struct.unpack("148b", buf[:148]) + struct.unpack("356b", buf[156:512])) + return unsigned_chksum, signed_chksum + +def copyfileobj(src, dst, length=None): + """Copy length bytes from fileobj src to fileobj dst. + If length is None, copy the entire content. + """ + if length == 0: + return + if length is None: + while True: + buf = src.read(16*1024) + if not buf: + break + dst.write(buf) + return + + BUFSIZE = 16 * 1024 + blocks, remainder = divmod(length, BUFSIZE) + for b in range(blocks): + buf = src.read(BUFSIZE) + if len(buf) < BUFSIZE: + raise IOError("end of file reached") + dst.write(buf) + + if remainder != 0: + buf = src.read(remainder) + if len(buf) < remainder: + raise IOError("end of file reached") + dst.write(buf) + return + +filemode_table = ( + ((S_IFLNK, "l"), + (S_IFREG, "-"), + (S_IFBLK, "b"), + (S_IFDIR, "d"), + (S_IFCHR, "c"), + (S_IFIFO, "p")), + + ((TUREAD, "r"),), + ((TUWRITE, "w"),), + ((TUEXEC|TSUID, "s"), + (TSUID, "S"), + (TUEXEC, "x")), + + ((TGREAD, "r"),), + ((TGWRITE, "w"),), + ((TGEXEC|TSGID, "s"), + (TSGID, "S"), + (TGEXEC, "x")), + + ((TOREAD, "r"),), + ((TOWRITE, "w"),), + ((TOEXEC|TSVTX, "t"), + (TSVTX, "T"), + (TOEXEC, "x")) +) + +def filemode(mode): + """Convert a file's mode to a string of the form + -rwxrwxrwx. + Used by TarFile.list() + """ + perm = [] + for table in filemode_table: + for bit, char in table: + if mode & bit == bit: + perm.append(char) + break + else: + perm.append("-") + return "".join(perm) + +class TarError(Exception): + """Base exception.""" + pass +class ExtractError(TarError): + """General exception for extract errors.""" + pass +class ReadError(TarError): + """Exception for unreadable tar archives.""" + pass +class CompressionError(TarError): + """Exception for unavailable compression methods.""" + pass +class StreamError(TarError): + """Exception for unsupported operations on stream-like TarFiles.""" + pass +class HeaderError(TarError): + """Base exception for header errors.""" + pass +class EmptyHeaderError(HeaderError): + """Exception for empty headers.""" + pass +class TruncatedHeaderError(HeaderError): + """Exception for truncated headers.""" + pass +class EOFHeaderError(HeaderError): + """Exception for end of file headers.""" + pass +class InvalidHeaderError(HeaderError): + """Exception for invalid headers.""" + pass +class SubsequentHeaderError(HeaderError): + """Exception for missing and invalid extended headers.""" + pass + +#--------------------------- +# internal stream interface +#--------------------------- +class _LowLevelFile(object): + """Low-level file object. Supports reading and writing. + It is used instead of a regular file object for streaming + access. + """ + + def __init__(self, name, mode): + mode = { + "r": os.O_RDONLY, + "w": os.O_WRONLY | os.O_CREAT | os.O_TRUNC, + }[mode] + if hasattr(os, "O_BINARY"): + mode |= os.O_BINARY + self.fd = os.open(name, mode, 0o666) + + def close(self): + os.close(self.fd) + + def read(self, size): + return os.read(self.fd, size) + + def write(self, s): + os.write(self.fd, s) + +class _Stream(object): + """Class that serves as an adapter between TarFile and + a stream-like object. The stream-like object only + needs to have a read() or write() method and is accessed + blockwise. Use of gzip or bzip2 compression is possible. + A stream-like object could be for example: sys.stdin, + sys.stdout, a socket, a tape device etc. + + _Stream is intended to be used only internally. + """ + + def __init__(self, name, mode, comptype, fileobj, bufsize): + """Construct a _Stream object. + """ + self._extfileobj = True + if fileobj is None: + fileobj = _LowLevelFile(name, mode) + self._extfileobj = False + + if comptype == '*': + # Enable transparent compression detection for the + # stream interface + fileobj = _StreamProxy(fileobj) + comptype = fileobj.getcomptype() + + self.name = name or "" + self.mode = mode + self.comptype = comptype + self.fileobj = fileobj + self.bufsize = bufsize + self.buf = b"" + self.pos = 0 + self.closed = False + + try: + if comptype == "gz": + try: + import zlib + except ImportError: + raise CompressionError("zlib module is not available") + self.zlib = zlib + self.crc = zlib.crc32(b"") + if mode == "r": + self._init_read_gz() + else: + self._init_write_gz() + + if comptype == "bz2": + try: + import bz2 + except ImportError: + raise CompressionError("bz2 module is not available") + if mode == "r": + self.dbuf = b"" + self.cmp = bz2.BZ2Decompressor() + else: + self.cmp = bz2.BZ2Compressor() + except: + if not self._extfileobj: + self.fileobj.close() + self.closed = True + raise + + def __del__(self): + if hasattr(self, "closed") and not self.closed: + self.close() + + def _init_write_gz(self): + """Initialize for writing with gzip compression. + """ + self.cmp = self.zlib.compressobj(9, self.zlib.DEFLATED, + -self.zlib.MAX_WBITS, + self.zlib.DEF_MEM_LEVEL, + 0) + timestamp = struct.pack(" self.bufsize: + self.fileobj.write(self.buf[:self.bufsize]) + self.buf = self.buf[self.bufsize:] + + def close(self): + """Close the _Stream object. No operation should be + done on it afterwards. + """ + if self.closed: + return + + if self.mode == "w" and self.comptype != "tar": + self.buf += self.cmp.flush() + + if self.mode == "w" and self.buf: + self.fileobj.write(self.buf) + self.buf = b"" + if self.comptype == "gz": + # The native zlib crc is an unsigned 32-bit integer, but + # the Python wrapper implicitly casts that to a signed C + # long. So, on a 32-bit box self.crc may "look negative", + # while the same crc on a 64-bit box may "look positive". + # To avoid irksome warnings from the `struct` module, force + # it to look positive on all boxes. + self.fileobj.write(struct.pack("= 0: + blocks, remainder = divmod(pos - self.pos, self.bufsize) + for i in range(blocks): + self.read(self.bufsize) + self.read(remainder) + else: + raise StreamError("seeking backwards is not allowed") + return self.pos + + def read(self, size=None): + """Return the next size number of bytes from the stream. + If size is not defined, return all bytes of the stream + up to EOF. + """ + if size is None: + t = [] + while True: + buf = self._read(self.bufsize) + if not buf: + break + t.append(buf) + buf = "".join(t) + else: + buf = self._read(size) + self.pos += len(buf) + return buf + + def _read(self, size): + """Return size bytes from the stream. + """ + if self.comptype == "tar": + return self.__read(size) + + c = len(self.dbuf) + while c < size: + buf = self.__read(self.bufsize) + if not buf: + break + try: + buf = self.cmp.decompress(buf) + except IOError: + raise ReadError("invalid compressed data") + self.dbuf += buf + c += len(buf) + buf = self.dbuf[:size] + self.dbuf = self.dbuf[size:] + return buf + + def __read(self, size): + """Return size bytes from stream. If internal buffer is empty, + read another block from the stream. + """ + c = len(self.buf) + while c < size: + buf = self.fileobj.read(self.bufsize) + if not buf: + break + self.buf += buf + c += len(buf) + buf = self.buf[:size] + self.buf = self.buf[size:] + return buf +# class _Stream + +class _StreamProxy(object): + """Small proxy class that enables transparent compression + detection for the Stream interface (mode 'r|*'). + """ + + def __init__(self, fileobj): + self.fileobj = fileobj + self.buf = self.fileobj.read(BLOCKSIZE) + + def read(self, size): + self.read = self.fileobj.read + return self.buf + + def getcomptype(self): + if self.buf.startswith(b"\037\213\010"): + return "gz" + if self.buf.startswith(b"BZh91"): + return "bz2" + return "tar" + + def close(self): + self.fileobj.close() +# class StreamProxy + +class _BZ2Proxy(object): + """Small proxy class that enables external file object + support for "r:bz2" and "w:bz2" modes. This is actually + a workaround for a limitation in bz2 module's BZ2File + class which (unlike gzip.GzipFile) has no support for + a file object argument. + """ + + blocksize = 16 * 1024 + + def __init__(self, fileobj, mode): + self.fileobj = fileobj + self.mode = mode + self.name = getattr(self.fileobj, "name", None) + self.init() + + def init(self): + import bz2 + self.pos = 0 + if self.mode == "r": + self.bz2obj = bz2.BZ2Decompressor() + self.fileobj.seek(0) + self.buf = b"" + else: + self.bz2obj = bz2.BZ2Compressor() + + def read(self, size): + x = len(self.buf) + while x < size: + raw = self.fileobj.read(self.blocksize) + if not raw: + break + data = self.bz2obj.decompress(raw) + self.buf += data + x += len(data) + + buf = self.buf[:size] + self.buf = self.buf[size:] + self.pos += len(buf) + return buf + + def seek(self, pos): + if pos < self.pos: + self.init() + self.read(pos - self.pos) + + def tell(self): + return self.pos + + def write(self, data): + self.pos += len(data) + raw = self.bz2obj.compress(data) + self.fileobj.write(raw) + + def close(self): + if self.mode == "w": + raw = self.bz2obj.flush() + self.fileobj.write(raw) +# class _BZ2Proxy + +#------------------------ +# Extraction file object +#------------------------ +class _FileInFile(object): + """A thin wrapper around an existing file object that + provides a part of its data as an individual file + object. + """ + + def __init__(self, fileobj, offset, size, blockinfo=None): + self.fileobj = fileobj + self.offset = offset + self.size = size + self.position = 0 + + if blockinfo is None: + blockinfo = [(0, size)] + + # Construct a map with data and zero blocks. + self.map_index = 0 + self.map = [] + lastpos = 0 + realpos = self.offset + for offset, size in blockinfo: + if offset > lastpos: + self.map.append((False, lastpos, offset, None)) + self.map.append((True, offset, offset + size, realpos)) + realpos += size + lastpos = offset + size + if lastpos < self.size: + self.map.append((False, lastpos, self.size, None)) + + def seekable(self): + if not hasattr(self.fileobj, "seekable"): + # XXX gzip.GzipFile and bz2.BZ2File + return True + return self.fileobj.seekable() + + def tell(self): + """Return the current file position. + """ + return self.position + + def seek(self, position): + """Seek to a position in the file. + """ + self.position = position + + def read(self, size=None): + """Read data from the file. + """ + if size is None: + size = self.size - self.position + else: + size = min(size, self.size - self.position) + + buf = b"" + while size > 0: + while True: + data, start, stop, offset = self.map[self.map_index] + if start <= self.position < stop: + break + else: + self.map_index += 1 + if self.map_index == len(self.map): + self.map_index = 0 + length = min(size, stop - self.position) + if data: + self.fileobj.seek(offset + (self.position - start)) + buf += self.fileobj.read(length) + else: + buf += NUL * length + size -= length + self.position += length + return buf +#class _FileInFile + + +class ExFileObject(object): + """File-like object for reading an archive member. + Is returned by TarFile.extractfile(). + """ + blocksize = 1024 + + def __init__(self, tarfile, tarinfo): + self.fileobj = _FileInFile(tarfile.fileobj, + tarinfo.offset_data, + tarinfo.size, + tarinfo.sparse) + self.name = tarinfo.name + self.mode = "r" + self.closed = False + self.size = tarinfo.size + + self.position = 0 + self.buffer = b"" + + def readable(self): + return True + + def writable(self): + return False + + def seekable(self): + return self.fileobj.seekable() + + def read(self, size=None): + """Read at most size bytes from the file. If size is not + present or None, read all data until EOF is reached. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + buf = b"" + if self.buffer: + if size is None: + buf = self.buffer + self.buffer = b"" + else: + buf = self.buffer[:size] + self.buffer = self.buffer[size:] + + if size is None: + buf += self.fileobj.read() + else: + buf += self.fileobj.read(size - len(buf)) + + self.position += len(buf) + return buf + + # XXX TextIOWrapper uses the read1() method. + read1 = read + + def readline(self, size=-1): + """Read one entire line from the file. If size is present + and non-negative, return a string with at most that + size, which may be an incomplete line. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + pos = self.buffer.find(b"\n") + 1 + if pos == 0: + # no newline found. + while True: + buf = self.fileobj.read(self.blocksize) + self.buffer += buf + if not buf or b"\n" in buf: + pos = self.buffer.find(b"\n") + 1 + if pos == 0: + # no newline found. + pos = len(self.buffer) + break + + if size != -1: + pos = min(size, pos) + + buf = self.buffer[:pos] + self.buffer = self.buffer[pos:] + self.position += len(buf) + return buf + + def readlines(self): + """Return a list with all remaining lines. + """ + result = [] + while True: + line = self.readline() + if not line: break + result.append(line) + return result + + def tell(self): + """Return the current file position. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + return self.position + + def seek(self, pos, whence=os.SEEK_SET): + """Seek to a position in the file. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + if whence == os.SEEK_SET: + self.position = min(max(pos, 0), self.size) + elif whence == os.SEEK_CUR: + if pos < 0: + self.position = max(self.position + pos, 0) + else: + self.position = min(self.position + pos, self.size) + elif whence == os.SEEK_END: + self.position = max(min(self.size + pos, self.size), 0) + else: + raise ValueError("Invalid argument") + + self.buffer = b"" + self.fileobj.seek(self.position) + + def close(self): + """Close the file object. + """ + self.closed = True + + def __iter__(self): + """Get an iterator over the file's lines. + """ + while True: + line = self.readline() + if not line: + break + yield line +#class ExFileObject + +#------------------ +# Exported Classes +#------------------ +class TarInfo(object): + """Informational class which holds the details about an + archive member given by a tar header block. + TarInfo objects are returned by TarFile.getmember(), + TarFile.getmembers() and TarFile.gettarinfo() and are + usually created internally. + """ + + __slots__ = ("name", "mode", "uid", "gid", "size", "mtime", + "chksum", "type", "linkname", "uname", "gname", + "devmajor", "devminor", + "offset", "offset_data", "pax_headers", "sparse", + "tarfile", "_sparse_structs", "_link_target") + + def __init__(self, name=""): + """Construct a TarInfo object. name is the optional name + of the member. + """ + self.name = name # member name + self.mode = 0o644 # file permissions + self.uid = 0 # user id + self.gid = 0 # group id + self.size = 0 # file size + self.mtime = 0 # modification time + self.chksum = 0 # header checksum + self.type = REGTYPE # member type + self.linkname = "" # link name + self.uname = "" # user name + self.gname = "" # group name + self.devmajor = 0 # device major number + self.devminor = 0 # device minor number + + self.offset = 0 # the tar header starts here + self.offset_data = 0 # the file's data starts here + + self.sparse = None # sparse member information + self.pax_headers = {} # pax header information + + # In pax headers the "name" and "linkname" field are called + # "path" and "linkpath". + def _getpath(self): + return self.name + def _setpath(self, name): + self.name = name + path = property(_getpath, _setpath) + + def _getlinkpath(self): + return self.linkname + def _setlinkpath(self, linkname): + self.linkname = linkname + linkpath = property(_getlinkpath, _setlinkpath) + + def __repr__(self): + return "<%s %r at %#x>" % (self.__class__.__name__,self.name,id(self)) + + def get_info(self): + """Return the TarInfo's attributes as a dictionary. + """ + info = { + "name": self.name, + "mode": self.mode & 0o7777, + "uid": self.uid, + "gid": self.gid, + "size": self.size, + "mtime": self.mtime, + "chksum": self.chksum, + "type": self.type, + "linkname": self.linkname, + "uname": self.uname, + "gname": self.gname, + "devmajor": self.devmajor, + "devminor": self.devminor + } + + if info["type"] == DIRTYPE and not info["name"].endswith("/"): + info["name"] += "/" + + return info + + def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="surrogateescape"): + """Return a tar header as a string of 512 byte blocks. + """ + info = self.get_info() + + if format == USTAR_FORMAT: + return self.create_ustar_header(info, encoding, errors) + elif format == GNU_FORMAT: + return self.create_gnu_header(info, encoding, errors) + elif format == PAX_FORMAT: + return self.create_pax_header(info, encoding) + else: + raise ValueError("invalid format") + + def create_ustar_header(self, info, encoding, errors): + """Return the object as a ustar header block. + """ + info["magic"] = POSIX_MAGIC + + if len(info["linkname"]) > LENGTH_LINK: + raise ValueError("linkname is too long") + + if len(info["name"]) > LENGTH_NAME: + info["prefix"], info["name"] = self._posix_split_name(info["name"]) + + return self._create_header(info, USTAR_FORMAT, encoding, errors) + + def create_gnu_header(self, info, encoding, errors): + """Return the object as a GNU header block sequence. + """ + info["magic"] = GNU_MAGIC + + buf = b"" + if len(info["linkname"]) > LENGTH_LINK: + buf += self._create_gnu_long_header(info["linkname"], GNUTYPE_LONGLINK, encoding, errors) + + if len(info["name"]) > LENGTH_NAME: + buf += self._create_gnu_long_header(info["name"], GNUTYPE_LONGNAME, encoding, errors) + + return buf + self._create_header(info, GNU_FORMAT, encoding, errors) + + def create_pax_header(self, info, encoding): + """Return the object as a ustar header block. If it cannot be + represented this way, prepend a pax extended header sequence + with supplement information. + """ + info["magic"] = POSIX_MAGIC + pax_headers = self.pax_headers.copy() + + # Test string fields for values that exceed the field length or cannot + # be represented in ASCII encoding. + for name, hname, length in ( + ("name", "path", LENGTH_NAME), ("linkname", "linkpath", LENGTH_LINK), + ("uname", "uname", 32), ("gname", "gname", 32)): + + if hname in pax_headers: + # The pax header has priority. + continue + + # Try to encode the string as ASCII. + try: + info[name].encode("ascii", "strict") + except UnicodeEncodeError: + pax_headers[hname] = info[name] + continue + + if len(info[name]) > length: + pax_headers[hname] = info[name] + + # Test number fields for values that exceed the field limit or values + # that like to be stored as float. + for name, digits in (("uid", 8), ("gid", 8), ("size", 12), ("mtime", 12)): + if name in pax_headers: + # The pax header has priority. Avoid overflow. + info[name] = 0 + continue + + val = info[name] + if not 0 <= val < 8 ** (digits - 1) or isinstance(val, float): + pax_headers[name] = str(val) + info[name] = 0 + + # Create a pax extended header if necessary. + if pax_headers: + buf = self._create_pax_generic_header(pax_headers, XHDTYPE, encoding) + else: + buf = b"" + + return buf + self._create_header(info, USTAR_FORMAT, "ascii", "replace") + + @classmethod + def create_pax_global_header(cls, pax_headers): + """Return the object as a pax global header block sequence. + """ + return cls._create_pax_generic_header(pax_headers, XGLTYPE, "utf8") + + def _posix_split_name(self, name): + """Split a name longer than 100 chars into a prefix + and a name part. + """ + prefix = name[:LENGTH_PREFIX + 1] + while prefix and prefix[-1] != "/": + prefix = prefix[:-1] + + name = name[len(prefix):] + prefix = prefix[:-1] + + if not prefix or len(name) > LENGTH_NAME: + raise ValueError("name is too long") + return prefix, name + + @staticmethod + def _create_header(info, format, encoding, errors): + """Return a header block. info is a dictionary with file + information, format must be one of the *_FORMAT constants. + """ + parts = [ + stn(info.get("name", ""), 100, encoding, errors), + itn(info.get("mode", 0) & 0o7777, 8, format), + itn(info.get("uid", 0), 8, format), + itn(info.get("gid", 0), 8, format), + itn(info.get("size", 0), 12, format), + itn(info.get("mtime", 0), 12, format), + b" ", # checksum field + info.get("type", REGTYPE), + stn(info.get("linkname", ""), 100, encoding, errors), + info.get("magic", POSIX_MAGIC), + stn(info.get("uname", ""), 32, encoding, errors), + stn(info.get("gname", ""), 32, encoding, errors), + itn(info.get("devmajor", 0), 8, format), + itn(info.get("devminor", 0), 8, format), + stn(info.get("prefix", ""), 155, encoding, errors) + ] + + buf = struct.pack("%ds" % BLOCKSIZE, b"".join(parts)) + chksum = calc_chksums(buf[-BLOCKSIZE:])[0] + buf = buf[:-364] + ("%06o\0" % chksum).encode("ascii") + buf[-357:] + return buf + + @staticmethod + def _create_payload(payload): + """Return the string payload filled with zero bytes + up to the next 512 byte border. + """ + blocks, remainder = divmod(len(payload), BLOCKSIZE) + if remainder > 0: + payload += (BLOCKSIZE - remainder) * NUL + return payload + + @classmethod + def _create_gnu_long_header(cls, name, type, encoding, errors): + """Return a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence + for name. + """ + name = name.encode(encoding, errors) + NUL + + info = {} + info["name"] = "././@LongLink" + info["type"] = type + info["size"] = len(name) + info["magic"] = GNU_MAGIC + + # create extended header + name blocks. + return cls._create_header(info, USTAR_FORMAT, encoding, errors) + \ + cls._create_payload(name) + + @classmethod + def _create_pax_generic_header(cls, pax_headers, type, encoding): + """Return a POSIX.1-2008 extended or global header sequence + that contains a list of keyword, value pairs. The values + must be strings. + """ + # Check if one of the fields contains surrogate characters and thereby + # forces hdrcharset=BINARY, see _proc_pax() for more information. + binary = False + for keyword, value in pax_headers.items(): + try: + value.encode("utf8", "strict") + except UnicodeEncodeError: + binary = True + break + + records = b"" + if binary: + # Put the hdrcharset field at the beginning of the header. + records += b"21 hdrcharset=BINARY\n" + + for keyword, value in pax_headers.items(): + keyword = keyword.encode("utf8") + if binary: + # Try to restore the original byte representation of `value'. + # Needless to say, that the encoding must match the string. + value = value.encode(encoding, "surrogateescape") + else: + value = value.encode("utf8") + + l = len(keyword) + len(value) + 3 # ' ' + '=' + '\n' + n = p = 0 + while True: + n = l + len(str(p)) + if n == p: + break + p = n + records += bytes(str(p), "ascii") + b" " + keyword + b"=" + value + b"\n" + + # We use a hardcoded "././@PaxHeader" name like star does + # instead of the one that POSIX recommends. + info = {} + info["name"] = "././@PaxHeader" + info["type"] = type + info["size"] = len(records) + info["magic"] = POSIX_MAGIC + + # Create pax header + record blocks. + return cls._create_header(info, USTAR_FORMAT, "ascii", "replace") + \ + cls._create_payload(records) + + @classmethod + def frombuf(cls, buf, encoding, errors): + """Construct a TarInfo object from a 512 byte bytes object. + """ + if len(buf) == 0: + raise EmptyHeaderError("empty header") + if len(buf) != BLOCKSIZE: + raise TruncatedHeaderError("truncated header") + if buf.count(NUL) == BLOCKSIZE: + raise EOFHeaderError("end of file header") + + chksum = nti(buf[148:156]) + if chksum not in calc_chksums(buf): + raise InvalidHeaderError("bad checksum") + + obj = cls() + obj.name = nts(buf[0:100], encoding, errors) + obj.mode = nti(buf[100:108]) + obj.uid = nti(buf[108:116]) + obj.gid = nti(buf[116:124]) + obj.size = nti(buf[124:136]) + obj.mtime = nti(buf[136:148]) + obj.chksum = chksum + obj.type = buf[156:157] + obj.linkname = nts(buf[157:257], encoding, errors) + obj.uname = nts(buf[265:297], encoding, errors) + obj.gname = nts(buf[297:329], encoding, errors) + obj.devmajor = nti(buf[329:337]) + obj.devminor = nti(buf[337:345]) + prefix = nts(buf[345:500], encoding, errors) + + # Old V7 tar format represents a directory as a regular + # file with a trailing slash. + if obj.type == AREGTYPE and obj.name.endswith("/"): + obj.type = DIRTYPE + + # The old GNU sparse format occupies some of the unused + # space in the buffer for up to 4 sparse structures. + # Save the them for later processing in _proc_sparse(). + if obj.type == GNUTYPE_SPARSE: + pos = 386 + structs = [] + for i in range(4): + try: + offset = nti(buf[pos:pos + 12]) + numbytes = nti(buf[pos + 12:pos + 24]) + except ValueError: + break + structs.append((offset, numbytes)) + pos += 24 + isextended = bool(buf[482]) + origsize = nti(buf[483:495]) + obj._sparse_structs = (structs, isextended, origsize) + + # Remove redundant slashes from directories. + if obj.isdir(): + obj.name = obj.name.rstrip("/") + + # Reconstruct a ustar longname. + if prefix and obj.type not in GNU_TYPES: + obj.name = prefix + "/" + obj.name + return obj + + @classmethod + def fromtarfile(cls, tarfile): + """Return the next TarInfo object from TarFile object + tarfile. + """ + buf = tarfile.fileobj.read(BLOCKSIZE) + obj = cls.frombuf(buf, tarfile.encoding, tarfile.errors) + obj.offset = tarfile.fileobj.tell() - BLOCKSIZE + return obj._proc_member(tarfile) + + #-------------------------------------------------------------------------- + # The following are methods that are called depending on the type of a + # member. The entry point is _proc_member() which can be overridden in a + # subclass to add custom _proc_*() methods. A _proc_*() method MUST + # implement the following + # operations: + # 1. Set self.offset_data to the position where the data blocks begin, + # if there is data that follows. + # 2. Set tarfile.offset to the position where the next member's header will + # begin. + # 3. Return self or another valid TarInfo object. + def _proc_member(self, tarfile): + """Choose the right processing method depending on + the type and call it. + """ + if self.type in (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK): + return self._proc_gnulong(tarfile) + elif self.type == GNUTYPE_SPARSE: + return self._proc_sparse(tarfile) + elif self.type in (XHDTYPE, XGLTYPE, SOLARIS_XHDTYPE): + return self._proc_pax(tarfile) + else: + return self._proc_builtin(tarfile) + + def _proc_builtin(self, tarfile): + """Process a builtin type or an unknown type which + will be treated as a regular file. + """ + self.offset_data = tarfile.fileobj.tell() + offset = self.offset_data + if self.isreg() or self.type not in SUPPORTED_TYPES: + # Skip the following data blocks. + offset += self._block(self.size) + tarfile.offset = offset + + # Patch the TarInfo object with saved global + # header information. + self._apply_pax_info(tarfile.pax_headers, tarfile.encoding, tarfile.errors) + + return self + + def _proc_gnulong(self, tarfile): + """Process the blocks that hold a GNU longname + or longlink member. + """ + buf = tarfile.fileobj.read(self._block(self.size)) + + # Fetch the next header and process it. + try: + next = self.fromtarfile(tarfile) + except HeaderError: + raise SubsequentHeaderError("missing or bad subsequent header") + + # Patch the TarInfo object from the next header with + # the longname information. + next.offset = self.offset + if self.type == GNUTYPE_LONGNAME: + next.name = nts(buf, tarfile.encoding, tarfile.errors) + elif self.type == GNUTYPE_LONGLINK: + next.linkname = nts(buf, tarfile.encoding, tarfile.errors) + + return next + + def _proc_sparse(self, tarfile): + """Process a GNU sparse header plus extra headers. + """ + # We already collected some sparse structures in frombuf(). + structs, isextended, origsize = self._sparse_structs + del self._sparse_structs + + # Collect sparse structures from extended header blocks. + while isextended: + buf = tarfile.fileobj.read(BLOCKSIZE) + pos = 0 + for i in range(21): + try: + offset = nti(buf[pos:pos + 12]) + numbytes = nti(buf[pos + 12:pos + 24]) + except ValueError: + break + if offset and numbytes: + structs.append((offset, numbytes)) + pos += 24 + isextended = bool(buf[504]) + self.sparse = structs + + self.offset_data = tarfile.fileobj.tell() + tarfile.offset = self.offset_data + self._block(self.size) + self.size = origsize + return self + + def _proc_pax(self, tarfile): + """Process an extended or global header as described in + POSIX.1-2008. + """ + # Read the header information. + buf = tarfile.fileobj.read(self._block(self.size)) + + # A pax header stores supplemental information for either + # the following file (extended) or all following files + # (global). + if self.type == XGLTYPE: + pax_headers = tarfile.pax_headers + else: + pax_headers = tarfile.pax_headers.copy() + + # Check if the pax header contains a hdrcharset field. This tells us + # the encoding of the path, linkpath, uname and gname fields. Normally, + # these fields are UTF-8 encoded but since POSIX.1-2008 tar + # implementations are allowed to store them as raw binary strings if + # the translation to UTF-8 fails. + match = re.search(br"\d+ hdrcharset=([^\n]+)\n", buf) + if match is not None: + pax_headers["hdrcharset"] = match.group(1).decode("utf8") + + # For the time being, we don't care about anything other than "BINARY". + # The only other value that is currently allowed by the standard is + # "ISO-IR 10646 2000 UTF-8" in other words UTF-8. + hdrcharset = pax_headers.get("hdrcharset") + if hdrcharset == "BINARY": + encoding = tarfile.encoding + else: + encoding = "utf8" + + # Parse pax header information. A record looks like that: + # "%d %s=%s\n" % (length, keyword, value). length is the size + # of the complete record including the length field itself and + # the newline. keyword and value are both UTF-8 encoded strings. + regex = re.compile(br"(\d+) ([^=]+)=") + pos = 0 + while True: + match = regex.match(buf, pos) + if not match: + break + + length, keyword = match.groups() + length = int(length) + value = buf[match.end(2) + 1:match.start(1) + length - 1] + + # Normally, we could just use "utf8" as the encoding and "strict" + # as the error handler, but we better not take the risk. For + # example, GNU tar <= 1.23 is known to store filenames it cannot + # translate to UTF-8 as raw strings (unfortunately without a + # hdrcharset=BINARY header). + # We first try the strict standard encoding, and if that fails we + # fall back on the user's encoding and error handler. + keyword = self._decode_pax_field(keyword, "utf8", "utf8", + tarfile.errors) + if keyword in PAX_NAME_FIELDS: + value = self._decode_pax_field(value, encoding, tarfile.encoding, + tarfile.errors) + else: + value = self._decode_pax_field(value, "utf8", "utf8", + tarfile.errors) + + pax_headers[keyword] = value + pos += length + + # Fetch the next header. + try: + next = self.fromtarfile(tarfile) + except HeaderError: + raise SubsequentHeaderError("missing or bad subsequent header") + + # Process GNU sparse information. + if "GNU.sparse.map" in pax_headers: + # GNU extended sparse format version 0.1. + self._proc_gnusparse_01(next, pax_headers) + + elif "GNU.sparse.size" in pax_headers: + # GNU extended sparse format version 0.0. + self._proc_gnusparse_00(next, pax_headers, buf) + + elif pax_headers.get("GNU.sparse.major") == "1" and pax_headers.get("GNU.sparse.minor") == "0": + # GNU extended sparse format version 1.0. + self._proc_gnusparse_10(next, pax_headers, tarfile) + + if self.type in (XHDTYPE, SOLARIS_XHDTYPE): + # Patch the TarInfo object with the extended header info. + next._apply_pax_info(pax_headers, tarfile.encoding, tarfile.errors) + next.offset = self.offset + + if "size" in pax_headers: + # If the extended header replaces the size field, + # we need to recalculate the offset where the next + # header starts. + offset = next.offset_data + if next.isreg() or next.type not in SUPPORTED_TYPES: + offset += next._block(next.size) + tarfile.offset = offset + + return next + + def _proc_gnusparse_00(self, next, pax_headers, buf): + """Process a GNU tar extended sparse header, version 0.0. + """ + offsets = [] + for match in re.finditer(br"\d+ GNU.sparse.offset=(\d+)\n", buf): + offsets.append(int(match.group(1))) + numbytes = [] + for match in re.finditer(br"\d+ GNU.sparse.numbytes=(\d+)\n", buf): + numbytes.append(int(match.group(1))) + next.sparse = list(zip(offsets, numbytes)) + + def _proc_gnusparse_01(self, next, pax_headers): + """Process a GNU tar extended sparse header, version 0.1. + """ + sparse = [int(x) for x in pax_headers["GNU.sparse.map"].split(",")] + next.sparse = list(zip(sparse[::2], sparse[1::2])) + + def _proc_gnusparse_10(self, next, pax_headers, tarfile): + """Process a GNU tar extended sparse header, version 1.0. + """ + fields = None + sparse = [] + buf = tarfile.fileobj.read(BLOCKSIZE) + fields, buf = buf.split(b"\n", 1) + fields = int(fields) + while len(sparse) < fields * 2: + if b"\n" not in buf: + buf += tarfile.fileobj.read(BLOCKSIZE) + number, buf = buf.split(b"\n", 1) + sparse.append(int(number)) + next.offset_data = tarfile.fileobj.tell() + next.sparse = list(zip(sparse[::2], sparse[1::2])) + + def _apply_pax_info(self, pax_headers, encoding, errors): + """Replace fields with supplemental information from a previous + pax extended or global header. + """ + for keyword, value in pax_headers.items(): + if keyword == "GNU.sparse.name": + setattr(self, "path", value) + elif keyword == "GNU.sparse.size": + setattr(self, "size", int(value)) + elif keyword == "GNU.sparse.realsize": + setattr(self, "size", int(value)) + elif keyword in PAX_FIELDS: + if keyword in PAX_NUMBER_FIELDS: + try: + value = PAX_NUMBER_FIELDS[keyword](value) + except ValueError: + value = 0 + if keyword == "path": + value = value.rstrip("/") + setattr(self, keyword, value) + + self.pax_headers = pax_headers.copy() + + def _decode_pax_field(self, value, encoding, fallback_encoding, fallback_errors): + """Decode a single field from a pax record. + """ + try: + return value.decode(encoding, "strict") + except UnicodeDecodeError: + return value.decode(fallback_encoding, fallback_errors) + + def _block(self, count): + """Round up a byte count by BLOCKSIZE and return it, + e.g. _block(834) => 1024. + """ + blocks, remainder = divmod(count, BLOCKSIZE) + if remainder: + blocks += 1 + return blocks * BLOCKSIZE + + def isreg(self): + return self.type in REGULAR_TYPES + def isfile(self): + return self.isreg() + def isdir(self): + return self.type == DIRTYPE + def issym(self): + return self.type == SYMTYPE + def islnk(self): + return self.type == LNKTYPE + def ischr(self): + return self.type == CHRTYPE + def isblk(self): + return self.type == BLKTYPE + def isfifo(self): + return self.type == FIFOTYPE + def issparse(self): + return self.sparse is not None + def isdev(self): + return self.type in (CHRTYPE, BLKTYPE, FIFOTYPE) +# class TarInfo + +class TarFile(object): + """The TarFile Class provides an interface to tar archives. + """ + + debug = 0 # May be set from 0 (no msgs) to 3 (all msgs) + + dereference = False # If true, add content of linked file to the + # tar file, else the link. + + ignore_zeros = False # If true, skips empty or invalid blocks and + # continues processing. + + errorlevel = 1 # If 0, fatal errors only appear in debug + # messages (if debug >= 0). If > 0, errors + # are passed to the caller as exceptions. + + format = DEFAULT_FORMAT # The format to use when creating an archive. + + encoding = ENCODING # Encoding for 8-bit character strings. + + errors = None # Error handler for unicode conversion. + + tarinfo = TarInfo # The default TarInfo class to use. + + fileobject = ExFileObject # The default ExFileObject class to use. + + def __init__(self, name=None, mode="r", fileobj=None, format=None, + tarinfo=None, dereference=None, ignore_zeros=None, encoding=None, + errors="surrogateescape", pax_headers=None, debug=None, errorlevel=None): + """Open an (uncompressed) tar archive `name'. `mode' is either 'r' to + read from an existing archive, 'a' to append data to an existing + file or 'w' to create a new file overwriting an existing one. `mode' + defaults to 'r'. + If `fileobj' is given, it is used for reading or writing data. If it + can be determined, `mode' is overridden by `fileobj's mode. + `fileobj' is not closed, when TarFile is closed. + """ + if len(mode) > 1 or mode not in "raw": + raise ValueError("mode must be 'r', 'a' or 'w'") + self.mode = mode + self._mode = {"r": "rb", "a": "r+b", "w": "wb"}[mode] + + if not fileobj: + if self.mode == "a" and not os.path.exists(name): + # Create nonexistent files in append mode. + self.mode = "w" + self._mode = "wb" + fileobj = bltn_open(name, self._mode) + self._extfileobj = False + else: + if name is None and hasattr(fileobj, "name"): + name = fileobj.name + if hasattr(fileobj, "mode"): + self._mode = fileobj.mode + self._extfileobj = True + self.name = os.path.abspath(name) if name else None + self.fileobj = fileobj + + # Init attributes. + if format is not None: + self.format = format + if tarinfo is not None: + self.tarinfo = tarinfo + if dereference is not None: + self.dereference = dereference + if ignore_zeros is not None: + self.ignore_zeros = ignore_zeros + if encoding is not None: + self.encoding = encoding + self.errors = errors + + if pax_headers is not None and self.format == PAX_FORMAT: + self.pax_headers = pax_headers + else: + self.pax_headers = {} + + if debug is not None: + self.debug = debug + if errorlevel is not None: + self.errorlevel = errorlevel + + # Init datastructures. + self.closed = False + self.members = [] # list of members as TarInfo objects + self._loaded = False # flag if all members have been read + self.offset = self.fileobj.tell() + # current position in the archive file + self.inodes = {} # dictionary caching the inodes of + # archive members already added + + try: + if self.mode == "r": + self.firstmember = None + self.firstmember = self.next() + + if self.mode == "a": + # Move to the end of the archive, + # before the first empty block. + while True: + self.fileobj.seek(self.offset) + try: + tarinfo = self.tarinfo.fromtarfile(self) + self.members.append(tarinfo) + except EOFHeaderError: + self.fileobj.seek(self.offset) + break + except HeaderError as e: + raise ReadError(str(e)) + + if self.mode in "aw": + self._loaded = True + + if self.pax_headers: + buf = self.tarinfo.create_pax_global_header(self.pax_headers.copy()) + self.fileobj.write(buf) + self.offset += len(buf) + except: + if not self._extfileobj: + self.fileobj.close() + self.closed = True + raise + + #-------------------------------------------------------------------------- + # Below are the classmethods which act as alternate constructors to the + # TarFile class. The open() method is the only one that is needed for + # public use; it is the "super"-constructor and is able to select an + # adequate "sub"-constructor for a particular compression using the mapping + # from OPEN_METH. + # + # This concept allows one to subclass TarFile without losing the comfort of + # the super-constructor. A sub-constructor is registered and made available + # by adding it to the mapping in OPEN_METH. + + @classmethod + def open(cls, name=None, mode="r", fileobj=None, bufsize=RECORDSIZE, **kwargs): + """Open a tar archive for reading, writing or appending. Return + an appropriate TarFile class. + + mode: + 'r' or 'r:*' open for reading with transparent compression + 'r:' open for reading exclusively uncompressed + 'r:gz' open for reading with gzip compression + 'r:bz2' open for reading with bzip2 compression + 'a' or 'a:' open for appending, creating the file if necessary + 'w' or 'w:' open for writing without compression + 'w:gz' open for writing with gzip compression + 'w:bz2' open for writing with bzip2 compression + + 'r|*' open a stream of tar blocks with transparent compression + 'r|' open an uncompressed stream of tar blocks for reading + 'r|gz' open a gzip compressed stream of tar blocks + 'r|bz2' open a bzip2 compressed stream of tar blocks + 'w|' open an uncompressed stream for writing + 'w|gz' open a gzip compressed stream for writing + 'w|bz2' open a bzip2 compressed stream for writing + """ + + if not name and not fileobj: + raise ValueError("nothing to open") + + if mode in ("r", "r:*"): + # Find out which *open() is appropriate for opening the file. + for comptype in cls.OPEN_METH: + func = getattr(cls, cls.OPEN_METH[comptype]) + if fileobj is not None: + saved_pos = fileobj.tell() + try: + return func(name, "r", fileobj, **kwargs) + except (ReadError, CompressionError) as e: + if fileobj is not None: + fileobj.seek(saved_pos) + continue + raise ReadError("file could not be opened successfully") + + elif ":" in mode: + filemode, comptype = mode.split(":", 1) + filemode = filemode or "r" + comptype = comptype or "tar" + + # Select the *open() function according to + # given compression. + if comptype in cls.OPEN_METH: + func = getattr(cls, cls.OPEN_METH[comptype]) + else: + raise CompressionError("unknown compression type %r" % comptype) + return func(name, filemode, fileobj, **kwargs) + + elif "|" in mode: + filemode, comptype = mode.split("|", 1) + filemode = filemode or "r" + comptype = comptype or "tar" + + if filemode not in "rw": + raise ValueError("mode must be 'r' or 'w'") + + stream = _Stream(name, filemode, comptype, fileobj, bufsize) + try: + t = cls(name, filemode, stream, **kwargs) + except: + stream.close() + raise + t._extfileobj = False + return t + + elif mode in "aw": + return cls.taropen(name, mode, fileobj, **kwargs) + + raise ValueError("undiscernible mode") + + @classmethod + def taropen(cls, name, mode="r", fileobj=None, **kwargs): + """Open uncompressed tar archive name for reading or writing. + """ + if len(mode) > 1 or mode not in "raw": + raise ValueError("mode must be 'r', 'a' or 'w'") + return cls(name, mode, fileobj, **kwargs) + + @classmethod + def gzopen(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): + """Open gzip compressed tar archive name for reading or writing. + Appending is not allowed. + """ + if len(mode) > 1 or mode not in "rw": + raise ValueError("mode must be 'r' or 'w'") + + try: + import gzip + gzip.GzipFile + except (ImportError, AttributeError): + raise CompressionError("gzip module is not available") + + extfileobj = fileobj is not None + try: + fileobj = gzip.GzipFile(name, mode + "b", compresslevel, fileobj) + t = cls.taropen(name, mode, fileobj, **kwargs) + except IOError: + if not extfileobj and fileobj is not None: + fileobj.close() + if fileobj is None: + raise + raise ReadError("not a gzip file") + except: + if not extfileobj and fileobj is not None: + fileobj.close() + raise + t._extfileobj = extfileobj + return t + + @classmethod + def bz2open(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): + """Open bzip2 compressed tar archive name for reading or writing. + Appending is not allowed. + """ + if len(mode) > 1 or mode not in "rw": + raise ValueError("mode must be 'r' or 'w'.") + + try: + import bz2 + except ImportError: + raise CompressionError("bz2 module is not available") + + if fileobj is not None: + fileobj = _BZ2Proxy(fileobj, mode) + else: + fileobj = bz2.BZ2File(name, mode, compresslevel=compresslevel) + + try: + t = cls.taropen(name, mode, fileobj, **kwargs) + except (IOError, EOFError): + fileobj.close() + raise ReadError("not a bzip2 file") + t._extfileobj = False + return t + + # All *open() methods are registered here. + OPEN_METH = { + "tar": "taropen", # uncompressed tar + "gz": "gzopen", # gzip compressed tar + "bz2": "bz2open" # bzip2 compressed tar + } + + #-------------------------------------------------------------------------- + # The public methods which TarFile provides: + + def close(self): + """Close the TarFile. In write-mode, two finishing zero blocks are + appended to the archive. + """ + if self.closed: + return + + if self.mode in "aw": + self.fileobj.write(NUL * (BLOCKSIZE * 2)) + self.offset += (BLOCKSIZE * 2) + # fill up the end with zero-blocks + # (like option -b20 for tar does) + blocks, remainder = divmod(self.offset, RECORDSIZE) + if remainder > 0: + self.fileobj.write(NUL * (RECORDSIZE - remainder)) + + if not self._extfileobj: + self.fileobj.close() + self.closed = True + + def getmember(self, name): + """Return a TarInfo object for member `name'. If `name' can not be + found in the archive, KeyError is raised. If a member occurs more + than once in the archive, its last occurrence is assumed to be the + most up-to-date version. + """ + tarinfo = self._getmember(name) + if tarinfo is None: + raise KeyError("filename %r not found" % name) + return tarinfo + + def getmembers(self): + """Return the members of the archive as a list of TarInfo objects. The + list has the same order as the members in the archive. + """ + self._check() + if not self._loaded: # if we want to obtain a list of + self._load() # all members, we first have to + # scan the whole archive. + return self.members + + def getnames(self): + """Return the members of the archive as a list of their names. It has + the same order as the list returned by getmembers(). + """ + return [tarinfo.name for tarinfo in self.getmembers()] + + def gettarinfo(self, name=None, arcname=None, fileobj=None): + """Create a TarInfo object for either the file `name' or the file + object `fileobj' (using os.fstat on its file descriptor). You can + modify some of the TarInfo's attributes before you add it using + addfile(). If given, `arcname' specifies an alternative name for the + file in the archive. + """ + self._check("aw") + + # When fileobj is given, replace name by + # fileobj's real name. + if fileobj is not None: + name = fileobj.name + + # Building the name of the member in the archive. + # Backward slashes are converted to forward slashes, + # Absolute paths are turned to relative paths. + if arcname is None: + arcname = name + drv, arcname = os.path.splitdrive(arcname) + arcname = arcname.replace(os.sep, "/") + arcname = arcname.lstrip("/") + + # Now, fill the TarInfo object with + # information specific for the file. + tarinfo = self.tarinfo() + tarinfo.tarfile = self + + # Use os.stat or os.lstat, depending on platform + # and if symlinks shall be resolved. + if fileobj is None: + if hasattr(os, "lstat") and not self.dereference: + statres = os.lstat(name) + else: + statres = os.stat(name) + else: + statres = os.fstat(fileobj.fileno()) + linkname = "" + + stmd = statres.st_mode + if stat.S_ISREG(stmd): + inode = (statres.st_ino, statres.st_dev) + if not self.dereference and statres.st_nlink > 1 and \ + inode in self.inodes and arcname != self.inodes[inode]: + # Is it a hardlink to an already + # archived file? + type = LNKTYPE + linkname = self.inodes[inode] + else: + # The inode is added only if its valid. + # For win32 it is always 0. + type = REGTYPE + if inode[0]: + self.inodes[inode] = arcname + elif stat.S_ISDIR(stmd): + type = DIRTYPE + elif stat.S_ISFIFO(stmd): + type = FIFOTYPE + elif stat.S_ISLNK(stmd): + type = SYMTYPE + linkname = os.readlink(name) + elif stat.S_ISCHR(stmd): + type = CHRTYPE + elif stat.S_ISBLK(stmd): + type = BLKTYPE + else: + return None + + # Fill the TarInfo object with all + # information we can get. + tarinfo.name = arcname + tarinfo.mode = stmd + tarinfo.uid = statres.st_uid + tarinfo.gid = statres.st_gid + if type == REGTYPE: + tarinfo.size = statres.st_size + else: + tarinfo.size = 0 + tarinfo.mtime = statres.st_mtime + tarinfo.type = type + tarinfo.linkname = linkname + if pwd: + try: + tarinfo.uname = pwd.getpwuid(tarinfo.uid)[0] + except KeyError: + pass + if grp: + try: + tarinfo.gname = grp.getgrgid(tarinfo.gid)[0] + except KeyError: + pass + + if type in (CHRTYPE, BLKTYPE): + if hasattr(os, "major") and hasattr(os, "minor"): + tarinfo.devmajor = os.major(statres.st_rdev) + tarinfo.devminor = os.minor(statres.st_rdev) + return tarinfo + + def list(self, verbose=True): + """Print a table of contents to sys.stdout. If `verbose' is False, only + the names of the members are printed. If it is True, an `ls -l'-like + output is produced. + """ + self._check() + + for tarinfo in self: + if verbose: + print(filemode(tarinfo.mode), end=' ') + print("%s/%s" % (tarinfo.uname or tarinfo.uid, + tarinfo.gname or tarinfo.gid), end=' ') + if tarinfo.ischr() or tarinfo.isblk(): + print("%10s" % ("%d,%d" \ + % (tarinfo.devmajor, tarinfo.devminor)), end=' ') + else: + print("%10d" % tarinfo.size, end=' ') + print("%d-%02d-%02d %02d:%02d:%02d" \ + % time.localtime(tarinfo.mtime)[:6], end=' ') + + print(tarinfo.name + ("/" if tarinfo.isdir() else ""), end=' ') + + if verbose: + if tarinfo.issym(): + print("->", tarinfo.linkname, end=' ') + if tarinfo.islnk(): + print("link to", tarinfo.linkname, end=' ') + print() + + def add(self, name, arcname=None, recursive=True, exclude=None, filter=None): + """Add the file `name' to the archive. `name' may be any type of file + (directory, fifo, symbolic link, etc.). If given, `arcname' + specifies an alternative name for the file in the archive. + Directories are added recursively by default. This can be avoided by + setting `recursive' to False. `exclude' is a function that should + return True for each filename to be excluded. `filter' is a function + that expects a TarInfo object argument and returns the changed + TarInfo object, if it returns None the TarInfo object will be + excluded from the archive. + """ + self._check("aw") + + if arcname is None: + arcname = name + + # Exclude pathnames. + if exclude is not None: + import warnings + warnings.warn("use the filter argument instead", + DeprecationWarning, 2) + if exclude(name): + self._dbg(2, "tarfile: Excluded %r" % name) + return + + # Skip if somebody tries to archive the archive... + if self.name is not None and os.path.abspath(name) == self.name: + self._dbg(2, "tarfile: Skipped %r" % name) + return + + self._dbg(1, name) + + # Create a TarInfo object from the file. + tarinfo = self.gettarinfo(name, arcname) + + if tarinfo is None: + self._dbg(1, "tarfile: Unsupported type %r" % name) + return + + # Change or exclude the TarInfo object. + if filter is not None: + tarinfo = filter(tarinfo) + if tarinfo is None: + self._dbg(2, "tarfile: Excluded %r" % name) + return + + # Append the tar header and data to the archive. + if tarinfo.isreg(): + f = bltn_open(name, "rb") + self.addfile(tarinfo, f) + f.close() + + elif tarinfo.isdir(): + self.addfile(tarinfo) + if recursive: + for f in os.listdir(name): + self.add(os.path.join(name, f), os.path.join(arcname, f), + recursive, exclude, filter=filter) + + else: + self.addfile(tarinfo) + + def addfile(self, tarinfo, fileobj=None): + """Add the TarInfo object `tarinfo' to the archive. If `fileobj' is + given, tarinfo.size bytes are read from it and added to the archive. + You can create TarInfo objects using gettarinfo(). + On Windows platforms, `fileobj' should always be opened with mode + 'rb' to avoid irritation about the file size. + """ + self._check("aw") + + tarinfo = copy.copy(tarinfo) + + buf = tarinfo.tobuf(self.format, self.encoding, self.errors) + self.fileobj.write(buf) + self.offset += len(buf) + + # If there's data to follow, append it. + if fileobj is not None: + copyfileobj(fileobj, self.fileobj, tarinfo.size) + blocks, remainder = divmod(tarinfo.size, BLOCKSIZE) + if remainder > 0: + self.fileobj.write(NUL * (BLOCKSIZE - remainder)) + blocks += 1 + self.offset += blocks * BLOCKSIZE + + self.members.append(tarinfo) + + def extractall(self, path=".", members=None): + """Extract all members from the archive to the current working + directory and set owner, modification time and permissions on + directories afterwards. `path' specifies a different directory + to extract to. `members' is optional and must be a subset of the + list returned by getmembers(). + """ + directories = [] + + if members is None: + members = self + + for tarinfo in members: + if tarinfo.isdir(): + # Extract directories with a safe mode. + directories.append(tarinfo) + tarinfo = copy.copy(tarinfo) + tarinfo.mode = 0o700 + # Do not set_attrs directories, as we will do that further down + self.extract(tarinfo, path, set_attrs=not tarinfo.isdir()) + + # Reverse sort directories. + directories.sort(key=lambda a: a.name) + directories.reverse() + + # Set correct owner, mtime and filemode on directories. + for tarinfo in directories: + dirpath = os.path.join(path, tarinfo.name) + try: + self.chown(tarinfo, dirpath) + self.utime(tarinfo, dirpath) + self.chmod(tarinfo, dirpath) + except ExtractError as e: + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + def extract(self, member, path="", set_attrs=True): + """Extract a member from the archive to the current working directory, + using its full name. Its file information is extracted as accurately + as possible. `member' may be a filename or a TarInfo object. You can + specify a different directory using `path'. File attributes (owner, + mtime, mode) are set unless `set_attrs' is False. + """ + self._check("r") + + if isinstance(member, str): + tarinfo = self.getmember(member) + else: + tarinfo = member + + # Prepare the link target for makelink(). + if tarinfo.islnk(): + tarinfo._link_target = os.path.join(path, tarinfo.linkname) + + try: + self._extract_member(tarinfo, os.path.join(path, tarinfo.name), + set_attrs=set_attrs) + except EnvironmentError as e: + if self.errorlevel > 0: + raise + else: + if e.filename is None: + self._dbg(1, "tarfile: %s" % e.strerror) + else: + self._dbg(1, "tarfile: %s %r" % (e.strerror, e.filename)) + except ExtractError as e: + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + def extractfile(self, member): + """Extract a member from the archive as a file object. `member' may be + a filename or a TarInfo object. If `member' is a regular file, a + file-like object is returned. If `member' is a link, a file-like + object is constructed from the link's target. If `member' is none of + the above, None is returned. + The file-like object is read-only and provides the following + methods: read(), readline(), readlines(), seek() and tell() + """ + self._check("r") + + if isinstance(member, str): + tarinfo = self.getmember(member) + else: + tarinfo = member + + if tarinfo.isreg(): + return self.fileobject(self, tarinfo) + + elif tarinfo.type not in SUPPORTED_TYPES: + # If a member's type is unknown, it is treated as a + # regular file. + return self.fileobject(self, tarinfo) + + elif tarinfo.islnk() or tarinfo.issym(): + if isinstance(self.fileobj, _Stream): + # A small but ugly workaround for the case that someone tries + # to extract a (sym)link as a file-object from a non-seekable + # stream of tar blocks. + raise StreamError("cannot extract (sym)link as file object") + else: + # A (sym)link's file object is its target's file object. + return self.extractfile(self._find_link_target(tarinfo)) + else: + # If there's no data associated with the member (directory, chrdev, + # blkdev, etc.), return None instead of a file object. + return None + + def _extract_member(self, tarinfo, targetpath, set_attrs=True): + """Extract the TarInfo object tarinfo to a physical + file called targetpath. + """ + # Fetch the TarInfo object for the given name + # and build the destination pathname, replacing + # forward slashes to platform specific separators. + targetpath = targetpath.rstrip("/") + targetpath = targetpath.replace("/", os.sep) + + # Create all upper directories. + upperdirs = os.path.dirname(targetpath) + if upperdirs and not os.path.exists(upperdirs): + # Create directories that are not part of the archive with + # default permissions. + os.makedirs(upperdirs) + + if tarinfo.islnk() or tarinfo.issym(): + self._dbg(1, "%s -> %s" % (tarinfo.name, tarinfo.linkname)) + else: + self._dbg(1, tarinfo.name) + + if tarinfo.isreg(): + self.makefile(tarinfo, targetpath) + elif tarinfo.isdir(): + self.makedir(tarinfo, targetpath) + elif tarinfo.isfifo(): + self.makefifo(tarinfo, targetpath) + elif tarinfo.ischr() or tarinfo.isblk(): + self.makedev(tarinfo, targetpath) + elif tarinfo.islnk() or tarinfo.issym(): + self.makelink(tarinfo, targetpath) + elif tarinfo.type not in SUPPORTED_TYPES: + self.makeunknown(tarinfo, targetpath) + else: + self.makefile(tarinfo, targetpath) + + if set_attrs: + self.chown(tarinfo, targetpath) + if not tarinfo.issym(): + self.chmod(tarinfo, targetpath) + self.utime(tarinfo, targetpath) + + #-------------------------------------------------------------------------- + # Below are the different file methods. They are called via + # _extract_member() when extract() is called. They can be replaced in a + # subclass to implement other functionality. + + def makedir(self, tarinfo, targetpath): + """Make a directory called targetpath. + """ + try: + # Use a safe mode for the directory, the real mode is set + # later in _extract_member(). + os.mkdir(targetpath, 0o700) + except EnvironmentError as e: + if e.errno != errno.EEXIST: + raise + + def makefile(self, tarinfo, targetpath): + """Make a file called targetpath. + """ + source = self.fileobj + source.seek(tarinfo.offset_data) + target = bltn_open(targetpath, "wb") + if tarinfo.sparse is not None: + for offset, size in tarinfo.sparse: + target.seek(offset) + copyfileobj(source, target, size) + else: + copyfileobj(source, target, tarinfo.size) + target.seek(tarinfo.size) + target.truncate() + target.close() + + def makeunknown(self, tarinfo, targetpath): + """Make a file from a TarInfo object with an unknown type + at targetpath. + """ + self.makefile(tarinfo, targetpath) + self._dbg(1, "tarfile: Unknown file type %r, " \ + "extracted as regular file." % tarinfo.type) + + def makefifo(self, tarinfo, targetpath): + """Make a fifo called targetpath. + """ + if hasattr(os, "mkfifo"): + os.mkfifo(targetpath) + else: + raise ExtractError("fifo not supported by system") + + def makedev(self, tarinfo, targetpath): + """Make a character or block device called targetpath. + """ + if not hasattr(os, "mknod") or not hasattr(os, "makedev"): + raise ExtractError("special devices not supported by system") + + mode = tarinfo.mode + if tarinfo.isblk(): + mode |= stat.S_IFBLK + else: + mode |= stat.S_IFCHR + + os.mknod(targetpath, mode, + os.makedev(tarinfo.devmajor, tarinfo.devminor)) + + def makelink(self, tarinfo, targetpath): + """Make a (symbolic) link called targetpath. If it cannot be created + (platform limitation), we try to make a copy of the referenced file + instead of a link. + """ + try: + # For systems that support symbolic and hard links. + if tarinfo.issym(): + os.symlink(tarinfo.linkname, targetpath) + else: + # See extract(). + if os.path.exists(tarinfo._link_target): + os.link(tarinfo._link_target, targetpath) + else: + self._extract_member(self._find_link_target(tarinfo), + targetpath) + except symlink_exception: + if tarinfo.issym(): + linkpath = os.path.join(os.path.dirname(tarinfo.name), + tarinfo.linkname) + else: + linkpath = tarinfo.linkname + else: + try: + self._extract_member(self._find_link_target(tarinfo), + targetpath) + except KeyError: + raise ExtractError("unable to resolve link inside archive") + + def chown(self, tarinfo, targetpath): + """Set owner of targetpath according to tarinfo. + """ + if pwd and hasattr(os, "geteuid") and os.geteuid() == 0: + # We have to be root to do so. + try: + g = grp.getgrnam(tarinfo.gname)[2] + except KeyError: + g = tarinfo.gid + try: + u = pwd.getpwnam(tarinfo.uname)[2] + except KeyError: + u = tarinfo.uid + try: + if tarinfo.issym() and hasattr(os, "lchown"): + os.lchown(targetpath, u, g) + else: + if sys.platform != "os2emx": + os.chown(targetpath, u, g) + except EnvironmentError as e: + raise ExtractError("could not change owner") + + def chmod(self, tarinfo, targetpath): + """Set file permissions of targetpath according to tarinfo. + """ + if hasattr(os, 'chmod'): + try: + os.chmod(targetpath, tarinfo.mode) + except EnvironmentError as e: + raise ExtractError("could not change mode") + + def utime(self, tarinfo, targetpath): + """Set modification time of targetpath according to tarinfo. + """ + if not hasattr(os, 'utime'): + return + try: + os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime)) + except EnvironmentError as e: + raise ExtractError("could not change modification time") + + #-------------------------------------------------------------------------- + def next(self): + """Return the next member of the archive as a TarInfo object, when + TarFile is opened for reading. Return None if there is no more + available. + """ + self._check("ra") + if self.firstmember is not None: + m = self.firstmember + self.firstmember = None + return m + + # Read the next block. + self.fileobj.seek(self.offset) + tarinfo = None + while True: + try: + tarinfo = self.tarinfo.fromtarfile(self) + except EOFHeaderError as e: + if self.ignore_zeros: + self._dbg(2, "0x%X: %s" % (self.offset, e)) + self.offset += BLOCKSIZE + continue + except InvalidHeaderError as e: + if self.ignore_zeros: + self._dbg(2, "0x%X: %s" % (self.offset, e)) + self.offset += BLOCKSIZE + continue + elif self.offset == 0: + raise ReadError(str(e)) + except EmptyHeaderError: + if self.offset == 0: + raise ReadError("empty file") + except TruncatedHeaderError as e: + if self.offset == 0: + raise ReadError(str(e)) + except SubsequentHeaderError as e: + raise ReadError(str(e)) + break + + if tarinfo is not None: + self.members.append(tarinfo) + else: + self._loaded = True + + return tarinfo + + #-------------------------------------------------------------------------- + # Little helper methods: + + def _getmember(self, name, tarinfo=None, normalize=False): + """Find an archive member by name from bottom to top. + If tarinfo is given, it is used as the starting point. + """ + # Ensure that all members have been loaded. + members = self.getmembers() + + # Limit the member search list up to tarinfo. + if tarinfo is not None: + members = members[:members.index(tarinfo)] + + if normalize: + name = os.path.normpath(name) + + for member in reversed(members): + if normalize: + member_name = os.path.normpath(member.name) + else: + member_name = member.name + + if name == member_name: + return member + + def _load(self): + """Read through the entire archive file and look for readable + members. + """ + while True: + tarinfo = self.next() + if tarinfo is None: + break + self._loaded = True + + def _check(self, mode=None): + """Check if TarFile is still open, and if the operation's mode + corresponds to TarFile's mode. + """ + if self.closed: + raise IOError("%s is closed" % self.__class__.__name__) + if mode is not None and self.mode not in mode: + raise IOError("bad operation for mode %r" % self.mode) + + def _find_link_target(self, tarinfo): + """Find the target member of a symlink or hardlink member in the + archive. + """ + if tarinfo.issym(): + # Always search the entire archive. + linkname = os.path.dirname(tarinfo.name) + "/" + tarinfo.linkname + limit = None + else: + # Search the archive before the link, because a hard link is + # just a reference to an already archived file. + linkname = tarinfo.linkname + limit = tarinfo + + member = self._getmember(linkname, tarinfo=limit, normalize=True) + if member is None: + raise KeyError("linkname %r not found" % linkname) + return member + + def __iter__(self): + """Provide an iterator object. + """ + if self._loaded: + return iter(self.members) + else: + return TarIter(self) + + def _dbg(self, level, msg): + """Write debugging output to sys.stderr. + """ + if level <= self.debug: + print(msg, file=sys.stderr) + + def __enter__(self): + self._check() + return self + + def __exit__(self, type, value, traceback): + if type is None: + self.close() + else: + # An exception occurred. We must not call close() because + # it would try to write end-of-archive blocks and padding. + if not self._extfileobj: + self.fileobj.close() + self.closed = True +# class TarFile + +class TarIter(object): + """Iterator Class. + + for tarinfo in TarFile(...): + suite... + """ + + def __init__(self, tarfile): + """Construct a TarIter object. + """ + self.tarfile = tarfile + self.index = 0 + def __iter__(self): + """Return iterator object. + """ + return self + + def __next__(self): + """Return the next item using TarFile's next() method. + When all members have been read, set TarFile as _loaded. + """ + # Fix for SF #1100429: Under rare circumstances it can + # happen that getmembers() is called during iteration, + # which will cause TarIter to stop prematurely. + if not self.tarfile._loaded: + tarinfo = self.tarfile.next() + if not tarinfo: + self.tarfile._loaded = True + raise StopIteration + else: + try: + tarinfo = self.tarfile.members[self.index] + except IndexError: + raise StopIteration + self.index += 1 + return tarinfo + + next = __next__ # for Python 2.x + +#-------------------- +# exported functions +#-------------------- +def is_tarfile(name): + """Return True if name points to a tar archive that we + are able to handle, else return False. + """ + try: + t = open(name) + t.close() + return True + except TarError: + return False + +bltn_open = open +open = TarFile.open diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/compat.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/compat.py new file mode 100644 index 0000000..e594106 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/compat.py @@ -0,0 +1,1122 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2017 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import absolute_import + +import os +import re +import sys + +try: + import ssl +except ImportError: # pragma: no cover + ssl = None + +if sys.version_info[0] < 3: # pragma: no cover + from StringIO import StringIO + string_types = basestring, + text_type = unicode + from types import FileType as file_type + import __builtin__ as builtins + import ConfigParser as configparser + from ._backport import shutil + from urlparse import urlparse, urlunparse, urljoin, urlsplit, urlunsplit + from urllib import (urlretrieve, quote as _quote, unquote, url2pathname, + pathname2url, ContentTooShortError, splittype) + + def quote(s): + if isinstance(s, unicode): + s = s.encode('utf-8') + return _quote(s) + + import urllib2 + from urllib2 import (Request, urlopen, URLError, HTTPError, + HTTPBasicAuthHandler, HTTPPasswordMgr, + HTTPHandler, HTTPRedirectHandler, + build_opener) + if ssl: + from urllib2 import HTTPSHandler + import httplib + import xmlrpclib + import Queue as queue + from HTMLParser import HTMLParser + import htmlentitydefs + raw_input = raw_input + from itertools import ifilter as filter + from itertools import ifilterfalse as filterfalse + + # Leaving this around for now, in case it needs resurrecting in some way + # _userprog = None + # def splituser(host): + # """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.""" + # global _userprog + # if _userprog is None: + # import re + # _userprog = re.compile('^(.*)@(.*)$') + + # match = _userprog.match(host) + # if match: return match.group(1, 2) + # return None, host + +else: # pragma: no cover + from io import StringIO + string_types = str, + text_type = str + from io import TextIOWrapper as file_type + import builtins + import configparser + import shutil + from urllib.parse import (urlparse, urlunparse, urljoin, quote, + unquote, urlsplit, urlunsplit, splittype) + from urllib.request import (urlopen, urlretrieve, Request, url2pathname, + pathname2url, + HTTPBasicAuthHandler, HTTPPasswordMgr, + HTTPHandler, HTTPRedirectHandler, + build_opener) + if ssl: + from urllib.request import HTTPSHandler + from urllib.error import HTTPError, URLError, ContentTooShortError + import http.client as httplib + import urllib.request as urllib2 + import xmlrpc.client as xmlrpclib + import queue + from html.parser import HTMLParser + import html.entities as htmlentitydefs + raw_input = input + from itertools import filterfalse + filter = filter + + +try: + from ssl import match_hostname, CertificateError +except ImportError: # pragma: no cover + class CertificateError(ValueError): + pass + + + def _dnsname_match(dn, hostname, max_wildcards=1): + """Matching according to RFC 6125, section 6.4.3 + + http://tools.ietf.org/html/rfc6125#section-6.4.3 + """ + pats = [] + if not dn: + return False + + parts = dn.split('.') + leftmost, remainder = parts[0], parts[1:] + + wildcards = leftmost.count('*') + if wildcards > max_wildcards: + # Issue #17980: avoid denials of service by refusing more + # than one wildcard per fragment. A survey of established + # policy among SSL implementations showed it to be a + # reasonable choice. + raise CertificateError( + "too many wildcards in certificate DNS name: " + repr(dn)) + + # speed up common case w/o wildcards + if not wildcards: + return dn.lower() == hostname.lower() + + # RFC 6125, section 6.4.3, subitem 1. + # The client SHOULD NOT attempt to match a presented identifier in which + # the wildcard character comprises a label other than the left-most label. + if leftmost == '*': + # When '*' is a fragment by itself, it matches a non-empty dotless + # fragment. + pats.append('[^.]+') + elif leftmost.startswith('xn--') or hostname.startswith('xn--'): + # RFC 6125, section 6.4.3, subitem 3. + # The client SHOULD NOT attempt to match a presented identifier + # where the wildcard character is embedded within an A-label or + # U-label of an internationalized domain name. + pats.append(re.escape(leftmost)) + else: + # Otherwise, '*' matches any dotless string, e.g. www* + pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) + + # add the remaining fragments, ignore any wildcards + for frag in remainder: + pats.append(re.escape(frag)) + + pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) + return pat.match(hostname) + + + def match_hostname(cert, hostname): + """Verify that *cert* (in decoded format as returned by + SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 + rules are followed, but IP addresses are not accepted for *hostname*. + + CertificateError is raised on failure. On success, the function + returns nothing. + """ + if not cert: + raise ValueError("empty or no certificate, match_hostname needs a " + "SSL socket or SSL context with either " + "CERT_OPTIONAL or CERT_REQUIRED") + dnsnames = [] + san = cert.get('subjectAltName', ()) + for key, value in san: + if key == 'DNS': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if not dnsnames: + # The subject is only checked when there is no dNSName entry + # in subjectAltName + for sub in cert.get('subject', ()): + for key, value in sub: + # XXX according to RFC 2818, the most specific Common Name + # must be used. + if key == 'commonName': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if len(dnsnames) > 1: + raise CertificateError("hostname %r " + "doesn't match either of %s" + % (hostname, ', '.join(map(repr, dnsnames)))) + elif len(dnsnames) == 1: + raise CertificateError("hostname %r " + "doesn't match %r" + % (hostname, dnsnames[0])) + else: + raise CertificateError("no appropriate commonName or " + "subjectAltName fields were found") + + +try: + from types import SimpleNamespace as Container +except ImportError: # pragma: no cover + class Container(object): + """ + A generic container for when multiple values need to be returned + """ + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + +try: + from shutil import which +except ImportError: # pragma: no cover + # Implementation from Python 3.3 + def which(cmd, mode=os.F_OK | os.X_OK, path=None): + """Given a command, mode, and a PATH string, return the path which + conforms to the given mode on the PATH, or None if there is no such + file. + + `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result + of os.environ.get("PATH"), or can be overridden with a custom search + path. + + """ + # Check that a given file can be accessed with the correct mode. + # Additionally check that `file` is not a directory, as on Windows + # directories pass the os.access check. + def _access_check(fn, mode): + return (os.path.exists(fn) and os.access(fn, mode) + and not os.path.isdir(fn)) + + # If we're given a path with a directory part, look it up directly rather + # than referring to PATH directories. This includes checking relative to the + # current directory, e.g. ./script + if os.path.dirname(cmd): + if _access_check(cmd, mode): + return cmd + return None + + if path is None: + path = os.environ.get("PATH", os.defpath) + if not path: + return None + path = path.split(os.pathsep) + + if sys.platform == "win32": + # The current directory takes precedence on Windows. + if not os.curdir in path: + path.insert(0, os.curdir) + + # PATHEXT is necessary to check on Windows. + pathext = os.environ.get("PATHEXT", "").split(os.pathsep) + # See if the given file matches any of the expected path extensions. + # This will allow us to short circuit when given "python.exe". + # If it does match, only test that one, otherwise we have to try + # others. + if any(cmd.lower().endswith(ext.lower()) for ext in pathext): + files = [cmd] + else: + files = [cmd + ext for ext in pathext] + else: + # On other platforms you don't have things like PATHEXT to tell you + # what file suffixes are executable, so just pass on cmd as-is. + files = [cmd] + + seen = set() + for dir in path: + normdir = os.path.normcase(dir) + if not normdir in seen: + seen.add(normdir) + for thefile in files: + name = os.path.join(dir, thefile) + if _access_check(name, mode): + return name + return None + + +# ZipFile is a context manager in 2.7, but not in 2.6 + +from zipfile import ZipFile as BaseZipFile + +if hasattr(BaseZipFile, '__enter__'): # pragma: no cover + ZipFile = BaseZipFile +else: # pragma: no cover + from zipfile import ZipExtFile as BaseZipExtFile + + class ZipExtFile(BaseZipExtFile): + def __init__(self, base): + self.__dict__.update(base.__dict__) + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + class ZipFile(BaseZipFile): + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + def open(self, *args, **kwargs): + base = BaseZipFile.open(self, *args, **kwargs) + return ZipExtFile(base) + +try: + from platform import python_implementation +except ImportError: # pragma: no cover + def python_implementation(): + """Return a string identifying the Python implementation.""" + if 'PyPy' in sys.version: + return 'PyPy' + if os.name == 'java': + return 'Jython' + if sys.version.startswith('IronPython'): + return 'IronPython' + return 'CPython' + +try: + import sysconfig +except ImportError: # pragma: no cover + from ._backport import sysconfig + +try: + callable = callable +except NameError: # pragma: no cover + from collections.abc import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode + fsdecode = os.fsdecode +except AttributeError: # pragma: no cover + # Issue #99: on some systems (e.g. containerised), + # sys.getfilesystemencoding() returns None, and we need a real value, + # so fall back to utf-8. From the CPython 2.7 docs relating to Unix and + # sys.getfilesystemencoding(): the return value is "the user’s preference + # according to the result of nl_langinfo(CODESET), or None if the + # nl_langinfo(CODESET) failed." + _fsencoding = sys.getfilesystemencoding() or 'utf-8' + if _fsencoding == 'mbcs': + _fserrors = 'strict' + else: + _fserrors = 'surrogateescape' + + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, text_type): + return filename.encode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + + def fsdecode(filename): + if isinstance(filename, text_type): + return filename + elif isinstance(filename, bytes): + return filename.decode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + +try: + from tokenize import detect_encoding +except ImportError: # pragma: no cover + from codecs import BOM_UTF8, lookup + import re + + cookie_re = re.compile(r"coding[:=]\s*([-\w.]+)") + + def _get_normal_name(orig_enc): + """Imitates get_normal_name in tokenizer.c.""" + # Only care about the first 12 characters. + enc = orig_enc[:12].lower().replace("_", "-") + if enc == "utf-8" or enc.startswith("utf-8-"): + return "utf-8" + if enc in ("latin-1", "iso-8859-1", "iso-latin-1") or \ + enc.startswith(("latin-1-", "iso-8859-1-", "iso-latin-1-")): + return "iso-8859-1" + return orig_enc + + def detect_encoding(readline): + """ + The detect_encoding() function is used to detect the encoding that should + be used to decode a Python source file. It requires one argument, readline, + in the same way as the tokenize() generator. + + It will call readline a maximum of twice, and return the encoding used + (as a string) and a list of any lines (left as bytes) it has read in. + + It detects the encoding from the presence of a utf-8 bom or an encoding + cookie as specified in pep-0263. If both a bom and a cookie are present, + but disagree, a SyntaxError will be raised. If the encoding cookie is an + invalid charset, raise a SyntaxError. Note that if a utf-8 bom is found, + 'utf-8-sig' is returned. + + If no encoding is specified, then the default of 'utf-8' will be returned. + """ + try: + filename = readline.__self__.name + except AttributeError: + filename = None + bom_found = False + encoding = None + default = 'utf-8' + def read_or_stop(): + try: + return readline() + except StopIteration: + return b'' + + def find_cookie(line): + try: + # Decode as UTF-8. Either the line is an encoding declaration, + # in which case it should be pure ASCII, or it must be UTF-8 + # per default encoding. + line_string = line.decode('utf-8') + except UnicodeDecodeError: + msg = "invalid or missing encoding declaration" + if filename is not None: + msg = '{} for {!r}'.format(msg, filename) + raise SyntaxError(msg) + + matches = cookie_re.findall(line_string) + if not matches: + return None + encoding = _get_normal_name(matches[0]) + try: + codec = lookup(encoding) + except LookupError: + # This behaviour mimics the Python interpreter + if filename is None: + msg = "unknown encoding: " + encoding + else: + msg = "unknown encoding for {!r}: {}".format(filename, + encoding) + raise SyntaxError(msg) + + if bom_found: + if codec.name != 'utf-8': + # This behaviour mimics the Python interpreter + if filename is None: + msg = 'encoding problem: utf-8' + else: + msg = 'encoding problem for {!r}: utf-8'.format(filename) + raise SyntaxError(msg) + encoding += '-sig' + return encoding + + first = read_or_stop() + if first.startswith(BOM_UTF8): + bom_found = True + first = first[3:] + default = 'utf-8-sig' + if not first: + return default, [] + + encoding = find_cookie(first) + if encoding: + return encoding, [first] + + second = read_or_stop() + if not second: + return default, [first] + + encoding = find_cookie(second) + if encoding: + return encoding, [first, second] + + return default, [first, second] + +# For converting & <-> & etc. +try: + from html import escape +except ImportError: + from cgi import escape +if sys.version_info[:2] < (3, 4): + unescape = HTMLParser().unescape +else: + from html import unescape + +try: + from collections import ChainMap +except ImportError: # pragma: no cover + from collections import MutableMapping + + try: + from reprlib import recursive_repr as _recursive_repr + except ImportError: + def _recursive_repr(fillvalue='...'): + ''' + Decorator to make a repr function return fillvalue for a recursive + call + ''' + + def decorating_function(user_function): + repr_running = set() + + def wrapper(self): + key = id(self), get_ident() + if key in repr_running: + return fillvalue + repr_running.add(key) + try: + result = user_function(self) + finally: + repr_running.discard(key) + return result + + # Can't use functools.wraps() here because of bootstrap issues + wrapper.__module__ = getattr(user_function, '__module__') + wrapper.__doc__ = getattr(user_function, '__doc__') + wrapper.__name__ = getattr(user_function, '__name__') + wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) + return wrapper + + return decorating_function + + class ChainMap(MutableMapping): + ''' A ChainMap groups multiple dicts (or other mappings) together + to create a single, updateable view. + + The underlying mappings are stored in a list. That list is public and can + accessed or updated using the *maps* attribute. There is no other state. + + Lookups search the underlying mappings successively until a key is found. + In contrast, writes, updates, and deletions only operate on the first + mapping. + + ''' + + def __init__(self, *maps): + '''Initialize a ChainMap by setting *maps* to the given mappings. + If no mappings are provided, a single empty dictionary is used. + + ''' + self.maps = list(maps) or [{}] # always at least one map + + def __missing__(self, key): + raise KeyError(key) + + def __getitem__(self, key): + for mapping in self.maps: + try: + return mapping[key] # can't use 'key in mapping' with defaultdict + except KeyError: + pass + return self.__missing__(key) # support subclasses that define __missing__ + + def get(self, key, default=None): + return self[key] if key in self else default + + def __len__(self): + return len(set().union(*self.maps)) # reuses stored hash values if possible + + def __iter__(self): + return iter(set().union(*self.maps)) + + def __contains__(self, key): + return any(key in m for m in self.maps) + + def __bool__(self): + return any(self.maps) + + @_recursive_repr() + def __repr__(self): + return '{0.__class__.__name__}({1})'.format( + self, ', '.join(map(repr, self.maps))) + + @classmethod + def fromkeys(cls, iterable, *args): + 'Create a ChainMap with a single dict created from the iterable.' + return cls(dict.fromkeys(iterable, *args)) + + def copy(self): + 'New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]' + return self.__class__(self.maps[0].copy(), *self.maps[1:]) + + __copy__ = copy + + def new_child(self): # like Django's Context.push() + 'New ChainMap with a new dict followed by all previous maps.' + return self.__class__({}, *self.maps) + + @property + def parents(self): # like Django's Context.pop() + 'New ChainMap from maps[1:].' + return self.__class__(*self.maps[1:]) + + def __setitem__(self, key, value): + self.maps[0][key] = value + + def __delitem__(self, key): + try: + del self.maps[0][key] + except KeyError: + raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + + def popitem(self): + 'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.' + try: + return self.maps[0].popitem() + except KeyError: + raise KeyError('No keys found in the first mapping.') + + def pop(self, key, *args): + 'Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].' + try: + return self.maps[0].pop(key, *args) + except KeyError: + raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + + def clear(self): + 'Clear maps[0], leaving maps[1:] intact.' + self.maps[0].clear() + +try: + from importlib.util import cache_from_source # Python >= 3.4 +except ImportError: # pragma: no cover + try: + from imp import cache_from_source + except ImportError: # pragma: no cover + def cache_from_source(path, debug_override=None): + assert path.endswith('.py') + if debug_override is None: + debug_override = __debug__ + if debug_override: + suffix = 'c' + else: + suffix = 'o' + return path + suffix + +try: + from collections import OrderedDict +except ImportError: # pragma: no cover +## {{{ http://code.activestate.com/recipes/576693/ (r9) +# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy. +# Passes Python2.7's test suite and incorporates all the latest updates. + try: + from thread import get_ident as _get_ident + except ImportError: + from dummy_thread import get_ident as _get_ident + + try: + from _abcoll import KeysView, ValuesView, ItemsView + except ImportError: + pass + + + class OrderedDict(dict): + 'Dictionary that remembers insertion order' + # An inherited dict maps keys to values. + # The inherited dict provides __getitem__, __len__, __contains__, and get. + # The remaining methods are order-aware. + # Big-O running times for all methods are the same as for regular dictionaries. + + # The internal self.__map dictionary maps keys to links in a doubly linked list. + # The circular doubly linked list starts and ends with a sentinel element. + # The sentinel element never gets deleted (this simplifies the algorithm). + # Each link is stored as a list of length three: [PREV, NEXT, KEY]. + + def __init__(self, *args, **kwds): + '''Initialize an ordered dictionary. Signature is the same as for + regular dictionaries, but keyword arguments are not recommended + because their insertion order is arbitrary. + + ''' + if len(args) > 1: + raise TypeError('expected at most 1 arguments, got %d' % len(args)) + try: + self.__root + except AttributeError: + self.__root = root = [] # sentinel node + root[:] = [root, root, None] + self.__map = {} + self.__update(*args, **kwds) + + def __setitem__(self, key, value, dict_setitem=dict.__setitem__): + 'od.__setitem__(i, y) <==> od[i]=y' + # Setting a new item creates a new link which goes at the end of the linked + # list, and the inherited dictionary is updated with the new key/value pair. + if key not in self: + root = self.__root + last = root[0] + last[1] = root[0] = self.__map[key] = [last, root, key] + dict_setitem(self, key, value) + + def __delitem__(self, key, dict_delitem=dict.__delitem__): + 'od.__delitem__(y) <==> del od[y]' + # Deleting an existing item uses self.__map to find the link which is + # then removed by updating the links in the predecessor and successor nodes. + dict_delitem(self, key) + link_prev, link_next, key = self.__map.pop(key) + link_prev[1] = link_next + link_next[0] = link_prev + + def __iter__(self): + 'od.__iter__() <==> iter(od)' + root = self.__root + curr = root[1] + while curr is not root: + yield curr[2] + curr = curr[1] + + def __reversed__(self): + 'od.__reversed__() <==> reversed(od)' + root = self.__root + curr = root[0] + while curr is not root: + yield curr[2] + curr = curr[0] + + def clear(self): + 'od.clear() -> None. Remove all items from od.' + try: + for node in self.__map.itervalues(): + del node[:] + root = self.__root + root[:] = [root, root, None] + self.__map.clear() + except AttributeError: + pass + dict.clear(self) + + def popitem(self, last=True): + '''od.popitem() -> (k, v), return and remove a (key, value) pair. + Pairs are returned in LIFO order if last is true or FIFO order if false. + + ''' + if not self: + raise KeyError('dictionary is empty') + root = self.__root + if last: + link = root[0] + link_prev = link[0] + link_prev[1] = root + root[0] = link_prev + else: + link = root[1] + link_next = link[1] + root[1] = link_next + link_next[0] = root + key = link[2] + del self.__map[key] + value = dict.pop(self, key) + return key, value + + # -- the following methods do not depend on the internal structure -- + + def keys(self): + 'od.keys() -> list of keys in od' + return list(self) + + def values(self): + 'od.values() -> list of values in od' + return [self[key] for key in self] + + def items(self): + 'od.items() -> list of (key, value) pairs in od' + return [(key, self[key]) for key in self] + + def iterkeys(self): + 'od.iterkeys() -> an iterator over the keys in od' + return iter(self) + + def itervalues(self): + 'od.itervalues -> an iterator over the values in od' + for k in self: + yield self[k] + + def iteritems(self): + 'od.iteritems -> an iterator over the (key, value) items in od' + for k in self: + yield (k, self[k]) + + def update(*args, **kwds): + '''od.update(E, **F) -> None. Update od from dict/iterable E and F. + + If E is a dict instance, does: for k in E: od[k] = E[k] + If E has a .keys() method, does: for k in E.keys(): od[k] = E[k] + Or if E is an iterable of items, does: for k, v in E: od[k] = v + In either case, this is followed by: for k, v in F.items(): od[k] = v + + ''' + if len(args) > 2: + raise TypeError('update() takes at most 2 positional ' + 'arguments (%d given)' % (len(args),)) + elif not args: + raise TypeError('update() takes at least 1 argument (0 given)') + self = args[0] + # Make progressively weaker assumptions about "other" + other = () + if len(args) == 2: + other = args[1] + if isinstance(other, dict): + for key in other: + self[key] = other[key] + elif hasattr(other, 'keys'): + for key in other.keys(): + self[key] = other[key] + else: + for key, value in other: + self[key] = value + for key, value in kwds.items(): + self[key] = value + + __update = update # let subclasses override update without breaking __init__ + + __marker = object() + + def pop(self, key, default=__marker): + '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. + If key is not found, d is returned if given, otherwise KeyError is raised. + + ''' + if key in self: + result = self[key] + del self[key] + return result + if default is self.__marker: + raise KeyError(key) + return default + + def setdefault(self, key, default=None): + 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' + if key in self: + return self[key] + self[key] = default + return default + + def __repr__(self, _repr_running=None): + 'od.__repr__() <==> repr(od)' + if not _repr_running: _repr_running = {} + call_key = id(self), _get_ident() + if call_key in _repr_running: + return '...' + _repr_running[call_key] = 1 + try: + if not self: + return '%s()' % (self.__class__.__name__,) + return '%s(%r)' % (self.__class__.__name__, self.items()) + finally: + del _repr_running[call_key] + + def __reduce__(self): + 'Return state information for pickling' + items = [[k, self[k]] for k in self] + inst_dict = vars(self).copy() + for k in vars(OrderedDict()): + inst_dict.pop(k, None) + if inst_dict: + return (self.__class__, (items,), inst_dict) + return self.__class__, (items,) + + def copy(self): + 'od.copy() -> a shallow copy of od' + return self.__class__(self) + + @classmethod + def fromkeys(cls, iterable, value=None): + '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S + and values equal to v (which defaults to None). + + ''' + d = cls() + for key in iterable: + d[key] = value + return d + + def __eq__(self, other): + '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive + while comparison to a regular mapping is order-insensitive. + + ''' + if isinstance(other, OrderedDict): + return len(self)==len(other) and self.items() == other.items() + return dict.__eq__(self, other) + + def __ne__(self, other): + return not self == other + + # -- the following methods are only used in Python 2.7 -- + + def viewkeys(self): + "od.viewkeys() -> a set-like object providing a view on od's keys" + return KeysView(self) + + def viewvalues(self): + "od.viewvalues() -> an object providing a view on od's values" + return ValuesView(self) + + def viewitems(self): + "od.viewitems() -> a set-like object providing a view on od's items" + return ItemsView(self) + +try: + from logging.config import BaseConfigurator, valid_ident +except ImportError: # pragma: no cover + IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I) + + + def valid_ident(s): + m = IDENTIFIER.match(s) + if not m: + raise ValueError('Not a valid Python identifier: %r' % s) + return True + + + # The ConvertingXXX classes are wrappers around standard Python containers, + # and they serve to convert any suitable values in the container. The + # conversion converts base dicts, lists and tuples to their wrapped + # equivalents, whereas strings which match a conversion format are converted + # appropriately. + # + # Each wrapper should have a configurator attribute holding the actual + # configurator to use for conversion. + + class ConvertingDict(dict): + """A converting dictionary wrapper.""" + + def __getitem__(self, key): + value = dict.__getitem__(self, key) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def get(self, key, default=None): + value = dict.get(self, key, default) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def pop(self, key, default=None): + value = dict.pop(self, key, default) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + class ConvertingList(list): + """A converting list wrapper.""" + def __getitem__(self, key): + value = list.__getitem__(self, key) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def pop(self, idx=-1): + value = list.pop(self, idx) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + return result + + class ConvertingTuple(tuple): + """A converting tuple wrapper.""" + def __getitem__(self, key): + value = tuple.__getitem__(self, key) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + class BaseConfigurator(object): + """ + The configurator base class which defines some useful defaults. + """ + + CONVERT_PATTERN = re.compile(r'^(?P[a-z]+)://(?P.*)$') + + WORD_PATTERN = re.compile(r'^\s*(\w+)\s*') + DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*') + INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*') + DIGIT_PATTERN = re.compile(r'^\d+$') + + value_converters = { + 'ext' : 'ext_convert', + 'cfg' : 'cfg_convert', + } + + # We might want to use a different one, e.g. importlib + importer = staticmethod(__import__) + + def __init__(self, config): + self.config = ConvertingDict(config) + self.config.configurator = self + + def resolve(self, s): + """ + Resolve strings to objects using standard import and attribute + syntax. + """ + name = s.split('.') + used = name.pop(0) + try: + found = self.importer(used) + for frag in name: + used += '.' + frag + try: + found = getattr(found, frag) + except AttributeError: + self.importer(used) + found = getattr(found, frag) + return found + except ImportError: + e, tb = sys.exc_info()[1:] + v = ValueError('Cannot resolve %r: %s' % (s, e)) + v.__cause__, v.__traceback__ = e, tb + raise v + + def ext_convert(self, value): + """Default converter for the ext:// protocol.""" + return self.resolve(value) + + def cfg_convert(self, value): + """Default converter for the cfg:// protocol.""" + rest = value + m = self.WORD_PATTERN.match(rest) + if m is None: + raise ValueError("Unable to convert %r" % value) + else: + rest = rest[m.end():] + d = self.config[m.groups()[0]] + #print d, rest + while rest: + m = self.DOT_PATTERN.match(rest) + if m: + d = d[m.groups()[0]] + else: + m = self.INDEX_PATTERN.match(rest) + if m: + idx = m.groups()[0] + if not self.DIGIT_PATTERN.match(idx): + d = d[idx] + else: + try: + n = int(idx) # try as number first (most likely) + d = d[n] + except TypeError: + d = d[idx] + if m: + rest = rest[m.end():] + else: + raise ValueError('Unable to convert ' + '%r at %r' % (value, rest)) + #rest should be empty + return d + + def convert(self, value): + """ + Convert values to an appropriate type. dicts, lists and tuples are + replaced by their converting alternatives. Strings are checked to + see if they have a conversion format and are converted if they do. + """ + if not isinstance(value, ConvertingDict) and isinstance(value, dict): + value = ConvertingDict(value) + value.configurator = self + elif not isinstance(value, ConvertingList) and isinstance(value, list): + value = ConvertingList(value) + value.configurator = self + elif not isinstance(value, ConvertingTuple) and\ + isinstance(value, tuple): + value = ConvertingTuple(value) + value.configurator = self + elif isinstance(value, string_types): + m = self.CONVERT_PATTERN.match(value) + if m: + d = m.groupdict() + prefix = d['prefix'] + converter = self.value_converters.get(prefix, None) + if converter: + suffix = d['suffix'] + converter = getattr(self, converter) + value = converter(suffix) + return value + + def configure_custom(self, config): + """Configure an object with a user-supplied factory.""" + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + kwargs = dict([(k, config[k]) for k in config if valid_ident(k)]) + result = c(**kwargs) + if props: + for name, value in props.items(): + setattr(result, name, value) + return result + + def as_tuple(self, value): + """Utility function which converts lists to tuples.""" + if isinstance(value, list): + value = tuple(value) + return value diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/database.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/database.py new file mode 100644 index 0000000..0a90c30 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/database.py @@ -0,0 +1,1339 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2017 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""PEP 376 implementation.""" + +from __future__ import unicode_literals + +import base64 +import codecs +import contextlib +import hashlib +import logging +import os +import posixpath +import sys +import zipimport + +from . import DistlibException, resources +from .compat import StringIO +from .version import get_scheme, UnsupportedVersionError +from .metadata import (Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME) +from .util import (parse_requirement, cached_property, parse_name_and_version, + read_exports, write_exports, CSVReader, CSVWriter) + + +__all__ = ['Distribution', 'BaseInstalledDistribution', + 'InstalledDistribution', 'EggInfoDistribution', + 'DistributionPath'] + + +logger = logging.getLogger(__name__) + +EXPORTS_FILENAME = 'pydist-exports.json' +COMMANDS_FILENAME = 'pydist-commands.json' + +DIST_FILES = ('INSTALLER', METADATA_FILENAME, 'RECORD', 'REQUESTED', + 'RESOURCES', EXPORTS_FILENAME, 'SHARED') + +DISTINFO_EXT = '.dist-info' + + +class _Cache(object): + """ + A simple cache mapping names and .dist-info paths to distributions + """ + def __init__(self): + """ + Initialise an instance. There is normally one for each DistributionPath. + """ + self.name = {} + self.path = {} + self.generated = False + + def clear(self): + """ + Clear the cache, setting it to its initial state. + """ + self.name.clear() + self.path.clear() + self.generated = False + + def add(self, dist): + """ + Add a distribution to the cache. + :param dist: The distribution to add. + """ + if dist.path not in self.path: + self.path[dist.path] = dist + self.name.setdefault(dist.key, []).append(dist) + + +class DistributionPath(object): + """ + Represents a set of distributions installed on a path (typically sys.path). + """ + def __init__(self, path=None, include_egg=False): + """ + Create an instance from a path, optionally including legacy (distutils/ + setuptools/distribute) distributions. + :param path: The path to use, as a list of directories. If not specified, + sys.path is used. + :param include_egg: If True, this instance will look for and return legacy + distributions as well as those based on PEP 376. + """ + if path is None: + path = sys.path + self.path = path + self._include_dist = True + self._include_egg = include_egg + + self._cache = _Cache() + self._cache_egg = _Cache() + self._cache_enabled = True + self._scheme = get_scheme('default') + + def _get_cache_enabled(self): + return self._cache_enabled + + def _set_cache_enabled(self, value): + self._cache_enabled = value + + cache_enabled = property(_get_cache_enabled, _set_cache_enabled) + + def clear_cache(self): + """ + Clears the internal cache. + """ + self._cache.clear() + self._cache_egg.clear() + + + def _yield_distributions(self): + """ + Yield .dist-info and/or .egg(-info) distributions. + """ + # We need to check if we've seen some resources already, because on + # some Linux systems (e.g. some Debian/Ubuntu variants) there are + # symlinks which alias other files in the environment. + seen = set() + for path in self.path: + finder = resources.finder_for_path(path) + if finder is None: + continue + r = finder.find('') + if not r or not r.is_container: + continue + rset = sorted(r.resources) + for entry in rset: + r = finder.find(entry) + if not r or r.path in seen: + continue + if self._include_dist and entry.endswith(DISTINFO_EXT): + possible_filenames = [METADATA_FILENAME, + WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME] + for metadata_filename in possible_filenames: + metadata_path = posixpath.join(entry, metadata_filename) + pydist = finder.find(metadata_path) + if pydist: + break + else: + continue + + with contextlib.closing(pydist.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + logger.debug('Found %s', r.path) + seen.add(r.path) + yield new_dist_class(r.path, metadata=metadata, + env=self) + elif self._include_egg and entry.endswith(('.egg-info', + '.egg')): + logger.debug('Found %s', r.path) + seen.add(r.path) + yield old_dist_class(r.path, self) + + def _generate_cache(self): + """ + Scan the path for distributions and populate the cache with + those that are found. + """ + gen_dist = not self._cache.generated + gen_egg = self._include_egg and not self._cache_egg.generated + if gen_dist or gen_egg: + for dist in self._yield_distributions(): + if isinstance(dist, InstalledDistribution): + self._cache.add(dist) + else: + self._cache_egg.add(dist) + + if gen_dist: + self._cache.generated = True + if gen_egg: + self._cache_egg.generated = True + + @classmethod + def distinfo_dirname(cls, name, version): + """ + The *name* and *version* parameters are converted into their + filename-escaped form, i.e. any ``'-'`` characters are replaced + with ``'_'`` other than the one in ``'dist-info'`` and the one + separating the name from the version number. + + :parameter name: is converted to a standard distribution name by replacing + any runs of non- alphanumeric characters with a single + ``'-'``. + :type name: string + :parameter version: is converted to a standard version string. Spaces + become dots, and all other non-alphanumeric characters + (except dots) become dashes, with runs of multiple + dashes condensed to a single dash. + :type version: string + :returns: directory name + :rtype: string""" + name = name.replace('-', '_') + return '-'.join([name, version]) + DISTINFO_EXT + + def get_distributions(self): + """ + Provides an iterator that looks for distributions and returns + :class:`InstalledDistribution` or + :class:`EggInfoDistribution` instances for each one of them. + + :rtype: iterator of :class:`InstalledDistribution` and + :class:`EggInfoDistribution` instances + """ + if not self._cache_enabled: + for dist in self._yield_distributions(): + yield dist + else: + self._generate_cache() + + for dist in self._cache.path.values(): + yield dist + + if self._include_egg: + for dist in self._cache_egg.path.values(): + yield dist + + def get_distribution(self, name): + """ + Looks for a named distribution on the path. + + This function only returns the first result found, as no more than one + value is expected. If nothing is found, ``None`` is returned. + + :rtype: :class:`InstalledDistribution`, :class:`EggInfoDistribution` + or ``None`` + """ + result = None + name = name.lower() + if not self._cache_enabled: + for dist in self._yield_distributions(): + if dist.key == name: + result = dist + break + else: + self._generate_cache() + + if name in self._cache.name: + result = self._cache.name[name][0] + elif self._include_egg and name in self._cache_egg.name: + result = self._cache_egg.name[name][0] + return result + + def provides_distribution(self, name, version=None): + """ + Iterates over all distributions to find which distributions provide *name*. + If a *version* is provided, it will be used to filter the results. + + This function only returns the first result found, since no more than + one values are expected. If the directory is not found, returns ``None``. + + :parameter version: a version specifier that indicates the version + required, conforming to the format in ``PEP-345`` + + :type name: string + :type version: string + """ + matcher = None + if version is not None: + try: + matcher = self._scheme.matcher('%s (%s)' % (name, version)) + except ValueError: + raise DistlibException('invalid name or version: %r, %r' % + (name, version)) + + for dist in self.get_distributions(): + # We hit a problem on Travis where enum34 was installed and doesn't + # have a provides attribute ... + if not hasattr(dist, 'provides'): + logger.debug('No "provides": %s', dist) + else: + provided = dist.provides + + for p in provided: + p_name, p_ver = parse_name_and_version(p) + if matcher is None: + if p_name == name: + yield dist + break + else: + if p_name == name and matcher.match(p_ver): + yield dist + break + + def get_file_path(self, name, relative_path): + """ + Return the path to a resource file. + """ + dist = self.get_distribution(name) + if dist is None: + raise LookupError('no distribution named %r found' % name) + return dist.get_resource_path(relative_path) + + def get_exported_entries(self, category, name=None): + """ + Return all of the exported entries in a particular category. + + :param category: The category to search for entries. + :param name: If specified, only entries with that name are returned. + """ + for dist in self.get_distributions(): + r = dist.exports + if category in r: + d = r[category] + if name is not None: + if name in d: + yield d[name] + else: + for v in d.values(): + yield v + + +class Distribution(object): + """ + A base class for distributions, whether installed or from indexes. + Either way, it must have some metadata, so that's all that's needed + for construction. + """ + + build_time_dependency = False + """ + Set to True if it's known to be only a build-time dependency (i.e. + not needed after installation). + """ + + requested = False + """A boolean that indicates whether the ``REQUESTED`` metadata file is + present (in other words, whether the package was installed by user + request or it was installed as a dependency).""" + + def __init__(self, metadata): + """ + Initialise an instance. + :param metadata: The instance of :class:`Metadata` describing this + distribution. + """ + self.metadata = metadata + self.name = metadata.name + self.key = self.name.lower() # for case-insensitive comparisons + self.version = metadata.version + self.locator = None + self.digest = None + self.extras = None # additional features requested + self.context = None # environment marker overrides + self.download_urls = set() + self.digests = {} + + @property + def source_url(self): + """ + The source archive download URL for this distribution. + """ + return self.metadata.source_url + + download_url = source_url # Backward compatibility + + @property + def name_and_version(self): + """ + A utility property which displays the name and version in parentheses. + """ + return '%s (%s)' % (self.name, self.version) + + @property + def provides(self): + """ + A set of distribution names and versions provided by this distribution. + :return: A set of "name (version)" strings. + """ + plist = self.metadata.provides + s = '%s (%s)' % (self.name, self.version) + if s not in plist: + plist.append(s) + return plist + + def _get_requirements(self, req_attr): + md = self.metadata + logger.debug('Getting requirements from metadata %r', md.todict()) + reqts = getattr(md, req_attr) + return set(md.get_requirements(reqts, extras=self.extras, + env=self.context)) + + @property + def run_requires(self): + return self._get_requirements('run_requires') + + @property + def meta_requires(self): + return self._get_requirements('meta_requires') + + @property + def build_requires(self): + return self._get_requirements('build_requires') + + @property + def test_requires(self): + return self._get_requirements('test_requires') + + @property + def dev_requires(self): + return self._get_requirements('dev_requires') + + def matches_requirement(self, req): + """ + Say if this instance matches (fulfills) a requirement. + :param req: The requirement to match. + :rtype req: str + :return: True if it matches, else False. + """ + # Requirement may contain extras - parse to lose those + # from what's passed to the matcher + r = parse_requirement(req) + scheme = get_scheme(self.metadata.scheme) + try: + matcher = scheme.matcher(r.requirement) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + result = False + for p in self.provides: + p_name, p_ver = parse_name_and_version(p) + if p_name != name: + continue + try: + result = matcher.match(p_ver) + break + except UnsupportedVersionError: + pass + return result + + def __repr__(self): + """ + Return a textual representation of this instance, + """ + if self.source_url: + suffix = ' [%s]' % self.source_url + else: + suffix = '' + return '' % (self.name, self.version, suffix) + + def __eq__(self, other): + """ + See if this distribution is the same as another. + :param other: The distribution to compare with. To be equal to one + another. distributions must have the same type, name, + version and source_url. + :return: True if it is the same, else False. + """ + if type(other) is not type(self): + result = False + else: + result = (self.name == other.name and + self.version == other.version and + self.source_url == other.source_url) + return result + + def __hash__(self): + """ + Compute hash in a way which matches the equality test. + """ + return hash(self.name) + hash(self.version) + hash(self.source_url) + + +class BaseInstalledDistribution(Distribution): + """ + This is the base class for installed distributions (whether PEP 376 or + legacy). + """ + + hasher = None + + def __init__(self, metadata, path, env=None): + """ + Initialise an instance. + :param metadata: An instance of :class:`Metadata` which describes the + distribution. This will normally have been initialised + from a metadata file in the ``path``. + :param path: The path of the ``.dist-info`` or ``.egg-info`` + directory for the distribution. + :param env: This is normally the :class:`DistributionPath` + instance where this distribution was found. + """ + super(BaseInstalledDistribution, self).__init__(metadata) + self.path = path + self.dist_path = env + + def get_hash(self, data, hasher=None): + """ + Get the hash of some data, using a particular hash algorithm, if + specified. + + :param data: The data to be hashed. + :type data: bytes + :param hasher: The name of a hash implementation, supported by hashlib, + or ``None``. Examples of valid values are ``'sha1'``, + ``'sha224'``, ``'sha384'``, '``sha256'``, ``'md5'`` and + ``'sha512'``. If no hasher is specified, the ``hasher`` + attribute of the :class:`InstalledDistribution` instance + is used. If the hasher is determined to be ``None``, MD5 + is used as the hashing algorithm. + :returns: The hash of the data. If a hasher was explicitly specified, + the returned hash will be prefixed with the specified hasher + followed by '='. + :rtype: str + """ + if hasher is None: + hasher = self.hasher + if hasher is None: + hasher = hashlib.md5 + prefix = '' + else: + hasher = getattr(hashlib, hasher) + prefix = '%s=' % self.hasher + digest = hasher(data).digest() + digest = base64.urlsafe_b64encode(digest).rstrip(b'=').decode('ascii') + return '%s%s' % (prefix, digest) + + +class InstalledDistribution(BaseInstalledDistribution): + """ + Created with the *path* of the ``.dist-info`` directory provided to the + constructor. It reads the metadata contained in ``pydist.json`` when it is + instantiated., or uses a passed in Metadata instance (useful for when + dry-run mode is being used). + """ + + hasher = 'sha256' + + def __init__(self, path, metadata=None, env=None): + self.modules = [] + self.finder = finder = resources.finder_for_path(path) + if finder is None: + raise ValueError('finder unavailable for %s' % path) + if env and env._cache_enabled and path in env._cache.path: + metadata = env._cache.path[path].metadata + elif metadata is None: + r = finder.find(METADATA_FILENAME) + # Temporary - for Wheel 0.23 support + if r is None: + r = finder.find(WHEEL_METADATA_FILENAME) + # Temporary - for legacy support + if r is None: + r = finder.find(LEGACY_METADATA_FILENAME) + if r is None: + raise ValueError('no %s found in %s' % (METADATA_FILENAME, + path)) + with contextlib.closing(r.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + + super(InstalledDistribution, self).__init__(metadata, path, env) + + if env and env._cache_enabled: + env._cache.add(self) + + r = finder.find('REQUESTED') + self.requested = r is not None + p = os.path.join(path, 'top_level.txt') + if os.path.exists(p): + with open(p, 'rb') as f: + data = f.read().decode('utf-8') + self.modules = data.splitlines() + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def _get_records(self): + """ + Get the list of installed files for the distribution + :return: A list of tuples of path, hash and size. Note that hash and + size might be ``None`` for some entries. The path is exactly + as stored in the file (which is as in PEP 376). + """ + results = [] + r = self.get_distinfo_resource('RECORD') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as record_reader: + # Base location is parent dir of .dist-info dir + #base_location = os.path.dirname(self.path) + #base_location = os.path.abspath(base_location) + for row in record_reader: + missing = [None for i in range(len(row), 3)] + path, checksum, size = row + missing + #if not os.path.isabs(path): + # path = path.replace('/', os.sep) + # path = os.path.join(base_location, path) + results.append((path, checksum, size)) + return results + + @cached_property + def exports(self): + """ + Return the information exported by this distribution. + :return: A dictionary of exports, mapping an export category to a dict + of :class:`ExportEntry` instances describing the individual + export entries, and keyed by name. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + result = self.read_exports() + return result + + def read_exports(self): + """ + Read exports data from a file in .ini format. + + :return: A dictionary of exports, mapping an export category to a list + of :class:`ExportEntry` instances describing the individual + export entries. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + with contextlib.closing(r.as_stream()) as stream: + result = read_exports(stream) + return result + + def write_exports(self, exports): + """ + Write a dictionary of exports to a file in .ini format. + :param exports: A dictionary of exports, mapping an export category to + a list of :class:`ExportEntry` instances describing the + individual export entries. + """ + rf = self.get_distinfo_file(EXPORTS_FILENAME) + with open(rf, 'w') as f: + write_exports(exports, f) + + def get_resource_path(self, relative_path): + """ + NOTE: This API may change in the future. + + Return the absolute path to a resource file with the given relative + path. + + :param relative_path: The path, relative to .dist-info, of the resource + of interest. + :return: The absolute path where the resource is to be found. + """ + r = self.get_distinfo_resource('RESOURCES') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as resources_reader: + for relative, destination in resources_reader: + if relative == relative_path: + return destination + raise KeyError('no resource file with relative path %r ' + 'is installed' % relative_path) + + def list_installed_files(self): + """ + Iterates over the ``RECORD`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: iterator of (path, hash, size) + """ + for result in self._get_records(): + yield result + + def write_installed_files(self, paths, prefix, dry_run=False): + """ + Writes the ``RECORD`` file, using the ``paths`` iterable passed in. Any + existing ``RECORD`` file is silently overwritten. + + prefix is used to determine when to write absolute paths. + """ + prefix = os.path.join(prefix, '') + base = os.path.dirname(self.path) + base_under_prefix = base.startswith(prefix) + base = os.path.join(base, '') + record_path = self.get_distinfo_file('RECORD') + logger.info('creating %s', record_path) + if dry_run: + return None + with CSVWriter(record_path) as writer: + for path in paths: + if os.path.isdir(path) or path.endswith(('.pyc', '.pyo')): + # do not put size and hash, as in PEP-376 + hash_value = size = '' + else: + size = '%d' % os.path.getsize(path) + with open(path, 'rb') as fp: + hash_value = self.get_hash(fp.read()) + if path.startswith(base) or (base_under_prefix and + path.startswith(prefix)): + path = os.path.relpath(path, base) + writer.writerow((path, hash_value, size)) + + # add the RECORD file itself + if record_path.startswith(base): + record_path = os.path.relpath(record_path, base) + writer.writerow((record_path, '', '')) + return record_path + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + base = os.path.dirname(self.path) + record_path = self.get_distinfo_file('RECORD') + for path, hash_value, size in self.list_installed_files(): + if not os.path.isabs(path): + path = os.path.join(base, path) + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + elif os.path.isfile(path): + actual_size = str(os.path.getsize(path)) + if size and actual_size != size: + mismatches.append((path, 'size', size, actual_size)) + elif hash_value: + if '=' in hash_value: + hasher = hash_value.split('=', 1)[0] + else: + hasher = None + + with open(path, 'rb') as f: + actual_hash = self.get_hash(f.read(), hasher) + if actual_hash != hash_value: + mismatches.append((path, 'hash', hash_value, actual_hash)) + return mismatches + + @cached_property + def shared_locations(self): + """ + A dictionary of shared locations whose keys are in the set 'prefix', + 'purelib', 'platlib', 'scripts', 'headers', 'data' and 'namespace'. + The corresponding value is the absolute path of that category for + this distribution, and takes into account any paths selected by the + user at installation time (e.g. via command-line arguments). In the + case of the 'namespace' key, this would be a list of absolute paths + for the roots of namespace packages in this distribution. + + The first time this property is accessed, the relevant information is + read from the SHARED file in the .dist-info directory. + """ + result = {} + shared_path = os.path.join(self.path, 'SHARED') + if os.path.isfile(shared_path): + with codecs.open(shared_path, 'r', encoding='utf-8') as f: + lines = f.read().splitlines() + for line in lines: + key, value = line.split('=', 1) + if key == 'namespace': + result.setdefault(key, []).append(value) + else: + result[key] = value + return result + + def write_shared_locations(self, paths, dry_run=False): + """ + Write shared location information to the SHARED file in .dist-info. + :param paths: A dictionary as described in the documentation for + :meth:`shared_locations`. + :param dry_run: If True, the action is logged but no file is actually + written. + :return: The path of the file written to. + """ + shared_path = os.path.join(self.path, 'SHARED') + logger.info('creating %s', shared_path) + if dry_run: + return None + lines = [] + for key in ('prefix', 'lib', 'headers', 'scripts', 'data'): + path = paths[key] + if os.path.isdir(paths[key]): + lines.append('%s=%s' % (key, path)) + for ns in paths.get('namespace', ()): + lines.append('namespace=%s' % ns) + + with codecs.open(shared_path, 'w', encoding='utf-8') as f: + f.write('\n'.join(lines)) + return shared_path + + def get_distinfo_resource(self, path): + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + finder = resources.finder_for_path(self.path) + if finder is None: + raise DistlibException('Unable to get a finder for %s' % self.path) + return finder.find(path) + + def get_distinfo_file(self, path): + """ + Returns a path located under the ``.dist-info`` directory. Returns a + string representing the path. + + :parameter path: a ``'/'``-separated path relative to the + ``.dist-info`` directory or an absolute path; + If *path* is an absolute path and doesn't start + with the ``.dist-info`` directory path, + a :class:`DistlibException` is raised + :type path: str + :rtype: str + """ + # Check if it is an absolute path # XXX use relpath, add tests + if path.find(os.sep) >= 0: + # it's an absolute path? + distinfo_dirname, path = path.split(os.sep)[-2:] + if distinfo_dirname != self.path.split(os.sep)[-1]: + raise DistlibException( + 'dist-info file %r does not belong to the %r %s ' + 'distribution' % (path, self.name, self.version)) + + # The file must be relative + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + + return os.path.join(self.path, path) + + def list_distinfo_files(self): + """ + Iterates over the ``RECORD`` entries and returns paths for each line if + the path is pointing to a file located in the ``.dist-info`` directory + or one of its subdirectories. + + :returns: iterator of paths + """ + base = os.path.dirname(self.path) + for path, checksum, size in self._get_records(): + # XXX add separator or use real relpath algo + if not os.path.isabs(path): + path = os.path.join(base, path) + if path.startswith(self.path): + yield path + + def __eq__(self, other): + return (isinstance(other, InstalledDistribution) and + self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + + +class EggInfoDistribution(BaseInstalledDistribution): + """Created with the *path* of the ``.egg-info`` directory or file provided + to the constructor. It reads the metadata contained in the file itself, or + if the given path happens to be a directory, the metadata is read from the + file ``PKG-INFO`` under that directory.""" + + requested = True # as we have no way of knowing, assume it was + shared_locations = {} + + def __init__(self, path, env=None): + def set_name_and_version(s, n, v): + s.name = n + s.key = n.lower() # for case-insensitive comparisons + s.version = v + + self.path = path + self.dist_path = env + if env and env._cache_enabled and path in env._cache_egg.path: + metadata = env._cache_egg.path[path].metadata + set_name_and_version(self, metadata.name, metadata.version) + else: + metadata = self._get_metadata(path) + + # Need to be set before caching + set_name_and_version(self, metadata.name, metadata.version) + + if env and env._cache_enabled: + env._cache_egg.add(self) + super(EggInfoDistribution, self).__init__(metadata, path, env) + + def _get_metadata(self, path): + requires = None + + def parse_requires_data(data): + """Create a list of dependencies from a requires.txt file. + + *data*: the contents of a setuptools-produced requires.txt file. + """ + reqs = [] + lines = data.splitlines() + for line in lines: + line = line.strip() + if line.startswith('['): + logger.warning('Unexpected line: quitting requirement scan: %r', + line) + break + r = parse_requirement(line) + if not r: + logger.warning('Not recognised as a requirement: %r', line) + continue + if r.extras: + logger.warning('extra requirements in requires.txt are ' + 'not supported') + if not r.constraints: + reqs.append(r.name) + else: + cons = ', '.join('%s%s' % c for c in r.constraints) + reqs.append('%s (%s)' % (r.name, cons)) + return reqs + + def parse_requires_path(req_path): + """Create a list of dependencies from a requires.txt file. + + *req_path*: the path to a setuptools-produced requires.txt file. + """ + + reqs = [] + try: + with codecs.open(req_path, 'r', 'utf-8') as fp: + reqs = parse_requires_data(fp.read()) + except IOError: + pass + return reqs + + tl_path = tl_data = None + if path.endswith('.egg'): + if os.path.isdir(path): + p = os.path.join(path, 'EGG-INFO') + meta_path = os.path.join(p, 'PKG-INFO') + metadata = Metadata(path=meta_path, scheme='legacy') + req_path = os.path.join(p, 'requires.txt') + tl_path = os.path.join(p, 'top_level.txt') + requires = parse_requires_path(req_path) + else: + # FIXME handle the case where zipfile is not available + zipf = zipimport.zipimporter(path) + fileobj = StringIO( + zipf.get_data('EGG-INFO/PKG-INFO').decode('utf8')) + metadata = Metadata(fileobj=fileobj, scheme='legacy') + try: + data = zipf.get_data('EGG-INFO/requires.txt') + tl_data = zipf.get_data('EGG-INFO/top_level.txt').decode('utf-8') + requires = parse_requires_data(data.decode('utf-8')) + except IOError: + requires = None + elif path.endswith('.egg-info'): + if os.path.isdir(path): + req_path = os.path.join(path, 'requires.txt') + requires = parse_requires_path(req_path) + path = os.path.join(path, 'PKG-INFO') + tl_path = os.path.join(path, 'top_level.txt') + metadata = Metadata(path=path, scheme='legacy') + else: + raise DistlibException('path must end with .egg-info or .egg, ' + 'got %r' % path) + + if requires: + metadata.add_requirements(requires) + # look for top-level modules in top_level.txt, if present + if tl_data is None: + if tl_path is not None and os.path.exists(tl_path): + with open(tl_path, 'rb') as f: + tl_data = f.read().decode('utf-8') + if not tl_data: + tl_data = [] + else: + tl_data = tl_data.splitlines() + self.modules = tl_data + return metadata + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + for path, _, _ in self.list_installed_files(): + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + return mismatches + + def list_installed_files(self): + """ + Iterates over the ``installed-files.txt`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: a list of (path, hash, size) + """ + + def _md5(path): + f = open(path, 'rb') + try: + content = f.read() + finally: + f.close() + return hashlib.md5(content).hexdigest() + + def _size(path): + return os.stat(path).st_size + + record_path = os.path.join(self.path, 'installed-files.txt') + result = [] + if os.path.exists(record_path): + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + p = os.path.normpath(os.path.join(self.path, line)) + # "./" is present as a marker between installed files + # and installation metadata files + if not os.path.exists(p): + logger.warning('Non-existent file: %s', p) + if p.endswith(('.pyc', '.pyo')): + continue + #otherwise fall through and fail + if not os.path.isdir(p): + result.append((p, _md5(p), _size(p))) + result.append((record_path, None, None)) + return result + + def list_distinfo_files(self, absolute=False): + """ + Iterates over the ``installed-files.txt`` entries and returns paths for + each line if the path is pointing to a file located in the + ``.egg-info`` directory or one of its subdirectories. + + :parameter absolute: If *absolute* is ``True``, each returned path is + transformed into a local absolute path. Otherwise the + raw value from ``installed-files.txt`` is returned. + :type absolute: boolean + :returns: iterator of paths + """ + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + skip = True + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line == './': + skip = False + continue + if not skip: + p = os.path.normpath(os.path.join(self.path, line)) + if p.startswith(self.path): + if absolute: + yield p + else: + yield line + + def __eq__(self, other): + return (isinstance(other, EggInfoDistribution) and + self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + +new_dist_class = InstalledDistribution +old_dist_class = EggInfoDistribution + + +class DependencyGraph(object): + """ + Represents a dependency graph between distributions. + + The dependency relationships are stored in an ``adjacency_list`` that maps + distributions to a list of ``(other, label)`` tuples where ``other`` + is a distribution and the edge is labeled with ``label`` (i.e. the version + specifier, if such was provided). Also, for more efficient traversal, for + every distribution ``x``, a list of predecessors is kept in + ``reverse_list[x]``. An edge from distribution ``a`` to + distribution ``b`` means that ``a`` depends on ``b``. If any missing + dependencies are found, they are stored in ``missing``, which is a + dictionary that maps distributions to a list of requirements that were not + provided by any other distributions. + """ + + def __init__(self): + self.adjacency_list = {} + self.reverse_list = {} + self.missing = {} + + def add_distribution(self, distribution): + """Add the *distribution* to the graph. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + """ + self.adjacency_list[distribution] = [] + self.reverse_list[distribution] = [] + #self.missing[distribution] = [] + + def add_edge(self, x, y, label=None): + """Add an edge from distribution *x* to distribution *y* with the given + *label*. + + :type x: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type y: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type label: ``str`` or ``None`` + """ + self.adjacency_list[x].append((y, label)) + # multiple edges are allowed, so be careful + if x not in self.reverse_list[y]: + self.reverse_list[y].append(x) + + def add_missing(self, distribution, requirement): + """ + Add a missing *requirement* for the given *distribution*. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + :type requirement: ``str`` + """ + logger.debug('%s missing %r', distribution, requirement) + self.missing.setdefault(distribution, []).append(requirement) + + def _repr_dist(self, dist): + return '%s %s' % (dist.name, dist.version) + + def repr_node(self, dist, level=1): + """Prints only a subgraph""" + output = [self._repr_dist(dist)] + for other, label in self.adjacency_list[dist]: + dist = self._repr_dist(other) + if label is not None: + dist = '%s [%s]' % (dist, label) + output.append(' ' * level + str(dist)) + suboutput = self.repr_node(other, level + 1) + subs = suboutput.split('\n') + output.extend(subs[1:]) + return '\n'.join(output) + + def to_dot(self, f, skip_disconnected=True): + """Writes a DOT output for the graph to the provided file *f*. + + If *skip_disconnected* is set to ``True``, then all distributions + that are not dependent on any other distribution are skipped. + + :type f: has to support ``file``-like operations + :type skip_disconnected: ``bool`` + """ + disconnected = [] + + f.write("digraph dependencies {\n") + for dist, adjs in self.adjacency_list.items(): + if len(adjs) == 0 and not skip_disconnected: + disconnected.append(dist) + for other, label in adjs: + if not label is None: + f.write('"%s" -> "%s" [label="%s"]\n' % + (dist.name, other.name, label)) + else: + f.write('"%s" -> "%s"\n' % (dist.name, other.name)) + if not skip_disconnected and len(disconnected) > 0: + f.write('subgraph disconnected {\n') + f.write('label = "Disconnected"\n') + f.write('bgcolor = red\n') + + for dist in disconnected: + f.write('"%s"' % dist.name) + f.write('\n') + f.write('}\n') + f.write('}\n') + + def topological_sort(self): + """ + Perform a topological sort of the graph. + :return: A tuple, the first element of which is a topologically sorted + list of distributions, and the second element of which is a + list of distributions that cannot be sorted because they have + circular dependencies and so form a cycle. + """ + result = [] + # Make a shallow copy of the adjacency list + alist = {} + for k, v in self.adjacency_list.items(): + alist[k] = v[:] + while True: + # See what we can remove in this run + to_remove = [] + for k, v in list(alist.items())[:]: + if not v: + to_remove.append(k) + del alist[k] + if not to_remove: + # What's left in alist (if anything) is a cycle. + break + # Remove from the adjacency list of others + for k, v in alist.items(): + alist[k] = [(d, r) for d, r in v if d not in to_remove] + logger.debug('Moving to result: %s', + ['%s (%s)' % (d.name, d.version) for d in to_remove]) + result.extend(to_remove) + return result, list(alist.keys()) + + def __repr__(self): + """Representation of the graph""" + output = [] + for dist, adjs in self.adjacency_list.items(): + output.append(self.repr_node(dist)) + return '\n'.join(output) + + +def make_graph(dists, scheme='default'): + """Makes a dependency graph from the given distributions. + + :parameter dists: a list of distributions + :type dists: list of :class:`distutils2.database.InstalledDistribution` and + :class:`distutils2.database.EggInfoDistribution` instances + :rtype: a :class:`DependencyGraph` instance + """ + scheme = get_scheme(scheme) + graph = DependencyGraph() + provided = {} # maps names to lists of (version, dist) tuples + + # first, build the graph and find out what's provided + for dist in dists: + graph.add_distribution(dist) + + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + provided.setdefault(name, []).append((version, dist)) + + # now make the edges + for dist in dists: + requires = (dist.run_requires | dist.meta_requires | + dist.build_requires | dist.dev_requires) + for req in requires: + try: + matcher = scheme.matcher(req) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + matched = False + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + graph.add_edge(dist, provider, req) + matched = True + break + if not matched: + graph.add_missing(dist, req) + return graph + + +def get_dependent_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + dependent on *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + dep = [dist] # dependent distributions + todo = graph.reverse_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop() + dep.append(d) + for succ in graph.reverse_list[d]: + if succ not in dep: + todo.append(succ) + + dep.pop(0) # remove dist from dep, was there to prevent infinite loops + return dep + + +def get_required_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + required by *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + req = [] # required distributions + todo = graph.adjacency_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop()[0] + req.append(d) + for pred in graph.adjacency_list[d]: + if pred not in req: + todo.append(pred) + + return req + + +def make_dist(name, version, **kwargs): + """ + A convenience method for making a dist given just a name and version. + """ + summary = kwargs.pop('summary', 'Placeholder for summary') + md = Metadata(**kwargs) + md.name = name + md.version = version + md.summary = summary or 'Placeholder for summary' + return Distribution(md) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/index.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/index.py new file mode 100644 index 0000000..b1fbbf8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/index.py @@ -0,0 +1,509 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import hashlib +import logging +import os +import shutil +import subprocess +import tempfile +try: + from threading import Thread +except ImportError: + from dummy_threading import Thread + +from . import DistlibException +from .compat import (HTTPBasicAuthHandler, Request, HTTPPasswordMgr, + urlparse, build_opener, string_types) +from .util import zip_dir, ServerProxy + +logger = logging.getLogger(__name__) + +DEFAULT_INDEX = 'https://pypi.org/pypi' +DEFAULT_REALM = 'pypi' + +class PackageIndex(object): + """ + This class represents a package index compatible with PyPI, the Python + Package Index. + """ + + boundary = b'----------ThIs_Is_tHe_distlib_index_bouNdaRY_$' + + def __init__(self, url=None): + """ + Initialise an instance. + + :param url: The URL of the index. If not specified, the URL for PyPI is + used. + """ + self.url = url or DEFAULT_INDEX + self.read_configuration() + scheme, netloc, path, params, query, frag = urlparse(self.url) + if params or query or frag or scheme not in ('http', 'https'): + raise DistlibException('invalid repository: %s' % self.url) + self.password_handler = None + self.ssl_verifier = None + self.gpg = None + self.gpg_home = None + with open(os.devnull, 'w') as sink: + # Use gpg by default rather than gpg2, as gpg2 insists on + # prompting for passwords + for s in ('gpg', 'gpg2'): + try: + rc = subprocess.check_call([s, '--version'], stdout=sink, + stderr=sink) + if rc == 0: + self.gpg = s + break + except OSError: + pass + + def _get_pypirc_command(self): + """ + Get the distutils command for interacting with PyPI configurations. + :return: the command. + """ + from .util import _get_pypirc_command as cmd + return cmd() + + def read_configuration(self): + """ + Read the PyPI access configuration as supported by distutils. This populates + ``username``, ``password``, ``realm`` and ``url`` attributes from the + configuration. + """ + from .util import _load_pypirc + cfg = _load_pypirc(self) + self.username = cfg.get('username') + self.password = cfg.get('password') + self.realm = cfg.get('realm', 'pypi') + self.url = cfg.get('repository', self.url) + + def save_configuration(self): + """ + Save the PyPI access configuration. You must have set ``username`` and + ``password`` attributes before calling this method. + """ + self.check_credentials() + from .util import _store_pypirc + _store_pypirc(self) + + def check_credentials(self): + """ + Check that ``username`` and ``password`` have been set, and raise an + exception if not. + """ + if self.username is None or self.password is None: + raise DistlibException('username and password must be set') + pm = HTTPPasswordMgr() + _, netloc, _, _, _, _ = urlparse(self.url) + pm.add_password(self.realm, netloc, self.username, self.password) + self.password_handler = HTTPBasicAuthHandler(pm) + + def register(self, metadata): + """ + Register a distribution on PyPI, using the provided metadata. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the distribution to be + registered. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + metadata.validate() + d = metadata.todict() + d[':action'] = 'verify' + request = self.encode_request(d.items(), []) + response = self.send_request(request) + d[':action'] = 'submit' + request = self.encode_request(d.items(), []) + return self.send_request(request) + + def _reader(self, name, stream, outbuf): + """ + Thread runner for reading lines of from a subprocess into a buffer. + + :param name: The logical name of the stream (used for logging only). + :param stream: The stream to read from. This will typically a pipe + connected to the output stream of a subprocess. + :param outbuf: The list to append the read lines to. + """ + while True: + s = stream.readline() + if not s: + break + s = s.decode('utf-8').rstrip() + outbuf.append(s) + logger.debug('%s: %s' % (name, s)) + stream.close() + + def get_sign_command(self, filename, signer, sign_password, + keystore=None): + """ + Return a suitable command for signing a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The signing command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + if sign_password is not None: + cmd.extend(['--batch', '--passphrase-fd', '0']) + td = tempfile.mkdtemp() + sf = os.path.join(td, os.path.basename(filename) + '.asc') + cmd.extend(['--detach-sign', '--armor', '--local-user', + signer, '--output', sf, filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd, sf + + def run_command(self, cmd, input_data=None): + """ + Run a command in a child process , passing it any input data specified. + + :param cmd: The command to run. + :param input_data: If specified, this must be a byte string containing + data to be sent to the child process. + :return: A tuple consisting of the subprocess' exit code, a list of + lines read from the subprocess' ``stdout``, and a list of + lines read from the subprocess' ``stderr``. + """ + kwargs = { + 'stdout': subprocess.PIPE, + 'stderr': subprocess.PIPE, + } + if input_data is not None: + kwargs['stdin'] = subprocess.PIPE + stdout = [] + stderr = [] + p = subprocess.Popen(cmd, **kwargs) + # We don't use communicate() here because we may need to + # get clever with interacting with the command + t1 = Thread(target=self._reader, args=('stdout', p.stdout, stdout)) + t1.start() + t2 = Thread(target=self._reader, args=('stderr', p.stderr, stderr)) + t2.start() + if input_data is not None: + p.stdin.write(input_data) + p.stdin.close() + + p.wait() + t1.join() + t2.join() + return p.returncode, stdout, stderr + + def sign_file(self, filename, signer, sign_password, keystore=None): + """ + Sign a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The absolute pathname of the file where the signature is + stored. + """ + cmd, sig_file = self.get_sign_command(filename, signer, sign_password, + keystore) + rc, stdout, stderr = self.run_command(cmd, + sign_password.encode('utf-8')) + if rc != 0: + raise DistlibException('sign command failed with error ' + 'code %s' % rc) + return sig_file + + def upload_file(self, metadata, filename, signer=None, sign_password=None, + filetype='sdist', pyversion='source', keystore=None): + """ + Upload a release file to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the file to be uploaded. + :param filename: The pathname of the file to be uploaded. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param filetype: The type of the file being uploaded. This is the + distutils command which produced that file, e.g. + ``sdist`` or ``bdist_wheel``. + :param pyversion: The version of Python which the release relates + to. For code compatible with any Python, this would + be ``source``, otherwise it would be e.g. ``3.2``. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.exists(filename): + raise DistlibException('not found: %s' % filename) + metadata.validate() + d = metadata.todict() + sig_file = None + if signer: + if not self.gpg: + logger.warning('no signing program available - not signed') + else: + sig_file = self.sign_file(filename, signer, sign_password, + keystore) + with open(filename, 'rb') as f: + file_data = f.read() + md5_digest = hashlib.md5(file_data).hexdigest() + sha256_digest = hashlib.sha256(file_data).hexdigest() + d.update({ + ':action': 'file_upload', + 'protocol_version': '1', + 'filetype': filetype, + 'pyversion': pyversion, + 'md5_digest': md5_digest, + 'sha256_digest': sha256_digest, + }) + files = [('content', os.path.basename(filename), file_data)] + if sig_file: + with open(sig_file, 'rb') as f: + sig_data = f.read() + files.append(('gpg_signature', os.path.basename(sig_file), + sig_data)) + shutil.rmtree(os.path.dirname(sig_file)) + request = self.encode_request(d.items(), files) + return self.send_request(request) + + def upload_documentation(self, metadata, doc_dir): + """ + Upload documentation to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the documentation to be + uploaded. + :param doc_dir: The pathname of the directory which contains the + documentation. This should be the directory that + contains the ``index.html`` for the documentation. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.isdir(doc_dir): + raise DistlibException('not a directory: %r' % doc_dir) + fn = os.path.join(doc_dir, 'index.html') + if not os.path.exists(fn): + raise DistlibException('not found: %r' % fn) + metadata.validate() + name, version = metadata.name, metadata.version + zip_data = zip_dir(doc_dir).getvalue() + fields = [(':action', 'doc_upload'), + ('name', name), ('version', version)] + files = [('content', name, zip_data)] + request = self.encode_request(fields, files) + return self.send_request(request) + + def get_verify_command(self, signature_filename, data_filename, + keystore=None): + """ + Return a suitable command for verifying a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The verifying command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + cmd.extend(['--verify', signature_filename, data_filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd + + def verify_signature(self, signature_filename, data_filename, + keystore=None): + """ + Verify a signature for a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: True if the signature was verified, else False. + """ + if not self.gpg: + raise DistlibException('verification unavailable because gpg ' + 'unavailable') + cmd = self.get_verify_command(signature_filename, data_filename, + keystore) + rc, stdout, stderr = self.run_command(cmd) + if rc not in (0, 1): + raise DistlibException('verify command failed with error ' + 'code %s' % rc) + return rc == 0 + + def download_file(self, url, destfile, digest=None, reporthook=None): + """ + This is a convenience method for downloading a file from an URL. + Normally, this will be a file from the index, though currently + no check is made for this (i.e. a file can be downloaded from + anywhere). + + The method is just like the :func:`urlretrieve` function in the + standard library, except that it allows digest computation to be + done during download and checking that the downloaded data + matched any expected value. + + :param url: The URL of the file to be downloaded (assumed to be + available via an HTTP GET request). + :param destfile: The pathname where the downloaded file is to be + saved. + :param digest: If specified, this must be a (hasher, value) + tuple, where hasher is the algorithm used (e.g. + ``'md5'``) and ``value`` is the expected value. + :param reporthook: The same as for :func:`urlretrieve` in the + standard library. + """ + if digest is None: + digester = None + logger.debug('No digest specified') + else: + if isinstance(digest, (list, tuple)): + hasher, digest = digest + else: + hasher = 'md5' + digester = getattr(hashlib, hasher)() + logger.debug('Digest specified: %s' % digest) + # The following code is equivalent to urlretrieve. + # We need to do it this way so that we can compute the + # digest of the file as we go. + with open(destfile, 'wb') as dfp: + # addinfourl is not a context manager on 2.x + # so we have to use try/finally + sfp = self.send_request(Request(url)) + try: + headers = sfp.info() + blocksize = 8192 + size = -1 + read = 0 + blocknum = 0 + if "content-length" in headers: + size = int(headers["Content-Length"]) + if reporthook: + reporthook(blocknum, blocksize, size) + while True: + block = sfp.read(blocksize) + if not block: + break + read += len(block) + dfp.write(block) + if digester: + digester.update(block) + blocknum += 1 + if reporthook: + reporthook(blocknum, blocksize, size) + finally: + sfp.close() + + # check that we got the whole file, if we can + if size >= 0 and read < size: + raise DistlibException( + 'retrieval incomplete: got only %d out of %d bytes' + % (read, size)) + # if we have a digest, it must match. + if digester: + actual = digester.hexdigest() + if digest != actual: + raise DistlibException('%s digest mismatch for %s: expected ' + '%s, got %s' % (hasher, destfile, + digest, actual)) + logger.debug('Digest verified: %s', digest) + + def send_request(self, req): + """ + Send a standard library :class:`Request` to PyPI and return its + response. + + :param req: The request to send. + :return: The HTTP response from PyPI (a standard library HTTPResponse). + """ + handlers = [] + if self.password_handler: + handlers.append(self.password_handler) + if self.ssl_verifier: + handlers.append(self.ssl_verifier) + opener = build_opener(*handlers) + return opener.open(req) + + def encode_request(self, fields, files): + """ + Encode fields and files for posting to an HTTP server. + + :param fields: The fields to send as a list of (fieldname, value) + tuples. + :param files: The files to send as a list of (fieldname, filename, + file_bytes) tuple. + """ + # Adapted from packaging, which in turn was adapted from + # http://code.activestate.com/recipes/146306 + + parts = [] + boundary = self.boundary + for k, values in fields: + if not isinstance(values, (list, tuple)): + values = [values] + + for v in values: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"' % + k).encode('utf-8'), + b'', + v.encode('utf-8'))) + for key, filename, value in files: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"; filename="%s"' % + (key, filename)).encode('utf-8'), + b'', + value)) + + parts.extend((b'--' + boundary + b'--', b'')) + + body = b'\r\n'.join(parts) + ct = b'multipart/form-data; boundary=' + boundary + headers = { + 'Content-type': ct, + 'Content-length': str(len(body)) + } + return Request(self.url, body, headers) + + def search(self, terms, operator=None): + if isinstance(terms, string_types): + terms = {'name': terms} + rpc_proxy = ServerProxy(self.url, timeout=3.0) + try: + return rpc_proxy.search(terms, operator or 'and') + finally: + rpc_proxy('close')() diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/locators.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/locators.py new file mode 100644 index 0000000..0c7d639 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/locators.py @@ -0,0 +1,1300 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2015 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# + +import gzip +from io import BytesIO +import json +import logging +import os +import posixpath +import re +try: + import threading +except ImportError: # pragma: no cover + import dummy_threading as threading +import zlib + +from . import DistlibException +from .compat import (urljoin, urlparse, urlunparse, url2pathname, pathname2url, + queue, quote, unescape, build_opener, + HTTPRedirectHandler as BaseRedirectHandler, text_type, + Request, HTTPError, URLError) +from .database import Distribution, DistributionPath, make_dist +from .metadata import Metadata, MetadataInvalidError +from .util import (cached_property, ensure_slash, split_filename, get_project_data, + parse_requirement, parse_name_and_version, ServerProxy, + normalize_name) +from .version import get_scheme, UnsupportedVersionError +from .wheel import Wheel, is_compatible + +logger = logging.getLogger(__name__) + +HASHER_HASH = re.compile(r'^(\w+)=([a-f0-9]+)') +CHARSET = re.compile(r';\s*charset\s*=\s*(.*)\s*$', re.I) +HTML_CONTENT_TYPE = re.compile('text/html|application/x(ht)?ml') +DEFAULT_INDEX = 'https://pypi.org/pypi' + +def get_all_distribution_names(url=None): + """ + Return all distribution names known by an index. + :param url: The URL of the index. + :return: A list of all known distribution names. + """ + if url is None: + url = DEFAULT_INDEX + client = ServerProxy(url, timeout=3.0) + try: + return client.list_packages() + finally: + client('close')() + +class RedirectHandler(BaseRedirectHandler): + """ + A class to work around a bug in some Python 3.2.x releases. + """ + # There's a bug in the base version for some 3.2.x + # (e.g. 3.2.2 on Ubuntu Oneiric). If a Location header + # returns e.g. /abc, it bails because it says the scheme '' + # is bogus, when actually it should use the request's + # URL for the scheme. See Python issue #13696. + def http_error_302(self, req, fp, code, msg, headers): + # Some servers (incorrectly) return multiple Location headers + # (so probably same goes for URI). Use first header. + newurl = None + for key in ('location', 'uri'): + if key in headers: + newurl = headers[key] + break + if newurl is None: # pragma: no cover + return + urlparts = urlparse(newurl) + if urlparts.scheme == '': + newurl = urljoin(req.get_full_url(), newurl) + if hasattr(headers, 'replace_header'): + headers.replace_header(key, newurl) + else: + headers[key] = newurl + return BaseRedirectHandler.http_error_302(self, req, fp, code, msg, + headers) + + http_error_301 = http_error_303 = http_error_307 = http_error_302 + +class Locator(object): + """ + A base class for locators - things that locate distributions. + """ + source_extensions = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz') + binary_extensions = ('.egg', '.exe', '.whl') + excluded_extensions = ('.pdf',) + + # A list of tags indicating which wheels you want to match. The default + # value of None matches against the tags compatible with the running + # Python. If you want to match other values, set wheel_tags on a locator + # instance to a list of tuples (pyver, abi, arch) which you want to match. + wheel_tags = None + + downloadable_extensions = source_extensions + ('.whl',) + + def __init__(self, scheme='default'): + """ + Initialise an instance. + :param scheme: Because locators look for most recent versions, they + need to know the version scheme to use. This specifies + the current PEP-recommended scheme - use ``'legacy'`` + if you need to support existing distributions on PyPI. + """ + self._cache = {} + self.scheme = scheme + # Because of bugs in some of the handlers on some of the platforms, + # we use our own opener rather than just using urlopen. + self.opener = build_opener(RedirectHandler()) + # If get_project() is called from locate(), the matcher instance + # is set from the requirement passed to locate(). See issue #18 for + # why this can be useful to know. + self.matcher = None + self.errors = queue.Queue() + + def get_errors(self): + """ + Return any errors which have occurred. + """ + result = [] + while not self.errors.empty(): # pragma: no cover + try: + e = self.errors.get(False) + result.append(e) + except self.errors.Empty: + continue + self.errors.task_done() + return result + + def clear_errors(self): + """ + Clear any errors which may have been logged. + """ + # Just get the errors and throw them away + self.get_errors() + + def clear_cache(self): + self._cache.clear() + + def _get_scheme(self): + return self._scheme + + def _set_scheme(self, value): + self._scheme = value + + scheme = property(_get_scheme, _set_scheme) + + def _get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This should be implemented in subclasses. + + If called from a locate() request, self.matcher will be set to a + matcher for the requirement to satisfy, otherwise it will be None. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This calls _get_project to do all the work, and just implements a caching layer on top. + """ + if self._cache is None: # pragma: no cover + result = self._get_project(name) + elif name in self._cache: + result = self._cache[name] + else: + self.clear_errors() + result = self._get_project(name) + self._cache[name] = result + return result + + def score_url(self, url): + """ + Give an url a score which can be used to choose preferred URLs + for a given project release. + """ + t = urlparse(url) + basename = posixpath.basename(t.path) + compatible = True + is_wheel = basename.endswith('.whl') + is_downloadable = basename.endswith(self.downloadable_extensions) + if is_wheel: + compatible = is_compatible(Wheel(basename), self.wheel_tags) + return (t.scheme == 'https', 'pypi.org' in t.netloc, + is_downloadable, is_wheel, compatible, basename) + + def prefer_url(self, url1, url2): + """ + Choose one of two URLs where both are candidates for distribution + archives for the same version of a distribution (for example, + .tar.gz vs. zip). + + The current implementation favours https:// URLs over http://, archives + from PyPI over those from other locations, wheel compatibility (if a + wheel) and then the archive name. + """ + result = url2 + if url1: + s1 = self.score_url(url1) + s2 = self.score_url(url2) + if s1 > s2: + result = url1 + if result != url2: + logger.debug('Not replacing %r with %r', url1, url2) + else: + logger.debug('Replacing %r with %r', url1, url2) + return result + + def split_filename(self, filename, project_name): + """ + Attempt to split a filename in project name, version and Python version. + """ + return split_filename(filename, project_name) + + def convert_url_to_download_info(self, url, project_name): + """ + See if a URL is a candidate for a download URL for a project (the URL + has typically been scraped from an HTML page). + + If it is, a dictionary is returned with keys "name", "version", + "filename" and "url"; otherwise, None is returned. + """ + def same_project(name1, name2): + return normalize_name(name1) == normalize_name(name2) + + result = None + scheme, netloc, path, params, query, frag = urlparse(url) + if frag.lower().startswith('egg='): # pragma: no cover + logger.debug('%s: version hint in fragment: %r', + project_name, frag) + m = HASHER_HASH.match(frag) + if m: + algo, digest = m.groups() + else: + algo, digest = None, None + origpath = path + if path and path[-1] == '/': # pragma: no cover + path = path[:-1] + if path.endswith('.whl'): + try: + wheel = Wheel(path) + if not is_compatible(wheel, self.wheel_tags): + logger.debug('Wheel not compatible: %s', path) + else: + if project_name is None: + include = True + else: + include = same_project(wheel.name, project_name) + if include: + result = { + 'name': wheel.name, + 'version': wheel.version, + 'filename': wheel.filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + 'python-version': ', '.join( + ['.'.join(list(v[2:])) for v in wheel.pyver]), + } + except Exception as e: # pragma: no cover + logger.warning('invalid path for wheel: %s', path) + elif not path.endswith(self.downloadable_extensions): # pragma: no cover + logger.debug('Not downloadable: %s', path) + else: # downloadable extension + path = filename = posixpath.basename(path) + for ext in self.downloadable_extensions: + if path.endswith(ext): + path = path[:-len(ext)] + t = self.split_filename(path, project_name) + if not t: # pragma: no cover + logger.debug('No match for project/version: %s', path) + else: + name, version, pyver = t + if not project_name or same_project(project_name, name): + result = { + 'name': name, + 'version': version, + 'filename': filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + #'packagetype': 'sdist', + } + if pyver: # pragma: no cover + result['python-version'] = pyver + break + if result and algo: + result['%s_digest' % algo] = digest + return result + + def _get_digest(self, info): + """ + Get a digest from a dictionary by looking at a "digests" dictionary + or keys of the form 'algo_digest'. + + Returns a 2-tuple (algo, digest) if found, else None. Currently + looks only for SHA256, then MD5. + """ + result = None + if 'digests' in info: + digests = info['digests'] + for algo in ('sha256', 'md5'): + if algo in digests: + result = (algo, digests[algo]) + break + if not result: + for algo in ('sha256', 'md5'): + key = '%s_digest' % algo + if key in info: + result = (algo, info[key]) + break + return result + + def _update_version_data(self, result, info): + """ + Update a result dictionary (the final result from _get_project) with a + dictionary for a specific version, which typically holds information + gleaned from a filename or URL for an archive for the distribution. + """ + name = info.pop('name') + version = info.pop('version') + if version in result: + dist = result[version] + md = dist.metadata + else: + dist = make_dist(name, version, scheme=self.scheme) + md = dist.metadata + dist.digest = digest = self._get_digest(info) + url = info['url'] + result['digests'][url] = digest + if md.source_url != info['url']: + md.source_url = self.prefer_url(md.source_url, url) + result['urls'].setdefault(version, set()).add(url) + dist.locator = self + result[version] = dist + + def locate(self, requirement, prereleases=False): + """ + Find the most recent distribution which matches the given + requirement. + + :param requirement: A requirement of the form 'foo (1.0)' or perhaps + 'foo (>= 1.0, < 2.0, != 1.3)' + :param prereleases: If ``True``, allow pre-release versions + to be located. Otherwise, pre-release versions + are not returned. + :return: A :class:`Distribution` instance, or ``None`` if no such + distribution could be located. + """ + result = None + r = parse_requirement(requirement) + if r is None: # pragma: no cover + raise DistlibException('Not a valid requirement: %r' % requirement) + scheme = get_scheme(self.scheme) + self.matcher = matcher = scheme.matcher(r.requirement) + logger.debug('matcher: %s (%s)', matcher, type(matcher).__name__) + versions = self.get_project(r.name) + if len(versions) > 2: # urls and digests keys are present + # sometimes, versions are invalid + slist = [] + vcls = matcher.version_class + for k in versions: + if k in ('urls', 'digests'): + continue + try: + if not matcher.match(k): + pass # logger.debug('%s did not match %r', matcher, k) + else: + if prereleases or not vcls(k).is_prerelease: + slist.append(k) + # else: + # logger.debug('skipping pre-release ' + # 'version %s of %s', k, matcher.name) + except Exception: # pragma: no cover + logger.warning('error matching %s with %r', matcher, k) + pass # slist.append(k) + if len(slist) > 1: + slist = sorted(slist, key=scheme.key) + if slist: + logger.debug('sorted list: %s', slist) + version = slist[-1] + result = versions[version] + if result: + if r.extras: + result.extras = r.extras + result.download_urls = versions.get('urls', {}).get(version, set()) + d = {} + sd = versions.get('digests', {}) + for url in result.download_urls: + if url in sd: # pragma: no cover + d[url] = sd[url] + result.digests = d + self.matcher = None + return result + + +class PyPIRPCLocator(Locator): + """ + This locator uses XML-RPC to locate distributions. It therefore + cannot be used with simple mirrors (that only mirror file content). + """ + def __init__(self, url, **kwargs): + """ + Initialise an instance. + + :param url: The URL to use for XML-RPC. + :param kwargs: Passed to the superclass constructor. + """ + super(PyPIRPCLocator, self).__init__(**kwargs) + self.base_url = url + self.client = ServerProxy(url, timeout=3.0) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + return set(self.client.list_packages()) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + versions = self.client.package_releases(name, True) + for v in versions: + urls = self.client.release_urls(name, v) + data = self.client.release_data(name, v) + metadata = Metadata(scheme=self.scheme) + metadata.name = data['name'] + metadata.version = data['version'] + metadata.license = data.get('license') + metadata.keywords = data.get('keywords', []) + metadata.summary = data.get('summary') + dist = Distribution(metadata) + if urls: + info = urls[0] + metadata.source_url = info['url'] + dist.digest = self._get_digest(info) + dist.locator = self + result[v] = dist + for info in urls: + url = info['url'] + digest = self._get_digest(info) + result['urls'].setdefault(v, set()).add(url) + result['digests'][url] = digest + return result + +class PyPIJSONLocator(Locator): + """ + This locator uses PyPI's JSON interface. It's very limited in functionality + and probably not worth using. + """ + def __init__(self, url, **kwargs): + super(PyPIJSONLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + url = urljoin(self.base_url, '%s/json' % quote(name)) + try: + resp = self.opener.open(url) + data = resp.read().decode() # for now + d = json.loads(data) + md = Metadata(scheme=self.scheme) + data = d['info'] + md.name = data['name'] + md.version = data['version'] + md.license = data.get('license') + md.keywords = data.get('keywords', []) + md.summary = data.get('summary') + dist = Distribution(md) + dist.locator = self + urls = d['urls'] + result[md.version] = dist + for info in d['urls']: + url = info['url'] + dist.download_urls.add(url) + dist.digests[url] = self._get_digest(info) + result['urls'].setdefault(md.version, set()).add(url) + result['digests'][url] = self._get_digest(info) + # Now get other releases + for version, infos in d['releases'].items(): + if version == md.version: + continue # already done + omd = Metadata(scheme=self.scheme) + omd.name = md.name + omd.version = version + odist = Distribution(omd) + odist.locator = self + result[version] = odist + for info in infos: + url = info['url'] + odist.download_urls.add(url) + odist.digests[url] = self._get_digest(info) + result['urls'].setdefault(version, set()).add(url) + result['digests'][url] = self._get_digest(info) +# for info in urls: +# md.source_url = info['url'] +# dist.digest = self._get_digest(info) +# dist.locator = self +# for info in urls: +# url = info['url'] +# result['urls'].setdefault(md.version, set()).add(url) +# result['digests'][url] = self._get_digest(info) + except Exception as e: + self.errors.put(text_type(e)) + logger.exception('JSON fetch failed: %s', e) + return result + + +class Page(object): + """ + This class represents a scraped HTML page. + """ + # The following slightly hairy-looking regex just looks for the contents of + # an anchor link, which has an attribute "href" either immediately preceded + # or immediately followed by a "rel" attribute. The attribute values can be + # declared with double quotes, single quotes or no quotes - which leads to + # the length of the expression. + _href = re.compile(""" +(rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*))\\s+)? +href\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)) +(\\s+rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)))? +""", re.I | re.S | re.X) + _base = re.compile(r"""]+)""", re.I | re.S) + + def __init__(self, data, url): + """ + Initialise an instance with the Unicode page contents and the URL they + came from. + """ + self.data = data + self.base_url = self.url = url + m = self._base.search(self.data) + if m: + self.base_url = m.group(1) + + _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I) + + @cached_property + def links(self): + """ + Return the URLs of all the links on a page together with information + about their "rel" attribute, for determining which ones to treat as + downloads and which ones to queue for further scraping. + """ + def clean(url): + "Tidy up an URL." + scheme, netloc, path, params, query, frag = urlparse(url) + return urlunparse((scheme, netloc, quote(path), + params, query, frag)) + + result = set() + for match in self._href.finditer(self.data): + d = match.groupdict('') + rel = (d['rel1'] or d['rel2'] or d['rel3'] or + d['rel4'] or d['rel5'] or d['rel6']) + url = d['url1'] or d['url2'] or d['url3'] + url = urljoin(self.base_url, url) + url = unescape(url) + url = self._clean_re.sub(lambda m: '%%%2x' % ord(m.group(0)), url) + result.add((url, rel)) + # We sort the result, hoping to bring the most recent versions + # to the front + result = sorted(result, key=lambda t: t[0], reverse=True) + return result + + +class SimpleScrapingLocator(Locator): + """ + A locator which scrapes HTML pages to locate downloads for a distribution. + This runs multiple threads to do the I/O; performance is at least as good + as pip's PackageFinder, which works in an analogous fashion. + """ + + # These are used to deal with various Content-Encoding schemes. + decoders = { + 'deflate': zlib.decompress, + 'gzip': lambda b: gzip.GzipFile(fileobj=BytesIO(b)).read(), + 'none': lambda b: b, + } + + def __init__(self, url, timeout=None, num_workers=10, **kwargs): + """ + Initialise an instance. + :param url: The root URL to use for scraping. + :param timeout: The timeout, in seconds, to be applied to requests. + This defaults to ``None`` (no timeout specified). + :param num_workers: The number of worker threads you want to do I/O, + This defaults to 10. + :param kwargs: Passed to the superclass. + """ + super(SimpleScrapingLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + self.timeout = timeout + self._page_cache = {} + self._seen = set() + self._to_fetch = queue.Queue() + self._bad_hosts = set() + self.skip_externals = False + self.num_workers = num_workers + self._lock = threading.RLock() + # See issue #45: we need to be resilient when the locator is used + # in a thread, e.g. with concurrent.futures. We can't use self._lock + # as it is for coordinating our internal threads - the ones created + # in _prepare_threads. + self._gplock = threading.RLock() + self.platform_check = False # See issue #112 + + def _prepare_threads(self): + """ + Threads are created only when get_project is called, and terminate + before it returns. They are there primarily to parallelise I/O (i.e. + fetching web pages). + """ + self._threads = [] + for i in range(self.num_workers): + t = threading.Thread(target=self._fetch) + t.setDaemon(True) + t.start() + self._threads.append(t) + + def _wait_threads(self): + """ + Tell all the threads to terminate (by sending a sentinel value) and + wait for them to do so. + """ + # Note that you need two loops, since you can't say which + # thread will get each sentinel + for t in self._threads: + self._to_fetch.put(None) # sentinel + for t in self._threads: + t.join() + self._threads = [] + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + with self._gplock: + self.result = result + self.project_name = name + url = urljoin(self.base_url, '%s/' % quote(name)) + self._seen.clear() + self._page_cache.clear() + self._prepare_threads() + try: + logger.debug('Queueing %s', url) + self._to_fetch.put(url) + self._to_fetch.join() + finally: + self._wait_threads() + del self.result + return result + + platform_dependent = re.compile(r'\b(linux_(i\d86|x86_64|arm\w+)|' + r'win(32|_amd64)|macosx_?\d+)\b', re.I) + + def _is_platform_dependent(self, url): + """ + Does an URL refer to a platform-specific download? + """ + return self.platform_dependent.search(url) + + def _process_download(self, url): + """ + See if an URL is a suitable download for a project. + + If it is, register information in the result dictionary (for + _get_project) about the specific version it's for. + + Note that the return value isn't actually used other than as a boolean + value. + """ + if self.platform_check and self._is_platform_dependent(url): + info = None + else: + info = self.convert_url_to_download_info(url, self.project_name) + logger.debug('process_download: %s -> %s', url, info) + if info: + with self._lock: # needed because self.result is shared + self._update_version_data(self.result, info) + return info + + def _should_queue(self, link, referrer, rel): + """ + Determine whether a link URL from a referring page and with a + particular "rel" attribute should be queued for scraping. + """ + scheme, netloc, path, _, _, _ = urlparse(link) + if path.endswith(self.source_extensions + self.binary_extensions + + self.excluded_extensions): + result = False + elif self.skip_externals and not link.startswith(self.base_url): + result = False + elif not referrer.startswith(self.base_url): + result = False + elif rel not in ('homepage', 'download'): + result = False + elif scheme not in ('http', 'https', 'ftp'): + result = False + elif self._is_platform_dependent(link): + result = False + else: + host = netloc.split(':', 1)[0] + if host.lower() == 'localhost': + result = False + else: + result = True + logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, + referrer, result) + return result + + def _fetch(self): + """ + Get a URL to fetch from the work queue, get the HTML page, examine its + links for download candidates and candidates for further scraping. + + This is a handy method to run in a thread. + """ + while True: + url = self._to_fetch.get() + try: + if url: + page = self.get_page(url) + if page is None: # e.g. after an error + continue + for link, rel in page.links: + if link not in self._seen: + try: + self._seen.add(link) + if (not self._process_download(link) and + self._should_queue(link, url, rel)): + logger.debug('Queueing %s from %s', link, url) + self._to_fetch.put(link) + except MetadataInvalidError: # e.g. invalid versions + pass + except Exception as e: # pragma: no cover + self.errors.put(text_type(e)) + finally: + # always do this, to avoid hangs :-) + self._to_fetch.task_done() + if not url: + #logger.debug('Sentinel seen, quitting.') + break + + def get_page(self, url): + """ + Get the HTML for an URL, possibly from an in-memory cache. + + XXX TODO Note: this cache is never actually cleared. It's assumed that + the data won't get stale over the lifetime of a locator instance (not + necessarily true for the default_locator). + """ + # http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api + scheme, netloc, path, _, _, _ = urlparse(url) + if scheme == 'file' and os.path.isdir(url2pathname(path)): + url = urljoin(ensure_slash(url), 'index.html') + + if url in self._page_cache: + result = self._page_cache[url] + logger.debug('Returning %s from cache: %s', url, result) + else: + host = netloc.split(':', 1)[0] + result = None + if host in self._bad_hosts: + logger.debug('Skipping %s due to bad host %s', url, host) + else: + req = Request(url, headers={'Accept-encoding': 'identity'}) + try: + logger.debug('Fetching %s', url) + resp = self.opener.open(req, timeout=self.timeout) + logger.debug('Fetched %s', url) + headers = resp.info() + content_type = headers.get('Content-Type', '') + if HTML_CONTENT_TYPE.match(content_type): + final_url = resp.geturl() + data = resp.read() + encoding = headers.get('Content-Encoding') + if encoding: + decoder = self.decoders[encoding] # fail if not found + data = decoder(data) + encoding = 'utf-8' + m = CHARSET.search(content_type) + if m: + encoding = m.group(1) + try: + data = data.decode(encoding) + except UnicodeError: # pragma: no cover + data = data.decode('latin-1') # fallback + result = Page(data, final_url) + self._page_cache[final_url] = result + except HTTPError as e: + if e.code != 404: + logger.exception('Fetch failed: %s: %s', url, e) + except URLError as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + with self._lock: + self._bad_hosts.add(host) + except Exception as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + finally: + self._page_cache[url] = result # even if None (failure) + return result + + _distname_re = re.compile(']*>([^<]+)<') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + page = self.get_page(self.base_url) + if not page: + raise DistlibException('Unable to get %s' % self.base_url) + for match in self._distname_re.finditer(page.data): + result.add(match.group(1)) + return result + +class DirectoryLocator(Locator): + """ + This class locates distributions in a directory tree. + """ + + def __init__(self, path, **kwargs): + """ + Initialise an instance. + :param path: The root of the directory tree to search. + :param kwargs: Passed to the superclass constructor, + except for: + * recursive - if True (the default), subdirectories are + recursed into. If False, only the top-level directory + is searched, + """ + self.recursive = kwargs.pop('recursive', True) + super(DirectoryLocator, self).__init__(**kwargs) + path = os.path.abspath(path) + if not os.path.isdir(path): # pragma: no cover + raise DistlibException('Not a directory: %r' % path) + self.base_dir = path + + def should_include(self, filename, parent): + """ + Should a filename be considered as a candidate for a distribution + archive? As well as the filename, the directory which contains it + is provided, though not used by the current implementation. + """ + return filename.endswith(self.downloadable_extensions) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, name) + if info: + self._update_version_data(result, info) + if not self.recursive: + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, None) + if info: + result.add(info['name']) + if not self.recursive: + break + return result + +class JSONLocator(Locator): + """ + This locator uses special extended metadata (not available on PyPI) and is + the basis of performant dependency resolution in distlib. Other locators + require archive downloads before dependencies can be determined! As you + might imagine, that can be slow. + """ + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + data = get_project_data(name) + if data: + for info in data.get('files', []): + if info['ptype'] != 'sdist' or info['pyversion'] != 'source': + continue + # We don't store summary in project metadata as it makes + # the data bigger for no benefit during dependency + # resolution + dist = make_dist(data['name'], info['version'], + summary=data.get('summary', + 'Placeholder for summary'), + scheme=self.scheme) + md = dist.metadata + md.source_url = info['url'] + # TODO SHA256 digest + if 'digest' in info and info['digest']: + dist.digest = ('md5', info['digest']) + md.dependencies = info.get('requirements', {}) + dist.exports = info.get('exports', {}) + result[dist.version] = dist + result['urls'].setdefault(dist.version, set()).add(info['url']) + return result + +class DistPathLocator(Locator): + """ + This locator finds installed distributions in a path. It can be useful for + adding to an :class:`AggregatingLocator`. + """ + def __init__(self, distpath, **kwargs): + """ + Initialise an instance. + + :param distpath: A :class:`DistributionPath` instance to search. + """ + super(DistPathLocator, self).__init__(**kwargs) + assert isinstance(distpath, DistributionPath) + self.distpath = distpath + + def _get_project(self, name): + dist = self.distpath.get_distribution(name) + if dist is None: + result = {'urls': {}, 'digests': {}} + else: + result = { + dist.version: dist, + 'urls': {dist.version: set([dist.source_url])}, + 'digests': {dist.version: set([None])} + } + return result + + +class AggregatingLocator(Locator): + """ + This class allows you to chain and/or merge a list of locators. + """ + def __init__(self, *locators, **kwargs): + """ + Initialise an instance. + + :param locators: The list of locators to search. + :param kwargs: Passed to the superclass constructor, + except for: + * merge - if False (the default), the first successful + search from any of the locators is returned. If True, + the results from all locators are merged (this can be + slow). + """ + self.merge = kwargs.pop('merge', False) + self.locators = locators + super(AggregatingLocator, self).__init__(**kwargs) + + def clear_cache(self): + super(AggregatingLocator, self).clear_cache() + for locator in self.locators: + locator.clear_cache() + + def _set_scheme(self, value): + self._scheme = value + for locator in self.locators: + locator.scheme = value + + scheme = property(Locator.scheme.fget, _set_scheme) + + def _get_project(self, name): + result = {} + for locator in self.locators: + d = locator.get_project(name) + if d: + if self.merge: + files = result.get('urls', {}) + digests = result.get('digests', {}) + # next line could overwrite result['urls'], result['digests'] + result.update(d) + df = result.get('urls') + if files and df: + for k, v in files.items(): + if k in df: + df[k] |= v + else: + df[k] = v + dd = result.get('digests') + if digests and dd: + dd.update(digests) + else: + # See issue #18. If any dists are found and we're looking + # for specific constraints, we only return something if + # a match is found. For example, if a DirectoryLocator + # returns just foo (1.0) while we're looking for + # foo (>= 2.0), we'll pretend there was nothing there so + # that subsequent locators can be queried. Otherwise we + # would just return foo (1.0) which would then lead to a + # failure to find foo (>= 2.0), because other locators + # weren't searched. Note that this only matters when + # merge=False. + if self.matcher is None: + found = True + else: + found = False + for k in d: + if self.matcher.match(k): + found = True + break + if found: + result = d + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for locator in self.locators: + try: + result |= locator.get_distribution_names() + except NotImplementedError: + pass + return result + + +# We use a legacy scheme simply because most of the dists on PyPI use legacy +# versions which don't conform to PEP 426 / PEP 440. +default_locator = AggregatingLocator( + JSONLocator(), + SimpleScrapingLocator('https://pypi.org/simple/', + timeout=3.0), + scheme='legacy') + +locate = default_locator.locate + + +class DependencyFinder(object): + """ + Locate dependencies for distributions. + """ + + def __init__(self, locator=None): + """ + Initialise an instance, using the specified locator + to locate distributions. + """ + self.locator = locator or default_locator + self.scheme = get_scheme(self.locator.scheme) + + def add_distribution(self, dist): + """ + Add a distribution to the finder. This will update internal information + about who provides what. + :param dist: The distribution to add. + """ + logger.debug('adding distribution %s', dist) + name = dist.key + self.dists_by_name[name] = dist + self.dists[(name, dist.version)] = dist + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + self.provided.setdefault(name, set()).add((version, dist)) + + def remove_distribution(self, dist): + """ + Remove a distribution from the finder. This will update internal + information about who provides what. + :param dist: The distribution to remove. + """ + logger.debug('removing distribution %s', dist) + name = dist.key + del self.dists_by_name[name] + del self.dists[(name, dist.version)] + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Remove from provided: %s, %s, %s', name, version, dist) + s = self.provided[name] + s.remove((version, dist)) + if not s: + del self.provided[name] + + def get_matcher(self, reqt): + """ + Get a version matcher for a requirement. + :param reqt: The requirement + :type reqt: str + :return: A version matcher (an instance of + :class:`distlib.version.Matcher`). + """ + try: + matcher = self.scheme.matcher(reqt) + except UnsupportedVersionError: # pragma: no cover + # XXX compat-mode if cannot read the version + name = reqt.split()[0] + matcher = self.scheme.matcher(name) + return matcher + + def find_providers(self, reqt): + """ + Find the distributions which can fulfill a requirement. + + :param reqt: The requirement. + :type reqt: str + :return: A set of distribution which can fulfill the requirement. + """ + matcher = self.get_matcher(reqt) + name = matcher.key # case-insensitive + result = set() + provided = self.provided + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + result.add(provider) + break + return result + + def try_to_replace(self, provider, other, problems): + """ + Attempt to replace one provider with another. This is typically used + when resolving dependencies from multiple sources, e.g. A requires + (B >= 1.0) while C requires (B >= 1.1). + + For successful replacement, ``provider`` must meet all the requirements + which ``other`` fulfills. + + :param provider: The provider we are trying to replace with. + :param other: The provider we're trying to replace. + :param problems: If False is returned, this will contain what + problems prevented replacement. This is currently + a tuple of the literal string 'cantreplace', + ``provider``, ``other`` and the set of requirements + that ``provider`` couldn't fulfill. + :return: True if we can replace ``other`` with ``provider``, else + False. + """ + rlist = self.reqts[other] + unmatched = set() + for s in rlist: + matcher = self.get_matcher(s) + if not matcher.match(provider.version): + unmatched.add(s) + if unmatched: + # can't replace other with provider + problems.add(('cantreplace', provider, other, + frozenset(unmatched))) + result = False + else: + # can replace other with provider + self.remove_distribution(other) + del self.reqts[other] + for s in rlist: + self.reqts.setdefault(provider, set()).add(s) + self.add_distribution(provider) + result = True + return result + + def find(self, requirement, meta_extras=None, prereleases=False): + """ + Find a distribution and all distributions it depends on. + + :param requirement: The requirement specifying the distribution to + find, or a Distribution instance. + :param meta_extras: A list of meta extras such as :test:, :build: and + so on. + :param prereleases: If ``True``, allow pre-release versions to be + returned - otherwise, don't return prereleases + unless they're all that's available. + + Return a set of :class:`Distribution` instances and a set of + problems. + + The distributions returned should be such that they have the + :attr:`required` attribute set to ``True`` if they were + from the ``requirement`` passed to ``find()``, and they have the + :attr:`build_time_dependency` attribute set to ``True`` unless they + are post-installation dependencies of the ``requirement``. + + The problems should be a tuple consisting of the string + ``'unsatisfied'`` and the requirement which couldn't be satisfied + by any distribution known to the locator. + """ + + self.provided = {} + self.dists = {} + self.dists_by_name = {} + self.reqts = {} + + meta_extras = set(meta_extras or []) + if ':*:' in meta_extras: + meta_extras.remove(':*:') + # :meta: and :run: are implicitly included + meta_extras |= set([':test:', ':build:', ':dev:']) + + if isinstance(requirement, Distribution): + dist = odist = requirement + logger.debug('passed %s as requirement', odist) + else: + dist = odist = self.locator.locate(requirement, + prereleases=prereleases) + if dist is None: + raise DistlibException('Unable to locate %r' % requirement) + logger.debug('located %s', odist) + dist.requested = True + problems = set() + todo = set([dist]) + install_dists = set([odist]) + while todo: + dist = todo.pop() + name = dist.key # case-insensitive + if name not in self.dists_by_name: + self.add_distribution(dist) + else: + #import pdb; pdb.set_trace() + other = self.dists_by_name[name] + if other != dist: + self.try_to_replace(dist, other, problems) + + ireqts = dist.run_requires | dist.meta_requires + sreqts = dist.build_requires + ereqts = set() + if meta_extras and dist in install_dists: + for key in ('test', 'build', 'dev'): + e = ':%s:' % key + if e in meta_extras: + ereqts |= getattr(dist, '%s_requires' % key) + all_reqts = ireqts | sreqts | ereqts + for r in all_reqts: + providers = self.find_providers(r) + if not providers: + logger.debug('No providers found for %r', r) + provider = self.locator.locate(r, prereleases=prereleases) + # If no provider is found and we didn't consider + # prereleases, consider them now. + if provider is None and not prereleases: + provider = self.locator.locate(r, prereleases=True) + if provider is None: + logger.debug('Cannot satisfy %r', r) + problems.add(('unsatisfied', r)) + else: + n, v = provider.key, provider.version + if (n, v) not in self.dists: + todo.add(provider) + providers.add(provider) + if r in ireqts and dist in install_dists: + install_dists.add(provider) + logger.debug('Adding %s to install_dists', + provider.name_and_version) + for p in providers: + name = p.key + if name not in self.dists_by_name: + self.reqts.setdefault(p, set()).add(r) + else: + other = self.dists_by_name[name] + if other != p: + # see if other can be replaced by p + self.try_to_replace(p, other, problems) + + dists = set(self.dists.values()) + for dist in dists: + dist.build_time_dependency = dist not in install_dists + if dist.build_time_dependency: + logger.debug('%s is a build-time dependency only.', + dist.name_and_version) + logger.debug('find done for %s', odist) + return dists, problems diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/manifest.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/manifest.py new file mode 100644 index 0000000..ca0fe44 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/manifest.py @@ -0,0 +1,393 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2013 Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Class representing the list of files in a distribution. + +Equivalent to distutils.filelist, but fixes some problems. +""" +import fnmatch +import logging +import os +import re +import sys + +from . import DistlibException +from .compat import fsdecode +from .util import convert_path + + +__all__ = ['Manifest'] + +logger = logging.getLogger(__name__) + +# a \ followed by some spaces + EOL +_COLLAPSE_PATTERN = re.compile('\\\\w*\n', re.M) +_COMMENTED_LINE = re.compile('#.*?(?=\n)|\n(?=$)', re.M | re.S) + +# +# Due to the different results returned by fnmatch.translate, we need +# to do slightly different processing for Python 2.7 and 3.2 ... this needed +# to be brought in for Python 3.6 onwards. +# +_PYTHON_VERSION = sys.version_info[:2] + +class Manifest(object): + """A list of files built by on exploring the filesystem and filtered by + applying various patterns to what we find there. + """ + + def __init__(self, base=None): + """ + Initialise an instance. + + :param base: The base directory to explore under. + """ + self.base = os.path.abspath(os.path.normpath(base or os.getcwd())) + self.prefix = self.base + os.sep + self.allfiles = None + self.files = set() + + # + # Public API + # + + def findall(self): + """Find all files under the base and set ``allfiles`` to the absolute + pathnames of files found. + """ + from stat import S_ISREG, S_ISDIR, S_ISLNK + + self.allfiles = allfiles = [] + root = self.base + stack = [root] + pop = stack.pop + push = stack.append + + while stack: + root = pop() + names = os.listdir(root) + + for name in names: + fullname = os.path.join(root, name) + + # Avoid excess stat calls -- just one will do, thank you! + stat = os.stat(fullname) + mode = stat.st_mode + if S_ISREG(mode): + allfiles.append(fsdecode(fullname)) + elif S_ISDIR(mode) and not S_ISLNK(mode): + push(fullname) + + def add(self, item): + """ + Add a file to the manifest. + + :param item: The pathname to add. This can be relative to the base. + """ + if not item.startswith(self.prefix): + item = os.path.join(self.base, item) + self.files.add(os.path.normpath(item)) + + def add_many(self, items): + """ + Add a list of files to the manifest. + + :param items: The pathnames to add. These can be relative to the base. + """ + for item in items: + self.add(item) + + def sorted(self, wantdirs=False): + """ + Return sorted files in directory order + """ + + def add_dir(dirs, d): + dirs.add(d) + logger.debug('add_dir added %s', d) + if d != self.base: + parent, _ = os.path.split(d) + assert parent not in ('', '/') + add_dir(dirs, parent) + + result = set(self.files) # make a copy! + if wantdirs: + dirs = set() + for f in result: + add_dir(dirs, os.path.dirname(f)) + result |= dirs + return [os.path.join(*path_tuple) for path_tuple in + sorted(os.path.split(path) for path in result)] + + def clear(self): + """Clear all collected files.""" + self.files = set() + self.allfiles = [] + + def process_directive(self, directive): + """ + Process a directive which either adds some files from ``allfiles`` to + ``files``, or removes some files from ``files``. + + :param directive: The directive to process. This should be in a format + compatible with distutils ``MANIFEST.in`` files: + + http://docs.python.org/distutils/sourcedist.html#commands + """ + # Parse the line: split it up, make sure the right number of words + # is there, and return the relevant words. 'action' is always + # defined: it's the first word of the line. Which of the other + # three are defined depends on the action; it'll be either + # patterns, (dir and patterns), or (dirpattern). + action, patterns, thedir, dirpattern = self._parse_directive(directive) + + # OK, now we know that the action is valid and we have the + # right number of words on the line for that action -- so we + # can proceed with minimal error-checking. + if action == 'include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=True): + logger.warning('no files found matching %r', pattern) + + elif action == 'exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, anchor=True) + #if not found: + # logger.warning('no previously-included files ' + # 'found matching %r', pattern) + + elif action == 'global-include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=False): + logger.warning('no files found matching %r ' + 'anywhere in distribution', pattern) + + elif action == 'global-exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, anchor=False) + #if not found: + # logger.warning('no previously-included files ' + # 'matching %r found anywhere in ' + # 'distribution', pattern) + + elif action == 'recursive-include': + for pattern in patterns: + if not self._include_pattern(pattern, prefix=thedir): + logger.warning('no files found matching %r ' + 'under directory %r', pattern, thedir) + + elif action == 'recursive-exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, prefix=thedir) + #if not found: + # logger.warning('no previously-included files ' + # 'matching %r found under directory %r', + # pattern, thedir) + + elif action == 'graft': + if not self._include_pattern(None, prefix=dirpattern): + logger.warning('no directories found matching %r', + dirpattern) + + elif action == 'prune': + if not self._exclude_pattern(None, prefix=dirpattern): + logger.warning('no previously-included directories found ' + 'matching %r', dirpattern) + else: # pragma: no cover + # This should never happen, as it should be caught in + # _parse_template_line + raise DistlibException( + 'invalid action %r' % action) + + # + # Private API + # + + def _parse_directive(self, directive): + """ + Validate a directive. + :param directive: The directive to validate. + :return: A tuple of action, patterns, thedir, dir_patterns + """ + words = directive.split() + if len(words) == 1 and words[0] not in ('include', 'exclude', + 'global-include', + 'global-exclude', + 'recursive-include', + 'recursive-exclude', + 'graft', 'prune'): + # no action given, let's use the default 'include' + words.insert(0, 'include') + + action = words[0] + patterns = thedir = dir_pattern = None + + if action in ('include', 'exclude', + 'global-include', 'global-exclude'): + if len(words) < 2: + raise DistlibException( + '%r expects ...' % action) + + patterns = [convert_path(word) for word in words[1:]] + + elif action in ('recursive-include', 'recursive-exclude'): + if len(words) < 3: + raise DistlibException( + '%r expects

    ...' % action) + + thedir = convert_path(words[1]) + patterns = [convert_path(word) for word in words[2:]] + + elif action in ('graft', 'prune'): + if len(words) != 2: + raise DistlibException( + '%r expects a single ' % action) + + dir_pattern = convert_path(words[1]) + + else: + raise DistlibException('unknown action %r' % action) + + return action, patterns, thedir, dir_pattern + + def _include_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Select strings (presumably filenames) from 'self.files' that + match 'pattern', a Unix-style wildcard (glob) pattern. + + Patterns are not quite the same as implemented by the 'fnmatch' + module: '*' and '?' match non-special characters, where "special" + is platform-dependent: slash on Unix; colon, slash, and backslash on + DOS/Windows; and colon on Mac OS. + + If 'anchor' is true (the default), then the pattern match is more + stringent: "*.py" will match "foo.py" but not "foo/bar.py". If + 'anchor' is false, both of these will match. + + If 'prefix' is supplied, then only filenames starting with 'prefix' + (itself a pattern) and ending with 'pattern', with anything in between + them, will match. 'anchor' is ignored in this case. + + If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and + 'pattern' is assumed to be either a string containing a regex or a + regex object -- no translation is done, the regex is just compiled + and used as-is. + + Selected strings will be added to self.files. + + Return True if files are found. + """ + # XXX docstring lying about what the special chars are? + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + + # delayed loading of allfiles list + if self.allfiles is None: + self.findall() + + for name in self.allfiles: + if pattern_re.search(name): + self.files.add(name) + found = True + return found + + def _exclude_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Remove strings (presumably filenames) from 'files' that match + 'pattern'. + + Other parameters are the same as for 'include_pattern()', above. + The list 'self.files' is modified in place. Return True if files are + found. + + This API is public to allow e.g. exclusion of SCM subdirs, e.g. when + packaging source distributions + """ + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + for f in list(self.files): + if pattern_re.search(f): + self.files.remove(f) + found = True + return found + + def _translate_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Translate a shell-like wildcard pattern to a compiled regular + expression. + + Return the compiled regex. If 'is_regex' true, + then 'pattern' is directly compiled to a regex (if it's a string) + or just returned as-is (assumes it's a regex object). + """ + if is_regex: + if isinstance(pattern, str): + return re.compile(pattern) + else: + return pattern + + if _PYTHON_VERSION > (3, 2): + # ditch start and end characters + start, _, end = self._glob_to_re('_').partition('_') + + if pattern: + pattern_re = self._glob_to_re(pattern) + if _PYTHON_VERSION > (3, 2): + assert pattern_re.startswith(start) and pattern_re.endswith(end) + else: + pattern_re = '' + + base = re.escape(os.path.join(self.base, '')) + if prefix is not None: + # ditch end of pattern character + if _PYTHON_VERSION <= (3, 2): + empty_pattern = self._glob_to_re('') + prefix_re = self._glob_to_re(prefix)[:-len(empty_pattern)] + else: + prefix_re = self._glob_to_re(prefix) + assert prefix_re.startswith(start) and prefix_re.endswith(end) + prefix_re = prefix_re[len(start): len(prefix_re) - len(end)] + sep = os.sep + if os.sep == '\\': + sep = r'\\' + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + sep.join((prefix_re, + '.*' + pattern_re)) + else: + pattern_re = pattern_re[len(start): len(pattern_re) - len(end)] + pattern_re = r'%s%s%s%s.*%s%s' % (start, base, prefix_re, sep, + pattern_re, end) + else: # no prefix -- respect anchor flag + if anchor: + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + pattern_re + else: + pattern_re = r'%s%s%s' % (start, base, pattern_re[len(start):]) + + return re.compile(pattern_re) + + def _glob_to_re(self, pattern): + """Translate a shell-like glob pattern to a regular expression. + + Return a string containing the regex. Differs from + 'fnmatch.translate()' in that '*' does not match "special characters" + (which are platform-specific). + """ + pattern_re = fnmatch.translate(pattern) + + # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which + # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix, + # and by extension they shouldn't match such "special characters" under + # any OS. So change all non-escaped dots in the RE to match any + # character except the special characters (currently: just os.sep). + sep = os.sep + if os.sep == '\\': + # we're using a regex to manipulate a regex, so we need + # to escape the backslash twice + sep = r'\\\\' + escaped = r'\1[^%s]' % sep + pattern_re = re.sub(r'((? y, + '!=': lambda x, y: x != y, + '<': lambda x, y: x < y, + '<=': lambda x, y: x == y or x < y, + '>': lambda x, y: x > y, + '>=': lambda x, y: x == y or x > y, + 'and': lambda x, y: x and y, + 'or': lambda x, y: x or y, + 'in': lambda x, y: x in y, + 'not in': lambda x, y: x not in y, + } + + def evaluate(self, expr, context): + """ + Evaluate a marker expression returned by the :func:`parse_requirement` + function in the specified context. + """ + if isinstance(expr, string_types): + if expr[0] in '\'"': + result = expr[1:-1] + else: + if expr not in context: + raise SyntaxError('unknown variable: %s' % expr) + result = context[expr] + else: + assert isinstance(expr, dict) + op = expr['op'] + if op not in self.operations: + raise NotImplementedError('op not implemented: %s' % op) + elhs = expr['lhs'] + erhs = expr['rhs'] + if _is_literal(expr['lhs']) and _is_literal(expr['rhs']): + raise SyntaxError('invalid comparison: %s %s %s' % (elhs, op, erhs)) + + lhs = self.evaluate(elhs, context) + rhs = self.evaluate(erhs, context) + if ((elhs == 'python_version' or erhs == 'python_version') and + op in ('<', '<=', '>', '>=', '===', '==', '!=', '~=')): + lhs = NV(lhs) + rhs = NV(rhs) + elif elhs == 'python_version' and op in ('in', 'not in'): + lhs = NV(lhs) + rhs = _get_versions(rhs) + result = self.operations[op](lhs, rhs) + return result + +def default_context(): + def format_full_version(info): + version = '%s.%s.%s' % (info.major, info.minor, info.micro) + kind = info.releaselevel + if kind != 'final': + version += kind[0] + str(info.serial) + return version + + if hasattr(sys, 'implementation'): + implementation_version = format_full_version(sys.implementation.version) + implementation_name = sys.implementation.name + else: + implementation_version = '0' + implementation_name = '' + + result = { + 'implementation_name': implementation_name, + 'implementation_version': implementation_version, + 'os_name': os.name, + 'platform_machine': platform.machine(), + 'platform_python_implementation': platform.python_implementation(), + 'platform_release': platform.release(), + 'platform_system': platform.system(), + 'platform_version': platform.version(), + 'platform_in_venv': str(in_venv()), + 'python_full_version': platform.python_version(), + 'python_version': platform.python_version()[:3], + 'sys_platform': sys.platform, + } + return result + +DEFAULT_CONTEXT = default_context() +del default_context + +evaluator = Evaluator() + +def interpret(marker, execution_context=None): + """ + Interpret a marker and return a result depending on environment. + + :param marker: The marker to interpret. + :type marker: str + :param execution_context: The context used for name lookup. + :type execution_context: mapping + """ + try: + expr, rest = parse_marker(marker) + except Exception as e: + raise SyntaxError('Unable to interpret marker syntax: %s: %s' % (marker, e)) + if rest and rest[0] != '#': + raise SyntaxError('unexpected trailing data in marker: %s: %s' % (marker, rest)) + context = dict(DEFAULT_CONTEXT) + if execution_context: + context.update(execution_context) + return evaluator.evaluate(expr, context) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/metadata.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/metadata.py new file mode 100644 index 0000000..6a26b0a --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/metadata.py @@ -0,0 +1,1058 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Implementation of the Metadata for Python packages PEPs. + +Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and withdrawn 2.0). +""" +from __future__ import unicode_literals + +import codecs +from email import message_from_file +import json +import logging +import re + + +from . import DistlibException, __version__ +from .compat import StringIO, string_types, text_type +from .markers import interpret +from .util import extract_by_key, get_extras +from .version import get_scheme, PEP440_VERSION_RE + +logger = logging.getLogger(__name__) + + +class MetadataMissingError(DistlibException): + """A required metadata is missing""" + + +class MetadataConflictError(DistlibException): + """Attempt to read or write metadata fields that are conflictual.""" + + +class MetadataUnrecognizedVersionError(DistlibException): + """Unknown metadata version number.""" + + +class MetadataInvalidError(DistlibException): + """A metadata value is invalid""" + +# public API of this module +__all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION'] + +# Encoding used for the PKG-INFO files +PKG_INFO_ENCODING = 'utf-8' + +# preferred version. Hopefully will be changed +# to 1.2 once PEP 345 is supported everywhere +PKG_INFO_PREFERRED_VERSION = '1.1' + +_LINE_PREFIX_1_2 = re.compile('\n \\|') +_LINE_PREFIX_PRE_1_2 = re.compile('\n ') +_241_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License') + +_314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License', 'Classifier', 'Download-URL', 'Obsoletes', + 'Provides', 'Requires') + +_314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier', + 'Download-URL') + +_345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External') + +_345_MARKERS = ('Provides-Dist', 'Requires-Dist', 'Requires-Python', + 'Obsoletes-Dist', 'Requires-External', 'Maintainer', + 'Maintainer-email', 'Project-URL') + +_426_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External', 'Private-Version', + 'Obsoleted-By', 'Setup-Requires-Dist', 'Extension', + 'Provides-Extra') + +_426_MARKERS = ('Private-Version', 'Provides-Extra', 'Obsoleted-By', + 'Setup-Requires-Dist', 'Extension') + +# See issue #106: Sometimes 'Requires' and 'Provides' occur wrongly in +# the metadata. Include them in the tuple literal below to allow them +# (for now). +# Ditto for Obsoletes - see issue #140. +_566_FIELDS = _426_FIELDS + ('Description-Content-Type', + 'Requires', 'Provides', 'Obsoletes') + +_566_MARKERS = ('Description-Content-Type',) + +_ALL_FIELDS = set() +_ALL_FIELDS.update(_241_FIELDS) +_ALL_FIELDS.update(_314_FIELDS) +_ALL_FIELDS.update(_345_FIELDS) +_ALL_FIELDS.update(_426_FIELDS) +_ALL_FIELDS.update(_566_FIELDS) + +EXTRA_RE = re.compile(r'''extra\s*==\s*("([^"]+)"|'([^']+)')''') + + +def _version2fieldlist(version): + if version == '1.0': + return _241_FIELDS + elif version == '1.1': + return _314_FIELDS + elif version == '1.2': + return _345_FIELDS + elif version in ('1.3', '2.1'): + # avoid adding field names if already there + return _345_FIELDS + tuple(f for f in _566_FIELDS if f not in _345_FIELDS) + elif version == '2.0': + return _426_FIELDS + raise MetadataUnrecognizedVersionError(version) + + +def _best_version(fields): + """Detect the best version depending on the fields used.""" + def _has_marker(keys, markers): + for marker in markers: + if marker in keys: + return True + return False + + keys = [] + for key, value in fields.items(): + if value in ([], 'UNKNOWN', None): + continue + keys.append(key) + + possible_versions = ['1.0', '1.1', '1.2', '1.3', '2.0', '2.1'] + + # first let's try to see if a field is not part of one of the version + for key in keys: + if key not in _241_FIELDS and '1.0' in possible_versions: + possible_versions.remove('1.0') + logger.debug('Removed 1.0 due to %s', key) + if key not in _314_FIELDS and '1.1' in possible_versions: + possible_versions.remove('1.1') + logger.debug('Removed 1.1 due to %s', key) + if key not in _345_FIELDS and '1.2' in possible_versions: + possible_versions.remove('1.2') + logger.debug('Removed 1.2 due to %s', key) + if key not in _566_FIELDS and '1.3' in possible_versions: + possible_versions.remove('1.3') + logger.debug('Removed 1.3 due to %s', key) + if key not in _566_FIELDS and '2.1' in possible_versions: + if key != 'Description': # In 2.1, description allowed after headers + possible_versions.remove('2.1') + logger.debug('Removed 2.1 due to %s', key) + if key not in _426_FIELDS and '2.0' in possible_versions: + possible_versions.remove('2.0') + logger.debug('Removed 2.0 due to %s', key) + + # possible_version contains qualified versions + if len(possible_versions) == 1: + return possible_versions[0] # found ! + elif len(possible_versions) == 0: + logger.debug('Out of options - unknown metadata set: %s', fields) + raise MetadataConflictError('Unknown metadata set') + + # let's see if one unique marker is found + is_1_1 = '1.1' in possible_versions and _has_marker(keys, _314_MARKERS) + is_1_2 = '1.2' in possible_versions and _has_marker(keys, _345_MARKERS) + is_2_1 = '2.1' in possible_versions and _has_marker(keys, _566_MARKERS) + is_2_0 = '2.0' in possible_versions and _has_marker(keys, _426_MARKERS) + if int(is_1_1) + int(is_1_2) + int(is_2_1) + int(is_2_0) > 1: + raise MetadataConflictError('You used incompatible 1.1/1.2/2.0/2.1 fields') + + # we have the choice, 1.0, or 1.2, or 2.0 + # - 1.0 has a broken Summary field but works with all tools + # - 1.1 is to avoid + # - 1.2 fixes Summary but has little adoption + # - 2.0 adds more features and is very new + if not is_1_1 and not is_1_2 and not is_2_1 and not is_2_0: + # we couldn't find any specific marker + if PKG_INFO_PREFERRED_VERSION in possible_versions: + return PKG_INFO_PREFERRED_VERSION + if is_1_1: + return '1.1' + if is_1_2: + return '1.2' + if is_2_1: + return '2.1' + + return '2.0' + +# This follows the rules about transforming keys as described in +# https://www.python.org/dev/peps/pep-0566/#id17 +_ATTR2FIELD = { + name.lower().replace("-", "_"): name for name in _ALL_FIELDS +} +_FIELD2ATTR = {field: attr for attr, field in _ATTR2FIELD.items()} + +_PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist') +_VERSIONS_FIELDS = ('Requires-Python',) +_VERSION_FIELDS = ('Version',) +_LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes', + 'Requires', 'Provides', 'Obsoletes-Dist', + 'Provides-Dist', 'Requires-Dist', 'Requires-External', + 'Project-URL', 'Supported-Platform', 'Setup-Requires-Dist', + 'Provides-Extra', 'Extension') +_LISTTUPLEFIELDS = ('Project-URL',) + +_ELEMENTSFIELD = ('Keywords',) + +_UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') + +_MISSING = object() + +_FILESAFE = re.compile('[^A-Za-z0-9.]+') + + +def _get_name_and_version(name, version, for_filename=False): + """Return the distribution name with version. + + If for_filename is true, return a filename-escaped form.""" + if for_filename: + # For both name and version any runs of non-alphanumeric or '.' + # characters are replaced with a single '-'. Additionally any + # spaces in the version string become '.' + name = _FILESAFE.sub('-', name) + version = _FILESAFE.sub('-', version.replace(' ', '.')) + return '%s-%s' % (name, version) + + +class LegacyMetadata(object): + """The legacy metadata of a release. + + Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can + instantiate the class with one of these arguments (or none): + - *path*, the path to a metadata file + - *fileobj* give a file-like object with metadata as content + - *mapping* is a dict-like object + - *scheme* is a version scheme name + """ + # TODO document the mapping API and UNKNOWN default key + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._fields = {} + self.requires_files = [] + self._dependencies = None + self.scheme = scheme + if path is not None: + self.read(path) + elif fileobj is not None: + self.read_file(fileobj) + elif mapping is not None: + self.update(mapping) + self.set_metadata_version() + + def set_metadata_version(self): + self._fields['Metadata-Version'] = _best_version(self._fields) + + def _write_field(self, fileobj, name, value): + fileobj.write('%s: %s\n' % (name, value)) + + def __getitem__(self, name): + return self.get(name) + + def __setitem__(self, name, value): + return self.set(name, value) + + def __delitem__(self, name): + field_name = self._convert_name(name) + try: + del self._fields[field_name] + except KeyError: + raise KeyError(name) + + def __contains__(self, name): + return (name in self._fields or + self._convert_name(name) in self._fields) + + def _convert_name(self, name): + if name in _ALL_FIELDS: + return name + name = name.replace('-', '_').lower() + return _ATTR2FIELD.get(name, name) + + def _default_value(self, name): + if name in _LISTFIELDS or name in _ELEMENTSFIELD: + return [] + return 'UNKNOWN' + + def _remove_line_prefix(self, value): + if self.metadata_version in ('1.0', '1.1'): + return _LINE_PREFIX_PRE_1_2.sub('\n', value) + else: + return _LINE_PREFIX_1_2.sub('\n', value) + + def __getattr__(self, name): + if name in _ATTR2FIELD: + return self[name] + raise AttributeError(name) + + # + # Public API + # + +# dependencies = property(_get_dependencies, _set_dependencies) + + def get_fullname(self, filesafe=False): + """Return the distribution name with version. + + If filesafe is true, return a filename-escaped form.""" + return _get_name_and_version(self['Name'], self['Version'], filesafe) + + def is_field(self, name): + """return True if name is a valid metadata key""" + name = self._convert_name(name) + return name in _ALL_FIELDS + + def is_multi_field(self, name): + name = self._convert_name(name) + return name in _LISTFIELDS + + def read(self, filepath): + """Read the metadata values from a file path.""" + fp = codecs.open(filepath, 'r', encoding='utf-8') + try: + self.read_file(fp) + finally: + fp.close() + + def read_file(self, fileob): + """Read the metadata values from a file object.""" + msg = message_from_file(fileob) + self._fields['Metadata-Version'] = msg['metadata-version'] + + # When reading, get all the fields we can + for field in _ALL_FIELDS: + if field not in msg: + continue + if field in _LISTFIELDS: + # we can have multiple lines + values = msg.get_all(field) + if field in _LISTTUPLEFIELDS and values is not None: + values = [tuple(value.split(',')) for value in values] + self.set(field, values) + else: + # single line + value = msg[field] + if value is not None and value != 'UNKNOWN': + self.set(field, value) + + # PEP 566 specifies that the body be used for the description, if + # available + body = msg.get_payload() + self["Description"] = body if body else self["Description"] + # logger.debug('Attempting to set metadata for %s', self) + # self.set_metadata_version() + + def write(self, filepath, skip_unknown=False): + """Write the metadata fields to filepath.""" + fp = codecs.open(filepath, 'w', encoding='utf-8') + try: + self.write_file(fp, skip_unknown) + finally: + fp.close() + + def write_file(self, fileobject, skip_unknown=False): + """Write the PKG-INFO format data to a file object.""" + self.set_metadata_version() + + for field in _version2fieldlist(self['Metadata-Version']): + values = self.get(field) + if skip_unknown and values in ('UNKNOWN', [], ['UNKNOWN']): + continue + if field in _ELEMENTSFIELD: + self._write_field(fileobject, field, ','.join(values)) + continue + if field not in _LISTFIELDS: + if field == 'Description': + if self.metadata_version in ('1.0', '1.1'): + values = values.replace('\n', '\n ') + else: + values = values.replace('\n', '\n |') + values = [values] + + if field in _LISTTUPLEFIELDS: + values = [','.join(value) for value in values] + + for value in values: + self._write_field(fileobject, field, value) + + def update(self, other=None, **kwargs): + """Set metadata values from the given iterable `other` and kwargs. + + Behavior is like `dict.update`: If `other` has a ``keys`` method, + they are looped over and ``self[key]`` is assigned ``other[key]``. + Else, ``other`` is an iterable of ``(key, value)`` iterables. + + Keys that don't match a metadata field or that have an empty value are + dropped. + """ + def _set(key, value): + if key in _ATTR2FIELD and value: + self.set(self._convert_name(key), value) + + if not other: + # other is None or empty container + pass + elif hasattr(other, 'keys'): + for k in other.keys(): + _set(k, other[k]) + else: + for k, v in other: + _set(k, v) + + if kwargs: + for k, v in kwargs.items(): + _set(k, v) + + def set(self, name, value): + """Control then set a metadata field.""" + name = self._convert_name(name) + + if ((name in _ELEMENTSFIELD or name == 'Platform') and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [v.strip() for v in value.split(',')] + else: + value = [] + elif (name in _LISTFIELDS and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [value] + else: + value = [] + + if logger.isEnabledFor(logging.WARNING): + project_name = self['Name'] + + scheme = get_scheme(self.scheme) + if name in _PREDICATE_FIELDS and value is not None: + for v in value: + # check that the values are valid + if not scheme.is_valid_matcher(v.split(';')[0]): + logger.warning( + "'%s': '%s' is not valid (field '%s')", + project_name, v, name) + # FIXME this rejects UNKNOWN, is that right? + elif name in _VERSIONS_FIELDS and value is not None: + if not scheme.is_valid_constraint_list(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + elif name in _VERSION_FIELDS and value is not None: + if not scheme.is_valid_version(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + + if name in _UNICODEFIELDS: + if name == 'Description': + value = self._remove_line_prefix(value) + + self._fields[name] = value + + def get(self, name, default=_MISSING): + """Get a metadata field.""" + name = self._convert_name(name) + if name not in self._fields: + if default is _MISSING: + default = self._default_value(name) + return default + if name in _UNICODEFIELDS: + value = self._fields[name] + return value + elif name in _LISTFIELDS: + value = self._fields[name] + if value is None: + return [] + res = [] + for val in value: + if name not in _LISTTUPLEFIELDS: + res.append(val) + else: + # That's for Project-URL + res.append((val[0], val[1])) + return res + + elif name in _ELEMENTSFIELD: + value = self._fields[name] + if isinstance(value, string_types): + return value.split(',') + return self._fields[name] + + def check(self, strict=False): + """Check if the metadata is compliant. If strict is True then raise if + no Name or Version are provided""" + self.set_metadata_version() + + # XXX should check the versions (if the file was loaded) + missing, warnings = [], [] + + for attr in ('Name', 'Version'): # required by PEP 345 + if attr not in self: + missing.append(attr) + + if strict and missing != []: + msg = 'missing required metadata: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + + for attr in ('Home-page', 'Author'): + if attr not in self: + missing.append(attr) + + # checking metadata 1.2 (XXX needs to check 1.1, 1.0) + if self['Metadata-Version'] != '1.2': + return missing, warnings + + scheme = get_scheme(self.scheme) + + def are_valid_constraints(value): + for v in value: + if not scheme.is_valid_matcher(v.split(';')[0]): + return False + return True + + for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints), + (_VERSIONS_FIELDS, + scheme.is_valid_constraint_list), + (_VERSION_FIELDS, + scheme.is_valid_version)): + for field in fields: + value = self.get(field, None) + if value is not None and not controller(value): + warnings.append("Wrong value for '%s': %s" % (field, value)) + + return missing, warnings + + def todict(self, skip_missing=False): + """Return fields as a dict. + + Field names will be converted to use the underscore-lowercase style + instead of hyphen-mixed case (i.e. home_page instead of Home-page). + This is as per https://www.python.org/dev/peps/pep-0566/#id17. + """ + self.set_metadata_version() + + fields = _version2fieldlist(self['Metadata-Version']) + + data = {} + + for field_name in fields: + if not skip_missing or field_name in self._fields: + key = _FIELD2ATTR[field_name] + if key != 'project_url': + data[key] = self[field_name] + else: + data[key] = [','.join(u) for u in self[field_name]] + + return data + + def add_requirements(self, requirements): + if self['Metadata-Version'] == '1.1': + # we can't have 1.1 metadata *and* Setuptools requires + for field in ('Obsoletes', 'Requires', 'Provides'): + if field in self: + del self[field] + self['Requires-Dist'] += requirements + + # Mapping API + # TODO could add iter* variants + + def keys(self): + return list(_version2fieldlist(self['Metadata-Version'])) + + def __iter__(self): + for key in self.keys(): + yield key + + def values(self): + return [self[key] for key in self.keys()] + + def items(self): + return [(key, self[key]) for key in self.keys()] + + def __repr__(self): + return '<%s %s %s>' % (self.__class__.__name__, self.name, + self.version) + + +METADATA_FILENAME = 'pydist.json' +WHEEL_METADATA_FILENAME = 'metadata.json' +LEGACY_METADATA_FILENAME = 'METADATA' + + +class Metadata(object): + """ + The metadata of a release. This implementation uses 2.0 (JSON) + metadata where possible. If not possible, it wraps a LegacyMetadata + instance which handles the key-value metadata format. + """ + + METADATA_VERSION_MATCHER = re.compile(r'^\d+(\.\d+)*$') + + NAME_MATCHER = re.compile('^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$', re.I) + + VERSION_MATCHER = PEP440_VERSION_RE + + SUMMARY_MATCHER = re.compile('.{1,2047}') + + METADATA_VERSION = '2.0' + + GENERATOR = 'distlib (%s)' % __version__ + + MANDATORY_KEYS = { + 'name': (), + 'version': (), + 'summary': ('legacy',), + } + + INDEX_KEYS = ('name version license summary description author ' + 'author_email keywords platform home_page classifiers ' + 'download_url') + + DEPENDENCY_KEYS = ('extras run_requires test_requires build_requires ' + 'dev_requires provides meta_requires obsoleted_by ' + 'supports_environments') + + SYNTAX_VALIDATORS = { + 'metadata_version': (METADATA_VERSION_MATCHER, ()), + 'name': (NAME_MATCHER, ('legacy',)), + 'version': (VERSION_MATCHER, ('legacy',)), + 'summary': (SUMMARY_MATCHER, ('legacy',)), + } + + __slots__ = ('_legacy', '_data', 'scheme') + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._legacy = None + self._data = None + self.scheme = scheme + #import pdb; pdb.set_trace() + if mapping is not None: + try: + self._validate_mapping(mapping, scheme) + self._data = mapping + except MetadataUnrecognizedVersionError: + self._legacy = LegacyMetadata(mapping=mapping, scheme=scheme) + self.validate() + else: + data = None + if path: + with open(path, 'rb') as f: + data = f.read() + elif fileobj: + data = fileobj.read() + if data is None: + # Initialised with no args - to be added + self._data = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + else: + if not isinstance(data, text_type): + data = data.decode('utf-8') + try: + self._data = json.loads(data) + self._validate_mapping(self._data, scheme) + except ValueError: + # Note: MetadataUnrecognizedVersionError does not + # inherit from ValueError (it's a DistlibException, + # which should not inherit from ValueError). + # The ValueError comes from the json.load - if that + # succeeds and we get a validation error, we want + # that to propagate + self._legacy = LegacyMetadata(fileobj=StringIO(data), + scheme=scheme) + self.validate() + + common_keys = set(('name', 'version', 'license', 'keywords', 'summary')) + + none_list = (None, list) + none_dict = (None, dict) + + mapped_keys = { + 'run_requires': ('Requires-Dist', list), + 'build_requires': ('Setup-Requires-Dist', list), + 'dev_requires': none_list, + 'test_requires': none_list, + 'meta_requires': none_list, + 'extras': ('Provides-Extra', list), + 'modules': none_list, + 'namespaces': none_list, + 'exports': none_dict, + 'commands': none_dict, + 'classifiers': ('Classifier', list), + 'source_url': ('Download-URL', None), + 'metadata_version': ('Metadata-Version', None), + } + + del none_list, none_dict + + def __getattribute__(self, key): + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, maker = mapped[key] + if self._legacy: + if lk is None: + result = None if maker is None else maker() + else: + result = self._legacy.get(lk) + else: + value = None if maker is None else maker() + if key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + result = self._data.get(key, value) + else: + # special cases for PEP 459 + sentinel = object() + result = sentinel + d = self._data.get('extensions') + if d: + if key == 'commands': + result = d.get('python.commands', value) + elif key == 'classifiers': + d = d.get('python.details') + if d: + result = d.get(key, value) + else: + d = d.get('python.exports') + if not d: + d = self._data.get('python.exports') + if d: + result = d.get(key, value) + if result is sentinel: + result = value + elif key not in common: + result = object.__getattribute__(self, key) + elif self._legacy: + result = self._legacy.get(key) + else: + result = self._data.get(key) + return result + + def _validate_value(self, key, value, scheme=None): + if key in self.SYNTAX_VALIDATORS: + pattern, exclusions = self.SYNTAX_VALIDATORS[key] + if (scheme or self.scheme) not in exclusions: + m = pattern.match(value) + if not m: + raise MetadataInvalidError("'%s' is an invalid value for " + "the '%s' property" % (value, + key)) + + def __setattr__(self, key, value): + self._validate_value(key, value) + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, _ = mapped[key] + if self._legacy: + if lk is None: + raise NotImplementedError + self._legacy[lk] = value + elif key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + self._data[key] = value + else: + # special cases for PEP 459 + d = self._data.setdefault('extensions', {}) + if key == 'commands': + d['python.commands'] = value + elif key == 'classifiers': + d = d.setdefault('python.details', {}) + d[key] = value + else: + d = d.setdefault('python.exports', {}) + d[key] = value + elif key not in common: + object.__setattr__(self, key, value) + else: + if key == 'keywords': + if isinstance(value, string_types): + value = value.strip() + if value: + value = value.split() + else: + value = [] + if self._legacy: + self._legacy[key] = value + else: + self._data[key] = value + + @property + def name_and_version(self): + return _get_name_and_version(self.name, self.version, True) + + @property + def provides(self): + if self._legacy: + result = self._legacy['Provides-Dist'] + else: + result = self._data.setdefault('provides', []) + s = '%s (%s)' % (self.name, self.version) + if s not in result: + result.append(s) + return result + + @provides.setter + def provides(self, value): + if self._legacy: + self._legacy['Provides-Dist'] = value + else: + self._data['provides'] = value + + def get_requirements(self, reqts, extras=None, env=None): + """ + Base method to get dependencies, given a set of extras + to satisfy and an optional environment context. + :param reqts: A list of sometimes-wanted dependencies, + perhaps dependent on extras and environment. + :param extras: A list of optional components being requested. + :param env: An optional environment for marker evaluation. + """ + if self._legacy: + result = reqts + else: + result = [] + extras = get_extras(extras or [], self.extras) + for d in reqts: + if 'extra' not in d and 'environment' not in d: + # unconditional + include = True + else: + if 'extra' not in d: + # Not extra-dependent - only environment-dependent + include = True + else: + include = d.get('extra') in extras + if include: + # Not excluded because of extras, check environment + marker = d.get('environment') + if marker: + include = interpret(marker, env) + if include: + result.extend(d['requires']) + for key in ('build', 'dev', 'test'): + e = ':%s:' % key + if e in extras: + extras.remove(e) + # A recursive call, but it should terminate since 'test' + # has been removed from the extras + reqts = self._data.get('%s_requires' % key, []) + result.extend(self.get_requirements(reqts, extras=extras, + env=env)) + return result + + @property + def dictionary(self): + if self._legacy: + return self._from_legacy() + return self._data + + @property + def dependencies(self): + if self._legacy: + raise NotImplementedError + else: + return extract_by_key(self._data, self.DEPENDENCY_KEYS) + + @dependencies.setter + def dependencies(self, value): + if self._legacy: + raise NotImplementedError + else: + self._data.update(value) + + def _validate_mapping(self, mapping, scheme): + if mapping.get('metadata_version') != self.METADATA_VERSION: + raise MetadataUnrecognizedVersionError() + missing = [] + for key, exclusions in self.MANDATORY_KEYS.items(): + if key not in mapping: + if scheme not in exclusions: + missing.append(key) + if missing: + msg = 'Missing metadata items: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + for k, v in mapping.items(): + self._validate_value(k, v, scheme) + + def validate(self): + if self._legacy: + missing, warnings = self._legacy.check(True) + if missing or warnings: + logger.warning('Metadata: missing: %s, warnings: %s', + missing, warnings) + else: + self._validate_mapping(self._data, self.scheme) + + def todict(self): + if self._legacy: + return self._legacy.todict(True) + else: + result = extract_by_key(self._data, self.INDEX_KEYS) + return result + + def _from_legacy(self): + assert self._legacy and not self._data + result = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + lmd = self._legacy.todict(True) # skip missing ones + for k in ('name', 'version', 'license', 'summary', 'description', + 'classifier'): + if k in lmd: + if k == 'classifier': + nk = 'classifiers' + else: + nk = k + result[nk] = lmd[k] + kw = lmd.get('Keywords', []) + if kw == ['']: + kw = [] + result['keywords'] = kw + keys = (('requires_dist', 'run_requires'), + ('setup_requires_dist', 'build_requires')) + for ok, nk in keys: + if ok in lmd and lmd[ok]: + result[nk] = [{'requires': lmd[ok]}] + result['provides'] = self.provides + author = {} + maintainer = {} + return result + + LEGACY_MAPPING = { + 'name': 'Name', + 'version': 'Version', + ('extensions', 'python.details', 'license'): 'License', + 'summary': 'Summary', + 'description': 'Description', + ('extensions', 'python.project', 'project_urls', 'Home'): 'Home-page', + ('extensions', 'python.project', 'contacts', 0, 'name'): 'Author', + ('extensions', 'python.project', 'contacts', 0, 'email'): 'Author-email', + 'source_url': 'Download-URL', + ('extensions', 'python.details', 'classifiers'): 'Classifier', + } + + def _to_legacy(self): + def process_entries(entries): + reqts = set() + for e in entries: + extra = e.get('extra') + env = e.get('environment') + rlist = e['requires'] + for r in rlist: + if not env and not extra: + reqts.add(r) + else: + marker = '' + if extra: + marker = 'extra == "%s"' % extra + if env: + if marker: + marker = '(%s) and %s' % (env, marker) + else: + marker = env + reqts.add(';'.join((r, marker))) + return reqts + + assert self._data and not self._legacy + result = LegacyMetadata() + nmd = self._data + # import pdb; pdb.set_trace() + for nk, ok in self.LEGACY_MAPPING.items(): + if not isinstance(nk, tuple): + if nk in nmd: + result[ok] = nmd[nk] + else: + d = nmd + found = True + for k in nk: + try: + d = d[k] + except (KeyError, IndexError): + found = False + break + if found: + result[ok] = d + r1 = process_entries(self.run_requires + self.meta_requires) + r2 = process_entries(self.build_requires + self.dev_requires) + if self.extras: + result['Provides-Extra'] = sorted(self.extras) + result['Requires-Dist'] = sorted(r1) + result['Setup-Requires-Dist'] = sorted(r2) + # TODO: any other fields wanted + return result + + def write(self, path=None, fileobj=None, legacy=False, skip_unknown=True): + if [path, fileobj].count(None) != 1: + raise ValueError('Exactly one of path and fileobj is needed') + self.validate() + if legacy: + if self._legacy: + legacy_md = self._legacy + else: + legacy_md = self._to_legacy() + if path: + legacy_md.write(path, skip_unknown=skip_unknown) + else: + legacy_md.write_file(fileobj, skip_unknown=skip_unknown) + else: + if self._legacy: + d = self._from_legacy() + else: + d = self._data + if fileobj: + json.dump(d, fileobj, ensure_ascii=True, indent=2, + sort_keys=True) + else: + with codecs.open(path, 'w', 'utf-8') as f: + json.dump(d, f, ensure_ascii=True, indent=2, + sort_keys=True) + + def add_requirements(self, requirements): + if self._legacy: + self._legacy.add_requirements(requirements) + else: + run_requires = self._data.setdefault('run_requires', []) + always = None + for entry in run_requires: + if 'environment' not in entry and 'extra' not in entry: + always = entry + break + if always is None: + always = { 'requires': requirements } + run_requires.insert(0, always) + else: + rset = set(always['requires']) | set(requirements) + always['requires'] = sorted(rset) + + def __repr__(self): + name = self.name or '(no name)' + version = self.version or 'no version' + return '<%s %s %s (%s)>' % (self.__class__.__name__, + self.metadata_version, name, version) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/resources.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/resources.py new file mode 100644 index 0000000..fef52aa --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/resources.py @@ -0,0 +1,358 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2017 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import unicode_literals + +import bisect +import io +import logging +import os +import pkgutil +import sys +import types +import zipimport + +from . import DistlibException +from .util import cached_property, get_cache_base, Cache + +logger = logging.getLogger(__name__) + + +cache = None # created when needed + + +class ResourceCache(Cache): + def __init__(self, base=None): + if base is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('resource-cache')) + super(ResourceCache, self).__init__(base) + + def is_stale(self, resource, path): + """ + Is the cache stale for the given resource? + + :param resource: The :class:`Resource` being cached. + :param path: The path of the resource in the cache. + :return: True if the cache is stale. + """ + # Cache invalidation is a hard problem :-) + return True + + def get(self, resource): + """ + Get a resource into the cache, + + :param resource: A :class:`Resource` instance. + :return: The pathname of the resource in the cache. + """ + prefix, path = resource.finder.get_cache_info(resource) + if prefix is None: + result = path + else: + result = os.path.join(self.base, self.prefix_to_dir(prefix), path) + dirname = os.path.dirname(result) + if not os.path.isdir(dirname): + os.makedirs(dirname) + if not os.path.exists(result): + stale = True + else: + stale = self.is_stale(resource, path) + if stale: + # write the bytes of the resource to the cache location + with open(result, 'wb') as f: + f.write(resource.bytes) + return result + + +class ResourceBase(object): + def __init__(self, finder, name): + self.finder = finder + self.name = name + + +class Resource(ResourceBase): + """ + A class representing an in-package resource, such as a data file. This is + not normally instantiated by user code, but rather by a + :class:`ResourceFinder` which manages the resource. + """ + is_container = False # Backwards compatibility + + def as_stream(self): + """ + Get the resource as a stream. + + This is not a property to make it obvious that it returns a new stream + each time. + """ + return self.finder.get_stream(self) + + @cached_property + def file_path(self): + global cache + if cache is None: + cache = ResourceCache() + return cache.get(self) + + @cached_property + def bytes(self): + return self.finder.get_bytes(self) + + @cached_property + def size(self): + return self.finder.get_size(self) + + +class ResourceContainer(ResourceBase): + is_container = True # Backwards compatibility + + @cached_property + def resources(self): + return self.finder.get_resources(self) + + +class ResourceFinder(object): + """ + Resource finder for file system resources. + """ + + if sys.platform.startswith('java'): + skipped_extensions = ('.pyc', '.pyo', '.class') + else: + skipped_extensions = ('.pyc', '.pyo') + + def __init__(self, module): + self.module = module + self.loader = getattr(module, '__loader__', None) + self.base = os.path.dirname(getattr(module, '__file__', '')) + + def _adjust_path(self, path): + return os.path.realpath(path) + + def _make_path(self, resource_name): + # Issue #50: need to preserve type of path on Python 2.x + # like os.path._get_sep + if isinstance(resource_name, bytes): # should only happen on 2.x + sep = b'/' + else: + sep = '/' + parts = resource_name.split(sep) + parts.insert(0, self.base) + result = os.path.join(*parts) + return self._adjust_path(result) + + def _find(self, path): + return os.path.exists(path) + + def get_cache_info(self, resource): + return None, resource.path + + def find(self, resource_name): + path = self._make_path(resource_name) + if not self._find(path): + result = None + else: + if self._is_directory(path): + result = ResourceContainer(self, resource_name) + else: + result = Resource(self, resource_name) + result.path = path + return result + + def get_stream(self, resource): + return open(resource.path, 'rb') + + def get_bytes(self, resource): + with open(resource.path, 'rb') as f: + return f.read() + + def get_size(self, resource): + return os.path.getsize(resource.path) + + def get_resources(self, resource): + def allowed(f): + return (f != '__pycache__' and not + f.endswith(self.skipped_extensions)) + return set([f for f in os.listdir(resource.path) if allowed(f)]) + + def is_container(self, resource): + return self._is_directory(resource.path) + + _is_directory = staticmethod(os.path.isdir) + + def iterator(self, resource_name): + resource = self.find(resource_name) + if resource is not None: + todo = [resource] + while todo: + resource = todo.pop(0) + yield resource + if resource.is_container: + rname = resource.name + for name in resource.resources: + if not rname: + new_name = name + else: + new_name = '/'.join([rname, name]) + child = self.find(new_name) + if child.is_container: + todo.append(child) + else: + yield child + + +class ZipResourceFinder(ResourceFinder): + """ + Resource finder for resources in .zip files. + """ + def __init__(self, module): + super(ZipResourceFinder, self).__init__(module) + archive = self.loader.archive + self.prefix_len = 1 + len(archive) + # PyPy doesn't have a _files attr on zipimporter, and you can't set one + if hasattr(self.loader, '_files'): + self._files = self.loader._files + else: + self._files = zipimport._zip_directory_cache[archive] + self.index = sorted(self._files) + + def _adjust_path(self, path): + return path + + def _find(self, path): + path = path[self.prefix_len:] + if path in self._files: + result = True + else: + if path and path[-1] != os.sep: + path = path + os.sep + i = bisect.bisect(self.index, path) + try: + result = self.index[i].startswith(path) + except IndexError: + result = False + if not result: + logger.debug('_find failed: %r %r', path, self.loader.prefix) + else: + logger.debug('_find worked: %r %r', path, self.loader.prefix) + return result + + def get_cache_info(self, resource): + prefix = self.loader.archive + path = resource.path[1 + len(prefix):] + return prefix, path + + def get_bytes(self, resource): + return self.loader.get_data(resource.path) + + def get_stream(self, resource): + return io.BytesIO(self.get_bytes(resource)) + + def get_size(self, resource): + path = resource.path[self.prefix_len:] + return self._files[path][3] + + def get_resources(self, resource): + path = resource.path[self.prefix_len:] + if path and path[-1] != os.sep: + path += os.sep + plen = len(path) + result = set() + i = bisect.bisect(self.index, path) + while i < len(self.index): + if not self.index[i].startswith(path): + break + s = self.index[i][plen:] + result.add(s.split(os.sep, 1)[0]) # only immediate children + i += 1 + return result + + def _is_directory(self, path): + path = path[self.prefix_len:] + if path and path[-1] != os.sep: + path += os.sep + i = bisect.bisect(self.index, path) + try: + result = self.index[i].startswith(path) + except IndexError: + result = False + return result + + +_finder_registry = { + type(None): ResourceFinder, + zipimport.zipimporter: ZipResourceFinder +} + +try: + # In Python 3.6, _frozen_importlib -> _frozen_importlib_external + try: + import _frozen_importlib_external as _fi + except ImportError: + import _frozen_importlib as _fi + _finder_registry[_fi.SourceFileLoader] = ResourceFinder + _finder_registry[_fi.FileFinder] = ResourceFinder + # See issue #146 + _finder_registry[_fi.SourcelessFileLoader] = ResourceFinder + del _fi +except (ImportError, AttributeError): + pass + + +def register_finder(loader, finder_maker): + _finder_registry[type(loader)] = finder_maker + + +_finder_cache = {} + + +def finder(package): + """ + Return a resource finder for a package. + :param package: The name of the package. + :return: A :class:`ResourceFinder` instance for the package. + """ + if package in _finder_cache: + result = _finder_cache[package] + else: + if package not in sys.modules: + __import__(package) + module = sys.modules[package] + path = getattr(module, '__path__', None) + if path is None: + raise DistlibException('You cannot get a finder for a module, ' + 'only for a package') + loader = getattr(module, '__loader__', None) + finder_maker = _finder_registry.get(type(loader)) + if finder_maker is None: + raise DistlibException('Unable to locate finder for %r' % package) + result = finder_maker(module) + _finder_cache[package] = result + return result + + +_dummy_module = types.ModuleType(str('__dummy__')) + + +def finder_for_path(path): + """ + Return a resource finder for a path, which should represent a container. + + :param path: The path. + :return: A :class:`ResourceFinder` instance for the path. + """ + result = None + # calls any path hooks, gets importer into cache + pkgutil.get_importer(path) + loader = sys.path_importer_cache.get(path) + finder = _finder_registry.get(type(loader)) + if finder: + module = _dummy_module + module.__file__ = os.path.join(path, '') + module.__loader__ = loader + result = finder(module) + return result diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/scripts.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/scripts.py new file mode 100644 index 0000000..913912c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/scripts.py @@ -0,0 +1,429 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2015 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from io import BytesIO +import logging +import os +import re +import struct +import sys + +from .compat import sysconfig, detect_encoding, ZipFile +from .resources import finder +from .util import (FileOperator, get_export_entry, convert_path, + get_executable, get_platform, in_venv) + +logger = logging.getLogger(__name__) + +_DEFAULT_MANIFEST = ''' + + + + + + + + + + + + +'''.strip() + +# check if Python is called on the first line with this expression +FIRST_LINE_RE = re.compile(b'^#!.*pythonw?[0-9.]*([ \t].*)?$') +SCRIPT_TEMPLATE = r'''# -*- coding: utf-8 -*- +import re +import sys +from %(module)s import %(import_name)s +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(%(func)s()) +''' + + +def enquote_executable(executable): + if ' ' in executable: + # make sure we quote only the executable in case of env + # for example /usr/bin/env "/dir with spaces/bin/jython" + # instead of "/usr/bin/env /dir with spaces/bin/jython" + # otherwise whole + if executable.startswith('/usr/bin/env '): + env, _executable = executable.split(' ', 1) + if ' ' in _executable and not _executable.startswith('"'): + executable = '%s "%s"' % (env, _executable) + else: + if not executable.startswith('"'): + executable = '"%s"' % executable + return executable + +# Keep the old name around (for now), as there is at least one project using it! +_enquote_executable = enquote_executable + +class ScriptMaker(object): + """ + A class to copy or create scripts from source scripts or callable + specifications. + """ + script_template = SCRIPT_TEMPLATE + + executable = None # for shebangs + + def __init__(self, source_dir, target_dir, add_launchers=True, + dry_run=False, fileop=None): + self.source_dir = source_dir + self.target_dir = target_dir + self.add_launchers = add_launchers + self.force = False + self.clobber = False + # It only makes sense to set mode bits on POSIX. + self.set_mode = (os.name == 'posix') or (os.name == 'java' and + os._name == 'posix') + self.variants = set(('', 'X.Y')) + self._fileop = fileop or FileOperator(dry_run) + + self._is_nt = os.name == 'nt' or ( + os.name == 'java' and os._name == 'nt') + self.version_info = sys.version_info + + def _get_alternate_executable(self, executable, options): + if options.get('gui', False) and self._is_nt: # pragma: no cover + dn, fn = os.path.split(executable) + fn = fn.replace('python', 'pythonw') + executable = os.path.join(dn, fn) + return executable + + if sys.platform.startswith('java'): # pragma: no cover + def _is_shell(self, executable): + """ + Determine if the specified executable is a script + (contains a #! line) + """ + try: + with open(executable) as fp: + return fp.read(2) == '#!' + except (OSError, IOError): + logger.warning('Failed to open %s', executable) + return False + + def _fix_jython_executable(self, executable): + if self._is_shell(executable): + # Workaround for Jython is not needed on Linux systems. + import java + + if java.lang.System.getProperty('os.name') == 'Linux': + return executable + elif executable.lower().endswith('jython.exe'): + # Use wrapper exe for Jython on Windows + return executable + return '/usr/bin/env %s' % executable + + def _build_shebang(self, executable, post_interp): + """ + Build a shebang line. In the simple case (on Windows, or a shebang line + which is not too long or contains spaces) use a simple formulation for + the shebang. Otherwise, use /bin/sh as the executable, with a contrived + shebang which allows the script to run either under Python or sh, using + suitable quoting. Thanks to Harald Nordgren for his input. + + See also: http://www.in-ulm.de/~mascheck/various/shebang/#length + https://hg.mozilla.org/mozilla-central/file/tip/mach + """ + if os.name != 'posix': + simple_shebang = True + else: + # Add 3 for '#!' prefix and newline suffix. + shebang_length = len(executable) + len(post_interp) + 3 + if sys.platform == 'darwin': + max_shebang_length = 512 + else: + max_shebang_length = 127 + simple_shebang = ((b' ' not in executable) and + (shebang_length <= max_shebang_length)) + + if simple_shebang: + result = b'#!' + executable + post_interp + b'\n' + else: + result = b'#!/bin/sh\n' + result += b"'''exec' " + executable + post_interp + b' "$0" "$@"\n' + result += b"' '''" + return result + + def _get_shebang(self, encoding, post_interp=b'', options=None): + enquote = True + if self.executable: + executable = self.executable + enquote = False # assume this will be taken care of + elif not sysconfig.is_python_build(): + executable = get_executable() + elif in_venv(): # pragma: no cover + executable = os.path.join(sysconfig.get_path('scripts'), + 'python%s' % sysconfig.get_config_var('EXE')) + else: # pragma: no cover + executable = os.path.join( + sysconfig.get_config_var('BINDIR'), + 'python%s%s' % (sysconfig.get_config_var('VERSION'), + sysconfig.get_config_var('EXE'))) + if not os.path.isfile(executable): + # for Python builds from source on Windows, no Python executables with + # a version suffix are created, so we use python.exe + executable = os.path.join(sysconfig.get_config_var('BINDIR'), + 'python%s' % (sysconfig.get_config_var('EXE'))) + if options: + executable = self._get_alternate_executable(executable, options) + + if sys.platform.startswith('java'): # pragma: no cover + executable = self._fix_jython_executable(executable) + + # Normalise case for Windows - COMMENTED OUT + # executable = os.path.normcase(executable) + # N.B. The normalising operation above has been commented out: See + # issue #124. Although paths in Windows are generally case-insensitive, + # they aren't always. For example, a path containing a ẞ (which is a + # LATIN CAPITAL LETTER SHARP S - U+1E9E) is normcased to ß (which is a + # LATIN SMALL LETTER SHARP S' - U+00DF). The two are not considered by + # Windows as equivalent in path names. + + # If the user didn't specify an executable, it may be necessary to + # cater for executable paths with spaces (not uncommon on Windows) + if enquote: + executable = enquote_executable(executable) + # Issue #51: don't use fsencode, since we later try to + # check that the shebang is decodable using utf-8. + executable = executable.encode('utf-8') + # in case of IronPython, play safe and enable frames support + if (sys.platform == 'cli' and '-X:Frames' not in post_interp + and '-X:FullFrames' not in post_interp): # pragma: no cover + post_interp += b' -X:Frames' + shebang = self._build_shebang(executable, post_interp) + # Python parser starts to read a script using UTF-8 until + # it gets a #coding:xxx cookie. The shebang has to be the + # first line of a file, the #coding:xxx cookie cannot be + # written before. So the shebang has to be decodable from + # UTF-8. + try: + shebang.decode('utf-8') + except UnicodeDecodeError: # pragma: no cover + raise ValueError( + 'The shebang (%r) is not decodable from utf-8' % shebang) + # If the script is encoded to a custom encoding (use a + # #coding:xxx cookie), the shebang has to be decodable from + # the script encoding too. + if encoding != 'utf-8': + try: + shebang.decode(encoding) + except UnicodeDecodeError: # pragma: no cover + raise ValueError( + 'The shebang (%r) is not decodable ' + 'from the script encoding (%r)' % (shebang, encoding)) + return shebang + + def _get_script_text(self, entry): + return self.script_template % dict(module=entry.prefix, + import_name=entry.suffix.split('.')[0], + func=entry.suffix) + + manifest = _DEFAULT_MANIFEST + + def get_manifest(self, exename): + base = os.path.basename(exename) + return self.manifest % base + + def _write_script(self, names, shebang, script_bytes, filenames, ext): + use_launcher = self.add_launchers and self._is_nt + linesep = os.linesep.encode('utf-8') + if not shebang.endswith(linesep): + shebang += linesep + if not use_launcher: + script_bytes = shebang + script_bytes + else: # pragma: no cover + if ext == 'py': + launcher = self._get_launcher('t') + else: + launcher = self._get_launcher('w') + stream = BytesIO() + with ZipFile(stream, 'w') as zf: + zf.writestr('__main__.py', script_bytes) + zip_data = stream.getvalue() + script_bytes = launcher + shebang + zip_data + for name in names: + outname = os.path.join(self.target_dir, name) + if use_launcher: # pragma: no cover + n, e = os.path.splitext(outname) + if e.startswith('.py'): + outname = n + outname = '%s.exe' % outname + try: + self._fileop.write_binary_file(outname, script_bytes) + except Exception: + # Failed writing an executable - it might be in use. + logger.warning('Failed to write executable - trying to ' + 'use .deleteme logic') + dfname = '%s.deleteme' % outname + if os.path.exists(dfname): + os.remove(dfname) # Not allowed to fail here + os.rename(outname, dfname) # nor here + self._fileop.write_binary_file(outname, script_bytes) + logger.debug('Able to replace executable using ' + '.deleteme logic') + try: + os.remove(dfname) + except Exception: + pass # still in use - ignore error + else: + if self._is_nt and not outname.endswith('.' + ext): # pragma: no cover + outname = '%s.%s' % (outname, ext) + if os.path.exists(outname) and not self.clobber: + logger.warning('Skipping existing file %s', outname) + continue + self._fileop.write_binary_file(outname, script_bytes) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + + variant_separator = '-' + + def get_script_filenames(self, name): + result = set() + if '' in self.variants: + result.add(name) + if 'X' in self.variants: + result.add('%s%s' % (name, self.version_info[0])) + if 'X.Y' in self.variants: + result.add('%s%s%s.%s' % (name, self.variant_separator, + self.version_info[0], self.version_info[1])) + return result + + def _make_script(self, entry, filenames, options=None): + post_interp = b'' + if options: + args = options.get('interpreter_args', []) + if args: + args = ' %s' % ' '.join(args) + post_interp = args.encode('utf-8') + shebang = self._get_shebang('utf-8', post_interp, options=options) + script = self._get_script_text(entry).encode('utf-8') + scriptnames = self.get_script_filenames(entry.name) + if options and options.get('gui', False): + ext = 'pyw' + else: + ext = 'py' + self._write_script(scriptnames, shebang, script, filenames, ext) + + def _copy_script(self, script, filenames): + adjust = False + script = os.path.join(self.source_dir, convert_path(script)) + outname = os.path.join(self.target_dir, os.path.basename(script)) + if not self.force and not self._fileop.newer(script, outname): + logger.debug('not copying %s (up-to-date)', script) + return + + # Always open the file, but ignore failures in dry-run mode -- + # that way, we'll get accurate feedback if we can read the + # script. + try: + f = open(script, 'rb') + except IOError: # pragma: no cover + if not self.dry_run: + raise + f = None + else: + first_line = f.readline() + if not first_line: # pragma: no cover + logger.warning('%s is an empty file (skipping)', script) + return + + match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) + if match: + adjust = True + post_interp = match.group(1) or b'' + + if not adjust: + if f: + f.close() + self._fileop.copy_file(script, outname) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + else: + logger.info('copying and adjusting %s -> %s', script, + self.target_dir) + if not self._fileop.dry_run: + encoding, lines = detect_encoding(f.readline) + f.seek(0) + shebang = self._get_shebang(encoding, post_interp) + if b'pythonw' in first_line: # pragma: no cover + ext = 'pyw' + else: + ext = 'py' + n = os.path.basename(outname) + self._write_script([n], shebang, f.read(), filenames, ext) + if f: + f.close() + + @property + def dry_run(self): + return self._fileop.dry_run + + @dry_run.setter + def dry_run(self, value): + self._fileop.dry_run = value + + if os.name == 'nt' or (os.name == 'java' and os._name == 'nt'): # pragma: no cover + # Executable launcher support. + # Launchers are from https://bitbucket.org/vinay.sajip/simple_launcher/ + + def _get_launcher(self, kind): + if struct.calcsize('P') == 8: # 64-bit + bits = '64' + else: + bits = '32' + platform_suffix = '-arm' if get_platform() == 'win-arm64' else '' + name = '%s%s%s.exe' % (kind, bits, platform_suffix) + # Issue 31: don't hardcode an absolute package name, but + # determine it relative to the current package + distlib_package = __name__.rsplit('.', 1)[0] + resource = finder(distlib_package).find(name) + if not resource: + msg = ('Unable to find resource %s in package %s' % (name, + distlib_package)) + raise ValueError(msg) + return resource.bytes + + # Public API follows + + def make(self, specification, options=None): + """ + Make a script. + + :param specification: The specification, which is either a valid export + entry specification (to make a script from a + callable) or a filename (to make a script by + copying from a source location). + :param options: A dictionary of options controlling script generation. + :return: A list of all absolute pathnames written to. + """ + filenames = [] + entry = get_export_entry(specification) + if entry is None: + self._copy_script(specification, filenames) + else: + self._make_script(entry, filenames, options=options) + return filenames + + def make_multiple(self, specifications, options=None): + """ + Take a list of specifications and make scripts from them, + :param specifications: A list of specifications. + :return: A list of all absolute pathnames written to, + """ + filenames = [] + for specification in specifications: + filenames.extend(self.make(specification, options)) + return filenames diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/util.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/util.py new file mode 100644 index 0000000..80bfc86 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/util.py @@ -0,0 +1,1969 @@ +# +# Copyright (C) 2012-2021 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import codecs +from collections import deque +import contextlib +import csv +from glob import iglob as std_iglob +import io +import json +import logging +import os +import py_compile +import re +import socket +try: + import ssl +except ImportError: # pragma: no cover + ssl = None +import subprocess +import sys +import tarfile +import tempfile +import textwrap + +try: + import threading +except ImportError: # pragma: no cover + import dummy_threading as threading +import time + +from . import DistlibException +from .compat import (string_types, text_type, shutil, raw_input, StringIO, + cache_from_source, urlopen, urljoin, httplib, xmlrpclib, + splittype, HTTPHandler, BaseConfigurator, valid_ident, + Container, configparser, URLError, ZipFile, fsdecode, + unquote, urlparse) + +logger = logging.getLogger(__name__) + +# +# Requirement parsing code as per PEP 508 +# + +IDENTIFIER = re.compile(r'^([\w\.-]+)\s*') +VERSION_IDENTIFIER = re.compile(r'^([\w\.*+-]+)\s*') +COMPARE_OP = re.compile(r'^(<=?|>=?|={2,3}|[~!]=)\s*') +MARKER_OP = re.compile(r'^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*') +OR = re.compile(r'^or\b\s*') +AND = re.compile(r'^and\b\s*') +NON_SPACE = re.compile(r'(\S+)\s*') +STRING_CHUNK = re.compile(r'([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)') + + +def parse_marker(marker_string): + """ + Parse a marker string and return a dictionary containing a marker expression. + + The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in + the expression grammar, or strings. A string contained in quotes is to be + interpreted as a literal string, and a string not contained in quotes is a + variable (such as os_name). + """ + def marker_var(remaining): + # either identifier, or literal string + m = IDENTIFIER.match(remaining) + if m: + result = m.groups()[0] + remaining = remaining[m.end():] + elif not remaining: + raise SyntaxError('unexpected end of input') + else: + q = remaining[0] + if q not in '\'"': + raise SyntaxError('invalid expression: %s' % remaining) + oq = '\'"'.replace(q, '') + remaining = remaining[1:] + parts = [q] + while remaining: + # either a string chunk, or oq, or q to terminate + if remaining[0] == q: + break + elif remaining[0] == oq: + parts.append(oq) + remaining = remaining[1:] + else: + m = STRING_CHUNK.match(remaining) + if not m: + raise SyntaxError('error in string literal: %s' % remaining) + parts.append(m.groups()[0]) + remaining = remaining[m.end():] + else: + s = ''.join(parts) + raise SyntaxError('unterminated string: %s' % s) + parts.append(q) + result = ''.join(parts) + remaining = remaining[1:].lstrip() # skip past closing quote + return result, remaining + + def marker_expr(remaining): + if remaining and remaining[0] == '(': + result, remaining = marker(remaining[1:].lstrip()) + if remaining[0] != ')': + raise SyntaxError('unterminated parenthesis: %s' % remaining) + remaining = remaining[1:].lstrip() + else: + lhs, remaining = marker_var(remaining) + while remaining: + m = MARKER_OP.match(remaining) + if not m: + break + op = m.groups()[0] + remaining = remaining[m.end():] + rhs, remaining = marker_var(remaining) + lhs = {'op': op, 'lhs': lhs, 'rhs': rhs} + result = lhs + return result, remaining + + def marker_and(remaining): + lhs, remaining = marker_expr(remaining) + while remaining: + m = AND.match(remaining) + if not m: + break + remaining = remaining[m.end():] + rhs, remaining = marker_expr(remaining) + lhs = {'op': 'and', 'lhs': lhs, 'rhs': rhs} + return lhs, remaining + + def marker(remaining): + lhs, remaining = marker_and(remaining) + while remaining: + m = OR.match(remaining) + if not m: + break + remaining = remaining[m.end():] + rhs, remaining = marker_and(remaining) + lhs = {'op': 'or', 'lhs': lhs, 'rhs': rhs} + return lhs, remaining + + return marker(marker_string) + + +def parse_requirement(req): + """ + Parse a requirement passed in as a string. Return a Container + whose attributes contain the various parts of the requirement. + """ + remaining = req.strip() + if not remaining or remaining.startswith('#'): + return None + m = IDENTIFIER.match(remaining) + if not m: + raise SyntaxError('name expected: %s' % remaining) + distname = m.groups()[0] + remaining = remaining[m.end():] + extras = mark_expr = versions = uri = None + if remaining and remaining[0] == '[': + i = remaining.find(']', 1) + if i < 0: + raise SyntaxError('unterminated extra: %s' % remaining) + s = remaining[1:i] + remaining = remaining[i + 1:].lstrip() + extras = [] + while s: + m = IDENTIFIER.match(s) + if not m: + raise SyntaxError('malformed extra: %s' % s) + extras.append(m.groups()[0]) + s = s[m.end():] + if not s: + break + if s[0] != ',': + raise SyntaxError('comma expected in extras: %s' % s) + s = s[1:].lstrip() + if not extras: + extras = None + if remaining: + if remaining[0] == '@': + # it's a URI + remaining = remaining[1:].lstrip() + m = NON_SPACE.match(remaining) + if not m: + raise SyntaxError('invalid URI: %s' % remaining) + uri = m.groups()[0] + t = urlparse(uri) + # there are issues with Python and URL parsing, so this test + # is a bit crude. See bpo-20271, bpo-23505. Python doesn't + # always parse invalid URLs correctly - it should raise + # exceptions for malformed URLs + if not (t.scheme and t.netloc): + raise SyntaxError('Invalid URL: %s' % uri) + remaining = remaining[m.end():].lstrip() + else: + + def get_versions(ver_remaining): + """ + Return a list of operator, version tuples if any are + specified, else None. + """ + m = COMPARE_OP.match(ver_remaining) + versions = None + if m: + versions = [] + while True: + op = m.groups()[0] + ver_remaining = ver_remaining[m.end():] + m = VERSION_IDENTIFIER.match(ver_remaining) + if not m: + raise SyntaxError('invalid version: %s' % ver_remaining) + v = m.groups()[0] + versions.append((op, v)) + ver_remaining = ver_remaining[m.end():] + if not ver_remaining or ver_remaining[0] != ',': + break + ver_remaining = ver_remaining[1:].lstrip() + # Some packages have a trailing comma which would break things + # See issue #148 + if not ver_remaining: + break + m = COMPARE_OP.match(ver_remaining) + if not m: + raise SyntaxError('invalid constraint: %s' % ver_remaining) + if not versions: + versions = None + return versions, ver_remaining + + if remaining[0] != '(': + versions, remaining = get_versions(remaining) + else: + i = remaining.find(')', 1) + if i < 0: + raise SyntaxError('unterminated parenthesis: %s' % remaining) + s = remaining[1:i] + remaining = remaining[i + 1:].lstrip() + # As a special diversion from PEP 508, allow a version number + # a.b.c in parentheses as a synonym for ~= a.b.c (because this + # is allowed in earlier PEPs) + if COMPARE_OP.match(s): + versions, _ = get_versions(s) + else: + m = VERSION_IDENTIFIER.match(s) + if not m: + raise SyntaxError('invalid constraint: %s' % s) + v = m.groups()[0] + s = s[m.end():].lstrip() + if s: + raise SyntaxError('invalid constraint: %s' % s) + versions = [('~=', v)] + + if remaining: + if remaining[0] != ';': + raise SyntaxError('invalid requirement: %s' % remaining) + remaining = remaining[1:].lstrip() + + mark_expr, remaining = parse_marker(remaining) + + if remaining and remaining[0] != '#': + raise SyntaxError('unexpected trailing data: %s' % remaining) + + if not versions: + rs = distname + else: + rs = '%s %s' % (distname, ', '.join(['%s %s' % con for con in versions])) + return Container(name=distname, extras=extras, constraints=versions, + marker=mark_expr, url=uri, requirement=rs) + + +def get_resources_dests(resources_root, rules): + """Find destinations for resources files""" + + def get_rel_path(root, path): + # normalizes and returns a lstripped-/-separated path + root = root.replace(os.path.sep, '/') + path = path.replace(os.path.sep, '/') + assert path.startswith(root) + return path[len(root):].lstrip('/') + + destinations = {} + for base, suffix, dest in rules: + prefix = os.path.join(resources_root, base) + for abs_base in iglob(prefix): + abs_glob = os.path.join(abs_base, suffix) + for abs_path in iglob(abs_glob): + resource_file = get_rel_path(resources_root, abs_path) + if dest is None: # remove the entry if it was here + destinations.pop(resource_file, None) + else: + rel_path = get_rel_path(abs_base, abs_path) + rel_dest = dest.replace(os.path.sep, '/').rstrip('/') + destinations[resource_file] = rel_dest + '/' + rel_path + return destinations + + +def in_venv(): + if hasattr(sys, 'real_prefix'): + # virtualenv venvs + result = True + else: + # PEP 405 venvs + result = sys.prefix != getattr(sys, 'base_prefix', sys.prefix) + return result + + +def get_executable(): +# The __PYVENV_LAUNCHER__ dance is apparently no longer needed, as +# changes to the stub launcher mean that sys.executable always points +# to the stub on OS X +# if sys.platform == 'darwin' and ('__PYVENV_LAUNCHER__' +# in os.environ): +# result = os.environ['__PYVENV_LAUNCHER__'] +# else: +# result = sys.executable +# return result + # Avoid normcasing: see issue #143 + # result = os.path.normcase(sys.executable) + result = sys.executable + if not isinstance(result, text_type): + result = fsdecode(result) + return result + + +def proceed(prompt, allowed_chars, error_prompt=None, default=None): + p = prompt + while True: + s = raw_input(p) + p = prompt + if not s and default: + s = default + if s: + c = s[0].lower() + if c in allowed_chars: + break + if error_prompt: + p = '%c: %s\n%s' % (c, error_prompt, prompt) + return c + + +def extract_by_key(d, keys): + if isinstance(keys, string_types): + keys = keys.split() + result = {} + for key in keys: + if key in d: + result[key] = d[key] + return result + +def read_exports(stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + # Try to load as JSON, falling back on legacy format + data = stream.read() + stream = StringIO(data) + try: + jdata = json.load(stream) + result = jdata['extensions']['python.exports']['exports'] + for group, entries in result.items(): + for k, v in entries.items(): + s = '%s = %s' % (k, v) + entry = get_export_entry(s) + assert entry is not None + entries[k] = entry + return result + except Exception: + stream.seek(0, 0) + + def read_stream(cp, stream): + if hasattr(cp, 'read_file'): + cp.read_file(stream) + else: + cp.readfp(stream) + + cp = configparser.ConfigParser() + try: + read_stream(cp, stream) + except configparser.MissingSectionHeaderError: + stream.close() + data = textwrap.dedent(data) + stream = StringIO(data) + read_stream(cp, stream) + + result = {} + for key in cp.sections(): + result[key] = entries = {} + for name, value in cp.items(key): + s = '%s = %s' % (name, value) + entry = get_export_entry(s) + assert entry is not None + #entry.dist = self + entries[name] = entry + return result + + +def write_exports(exports, stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getwriter('utf-8')(stream) + cp = configparser.ConfigParser() + for k, v in exports.items(): + # TODO check k, v for valid values + cp.add_section(k) + for entry in v.values(): + if entry.suffix is None: + s = entry.prefix + else: + s = '%s:%s' % (entry.prefix, entry.suffix) + if entry.flags: + s = '%s [%s]' % (s, ', '.join(entry.flags)) + cp.set(k, entry.name, s) + cp.write(stream) + + +@contextlib.contextmanager +def tempdir(): + td = tempfile.mkdtemp() + try: + yield td + finally: + shutil.rmtree(td) + +@contextlib.contextmanager +def chdir(d): + cwd = os.getcwd() + try: + os.chdir(d) + yield + finally: + os.chdir(cwd) + + +@contextlib.contextmanager +def socket_timeout(seconds=15): + cto = socket.getdefaulttimeout() + try: + socket.setdefaulttimeout(seconds) + yield + finally: + socket.setdefaulttimeout(cto) + + +class cached_property(object): + def __init__(self, func): + self.func = func + #for attr in ('__name__', '__module__', '__doc__'): + # setattr(self, attr, getattr(func, attr, None)) + + def __get__(self, obj, cls=None): + if obj is None: + return self + value = self.func(obj) + object.__setattr__(obj, self.func.__name__, value) + #obj.__dict__[self.func.__name__] = value = self.func(obj) + return value + +def convert_path(pathname): + """Return 'pathname' as a name that will work on the native filesystem. + + The path is split on '/' and put back together again using the current + directory separator. Needed because filenames in the setup script are + always supplied in Unix style, and have to be converted to the local + convention before we can actually use them in the filesystem. Raises + ValueError on non-Unix-ish systems if 'pathname' either starts or + ends with a slash. + """ + if os.sep == '/': + return pathname + if not pathname: + return pathname + if pathname[0] == '/': + raise ValueError("path '%s' cannot be absolute" % pathname) + if pathname[-1] == '/': + raise ValueError("path '%s' cannot end with '/'" % pathname) + + paths = pathname.split('/') + while os.curdir in paths: + paths.remove(os.curdir) + if not paths: + return os.curdir + return os.path.join(*paths) + + +class FileOperator(object): + def __init__(self, dry_run=False): + self.dry_run = dry_run + self.ensured = set() + self._init_record() + + def _init_record(self): + self.record = False + self.files_written = set() + self.dirs_created = set() + + def record_as_written(self, path): + if self.record: + self.files_written.add(path) + + def newer(self, source, target): + """Tell if the target is newer than the source. + + Returns true if 'source' exists and is more recently modified than + 'target', or if 'source' exists and 'target' doesn't. + + Returns false if both exist and 'target' is the same age or younger + than 'source'. Raise PackagingFileError if 'source' does not exist. + + Note that this test is not very accurate: files created in the same + second will have the same "age". + """ + if not os.path.exists(source): + raise DistlibException("file '%r' does not exist" % + os.path.abspath(source)) + if not os.path.exists(target): + return True + + return os.stat(source).st_mtime > os.stat(target).st_mtime + + def copy_file(self, infile, outfile, check=True): + """Copy a file respecting dry-run and force flags. + """ + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying %s to %s', infile, outfile) + if not self.dry_run: + msg = None + if check: + if os.path.islink(outfile): + msg = '%s is a symlink' % outfile + elif os.path.exists(outfile) and not os.path.isfile(outfile): + msg = '%s is a non-regular file' % outfile + if msg: + raise ValueError(msg + ' which would be overwritten') + shutil.copyfile(infile, outfile) + self.record_as_written(outfile) + + def copy_stream(self, instream, outfile, encoding=None): + assert not os.path.isdir(outfile) + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying stream %s to %s', instream, outfile) + if not self.dry_run: + if encoding is None: + outstream = open(outfile, 'wb') + else: + outstream = codecs.open(outfile, 'w', encoding=encoding) + try: + shutil.copyfileobj(instream, outstream) + finally: + outstream.close() + self.record_as_written(outfile) + + def write_binary_file(self, path, data): + self.ensure_dir(os.path.dirname(path)) + if not self.dry_run: + if os.path.exists(path): + os.remove(path) + with open(path, 'wb') as f: + f.write(data) + self.record_as_written(path) + + def write_text_file(self, path, data, encoding): + self.write_binary_file(path, data.encode(encoding)) + + def set_mode(self, bits, mask, files): + if os.name == 'posix' or (os.name == 'java' and os._name == 'posix'): + # Set the executable bits (owner, group, and world) on + # all the files specified. + for f in files: + if self.dry_run: + logger.info("changing mode of %s", f) + else: + mode = (os.stat(f).st_mode | bits) & mask + logger.info("changing mode of %s to %o", f, mode) + os.chmod(f, mode) + + set_executable_mode = lambda s, f: s.set_mode(0o555, 0o7777, f) + + def ensure_dir(self, path): + path = os.path.abspath(path) + if path not in self.ensured and not os.path.exists(path): + self.ensured.add(path) + d, f = os.path.split(path) + self.ensure_dir(d) + logger.info('Creating %s' % path) + if not self.dry_run: + os.mkdir(path) + if self.record: + self.dirs_created.add(path) + + def byte_compile(self, path, optimize=False, force=False, prefix=None, hashed_invalidation=False): + dpath = cache_from_source(path, not optimize) + logger.info('Byte-compiling %s to %s', path, dpath) + if not self.dry_run: + if force or self.newer(path, dpath): + if not prefix: + diagpath = None + else: + assert path.startswith(prefix) + diagpath = path[len(prefix):] + compile_kwargs = {} + if hashed_invalidation and hasattr(py_compile, 'PycInvalidationMode'): + compile_kwargs['invalidation_mode'] = py_compile.PycInvalidationMode.CHECKED_HASH + py_compile.compile(path, dpath, diagpath, True, **compile_kwargs) # raise error + self.record_as_written(dpath) + return dpath + + def ensure_removed(self, path): + if os.path.exists(path): + if os.path.isdir(path) and not os.path.islink(path): + logger.debug('Removing directory tree at %s', path) + if not self.dry_run: + shutil.rmtree(path) + if self.record: + if path in self.dirs_created: + self.dirs_created.remove(path) + else: + if os.path.islink(path): + s = 'link' + else: + s = 'file' + logger.debug('Removing %s %s', s, path) + if not self.dry_run: + os.remove(path) + if self.record: + if path in self.files_written: + self.files_written.remove(path) + + def is_writable(self, path): + result = False + while not result: + if os.path.exists(path): + result = os.access(path, os.W_OK) + break + parent = os.path.dirname(path) + if parent == path: + break + path = parent + return result + + def commit(self): + """ + Commit recorded changes, turn off recording, return + changes. + """ + assert self.record + result = self.files_written, self.dirs_created + self._init_record() + return result + + def rollback(self): + if not self.dry_run: + for f in list(self.files_written): + if os.path.exists(f): + os.remove(f) + # dirs should all be empty now, except perhaps for + # __pycache__ subdirs + # reverse so that subdirs appear before their parents + dirs = sorted(self.dirs_created, reverse=True) + for d in dirs: + flist = os.listdir(d) + if flist: + assert flist == ['__pycache__'] + sd = os.path.join(d, flist[0]) + os.rmdir(sd) + os.rmdir(d) # should fail if non-empty + self._init_record() + +def resolve(module_name, dotted_path): + if module_name in sys.modules: + mod = sys.modules[module_name] + else: + mod = __import__(module_name) + if dotted_path is None: + result = mod + else: + parts = dotted_path.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + +class ExportEntry(object): + def __init__(self, name, prefix, suffix, flags): + self.name = name + self.prefix = prefix + self.suffix = suffix + self.flags = flags + + @cached_property + def value(self): + return resolve(self.prefix, self.suffix) + + def __repr__(self): # pragma: no cover + return '' % (self.name, self.prefix, + self.suffix, self.flags) + + def __eq__(self, other): + if not isinstance(other, ExportEntry): + result = False + else: + result = (self.name == other.name and + self.prefix == other.prefix and + self.suffix == other.suffix and + self.flags == other.flags) + return result + + __hash__ = object.__hash__ + + +ENTRY_RE = re.compile(r'''(?P(\w|[-.+])+) + \s*=\s*(?P(\w+)([:\.]\w+)*) + \s*(\[\s*(?P[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? + ''', re.VERBOSE) + +def get_export_entry(specification): + m = ENTRY_RE.search(specification) + if not m: + result = None + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + else: + d = m.groupdict() + name = d['name'] + path = d['callable'] + colons = path.count(':') + if colons == 0: + prefix, suffix = path, None + else: + if colons != 1: + raise DistlibException("Invalid specification " + "'%s'" % specification) + prefix, suffix = path.split(':') + flags = d['flags'] + if flags is None: + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + flags = [] + else: + flags = [f.strip() for f in flags.split(',')] + result = ExportEntry(name, prefix, suffix, flags) + return result + + +def get_cache_base(suffix=None): + """ + Return the default base location for distlib caches. If the directory does + not exist, it is created. Use the suffix provided for the base directory, + and default to '.distlib' if it isn't provided. + + On Windows, if LOCALAPPDATA is defined in the environment, then it is + assumed to be a directory, and will be the parent directory of the result. + On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home + directory - using os.expanduser('~') - will be the parent directory of + the result. + + The result is just the directory '.distlib' in the parent directory as + determined above, or with the name specified with ``suffix``. + """ + if suffix is None: + suffix = '.distlib' + if os.name == 'nt' and 'LOCALAPPDATA' in os.environ: + result = os.path.expandvars('$localappdata') + else: + # Assume posix, or old Windows + result = os.path.expanduser('~') + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if os.path.isdir(result): + usable = os.access(result, os.W_OK) + if not usable: + logger.warning('Directory exists but is not writable: %s', result) + else: + try: + os.makedirs(result) + usable = True + except OSError: + logger.warning('Unable to create %s', result, exc_info=True) + usable = False + if not usable: + result = tempfile.mkdtemp() + logger.warning('Default location unusable, using %s', result) + return os.path.join(result, suffix) + + +def path_to_cache_dir(path): + """ + Convert an absolute path to a directory name for use in a cache. + + The algorithm used is: + + #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. + #. Any occurrence of ``os.sep`` is replaced with ``'--'``. + #. ``'.cache'`` is appended. + """ + d, p = os.path.splitdrive(os.path.abspath(path)) + if d: + d = d.replace(':', '---') + p = p.replace(os.sep, '--') + return d + p + '.cache' + + +def ensure_slash(s): + if not s.endswith('/'): + return s + '/' + return s + + +def parse_credentials(netloc): + username = password = None + if '@' in netloc: + prefix, netloc = netloc.rsplit('@', 1) + if ':' not in prefix: + username = prefix + else: + username, password = prefix.split(':', 1) + if username: + username = unquote(username) + if password: + password = unquote(password) + return username, password, netloc + + +def get_process_umask(): + result = os.umask(0o22) + os.umask(result) + return result + +def is_string_sequence(seq): + result = True + i = None + for i, s in enumerate(seq): + if not isinstance(s, string_types): + result = False + break + assert i is not None + return result + +PROJECT_NAME_AND_VERSION = re.compile('([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-' + '([a-z0-9_.+-]+)', re.I) +PYTHON_VERSION = re.compile(r'-py(\d\.?\d?)') + + +def split_filename(filename, project_name=None): + """ + Extract name, version, python version from a filename (no extension) + + Return name, version, pyver or None + """ + result = None + pyver = None + filename = unquote(filename).replace(' ', '-') + m = PYTHON_VERSION.search(filename) + if m: + pyver = m.group(1) + filename = filename[:m.start()] + if project_name and len(filename) > len(project_name) + 1: + m = re.match(re.escape(project_name) + r'\b', filename) + if m: + n = m.end() + result = filename[:n], filename[n + 1:], pyver + if result is None: + m = PROJECT_NAME_AND_VERSION.match(filename) + if m: + result = m.group(1), m.group(3), pyver + return result + +# Allow spaces in name because of legacy dists like "Twisted Core" +NAME_VERSION_RE = re.compile(r'(?P[\w .-]+)\s*' + r'\(\s*(?P[^\s)]+)\)$') + +def parse_name_and_version(p): + """ + A utility method used to get name and version from a string. + + From e.g. a Provides-Dist value. + + :param p: A value in a form 'foo (1.0)' + :return: The name and version as a tuple. + """ + m = NAME_VERSION_RE.match(p) + if not m: + raise DistlibException('Ill-formed name/version string: \'%s\'' % p) + d = m.groupdict() + return d['name'].strip().lower(), d['ver'] + +def get_extras(requested, available): + result = set() + requested = set(requested or []) + available = set(available or []) + if '*' in requested: + requested.remove('*') + result |= available + for r in requested: + if r == '-': + result.add(r) + elif r.startswith('-'): + unwanted = r[1:] + if unwanted not in available: + logger.warning('undeclared extra: %s' % unwanted) + if unwanted in result: + result.remove(unwanted) + else: + if r not in available: + logger.warning('undeclared extra: %s' % r) + result.add(r) + return result +# +# Extended metadata functionality +# + +def _get_external_data(url): + result = {} + try: + # urlopen might fail if it runs into redirections, + # because of Python issue #13696. Fixed in locators + # using a custom redirect handler. + resp = urlopen(url) + headers = resp.info() + ct = headers.get('Content-Type') + if not ct.startswith('application/json'): + logger.debug('Unexpected response for JSON request: %s', ct) + else: + reader = codecs.getreader('utf-8')(resp) + #data = reader.read().decode('utf-8') + #result = json.loads(data) + result = json.load(reader) + except Exception as e: + logger.exception('Failed to get external data for %s: %s', url, e) + return result + +_external_data_base_url = 'https://www.red-dove.com/pypi/projects/' + +def get_project_data(name): + url = '%s/%s/project.json' % (name[0].upper(), name) + url = urljoin(_external_data_base_url, url) + result = _get_external_data(url) + return result + +def get_package_data(name, version): + url = '%s/%s/package-%s.json' % (name[0].upper(), name, version) + url = urljoin(_external_data_base_url, url) + return _get_external_data(url) + + +class Cache(object): + """ + A class implementing a cache for resources that need to live in the file system + e.g. shared libraries. This class was moved from resources to here because it + could be used by other modules, e.g. the wheel module. + """ + + def __init__(self, base): + """ + Initialise an instance. + + :param base: The base directory where the cache should be located. + """ + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if not os.path.isdir(base): # pragma: no cover + os.makedirs(base) + if (os.stat(base).st_mode & 0o77) != 0: + logger.warning('Directory \'%s\' is not private', base) + self.base = os.path.abspath(os.path.normpath(base)) + + def prefix_to_dir(self, prefix): + """ + Converts a resource prefix to a directory name in the cache. + """ + return path_to_cache_dir(prefix) + + def clear(self): + """ + Clear the cache. + """ + not_removed = [] + for fn in os.listdir(self.base): + fn = os.path.join(self.base, fn) + try: + if os.path.islink(fn) or os.path.isfile(fn): + os.remove(fn) + elif os.path.isdir(fn): + shutil.rmtree(fn) + except Exception: + not_removed.append(fn) + return not_removed + + +class EventMixin(object): + """ + A very simple publish/subscribe system. + """ + def __init__(self): + self._subscribers = {} + + def add(self, event, subscriber, append=True): + """ + Add a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be added (and called when the + event is published). + :param append: Whether to append or prepend the subscriber to an + existing subscriber list for the event. + """ + subs = self._subscribers + if event not in subs: + subs[event] = deque([subscriber]) + else: + sq = subs[event] + if append: + sq.append(subscriber) + else: + sq.appendleft(subscriber) + + def remove(self, event, subscriber): + """ + Remove a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be removed. + """ + subs = self._subscribers + if event not in subs: + raise ValueError('No subscribers: %r' % event) + subs[event].remove(subscriber) + + def get_subscribers(self, event): + """ + Return an iterator for the subscribers for an event. + :param event: The event to return subscribers for. + """ + return iter(self._subscribers.get(event, ())) + + def publish(self, event, *args, **kwargs): + """ + Publish a event and return a list of values returned by its + subscribers. + + :param event: The event to publish. + :param args: The positional arguments to pass to the event's + subscribers. + :param kwargs: The keyword arguments to pass to the event's + subscribers. + """ + result = [] + for subscriber in self.get_subscribers(event): + try: + value = subscriber(event, *args, **kwargs) + except Exception: + logger.exception('Exception during event publication') + value = None + result.append(value) + logger.debug('publish %s: args = %s, kwargs = %s, result = %s', + event, args, kwargs, result) + return result + +# +# Simple sequencing +# +class Sequencer(object): + def __init__(self): + self._preds = {} + self._succs = {} + self._nodes = set() # nodes with no preds/succs + + def add_node(self, node): + self._nodes.add(node) + + def remove_node(self, node, edges=False): + if node in self._nodes: + self._nodes.remove(node) + if edges: + for p in set(self._preds.get(node, ())): + self.remove(p, node) + for s in set(self._succs.get(node, ())): + self.remove(node, s) + # Remove empties + for k, v in list(self._preds.items()): + if not v: + del self._preds[k] + for k, v in list(self._succs.items()): + if not v: + del self._succs[k] + + def add(self, pred, succ): + assert pred != succ + self._preds.setdefault(succ, set()).add(pred) + self._succs.setdefault(pred, set()).add(succ) + + def remove(self, pred, succ): + assert pred != succ + try: + preds = self._preds[succ] + succs = self._succs[pred] + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of anything' % succ) + try: + preds.remove(pred) + succs.remove(succ) + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of %r' % (succ, pred)) + + def is_step(self, step): + return (step in self._preds or step in self._succs or + step in self._nodes) + + def get_steps(self, final): + if not self.is_step(final): + raise ValueError('Unknown: %r' % final) + result = [] + todo = [] + seen = set() + todo.append(final) + while todo: + step = todo.pop(0) + if step in seen: + # if a step was already seen, + # move it to the end (so it will appear earlier + # when reversed on return) ... but not for the + # final step, as that would be confusing for + # users + if step != final: + result.remove(step) + result.append(step) + else: + seen.add(step) + result.append(step) + preds = self._preds.get(step, ()) + todo.extend(preds) + return reversed(result) + + @property + def strong_connections(self): + #http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm + index_counter = [0] + stack = [] + lowlinks = {} + index = {} + result = [] + + graph = self._succs + + def strongconnect(node): + # set the depth index for this node to the smallest unused index + index[node] = index_counter[0] + lowlinks[node] = index_counter[0] + index_counter[0] += 1 + stack.append(node) + + # Consider successors + try: + successors = graph[node] + except Exception: + successors = [] + for successor in successors: + if successor not in lowlinks: + # Successor has not yet been visited + strongconnect(successor) + lowlinks[node] = min(lowlinks[node],lowlinks[successor]) + elif successor in stack: + # the successor is in the stack and hence in the current + # strongly connected component (SCC) + lowlinks[node] = min(lowlinks[node],index[successor]) + + # If `node` is a root node, pop the stack and generate an SCC + if lowlinks[node] == index[node]: + connected_component = [] + + while True: + successor = stack.pop() + connected_component.append(successor) + if successor == node: break + component = tuple(connected_component) + # storing the result + result.append(component) + + for node in graph: + if node not in lowlinks: + strongconnect(node) + + return result + + @property + def dot(self): + result = ['digraph G {'] + for succ in self._preds: + preds = self._preds[succ] + for pred in preds: + result.append(' %s -> %s;' % (pred, succ)) + for node in self._nodes: + result.append(' %s;' % node) + result.append('}') + return '\n'.join(result) + +# +# Unarchiving functionality for zip, tar, tgz, tbz, whl +# + +ARCHIVE_EXTENSIONS = ('.tar.gz', '.tar.bz2', '.tar', '.zip', + '.tgz', '.tbz', '.whl') + +def unarchive(archive_filename, dest_dir, format=None, check=True): + + def check_path(path): + if not isinstance(path, text_type): + path = path.decode('utf-8') + p = os.path.abspath(os.path.join(dest_dir, path)) + if not p.startswith(dest_dir) or p[plen] != os.sep: + raise ValueError('path outside destination: %r' % p) + + dest_dir = os.path.abspath(dest_dir) + plen = len(dest_dir) + archive = None + if format is None: + if archive_filename.endswith(('.zip', '.whl')): + format = 'zip' + elif archive_filename.endswith(('.tar.gz', '.tgz')): + format = 'tgz' + mode = 'r:gz' + elif archive_filename.endswith(('.tar.bz2', '.tbz')): + format = 'tbz' + mode = 'r:bz2' + elif archive_filename.endswith('.tar'): + format = 'tar' + mode = 'r' + else: # pragma: no cover + raise ValueError('Unknown format for %r' % archive_filename) + try: + if format == 'zip': + archive = ZipFile(archive_filename, 'r') + if check: + names = archive.namelist() + for name in names: + check_path(name) + else: + archive = tarfile.open(archive_filename, mode) + if check: + names = archive.getnames() + for name in names: + check_path(name) + if format != 'zip' and sys.version_info[0] < 3: + # See Python issue 17153. If the dest path contains Unicode, + # tarfile extraction fails on Python 2.x if a member path name + # contains non-ASCII characters - it leads to an implicit + # bytes -> unicode conversion using ASCII to decode. + for tarinfo in archive.getmembers(): + if not isinstance(tarinfo.name, text_type): + tarinfo.name = tarinfo.name.decode('utf-8') + archive.extractall(dest_dir) + + finally: + if archive: + archive.close() + + +def zip_dir(directory): + """zip a directory tree into a BytesIO object""" + result = io.BytesIO() + dlen = len(directory) + with ZipFile(result, "w") as zf: + for root, dirs, files in os.walk(directory): + for name in files: + full = os.path.join(root, name) + rel = root[dlen:] + dest = os.path.join(rel, name) + zf.write(full, dest) + return result + +# +# Simple progress bar +# + +UNITS = ('', 'K', 'M', 'G','T','P') + + +class Progress(object): + unknown = 'UNKNOWN' + + def __init__(self, minval=0, maxval=100): + assert maxval is None or maxval >= minval + self.min = self.cur = minval + self.max = maxval + self.started = None + self.elapsed = 0 + self.done = False + + def update(self, curval): + assert self.min <= curval + assert self.max is None or curval <= self.max + self.cur = curval + now = time.time() + if self.started is None: + self.started = now + else: + self.elapsed = now - self.started + + def increment(self, incr): + assert incr >= 0 + self.update(self.cur + incr) + + def start(self): + self.update(self.min) + return self + + def stop(self): + if self.max is not None: + self.update(self.max) + self.done = True + + @property + def maximum(self): + return self.unknown if self.max is None else self.max + + @property + def percentage(self): + if self.done: + result = '100 %' + elif self.max is None: + result = ' ?? %' + else: + v = 100.0 * (self.cur - self.min) / (self.max - self.min) + result = '%3d %%' % v + return result + + def format_duration(self, duration): + if (duration <= 0) and self.max is None or self.cur == self.min: + result = '??:??:??' + #elif duration < 1: + # result = '--:--:--' + else: + result = time.strftime('%H:%M:%S', time.gmtime(duration)) + return result + + @property + def ETA(self): + if self.done: + prefix = 'Done' + t = self.elapsed + #import pdb; pdb.set_trace() + else: + prefix = 'ETA ' + if self.max is None: + t = -1 + elif self.elapsed == 0 or (self.cur == self.min): + t = 0 + else: + #import pdb; pdb.set_trace() + t = float(self.max - self.min) + t /= self.cur - self.min + t = (t - 1) * self.elapsed + return '%s: %s' % (prefix, self.format_duration(t)) + + @property + def speed(self): + if self.elapsed == 0: + result = 0.0 + else: + result = (self.cur - self.min) / self.elapsed + for unit in UNITS: + if result < 1000: + break + result /= 1000.0 + return '%d %sB/s' % (result, unit) + +# +# Glob functionality +# + +RICH_GLOB = re.compile(r'\{([^}]*)\}') +_CHECK_RECURSIVE_GLOB = re.compile(r'[^/\\,{]\*\*|\*\*[^/\\,}]') +_CHECK_MISMATCH_SET = re.compile(r'^[^{]*\}|\{[^}]*$') + + +def iglob(path_glob): + """Extended globbing function that supports ** and {opt1,opt2,opt3}.""" + if _CHECK_RECURSIVE_GLOB.search(path_glob): + msg = """invalid glob %r: recursive glob "**" must be used alone""" + raise ValueError(msg % path_glob) + if _CHECK_MISMATCH_SET.search(path_glob): + msg = """invalid glob %r: mismatching set marker '{' or '}'""" + raise ValueError(msg % path_glob) + return _iglob(path_glob) + + +def _iglob(path_glob): + rich_path_glob = RICH_GLOB.split(path_glob, 1) + if len(rich_path_glob) > 1: + assert len(rich_path_glob) == 3, rich_path_glob + prefix, set, suffix = rich_path_glob + for item in set.split(','): + for path in _iglob(''.join((prefix, item, suffix))): + yield path + else: + if '**' not in path_glob: + for item in std_iglob(path_glob): + yield item + else: + prefix, radical = path_glob.split('**', 1) + if prefix == '': + prefix = '.' + if radical == '': + radical = '*' + else: + # we support both + radical = radical.lstrip('/') + radical = radical.lstrip('\\') + for path, dir, files in os.walk(prefix): + path = os.path.normpath(path) + for fn in _iglob(os.path.join(path, radical)): + yield fn + +if ssl: + from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, + CertificateError) + + +# +# HTTPSConnection which verifies certificates/matches domains +# + + class HTTPSConnection(httplib.HTTPSConnection): + ca_certs = None # set this to the path to the certs file (.pem) + check_domain = True # only used if ca_certs is not None + + # noinspection PyPropertyAccess + def connect(self): + sock = socket.create_connection((self.host, self.port), self.timeout) + if getattr(self, '_tunnel_host', False): + self.sock = sock + self._tunnel() + + if not hasattr(ssl, 'SSLContext'): + # For 2.x + if self.ca_certs: + cert_reqs = ssl.CERT_REQUIRED + else: + cert_reqs = ssl.CERT_NONE + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, + cert_reqs=cert_reqs, + ssl_version=ssl.PROTOCOL_SSLv23, + ca_certs=self.ca_certs) + else: # pragma: no cover + context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) + if hasattr(ssl, 'OP_NO_SSLv2'): + context.options |= ssl.OP_NO_SSLv2 + if self.cert_file: + context.load_cert_chain(self.cert_file, self.key_file) + kwargs = {} + if self.ca_certs: + context.verify_mode = ssl.CERT_REQUIRED + context.load_verify_locations(cafile=self.ca_certs) + if getattr(ssl, 'HAS_SNI', False): + kwargs['server_hostname'] = self.host + self.sock = context.wrap_socket(sock, **kwargs) + if self.ca_certs and self.check_domain: + try: + match_hostname(self.sock.getpeercert(), self.host) + logger.debug('Host verified: %s', self.host) + except CertificateError: # pragma: no cover + self.sock.shutdown(socket.SHUT_RDWR) + self.sock.close() + raise + + class HTTPSHandler(BaseHTTPSHandler): + def __init__(self, ca_certs, check_domain=True): + BaseHTTPSHandler.__init__(self) + self.ca_certs = ca_certs + self.check_domain = check_domain + + def _conn_maker(self, *args, **kwargs): + """ + This is called to create a connection instance. Normally you'd + pass a connection class to do_open, but it doesn't actually check for + a class, and just expects a callable. As long as we behave just as a + constructor would have, we should be OK. If it ever changes so that + we *must* pass a class, we'll create an UnsafeHTTPSConnection class + which just sets check_domain to False in the class definition, and + choose which one to pass to do_open. + """ + result = HTTPSConnection(*args, **kwargs) + if self.ca_certs: + result.ca_certs = self.ca_certs + result.check_domain = self.check_domain + return result + + def https_open(self, req): + try: + return self.do_open(self._conn_maker, req) + except URLError as e: + if 'certificate verify failed' in str(e.reason): + raise CertificateError('Unable to verify server certificate ' + 'for %s' % req.host) + else: + raise + + # + # To prevent against mixing HTTP traffic with HTTPS (examples: A Man-In-The- + # Middle proxy using HTTP listens on port 443, or an index mistakenly serves + # HTML containing a http://xyz link when it should be https://xyz), + # you can use the following handler class, which does not allow HTTP traffic. + # + # It works by inheriting from HTTPHandler - so build_opener won't add a + # handler for HTTP itself. + # + class HTTPSOnlyHandler(HTTPSHandler, HTTPHandler): + def http_open(self, req): + raise URLError('Unexpected HTTP request on what should be a secure ' + 'connection: %s' % req) + +# +# XML-RPC with timeouts +# + +_ver_info = sys.version_info[:2] + +if _ver_info == (2, 6): + class HTTP(httplib.HTTP): + def __init__(self, host='', port=None, **kwargs): + if port == 0: # 0 means use port 0, not the default port + port = None + self._setup(self._connection_class(host, port, **kwargs)) + + + if ssl: + class HTTPS(httplib.HTTPS): + def __init__(self, host='', port=None, **kwargs): + if port == 0: # 0 means use port 0, not the default port + port = None + self._setup(self._connection_class(host, port, **kwargs)) + + +class Transport(xmlrpclib.Transport): + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.Transport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, x509 = self.get_host_info(host) + if _ver_info == (2, 6): + result = HTTP(h, timeout=self.timeout) + else: + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPConnection(h) + result = self._connection[1] + return result + +if ssl: + class SafeTransport(xmlrpclib.SafeTransport): + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.SafeTransport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, kwargs = self.get_host_info(host) + if not kwargs: + kwargs = {} + kwargs['timeout'] = self.timeout + if _ver_info == (2, 6): + result = HTTPS(host, None, **kwargs) + else: + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPSConnection(h, None, + **kwargs) + result = self._connection[1] + return result + + +class ServerProxy(xmlrpclib.ServerProxy): + def __init__(self, uri, **kwargs): + self.timeout = timeout = kwargs.pop('timeout', None) + # The above classes only come into play if a timeout + # is specified + if timeout is not None: + # scheme = splittype(uri) # deprecated as of Python 3.8 + scheme = urlparse(uri)[0] + use_datetime = kwargs.get('use_datetime', 0) + if scheme == 'https': + tcls = SafeTransport + else: + tcls = Transport + kwargs['transport'] = t = tcls(timeout, use_datetime=use_datetime) + self.transport = t + xmlrpclib.ServerProxy.__init__(self, uri, **kwargs) + +# +# CSV functionality. This is provided because on 2.x, the csv module can't +# handle Unicode. However, we need to deal with Unicode in e.g. RECORD files. +# + +def _csv_open(fn, mode, **kwargs): + if sys.version_info[0] < 3: + mode += 'b' + else: + kwargs['newline'] = '' + # Python 3 determines encoding from locale. Force 'utf-8' + # file encoding to match other forced utf-8 encoding + kwargs['encoding'] = 'utf-8' + return open(fn, mode, **kwargs) + + +class CSVBase(object): + defaults = { + 'delimiter': str(','), # The strs are used because we need native + 'quotechar': str('"'), # str in the csv API (2.x won't take + 'lineterminator': str('\n') # Unicode) + } + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.stream.close() + + +class CSVReader(CSVBase): + def __init__(self, **kwargs): + if 'stream' in kwargs: + stream = kwargs['stream'] + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + self.stream = stream + else: + self.stream = _csv_open(kwargs['path'], 'r') + self.reader = csv.reader(self.stream, **self.defaults) + + def __iter__(self): + return self + + def next(self): + result = next(self.reader) + if sys.version_info[0] < 3: + for i, item in enumerate(result): + if not isinstance(item, text_type): + result[i] = item.decode('utf-8') + return result + + __next__ = next + +class CSVWriter(CSVBase): + def __init__(self, fn, **kwargs): + self.stream = _csv_open(fn, 'w') + self.writer = csv.writer(self.stream, **self.defaults) + + def writerow(self, row): + if sys.version_info[0] < 3: + r = [] + for item in row: + if isinstance(item, text_type): + item = item.encode('utf-8') + r.append(item) + row = r + self.writer.writerow(row) + +# +# Configurator functionality +# + +class Configurator(BaseConfigurator): + + value_converters = dict(BaseConfigurator.value_converters) + value_converters['inc'] = 'inc_convert' + + def __init__(self, config, base=None): + super(Configurator, self).__init__(config) + self.base = base or os.getcwd() + + def configure_custom(self, config): + def convert(o): + if isinstance(o, (list, tuple)): + result = type(o)([convert(i) for i in o]) + elif isinstance(o, dict): + if '()' in o: + result = self.configure_custom(o) + else: + result = {} + for k in o: + result[k] = convert(o[k]) + else: + result = self.convert(o) + return result + + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + args = config.pop('[]', ()) + if args: + args = tuple([convert(o) for o in args]) + items = [(k, convert(config[k])) for k in config if valid_ident(k)] + kwargs = dict(items) + result = c(*args, **kwargs) + if props: + for n, v in props.items(): + setattr(result, n, convert(v)) + return result + + def __getitem__(self, key): + result = self.config[key] + if isinstance(result, dict) and '()' in result: + self.config[key] = result = self.configure_custom(result) + return result + + def inc_convert(self, value): + """Default converter for the inc:// protocol.""" + if not os.path.isabs(value): + value = os.path.join(self.base, value) + with codecs.open(value, 'r', encoding='utf-8') as f: + result = json.load(f) + return result + + +class SubprocessMixin(object): + """ + Mixin for running subprocesses and capturing their output + """ + def __init__(self, verbose=False, progress=None): + self.verbose = verbose + self.progress = progress + + def reader(self, stream, context): + """ + Read lines from a subprocess' output stream and either pass to a progress + callable (if specified) or write progress information to sys.stderr. + """ + progress = self.progress + verbose = self.verbose + while True: + s = stream.readline() + if not s: + break + if progress is not None: + progress(s, context) + else: + if not verbose: + sys.stderr.write('.') + else: + sys.stderr.write(s.decode('utf-8')) + sys.stderr.flush() + stream.close() + + def run_command(self, cmd, **kwargs): + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, **kwargs) + t1 = threading.Thread(target=self.reader, args=(p.stdout, 'stdout')) + t1.start() + t2 = threading.Thread(target=self.reader, args=(p.stderr, 'stderr')) + t2.start() + p.wait() + t1.join() + t2.join() + if self.progress is not None: + self.progress('done.', 'main') + elif self.verbose: + sys.stderr.write('done.\n') + return p + + +def normalize_name(name): + """Normalize a python package name a la PEP 503""" + # https://www.python.org/dev/peps/pep-0503/#normalized-names + return re.sub('[-_.]+', '-', name).lower() + +# def _get_pypirc_command(): + # """ + # Get the distutils command for interacting with PyPI configurations. + # :return: the command. + # """ + # from distutils.core import Distribution + # from distutils.config import PyPIRCCommand + # d = Distribution() + # return PyPIRCCommand(d) + +class PyPIRCFile(object): + + DEFAULT_REPOSITORY = 'https://upload.pypi.org/legacy/' + DEFAULT_REALM = 'pypi' + + def __init__(self, fn=None, url=None): + if fn is None: + fn = os.path.join(os.path.expanduser('~'), '.pypirc') + self.filename = fn + self.url = url + + def read(self): + result = {} + + if os.path.exists(self.filename): + repository = self.url or self.DEFAULT_REPOSITORY + + config = configparser.RawConfigParser() + config.read(self.filename) + sections = config.sections() + if 'distutils' in sections: + # let's get the list of servers + index_servers = config.get('distutils', 'index-servers') + _servers = [server.strip() for server in + index_servers.split('\n') + if server.strip() != ''] + if _servers == []: + # nothing set, let's try to get the default pypi + if 'pypi' in sections: + _servers = ['pypi'] + else: + for server in _servers: + result = {'server': server} + result['username'] = config.get(server, 'username') + + # optional params + for key, default in (('repository', self.DEFAULT_REPOSITORY), + ('realm', self.DEFAULT_REALM), + ('password', None)): + if config.has_option(server, key): + result[key] = config.get(server, key) + else: + result[key] = default + + # work around people having "repository" for the "pypi" + # section of their config set to the HTTP (rather than + # HTTPS) URL + if (server == 'pypi' and + repository in (self.DEFAULT_REPOSITORY, 'pypi')): + result['repository'] = self.DEFAULT_REPOSITORY + elif (result['server'] != repository and + result['repository'] != repository): + result = {} + elif 'server-login' in sections: + # old format + server = 'server-login' + if config.has_option(server, 'repository'): + repository = config.get(server, 'repository') + else: + repository = self.DEFAULT_REPOSITORY + result = { + 'username': config.get(server, 'username'), + 'password': config.get(server, 'password'), + 'repository': repository, + 'server': server, + 'realm': self.DEFAULT_REALM + } + return result + + def update(self, username, password): + # import pdb; pdb.set_trace() + config = configparser.RawConfigParser() + fn = self.filename + config.read(fn) + if not config.has_section('pypi'): + config.add_section('pypi') + config.set('pypi', 'username', username) + config.set('pypi', 'password', password) + with open(fn, 'w') as f: + config.write(f) + +def _load_pypirc(index): + """ + Read the PyPI access configuration as supported by distutils. + """ + return PyPIRCFile(url=index.url).read() + +def _store_pypirc(index): + PyPIRCFile().update(index.username, index.password) + +# +# get_platform()/get_host_platform() copied from Python 3.10.a0 source, with some minor +# tweaks +# + +def get_host_platform(): + """Return a string that identifies the current platform. This is used mainly to + distinguish platform-specific build directories and platform-specific built + distributions. Typically includes the OS name and version and the + architecture (as supplied by 'os.uname()'), although the exact information + included depends on the OS; eg. on Linux, the kernel version isn't + particularly important. + + Examples of returned values: + linux-i586 + linux-alpha (?) + solaris-2.6-sun4u + + Windows will return one of: + win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) + win32 (all others - specifically, sys.platform is returned) + + For other non-POSIX platforms, currently just returns 'sys.platform'. + + """ + if os.name == 'nt': + if 'amd64' in sys.version.lower(): + return 'win-amd64' + if '(arm)' in sys.version.lower(): + return 'win-arm32' + if '(arm64)' in sys.version.lower(): + return 'win-arm64' + return sys.platform + + # Set for cross builds explicitly + if "_PYTHON_HOST_PLATFORM" in os.environ: + return os.environ["_PYTHON_HOST_PLATFORM"] + + if os.name != 'posix' or not hasattr(os, 'uname'): + # XXX what about the architecture? NT is Intel or Alpha, + # Mac OS is M68k or PPC, etc. + return sys.platform + + # Try to distinguish various flavours of Unix + + (osname, host, release, version, machine) = os.uname() + + # Convert the OS name to lowercase, remove '/' characters, and translate + # spaces (for "Power Macintosh") + osname = osname.lower().replace('/', '') + machine = machine.replace(' ', '_').replace('/', '-') + + if osname[:5] == 'linux': + # At least on Linux/Intel, 'machine' is the processor -- + # i386, etc. + # XXX what about Alpha, SPARC, etc? + return "%s-%s" % (osname, machine) + + elif osname[:5] == 'sunos': + if release[0] >= '5': # SunOS 5 == Solaris 2 + osname = 'solaris' + release = '%d.%s' % (int(release[0]) - 3, release[2:]) + # We can't use 'platform.architecture()[0]' because a + # bootstrap problem. We use a dict to get an error + # if some suspicious happens. + bitness = {2147483647:'32bit', 9223372036854775807:'64bit'} + machine += '.%s' % bitness[sys.maxsize] + # fall through to standard osname-release-machine representation + elif osname[:3] == 'aix': + from _aix_support import aix_platform + return aix_platform() + elif osname[:6] == 'cygwin': + osname = 'cygwin' + rel_re = re.compile (r'[\d.]+', re.ASCII) + m = rel_re.match(release) + if m: + release = m.group() + elif osname[:6] == 'darwin': + import _osx_support, distutils.sysconfig + osname, release, machine = _osx_support.get_platform_osx( + distutils.sysconfig.get_config_vars(), + osname, release, machine) + + return '%s-%s-%s' % (osname, release, machine) + + +_TARGET_TO_PLAT = { + 'x86' : 'win32', + 'x64' : 'win-amd64', + 'arm' : 'win-arm32', +} + + +def get_platform(): + if os.name != 'nt': + return get_host_platform() + cross_compilation_target = os.environ.get('VSCMD_ARG_TGT_ARCH') + if cross_compilation_target not in _TARGET_TO_PLAT: + return get_host_platform() + return _TARGET_TO_PLAT[cross_compilation_target] diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/version.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/version.py new file mode 100644 index 0000000..c7c8bb6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/version.py @@ -0,0 +1,739 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2017 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Implementation of a flexible versioning scheme providing support for PEP-440, +setuptools-compatible and semantic versioning. +""" + +import logging +import re + +from .compat import string_types +from .util import parse_requirement + +__all__ = ['NormalizedVersion', 'NormalizedMatcher', + 'LegacyVersion', 'LegacyMatcher', + 'SemanticVersion', 'SemanticMatcher', + 'UnsupportedVersionError', 'get_scheme'] + +logger = logging.getLogger(__name__) + + +class UnsupportedVersionError(ValueError): + """This is an unsupported version.""" + pass + + +class Version(object): + def __init__(self, s): + self._string = s = s.strip() + self._parts = parts = self.parse(s) + assert isinstance(parts, tuple) + assert len(parts) > 0 + + def parse(self, s): + raise NotImplementedError('please implement in a subclass') + + def _check_compatible(self, other): + if type(self) != type(other): + raise TypeError('cannot compare %r and %r' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + def __lt__(self, other): + self._check_compatible(other) + return self._parts < other._parts + + def __gt__(self, other): + return not (self.__lt__(other) or self.__eq__(other)) + + def __le__(self, other): + return self.__lt__(other) or self.__eq__(other) + + def __ge__(self, other): + return self.__gt__(other) or self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self._parts) + + def __repr__(self): + return "%s('%s')" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + @property + def is_prerelease(self): + raise NotImplementedError('Please implement in subclasses.') + + +class Matcher(object): + version_class = None + + # value is either a callable or the name of a method + _operators = { + '<': lambda v, c, p: v < c, + '>': lambda v, c, p: v > c, + '<=': lambda v, c, p: v == c or v < c, + '>=': lambda v, c, p: v == c or v > c, + '==': lambda v, c, p: v == c, + '===': lambda v, c, p: v == c, + # by default, compatible => >=. + '~=': lambda v, c, p: v == c or v > c, + '!=': lambda v, c, p: v != c, + } + + # this is a method only to support alternative implementations + # via overriding + def parse_requirement(self, s): + return parse_requirement(s) + + def __init__(self, s): + if self.version_class is None: + raise ValueError('Please specify a version class') + self._string = s = s.strip() + r = self.parse_requirement(s) + if not r: + raise ValueError('Not valid: %r' % s) + self.name = r.name + self.key = self.name.lower() # for case-insensitive comparisons + clist = [] + if r.constraints: + # import pdb; pdb.set_trace() + for op, s in r.constraints: + if s.endswith('.*'): + if op not in ('==', '!='): + raise ValueError('\'.*\' not allowed for ' + '%r constraints' % op) + # Could be a partial version (e.g. for '2.*') which + # won't parse as a version, so keep it as a string + vn, prefix = s[:-2], True + # Just to check that vn is a valid version + self.version_class(vn) + else: + # Should parse as a version, so we can create an + # instance for the comparison + vn, prefix = self.version_class(s), False + clist.append((op, vn, prefix)) + self._parts = tuple(clist) + + def match(self, version): + """ + Check if the provided version matches the constraints. + + :param version: The version to match against this instance. + :type version: String or :class:`Version` instance. + """ + if isinstance(version, string_types): + version = self.version_class(version) + for operator, constraint, prefix in self._parts: + f = self._operators.get(operator) + if isinstance(f, string_types): + f = getattr(self, f) + if not f: + msg = ('%r not implemented ' + 'for %s' % (operator, self.__class__.__name__)) + raise NotImplementedError(msg) + if not f(version, constraint, prefix): + return False + return True + + @property + def exact_version(self): + result = None + if len(self._parts) == 1 and self._parts[0][0] in ('==', '==='): + result = self._parts[0][1] + return result + + def _check_compatible(self, other): + if type(self) != type(other) or self.name != other.name: + raise TypeError('cannot compare %s and %s' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self.key == other.key and self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self.key) + hash(self._parts) + + def __repr__(self): + return "%s(%r)" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + +PEP440_VERSION_RE = re.compile(r'^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?' + r'(\.(post)(\d+))?(\.(dev)(\d+))?' + r'(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$') + + +def _pep_440_key(s): + s = s.strip() + m = PEP440_VERSION_RE.match(s) + if not m: + raise UnsupportedVersionError('Not a valid version: %s' % s) + groups = m.groups() + nums = tuple(int(v) for v in groups[1].split('.')) + while len(nums) > 1 and nums[-1] == 0: + nums = nums[:-1] + + if not groups[0]: + epoch = 0 + else: + epoch = int(groups[0][:-1]) + pre = groups[4:6] + post = groups[7:9] + dev = groups[10:12] + local = groups[13] + if pre == (None, None): + pre = () + else: + pre = pre[0], int(pre[1]) + if post == (None, None): + post = () + else: + post = post[0], int(post[1]) + if dev == (None, None): + dev = () + else: + dev = dev[0], int(dev[1]) + if local is None: + local = () + else: + parts = [] + for part in local.split('.'): + # to ensure that numeric compares as > lexicographic, avoid + # comparing them directly, but encode a tuple which ensures + # correct sorting + if part.isdigit(): + part = (1, int(part)) + else: + part = (0, part) + parts.append(part) + local = tuple(parts) + if not pre: + # either before pre-release, or final release and after + if not post and dev: + # before pre-release + pre = ('a', -1) # to sort before a0 + else: + pre = ('z',) # to sort after all pre-releases + # now look at the state of post and dev. + if not post: + post = ('_',) # sort before 'a' + if not dev: + dev = ('final',) + + #print('%s -> %s' % (s, m.groups())) + return epoch, nums, pre, post, dev, local + + +_normalized_key = _pep_440_key + + +class NormalizedVersion(Version): + """A rational version. + + Good: + 1.2 # equivalent to "1.2.0" + 1.2.0 + 1.2a1 + 1.2.3a2 + 1.2.3b1 + 1.2.3c1 + 1.2.3.4 + TODO: fill this out + + Bad: + 1 # minimum two numbers + 1.2a # release level must have a release serial + 1.2.3b + """ + def parse(self, s): + result = _normalized_key(s) + # _normalized_key loses trailing zeroes in the release + # clause, since that's needed to ensure that X.Y == X.Y.0 == X.Y.0.0 + # However, PEP 440 prefix matching needs it: for example, + # (~= 1.4.5.0) matches differently to (~= 1.4.5.0.0). + m = PEP440_VERSION_RE.match(s) # must succeed + groups = m.groups() + self._release_clause = tuple(int(v) for v in groups[1].split('.')) + return result + + PREREL_TAGS = set(['a', 'b', 'c', 'rc', 'dev']) + + @property + def is_prerelease(self): + return any(t[0] in self.PREREL_TAGS for t in self._parts if t) + + +def _match_prefix(x, y): + x = str(x) + y = str(y) + if x == y: + return True + if not x.startswith(y): + return False + n = len(y) + return x[n] == '.' + + +class NormalizedMatcher(Matcher): + version_class = NormalizedVersion + + # value is either a callable or the name of a method + _operators = { + '~=': '_match_compatible', + '<': '_match_lt', + '>': '_match_gt', + '<=': '_match_le', + '>=': '_match_ge', + '==': '_match_eq', + '===': '_match_arbitrary', + '!=': '_match_ne', + } + + def _adjust_local(self, version, constraint, prefix): + if prefix: + strip_local = '+' not in constraint and version._parts[-1] + else: + # both constraint and version are + # NormalizedVersion instances. + # If constraint does not have a local component, + # ensure the version doesn't, either. + strip_local = not constraint._parts[-1] and version._parts[-1] + if strip_local: + s = version._string.split('+', 1)[0] + version = self.version_class(s) + return version, constraint + + def _match_lt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version >= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_gt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version <= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_le(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version <= constraint + + def _match_ge(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version >= constraint + + def _match_eq(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version == constraint) + else: + result = _match_prefix(version, constraint) + return result + + def _match_arbitrary(self, version, constraint, prefix): + return str(version) == str(constraint) + + def _match_ne(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version != constraint) + else: + result = not _match_prefix(version, constraint) + return result + + def _match_compatible(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version == constraint: + return True + if version < constraint: + return False +# if not prefix: +# return True + release_clause = constraint._release_clause + if len(release_clause) > 1: + release_clause = release_clause[:-1] + pfx = '.'.join([str(i) for i in release_clause]) + return _match_prefix(version, pfx) + +_REPLACEMENTS = ( + (re.compile('[.+-]$'), ''), # remove trailing puncts + (re.compile(r'^[.](\d)'), r'0.\1'), # .N -> 0.N at start + (re.compile('^[.-]'), ''), # remove leading puncts + (re.compile(r'^\((.*)\)$'), r'\1'), # remove parentheses + (re.compile(r'^v(ersion)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile(r'^r(ev)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\b(alfa|apha)\b'), 'alpha'), # misspelt alpha + (re.compile(r'\b(pre-alpha|prealpha)\b'), + 'pre.alpha'), # standardise + (re.compile(r'\(beta\)$'), 'beta'), # remove parentheses +) + +_SUFFIX_REPLACEMENTS = ( + (re.compile('^[:~._+-]+'), ''), # remove leading puncts + (re.compile('[,*")([\\]]'), ''), # remove unwanted chars + (re.compile('[~:+_ -]'), '.'), # replace illegal chars + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\.$'), ''), # trailing '.' +) + +_NUMERIC_PREFIX = re.compile(r'(\d+(\.\d+)*)') + + +def _suggest_semantic_version(s): + """ + Try to suggest a semantic form for a version for which + _suggest_normalized_version couldn't come up with anything. + """ + result = s.strip().lower() + for pat, repl in _REPLACEMENTS: + result = pat.sub(repl, result) + if not result: + result = '0.0.0' + + # Now look for numeric prefix, and separate it out from + # the rest. + #import pdb; pdb.set_trace() + m = _NUMERIC_PREFIX.match(result) + if not m: + prefix = '0.0.0' + suffix = result + else: + prefix = m.groups()[0].split('.') + prefix = [int(i) for i in prefix] + while len(prefix) < 3: + prefix.append(0) + if len(prefix) == 3: + suffix = result[m.end():] + else: + suffix = '.'.join([str(i) for i in prefix[3:]]) + result[m.end():] + prefix = prefix[:3] + prefix = '.'.join([str(i) for i in prefix]) + suffix = suffix.strip() + if suffix: + #import pdb; pdb.set_trace() + # massage the suffix. + for pat, repl in _SUFFIX_REPLACEMENTS: + suffix = pat.sub(repl, suffix) + + if not suffix: + result = prefix + else: + sep = '-' if 'dev' in suffix else '+' + result = prefix + sep + suffix + if not is_semver(result): + result = None + return result + + +def _suggest_normalized_version(s): + """Suggest a normalized version close to the given version string. + + If you have a version string that isn't rational (i.e. NormalizedVersion + doesn't like it) then you might be able to get an equivalent (or close) + rational version from this function. + + This does a number of simple normalizations to the given string, based + on observation of versions currently in use on PyPI. Given a dump of + those version during PyCon 2009, 4287 of them: + - 2312 (53.93%) match NormalizedVersion without change + with the automatic suggestion + - 3474 (81.04%) match when using this suggestion method + + @param s {str} An irrational version string. + @returns A rational version string, or None, if couldn't determine one. + """ + try: + _normalized_key(s) + return s # already rational + except UnsupportedVersionError: + pass + + rs = s.lower() + + # part of this could use maketrans + for orig, repl in (('-alpha', 'a'), ('-beta', 'b'), ('alpha', 'a'), + ('beta', 'b'), ('rc', 'c'), ('-final', ''), + ('-pre', 'c'), + ('-release', ''), ('.release', ''), ('-stable', ''), + ('+', '.'), ('_', '.'), (' ', ''), ('.final', ''), + ('final', '')): + rs = rs.replace(orig, repl) + + # if something ends with dev or pre, we add a 0 + rs = re.sub(r"pre$", r"pre0", rs) + rs = re.sub(r"dev$", r"dev0", rs) + + # if we have something like "b-2" or "a.2" at the end of the + # version, that is probably beta, alpha, etc + # let's remove the dash or dot + rs = re.sub(r"([abc]|rc)[\-\.](\d+)$", r"\1\2", rs) + + # 1.0-dev-r371 -> 1.0.dev371 + # 0.1-dev-r79 -> 0.1.dev79 + rs = re.sub(r"[\-\.](dev)[\-\.]?r?(\d+)$", r".\1\2", rs) + + # Clean: 2.0.a.3, 2.0.b1, 0.9.0~c1 + rs = re.sub(r"[.~]?([abc])\.?", r"\1", rs) + + # Clean: v0.3, v1.0 + if rs.startswith('v'): + rs = rs[1:] + + # Clean leading '0's on numbers. + #TODO: unintended side-effect on, e.g., "2003.05.09" + # PyPI stats: 77 (~2%) better + rs = re.sub(r"\b0+(\d+)(?!\d)", r"\1", rs) + + # Clean a/b/c with no version. E.g. "1.0a" -> "1.0a0". Setuptools infers + # zero. + # PyPI stats: 245 (7.56%) better + rs = re.sub(r"(\d+[abc])$", r"\g<1>0", rs) + + # the 'dev-rNNN' tag is a dev tag + rs = re.sub(r"\.?(dev-r|dev\.r)\.?(\d+)$", r".dev\2", rs) + + # clean the - when used as a pre delimiter + rs = re.sub(r"-(a|b|c)(\d+)$", r"\1\2", rs) + + # a terminal "dev" or "devel" can be changed into ".dev0" + rs = re.sub(r"[\.\-](dev|devel)$", r".dev0", rs) + + # a terminal "dev" can be changed into ".dev0" + rs = re.sub(r"(?![\.\-])dev$", r".dev0", rs) + + # a terminal "final" or "stable" can be removed + rs = re.sub(r"(final|stable)$", "", rs) + + # The 'r' and the '-' tags are post release tags + # 0.4a1.r10 -> 0.4a1.post10 + # 0.9.33-17222 -> 0.9.33.post17222 + # 0.9.33-r17222 -> 0.9.33.post17222 + rs = re.sub(r"\.?(r|-|-r)\.?(\d+)$", r".post\2", rs) + + # Clean 'r' instead of 'dev' usage: + # 0.9.33+r17222 -> 0.9.33.dev17222 + # 1.0dev123 -> 1.0.dev123 + # 1.0.git123 -> 1.0.dev123 + # 1.0.bzr123 -> 1.0.dev123 + # 0.1a0dev.123 -> 0.1a0.dev123 + # PyPI stats: ~150 (~4%) better + rs = re.sub(r"\.?(dev|git|bzr)\.?(\d+)$", r".dev\2", rs) + + # Clean '.pre' (normalized from '-pre' above) instead of 'c' usage: + # 0.2.pre1 -> 0.2c1 + # 0.2-c1 -> 0.2c1 + # 1.0preview123 -> 1.0c123 + # PyPI stats: ~21 (0.62%) better + rs = re.sub(r"\.?(pre|preview|-c)(\d+)$", r"c\g<2>", rs) + + # Tcl/Tk uses "px" for their post release markers + rs = re.sub(r"p(\d+)$", r".post\1", rs) + + try: + _normalized_key(rs) + except UnsupportedVersionError: + rs = None + return rs + +# +# Legacy version processing (distribute-compatible) +# + +_VERSION_PART = re.compile(r'([a-z]+|\d+|[\.-])', re.I) +_VERSION_REPLACE = { + 'pre': 'c', + 'preview': 'c', + '-': 'final-', + 'rc': 'c', + 'dev': '@', + '': None, + '.': None, +} + + +def _legacy_key(s): + def get_parts(s): + result = [] + for p in _VERSION_PART.split(s.lower()): + p = _VERSION_REPLACE.get(p, p) + if p: + if '0' <= p[:1] <= '9': + p = p.zfill(8) + else: + p = '*' + p + result.append(p) + result.append('*final') + return result + + result = [] + for p in get_parts(s): + if p.startswith('*'): + if p < '*final': + while result and result[-1] == '*final-': + result.pop() + while result and result[-1] == '00000000': + result.pop() + result.append(p) + return tuple(result) + + +class LegacyVersion(Version): + def parse(self, s): + return _legacy_key(s) + + @property + def is_prerelease(self): + result = False + for x in self._parts: + if (isinstance(x, string_types) and x.startswith('*') and + x < '*final'): + result = True + break + return result + + +class LegacyMatcher(Matcher): + version_class = LegacyVersion + + _operators = dict(Matcher._operators) + _operators['~='] = '_match_compatible' + + numeric_re = re.compile(r'^(\d+(\.\d+)*)') + + def _match_compatible(self, version, constraint, prefix): + if version < constraint: + return False + m = self.numeric_re.match(str(constraint)) + if not m: + logger.warning('Cannot compute compatible match for version %s ' + ' and constraint %s', version, constraint) + return True + s = m.groups()[0] + if '.' in s: + s = s.rsplit('.', 1)[0] + return _match_prefix(version, s) + +# +# Semantic versioning +# + +_SEMVER_RE = re.compile(r'^(\d+)\.(\d+)\.(\d+)' + r'(-[a-z0-9]+(\.[a-z0-9-]+)*)?' + r'(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$', re.I) + + +def is_semver(s): + return _SEMVER_RE.match(s) + + +def _semantic_key(s): + def make_tuple(s, absent): + if s is None: + result = (absent,) + else: + parts = s[1:].split('.') + # We can't compare ints and strings on Python 3, so fudge it + # by zero-filling numeric values so simulate a numeric comparison + result = tuple([p.zfill(8) if p.isdigit() else p for p in parts]) + return result + + m = is_semver(s) + if not m: + raise UnsupportedVersionError(s) + groups = m.groups() + major, minor, patch = [int(i) for i in groups[:3]] + # choose the '|' and '*' so that versions sort correctly + pre, build = make_tuple(groups[3], '|'), make_tuple(groups[5], '*') + return (major, minor, patch), pre, build + + +class SemanticVersion(Version): + def parse(self, s): + return _semantic_key(s) + + @property + def is_prerelease(self): + return self._parts[1][0] != '|' + + +class SemanticMatcher(Matcher): + version_class = SemanticVersion + + +class VersionScheme(object): + def __init__(self, key, matcher, suggester=None): + self.key = key + self.matcher = matcher + self.suggester = suggester + + def is_valid_version(self, s): + try: + self.matcher.version_class(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_matcher(self, s): + try: + self.matcher(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_constraint_list(self, s): + """ + Used for processing some metadata fields + """ + # See issue #140. Be tolerant of a single trailing comma. + if s.endswith(','): + s = s[:-1] + return self.is_valid_matcher('dummy_name (%s)' % s) + + def suggest(self, s): + if self.suggester is None: + result = None + else: + result = self.suggester(s) + return result + +_SCHEMES = { + 'normalized': VersionScheme(_normalized_key, NormalizedMatcher, + _suggest_normalized_version), + 'legacy': VersionScheme(_legacy_key, LegacyMatcher, lambda self, s: s), + 'semantic': VersionScheme(_semantic_key, SemanticMatcher, + _suggest_semantic_version), +} + +_SCHEMES['default'] = _SCHEMES['normalized'] + + +def get_scheme(name): + if name not in _SCHEMES: + raise ValueError('unknown scheme name: %r' % name) + return _SCHEMES[name] diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/wheel.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/wheel.py new file mode 100644 index 0000000..48abfde --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/wheel.py @@ -0,0 +1,1053 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2020 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import unicode_literals + +import base64 +import codecs +import datetime +from email import message_from_file +import hashlib +import imp +import json +import logging +import os +import posixpath +import re +import shutil +import sys +import tempfile +import zipfile + +from . import __version__, DistlibException +from .compat import sysconfig, ZipFile, fsdecode, text_type, filter +from .database import InstalledDistribution +from .metadata import (Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME) +from .util import (FileOperator, convert_path, CSVReader, CSVWriter, Cache, + cached_property, get_cache_base, read_exports, tempdir, + get_platform) +from .version import NormalizedVersion, UnsupportedVersionError + +logger = logging.getLogger(__name__) + +cache = None # created when needed + +if hasattr(sys, 'pypy_version_info'): # pragma: no cover + IMP_PREFIX = 'pp' +elif sys.platform.startswith('java'): # pragma: no cover + IMP_PREFIX = 'jy' +elif sys.platform == 'cli': # pragma: no cover + IMP_PREFIX = 'ip' +else: + IMP_PREFIX = 'cp' + +VER_SUFFIX = sysconfig.get_config_var('py_version_nodot') +if not VER_SUFFIX: # pragma: no cover + VER_SUFFIX = '%s%s' % sys.version_info[:2] +PYVER = 'py' + VER_SUFFIX +IMPVER = IMP_PREFIX + VER_SUFFIX + +ARCH = get_platform().replace('-', '_').replace('.', '_') + +ABI = sysconfig.get_config_var('SOABI') +if ABI and ABI.startswith('cpython-'): + ABI = ABI.replace('cpython-', 'cp').split('-')[0] +else: + def _derive_abi(): + parts = ['cp', VER_SUFFIX] + if sysconfig.get_config_var('Py_DEBUG'): + parts.append('d') + if sysconfig.get_config_var('WITH_PYMALLOC'): + parts.append('m') + if sysconfig.get_config_var('Py_UNICODE_SIZE') == 4: + parts.append('u') + return ''.join(parts) + ABI = _derive_abi() + del _derive_abi + +FILENAME_RE = re.compile(r''' +(?P[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))? +-(?P\w+\d+(\.\w+\d+)*) +-(?P\w+) +-(?P\w+(\.\w+)*) +\.whl$ +''', re.IGNORECASE | re.VERBOSE) + +NAME_VERSION_RE = re.compile(r''' +(?P[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))?$ +''', re.IGNORECASE | re.VERBOSE) + +SHEBANG_RE = re.compile(br'\s*#![^\r\n]*') +SHEBANG_DETAIL_RE = re.compile(br'^(\s*#!("[^"]+"|\S+))\s+(.*)$') +SHEBANG_PYTHON = b'#!python' +SHEBANG_PYTHONW = b'#!pythonw' + +if os.sep == '/': + to_posix = lambda o: o +else: + to_posix = lambda o: o.replace(os.sep, '/') + + +class Mounter(object): + def __init__(self): + self.impure_wheels = {} + self.libs = {} + + def add(self, pathname, extensions): + self.impure_wheels[pathname] = extensions + self.libs.update(extensions) + + def remove(self, pathname): + extensions = self.impure_wheels.pop(pathname) + for k, v in extensions: + if k in self.libs: + del self.libs[k] + + def find_module(self, fullname, path=None): + if fullname in self.libs: + result = self + else: + result = None + return result + + def load_module(self, fullname): + if fullname in sys.modules: + result = sys.modules[fullname] + else: + if fullname not in self.libs: + raise ImportError('unable to find extension for %s' % fullname) + result = imp.load_dynamic(fullname, self.libs[fullname]) + result.__loader__ = self + parts = fullname.rsplit('.', 1) + if len(parts) > 1: + result.__package__ = parts[0] + return result + +_hook = Mounter() + + +class Wheel(object): + """ + Class to build and install from Wheel files (PEP 427). + """ + + wheel_version = (1, 1) + hash_kind = 'sha256' + + def __init__(self, filename=None, sign=False, verify=False): + """ + Initialise an instance using a (valid) filename. + """ + self.sign = sign + self.should_verify = verify + self.buildver = '' + self.pyver = [PYVER] + self.abi = ['none'] + self.arch = ['any'] + self.dirname = os.getcwd() + if filename is None: + self.name = 'dummy' + self.version = '0.1' + self._filename = self.filename + else: + m = NAME_VERSION_RE.match(filename) + if m: + info = m.groupdict('') + self.name = info['nm'] + # Reinstate the local version separator + self.version = info['vn'].replace('_', '-') + self.buildver = info['bn'] + self._filename = self.filename + else: + dirname, filename = os.path.split(filename) + m = FILENAME_RE.match(filename) + if not m: + raise DistlibException('Invalid name or ' + 'filename: %r' % filename) + if dirname: + self.dirname = os.path.abspath(dirname) + self._filename = filename + info = m.groupdict('') + self.name = info['nm'] + self.version = info['vn'] + self.buildver = info['bn'] + self.pyver = info['py'].split('.') + self.abi = info['bi'].split('.') + self.arch = info['ar'].split('.') + + @property + def filename(self): + """ + Build and return a filename from the various components. + """ + if self.buildver: + buildver = '-' + self.buildver + else: + buildver = '' + pyver = '.'.join(self.pyver) + abi = '.'.join(self.abi) + arch = '.'.join(self.arch) + # replace - with _ as a local version separator + version = self.version.replace('-', '_') + return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver, + pyver, abi, arch) + + @property + def exists(self): + path = os.path.join(self.dirname, self.filename) + return os.path.isfile(path) + + @property + def tags(self): + for pyver in self.pyver: + for abi in self.abi: + for arch in self.arch: + yield pyver, abi, arch + + @cached_property + def metadata(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + wrapper = codecs.getreader('utf-8') + with ZipFile(pathname, 'r') as zf: + wheel_metadata = self.get_wheel_metadata(zf) + wv = wheel_metadata['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + # if file_version < (1, 1): + # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME, + # LEGACY_METADATA_FILENAME] + # else: + # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME] + fns = [WHEEL_METADATA_FILENAME, LEGACY_METADATA_FILENAME] + result = None + for fn in fns: + try: + metadata_filename = posixpath.join(info_dir, fn) + with zf.open(metadata_filename) as bf: + wf = wrapper(bf) + result = Metadata(fileobj=wf) + if result: + break + except KeyError: + pass + if not result: + raise ValueError('Invalid wheel, because metadata is ' + 'missing: looked in %s' % ', '.join(fns)) + return result + + def get_wheel_metadata(self, zf): + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + metadata_filename = posixpath.join(info_dir, 'WHEEL') + with zf.open(metadata_filename) as bf: + wf = codecs.getreader('utf-8')(bf) + message = message_from_file(wf) + return dict(message) + + @cached_property + def info(self): + pathname = os.path.join(self.dirname, self.filename) + with ZipFile(pathname, 'r') as zf: + result = self.get_wheel_metadata(zf) + return result + + def process_shebang(self, data): + m = SHEBANG_RE.match(data) + if m: + end = m.end() + shebang, data_after_shebang = data[:end], data[end:] + # Preserve any arguments after the interpreter + if b'pythonw' in shebang.lower(): + shebang_python = SHEBANG_PYTHONW + else: + shebang_python = SHEBANG_PYTHON + m = SHEBANG_DETAIL_RE.match(shebang) + if m: + args = b' ' + m.groups()[-1] + else: + args = b'' + shebang = shebang_python + args + data = shebang + data_after_shebang + else: + cr = data.find(b'\r') + lf = data.find(b'\n') + if cr < 0 or cr > lf: + term = b'\n' + else: + if data[cr:cr + 2] == b'\r\n': + term = b'\r\n' + else: + term = b'\r' + data = SHEBANG_PYTHON + term + data + return data + + def get_hash(self, data, hash_kind=None): + if hash_kind is None: + hash_kind = self.hash_kind + try: + hasher = getattr(hashlib, hash_kind) + except AttributeError: + raise DistlibException('Unsupported hash algorithm: %r' % hash_kind) + result = hasher(data).digest() + result = base64.urlsafe_b64encode(result).rstrip(b'=').decode('ascii') + return hash_kind, result + + def write_record(self, records, record_path, base): + records = list(records) # make a copy, as mutated + p = to_posix(os.path.relpath(record_path, base)) + records.append((p, '', '')) + with CSVWriter(record_path) as writer: + for row in records: + writer.writerow(row) + + def write_records(self, info, libdir, archive_paths): + records = [] + distinfo, info_dir = info + hasher = getattr(hashlib, self.hash_kind) + for ap, p in archive_paths: + with open(p, 'rb') as f: + data = f.read() + digest = '%s=%s' % self.get_hash(data) + size = os.path.getsize(p) + records.append((ap, digest, size)) + + p = os.path.join(distinfo, 'RECORD') + self.write_record(records, p, libdir) + ap = to_posix(os.path.join(info_dir, 'RECORD')) + archive_paths.append((ap, p)) + + def build_zip(self, pathname, archive_paths): + with ZipFile(pathname, 'w', zipfile.ZIP_DEFLATED) as zf: + for ap, p in archive_paths: + logger.debug('Wrote %s to %s in wheel', p, ap) + zf.write(p, ap) + + def build(self, paths, tags=None, wheel_version=None): + """ + Build a wheel from files in specified paths, and use any specified tags + when determining the name of the wheel. + """ + if tags is None: + tags = {} + + libkey = list(filter(lambda o: o in paths, ('purelib', 'platlib')))[0] + if libkey == 'platlib': + is_pure = 'false' + default_pyver = [IMPVER] + default_abi = [ABI] + default_arch = [ARCH] + else: + is_pure = 'true' + default_pyver = [PYVER] + default_abi = ['none'] + default_arch = ['any'] + + self.pyver = tags.get('pyver', default_pyver) + self.abi = tags.get('abi', default_abi) + self.arch = tags.get('arch', default_arch) + + libdir = paths[libkey] + + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + archive_paths = [] + + # First, stuff which is not in site-packages + for key in ('data', 'headers', 'scripts'): + if key not in paths: + continue + path = paths[key] + if os.path.isdir(path): + for root, dirs, files in os.walk(path): + for fn in files: + p = fsdecode(os.path.join(root, fn)) + rp = os.path.relpath(p, path) + ap = to_posix(os.path.join(data_dir, key, rp)) + archive_paths.append((ap, p)) + if key == 'scripts' and not p.endswith('.exe'): + with open(p, 'rb') as f: + data = f.read() + data = self.process_shebang(data) + with open(p, 'wb') as f: + f.write(data) + + # Now, stuff which is in site-packages, other than the + # distinfo stuff. + path = libdir + distinfo = None + for root, dirs, files in os.walk(path): + if root == path: + # At the top level only, save distinfo for later + # and skip it for now + for i, dn in enumerate(dirs): + dn = fsdecode(dn) + if dn.endswith('.dist-info'): + distinfo = os.path.join(root, dn) + del dirs[i] + break + assert distinfo, '.dist-info directory expected, not found' + + for fn in files: + # comment out next suite to leave .pyc files in + if fsdecode(fn).endswith(('.pyc', '.pyo')): + continue + p = os.path.join(root, fn) + rp = to_posix(os.path.relpath(p, path)) + archive_paths.append((rp, p)) + + # Now distinfo. Assumed to be flat, i.e. os.listdir is enough. + files = os.listdir(distinfo) + for fn in files: + if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): + p = fsdecode(os.path.join(distinfo, fn)) + ap = to_posix(os.path.join(info_dir, fn)) + archive_paths.append((ap, p)) + + wheel_metadata = [ + 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version), + 'Generator: distlib %s' % __version__, + 'Root-Is-Purelib: %s' % is_pure, + ] + for pyver, abi, arch in self.tags: + wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch)) + p = os.path.join(distinfo, 'WHEEL') + with open(p, 'w') as f: + f.write('\n'.join(wheel_metadata)) + ap = to_posix(os.path.join(info_dir, 'WHEEL')) + archive_paths.append((ap, p)) + + # sort the entries by archive path. Not needed by any spec, but it + # keeps the archive listing and RECORD tidier than they would otherwise + # be. Use the number of path segments to keep directory entries together, + # and keep the dist-info stuff at the end. + def sorter(t): + ap = t[0] + n = ap.count('/') + if '.dist-info' in ap: + n += 10000 + return (n, ap) + archive_paths = sorted(archive_paths, key=sorter) + + # Now, at last, RECORD. + # Paths in here are archive paths - nothing else makes sense. + self.write_records((distinfo, info_dir), libdir, archive_paths) + # Now, ready to build the zip file + pathname = os.path.join(self.dirname, self.filename) + self.build_zip(pathname, archive_paths) + return pathname + + def skip_entry(self, arcname): + """ + Determine whether an archive entry should be skipped when verifying + or installing. + """ + # The signature file won't be in RECORD, + # and we don't currently don't do anything with it + # We also skip directories, as they won't be in RECORD + # either. See: + # + # https://github.com/pypa/wheel/issues/294 + # https://github.com/pypa/wheel/issues/287 + # https://github.com/pypa/wheel/pull/289 + # + return arcname.endswith(('/', '/RECORD.jws')) + + def install(self, paths, maker, **kwargs): + """ + Install a wheel to the specified paths. If kwarg ``warner`` is + specified, it should be a callable, which will be called with two + tuples indicating the wheel version of this software and the wheel + version in the file, if there is a discrepancy in the versions. + This can be used to issue any warnings to raise any exceptions. + If kwarg ``lib_only`` is True, only the purelib/platlib files are + installed, and the headers, scripts, data and dist-info metadata are + not written. If kwarg ``bytecode_hashed_invalidation`` is True, written + bytecode will try to use file-hash based invalidation (PEP-552) on + supported interpreter versions (CPython 2.7+). + + The return value is a :class:`InstalledDistribution` instance unless + ``options.lib_only`` is True, in which case the return value is ``None``. + """ + + dry_run = maker.dry_run + warner = kwargs.get('warner') + lib_only = kwargs.get('lib_only', False) + bc_hashed_invalidation = kwargs.get('bytecode_hashed_invalidation', False) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + if (file_version != self.wheel_version) and warner: + warner(self.wheel_version, file_version) + + if message['Root-Is-Purelib'] == 'true': + libdir = paths['purelib'] + else: + libdir = paths['platlib'] + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + data_pfx = posixpath.join(data_dir, '') + info_pfx = posixpath.join(info_dir, '') + script_pfx = posixpath.join(data_dir, 'scripts', '') + + # make a new instance rather than a copy of maker's, + # as we mutate it + fileop = FileOperator(dry_run=dry_run) + fileop.record = True # so we can rollback if needed + + bc = not sys.dont_write_bytecode # Double negatives. Lovely! + + outfiles = [] # for RECORD writing + + # for script copying/shebang processing + workdir = tempfile.mkdtemp() + # set target dir later + # we default add_launchers to False, as the + # Python Launcher should be used instead + maker.source_dir = workdir + maker.target_dir = None + try: + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if self.skip_entry(u_arcname): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + if lib_only and u_arcname.startswith((info_pfx, data_pfx)): + logger.debug('lib_only: skipping %s', u_arcname) + continue + is_script = (u_arcname.startswith(script_pfx) + and not u_arcname.endswith('.exe')) + + if u_arcname.startswith(data_pfx): + _, where, rp = u_arcname.split('/', 2) + outfile = os.path.join(paths[where], convert_path(rp)) + else: + # meant for site-packages. + if u_arcname in (wheel_metadata_name, record_name): + continue + outfile = os.path.join(libdir, convert_path(u_arcname)) + if not is_script: + with zf.open(arcname) as bf: + fileop.copy_stream(bf, outfile) + # Issue #147: permission bits aren't preserved. Using + # zf.extract(zinfo, libdir) should have worked, but didn't, + # see https://www.thetopsites.net/article/53834422.shtml + # So ... manually preserve permission bits as given in zinfo + if os.name == 'posix': + # just set the normal permission bits + os.chmod(outfile, (zinfo.external_attr >> 16) & 0x1FF) + outfiles.append(outfile) + # Double check the digest of the written file + if not dry_run and row[1]: + with open(outfile, 'rb') as bf: + data = bf.read() + _, newdigest = self.get_hash(data, kind) + if newdigest != digest: + raise DistlibException('digest mismatch ' + 'on write for ' + '%s' % outfile) + if bc and outfile.endswith('.py'): + try: + pyc = fileop.byte_compile(outfile, + hashed_invalidation=bc_hashed_invalidation) + outfiles.append(pyc) + except Exception: + # Don't give up if byte-compilation fails, + # but log it and perhaps warn the user + logger.warning('Byte-compilation failed', + exc_info=True) + else: + fn = os.path.basename(convert_path(arcname)) + workname = os.path.join(workdir, fn) + with zf.open(arcname) as bf: + fileop.copy_stream(bf, workname) + + dn, fn = os.path.split(outfile) + maker.target_dir = dn + filenames = maker.make(fn) + fileop.set_executable_mode(filenames) + outfiles.extend(filenames) + + if lib_only: + logger.debug('lib_only: returning None') + dist = None + else: + # Generate scripts + + # Try to get pydist.json so we can see if there are + # any commands to generate. If this fails (e.g. because + # of a legacy wheel), log a warning but don't give up. + commands = None + file_version = self.info['Wheel-Version'] + if file_version == '1.0': + # Use legacy info + ep = posixpath.join(info_dir, 'entry_points.txt') + try: + with zf.open(ep) as bwf: + epdata = read_exports(bwf) + commands = {} + for key in ('console', 'gui'): + k = '%s_scripts' % key + if k in epdata: + commands['wrap_%s' % key] = d = {} + for v in epdata[k].values(): + s = '%s:%s' % (v.prefix, v.suffix) + if v.flags: + s += ' [%s]' % ','.join(v.flags) + d[v.name] = s + except Exception: + logger.warning('Unable to read legacy script ' + 'metadata, so cannot generate ' + 'scripts') + else: + try: + with zf.open(metadata_name) as bwf: + wf = wrapper(bwf) + commands = json.load(wf).get('extensions') + if commands: + commands = commands.get('python.commands') + except Exception: + logger.warning('Unable to read JSON metadata, so ' + 'cannot generate scripts') + if commands: + console_scripts = commands.get('wrap_console', {}) + gui_scripts = commands.get('wrap_gui', {}) + if console_scripts or gui_scripts: + script_dir = paths.get('scripts', '') + if not os.path.isdir(script_dir): + raise ValueError('Valid script path not ' + 'specified') + maker.target_dir = script_dir + for k, v in console_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script) + fileop.set_executable_mode(filenames) + + if gui_scripts: + options = {'gui': True } + for k, v in gui_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script, options) + fileop.set_executable_mode(filenames) + + p = os.path.join(libdir, info_dir) + dist = InstalledDistribution(p) + + # Write SHARED + paths = dict(paths) # don't change passed in dict + del paths['purelib'] + del paths['platlib'] + paths['lib'] = libdir + p = dist.write_shared_locations(paths, dry_run) + if p: + outfiles.append(p) + + # Write RECORD + dist.write_installed_files(outfiles, paths['prefix'], + dry_run) + return dist + except Exception: # pragma: no cover + logger.exception('installation failed.') + fileop.rollback() + raise + finally: + shutil.rmtree(workdir) + + def _get_dylib_cache(self): + global cache + if cache is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('dylib-cache'), + '%s.%s' % sys.version_info[:2]) + cache = Cache(base) + return cache + + def _get_extensions(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + arcname = posixpath.join(info_dir, 'EXTENSIONS') + wrapper = codecs.getreader('utf-8') + result = [] + with ZipFile(pathname, 'r') as zf: + try: + with zf.open(arcname) as bf: + wf = wrapper(bf) + extensions = json.load(wf) + cache = self._get_dylib_cache() + prefix = cache.prefix_to_dir(pathname) + cache_base = os.path.join(cache.base, prefix) + if not os.path.isdir(cache_base): + os.makedirs(cache_base) + for name, relpath in extensions.items(): + dest = os.path.join(cache_base, convert_path(relpath)) + if not os.path.exists(dest): + extract = True + else: + file_time = os.stat(dest).st_mtime + file_time = datetime.datetime.fromtimestamp(file_time) + info = zf.getinfo(relpath) + wheel_time = datetime.datetime(*info.date_time) + extract = wheel_time > file_time + if extract: + zf.extract(relpath, cache_base) + result.append((name, dest)) + except KeyError: + pass + return result + + def is_compatible(self): + """ + Determine if a wheel is compatible with the running system. + """ + return is_compatible(self) + + def is_mountable(self): + """ + Determine if a wheel is asserted as mountable by its metadata. + """ + return True # for now - metadata details TBD + + def mount(self, append=False): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if not self.is_compatible(): + msg = 'Wheel %s not compatible with this Python.' % pathname + raise DistlibException(msg) + if not self.is_mountable(): + msg = 'Wheel %s is marked as not mountable.' % pathname + raise DistlibException(msg) + if pathname in sys.path: + logger.debug('%s already in path', pathname) + else: + if append: + sys.path.append(pathname) + else: + sys.path.insert(0, pathname) + extensions = self._get_extensions() + if extensions: + if _hook not in sys.meta_path: + sys.meta_path.append(_hook) + _hook.add(pathname, extensions) + + def unmount(self): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if pathname not in sys.path: + logger.debug('%s not in path', pathname) + else: + sys.path.remove(pathname) + if pathname in _hook.impure_wheels: + _hook.remove(pathname) + if not _hook.impure_wheels: + if _hook in sys.meta_path: + sys.meta_path.remove(_hook) + + def verify(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + # TODO version verification + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + # See issue #115: some wheels have .. in their entries, but + # in the filename ... e.g. __main__..py ! So the check is + # updated to look for .. in the directory portions + p = u_arcname.split('/') + if '..' in p: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + + if self.skip_entry(u_arcname): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + def update(self, modifier, dest_dir=None, **kwargs): + """ + Update the contents of a wheel in a generic way. The modifier should + be a callable which expects a dictionary argument: its keys are + archive-entry paths, and its values are absolute filesystem paths + where the contents the corresponding archive entries can be found. The + modifier is free to change the contents of the files pointed to, add + new entries and remove entries, before returning. This method will + extract the entire contents of the wheel to a temporary location, call + the modifier, and then use the passed (and possibly updated) + dictionary to write a new wheel. If ``dest_dir`` is specified, the new + wheel is written there -- otherwise, the original wheel is overwritten. + + The modifier should return True if it updated the wheel, else False. + This method returns the same value the modifier returns. + """ + + def get_version(path_map, info_dir): + version = path = None + key = '%s/%s' % (info_dir, LEGACY_METADATA_FILENAME) + if key not in path_map: + key = '%s/PKG-INFO' % info_dir + if key in path_map: + path = path_map[key] + version = Metadata(path=path).version + return version, path + + def update_version(version, path): + updated = None + try: + v = NormalizedVersion(version) + i = version.find('-') + if i < 0: + updated = '%s+1' % version + else: + parts = [int(s) for s in version[i + 1:].split('.')] + parts[-1] += 1 + updated = '%s+%s' % (version[:i], + '.'.join(str(i) for i in parts)) + except UnsupportedVersionError: + logger.debug('Cannot update non-compliant (PEP-440) ' + 'version %r', version) + if updated: + md = Metadata(path=path) + md.version = updated + legacy = path.endswith(LEGACY_METADATA_FILENAME) + md.write(path=path, legacy=legacy) + logger.debug('Version updated from %r to %r', version, + updated) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + record_name = posixpath.join(info_dir, 'RECORD') + with tempdir() as workdir: + with ZipFile(pathname, 'r') as zf: + path_map = {} + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if u_arcname == record_name: + continue + if '..' in u_arcname: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + zf.extract(zinfo, workdir) + path = os.path.join(workdir, convert_path(u_arcname)) + path_map[u_arcname] = path + + # Remember the version. + original_version, _ = get_version(path_map, info_dir) + # Files extracted. Call the modifier. + modified = modifier(path_map, **kwargs) + if modified: + # Something changed - need to build a new wheel. + current_version, path = get_version(path_map, info_dir) + if current_version and (current_version == original_version): + # Add or update local version to signify changes. + update_version(current_version, path) + # Decide where the new wheel goes. + if dest_dir is None: + fd, newpath = tempfile.mkstemp(suffix='.whl', + prefix='wheel-update-', + dir=workdir) + os.close(fd) + else: + if not os.path.isdir(dest_dir): + raise DistlibException('Not a directory: %r' % dest_dir) + newpath = os.path.join(dest_dir, self.filename) + archive_paths = list(path_map.items()) + distinfo = os.path.join(workdir, info_dir) + info = distinfo, info_dir + self.write_records(info, workdir, archive_paths) + self.build_zip(newpath, archive_paths) + if dest_dir is None: + shutil.copyfile(newpath, pathname) + return modified + +def _get_glibc_version(): + import platform + ver = platform.libc_ver() + result = [] + if ver[0] == 'glibc': + for s in ver[1].split('.'): + result.append(int(s) if s.isdigit() else 0) + result = tuple(result) + return result + +def compatible_tags(): + """ + Return (pyver, abi, arch) tuples compatible with this Python. + """ + versions = [VER_SUFFIX] + major = VER_SUFFIX[0] + for minor in range(sys.version_info[1] - 1, - 1, -1): + versions.append(''.join([major, str(minor)])) + + abis = [] + for suffix, _, _ in imp.get_suffixes(): + if suffix.startswith('.abi'): + abis.append(suffix.split('.', 2)[1]) + abis.sort() + if ABI != 'none': + abis.insert(0, ABI) + abis.append('none') + result = [] + + arches = [ARCH] + if sys.platform == 'darwin': + m = re.match(r'(\w+)_(\d+)_(\d+)_(\w+)$', ARCH) + if m: + name, major, minor, arch = m.groups() + minor = int(minor) + matches = [arch] + if arch in ('i386', 'ppc'): + matches.append('fat') + if arch in ('i386', 'ppc', 'x86_64'): + matches.append('fat3') + if arch in ('ppc64', 'x86_64'): + matches.append('fat64') + if arch in ('i386', 'x86_64'): + matches.append('intel') + if arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'): + matches.append('universal') + while minor >= 0: + for match in matches: + s = '%s_%s_%s_%s' % (name, major, minor, match) + if s != ARCH: # already there + arches.append(s) + minor -= 1 + + # Most specific - our Python version, ABI and arch + for abi in abis: + for arch in arches: + result.append((''.join((IMP_PREFIX, versions[0])), abi, arch)) + # manylinux + if abi != 'none' and sys.platform.startswith('linux'): + arch = arch.replace('linux_', '') + parts = _get_glibc_version() + if len(parts) == 2: + if parts >= (2, 5): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux1_%s' % arch)) + if parts >= (2, 12): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux2010_%s' % arch)) + if parts >= (2, 17): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux2014_%s' % arch)) + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux_%s_%s_%s' % (parts[0], parts[1], + arch))) + + # where no ABI / arch dependency, but IMP_PREFIX dependency + for i, version in enumerate(versions): + result.append((''.join((IMP_PREFIX, version)), 'none', 'any')) + if i == 0: + result.append((''.join((IMP_PREFIX, version[0])), 'none', 'any')) + + # no IMP_PREFIX, ABI or arch dependency + for i, version in enumerate(versions): + result.append((''.join(('py', version)), 'none', 'any')) + if i == 0: + result.append((''.join(('py', version[0])), 'none', 'any')) + + return set(result) + + +COMPATIBLE_TAGS = compatible_tags() + +del compatible_tags + + +def is_compatible(wheel, tags=None): + if not isinstance(wheel, Wheel): + wheel = Wheel(wheel) # assume it's a filename + result = False + if tags is None: + tags = COMPATIBLE_TAGS + for ver, abi, arch in tags: + if ver in wheel.pyver and abi in wheel.abi and arch in wheel.arch: + result = True + break + return result diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/distro.py b/.venv/lib/python3.9/site-packages/pip/_vendor/distro.py new file mode 100644 index 0000000..7892741 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/distro.py @@ -0,0 +1,1386 @@ +# Copyright 2015,2016,2017 Nir Cohen +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +The ``distro`` package (``distro`` stands for Linux Distribution) provides +information about the Linux distribution it runs on, such as a reliable +machine-readable distro ID, or version information. + +It is the recommended replacement for Python's original +:py:func:`platform.linux_distribution` function, but it provides much more +functionality. An alternative implementation became necessary because Python +3.5 deprecated this function, and Python 3.8 removed it altogether. Its +predecessor function :py:func:`platform.dist` was already deprecated since +Python 2.6 and removed in Python 3.8. Still, there are many cases in which +access to OS distribution information is needed. See `Python issue 1322 +`_ for more information. +""" + +import argparse +import json +import logging +import os +import re +import shlex +import subprocess +import sys +import warnings + +__version__ = "1.6.0" + +# Use `if False` to avoid an ImportError on Python 2. After dropping Python 2 +# support, can use typing.TYPE_CHECKING instead. See: +# https://docs.python.org/3/library/typing.html#typing.TYPE_CHECKING +if False: # pragma: nocover + from typing import ( + Any, + Callable, + Dict, + Iterable, + Optional, + Sequence, + TextIO, + Tuple, + Type, + TypedDict, + Union, + ) + + VersionDict = TypedDict( + "VersionDict", {"major": str, "minor": str, "build_number": str} + ) + InfoDict = TypedDict( + "InfoDict", + { + "id": str, + "version": str, + "version_parts": VersionDict, + "like": str, + "codename": str, + }, + ) + + +_UNIXCONFDIR = os.environ.get("UNIXCONFDIR", "/etc") +_UNIXUSRLIBDIR = os.environ.get("UNIXUSRLIBDIR", "/usr/lib") +_OS_RELEASE_BASENAME = "os-release" + +#: Translation table for normalizing the "ID" attribute defined in os-release +#: files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as defined in the os-release file, translated to lower case, +#: with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_OS_ID = { + "ol": "oracle", # Oracle Linux +} + +#: Translation table for normalizing the "Distributor ID" attribute returned by +#: the lsb_release command, for use by the :func:`distro.id` method. +#: +#: * Key: Value as returned by the lsb_release command, translated to lower +#: case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_LSB_ID = { + "enterpriseenterpriseas": "oracle", # Oracle Enterprise Linux 4 + "enterpriseenterpriseserver": "oracle", # Oracle Linux 5 + "redhatenterpriseworkstation": "rhel", # RHEL 6, 7 Workstation + "redhatenterpriseserver": "rhel", # RHEL 6, 7 Server + "redhatenterprisecomputenode": "rhel", # RHEL 6 ComputeNode +} + +#: Translation table for normalizing the distro ID derived from the file name +#: of distro release files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as derived from the file name of a distro release file, +#: translated to lower case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_DISTRO_ID = { + "redhat": "rhel", # RHEL 6.x, 7.x +} + +# Pattern for content of distro release file (reversed) +_DISTRO_RELEASE_CONTENT_REVERSED_PATTERN = re.compile( + r"(?:[^)]*\)(.*)\()? *(?:STL )?([\d.+\-a-z]*\d) *(?:esaeler *)?(.+)" +) + +# Pattern for base file name of distro release file +_DISTRO_RELEASE_BASENAME_PATTERN = re.compile(r"(\w+)[-_](release|version)$") + +# Base file names to be ignored when searching for distro release file +_DISTRO_RELEASE_IGNORE_BASENAMES = ( + "debian_version", + "lsb-release", + "oem-release", + _OS_RELEASE_BASENAME, + "system-release", + "plesk-release", + "iredmail-release", +) + + +def linux_distribution(full_distribution_name=True): + # type: (bool) -> Tuple[str, str, str] + """ + .. deprecated:: 1.6.0 + + :func:`distro.linux_distribution()` is deprecated. It should only be + used as a compatibility shim with Python's + :py:func:`platform.linux_distribution()`. Please use :func:`distro.id`, + :func:`distro.version` and :func:`distro.name` instead. + + Return information about the current OS distribution as a tuple + ``(id_name, version, codename)`` with items as follows: + + * ``id_name``: If *full_distribution_name* is false, the result of + :func:`distro.id`. Otherwise, the result of :func:`distro.name`. + + * ``version``: The result of :func:`distro.version`. + + * ``codename``: The result of :func:`distro.codename`. + + The interface of this function is compatible with the original + :py:func:`platform.linux_distribution` function, supporting a subset of + its parameters. + + The data it returns may not exactly be the same, because it uses more data + sources than the original function, and that may lead to different data if + the OS distribution is not consistent across multiple data sources it + provides (there are indeed such distributions ...). + + Another reason for differences is the fact that the :func:`distro.id` + method normalizes the distro ID string to a reliable machine-readable value + for a number of popular OS distributions. + """ + warnings.warn( + "distro.linux_distribution() is deprecated. It should only be used as a " + "compatibility shim with Python's platform.linux_distribution(). Please use " + "distro.id(), distro.version() and distro.name() instead.", + DeprecationWarning, + stacklevel=2, + ) + return _distro.linux_distribution(full_distribution_name) + + +def id(): + # type: () -> str + """ + Return the distro ID of the current distribution, as a + machine-readable string. + + For a number of OS distributions, the returned distro ID value is + *reliable*, in the sense that it is documented and that it does not change + across releases of the distribution. + + This package maintains the following reliable distro ID values: + + ============== ========================================= + Distro ID Distribution + ============== ========================================= + "ubuntu" Ubuntu + "debian" Debian + "rhel" RedHat Enterprise Linux + "centos" CentOS + "fedora" Fedora + "sles" SUSE Linux Enterprise Server + "opensuse" openSUSE + "amazon" Amazon Linux + "arch" Arch Linux + "cloudlinux" CloudLinux OS + "exherbo" Exherbo Linux + "gentoo" GenToo Linux + "ibm_powerkvm" IBM PowerKVM + "kvmibm" KVM for IBM z Systems + "linuxmint" Linux Mint + "mageia" Mageia + "mandriva" Mandriva Linux + "parallels" Parallels + "pidora" Pidora + "raspbian" Raspbian + "oracle" Oracle Linux (and Oracle Enterprise Linux) + "scientific" Scientific Linux + "slackware" Slackware + "xenserver" XenServer + "openbsd" OpenBSD + "netbsd" NetBSD + "freebsd" FreeBSD + "midnightbsd" MidnightBSD + ============== ========================================= + + If you have a need to get distros for reliable IDs added into this set, + or if you find that the :func:`distro.id` function returns a different + distro ID for one of the listed distros, please create an issue in the + `distro issue tracker`_. + + **Lookup hierarchy and transformations:** + + First, the ID is obtained from the following sources, in the specified + order. The first available and non-empty value is used: + + * the value of the "ID" attribute of the os-release file, + + * the value of the "Distributor ID" attribute returned by the lsb_release + command, + + * the first part of the file name of the distro release file, + + The so determined ID value then passes the following transformations, + before it is returned by this method: + + * it is translated to lower case, + + * blanks (which should not be there anyway) are translated to underscores, + + * a normalization of the ID is performed, based upon + `normalization tables`_. The purpose of this normalization is to ensure + that the ID is as reliable as possible, even across incompatible changes + in the OS distributions. A common reason for an incompatible change is + the addition of an os-release file, or the addition of the lsb_release + command, with ID values that differ from what was previously determined + from the distro release file name. + """ + return _distro.id() + + +def name(pretty=False): + # type: (bool) -> str + """ + Return the name of the current OS distribution, as a human-readable + string. + + If *pretty* is false, the name is returned without version or codename. + (e.g. "CentOS Linux") + + If *pretty* is true, the version and codename are appended. + (e.g. "CentOS Linux 7.1.1503 (Core)") + + **Lookup hierarchy:** + + The name is obtained from the following sources, in the specified order. + The first available and non-empty value is used: + + * If *pretty* is false: + + - the value of the "NAME" attribute of the os-release file, + + - the value of the "Distributor ID" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file. + + * If *pretty* is true: + + - the value of the "PRETTY_NAME" attribute of the os-release file, + + - the value of the "Description" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file, appended + with the value of the pretty version ("" and "" + fields) of the distro release file, if available. + """ + return _distro.name(pretty) + + +def version(pretty=False, best=False): + # type: (bool, bool) -> str + """ + Return the version of the current OS distribution, as a human-readable + string. + + If *pretty* is false, the version is returned without codename (e.g. + "7.0"). + + If *pretty* is true, the codename in parenthesis is appended, if the + codename is non-empty (e.g. "7.0 (Maipo)"). + + Some distributions provide version numbers with different precisions in + the different sources of distribution information. Examining the different + sources in a fixed priority order does not always yield the most precise + version (e.g. for Debian 8.2, or CentOS 7.1). + + The *best* parameter can be used to control the approach for the returned + version: + + If *best* is false, the first non-empty version number in priority order of + the examined sources is returned. + + If *best* is true, the most precise version number out of all examined + sources is returned. + + **Lookup hierarchy:** + + In all cases, the version number is obtained from the following sources. + If *best* is false, this order represents the priority order: + + * the value of the "VERSION_ID" attribute of the os-release file, + * the value of the "Release" attribute returned by the lsb_release + command, + * the version number parsed from the "" field of the first line + of the distro release file, + * the version number parsed from the "PRETTY_NAME" attribute of the + os-release file, if it follows the format of the distro release files. + * the version number parsed from the "Description" attribute returned by + the lsb_release command, if it follows the format of the distro release + files. + """ + return _distro.version(pretty, best) + + +def version_parts(best=False): + # type: (bool) -> Tuple[str, str, str] + """ + Return the version of the current OS distribution as a tuple + ``(major, minor, build_number)`` with items as follows: + + * ``major``: The result of :func:`distro.major_version`. + + * ``minor``: The result of :func:`distro.minor_version`. + + * ``build_number``: The result of :func:`distro.build_number`. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.version_parts(best) + + +def major_version(best=False): + # type: (bool) -> str + """ + Return the major version of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The major version is the first + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.major_version(best) + + +def minor_version(best=False): + # type: (bool) -> str + """ + Return the minor version of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The minor version is the second + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.minor_version(best) + + +def build_number(best=False): + # type: (bool) -> str + """ + Return the build number of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The build number is the third part + of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.build_number(best) + + +def like(): + # type: () -> str + """ + Return a space-separated list of distro IDs of distributions that are + closely related to the current OS distribution in regards to packaging + and programming interfaces, for example distributions the current + distribution is a derivative from. + + **Lookup hierarchy:** + + This information item is only provided by the os-release file. + For details, see the description of the "ID_LIKE" attribute in the + `os-release man page + `_. + """ + return _distro.like() + + +def codename(): + # type: () -> str + """ + Return the codename for the release of the current OS distribution, + as a string. + + If the distribution does not have a codename, an empty string is returned. + + Note that the returned codename is not always really a codename. For + example, openSUSE returns "x86_64". This function does not handle such + cases in any special way and just returns the string it finds, if any. + + **Lookup hierarchy:** + + * the codename within the "VERSION" attribute of the os-release file, if + provided, + + * the value of the "Codename" attribute returned by the lsb_release + command, + + * the value of the "" field of the distro release file. + """ + return _distro.codename() + + +def info(pretty=False, best=False): + # type: (bool, bool) -> InfoDict + """ + Return certain machine-readable information items about the current OS + distribution in a dictionary, as shown in the following example: + + .. sourcecode:: python + + { + 'id': 'rhel', + 'version': '7.0', + 'version_parts': { + 'major': '7', + 'minor': '0', + 'build_number': '' + }, + 'like': 'fedora', + 'codename': 'Maipo' + } + + The dictionary structure and keys are always the same, regardless of which + information items are available in the underlying data sources. The values + for the various keys are as follows: + + * ``id``: The result of :func:`distro.id`. + + * ``version``: The result of :func:`distro.version`. + + * ``version_parts -> major``: The result of :func:`distro.major_version`. + + * ``version_parts -> minor``: The result of :func:`distro.minor_version`. + + * ``version_parts -> build_number``: The result of + :func:`distro.build_number`. + + * ``like``: The result of :func:`distro.like`. + + * ``codename``: The result of :func:`distro.codename`. + + For a description of the *pretty* and *best* parameters, see the + :func:`distro.version` method. + """ + return _distro.info(pretty, best) + + +def os_release_info(): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information items + from the os-release file data source of the current OS distribution. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_info() + + +def lsb_release_info(): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information items + from the lsb_release command data source of the current OS distribution. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_info() + + +def distro_release_info(): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current OS distribution. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_info() + + +def uname_info(): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current OS distribution. + """ + return _distro.uname_info() + + +def os_release_attr(attribute): + # type: (str) -> str + """ + Return a single named information item from the os-release file data source + of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_attr(attribute) + + +def lsb_release_attr(attribute): + # type: (str) -> str + """ + Return a single named information item from the lsb_release command output + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_attr(attribute) + + +def distro_release_attr(attribute): + # type: (str) -> str + """ + Return a single named information item from the distro release file + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_attr(attribute) + + +def uname_attr(attribute): + # type: (str) -> str + """ + Return a single named information item from the distro release file + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + """ + return _distro.uname_attr(attribute) + + +try: + from functools import cached_property +except ImportError: + # Python < 3.8 + class cached_property(object): # type: ignore + """A version of @property which caches the value. On access, it calls the + underlying function and sets the value in `__dict__` so future accesses + will not re-call the property. + """ + + def __init__(self, f): + # type: (Callable[[Any], Any]) -> None + self._fname = f.__name__ + self._f = f + + def __get__(self, obj, owner): + # type: (Any, Type[Any]) -> Any + assert obj is not None, "call {} on an instance".format(self._fname) + ret = obj.__dict__[self._fname] = self._f(obj) + return ret + + +class LinuxDistribution(object): + """ + Provides information about a OS distribution. + + This package creates a private module-global instance of this class with + default initialization arguments, that is used by the + `consolidated accessor functions`_ and `single source accessor functions`_. + By using default initialization arguments, that module-global instance + returns data about the current OS distribution (i.e. the distro this + package runs on). + + Normally, it is not necessary to create additional instances of this class. + However, in situations where control is needed over the exact data sources + that are used, instances of this class can be created with a specific + distro release file, or a specific os-release file, or without invoking the + lsb_release command. + """ + + def __init__( + self, + include_lsb=True, + os_release_file="", + distro_release_file="", + include_uname=True, + root_dir=None, + ): + # type: (bool, str, str, bool, Optional[str]) -> None + """ + The initialization method of this class gathers information from the + available data sources, and stores that in private instance attributes. + Subsequent access to the information items uses these private instance + attributes, so that the data sources are read only once. + + Parameters: + + * ``include_lsb`` (bool): Controls whether the + `lsb_release command output`_ is included as a data source. + + If the lsb_release command is not available in the program execution + path, the data source for the lsb_release command will be empty. + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is to be used as a data source. + + An empty string (the default) will cause the default path name to + be used (see `os-release file`_ for details). + + If the specified or defaulted os-release file does not exist, the + data source for the os-release file will be empty. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is to be used as a data source. + + An empty string (the default) will cause a default search algorithm + to be used (see `distro release file`_ for details). + + If the specified distro release file does not exist, or if no default + distro release file can be found, the data source for the distro + release file will be empty. + + * ``include_uname`` (bool): Controls whether uname command output is + included as a data source. If the uname command is not available in + the program execution path the data source for the uname command will + be empty. + + * ``root_dir`` (string): The absolute path to the root directory to use + to find distro-related information files. + + Public instance attributes: + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``include_lsb`` (bool): The result of the ``include_lsb`` parameter. + This controls whether the lsb information will be loaded. + + * ``include_uname`` (bool): The result of the ``include_uname`` + parameter. This controls whether the uname information will + be loaded. + + Raises: + + * :py:exc:`IOError`: Some I/O issue with an os-release file or distro + release file. + + * :py:exc:`subprocess.CalledProcessError`: The lsb_release command had + some issue (other than not being available in the program execution + path). + + * :py:exc:`UnicodeError`: A data source has unexpected characters or + uses an unexpected encoding. + """ + self.root_dir = root_dir + self.etc_dir = os.path.join(root_dir, "etc") if root_dir else _UNIXCONFDIR + self.usr_lib_dir = ( + os.path.join(root_dir, "usr/lib") if root_dir else _UNIXUSRLIBDIR + ) + + if os_release_file: + self.os_release_file = os_release_file + else: + etc_dir_os_release_file = os.path.join(self.etc_dir, _OS_RELEASE_BASENAME) + usr_lib_os_release_file = os.path.join( + self.usr_lib_dir, _OS_RELEASE_BASENAME + ) + + # NOTE: The idea is to respect order **and** have it set + # at all times for API backwards compatibility. + if os.path.isfile(etc_dir_os_release_file) or not os.path.isfile( + usr_lib_os_release_file + ): + self.os_release_file = etc_dir_os_release_file + else: + self.os_release_file = usr_lib_os_release_file + + self.distro_release_file = distro_release_file or "" # updated later + self.include_lsb = include_lsb + self.include_uname = include_uname + + def __repr__(self): + # type: () -> str + """Return repr of all info""" + return ( + "LinuxDistribution(" + "os_release_file={self.os_release_file!r}, " + "distro_release_file={self.distro_release_file!r}, " + "include_lsb={self.include_lsb!r}, " + "include_uname={self.include_uname!r}, " + "_os_release_info={self._os_release_info!r}, " + "_lsb_release_info={self._lsb_release_info!r}, " + "_distro_release_info={self._distro_release_info!r}, " + "_uname_info={self._uname_info!r})".format(self=self) + ) + + def linux_distribution(self, full_distribution_name=True): + # type: (bool) -> Tuple[str, str, str] + """ + Return information about the OS distribution that is compatible + with Python's :func:`platform.linux_distribution`, supporting a subset + of its parameters. + + For details, see :func:`distro.linux_distribution`. + """ + return ( + self.name() if full_distribution_name else self.id(), + self.version(), + self.codename(), + ) + + def id(self): + # type: () -> str + """Return the distro ID of the OS distribution, as a string. + + For details, see :func:`distro.id`. + """ + + def normalize(distro_id, table): + # type: (str, Dict[str, str]) -> str + distro_id = distro_id.lower().replace(" ", "_") + return table.get(distro_id, distro_id) + + distro_id = self.os_release_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_OS_ID) + + distro_id = self.lsb_release_attr("distributor_id") + if distro_id: + return normalize(distro_id, NORMALIZED_LSB_ID) + + distro_id = self.distro_release_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + distro_id = self.uname_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + return "" + + def name(self, pretty=False): + # type: (bool) -> str + """ + Return the name of the OS distribution, as a string. + + For details, see :func:`distro.name`. + """ + name = ( + self.os_release_attr("name") + or self.lsb_release_attr("distributor_id") + or self.distro_release_attr("name") + or self.uname_attr("name") + ) + if pretty: + name = self.os_release_attr("pretty_name") or self.lsb_release_attr( + "description" + ) + if not name: + name = self.distro_release_attr("name") or self.uname_attr("name") + version = self.version(pretty=True) + if version: + name = name + " " + version + return name or "" + + def version(self, pretty=False, best=False): + # type: (bool, bool) -> str + """ + Return the version of the OS distribution, as a string. + + For details, see :func:`distro.version`. + """ + versions = [ + self.os_release_attr("version_id"), + self.lsb_release_attr("release"), + self.distro_release_attr("version_id"), + self._parse_distro_release_content(self.os_release_attr("pretty_name")).get( + "version_id", "" + ), + self._parse_distro_release_content( + self.lsb_release_attr("description") + ).get("version_id", ""), + self.uname_attr("release"), + ] + version = "" + if best: + # This algorithm uses the last version in priority order that has + # the best precision. If the versions are not in conflict, that + # does not matter; otherwise, using the last one instead of the + # first one might be considered a surprise. + for v in versions: + if v.count(".") > version.count(".") or version == "": + version = v + else: + for v in versions: + if v != "": + version = v + break + if pretty and version and self.codename(): + version = "{0} ({1})".format(version, self.codename()) + return version + + def version_parts(self, best=False): + # type: (bool) -> Tuple[str, str, str] + """ + Return the version of the OS distribution, as a tuple of version + numbers. + + For details, see :func:`distro.version_parts`. + """ + version_str = self.version(best=best) + if version_str: + version_regex = re.compile(r"(\d+)\.?(\d+)?\.?(\d+)?") + matches = version_regex.match(version_str) + if matches: + major, minor, build_number = matches.groups() + return major, minor or "", build_number or "" + return "", "", "" + + def major_version(self, best=False): + # type: (bool) -> str + """ + Return the major version number of the current distribution. + + For details, see :func:`distro.major_version`. + """ + return self.version_parts(best)[0] + + def minor_version(self, best=False): + # type: (bool) -> str + """ + Return the minor version number of the current distribution. + + For details, see :func:`distro.minor_version`. + """ + return self.version_parts(best)[1] + + def build_number(self, best=False): + # type: (bool) -> str + """ + Return the build number of the current distribution. + + For details, see :func:`distro.build_number`. + """ + return self.version_parts(best)[2] + + def like(self): + # type: () -> str + """ + Return the IDs of distributions that are like the OS distribution. + + For details, see :func:`distro.like`. + """ + return self.os_release_attr("id_like") or "" + + def codename(self): + # type: () -> str + """ + Return the codename of the OS distribution. + + For details, see :func:`distro.codename`. + """ + try: + # Handle os_release specially since distros might purposefully set + # this to empty string to have no codename + return self._os_release_info["codename"] + except KeyError: + return ( + self.lsb_release_attr("codename") + or self.distro_release_attr("codename") + or "" + ) + + def info(self, pretty=False, best=False): + # type: (bool, bool) -> InfoDict + """ + Return certain machine-readable information about the OS + distribution. + + For details, see :func:`distro.info`. + """ + return dict( + id=self.id(), + version=self.version(pretty, best), + version_parts=dict( + major=self.major_version(best), + minor=self.minor_version(best), + build_number=self.build_number(best), + ), + like=self.like(), + codename=self.codename(), + ) + + def os_release_info(self): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information + items from the os-release file data source of the OS distribution. + + For details, see :func:`distro.os_release_info`. + """ + return self._os_release_info + + def lsb_release_info(self): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information + items from the lsb_release command data source of the OS + distribution. + + For details, see :func:`distro.lsb_release_info`. + """ + return self._lsb_release_info + + def distro_release_info(self): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information + items from the distro release file data source of the OS + distribution. + + For details, see :func:`distro.distro_release_info`. + """ + return self._distro_release_info + + def uname_info(self): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information + items from the uname command data source of the OS distribution. + + For details, see :func:`distro.uname_info`. + """ + return self._uname_info + + def os_release_attr(self, attribute): + # type: (str) -> str + """ + Return a single named information item from the os-release file data + source of the OS distribution. + + For details, see :func:`distro.os_release_attr`. + """ + return self._os_release_info.get(attribute, "") + + def lsb_release_attr(self, attribute): + # type: (str) -> str + """ + Return a single named information item from the lsb_release command + output data source of the OS distribution. + + For details, see :func:`distro.lsb_release_attr`. + """ + return self._lsb_release_info.get(attribute, "") + + def distro_release_attr(self, attribute): + # type: (str) -> str + """ + Return a single named information item from the distro release file + data source of the OS distribution. + + For details, see :func:`distro.distro_release_attr`. + """ + return self._distro_release_info.get(attribute, "") + + def uname_attr(self, attribute): + # type: (str) -> str + """ + Return a single named information item from the uname command + output data source of the OS distribution. + + For details, see :func:`distro.uname_attr`. + """ + return self._uname_info.get(attribute, "") + + @cached_property + def _os_release_info(self): + # type: () -> Dict[str, str] + """ + Get the information items from the specified os-release file. + + Returns: + A dictionary containing all information items. + """ + if os.path.isfile(self.os_release_file): + with open(self.os_release_file) as release_file: + return self._parse_os_release_content(release_file) + return {} + + @staticmethod + def _parse_os_release_content(lines): + # type: (TextIO) -> Dict[str, str] + """ + Parse the lines of an os-release file. + + Parameters: + + * lines: Iterable through the lines in the os-release file. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + lexer = shlex.shlex(lines, posix=True) + lexer.whitespace_split = True + + # The shlex module defines its `wordchars` variable using literals, + # making it dependent on the encoding of the Python source file. + # In Python 2.6 and 2.7, the shlex source file is encoded in + # 'iso-8859-1', and the `wordchars` variable is defined as a byte + # string. This causes a UnicodeDecodeError to be raised when the + # parsed content is a unicode object. The following fix resolves that + # (... but it should be fixed in shlex...): + if sys.version_info[0] == 2 and isinstance(lexer.wordchars, bytes): + lexer.wordchars = lexer.wordchars.decode("iso-8859-1") + + tokens = list(lexer) + for token in tokens: + # At this point, all shell-like parsing has been done (i.e. + # comments processed, quotes and backslash escape sequences + # processed, multi-line values assembled, trailing newlines + # stripped, etc.), so the tokens are now either: + # * variable assignments: var=value + # * commands or their arguments (not allowed in os-release) + if "=" in token: + k, v = token.split("=", 1) + props[k.lower()] = v + else: + # Ignore any tokens that are not variable assignments + pass + + if "version_codename" in props: + # os-release added a version_codename field. Use that in + # preference to anything else Note that some distros purposefully + # do not have code names. They should be setting + # version_codename="" + props["codename"] = props["version_codename"] + elif "ubuntu_codename" in props: + # Same as above but a non-standard field name used on older Ubuntus + props["codename"] = props["ubuntu_codename"] + elif "version" in props: + # If there is no version_codename, parse it from the version + match = re.search(r"(\(\D+\))|,(\s+)?\D+", props["version"]) + if match: + codename = match.group() + codename = codename.strip("()") + codename = codename.strip(",") + codename = codename.strip() + # codename appears within paranthese. + props["codename"] = codename + + return props + + @cached_property + def _lsb_release_info(self): + # type: () -> Dict[str, str] + """ + Get the information items from the lsb_release command output. + + Returns: + A dictionary containing all information items. + """ + if not self.include_lsb: + return {} + with open(os.devnull, "wb") as devnull: + try: + cmd = ("lsb_release", "-a") + stdout = subprocess.check_output(cmd, stderr=devnull) + # Command not found or lsb_release returned error + except (OSError, subprocess.CalledProcessError): + return {} + content = self._to_str(stdout).splitlines() + return self._parse_lsb_release_content(content) + + @staticmethod + def _parse_lsb_release_content(lines): + # type: (Iterable[str]) -> Dict[str, str] + """ + Parse the output of the lsb_release command. + + Parameters: + + * lines: Iterable through the lines of the lsb_release output. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + for line in lines: + kv = line.strip("\n").split(":", 1) + if len(kv) != 2: + # Ignore lines without colon. + continue + k, v = kv + props.update({k.replace(" ", "_").lower(): v.strip()}) + return props + + @cached_property + def _uname_info(self): + # type: () -> Dict[str, str] + with open(os.devnull, "wb") as devnull: + try: + cmd = ("uname", "-rs") + stdout = subprocess.check_output(cmd, stderr=devnull) + except OSError: + return {} + content = self._to_str(stdout).splitlines() + return self._parse_uname_content(content) + + @staticmethod + def _parse_uname_content(lines): + # type: (Sequence[str]) -> Dict[str, str] + props = {} + match = re.search(r"^([^\s]+)\s+([\d\.]+)", lines[0].strip()) + if match: + name, version = match.groups() + + # This is to prevent the Linux kernel version from + # appearing as the 'best' version on otherwise + # identifiable distributions. + if name == "Linux": + return {} + props["id"] = name.lower() + props["name"] = name + props["release"] = version + return props + + @staticmethod + def _to_str(text): + # type: (Union[bytes, str]) -> str + encoding = sys.getfilesystemencoding() + encoding = "utf-8" if encoding == "ascii" else encoding + + if sys.version_info[0] >= 3: + if isinstance(text, bytes): + return text.decode(encoding) + else: + if isinstance(text, unicode): # noqa + return text.encode(encoding) + + return text + + @cached_property + def _distro_release_info(self): + # type: () -> Dict[str, str] + """ + Get the information items from the specified distro release file. + + Returns: + A dictionary containing all information items. + """ + if self.distro_release_file: + # If it was specified, we use it and parse what we can, even if + # its file name or content does not match the expected pattern. + distro_info = self._parse_distro_release_file(self.distro_release_file) + basename = os.path.basename(self.distro_release_file) + # The file name pattern for user-specified distro release files + # is somewhat more tolerant (compared to when searching for the + # file), because we want to use what was specified as best as + # possible. + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if "name" in distro_info and "cloudlinux" in distro_info["name"].lower(): + distro_info["id"] = "cloudlinux" + elif match: + distro_info["id"] = match.group(1) + return distro_info + else: + try: + basenames = os.listdir(self.etc_dir) + # We sort for repeatability in cases where there are multiple + # distro specific files; e.g. CentOS, Oracle, Enterprise all + # containing `redhat-release` on top of their own. + basenames.sort() + except OSError: + # This may occur when /etc is not readable but we can't be + # sure about the *-release files. Check common entries of + # /etc for information. If they turn out to not be there the + # error is handled in `_parse_distro_release_file()`. + basenames = [ + "SuSE-release", + "arch-release", + "base-release", + "centos-release", + "fedora-release", + "gentoo-release", + "mageia-release", + "mandrake-release", + "mandriva-release", + "mandrivalinux-release", + "manjaro-release", + "oracle-release", + "redhat-release", + "sl-release", + "slackware-version", + ] + for basename in basenames: + if basename in _DISTRO_RELEASE_IGNORE_BASENAMES: + continue + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if match: + filepath = os.path.join(self.etc_dir, basename) + distro_info = self._parse_distro_release_file(filepath) + if "name" in distro_info: + # The name is always present if the pattern matches + self.distro_release_file = filepath + distro_info["id"] = match.group(1) + if "cloudlinux" in distro_info["name"].lower(): + distro_info["id"] = "cloudlinux" + return distro_info + return {} + + def _parse_distro_release_file(self, filepath): + # type: (str) -> Dict[str, str] + """ + Parse a distro release file. + + Parameters: + + * filepath: Path name of the distro release file. + + Returns: + A dictionary containing all information items. + """ + try: + with open(filepath) as fp: + # Only parse the first line. For instance, on SLES there + # are multiple lines. We don't want them... + return self._parse_distro_release_content(fp.readline()) + except (OSError, IOError): + # Ignore not being able to read a specific, seemingly version + # related file. + # See https://github.com/python-distro/distro/issues/162 + return {} + + @staticmethod + def _parse_distro_release_content(line): + # type: (str) -> Dict[str, str] + """ + Parse a line from a distro release file. + + Parameters: + * line: Line from the distro release file. Must be a unicode string + or a UTF-8 encoded byte string. + + Returns: + A dictionary containing all information items. + """ + matches = _DISTRO_RELEASE_CONTENT_REVERSED_PATTERN.match(line.strip()[::-1]) + distro_info = {} + if matches: + # regexp ensures non-None + distro_info["name"] = matches.group(3)[::-1] + if matches.group(2): + distro_info["version_id"] = matches.group(2)[::-1] + if matches.group(1): + distro_info["codename"] = matches.group(1)[::-1] + elif line: + distro_info["name"] = line.strip() + return distro_info + + +_distro = LinuxDistribution() + + +def main(): + # type: () -> None + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + logger.addHandler(logging.StreamHandler(sys.stdout)) + + parser = argparse.ArgumentParser(description="OS distro info tool") + parser.add_argument( + "--json", "-j", help="Output in machine readable format", action="store_true" + ) + + parser.add_argument( + "--root-dir", + "-r", + type=str, + dest="root_dir", + help="Path to the root filesystem directory (defaults to /)", + ) + + args = parser.parse_args() + + if args.root_dir: + dist = LinuxDistribution( + include_lsb=False, include_uname=False, root_dir=args.root_dir + ) + else: + dist = _distro + + if args.json: + logger.info(json.dumps(dist.info(), indent=4, sort_keys=True)) + else: + logger.info("Name: %s", dist.name(pretty=True)) + distribution_version = dist.version(pretty=True) + logger.info("Version: %s", distribution_version) + distribution_codename = dist.codename() + logger.info("Codename: %s", distribution_codename) + + +if __name__ == "__main__": + main() diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__init__.py new file mode 100644 index 0000000..d1d82f1 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__init__.py @@ -0,0 +1,35 @@ +""" +HTML parsing library based on the `WHATWG HTML specification +`_. The parser is designed to be compatible with +existing HTML found in the wild and implements well-defined error recovery that +is largely compatible with modern desktop web browsers. + +Example usage:: + + from pip._vendor import html5lib + with open("my_document.html", "rb") as f: + tree = html5lib.parse(f) + +For convenience, this module re-exports the following names: + +* :func:`~.html5parser.parse` +* :func:`~.html5parser.parseFragment` +* :class:`~.html5parser.HTMLParser` +* :func:`~.treebuilders.getTreeBuilder` +* :func:`~.treewalkers.getTreeWalker` +* :func:`~.serializer.serialize` +""" + +from __future__ import absolute_import, division, unicode_literals + +from .html5parser import HTMLParser, parse, parseFragment +from .treebuilders import getTreeBuilder +from .treewalkers import getTreeWalker +from .serializer import serialize + +__all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", + "getTreeWalker", "serialize"] + +# this has to be at the top level, see how setup.py parses this +#: Distribution version number. +__version__ = "1.1" diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..574f5612f458a77d4b8a0eded33f1f41833a6376 GIT binary patch literal 1318 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 Ool?4hkL zv;G`x^8KXJqZb z(*FU)Jxck2{f>k4A~>Jj`+mrIsq~nI2&juShjeD8&qfR$fS?-Ex zH_}m>$4m7sK2Oo37s6)3Q-2)02Npu8G|nRh43w!GIo z-IZY!#9mjWU8%B2>PywChu=qu7bQ^^1sPO(!P}90+RL_r%nOwC;z(!uf~RGsy;ONw zuNzBkM#41N1s^HAEH!*OP-ukVf`d-IAPl9}FoG8(dmhx_rEPGQ9*ow}*wl1V6>UaI z5E~w}-79glgQ*+a62dE)^;ALvNv}i3A$Ge#+>?dy9pPQ}j+^hL-@dfcPSceO-pWRx zRvMS^>96cJ3NgiR%;4wV<;yhQUnw}f?F~Uuu=nn4Md6kg28p*J>HH8urM=B9Bg$xM zkYy^`07jdJ_ahcs(EaFFMx%mq1x4?o+GP9IfL~>wzw?>3Z|^%98`v4otjx}wwsT;q zwSkS%`Tf$sdQcja22R_0$T_?H;%(PZ>@mg7$`2|7Hn1LAoMrBS9dOjv0pGE7Os*=} zfcaB`-C&RSdZU_G;W~-Vf+Uo=Lwe3j#+vz5Tcv%O;E1_RRT-Wm6OlUt=*eB*Cv^CJ zZpSjoE5nn+i5xBCc3v{Z%Q~g)3ZlxW$8g+N{ z&`DM|BE5Ad*p@O|?R6t;cqdT8Z%488Hv%oiYI9d6yQ^`uvD)2(t0otlZ>(zYeWe?O zJHe*ZtKF!(>SLBj)#_H(iGNO${azNuy4l@ROW6JmGQ&J7#vNYg^W5e0)*M<3yuW-L zL(S2-k64tfTS74wokJsI4>+uVvTZ%IZ!kr~hON%xliQn!FHfQM$Wl)m0-Wnm6Y4pl z)qEe*NJqYZ4Fqiv#QWz?kZ3${J*4A(G{3c3h@kHwq|-bR!NicS$i zWf8WDNP^&%dS8q*{KaFIBRP%b2s&gpA6|_b9z3$2rGAXDyeh^w)X;KNFTBQPJ!0M z?ki8){ct+&GW8Q;{4!M(3)CxA5#Wp9L3UNIQFW23pHX#)NYgT~B!~Vrik?A*Si)V$ zExBdaMns{p$CPb@c!d_wD#TdaxdQiX`auS-71lEK?VZw*zO%!J{gN3kkH?FCWe1pP zxa;4MCKci8JN9?Rq96W&R?+>Iy8pzrVi|kpcB%wYTt@_1FmW(*rWzP*qYUr4I-mK$ zqGHW_PesxAk#o_u6e7&INSlJw$wsGH!ZT!noi(Qw!xJo_zt0CGcV#_-=M-|QUto1a z%+xQ@Qm>=JT|l=kB)^1D?uJ`|@{txC7rTzpE{X~3j4wiD$5KRnOjt4k6}^ZmV!!8K zvM+fXsj;x`xkIt+^&`tD2c!GqSz7ilR2j?oHnJ`Ok44sXP9WZHTZ?SpPLN%X+L=Q+ z*F#u!-|5fa=L37$gqwl0jJRUX(#BmKzx`H!k-xM_31@!Xaju`vf;TXo9H8vQoqX1a+%j_1U zqNk&=OwRf>{{`*0i4l)Y8Q1KWAxX5`N-NK zi{@IKhIll-**r38wggfs$x$CrWn_4dTE@4g(b_{9-WQHFb5;@U2-e7-jzg543{lJ+ z|7Z!hp@AqlQW0J#k$b=if^7>=2kSlq6q*1Afr}Hk061%nQBC(?k$zf-7Q-cYXbDmq z6kZBR!@1M$CEpgfIbpkp2Ojc6W#S*HL6IKtI05psfnq)zrg4ndAl|3C8Ek}# zF6_MaEAwxG0*fhKe;7}(R>1uq!O;R|pAg8!23)+`vUYLVgU_&WBS NH+LSl+LZgu{{XHqQnLU6 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fabe33dfda2432510ea16f570f5fa29d8b0880b0 GIT binary patch literal 66356 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 y0YYDMYK1#kt|Y+SKIj)<0J6=f_(yn0|o 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 Aq5uE@ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fbac0e98488b5ce96a097e15c04a278af983419e GIT binary patch literal 91027 zcmeFa34C0~c_-L68V#Uv5r676W8Y@7GtN$8XY5SkiS0y* z<@x`=dS~}*0Hl>n_V-(mUGJ(_uj;F>zPqZ5Jw3S?{@(k+vH4H^n|SPxc@g|e;o>-c zR$n|8Gh#-(99xJ_#upNkiG}23GR}L6a%v$xnO?|DX5>0q?wIT_QbxL*UFe+b#J!Y} z!Fg^nC+8hF@0#qA^K7|$p=Yv3&O32GKbe>FT)B6lZ?bQpf3kmJU~*t#aB^^AXmV&_ z!{mmA;mP5JjguP}Hcf6?*gUy;Vaw!}g%z9lZ428cw=WbX3n-^x^ceYP z?+s@Yki zbg5*OsujC$xl)>`8s=2FR5MkvY>g!B{N+;Z!qkFUE6$XQmStxzmCVZ*%`4XU7Xjwj zNZjt8DpeMjYgSE}#RXjFrfSuTW~Ed&6`$g^IlWve8>X^woq4RNF3OY4)N-waZ}i!{ z)?#tSJawU{iZl4IW%m`WnNsOH78gx*@X_jJQ!$GibVV z^-$nu{EXc{b>3VoD$6|c%#69n%Gha>(43e_vM-Ʈ$oZ^O^pgQON)i8tb}#;>Mo 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 a4;as>wkyyZ48zI#Khn7ZZdT{JI{ycnP;y}a literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..79f378d90a542e6ba8eef95c5c95c1423533fb2f GIT binary patch literal 10829 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 UaU&UuUrL6O7c=i@?`S{xAEpoXmH+?% literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_ihatexml.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_ihatexml.py new file mode 100644 index 0000000..3ff803c --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_ihatexml.py @@ -0,0 +1,289 @@ +from __future__ import absolute_import, division, unicode_literals + +import re +import warnings + +from .constants import DataLossWarning + +baseChar = """ +[#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | +[#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E] | [#x0141-#x0148] | +[#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0] | [#x01F4-#x01F5] | +[#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1] | #x0386 | +[#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE] | +[#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3] | +[#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481] | +[#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB] | +[#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | +[#x0561-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | +[#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | +[#x06D0-#x06D3] | #x06D5 | [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | +[#x0958-#x0961] | [#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | +[#x09AA-#x09B0] | #x09B2 | [#x09B6-#x09B9] | [#x09DC-#x09DD] | +[#x09DF-#x09E1] | [#x09F0-#x09F1] | [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | +[#x0A13-#x0A28] | [#x0A2A-#x0A30] | [#x0A32-#x0A33] | [#x0A35-#x0A36] | +[#x0A38-#x0A39] | [#x0A59-#x0A5C] | #x0A5E | [#x0A72-#x0A74] | +[#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] | [#x0A93-#x0AA8] | +[#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | #x0ABD | #x0AE0 | +[#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | [#x0B2A-#x0B30] | +[#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | [#x0B5C-#x0B5D] | +[#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | [#x0B92-#x0B95] | +[#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4] | +[#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | [#x0C05-#x0C0C] | +[#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | +[#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8] | +[#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | [#x0CE0-#x0CE1] | +[#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | [#x0D2A-#x0D39] | +[#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | [#x0E32-#x0E33] | +[#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | [#x0E87-#x0E88] | #x0E8A | +#x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | [#x0EA1-#x0EA3] | #x0EA5 | +#x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0 | [#x0EB2-#x0EB3] | +#x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | [#x0F49-#x0F69] | +[#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103] | +[#x1105-#x1107] | #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C | +#x113E | #x1140 | #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 | +[#x115F-#x1161] | #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] | +[#x1172-#x1173] | #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] | +[#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 | +[#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] | +[#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | +#x1F5D | [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | +[#x1FC2-#x1FC4] | [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | +[#x1FE0-#x1FEC] | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | +[#x212A-#x212B] | #x212E | [#x2180-#x2182] | [#x3041-#x3094] | +[#x30A1-#x30FA] | [#x3105-#x312C] | [#xAC00-#xD7A3]""" + +ideographic = """[#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]""" + +combiningCharacter = """ +[#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486] | [#x0591-#x05A1] | +[#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF | [#x05C1-#x05C2] | #x05C4 | +[#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] | [#x06DD-#x06DF] | +[#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] | [#x0901-#x0903] | +#x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] | [#x0962-#x0963] | +[#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x09C4] | +[#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x0A02 | +#x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | +[#x0A4B-#x0A4D] | [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | +[#x0ABE-#x0AC5] | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | +#x0B3C | [#x0B3E-#x0B43] | [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | +[#x0B56-#x0B57] | [#x0B82-#x0B83] | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | +[#x0BCA-#x0BCD] | #x0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44] | +[#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56] | [#x0C82-#x0C83] | +[#x0CBE-#x0CC4] | [#x0CC6-#x0CC8] | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6] | +[#x0D02-#x0D03] | [#x0D3E-#x0D43] | [#x0D46-#x0D48] | [#x0D4A-#x0D4D] | +#x0D57 | #x0E31 | [#x0E34-#x0E3A] | [#x0E47-#x0E4E] | #x0EB1 | +[#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] | +#x0F35 | #x0F37 | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84] | +[#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97 | [#x0F99-#x0FAD] | +[#x0FB1-#x0FB7] | #x0FB9 | [#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F] | +#x3099 | #x309A""" + +digit = """ +[#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] | [#x0966-#x096F] | +[#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] | [#x0B66-#x0B6F] | +[#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] | [#x0D66-#x0D6F] | +[#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]""" + +extender = """ +#x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | +#[#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]""" + +letter = " | ".join([baseChar, ideographic]) + +# Without the +name = " | ".join([letter, digit, ".", "-", "_", combiningCharacter, + extender]) +nameFirst = " | ".join([letter, "_"]) + +reChar = re.compile(r"#x([\d|A-F]{4,4})") +reCharRange = re.compile(r"\[#x([\d|A-F]{4,4})-#x([\d|A-F]{4,4})\]") + + +def charStringToList(chars): + charRanges = [item.strip() for item in chars.split(" | ")] + rv = [] + for item in charRanges: + foundMatch = False + for regexp in (reChar, reCharRange): + match = regexp.match(item) + if match is not None: + rv.append([hexToInt(item) for item in match.groups()]) + if len(rv[-1]) == 1: + rv[-1] = rv[-1] * 2 + foundMatch = True + break + if not foundMatch: + assert len(item) == 1 + + rv.append([ord(item)] * 2) + rv = normaliseCharList(rv) + return rv + + +def normaliseCharList(charList): + charList = sorted(charList) + for item in charList: + assert item[1] >= item[0] + rv = [] + i = 0 + while i < len(charList): + j = 1 + rv.append(charList[i]) + while i + j < len(charList) and charList[i + j][0] <= rv[-1][1] + 1: + rv[-1][1] = charList[i + j][1] + j += 1 + i += j + return rv + + +# We don't really support characters above the BMP :( +max_unicode = int("FFFF", 16) + + +def missingRanges(charList): + rv = [] + if charList[0] != 0: + rv.append([0, charList[0][0] - 1]) + for i, item in enumerate(charList[:-1]): + rv.append([item[1] + 1, charList[i + 1][0] - 1]) + if charList[-1][1] != max_unicode: + rv.append([charList[-1][1] + 1, max_unicode]) + return rv + + +def listToRegexpStr(charList): + rv = [] + for item in charList: + if item[0] == item[1]: + rv.append(escapeRegexp(chr(item[0]))) + else: + rv.append(escapeRegexp(chr(item[0])) + "-" + + escapeRegexp(chr(item[1]))) + return "[%s]" % "".join(rv) + + +def hexToInt(hex_str): + return int(hex_str, 16) + + +def escapeRegexp(string): + specialCharacters = (".", "^", "$", "*", "+", "?", "{", "}", + "[", "]", "|", "(", ")", "-") + for char in specialCharacters: + string = string.replace(char, "\\" + char) + + return string + +# output from the above +nonXmlNameBMPRegexp = re.compile('[\x00-,/:-@\\[-\\^`\\{-\xb6\xb8-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u02cf\u02d2-\u02ff\u0346-\u035f\u0362-\u0385\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482\u0487-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u0590\u05a2\u05ba\u05be\u05c0\u05c3\u05c5-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u063f\u0653-\u065f\u066a-\u066f\u06b8-\u06b9\u06bf\u06cf\u06d4\u06e9\u06ee-\u06ef\u06fa-\u0900\u0904\u093a-\u093b\u094e-\u0950\u0955-\u0957\u0964-\u0965\u0970-\u0980\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09bb\u09bd\u09c5-\u09c6\u09c9-\u09ca\u09ce-\u09d6\u09d8-\u09db\u09de\u09e4-\u09e5\u09f2-\u0a01\u0a03-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a3b\u0a3d\u0a43-\u0a46\u0a49-\u0a4a\u0a4e-\u0a58\u0a5d\u0a5f-\u0a65\u0a75-\u0a80\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abb\u0ac6\u0aca\u0ace-\u0adf\u0ae1-\u0ae5\u0af0-\u0b00\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3b\u0b44-\u0b46\u0b49-\u0b4a\u0b4e-\u0b55\u0b58-\u0b5b\u0b5e\u0b62-\u0b65\u0b70-\u0b81\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0bbd\u0bc3-\u0bc5\u0bc9\u0bce-\u0bd6\u0bd8-\u0be6\u0bf0-\u0c00\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c3d\u0c45\u0c49\u0c4e-\u0c54\u0c57-\u0c5f\u0c62-\u0c65\u0c70-\u0c81\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cbd\u0cc5\u0cc9\u0cce-\u0cd4\u0cd7-\u0cdd\u0cdf\u0ce2-\u0ce5\u0cf0-\u0d01\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d3d\u0d44-\u0d45\u0d49\u0d4e-\u0d56\u0d58-\u0d5f\u0d62-\u0d65\u0d70-\u0e00\u0e2f\u0e3b-\u0e3f\u0e4f\u0e5a-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eba\u0ebe-\u0ebf\u0ec5\u0ec7\u0ece-\u0ecf\u0eda-\u0f17\u0f1a-\u0f1f\u0f2a-\u0f34\u0f36\u0f38\u0f3a-\u0f3d\u0f48\u0f6a-\u0f70\u0f85\u0f8c-\u0f8f\u0f96\u0f98\u0fae-\u0fb0\u0fb8\u0fba-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u20cf\u20dd-\u20e0\u20e2-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3004\u3006\u3008-\u3020\u3030\u3036-\u3040\u3095-\u3098\u309b-\u309c\u309f-\u30a0\u30fb\u30ff-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa + +nonXmlNameFirstBMPRegexp = re.compile('[\x00-@\\[-\\^`\\{-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u0385\u0387\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u0640\u064b-\u0670\u06b8-\u06b9\u06bf\u06cf\u06d4\u06d6-\u06e4\u06e7-\u0904\u093a-\u093c\u093e-\u0957\u0962-\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09db\u09de\u09e2-\u09ef\u09f2-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a58\u0a5d\u0a5f-\u0a71\u0a75-\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abc\u0abe-\u0adf\u0ae1-\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3c\u0b3e-\u0b5b\u0b5e\u0b62-\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c5f\u0c62-\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cdd\u0cdf\u0ce2-\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d5f\u0d62-\u0e00\u0e2f\u0e31\u0e34-\u0e3f\u0e46-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eb1\u0eb4-\u0ebc\u0ebe-\u0ebf\u0ec5-\u0f3f\u0f48\u0f6a-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3006\u3008-\u3020\u302a-\u3040\u3095-\u30a0\u30fb-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa + +# Simpler things +nonPubidCharRegexp = re.compile("[^\x20\x0D\x0Aa-zA-Z0-9\\-'()+,./:=?;!*#@$_%]") + + +class InfosetFilter(object): + replacementRegexp = re.compile(r"U[\dA-F]{5,5}") + + def __init__(self, + dropXmlnsLocalName=False, + dropXmlnsAttrNs=False, + preventDoubleDashComments=False, + preventDashAtCommentEnd=False, + replaceFormFeedCharacters=True, + preventSingleQuotePubid=False): + + self.dropXmlnsLocalName = dropXmlnsLocalName + self.dropXmlnsAttrNs = dropXmlnsAttrNs + + self.preventDoubleDashComments = preventDoubleDashComments + self.preventDashAtCommentEnd = preventDashAtCommentEnd + + self.replaceFormFeedCharacters = replaceFormFeedCharacters + + self.preventSingleQuotePubid = preventSingleQuotePubid + + self.replaceCache = {} + + def coerceAttribute(self, name, namespace=None): + if self.dropXmlnsLocalName and name.startswith("xmlns:"): + warnings.warn("Attributes cannot begin with xmlns", DataLossWarning) + return None + elif (self.dropXmlnsAttrNs and + namespace == "http://www.w3.org/2000/xmlns/"): + warnings.warn("Attributes cannot be in the xml namespace", DataLossWarning) + return None + else: + return self.toXmlName(name) + + def coerceElement(self, name): + return self.toXmlName(name) + + def coerceComment(self, data): + if self.preventDoubleDashComments: + while "--" in data: + warnings.warn("Comments cannot contain adjacent dashes", DataLossWarning) + data = data.replace("--", "- -") + if data.endswith("-"): + warnings.warn("Comments cannot end in a dash", DataLossWarning) + data += " " + return data + + def coerceCharacters(self, data): + if self.replaceFormFeedCharacters: + for _ in range(data.count("\x0C")): + warnings.warn("Text cannot contain U+000C", DataLossWarning) + data = data.replace("\x0C", " ") + # Other non-xml characters + return data + + def coercePubid(self, data): + dataOutput = data + for char in nonPubidCharRegexp.findall(data): + warnings.warn("Coercing non-XML pubid", DataLossWarning) + replacement = self.getReplacementCharacter(char) + dataOutput = dataOutput.replace(char, replacement) + if self.preventSingleQuotePubid and dataOutput.find("'") >= 0: + warnings.warn("Pubid cannot contain single quote", DataLossWarning) + dataOutput = dataOutput.replace("'", self.getReplacementCharacter("'")) + return dataOutput + + def toXmlName(self, name): + nameFirst = name[0] + nameRest = name[1:] + m = nonXmlNameFirstBMPRegexp.match(nameFirst) + if m: + warnings.warn("Coercing non-XML name: %s" % name, DataLossWarning) + nameFirstOutput = self.getReplacementCharacter(nameFirst) + else: + nameFirstOutput = nameFirst + + nameRestOutput = nameRest + replaceChars = set(nonXmlNameBMPRegexp.findall(nameRest)) + for char in replaceChars: + warnings.warn("Coercing non-XML name: %s" % name, DataLossWarning) + replacement = self.getReplacementCharacter(char) + nameRestOutput = nameRestOutput.replace(char, replacement) + return nameFirstOutput + nameRestOutput + + def getReplacementCharacter(self, char): + if char in self.replaceCache: + replacement = self.replaceCache[char] + else: + replacement = self.escapeChar(char) + return replacement + + def fromXmlName(self, name): + for item in set(self.replacementRegexp.findall(name)): + name = name.replace(item, self.unescapeChar(item)) + return name + + def escapeChar(self, char): + replacement = "U%05X" % ord(char) + self.replaceCache[char] = replacement + return replacement + + def unescapeChar(self, charcode): + return chr(int(charcode[1:], 16)) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_inputstream.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_inputstream.py new file mode 100644 index 0000000..e0bb376 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_inputstream.py @@ -0,0 +1,918 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import text_type +from pip._vendor.six.moves import http_client, urllib + +import codecs +import re +from io import BytesIO, StringIO + +from pip._vendor import webencodings + +from .constants import EOF, spaceCharacters, asciiLetters, asciiUppercase +from .constants import _ReparseException +from . import _utils + +# Non-unicode versions of constants for use in the pre-parser +spaceCharactersBytes = frozenset([item.encode("ascii") for item in spaceCharacters]) +asciiLettersBytes = frozenset([item.encode("ascii") for item in asciiLetters]) +asciiUppercaseBytes = frozenset([item.encode("ascii") for item in asciiUppercase]) +spacesAngleBrackets = spaceCharactersBytes | frozenset([b">", b"<"]) + + +invalid_unicode_no_surrogate = "[\u0001-\u0008\u000B\u000E-\u001F\u007F-\u009F\uFDD0-\uFDEF\uFFFE\uFFFF\U0001FFFE\U0001FFFF\U0002FFFE\U0002FFFF\U0003FFFE\U0003FFFF\U0004FFFE\U0004FFFF\U0005FFFE\U0005FFFF\U0006FFFE\U0006FFFF\U0007FFFE\U0007FFFF\U0008FFFE\U0008FFFF\U0009FFFE\U0009FFFF\U000AFFFE\U000AFFFF\U000BFFFE\U000BFFFF\U000CFFFE\U000CFFFF\U000DFFFE\U000DFFFF\U000EFFFE\U000EFFFF\U000FFFFE\U000FFFFF\U0010FFFE\U0010FFFF]" # noqa + +if _utils.supports_lone_surrogates: + # Use one extra step of indirection and create surrogates with + # eval. Not using this indirection would introduce an illegal + # unicode literal on platforms not supporting such lone + # surrogates. + assert invalid_unicode_no_surrogate[-1] == "]" and invalid_unicode_no_surrogate.count("]") == 1 + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate[:-1] + + eval('"\\uD800-\\uDFFF"') + # pylint:disable=eval-used + "]") +else: + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate) + +non_bmp_invalid_codepoints = {0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, + 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, + 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, + 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, + 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, + 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, + 0x10FFFE, 0x10FFFF} + +ascii_punctuation_re = re.compile("[\u0009-\u000D\u0020-\u002F\u003A-\u0040\u005C\u005B-\u0060\u007B-\u007E]") + +# Cache for charsUntil() +charsUntilRegEx = {} + + +class BufferedStream(object): + """Buffering for streams that do not have buffering of their own + + The buffer is implemented as a list of chunks on the assumption that + joining many strings will be slow since it is O(n**2) + """ + + def __init__(self, stream): + self.stream = stream + self.buffer = [] + self.position = [-1, 0] # chunk number, offset + + def tell(self): + pos = 0 + for chunk in self.buffer[:self.position[0]]: + pos += len(chunk) + pos += self.position[1] + return pos + + def seek(self, pos): + assert pos <= self._bufferedBytes() + offset = pos + i = 0 + while len(self.buffer[i]) < offset: + offset -= len(self.buffer[i]) + i += 1 + self.position = [i, offset] + + def read(self, bytes): + if not self.buffer: + return self._readStream(bytes) + elif (self.position[0] == len(self.buffer) and + self.position[1] == len(self.buffer[-1])): + return self._readStream(bytes) + else: + return self._readFromBuffer(bytes) + + def _bufferedBytes(self): + return sum([len(item) for item in self.buffer]) + + def _readStream(self, bytes): + data = self.stream.read(bytes) + self.buffer.append(data) + self.position[0] += 1 + self.position[1] = len(data) + return data + + def _readFromBuffer(self, bytes): + remainingBytes = bytes + rv = [] + bufferIndex = self.position[0] + bufferOffset = self.position[1] + while bufferIndex < len(self.buffer) and remainingBytes != 0: + assert remainingBytes > 0 + bufferedData = self.buffer[bufferIndex] + + if remainingBytes <= len(bufferedData) - bufferOffset: + bytesToRead = remainingBytes + self.position = [bufferIndex, bufferOffset + bytesToRead] + else: + bytesToRead = len(bufferedData) - bufferOffset + self.position = [bufferIndex, len(bufferedData)] + bufferIndex += 1 + rv.append(bufferedData[bufferOffset:bufferOffset + bytesToRead]) + remainingBytes -= bytesToRead + + bufferOffset = 0 + + if remainingBytes: + rv.append(self._readStream(remainingBytes)) + + return b"".join(rv) + + +def HTMLInputStream(source, **kwargs): + # Work around Python bug #20007: read(0) closes the connection. + # http://bugs.python.org/issue20007 + if (isinstance(source, http_client.HTTPResponse) or + # Also check for addinfourl wrapping HTTPResponse + (isinstance(source, urllib.response.addbase) and + isinstance(source.fp, http_client.HTTPResponse))): + isUnicode = False + elif hasattr(source, "read"): + isUnicode = isinstance(source.read(0), text_type) + else: + isUnicode = isinstance(source, text_type) + + if isUnicode: + encodings = [x for x in kwargs if x.endswith("_encoding")] + if encodings: + raise TypeError("Cannot set an encoding with a unicode input, set %r" % encodings) + + return HTMLUnicodeInputStream(source, **kwargs) + else: + return HTMLBinaryInputStream(source, **kwargs) + + +class HTMLUnicodeInputStream(object): + """Provides a unicode stream of characters to the HTMLTokenizer. + + This class takes care of character encoding and removing or replacing + incorrect byte-sequences and also provides column and line tracking. + + """ + + _defaultChunkSize = 10240 + + def __init__(self, source): + """Initialises the HTMLInputStream. + + HTMLInputStream(source, [encoding]) -> Normalized stream from source + for use by html5lib. + + source can be either a file-object, local filename or a string. + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + """ + + if not _utils.supports_lone_surrogates: + # Such platforms will have already checked for such + # surrogate errors, so no need to do this checking. + self.reportCharacterErrors = None + elif len("\U0010FFFF") == 1: + self.reportCharacterErrors = self.characterErrorsUCS4 + else: + self.reportCharacterErrors = self.characterErrorsUCS2 + + # List of where new lines occur + self.newLines = [0] + + self.charEncoding = (lookupEncoding("utf-8"), "certain") + self.dataStream = self.openStream(source) + + self.reset() + + def reset(self): + self.chunk = "" + self.chunkSize = 0 + self.chunkOffset = 0 + self.errors = [] + + # number of (complete) lines in previous chunks + self.prevNumLines = 0 + # number of columns in the last line of the previous chunk + self.prevNumCols = 0 + + # Deal with CR LF and surrogates split over chunk boundaries + self._bufferedCharacter = None + + def openStream(self, source): + """Produces a file object from source. + + source can be either a file object, local filename or a string. + + """ + # Already a file object + if hasattr(source, 'read'): + stream = source + else: + stream = StringIO(source) + + return stream + + def _position(self, offset): + chunk = self.chunk + nLines = chunk.count('\n', 0, offset) + positionLine = self.prevNumLines + nLines + lastLinePos = chunk.rfind('\n', 0, offset) + if lastLinePos == -1: + positionColumn = self.prevNumCols + offset + else: + positionColumn = offset - (lastLinePos + 1) + return (positionLine, positionColumn) + + def position(self): + """Returns (line, col) of the current position in the stream.""" + line, col = self._position(self.chunkOffset) + return (line + 1, col) + + def char(self): + """ Read one character from the stream or queue if available. Return + EOF when EOF is reached. + """ + # Read a new chunk from the input stream if necessary + if self.chunkOffset >= self.chunkSize: + if not self.readChunk(): + return EOF + + chunkOffset = self.chunkOffset + char = self.chunk[chunkOffset] + self.chunkOffset = chunkOffset + 1 + + return char + + def readChunk(self, chunkSize=None): + if chunkSize is None: + chunkSize = self._defaultChunkSize + + self.prevNumLines, self.prevNumCols = self._position(self.chunkSize) + + self.chunk = "" + self.chunkSize = 0 + self.chunkOffset = 0 + + data = self.dataStream.read(chunkSize) + + # Deal with CR LF and surrogates broken across chunks + if self._bufferedCharacter: + data = self._bufferedCharacter + data + self._bufferedCharacter = None + elif not data: + # We have no more data, bye-bye stream + return False + + if len(data) > 1: + lastv = ord(data[-1]) + if lastv == 0x0D or 0xD800 <= lastv <= 0xDBFF: + self._bufferedCharacter = data[-1] + data = data[:-1] + + if self.reportCharacterErrors: + self.reportCharacterErrors(data) + + # Replace invalid characters + data = data.replace("\r\n", "\n") + data = data.replace("\r", "\n") + + self.chunk = data + self.chunkSize = len(data) + + return True + + def characterErrorsUCS4(self, data): + for _ in range(len(invalid_unicode_re.findall(data))): + self.errors.append("invalid-codepoint") + + def characterErrorsUCS2(self, data): + # Someone picked the wrong compile option + # You lose + skip = False + for match in invalid_unicode_re.finditer(data): + if skip: + continue + codepoint = ord(match.group()) + pos = match.start() + # Pretty sure there should be endianness issues here + if _utils.isSurrogatePair(data[pos:pos + 2]): + # We have a surrogate pair! + char_val = _utils.surrogatePairToCodepoint(data[pos:pos + 2]) + if char_val in non_bmp_invalid_codepoints: + self.errors.append("invalid-codepoint") + skip = True + elif (codepoint >= 0xD800 and codepoint <= 0xDFFF and + pos == len(data) - 1): + self.errors.append("invalid-codepoint") + else: + skip = False + self.errors.append("invalid-codepoint") + + def charsUntil(self, characters, opposite=False): + """ Returns a string of characters from the stream up to but not + including any character in 'characters' or EOF. 'characters' must be + a container that supports the 'in' method and iteration over its + characters. + """ + + # Use a cache of regexps to find the required characters + try: + chars = charsUntilRegEx[(characters, opposite)] + except KeyError: + if __debug__: + for c in characters: + assert(ord(c) < 128) + regex = "".join(["\\x%02x" % ord(c) for c in characters]) + if not opposite: + regex = "^%s" % regex + chars = charsUntilRegEx[(characters, opposite)] = re.compile("[%s]+" % regex) + + rv = [] + + while True: + # Find the longest matching prefix + m = chars.match(self.chunk, self.chunkOffset) + if m is None: + # If nothing matched, and it wasn't because we ran out of chunk, + # then stop + if self.chunkOffset != self.chunkSize: + break + else: + end = m.end() + # If not the whole chunk matched, return everything + # up to the part that didn't match + if end != self.chunkSize: + rv.append(self.chunk[self.chunkOffset:end]) + self.chunkOffset = end + break + # If the whole remainder of the chunk matched, + # use it all and read the next chunk + rv.append(self.chunk[self.chunkOffset:]) + if not self.readChunk(): + # Reached EOF + break + + r = "".join(rv) + return r + + def unget(self, char): + # Only one character is allowed to be ungotten at once - it must + # be consumed again before any further call to unget + if char is not EOF: + if self.chunkOffset == 0: + # unget is called quite rarely, so it's a good idea to do + # more work here if it saves a bit of work in the frequently + # called char and charsUntil. + # So, just prepend the ungotten character onto the current + # chunk: + self.chunk = char + self.chunk + self.chunkSize += 1 + else: + self.chunkOffset -= 1 + assert self.chunk[self.chunkOffset] == char + + +class HTMLBinaryInputStream(HTMLUnicodeInputStream): + """Provides a unicode stream of characters to the HTMLTokenizer. + + This class takes care of character encoding and removing or replacing + incorrect byte-sequences and also provides column and line tracking. + + """ + + def __init__(self, source, override_encoding=None, transport_encoding=None, + same_origin_parent_encoding=None, likely_encoding=None, + default_encoding="windows-1252", useChardet=True): + """Initialises the HTMLInputStream. + + HTMLInputStream(source, [encoding]) -> Normalized stream from source + for use by html5lib. + + source can be either a file-object, local filename or a string. + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + """ + # Raw Stream - for unicode objects this will encode to utf-8 and set + # self.charEncoding as appropriate + self.rawStream = self.openStream(source) + + HTMLUnicodeInputStream.__init__(self, self.rawStream) + + # Encoding Information + # Number of bytes to use when looking for a meta element with + # encoding information + self.numBytesMeta = 1024 + # Number of bytes to use when using detecting encoding using chardet + self.numBytesChardet = 100 + # Things from args + self.override_encoding = override_encoding + self.transport_encoding = transport_encoding + self.same_origin_parent_encoding = same_origin_parent_encoding + self.likely_encoding = likely_encoding + self.default_encoding = default_encoding + + # Determine encoding + self.charEncoding = self.determineEncoding(useChardet) + assert self.charEncoding[0] is not None + + # Call superclass + self.reset() + + def reset(self): + self.dataStream = self.charEncoding[0].codec_info.streamreader(self.rawStream, 'replace') + HTMLUnicodeInputStream.reset(self) + + def openStream(self, source): + """Produces a file object from source. + + source can be either a file object, local filename or a string. + + """ + # Already a file object + if hasattr(source, 'read'): + stream = source + else: + stream = BytesIO(source) + + try: + stream.seek(stream.tell()) + except Exception: + stream = BufferedStream(stream) + + return stream + + def determineEncoding(self, chardet=True): + # BOMs take precedence over everything + # This will also read past the BOM if present + charEncoding = self.detectBOM(), "certain" + if charEncoding[0] is not None: + return charEncoding + + # If we've been overridden, we've been overridden + charEncoding = lookupEncoding(self.override_encoding), "certain" + if charEncoding[0] is not None: + return charEncoding + + # Now check the transport layer + charEncoding = lookupEncoding(self.transport_encoding), "certain" + if charEncoding[0] is not None: + return charEncoding + + # Look for meta elements with encoding information + charEncoding = self.detectEncodingMeta(), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Parent document encoding + charEncoding = lookupEncoding(self.same_origin_parent_encoding), "tentative" + if charEncoding[0] is not None and not charEncoding[0].name.startswith("utf-16"): + return charEncoding + + # "likely" encoding + charEncoding = lookupEncoding(self.likely_encoding), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Guess with chardet, if available + if chardet: + try: + from pip._vendor.chardet.universaldetector import UniversalDetector + except ImportError: + pass + else: + buffers = [] + detector = UniversalDetector() + while not detector.done: + buffer = self.rawStream.read(self.numBytesChardet) + assert isinstance(buffer, bytes) + if not buffer: + break + buffers.append(buffer) + detector.feed(buffer) + detector.close() + encoding = lookupEncoding(detector.result['encoding']) + self.rawStream.seek(0) + if encoding is not None: + return encoding, "tentative" + + # Try the default encoding + charEncoding = lookupEncoding(self.default_encoding), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Fallback to html5lib's default if even that hasn't worked + return lookupEncoding("windows-1252"), "tentative" + + def changeEncoding(self, newEncoding): + assert self.charEncoding[1] != "certain" + newEncoding = lookupEncoding(newEncoding) + if newEncoding is None: + return + if newEncoding.name in ("utf-16be", "utf-16le"): + newEncoding = lookupEncoding("utf-8") + assert newEncoding is not None + elif newEncoding == self.charEncoding[0]: + self.charEncoding = (self.charEncoding[0], "certain") + else: + self.rawStream.seek(0) + self.charEncoding = (newEncoding, "certain") + self.reset() + raise _ReparseException("Encoding changed from %s to %s" % (self.charEncoding[0], newEncoding)) + + def detectBOM(self): + """Attempts to detect at BOM at the start of the stream. If + an encoding can be determined from the BOM return the name of the + encoding otherwise return None""" + bomDict = { + codecs.BOM_UTF8: 'utf-8', + codecs.BOM_UTF16_LE: 'utf-16le', codecs.BOM_UTF16_BE: 'utf-16be', + codecs.BOM_UTF32_LE: 'utf-32le', codecs.BOM_UTF32_BE: 'utf-32be' + } + + # Go to beginning of file and read in 4 bytes + string = self.rawStream.read(4) + assert isinstance(string, bytes) + + # Try detecting the BOM using bytes from the string + encoding = bomDict.get(string[:3]) # UTF-8 + seek = 3 + if not encoding: + # Need to detect UTF-32 before UTF-16 + encoding = bomDict.get(string) # UTF-32 + seek = 4 + if not encoding: + encoding = bomDict.get(string[:2]) # UTF-16 + seek = 2 + + # Set the read position past the BOM if one was found, otherwise + # set it to the start of the stream + if encoding: + self.rawStream.seek(seek) + return lookupEncoding(encoding) + else: + self.rawStream.seek(0) + return None + + def detectEncodingMeta(self): + """Report the encoding declared by the meta element + """ + buffer = self.rawStream.read(self.numBytesMeta) + assert isinstance(buffer, bytes) + parser = EncodingParser(buffer) + self.rawStream.seek(0) + encoding = parser.getEncoding() + + if encoding is not None and encoding.name in ("utf-16be", "utf-16le"): + encoding = lookupEncoding("utf-8") + + return encoding + + +class EncodingBytes(bytes): + """String-like object with an associated position and various extra methods + If the position is ever greater than the string length then an exception is + raised""" + def __new__(self, value): + assert isinstance(value, bytes) + return bytes.__new__(self, value.lower()) + + def __init__(self, value): + # pylint:disable=unused-argument + self._position = -1 + + def __iter__(self): + return self + + def __next__(self): + p = self._position = self._position + 1 + if p >= len(self): + raise StopIteration + elif p < 0: + raise TypeError + return self[p:p + 1] + + def next(self): + # Py2 compat + return self.__next__() + + def previous(self): + p = self._position + if p >= len(self): + raise StopIteration + elif p < 0: + raise TypeError + self._position = p = p - 1 + return self[p:p + 1] + + def setPosition(self, position): + if self._position >= len(self): + raise StopIteration + self._position = position + + def getPosition(self): + if self._position >= len(self): + raise StopIteration + if self._position >= 0: + return self._position + else: + return None + + position = property(getPosition, setPosition) + + def getCurrentByte(self): + return self[self.position:self.position + 1] + + currentByte = property(getCurrentByte) + + def skip(self, chars=spaceCharactersBytes): + """Skip past a list of characters""" + p = self.position # use property for the error-checking + while p < len(self): + c = self[p:p + 1] + if c not in chars: + self._position = p + return c + p += 1 + self._position = p + return None + + def skipUntil(self, chars): + p = self.position + while p < len(self): + c = self[p:p + 1] + if c in chars: + self._position = p + return c + p += 1 + self._position = p + return None + + def matchBytes(self, bytes): + """Look for a sequence of bytes at the start of a string. If the bytes + are found return True and advance the position to the byte after the + match. Otherwise return False and leave the position alone""" + rv = self.startswith(bytes, self.position) + if rv: + self.position += len(bytes) + return rv + + def jumpTo(self, bytes): + """Look for the next sequence of bytes matching a given sequence. If + a match is found advance the position to the last byte of the match""" + try: + self._position = self.index(bytes, self.position) + len(bytes) - 1 + except ValueError: + raise StopIteration + return True + + +class EncodingParser(object): + """Mini parser for detecting character encoding from meta elements""" + + def __init__(self, data): + """string - the data to work on for encoding detection""" + self.data = EncodingBytes(data) + self.encoding = None + + def getEncoding(self): + if b"") + + def handleMeta(self): + if self.data.currentByte not in spaceCharactersBytes: + # if we have ") + + def getAttribute(self): + """Return a name,value pair for the next attribute in the stream, + if one is found, or None""" + data = self.data + # Step 1 (skip chars) + c = data.skip(spaceCharactersBytes | frozenset([b"/"])) + assert c is None or len(c) == 1 + # Step 2 + if c in (b">", None): + return None + # Step 3 + attrName = [] + attrValue = [] + # Step 4 attribute name + while True: + if c == b"=" and attrName: + break + elif c in spaceCharactersBytes: + # Step 6! + c = data.skip() + break + elif c in (b"/", b">"): + return b"".join(attrName), b"" + elif c in asciiUppercaseBytes: + attrName.append(c.lower()) + elif c is None: + return None + else: + attrName.append(c) + # Step 5 + c = next(data) + # Step 7 + if c != b"=": + data.previous() + return b"".join(attrName), b"" + # Step 8 + next(data) + # Step 9 + c = data.skip() + # Step 10 + if c in (b"'", b'"'): + # 10.1 + quoteChar = c + while True: + # 10.2 + c = next(data) + # 10.3 + if c == quoteChar: + next(data) + return b"".join(attrName), b"".join(attrValue) + # 10.4 + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + # 10.5 + else: + attrValue.append(c) + elif c == b">": + return b"".join(attrName), b"" + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + elif c is None: + return None + else: + attrValue.append(c) + # Step 11 + while True: + c = next(data) + if c in spacesAngleBrackets: + return b"".join(attrName), b"".join(attrValue) + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + elif c is None: + return None + else: + attrValue.append(c) + + +class ContentAttrParser(object): + def __init__(self, data): + assert isinstance(data, bytes) + self.data = data + + def parse(self): + try: + # Check if the attr name is charset + # otherwise return + self.data.jumpTo(b"charset") + self.data.position += 1 + self.data.skip() + if not self.data.currentByte == b"=": + # If there is no = sign keep looking for attrs + return None + self.data.position += 1 + self.data.skip() + # Look for an encoding between matching quote marks + if self.data.currentByte in (b'"', b"'"): + quoteMark = self.data.currentByte + self.data.position += 1 + oldPosition = self.data.position + if self.data.jumpTo(quoteMark): + return self.data[oldPosition:self.data.position] + else: + return None + else: + # Unquoted value + oldPosition = self.data.position + try: + self.data.skipUntil(spaceCharactersBytes) + return self.data[oldPosition:self.data.position] + except StopIteration: + # Return the whole remaining value + return self.data[oldPosition:] + except StopIteration: + return None + + +def lookupEncoding(encoding): + """Return the python codec name corresponding to an encoding or None if the + string doesn't correspond to a valid encoding.""" + if isinstance(encoding, bytes): + try: + encoding = encoding.decode("ascii") + except UnicodeDecodeError: + return None + + if encoding is not None: + try: + return webencodings.lookup(encoding) + except AttributeError: + return None + else: + return None diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_tokenizer.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_tokenizer.py new file mode 100644 index 0000000..5f00253 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_tokenizer.py @@ -0,0 +1,1735 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import unichr as chr + +from collections import deque, OrderedDict +from sys import version_info + +from .constants import spaceCharacters +from .constants import entities +from .constants import asciiLetters, asciiUpper2Lower +from .constants import digits, hexDigits, EOF +from .constants import tokenTypes, tagTokenTypes +from .constants import replacementCharacters + +from ._inputstream import HTMLInputStream + +from ._trie import Trie + +entitiesTrie = Trie(entities) + +if version_info >= (3, 7): + attributeMap = dict +else: + attributeMap = OrderedDict + + +class HTMLTokenizer(object): + """ This class takes care of tokenizing HTML. + + * self.currentToken + Holds the token that is currently being processed. + + * self.state + Holds a reference to the method to be invoked... XXX + + * self.stream + Points to HTMLInputStream object. + """ + + def __init__(self, stream, parser=None, **kwargs): + + self.stream = HTMLInputStream(stream, **kwargs) + self.parser = parser + + # Setup the initial tokenizer state + self.escapeFlag = False + self.lastFourChars = [] + self.state = self.dataState + self.escape = False + + # The current token being created + self.currentToken = None + super(HTMLTokenizer, self).__init__() + + def __iter__(self): + """ This is where the magic happens. + + We do our usually processing through the states and when we have a token + to return we yield the token which pauses processing until the next token + is requested. + """ + self.tokenQueue = deque([]) + # Start processing. When EOF is reached self.state will return False + # instead of True and the loop will terminate. + while self.state(): + while self.stream.errors: + yield {"type": tokenTypes["ParseError"], "data": self.stream.errors.pop(0)} + while self.tokenQueue: + yield self.tokenQueue.popleft() + + def consumeNumberEntity(self, isHex): + """This function returns either U+FFFD or the character based on the + decimal or hexadecimal representation. It also discards ";" if present. + If not present self.tokenQueue.append({"type": tokenTypes["ParseError"]}) is invoked. + """ + + allowed = digits + radix = 10 + if isHex: + allowed = hexDigits + radix = 16 + + charStack = [] + + # Consume all the characters that are in range while making sure we + # don't hit an EOF. + c = self.stream.char() + while c in allowed and c is not EOF: + charStack.append(c) + c = self.stream.char() + + # Convert the set of characters consumed to an int. + charAsInt = int("".join(charStack), radix) + + # Certain characters get replaced with others + if charAsInt in replacementCharacters: + char = replacementCharacters[charAsInt] + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + elif ((0xD800 <= charAsInt <= 0xDFFF) or + (charAsInt > 0x10FFFF)): + char = "\uFFFD" + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + else: + # Should speed up this check somehow (e.g. move the set to a constant) + if ((0x0001 <= charAsInt <= 0x0008) or + (0x000E <= charAsInt <= 0x001F) or + (0x007F <= charAsInt <= 0x009F) or + (0xFDD0 <= charAsInt <= 0xFDEF) or + charAsInt in frozenset([0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, + 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, + 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, + 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, + 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, + 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, + 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, + 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, + 0xFFFFF, 0x10FFFE, 0x10FFFF])): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + try: + # Try/except needed as UCS-2 Python builds' unichar only works + # within the BMP. + char = chr(charAsInt) + except ValueError: + v = charAsInt - 0x10000 + char = chr(0xD800 | (v >> 10)) + chr(0xDC00 | (v & 0x3FF)) + + # Discard the ; if present. Otherwise, put it back on the queue and + # invoke parseError on parser. + if c != ";": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "numeric-entity-without-semicolon"}) + self.stream.unget(c) + + return char + + def consumeEntity(self, allowedChar=None, fromAttribute=False): + # Initialise to the default output for when no entity is matched + output = "&" + + charStack = [self.stream.char()] + if (charStack[0] in spaceCharacters or charStack[0] in (EOF, "<", "&") or + (allowedChar is not None and allowedChar == charStack[0])): + self.stream.unget(charStack[0]) + + elif charStack[0] == "#": + # Read the next character to see if it's hex or decimal + hex = False + charStack.append(self.stream.char()) + if charStack[-1] in ("x", "X"): + hex = True + charStack.append(self.stream.char()) + + # charStack[-1] should be the first digit + if (hex and charStack[-1] in hexDigits) \ + or (not hex and charStack[-1] in digits): + # At least one digit found, so consume the whole number + self.stream.unget(charStack[-1]) + output = self.consumeNumberEntity(hex) + else: + # No digits found + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "expected-numeric-entity"}) + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + + else: + # At this point in the process might have named entity. Entities + # are stored in the global variable "entities". + # + # Consume characters and compare to these to a substring of the + # entity names in the list until the substring no longer matches. + while (charStack[-1] is not EOF): + if not entitiesTrie.has_keys_with_prefix("".join(charStack)): + break + charStack.append(self.stream.char()) + + # At this point we have a string that starts with some characters + # that may match an entity + # Try to find the longest entity the string will match to take care + # of ¬i for instance. + try: + entityName = entitiesTrie.longest_prefix("".join(charStack[:-1])) + entityLength = len(entityName) + except KeyError: + entityName = None + + if entityName is not None: + if entityName[-1] != ";": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "named-entity-without-semicolon"}) + if (entityName[-1] != ";" and fromAttribute and + (charStack[entityLength] in asciiLetters or + charStack[entityLength] in digits or + charStack[entityLength] == "=")): + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + else: + output = entities[entityName] + self.stream.unget(charStack.pop()) + output += "".join(charStack[entityLength:]) + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-named-entity"}) + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + + if fromAttribute: + self.currentToken["data"][-1][1] += output + else: + if output in spaceCharacters: + tokenType = "SpaceCharacters" + else: + tokenType = "Characters" + self.tokenQueue.append({"type": tokenTypes[tokenType], "data": output}) + + def processEntityInAttribute(self, allowedChar): + """This method replaces the need for "entityInAttributeValueState". + """ + self.consumeEntity(allowedChar=allowedChar, fromAttribute=True) + + def emitCurrentToken(self): + """This method is a generic handler for emitting the tags. It also sets + the state to "data" because that's what's needed after a token has been + emitted. + """ + token = self.currentToken + # Add token to the queue to be yielded + if (token["type"] in tagTokenTypes): + token["name"] = token["name"].translate(asciiUpper2Lower) + if token["type"] == tokenTypes["StartTag"]: + raw = token["data"] + data = attributeMap(raw) + if len(raw) > len(data): + # we had some duplicated attribute, fix so first wins + data.update(raw[::-1]) + token["data"] = data + + if token["type"] == tokenTypes["EndTag"]: + if token["data"]: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "attributes-in-end-tag"}) + if token["selfClosing"]: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "self-closing-flag-on-end-tag"}) + self.tokenQueue.append(token) + self.state = self.dataState + + # Below are the various tokenizer states worked out. + def dataState(self): + data = self.stream.char() + if data == "&": + self.state = self.entityDataState + elif data == "<": + self.state = self.tagOpenState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\u0000"}) + elif data is EOF: + # Tokenization ends. + return False + elif data in spaceCharacters: + # Directly after emitting a token you switch back to the "data + # state". At that point spaceCharacters are important so they are + # emitted separately. + self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": + data + self.stream.charsUntil(spaceCharacters, True)}) + # No need to update lastFourChars here, since the first space will + # have already been appended to lastFourChars and will have broken + # any sequences + else: + chars = self.stream.charsUntil(("&", "<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def entityDataState(self): + self.consumeEntity() + self.state = self.dataState + return True + + def rcdataState(self): + data = self.stream.char() + if data == "&": + self.state = self.characterReferenceInRcdata + elif data == "<": + self.state = self.rcdataLessThanSignState + elif data == EOF: + # Tokenization ends. + return False + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data in spaceCharacters: + # Directly after emitting a token you switch back to the "data + # state". At that point spaceCharacters are important so they are + # emitted separately. + self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": + data + self.stream.charsUntil(spaceCharacters, True)}) + # No need to update lastFourChars here, since the first space will + # have already been appended to lastFourChars and will have broken + # any sequences + else: + chars = self.stream.charsUntil(("&", "<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def characterReferenceInRcdata(self): + self.consumeEntity() + self.state = self.rcdataState + return True + + def rawtextState(self): + data = self.stream.char() + if data == "<": + self.state = self.rawtextLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + # Tokenization ends. + return False + else: + chars = self.stream.charsUntil(("<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def scriptDataState(self): + data = self.stream.char() + if data == "<": + self.state = self.scriptDataLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + # Tokenization ends. + return False + else: + chars = self.stream.charsUntil(("<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def plaintextState(self): + data = self.stream.char() + if data == EOF: + # Tokenization ends. + return False + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + self.stream.charsUntil("\u0000")}) + return True + + def tagOpenState(self): + data = self.stream.char() + if data == "!": + self.state = self.markupDeclarationOpenState + elif data == "/": + self.state = self.closeTagOpenState + elif data in asciiLetters: + self.currentToken = {"type": tokenTypes["StartTag"], + "name": data, "data": [], + "selfClosing": False, + "selfClosingAcknowledged": False} + self.state = self.tagNameState + elif data == ">": + # XXX In theory it could be something besides a tag name. But + # do we really care? + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name-but-got-right-bracket"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<>"}) + self.state = self.dataState + elif data == "?": + # XXX In theory it could be something besides a tag name. But + # do we really care? + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name-but-got-question-mark"}) + self.stream.unget(data) + self.state = self.bogusCommentState + else: + # XXX + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.dataState + return True + + def closeTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.currentToken = {"type": tokenTypes["EndTag"], "name": data, + "data": [], "selfClosing": False} + self.state = self.tagNameState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-closing-tag-but-got-right-bracket"}) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-closing-tag-but-got-eof"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "": + self.emitCurrentToken() + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-tag-name"}) + self.state = self.dataState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] += "\uFFFD" + else: + self.currentToken["name"] += data + # (Don't use charsUntil here, because tag names are + # very short and it's faster to not do anything fancy) + return True + + def rcdataLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.temporaryBuffer = "" + self.state = self.rcdataEndTagOpenState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.rcdataState + return True + + def rcdataEndTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.temporaryBuffer += data + self.state = self.rcdataEndTagNameState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) + self.state = self.scriptDataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataEscapedState + elif data == EOF: + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataEscapedState + return True + + def scriptDataEscapedLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.temporaryBuffer = "" + self.state = self.scriptDataEscapedEndTagOpenState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<" + data}) + self.temporaryBuffer = data + self.state = self.scriptDataDoubleEscapeStartState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.scriptDataEscapedState + return True + + def scriptDataEscapedEndTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.temporaryBuffer = data + self.state = self.scriptDataEscapedEndTagNameState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": ""))): + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + if self.temporaryBuffer.lower() == "script": + self.state = self.scriptDataDoubleEscapedState + else: + self.state = self.scriptDataEscapedState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.temporaryBuffer += data + else: + self.stream.unget(data) + self.state = self.scriptDataEscapedState + return True + + def scriptDataDoubleEscapedState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + self.state = self.scriptDataDoubleEscapedDashState + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + return True + + def scriptDataDoubleEscapedDashState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + self.state = self.scriptDataDoubleEscapedDashDashState + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataDoubleEscapedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapedDashDashState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) + self.state = self.scriptDataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataDoubleEscapedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapedLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "/"}) + self.temporaryBuffer = "" + self.state = self.scriptDataDoubleEscapeEndState + else: + self.stream.unget(data) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapeEndState(self): + data = self.stream.char() + if data in (spaceCharacters | frozenset(("/", ">"))): + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + if self.temporaryBuffer.lower() == "script": + self.state = self.scriptDataEscapedState + else: + self.state = self.scriptDataDoubleEscapedState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.temporaryBuffer += data + else: + self.stream.unget(data) + self.state = self.scriptDataDoubleEscapedState + return True + + def beforeAttributeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data in asciiLetters: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == ">": + self.emitCurrentToken() + elif data == "/": + self.state = self.selfClosingStartTagState + elif data in ("'", '"', "=", "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "invalid-character-in-attribute-name"}) + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"].append(["\uFFFD", ""]) + self.state = self.attributeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-name-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + return True + + def attributeNameState(self): + data = self.stream.char() + leavingThisState = True + emitToken = False + if data == "=": + self.state = self.beforeAttributeValueState + elif data in asciiLetters: + self.currentToken["data"][-1][0] += data +\ + self.stream.charsUntil(asciiLetters, True) + leavingThisState = False + elif data == ">": + # XXX If we emit here the attributes are converted to a dict + # without being checked and when the code below runs we error + # because data is a dict not a list + emitToken = True + elif data in spaceCharacters: + self.state = self.afterAttributeNameState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][0] += "\uFFFD" + leavingThisState = False + elif data in ("'", '"', "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "invalid-character-in-attribute-name"}) + self.currentToken["data"][-1][0] += data + leavingThisState = False + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "eof-in-attribute-name"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][0] += data + leavingThisState = False + + if leavingThisState: + # Attributes are not dropped at this stage. That happens when the + # start tag token is emitted so values can still be safely appended + # to attributes, but we do want to report the parse error in time. + self.currentToken["data"][-1][0] = ( + self.currentToken["data"][-1][0].translate(asciiUpper2Lower)) + for name, _ in self.currentToken["data"][:-1]: + if self.currentToken["data"][-1][0] == name: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "duplicate-attribute"}) + break + # XXX Fix for above XXX + if emitToken: + self.emitCurrentToken() + return True + + def afterAttributeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data == "=": + self.state = self.beforeAttributeValueState + elif data == ">": + self.emitCurrentToken() + elif data in asciiLetters: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"].append(["\uFFFD", ""]) + self.state = self.attributeNameState + elif data in ("'", '"', "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "invalid-character-after-attribute-name"}) + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-end-of-tag-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + return True + + def beforeAttributeValueState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data == "\"": + self.state = self.attributeValueDoubleQuotedState + elif data == "&": + self.state = self.attributeValueUnQuotedState + self.stream.unget(data) + elif data == "'": + self.state = self.attributeValueSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-value-but-got-right-bracket"}) + self.emitCurrentToken() + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + self.state = self.attributeValueUnQuotedState + elif data in ("=", "<", "`"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "equals-in-unquoted-attribute-value"}) + self.currentToken["data"][-1][1] += data + self.state = self.attributeValueUnQuotedState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-value-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data + self.state = self.attributeValueUnQuotedState + return True + + def attributeValueDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterAttributeValueState + elif data == "&": + self.processEntityInAttribute('"') + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-double-quote"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data +\ + self.stream.charsUntil(("\"", "&", "\u0000")) + return True + + def attributeValueSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterAttributeValueState + elif data == "&": + self.processEntityInAttribute("'") + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-single-quote"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data +\ + self.stream.charsUntil(("'", "&", "\u0000")) + return True + + def attributeValueUnQuotedState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeAttributeNameState + elif data == "&": + self.processEntityInAttribute(">") + elif data == ">": + self.emitCurrentToken() + elif data in ('"', "'", "=", "<", "`"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-in-unquoted-attribute-value"}) + self.currentToken["data"][-1][1] += data + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-no-quotes"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data + self.stream.charsUntil( + frozenset(("&", ">", '"', "'", "=", "<", "`", "\u0000")) | spaceCharacters) + return True + + def afterAttributeValueState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeAttributeNameState + elif data == ">": + self.emitCurrentToken() + elif data == "/": + self.state = self.selfClosingStartTagState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-EOF-after-attribute-value"}) + self.stream.unget(data) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-after-attribute-value"}) + self.stream.unget(data) + self.state = self.beforeAttributeNameState + return True + + def selfClosingStartTagState(self): + data = self.stream.char() + if data == ">": + self.currentToken["selfClosing"] = True + self.emitCurrentToken() + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "unexpected-EOF-after-solidus-in-tag"}) + self.stream.unget(data) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-after-solidus-in-tag"}) + self.stream.unget(data) + self.state = self.beforeAttributeNameState + return True + + def bogusCommentState(self): + # Make a new comment token and give it as value all the characters + # until the first > or EOF (charsUntil checks for EOF automatically) + # and emit it. + data = self.stream.charsUntil(">") + data = data.replace("\u0000", "\uFFFD") + self.tokenQueue.append( + {"type": tokenTypes["Comment"], "data": data}) + + # Eat the character directly after the bogus comment which is either a + # ">" or an EOF. + self.stream.char() + self.state = self.dataState + return True + + def markupDeclarationOpenState(self): + charStack = [self.stream.char()] + if charStack[-1] == "-": + charStack.append(self.stream.char()) + if charStack[-1] == "-": + self.currentToken = {"type": tokenTypes["Comment"], "data": ""} + self.state = self.commentStartState + return True + elif charStack[-1] in ('d', 'D'): + matched = True + for expected in (('o', 'O'), ('c', 'C'), ('t', 'T'), + ('y', 'Y'), ('p', 'P'), ('e', 'E')): + charStack.append(self.stream.char()) + if charStack[-1] not in expected: + matched = False + break + if matched: + self.currentToken = {"type": tokenTypes["Doctype"], + "name": "", + "publicId": None, "systemId": None, + "correct": True} + self.state = self.doctypeState + return True + elif (charStack[-1] == "[" and + self.parser is not None and + self.parser.tree.openElements and + self.parser.tree.openElements[-1].namespace != self.parser.tree.defaultNamespace): + matched = True + for expected in ["C", "D", "A", "T", "A", "["]: + charStack.append(self.stream.char()) + if charStack[-1] != expected: + matched = False + break + if matched: + self.state = self.cdataSectionState + return True + + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-dashes-or-doctype"}) + + while charStack: + self.stream.unget(charStack.pop()) + self.state = self.bogusCommentState + return True + + def commentStartState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentStartDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "incorrect-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += data + self.state = self.commentState + return True + + def commentStartDashState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "-\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "incorrect-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "-" + data + self.state = self.commentState + return True + + def commentState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += data + \ + self.stream.charsUntil(("-", "\u0000")) + return True + + def commentEndDashState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "-\uFFFD" + self.state = self.commentState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-end-dash"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "-" + data + self.state = self.commentState + return True + + def commentEndState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "--\uFFFD" + self.state = self.commentState + elif data == "!": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-bang-after-double-dash-in-comment"}) + self.state = self.commentEndBangState + elif data == "-": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-dash-after-double-dash-in-comment"}) + self.currentToken["data"] += data + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-double-dash"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + # XXX + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-comment"}) + self.currentToken["data"] += "--" + data + self.state = self.commentState + return True + + def commentEndBangState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "-": + self.currentToken["data"] += "--!" + self.state = self.commentEndDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "--!\uFFFD" + self.state = self.commentState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-end-bang-state"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "--!" + data + self.state = self.commentState + return True + + def doctypeState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-eof"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "need-space-after-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypeNameState + return True + + def beforeDoctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-right-bracket"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] = "\uFFFD" + self.state = self.doctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-eof"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["name"] = data + self.state = self.doctypeNameState + return True + + def doctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.state = self.afterDoctypeNameState + elif data == ">": + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] += "\uFFFD" + self.state = self.doctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype-name"}) + self.currentToken["correct"] = False + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["name"] += data + return True + + def afterDoctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.currentToken["correct"] = False + self.stream.unget(data) + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + if data in ("p", "P"): + matched = True + for expected in (("u", "U"), ("b", "B"), ("l", "L"), + ("i", "I"), ("c", "C")): + data = self.stream.char() + if data not in expected: + matched = False + break + if matched: + self.state = self.afterDoctypePublicKeywordState + return True + elif data in ("s", "S"): + matched = True + for expected in (("y", "Y"), ("s", "S"), ("t", "T"), + ("e", "E"), ("m", "M")): + data = self.stream.char() + if data not in expected: + matched = False + break + if matched: + self.state = self.afterDoctypeSystemKeywordState + return True + + # All the characters read before the current 'data' will be + # [a-zA-Z], so they're garbage in the bogus doctype and can be + # discarded; only the latest character might be '>' or EOF + # and needs to be ungetted + self.stream.unget(data) + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-space-or-right-bracket-in-doctype", "datavars": + {"data": data}}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + + return True + + def afterDoctypePublicKeywordState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypePublicIdentifierState + elif data in ("'", '"'): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypePublicIdentifierState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.stream.unget(data) + self.state = self.beforeDoctypePublicIdentifierState + return True + + def beforeDoctypePublicIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == "\"": + self.currentToken["publicId"] = "" + self.state = self.doctypePublicIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["publicId"] = "" + self.state = self.doctypePublicIdentifierSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def doctypePublicIdentifierDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterDoctypePublicIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["publicId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["publicId"] += data + return True + + def doctypePublicIdentifierSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterDoctypePublicIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["publicId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["publicId"] += data + return True + + def afterDoctypePublicIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.betweenDoctypePublicAndSystemIdentifiersState + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == '"': + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def betweenDoctypePublicAndSystemIdentifiersState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == '"': + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def afterDoctypeSystemKeywordState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypeSystemIdentifierState + elif data in ("'", '"'): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypeSystemIdentifierState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.stream.unget(data) + self.state = self.beforeDoctypeSystemIdentifierState + return True + + def beforeDoctypeSystemIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == "\"": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def doctypeSystemIdentifierDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterDoctypeSystemIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["systemId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["systemId"] += data + return True + + def doctypeSystemIdentifierSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterDoctypeSystemIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["systemId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["systemId"] += data + return True + + def afterDoctypeSystemIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.state = self.bogusDoctypeState + return True + + def bogusDoctypeState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + # XXX EMIT + self.stream.unget(data) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + pass + return True + + def cdataSectionState(self): + data = [] + while True: + data.append(self.stream.charsUntil("]")) + data.append(self.stream.charsUntil(">")) + char = self.stream.char() + if char == EOF: + break + else: + assert char == ">" + if data[-1][-2:] == "]]": + data[-1] = data[-1][:-2] + break + else: + data.append(char) + + data = "".join(data) # pylint:disable=redefined-variable-type + # Deal with null here rather than in the parser + nullCount = data.count("\u0000") + if nullCount > 0: + for _ in range(nullCount): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + data = data.replace("\u0000", "\uFFFD") + if data: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": data}) + self.state = self.dataState + return True diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__init__.py new file mode 100644 index 0000000..07bad5d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__init__.py @@ -0,0 +1,5 @@ +from __future__ import absolute_import, division, unicode_literals + +from .py import Trie + +__all__ = ["Trie"] diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53d2707f368522427471e2f076ead4fb68abafb3 GIT binary patch literal 368 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 YzRVOGZPZuW#JZ;OQNB&v08!if2e#Yq6#xJL literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/_base.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/_base.py new file mode 100644 index 0000000..6b71975 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/_base.py @@ -0,0 +1,40 @@ +from __future__ import absolute_import, division, unicode_literals + +try: + from collections.abc import Mapping +except ImportError: # Python 2.7 + from collections import Mapping + + +class Trie(Mapping): + """Abstract base class for tries""" + + def keys(self, prefix=None): + # pylint:disable=arguments-differ + keys = super(Trie, self).keys() + + if prefix is None: + return set(keys) + + return {x for x in keys if x.startswith(prefix)} + + def has_keys_with_prefix(self, prefix): + for key in self.keys(): + if key.startswith(prefix): + return True + + return False + + def longest_prefix(self, prefix): + if prefix in self: + return prefix + + for i in range(1, len(prefix) + 1): + if prefix[:-i] in self: + return prefix[:-i] + + raise KeyError(prefix) + + def longest_prefix_item(self, prefix): + lprefix = self.longest_prefix(prefix) + return (lprefix, self[lprefix]) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/py.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/py.py new file mode 100644 index 0000000..c178b21 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/py.py @@ -0,0 +1,67 @@ +from __future__ import absolute_import, division, unicode_literals +from pip._vendor.six import text_type + +from bisect import bisect_left + +from ._base import Trie as ABCTrie + + +class Trie(ABCTrie): + def __init__(self, data): + if not all(isinstance(x, text_type) for x in data.keys()): + raise TypeError("All keys must be strings") + + self._data = data + self._keys = sorted(data.keys()) + self._cachestr = "" + self._cachepoints = (0, len(data)) + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + return iter(self._data) + + def __getitem__(self, key): + return self._data[key] + + def keys(self, prefix=None): + if prefix is None or prefix == "" or not self._keys: + return set(self._keys) + + if prefix.startswith(self._cachestr): + lo, hi = self._cachepoints + start = i = bisect_left(self._keys, prefix, lo, hi) + else: + start = i = bisect_left(self._keys, prefix) + + keys = set() + if start == len(self._keys): + return keys + + while self._keys[i].startswith(prefix): + keys.add(self._keys[i]) + i += 1 + + self._cachestr = prefix + self._cachepoints = (start, i) + + return keys + + def has_keys_with_prefix(self, prefix): + if prefix in self._data: + return True + + if prefix.startswith(self._cachestr): + lo, hi = self._cachepoints + i = bisect_left(self._keys, prefix, lo, hi) + else: + i = bisect_left(self._keys, prefix) + + if i == len(self._keys): + return False + + return self._keys[i].startswith(prefix) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_utils.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_utils.py new file mode 100644 index 0000000..d7c4926 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_utils.py @@ -0,0 +1,159 @@ +from __future__ import absolute_import, division, unicode_literals + +from types import ModuleType + +try: + from collections.abc import Mapping +except ImportError: + from collections import Mapping + +from pip._vendor.six import text_type, PY3 + +if PY3: + import xml.etree.ElementTree as default_etree +else: + try: + import xml.etree.cElementTree as default_etree + except ImportError: + import xml.etree.ElementTree as default_etree + + +__all__ = ["default_etree", "MethodDispatcher", "isSurrogatePair", + "surrogatePairToCodepoint", "moduleFactoryFactory", + "supports_lone_surrogates"] + + +# Platforms not supporting lone surrogates (\uD800-\uDFFF) should be +# caught by the below test. In general this would be any platform +# using UTF-16 as its encoding of unicode strings, such as +# Jython. This is because UTF-16 itself is based on the use of such +# surrogates, and there is no mechanism to further escape such +# escapes. +try: + _x = eval('"\\uD800"') # pylint:disable=eval-used + if not isinstance(_x, text_type): + # We need this with u"" because of http://bugs.jython.org/issue2039 + _x = eval('u"\\uD800"') # pylint:disable=eval-used + assert isinstance(_x, text_type) +except Exception: + supports_lone_surrogates = False +else: + supports_lone_surrogates = True + + +class MethodDispatcher(dict): + """Dict with 2 special properties: + + On initiation, keys that are lists, sets or tuples are converted to + multiple keys so accessing any one of the items in the original + list-like object returns the matching value + + md = MethodDispatcher({("foo", "bar"):"baz"}) + md["foo"] == "baz" + + A default value which can be set through the default attribute. + """ + + def __init__(self, items=()): + _dictEntries = [] + for name, value in items: + if isinstance(name, (list, tuple, frozenset, set)): + for item in name: + _dictEntries.append((item, value)) + else: + _dictEntries.append((name, value)) + dict.__init__(self, _dictEntries) + assert len(self) == len(_dictEntries) + self.default = None + + def __getitem__(self, key): + return dict.get(self, key, self.default) + + def __get__(self, instance, owner=None): + return BoundMethodDispatcher(instance, self) + + +class BoundMethodDispatcher(Mapping): + """Wraps a MethodDispatcher, binding its return values to `instance`""" + def __init__(self, instance, dispatcher): + self.instance = instance + self.dispatcher = dispatcher + + def __getitem__(self, key): + # see https://docs.python.org/3/reference/datamodel.html#object.__get__ + # on a function, __get__ is used to bind a function to an instance as a bound method + return self.dispatcher[key].__get__(self.instance) + + def get(self, key, default): + if key in self.dispatcher: + return self[key] + else: + return default + + def __iter__(self): + return iter(self.dispatcher) + + def __len__(self): + return len(self.dispatcher) + + def __contains__(self, key): + return key in self.dispatcher + + +# Some utility functions to deal with weirdness around UCS2 vs UCS4 +# python builds + +def isSurrogatePair(data): + return (len(data) == 2 and + ord(data[0]) >= 0xD800 and ord(data[0]) <= 0xDBFF and + ord(data[1]) >= 0xDC00 and ord(data[1]) <= 0xDFFF) + + +def surrogatePairToCodepoint(data): + char_val = (0x10000 + (ord(data[0]) - 0xD800) * 0x400 + + (ord(data[1]) - 0xDC00)) + return char_val + +# Module Factory Factory (no, this isn't Java, I know) +# Here to stop this being duplicated all over the place. + + +def moduleFactoryFactory(factory): + moduleCache = {} + + def moduleFactory(baseModule, *args, **kwargs): + if isinstance(ModuleType.__name__, type("")): + name = "_%s_factory" % baseModule.__name__ + else: + name = b"_%s_factory" % baseModule.__name__ + + kwargs_tuple = tuple(kwargs.items()) + + try: + return moduleCache[name][args][kwargs_tuple] + except KeyError: + mod = ModuleType(name) + objs = factory(baseModule, *args, **kwargs) + mod.__dict__.update(objs) + if "name" not in moduleCache: + moduleCache[name] = {} + if "args" not in moduleCache[name]: + moduleCache[name][args] = {} + if "kwargs" not in moduleCache[name][args]: + moduleCache[name][args][kwargs_tuple] = {} + moduleCache[name][args][kwargs_tuple] = mod + return mod + + return moduleFactory + + +def memoize(func): + cache = {} + + def wrapped(*args, **kwargs): + key = (tuple(args), tuple(kwargs.items())) + if key not in cache: + cache[key] = func(*args, **kwargs) + return cache[key] + + return wrapped diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/constants.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/constants.py new file mode 100644 index 0000000..fe3e237 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/constants.py @@ -0,0 +1,2946 @@ +from __future__ import absolute_import, division, unicode_literals + +import string + +EOF = None + +E = { + "null-character": + "Null character in input stream, replaced with U+FFFD.", + "invalid-codepoint": + "Invalid codepoint in stream.", + "incorrectly-placed-solidus": + "Solidus (/) incorrectly placed in tag.", + "incorrect-cr-newline-entity": + "Incorrect CR newline entity, replaced with LF.", + "illegal-windows-1252-entity": + "Entity used with illegal number (windows-1252 reference).", + "cant-convert-numeric-entity": + "Numeric entity couldn't be converted to character " + "(codepoint U+%(charAsInt)08x).", + "illegal-codepoint-for-numeric-entity": + "Numeric entity represents an illegal codepoint: " + "U+%(charAsInt)08x.", + "numeric-entity-without-semicolon": + "Numeric entity didn't end with ';'.", + "expected-numeric-entity-but-got-eof": + "Numeric entity expected. Got end of file instead.", + "expected-numeric-entity": + "Numeric entity expected but none found.", + "named-entity-without-semicolon": + "Named entity didn't end with ';'.", + "expected-named-entity": + "Named entity expected. Got none.", + "attributes-in-end-tag": + "End tag contains unexpected attributes.", + 'self-closing-flag-on-end-tag': + "End tag contains unexpected self-closing flag.", + "expected-tag-name-but-got-right-bracket": + "Expected tag name. Got '>' instead.", + "expected-tag-name-but-got-question-mark": + "Expected tag name. Got '?' instead. (HTML doesn't " + "support processing instructions.)", + "expected-tag-name": + "Expected tag name. Got something else instead", + "expected-closing-tag-but-got-right-bracket": + "Expected closing tag. Got '>' instead. Ignoring ''.", + "expected-closing-tag-but-got-eof": + "Expected closing tag. Unexpected end of file.", + "expected-closing-tag-but-got-char": + "Expected closing tag. Unexpected character '%(data)s' found.", + "eof-in-tag-name": + "Unexpected end of file in the tag name.", + "expected-attribute-name-but-got-eof": + "Unexpected end of file. Expected attribute name instead.", + "eof-in-attribute-name": + "Unexpected end of file in attribute name.", + "invalid-character-in-attribute-name": + "Invalid character in attribute name", + "duplicate-attribute": + "Dropped duplicate attribute on tag.", + "expected-end-of-tag-name-but-got-eof": + "Unexpected end of file. Expected = or end of tag.", + "expected-attribute-value-but-got-eof": + "Unexpected end of file. Expected attribute value.", + "expected-attribute-value-but-got-right-bracket": + "Expected attribute value. Got '>' instead.", + 'equals-in-unquoted-attribute-value': + "Unexpected = in unquoted attribute", + 'unexpected-character-in-unquoted-attribute-value': + "Unexpected character in unquoted attribute", + "invalid-character-after-attribute-name": + "Unexpected character after attribute name.", + "unexpected-character-after-attribute-value": + "Unexpected character after attribute value.", + "eof-in-attribute-value-double-quote": + "Unexpected end of file in attribute value (\").", + "eof-in-attribute-value-single-quote": + "Unexpected end of file in attribute value (').", + "eof-in-attribute-value-no-quotes": + "Unexpected end of file in attribute value.", + "unexpected-EOF-after-solidus-in-tag": + "Unexpected end of file in tag. Expected >", + "unexpected-character-after-solidus-in-tag": + "Unexpected character after / in tag. Expected >", + "expected-dashes-or-doctype": + "Expected '--' or 'DOCTYPE'. Not found.", + "unexpected-bang-after-double-dash-in-comment": + "Unexpected ! after -- in comment", + "unexpected-space-after-double-dash-in-comment": + "Unexpected space after -- in comment", + "incorrect-comment": + "Incorrect comment.", + "eof-in-comment": + "Unexpected end of file in comment.", + "eof-in-comment-end-dash": + "Unexpected end of file in comment (-)", + "unexpected-dash-after-double-dash-in-comment": + "Unexpected '-' after '--' found in comment.", + "eof-in-comment-double-dash": + "Unexpected end of file in comment (--).", + "eof-in-comment-end-space-state": + "Unexpected end of file in comment.", + "eof-in-comment-end-bang-state": + "Unexpected end of file in comment.", + "unexpected-char-in-comment": + "Unexpected character in comment found.", + "need-space-after-doctype": + "No space after literal string 'DOCTYPE'.", + "expected-doctype-name-but-got-right-bracket": + "Unexpected > character. Expected DOCTYPE name.", + "expected-doctype-name-but-got-eof": + "Unexpected end of file. Expected DOCTYPE name.", + "eof-in-doctype-name": + "Unexpected end of file in DOCTYPE name.", + "eof-in-doctype": + "Unexpected end of file in DOCTYPE.", + "expected-space-or-right-bracket-in-doctype": + "Expected space or '>'. Got '%(data)s'", + "unexpected-end-of-doctype": + "Unexpected end of DOCTYPE.", + "unexpected-char-in-doctype": + "Unexpected character in DOCTYPE.", + "eof-in-innerhtml": + "XXX innerHTML EOF", + "unexpected-doctype": + "Unexpected DOCTYPE. Ignored.", + "non-html-root": + "html needs to be the first start tag.", + "expected-doctype-but-got-eof": + "Unexpected End of file. Expected DOCTYPE.", + "unknown-doctype": + "Erroneous DOCTYPE.", + "expected-doctype-but-got-chars": + "Unexpected non-space characters. Expected DOCTYPE.", + "expected-doctype-but-got-start-tag": + "Unexpected start tag (%(name)s). Expected DOCTYPE.", + "expected-doctype-but-got-end-tag": + "Unexpected end tag (%(name)s). Expected DOCTYPE.", + "end-tag-after-implied-root": + "Unexpected end tag (%(name)s) after the (implied) root element.", + "expected-named-closing-tag-but-got-eof": + "Unexpected end of file. Expected end tag (%(name)s).", + "two-heads-are-not-better-than-one": + "Unexpected start tag head in existing head. Ignored.", + "unexpected-end-tag": + "Unexpected end tag (%(name)s). Ignored.", + "unexpected-start-tag-out-of-my-head": + "Unexpected start tag (%(name)s) that can be in head. Moved.", + "unexpected-start-tag": + "Unexpected start tag (%(name)s).", + "missing-end-tag": + "Missing end tag (%(name)s).", + "missing-end-tags": + "Missing end tags (%(name)s).", + "unexpected-start-tag-implies-end-tag": + "Unexpected start tag (%(startName)s) " + "implies end tag (%(endName)s).", + "unexpected-start-tag-treated-as": + "Unexpected start tag (%(originalName)s). Treated as %(newName)s.", + "deprecated-tag": + "Unexpected start tag %(name)s. Don't use it!", + "unexpected-start-tag-ignored": + "Unexpected start tag %(name)s. Ignored.", + "expected-one-end-tag-but-got-another": + "Unexpected end tag (%(gotName)s). " + "Missing end tag (%(expectedName)s).", + "end-tag-too-early": + "End tag (%(name)s) seen too early. Expected other end tag.", + "end-tag-too-early-named": + "Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s).", + "end-tag-too-early-ignored": + "End tag (%(name)s) seen too early. Ignored.", + "adoption-agency-1.1": + "End tag (%(name)s) violates step 1, " + "paragraph 1 of the adoption agency algorithm.", + "adoption-agency-1.2": + "End tag (%(name)s) violates step 1, " + "paragraph 2 of the adoption agency algorithm.", + "adoption-agency-1.3": + "End tag (%(name)s) violates step 1, " + "paragraph 3 of the adoption agency algorithm.", + "adoption-agency-4.4": + "End tag (%(name)s) violates step 4, " + "paragraph 4 of the adoption agency algorithm.", + "unexpected-end-tag-treated-as": + "Unexpected end tag (%(originalName)s). Treated as %(newName)s.", + "no-end-tag": + "This element (%(name)s) has no end tag.", + "unexpected-implied-end-tag-in-table": + "Unexpected implied end tag (%(name)s) in the table phase.", + "unexpected-implied-end-tag-in-table-body": + "Unexpected implied end tag (%(name)s) in the table body phase.", + "unexpected-char-implies-table-voodoo": + "Unexpected non-space characters in " + "table context caused voodoo mode.", + "unexpected-hidden-input-in-table": + "Unexpected input with type hidden in table context.", + "unexpected-form-in-table": + "Unexpected form in table context.", + "unexpected-start-tag-implies-table-voodoo": + "Unexpected start tag (%(name)s) in " + "table context caused voodoo mode.", + "unexpected-end-tag-implies-table-voodoo": + "Unexpected end tag (%(name)s) in " + "table context caused voodoo mode.", + "unexpected-cell-in-table-body": + "Unexpected table cell start tag (%(name)s) " + "in the table body phase.", + "unexpected-cell-end-tag": + "Got table cell end tag (%(name)s) " + "while required end tags are missing.", + "unexpected-end-tag-in-table-body": + "Unexpected end tag (%(name)s) in the table body phase. Ignored.", + "unexpected-implied-end-tag-in-table-row": + "Unexpected implied end tag (%(name)s) in the table row phase.", + "unexpected-end-tag-in-table-row": + "Unexpected end tag (%(name)s) in the table row phase. Ignored.", + "unexpected-select-in-select": + "Unexpected select start tag in the select phase " + "treated as select end tag.", + "unexpected-input-in-select": + "Unexpected input start tag in the select phase.", + "unexpected-start-tag-in-select": + "Unexpected start tag token (%(name)s in the select phase. " + "Ignored.", + "unexpected-end-tag-in-select": + "Unexpected end tag (%(name)s) in the select phase. Ignored.", + "unexpected-table-element-start-tag-in-select-in-table": + "Unexpected table element start tag (%(name)s) in the select in table phase.", + "unexpected-table-element-end-tag-in-select-in-table": + "Unexpected table element end tag (%(name)s) in the select in table phase.", + "unexpected-char-after-body": + "Unexpected non-space characters in the after body phase.", + "unexpected-start-tag-after-body": + "Unexpected start tag token (%(name)s)" + " in the after body phase.", + "unexpected-end-tag-after-body": + "Unexpected end tag token (%(name)s)" + " in the after body phase.", + "unexpected-char-in-frameset": + "Unexpected characters in the frameset phase. Characters ignored.", + "unexpected-start-tag-in-frameset": + "Unexpected start tag token (%(name)s)" + " in the frameset phase. Ignored.", + "unexpected-frameset-in-frameset-innerhtml": + "Unexpected end tag token (frameset) " + "in the frameset phase (innerHTML).", + "unexpected-end-tag-in-frameset": + "Unexpected end tag token (%(name)s)" + " in the frameset phase. Ignored.", + "unexpected-char-after-frameset": + "Unexpected non-space characters in the " + "after frameset phase. Ignored.", + "unexpected-start-tag-after-frameset": + "Unexpected start tag (%(name)s)" + " in the after frameset phase. Ignored.", + "unexpected-end-tag-after-frameset": + "Unexpected end tag (%(name)s)" + " in the after frameset phase. Ignored.", + "unexpected-end-tag-after-body-innerhtml": + "Unexpected end tag after body(innerHtml)", + "expected-eof-but-got-char": + "Unexpected non-space characters. Expected end of file.", + "expected-eof-but-got-start-tag": + "Unexpected start tag (%(name)s)" + ". Expected end of file.", + "expected-eof-but-got-end-tag": + "Unexpected end tag (%(name)s)" + ". Expected end of file.", + "eof-in-table": + "Unexpected end of file. Expected table content.", + "eof-in-select": + "Unexpected end of file. Expected select content.", + "eof-in-frameset": + "Unexpected end of file. Expected frameset content.", + "eof-in-script-in-script": + "Unexpected end of file. Expected script content.", + "eof-in-foreign-lands": + "Unexpected end of file. Expected foreign content", + "non-void-element-with-trailing-solidus": + "Trailing solidus not allowed on element %(name)s", + "unexpected-html-element-in-foreign-content": + "Element %(name)s not allowed in a non-html context", + "unexpected-end-tag-before-html": + "Unexpected end tag (%(name)s) before html.", + "unexpected-inhead-noscript-tag": + "Element %(name)s not allowed in a inhead-noscript context", + "eof-in-head-noscript": + "Unexpected end of file. Expected inhead-noscript content", + "char-in-head-noscript": + "Unexpected non-space character. Expected inhead-noscript content", + "XXX-undefined-error": + "Undefined error (this sucks and should be fixed)", +} + +namespaces = { + "html": "http://www.w3.org/1999/xhtml", + "mathml": "http://www.w3.org/1998/Math/MathML", + "svg": "http://www.w3.org/2000/svg", + "xlink": "http://www.w3.org/1999/xlink", + "xml": "http://www.w3.org/XML/1998/namespace", + "xmlns": "http://www.w3.org/2000/xmlns/" +} + +scopingElements = frozenset([ + (namespaces["html"], "applet"), + (namespaces["html"], "caption"), + (namespaces["html"], "html"), + (namespaces["html"], "marquee"), + (namespaces["html"], "object"), + (namespaces["html"], "table"), + (namespaces["html"], "td"), + (namespaces["html"], "th"), + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext"), + (namespaces["mathml"], "annotation-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title"), +]) + +formattingElements = frozenset([ + (namespaces["html"], "a"), + (namespaces["html"], "b"), + (namespaces["html"], "big"), + (namespaces["html"], "code"), + (namespaces["html"], "em"), + (namespaces["html"], "font"), + (namespaces["html"], "i"), + (namespaces["html"], "nobr"), + (namespaces["html"], "s"), + (namespaces["html"], "small"), + (namespaces["html"], "strike"), + (namespaces["html"], "strong"), + (namespaces["html"], "tt"), + (namespaces["html"], "u") +]) + +specialElements = frozenset([ + (namespaces["html"], "address"), + (namespaces["html"], "applet"), + (namespaces["html"], "area"), + (namespaces["html"], "article"), + (namespaces["html"], "aside"), + (namespaces["html"], "base"), + (namespaces["html"], "basefont"), + (namespaces["html"], "bgsound"), + (namespaces["html"], "blockquote"), + (namespaces["html"], "body"), + (namespaces["html"], "br"), + (namespaces["html"], "button"), + (namespaces["html"], "caption"), + (namespaces["html"], "center"), + (namespaces["html"], "col"), + (namespaces["html"], "colgroup"), + (namespaces["html"], "command"), + (namespaces["html"], "dd"), + (namespaces["html"], "details"), + (namespaces["html"], "dir"), + (namespaces["html"], "div"), + (namespaces["html"], "dl"), + (namespaces["html"], "dt"), + (namespaces["html"], "embed"), + (namespaces["html"], "fieldset"), + (namespaces["html"], "figure"), + (namespaces["html"], "footer"), + (namespaces["html"], "form"), + (namespaces["html"], "frame"), + (namespaces["html"], "frameset"), + (namespaces["html"], "h1"), + (namespaces["html"], "h2"), + (namespaces["html"], "h3"), + (namespaces["html"], "h4"), + (namespaces["html"], "h5"), + (namespaces["html"], "h6"), + (namespaces["html"], "head"), + (namespaces["html"], "header"), + (namespaces["html"], "hr"), + (namespaces["html"], "html"), + (namespaces["html"], "iframe"), + # Note that image is commented out in the spec as "this isn't an + # element that can end up on the stack, so it doesn't matter," + (namespaces["html"], "image"), + (namespaces["html"], "img"), + (namespaces["html"], "input"), + (namespaces["html"], "isindex"), + (namespaces["html"], "li"), + (namespaces["html"], "link"), + (namespaces["html"], "listing"), + (namespaces["html"], "marquee"), + (namespaces["html"], "menu"), + (namespaces["html"], "meta"), + (namespaces["html"], "nav"), + (namespaces["html"], "noembed"), + (namespaces["html"], "noframes"), + (namespaces["html"], "noscript"), + (namespaces["html"], "object"), + (namespaces["html"], "ol"), + (namespaces["html"], "p"), + (namespaces["html"], "param"), + (namespaces["html"], "plaintext"), + (namespaces["html"], "pre"), + (namespaces["html"], "script"), + (namespaces["html"], "section"), + (namespaces["html"], "select"), + (namespaces["html"], "style"), + (namespaces["html"], "table"), + (namespaces["html"], "tbody"), + (namespaces["html"], "td"), + (namespaces["html"], "textarea"), + (namespaces["html"], "tfoot"), + (namespaces["html"], "th"), + (namespaces["html"], "thead"), + (namespaces["html"], "title"), + (namespaces["html"], "tr"), + (namespaces["html"], "ul"), + (namespaces["html"], "wbr"), + (namespaces["html"], "xmp"), + (namespaces["svg"], "foreignObject") +]) + +htmlIntegrationPointElements = frozenset([ + (namespaces["mathml"], "annotation-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title") +]) + +mathmlTextIntegrationPointElements = frozenset([ + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext") +]) + +adjustSVGAttributes = { + "attributename": "attributeName", + "attributetype": "attributeType", + "basefrequency": "baseFrequency", + "baseprofile": "baseProfile", + "calcmode": "calcMode", + "clippathunits": "clipPathUnits", + "contentscripttype": "contentScriptType", + "contentstyletype": "contentStyleType", + "diffuseconstant": "diffuseConstant", + "edgemode": "edgeMode", + "externalresourcesrequired": "externalResourcesRequired", + "filterres": "filterRes", + "filterunits": "filterUnits", + "glyphref": "glyphRef", + "gradienttransform": "gradientTransform", + "gradientunits": "gradientUnits", + "kernelmatrix": "kernelMatrix", + "kernelunitlength": "kernelUnitLength", + "keypoints": "keyPoints", + "keysplines": "keySplines", + "keytimes": "keyTimes", + "lengthadjust": "lengthAdjust", + "limitingconeangle": "limitingConeAngle", + "markerheight": "markerHeight", + "markerunits": "markerUnits", + "markerwidth": "markerWidth", + "maskcontentunits": "maskContentUnits", + "maskunits": "maskUnits", + "numoctaves": "numOctaves", + "pathlength": "pathLength", + "patterncontentunits": "patternContentUnits", + "patterntransform": "patternTransform", + "patternunits": "patternUnits", + "pointsatx": "pointsAtX", + "pointsaty": "pointsAtY", + "pointsatz": "pointsAtZ", + "preservealpha": "preserveAlpha", + "preserveaspectratio": "preserveAspectRatio", + "primitiveunits": "primitiveUnits", + "refx": "refX", + "refy": "refY", + "repeatcount": "repeatCount", + "repeatdur": "repeatDur", + "requiredextensions": "requiredExtensions", + "requiredfeatures": "requiredFeatures", + "specularconstant": "specularConstant", + "specularexponent": "specularExponent", + "spreadmethod": "spreadMethod", + "startoffset": "startOffset", + "stddeviation": "stdDeviation", + "stitchtiles": "stitchTiles", + "surfacescale": "surfaceScale", + "systemlanguage": "systemLanguage", + "tablevalues": "tableValues", + "targetx": "targetX", + "targety": "targetY", + "textlength": "textLength", + "viewbox": "viewBox", + "viewtarget": "viewTarget", + "xchannelselector": "xChannelSelector", + "ychannelselector": "yChannelSelector", + "zoomandpan": "zoomAndPan" +} + +adjustMathMLAttributes = {"definitionurl": "definitionURL"} + +adjustForeignAttributes = { + "xlink:actuate": ("xlink", "actuate", namespaces["xlink"]), + "xlink:arcrole": ("xlink", "arcrole", namespaces["xlink"]), + "xlink:href": ("xlink", "href", namespaces["xlink"]), + "xlink:role": ("xlink", "role", namespaces["xlink"]), + "xlink:show": ("xlink", "show", namespaces["xlink"]), + "xlink:title": ("xlink", "title", namespaces["xlink"]), + "xlink:type": ("xlink", "type", namespaces["xlink"]), + "xml:base": ("xml", "base", namespaces["xml"]), + "xml:lang": ("xml", "lang", namespaces["xml"]), + "xml:space": ("xml", "space", namespaces["xml"]), + "xmlns": (None, "xmlns", namespaces["xmlns"]), + "xmlns:xlink": ("xmlns", "xlink", namespaces["xmlns"]) +} + +unadjustForeignAttributes = {(ns, local): qname for qname, (prefix, local, ns) in + adjustForeignAttributes.items()} + +spaceCharacters = frozenset([ + "\t", + "\n", + "\u000C", + " ", + "\r" +]) + +tableInsertModeElements = frozenset([ + "table", + "tbody", + "tfoot", + "thead", + "tr" +]) + +asciiLowercase = frozenset(string.ascii_lowercase) +asciiUppercase = frozenset(string.ascii_uppercase) +asciiLetters = frozenset(string.ascii_letters) +digits = frozenset(string.digits) +hexDigits = frozenset(string.hexdigits) + +asciiUpper2Lower = {ord(c): ord(c.lower()) for c in string.ascii_uppercase} + +# Heading elements need to be ordered +headingElements = ( + "h1", + "h2", + "h3", + "h4", + "h5", + "h6" +) + +voidElements = frozenset([ + "base", + "command", + "event-source", + "link", + "meta", + "hr", + "br", + "img", + "embed", + "param", + "area", + "col", + "input", + "source", + "track" +]) + +cdataElements = frozenset(['title', 'textarea']) + +rcdataElements = frozenset([ + 'style', + 'script', + 'xmp', + 'iframe', + 'noembed', + 'noframes', + 'noscript' +]) + +booleanAttributes = { + "": frozenset(["irrelevant", "itemscope"]), + "style": frozenset(["scoped"]), + "img": frozenset(["ismap"]), + "audio": frozenset(["autoplay", "controls"]), + "video": frozenset(["autoplay", "controls"]), + "script": frozenset(["defer", "async"]), + "details": frozenset(["open"]), + "datagrid": frozenset(["multiple", "disabled"]), + "command": frozenset(["hidden", "disabled", "checked", "default"]), + "hr": frozenset(["noshade"]), + "menu": frozenset(["autosubmit"]), + "fieldset": frozenset(["disabled", "readonly"]), + "option": frozenset(["disabled", "readonly", "selected"]), + "optgroup": frozenset(["disabled", "readonly"]), + "button": frozenset(["disabled", "autofocus"]), + "input": frozenset(["disabled", "readonly", "required", "autofocus", "checked", "ismap"]), + "select": frozenset(["disabled", "readonly", "autofocus", "multiple"]), + "output": frozenset(["disabled", "readonly"]), + "iframe": frozenset(["seamless"]), +} + +# entitiesWindows1252 has to be _ordered_ and needs to have an index. It +# therefore can't be a frozenset. +entitiesWindows1252 = ( + 8364, # 0x80 0x20AC EURO SIGN + 65533, # 0x81 UNDEFINED + 8218, # 0x82 0x201A SINGLE LOW-9 QUOTATION MARK + 402, # 0x83 0x0192 LATIN SMALL LETTER F WITH HOOK + 8222, # 0x84 0x201E DOUBLE LOW-9 QUOTATION MARK + 8230, # 0x85 0x2026 HORIZONTAL ELLIPSIS + 8224, # 0x86 0x2020 DAGGER + 8225, # 0x87 0x2021 DOUBLE DAGGER + 710, # 0x88 0x02C6 MODIFIER LETTER CIRCUMFLEX ACCENT + 8240, # 0x89 0x2030 PER MILLE SIGN + 352, # 0x8A 0x0160 LATIN CAPITAL LETTER S WITH CARON + 8249, # 0x8B 0x2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK + 338, # 0x8C 0x0152 LATIN CAPITAL LIGATURE OE + 65533, # 0x8D UNDEFINED + 381, # 0x8E 0x017D LATIN CAPITAL LETTER Z WITH CARON + 65533, # 0x8F UNDEFINED + 65533, # 0x90 UNDEFINED + 8216, # 0x91 0x2018 LEFT SINGLE QUOTATION MARK + 8217, # 0x92 0x2019 RIGHT SINGLE QUOTATION MARK + 8220, # 0x93 0x201C LEFT DOUBLE QUOTATION MARK + 8221, # 0x94 0x201D RIGHT DOUBLE QUOTATION MARK + 8226, # 0x95 0x2022 BULLET + 8211, # 0x96 0x2013 EN DASH + 8212, # 0x97 0x2014 EM DASH + 732, # 0x98 0x02DC SMALL TILDE + 8482, # 0x99 0x2122 TRADE MARK SIGN + 353, # 0x9A 0x0161 LATIN SMALL LETTER S WITH CARON + 8250, # 0x9B 0x203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + 339, # 0x9C 0x0153 LATIN SMALL LIGATURE OE + 65533, # 0x9D UNDEFINED + 382, # 0x9E 0x017E LATIN SMALL LETTER Z WITH CARON + 376 # 0x9F 0x0178 LATIN CAPITAL LETTER Y WITH DIAERESIS +) + +xmlEntities = frozenset(['lt;', 'gt;', 'amp;', 'apos;', 'quot;']) + +entities = { + "AElig": "\xc6", + "AElig;": "\xc6", + "AMP": "&", + "AMP;": "&", + "Aacute": "\xc1", + "Aacute;": "\xc1", + "Abreve;": "\u0102", + "Acirc": "\xc2", + "Acirc;": "\xc2", + "Acy;": "\u0410", + "Afr;": "\U0001d504", + "Agrave": "\xc0", + "Agrave;": "\xc0", + "Alpha;": "\u0391", + "Amacr;": "\u0100", + "And;": "\u2a53", + "Aogon;": "\u0104", + "Aopf;": "\U0001d538", + "ApplyFunction;": "\u2061", + "Aring": "\xc5", + "Aring;": "\xc5", + "Ascr;": "\U0001d49c", + "Assign;": "\u2254", + "Atilde": "\xc3", + "Atilde;": "\xc3", + "Auml": "\xc4", + "Auml;": "\xc4", + "Backslash;": "\u2216", + "Barv;": "\u2ae7", + "Barwed;": "\u2306", + "Bcy;": "\u0411", + "Because;": "\u2235", + "Bernoullis;": "\u212c", + "Beta;": "\u0392", + "Bfr;": "\U0001d505", + "Bopf;": "\U0001d539", + "Breve;": "\u02d8", + "Bscr;": "\u212c", + "Bumpeq;": "\u224e", + "CHcy;": "\u0427", + "COPY": "\xa9", + "COPY;": "\xa9", + "Cacute;": "\u0106", + "Cap;": "\u22d2", + "CapitalDifferentialD;": "\u2145", + "Cayleys;": "\u212d", + "Ccaron;": "\u010c", + "Ccedil": "\xc7", + "Ccedil;": "\xc7", + "Ccirc;": "\u0108", + "Cconint;": "\u2230", + "Cdot;": "\u010a", + "Cedilla;": "\xb8", + "CenterDot;": "\xb7", + "Cfr;": "\u212d", + "Chi;": "\u03a7", + "CircleDot;": "\u2299", + "CircleMinus;": "\u2296", + "CirclePlus;": "\u2295", + "CircleTimes;": "\u2297", + "ClockwiseContourIntegral;": "\u2232", + "CloseCurlyDoubleQuote;": "\u201d", + "CloseCurlyQuote;": "\u2019", + "Colon;": "\u2237", + "Colone;": "\u2a74", + "Congruent;": "\u2261", + "Conint;": "\u222f", + "ContourIntegral;": "\u222e", + "Copf;": "\u2102", + "Coproduct;": "\u2210", + "CounterClockwiseContourIntegral;": "\u2233", + "Cross;": "\u2a2f", + "Cscr;": "\U0001d49e", + "Cup;": "\u22d3", + "CupCap;": "\u224d", + "DD;": "\u2145", + "DDotrahd;": "\u2911", + "DJcy;": "\u0402", + "DScy;": "\u0405", + "DZcy;": "\u040f", + "Dagger;": "\u2021", + "Darr;": "\u21a1", + "Dashv;": "\u2ae4", + "Dcaron;": "\u010e", + "Dcy;": "\u0414", + "Del;": "\u2207", + "Delta;": "\u0394", + "Dfr;": "\U0001d507", + "DiacriticalAcute;": "\xb4", + "DiacriticalDot;": "\u02d9", + "DiacriticalDoubleAcute;": "\u02dd", + "DiacriticalGrave;": "`", + "DiacriticalTilde;": "\u02dc", + "Diamond;": "\u22c4", + "DifferentialD;": "\u2146", + "Dopf;": "\U0001d53b", + "Dot;": "\xa8", + "DotDot;": "\u20dc", + "DotEqual;": "\u2250", + "DoubleContourIntegral;": "\u222f", + "DoubleDot;": "\xa8", + "DoubleDownArrow;": "\u21d3", + "DoubleLeftArrow;": "\u21d0", + "DoubleLeftRightArrow;": "\u21d4", + "DoubleLeftTee;": "\u2ae4", + "DoubleLongLeftArrow;": "\u27f8", + "DoubleLongLeftRightArrow;": "\u27fa", + "DoubleLongRightArrow;": "\u27f9", + "DoubleRightArrow;": "\u21d2", + "DoubleRightTee;": "\u22a8", + "DoubleUpArrow;": "\u21d1", + "DoubleUpDownArrow;": "\u21d5", + "DoubleVerticalBar;": "\u2225", + "DownArrow;": "\u2193", + "DownArrowBar;": "\u2913", + "DownArrowUpArrow;": "\u21f5", + "DownBreve;": "\u0311", + "DownLeftRightVector;": "\u2950", + "DownLeftTeeVector;": "\u295e", + "DownLeftVector;": "\u21bd", + "DownLeftVectorBar;": "\u2956", + "DownRightTeeVector;": "\u295f", + "DownRightVector;": "\u21c1", + "DownRightVectorBar;": "\u2957", + "DownTee;": "\u22a4", + "DownTeeArrow;": "\u21a7", + "Downarrow;": "\u21d3", + "Dscr;": "\U0001d49f", + "Dstrok;": "\u0110", + "ENG;": "\u014a", + "ETH": "\xd0", + "ETH;": "\xd0", + "Eacute": "\xc9", + "Eacute;": "\xc9", + "Ecaron;": "\u011a", + "Ecirc": "\xca", + "Ecirc;": "\xca", + "Ecy;": "\u042d", + "Edot;": "\u0116", + "Efr;": "\U0001d508", + "Egrave": "\xc8", + "Egrave;": "\xc8", + "Element;": "\u2208", + "Emacr;": "\u0112", + "EmptySmallSquare;": "\u25fb", + "EmptyVerySmallSquare;": "\u25ab", + "Eogon;": "\u0118", + "Eopf;": "\U0001d53c", + "Epsilon;": "\u0395", + "Equal;": "\u2a75", + "EqualTilde;": "\u2242", + "Equilibrium;": "\u21cc", + "Escr;": "\u2130", + "Esim;": "\u2a73", + "Eta;": "\u0397", + "Euml": "\xcb", + "Euml;": "\xcb", + "Exists;": "\u2203", + "ExponentialE;": "\u2147", + "Fcy;": "\u0424", + "Ffr;": "\U0001d509", + "FilledSmallSquare;": "\u25fc", + "FilledVerySmallSquare;": "\u25aa", + "Fopf;": "\U0001d53d", + "ForAll;": "\u2200", + "Fouriertrf;": "\u2131", + "Fscr;": "\u2131", + "GJcy;": "\u0403", + "GT": ">", + "GT;": ">", + "Gamma;": "\u0393", + "Gammad;": "\u03dc", + "Gbreve;": "\u011e", + "Gcedil;": "\u0122", + "Gcirc;": "\u011c", + "Gcy;": "\u0413", + "Gdot;": "\u0120", + "Gfr;": "\U0001d50a", + "Gg;": "\u22d9", + "Gopf;": "\U0001d53e", + "GreaterEqual;": "\u2265", + "GreaterEqualLess;": "\u22db", + "GreaterFullEqual;": "\u2267", + "GreaterGreater;": "\u2aa2", + "GreaterLess;": "\u2277", + "GreaterSlantEqual;": "\u2a7e", + "GreaterTilde;": "\u2273", + "Gscr;": "\U0001d4a2", + "Gt;": "\u226b", + "HARDcy;": "\u042a", + "Hacek;": "\u02c7", + "Hat;": "^", + "Hcirc;": "\u0124", + "Hfr;": "\u210c", + "HilbertSpace;": "\u210b", + "Hopf;": "\u210d", + "HorizontalLine;": "\u2500", + "Hscr;": "\u210b", + "Hstrok;": "\u0126", + "HumpDownHump;": "\u224e", + "HumpEqual;": "\u224f", + "IEcy;": "\u0415", + "IJlig;": "\u0132", + "IOcy;": "\u0401", + "Iacute": "\xcd", + "Iacute;": "\xcd", + "Icirc": "\xce", + "Icirc;": "\xce", + "Icy;": "\u0418", + "Idot;": "\u0130", + "Ifr;": "\u2111", + "Igrave": "\xcc", + "Igrave;": "\xcc", + "Im;": "\u2111", + "Imacr;": "\u012a", + "ImaginaryI;": "\u2148", + "Implies;": "\u21d2", + "Int;": "\u222c", + "Integral;": "\u222b", + "Intersection;": "\u22c2", + "InvisibleComma;": "\u2063", + "InvisibleTimes;": "\u2062", + "Iogon;": "\u012e", + "Iopf;": "\U0001d540", + "Iota;": "\u0399", + "Iscr;": "\u2110", + "Itilde;": "\u0128", + "Iukcy;": "\u0406", + "Iuml": "\xcf", + "Iuml;": "\xcf", + "Jcirc;": "\u0134", + "Jcy;": "\u0419", + "Jfr;": "\U0001d50d", + "Jopf;": "\U0001d541", + "Jscr;": "\U0001d4a5", + "Jsercy;": "\u0408", + "Jukcy;": "\u0404", + "KHcy;": "\u0425", + "KJcy;": "\u040c", + "Kappa;": "\u039a", + "Kcedil;": "\u0136", + "Kcy;": "\u041a", + "Kfr;": "\U0001d50e", + "Kopf;": "\U0001d542", + "Kscr;": "\U0001d4a6", + "LJcy;": "\u0409", + "LT": "<", + "LT;": "<", + "Lacute;": "\u0139", + "Lambda;": "\u039b", + "Lang;": "\u27ea", + "Laplacetrf;": "\u2112", + "Larr;": "\u219e", + "Lcaron;": "\u013d", + "Lcedil;": "\u013b", + "Lcy;": "\u041b", + "LeftAngleBracket;": "\u27e8", + "LeftArrow;": "\u2190", + "LeftArrowBar;": "\u21e4", + "LeftArrowRightArrow;": "\u21c6", + "LeftCeiling;": "\u2308", + "LeftDoubleBracket;": "\u27e6", + "LeftDownTeeVector;": "\u2961", + "LeftDownVector;": "\u21c3", + "LeftDownVectorBar;": "\u2959", + "LeftFloor;": "\u230a", + "LeftRightArrow;": "\u2194", + "LeftRightVector;": "\u294e", + "LeftTee;": "\u22a3", + "LeftTeeArrow;": "\u21a4", + "LeftTeeVector;": "\u295a", + "LeftTriangle;": "\u22b2", + "LeftTriangleBar;": "\u29cf", + "LeftTriangleEqual;": "\u22b4", + "LeftUpDownVector;": "\u2951", + "LeftUpTeeVector;": "\u2960", + "LeftUpVector;": "\u21bf", + "LeftUpVectorBar;": "\u2958", + "LeftVector;": "\u21bc", + "LeftVectorBar;": "\u2952", + "Leftarrow;": "\u21d0", + "Leftrightarrow;": "\u21d4", + "LessEqualGreater;": "\u22da", + "LessFullEqual;": "\u2266", + "LessGreater;": "\u2276", + "LessLess;": "\u2aa1", + "LessSlantEqual;": "\u2a7d", + "LessTilde;": "\u2272", + "Lfr;": "\U0001d50f", + "Ll;": "\u22d8", + "Lleftarrow;": "\u21da", + "Lmidot;": "\u013f", + "LongLeftArrow;": "\u27f5", + "LongLeftRightArrow;": "\u27f7", + "LongRightArrow;": "\u27f6", + "Longleftarrow;": "\u27f8", + "Longleftrightarrow;": "\u27fa", + "Longrightarrow;": "\u27f9", + "Lopf;": "\U0001d543", + "LowerLeftArrow;": "\u2199", + "LowerRightArrow;": "\u2198", + "Lscr;": "\u2112", + "Lsh;": "\u21b0", + "Lstrok;": "\u0141", + "Lt;": "\u226a", + "Map;": "\u2905", + "Mcy;": "\u041c", + "MediumSpace;": "\u205f", + "Mellintrf;": "\u2133", + "Mfr;": "\U0001d510", + "MinusPlus;": "\u2213", + "Mopf;": "\U0001d544", + "Mscr;": "\u2133", + "Mu;": "\u039c", + "NJcy;": "\u040a", + "Nacute;": "\u0143", + "Ncaron;": "\u0147", + "Ncedil;": "\u0145", + "Ncy;": "\u041d", + "NegativeMediumSpace;": "\u200b", + "NegativeThickSpace;": "\u200b", + "NegativeThinSpace;": "\u200b", + "NegativeVeryThinSpace;": "\u200b", + "NestedGreaterGreater;": "\u226b", + "NestedLessLess;": "\u226a", + "NewLine;": "\n", + "Nfr;": "\U0001d511", + "NoBreak;": "\u2060", + "NonBreakingSpace;": "\xa0", + "Nopf;": "\u2115", + "Not;": "\u2aec", + "NotCongruent;": "\u2262", + "NotCupCap;": "\u226d", + "NotDoubleVerticalBar;": "\u2226", + "NotElement;": "\u2209", + "NotEqual;": "\u2260", + "NotEqualTilde;": "\u2242\u0338", + "NotExists;": "\u2204", + "NotGreater;": "\u226f", + "NotGreaterEqual;": "\u2271", + "NotGreaterFullEqual;": "\u2267\u0338", + "NotGreaterGreater;": "\u226b\u0338", + "NotGreaterLess;": "\u2279", + "NotGreaterSlantEqual;": "\u2a7e\u0338", + "NotGreaterTilde;": "\u2275", + "NotHumpDownHump;": "\u224e\u0338", + "NotHumpEqual;": "\u224f\u0338", + "NotLeftTriangle;": "\u22ea", + "NotLeftTriangleBar;": "\u29cf\u0338", + "NotLeftTriangleEqual;": "\u22ec", + "NotLess;": "\u226e", + "NotLessEqual;": "\u2270", + "NotLessGreater;": "\u2278", + "NotLessLess;": "\u226a\u0338", + "NotLessSlantEqual;": "\u2a7d\u0338", + "NotLessTilde;": "\u2274", + "NotNestedGreaterGreater;": "\u2aa2\u0338", + "NotNestedLessLess;": "\u2aa1\u0338", + "NotPrecedes;": "\u2280", + "NotPrecedesEqual;": "\u2aaf\u0338", + "NotPrecedesSlantEqual;": "\u22e0", + "NotReverseElement;": "\u220c", + "NotRightTriangle;": "\u22eb", + "NotRightTriangleBar;": "\u29d0\u0338", + "NotRightTriangleEqual;": "\u22ed", + "NotSquareSubset;": "\u228f\u0338", + "NotSquareSubsetEqual;": "\u22e2", + "NotSquareSuperset;": "\u2290\u0338", + "NotSquareSupersetEqual;": "\u22e3", + "NotSubset;": "\u2282\u20d2", + "NotSubsetEqual;": "\u2288", + "NotSucceeds;": "\u2281", + "NotSucceedsEqual;": "\u2ab0\u0338", + "NotSucceedsSlantEqual;": "\u22e1", + "NotSucceedsTilde;": "\u227f\u0338", + "NotSuperset;": "\u2283\u20d2", + "NotSupersetEqual;": "\u2289", + "NotTilde;": "\u2241", + "NotTildeEqual;": "\u2244", + "NotTildeFullEqual;": "\u2247", + "NotTildeTilde;": "\u2249", + "NotVerticalBar;": "\u2224", + "Nscr;": "\U0001d4a9", + "Ntilde": "\xd1", + "Ntilde;": "\xd1", + "Nu;": "\u039d", + "OElig;": "\u0152", + "Oacute": "\xd3", + "Oacute;": "\xd3", + "Ocirc": "\xd4", + "Ocirc;": "\xd4", + "Ocy;": "\u041e", + "Odblac;": "\u0150", + "Ofr;": "\U0001d512", + "Ograve": "\xd2", + "Ograve;": "\xd2", + "Omacr;": "\u014c", + "Omega;": "\u03a9", + "Omicron;": "\u039f", + "Oopf;": "\U0001d546", + "OpenCurlyDoubleQuote;": "\u201c", + "OpenCurlyQuote;": "\u2018", + "Or;": "\u2a54", + "Oscr;": "\U0001d4aa", + "Oslash": "\xd8", + "Oslash;": "\xd8", + "Otilde": "\xd5", + "Otilde;": "\xd5", + "Otimes;": "\u2a37", + "Ouml": "\xd6", + "Ouml;": "\xd6", + "OverBar;": "\u203e", + "OverBrace;": "\u23de", + "OverBracket;": "\u23b4", + "OverParenthesis;": "\u23dc", + "PartialD;": "\u2202", + "Pcy;": "\u041f", + "Pfr;": "\U0001d513", + "Phi;": "\u03a6", + "Pi;": "\u03a0", + "PlusMinus;": "\xb1", + "Poincareplane;": "\u210c", + "Popf;": "\u2119", + "Pr;": "\u2abb", + "Precedes;": "\u227a", + "PrecedesEqual;": "\u2aaf", + "PrecedesSlantEqual;": "\u227c", + "PrecedesTilde;": "\u227e", + "Prime;": "\u2033", + "Product;": "\u220f", + "Proportion;": "\u2237", + "Proportional;": "\u221d", + "Pscr;": "\U0001d4ab", + "Psi;": "\u03a8", + "QUOT": "\"", + "QUOT;": "\"", + "Qfr;": "\U0001d514", + "Qopf;": "\u211a", + "Qscr;": "\U0001d4ac", + "RBarr;": "\u2910", + "REG": "\xae", + "REG;": "\xae", + "Racute;": "\u0154", + "Rang;": "\u27eb", + "Rarr;": "\u21a0", + "Rarrtl;": "\u2916", + "Rcaron;": "\u0158", + "Rcedil;": "\u0156", + "Rcy;": "\u0420", + "Re;": "\u211c", + "ReverseElement;": "\u220b", + "ReverseEquilibrium;": "\u21cb", + "ReverseUpEquilibrium;": "\u296f", + "Rfr;": "\u211c", + "Rho;": "\u03a1", + "RightAngleBracket;": "\u27e9", + "RightArrow;": "\u2192", + "RightArrowBar;": "\u21e5", + "RightArrowLeftArrow;": "\u21c4", + "RightCeiling;": "\u2309", + "RightDoubleBracket;": "\u27e7", + "RightDownTeeVector;": "\u295d", + "RightDownVector;": "\u21c2", + "RightDownVectorBar;": "\u2955", + "RightFloor;": "\u230b", + "RightTee;": "\u22a2", + "RightTeeArrow;": "\u21a6", + "RightTeeVector;": "\u295b", + "RightTriangle;": "\u22b3", + "RightTriangleBar;": "\u29d0", + "RightTriangleEqual;": "\u22b5", + "RightUpDownVector;": "\u294f", + "RightUpTeeVector;": "\u295c", + "RightUpVector;": "\u21be", + "RightUpVectorBar;": "\u2954", + "RightVector;": "\u21c0", + "RightVectorBar;": "\u2953", + "Rightarrow;": "\u21d2", + "Ropf;": "\u211d", + "RoundImplies;": "\u2970", + "Rrightarrow;": "\u21db", + "Rscr;": "\u211b", + "Rsh;": "\u21b1", + "RuleDelayed;": "\u29f4", + "SHCHcy;": "\u0429", + "SHcy;": "\u0428", + "SOFTcy;": "\u042c", + "Sacute;": "\u015a", + "Sc;": "\u2abc", + "Scaron;": "\u0160", + "Scedil;": "\u015e", + "Scirc;": "\u015c", + "Scy;": "\u0421", + "Sfr;": "\U0001d516", + "ShortDownArrow;": "\u2193", + "ShortLeftArrow;": "\u2190", + "ShortRightArrow;": "\u2192", + "ShortUpArrow;": "\u2191", + "Sigma;": "\u03a3", + "SmallCircle;": "\u2218", + "Sopf;": "\U0001d54a", + "Sqrt;": "\u221a", + "Square;": "\u25a1", + "SquareIntersection;": "\u2293", + "SquareSubset;": "\u228f", + "SquareSubsetEqual;": "\u2291", + "SquareSuperset;": "\u2290", + "SquareSupersetEqual;": "\u2292", + "SquareUnion;": "\u2294", + "Sscr;": "\U0001d4ae", + "Star;": "\u22c6", + "Sub;": "\u22d0", + "Subset;": "\u22d0", + "SubsetEqual;": "\u2286", + "Succeeds;": "\u227b", + "SucceedsEqual;": "\u2ab0", + "SucceedsSlantEqual;": "\u227d", + "SucceedsTilde;": "\u227f", + "SuchThat;": "\u220b", + "Sum;": "\u2211", + "Sup;": "\u22d1", + "Superset;": "\u2283", + "SupersetEqual;": "\u2287", + "Supset;": "\u22d1", + "THORN": "\xde", + "THORN;": "\xde", + "TRADE;": "\u2122", + "TSHcy;": "\u040b", + "TScy;": "\u0426", + "Tab;": "\t", + "Tau;": "\u03a4", + "Tcaron;": "\u0164", + "Tcedil;": "\u0162", + "Tcy;": "\u0422", + "Tfr;": "\U0001d517", + "Therefore;": "\u2234", + "Theta;": "\u0398", + "ThickSpace;": "\u205f\u200a", + "ThinSpace;": "\u2009", + "Tilde;": "\u223c", + "TildeEqual;": "\u2243", + "TildeFullEqual;": "\u2245", + "TildeTilde;": "\u2248", + "Topf;": "\U0001d54b", + "TripleDot;": "\u20db", + "Tscr;": "\U0001d4af", + "Tstrok;": "\u0166", + "Uacute": "\xda", + "Uacute;": "\xda", + "Uarr;": "\u219f", + "Uarrocir;": "\u2949", + "Ubrcy;": "\u040e", + "Ubreve;": "\u016c", + "Ucirc": "\xdb", + "Ucirc;": "\xdb", + "Ucy;": "\u0423", + "Udblac;": "\u0170", + "Ufr;": "\U0001d518", + "Ugrave": "\xd9", + "Ugrave;": "\xd9", + "Umacr;": "\u016a", + "UnderBar;": "_", + "UnderBrace;": "\u23df", + "UnderBracket;": "\u23b5", + "UnderParenthesis;": "\u23dd", + "Union;": "\u22c3", + "UnionPlus;": "\u228e", + "Uogon;": "\u0172", + "Uopf;": "\U0001d54c", + "UpArrow;": "\u2191", + "UpArrowBar;": "\u2912", + "UpArrowDownArrow;": "\u21c5", + "UpDownArrow;": "\u2195", + "UpEquilibrium;": "\u296e", + "UpTee;": "\u22a5", + "UpTeeArrow;": "\u21a5", + "Uparrow;": "\u21d1", + "Updownarrow;": "\u21d5", + "UpperLeftArrow;": "\u2196", + "UpperRightArrow;": "\u2197", + "Upsi;": "\u03d2", + "Upsilon;": "\u03a5", + "Uring;": "\u016e", + "Uscr;": "\U0001d4b0", + "Utilde;": "\u0168", + "Uuml": "\xdc", + "Uuml;": "\xdc", + "VDash;": "\u22ab", + "Vbar;": "\u2aeb", + "Vcy;": "\u0412", + "Vdash;": "\u22a9", + "Vdashl;": "\u2ae6", + "Vee;": "\u22c1", + "Verbar;": "\u2016", + "Vert;": "\u2016", + "VerticalBar;": "\u2223", + "VerticalLine;": "|", + "VerticalSeparator;": "\u2758", + "VerticalTilde;": "\u2240", + "VeryThinSpace;": "\u200a", + "Vfr;": "\U0001d519", + "Vopf;": "\U0001d54d", + "Vscr;": "\U0001d4b1", + "Vvdash;": "\u22aa", + "Wcirc;": "\u0174", + "Wedge;": "\u22c0", + "Wfr;": "\U0001d51a", + "Wopf;": "\U0001d54e", + "Wscr;": "\U0001d4b2", + "Xfr;": "\U0001d51b", + "Xi;": "\u039e", + "Xopf;": "\U0001d54f", + "Xscr;": "\U0001d4b3", + "YAcy;": "\u042f", + "YIcy;": "\u0407", + "YUcy;": "\u042e", + "Yacute": "\xdd", + "Yacute;": "\xdd", + "Ycirc;": "\u0176", + "Ycy;": "\u042b", + "Yfr;": "\U0001d51c", + "Yopf;": "\U0001d550", + "Yscr;": "\U0001d4b4", + "Yuml;": "\u0178", + "ZHcy;": "\u0416", + "Zacute;": "\u0179", + "Zcaron;": "\u017d", + "Zcy;": "\u0417", + "Zdot;": "\u017b", + "ZeroWidthSpace;": "\u200b", + "Zeta;": "\u0396", + "Zfr;": "\u2128", + "Zopf;": "\u2124", + "Zscr;": "\U0001d4b5", + "aacute": "\xe1", + "aacute;": "\xe1", + "abreve;": "\u0103", + "ac;": "\u223e", + "acE;": "\u223e\u0333", + "acd;": "\u223f", + "acirc": "\xe2", + "acirc;": "\xe2", + "acute": "\xb4", + "acute;": "\xb4", + "acy;": "\u0430", + "aelig": "\xe6", + "aelig;": "\xe6", + "af;": "\u2061", + "afr;": "\U0001d51e", + "agrave": "\xe0", + "agrave;": "\xe0", + "alefsym;": "\u2135", + "aleph;": "\u2135", + "alpha;": "\u03b1", + "amacr;": "\u0101", + "amalg;": "\u2a3f", + "amp": "&", + "amp;": "&", + "and;": "\u2227", + "andand;": "\u2a55", + "andd;": "\u2a5c", + "andslope;": "\u2a58", + "andv;": "\u2a5a", + "ang;": "\u2220", + "ange;": "\u29a4", + "angle;": "\u2220", + "angmsd;": "\u2221", + "angmsdaa;": "\u29a8", + "angmsdab;": "\u29a9", + "angmsdac;": "\u29aa", + "angmsdad;": "\u29ab", + "angmsdae;": "\u29ac", + "angmsdaf;": "\u29ad", + "angmsdag;": "\u29ae", + "angmsdah;": "\u29af", + "angrt;": "\u221f", + "angrtvb;": "\u22be", + "angrtvbd;": "\u299d", + "angsph;": "\u2222", + "angst;": "\xc5", + "angzarr;": "\u237c", + "aogon;": "\u0105", + "aopf;": "\U0001d552", + "ap;": "\u2248", + "apE;": "\u2a70", + "apacir;": "\u2a6f", + "ape;": "\u224a", + "apid;": "\u224b", + "apos;": "'", + "approx;": "\u2248", + "approxeq;": "\u224a", + "aring": "\xe5", + "aring;": "\xe5", + "ascr;": "\U0001d4b6", + "ast;": "*", + "asymp;": "\u2248", + "asympeq;": "\u224d", + "atilde": "\xe3", + "atilde;": "\xe3", + "auml": "\xe4", + "auml;": "\xe4", + "awconint;": "\u2233", + "awint;": "\u2a11", + "bNot;": "\u2aed", + "backcong;": "\u224c", + "backepsilon;": "\u03f6", + "backprime;": "\u2035", + "backsim;": "\u223d", + "backsimeq;": "\u22cd", + "barvee;": "\u22bd", + "barwed;": "\u2305", + "barwedge;": "\u2305", + "bbrk;": "\u23b5", + "bbrktbrk;": "\u23b6", + "bcong;": "\u224c", + "bcy;": "\u0431", + "bdquo;": "\u201e", + "becaus;": "\u2235", + "because;": "\u2235", + "bemptyv;": "\u29b0", + "bepsi;": "\u03f6", + "bernou;": "\u212c", + "beta;": "\u03b2", + "beth;": "\u2136", + "between;": "\u226c", + "bfr;": "\U0001d51f", + "bigcap;": "\u22c2", + "bigcirc;": "\u25ef", + "bigcup;": "\u22c3", + "bigodot;": "\u2a00", + "bigoplus;": "\u2a01", + "bigotimes;": "\u2a02", + "bigsqcup;": "\u2a06", + "bigstar;": "\u2605", + "bigtriangledown;": "\u25bd", + "bigtriangleup;": "\u25b3", + "biguplus;": "\u2a04", + "bigvee;": "\u22c1", + "bigwedge;": "\u22c0", + "bkarow;": "\u290d", + "blacklozenge;": "\u29eb", + "blacksquare;": "\u25aa", + "blacktriangle;": "\u25b4", + "blacktriangledown;": "\u25be", + "blacktriangleleft;": "\u25c2", + "blacktriangleright;": "\u25b8", + "blank;": "\u2423", + "blk12;": "\u2592", + "blk14;": "\u2591", + "blk34;": "\u2593", + "block;": "\u2588", + "bne;": "=\u20e5", + "bnequiv;": "\u2261\u20e5", + "bnot;": "\u2310", + "bopf;": "\U0001d553", + "bot;": "\u22a5", + "bottom;": "\u22a5", + "bowtie;": "\u22c8", + "boxDL;": "\u2557", + "boxDR;": "\u2554", + "boxDl;": "\u2556", + "boxDr;": "\u2553", + "boxH;": "\u2550", + "boxHD;": "\u2566", + "boxHU;": "\u2569", + "boxHd;": "\u2564", + "boxHu;": "\u2567", + "boxUL;": "\u255d", + "boxUR;": "\u255a", + "boxUl;": "\u255c", + "boxUr;": "\u2559", + "boxV;": "\u2551", + "boxVH;": "\u256c", + "boxVL;": "\u2563", + "boxVR;": "\u2560", + "boxVh;": "\u256b", + "boxVl;": "\u2562", + "boxVr;": "\u255f", + "boxbox;": "\u29c9", + "boxdL;": "\u2555", + "boxdR;": "\u2552", + "boxdl;": "\u2510", + "boxdr;": "\u250c", + "boxh;": "\u2500", + "boxhD;": "\u2565", + "boxhU;": "\u2568", + "boxhd;": "\u252c", + "boxhu;": "\u2534", + "boxminus;": "\u229f", + "boxplus;": "\u229e", + "boxtimes;": "\u22a0", + "boxuL;": "\u255b", + "boxuR;": "\u2558", + "boxul;": "\u2518", + "boxur;": "\u2514", + "boxv;": "\u2502", + "boxvH;": "\u256a", + "boxvL;": "\u2561", + "boxvR;": "\u255e", + "boxvh;": "\u253c", + "boxvl;": "\u2524", + "boxvr;": "\u251c", + "bprime;": "\u2035", + "breve;": "\u02d8", + "brvbar": "\xa6", + "brvbar;": "\xa6", + "bscr;": "\U0001d4b7", + "bsemi;": "\u204f", + "bsim;": "\u223d", + "bsime;": "\u22cd", + "bsol;": "\\", + "bsolb;": "\u29c5", + "bsolhsub;": "\u27c8", + "bull;": "\u2022", + "bullet;": "\u2022", + "bump;": "\u224e", + "bumpE;": "\u2aae", + "bumpe;": "\u224f", + "bumpeq;": "\u224f", + "cacute;": "\u0107", + "cap;": "\u2229", + "capand;": "\u2a44", + "capbrcup;": "\u2a49", + "capcap;": "\u2a4b", + "capcup;": "\u2a47", + "capdot;": "\u2a40", + "caps;": "\u2229\ufe00", + "caret;": "\u2041", + "caron;": "\u02c7", + "ccaps;": "\u2a4d", + "ccaron;": "\u010d", + "ccedil": "\xe7", + "ccedil;": "\xe7", + "ccirc;": "\u0109", + "ccups;": "\u2a4c", + "ccupssm;": "\u2a50", + "cdot;": "\u010b", + "cedil": "\xb8", + "cedil;": "\xb8", + "cemptyv;": "\u29b2", + "cent": "\xa2", + "cent;": "\xa2", + "centerdot;": "\xb7", + "cfr;": "\U0001d520", + "chcy;": "\u0447", + "check;": "\u2713", + "checkmark;": "\u2713", + "chi;": "\u03c7", + "cir;": "\u25cb", + "cirE;": "\u29c3", + "circ;": "\u02c6", + "circeq;": "\u2257", + "circlearrowleft;": "\u21ba", + "circlearrowright;": "\u21bb", + "circledR;": "\xae", + "circledS;": "\u24c8", + "circledast;": "\u229b", + "circledcirc;": "\u229a", + "circleddash;": "\u229d", + "cire;": "\u2257", + "cirfnint;": "\u2a10", + "cirmid;": "\u2aef", + "cirscir;": "\u29c2", + "clubs;": "\u2663", + "clubsuit;": "\u2663", + "colon;": ":", + "colone;": "\u2254", + "coloneq;": "\u2254", + "comma;": ",", + "commat;": "@", + "comp;": "\u2201", + "compfn;": "\u2218", + "complement;": "\u2201", + "complexes;": "\u2102", + "cong;": "\u2245", + "congdot;": "\u2a6d", + "conint;": "\u222e", + "copf;": "\U0001d554", + "coprod;": "\u2210", + "copy": "\xa9", + "copy;": "\xa9", + "copysr;": "\u2117", + "crarr;": "\u21b5", + "cross;": "\u2717", + "cscr;": "\U0001d4b8", + "csub;": "\u2acf", + "csube;": "\u2ad1", + "csup;": "\u2ad0", + "csupe;": "\u2ad2", + "ctdot;": "\u22ef", + "cudarrl;": "\u2938", + "cudarrr;": "\u2935", + "cuepr;": "\u22de", + "cuesc;": "\u22df", + "cularr;": "\u21b6", + "cularrp;": "\u293d", + "cup;": "\u222a", + "cupbrcap;": "\u2a48", + "cupcap;": "\u2a46", + "cupcup;": "\u2a4a", + "cupdot;": "\u228d", + "cupor;": "\u2a45", + "cups;": "\u222a\ufe00", + "curarr;": "\u21b7", + "curarrm;": "\u293c", + "curlyeqprec;": "\u22de", + "curlyeqsucc;": "\u22df", + "curlyvee;": "\u22ce", + "curlywedge;": "\u22cf", + "curren": "\xa4", + "curren;": "\xa4", + "curvearrowleft;": "\u21b6", + "curvearrowright;": "\u21b7", + "cuvee;": "\u22ce", + "cuwed;": "\u22cf", + "cwconint;": "\u2232", + "cwint;": "\u2231", + "cylcty;": "\u232d", + "dArr;": "\u21d3", + "dHar;": "\u2965", + "dagger;": "\u2020", + "daleth;": "\u2138", + "darr;": "\u2193", + "dash;": "\u2010", + "dashv;": "\u22a3", + "dbkarow;": "\u290f", + "dblac;": "\u02dd", + "dcaron;": "\u010f", + "dcy;": "\u0434", + "dd;": "\u2146", + "ddagger;": "\u2021", + "ddarr;": "\u21ca", + "ddotseq;": "\u2a77", + "deg": "\xb0", + "deg;": "\xb0", + "delta;": "\u03b4", + "demptyv;": "\u29b1", + "dfisht;": "\u297f", + "dfr;": "\U0001d521", + "dharl;": "\u21c3", + "dharr;": "\u21c2", + "diam;": "\u22c4", + "diamond;": "\u22c4", + "diamondsuit;": "\u2666", + "diams;": "\u2666", + "die;": "\xa8", + "digamma;": "\u03dd", + "disin;": "\u22f2", + "div;": "\xf7", + "divide": "\xf7", + "divide;": "\xf7", + "divideontimes;": "\u22c7", + "divonx;": "\u22c7", + "djcy;": "\u0452", + "dlcorn;": "\u231e", + "dlcrop;": "\u230d", + "dollar;": "$", + "dopf;": "\U0001d555", + "dot;": "\u02d9", + "doteq;": "\u2250", + "doteqdot;": "\u2251", + "dotminus;": "\u2238", + "dotplus;": "\u2214", + "dotsquare;": "\u22a1", + "doublebarwedge;": "\u2306", + "downarrow;": "\u2193", + "downdownarrows;": "\u21ca", + "downharpoonleft;": "\u21c3", + "downharpoonright;": "\u21c2", + "drbkarow;": "\u2910", + "drcorn;": "\u231f", + "drcrop;": "\u230c", + "dscr;": "\U0001d4b9", + "dscy;": "\u0455", + "dsol;": "\u29f6", + "dstrok;": "\u0111", + "dtdot;": "\u22f1", + "dtri;": "\u25bf", + "dtrif;": "\u25be", + "duarr;": "\u21f5", + "duhar;": "\u296f", + "dwangle;": "\u29a6", + "dzcy;": "\u045f", + "dzigrarr;": "\u27ff", + "eDDot;": "\u2a77", + "eDot;": "\u2251", + "eacute": "\xe9", + "eacute;": "\xe9", + "easter;": "\u2a6e", + "ecaron;": "\u011b", + "ecir;": "\u2256", + "ecirc": "\xea", + "ecirc;": "\xea", + "ecolon;": "\u2255", + "ecy;": "\u044d", + "edot;": "\u0117", + "ee;": "\u2147", + "efDot;": "\u2252", + "efr;": "\U0001d522", + "eg;": "\u2a9a", + "egrave": "\xe8", + "egrave;": "\xe8", + "egs;": "\u2a96", + "egsdot;": "\u2a98", + "el;": "\u2a99", + "elinters;": "\u23e7", + "ell;": "\u2113", + "els;": "\u2a95", + "elsdot;": "\u2a97", + "emacr;": "\u0113", + "empty;": "\u2205", + "emptyset;": "\u2205", + "emptyv;": "\u2205", + "emsp13;": "\u2004", + "emsp14;": "\u2005", + "emsp;": "\u2003", + "eng;": "\u014b", + "ensp;": "\u2002", + "eogon;": "\u0119", + "eopf;": "\U0001d556", + "epar;": "\u22d5", + "eparsl;": "\u29e3", + "eplus;": "\u2a71", + "epsi;": "\u03b5", + "epsilon;": "\u03b5", + "epsiv;": "\u03f5", + "eqcirc;": "\u2256", + "eqcolon;": "\u2255", + "eqsim;": "\u2242", + "eqslantgtr;": "\u2a96", + "eqslantless;": "\u2a95", + "equals;": "=", + "equest;": "\u225f", + "equiv;": "\u2261", + "equivDD;": "\u2a78", + "eqvparsl;": "\u29e5", + "erDot;": "\u2253", + "erarr;": "\u2971", + "escr;": "\u212f", + "esdot;": "\u2250", + "esim;": "\u2242", + "eta;": "\u03b7", + "eth": "\xf0", + "eth;": "\xf0", + "euml": "\xeb", + "euml;": "\xeb", + "euro;": "\u20ac", + "excl;": "!", + "exist;": "\u2203", + "expectation;": "\u2130", + "exponentiale;": "\u2147", + "fallingdotseq;": "\u2252", + "fcy;": "\u0444", + "female;": "\u2640", + "ffilig;": "\ufb03", + "fflig;": "\ufb00", + "ffllig;": "\ufb04", + "ffr;": "\U0001d523", + "filig;": "\ufb01", + "fjlig;": "fj", + "flat;": "\u266d", + "fllig;": "\ufb02", + "fltns;": "\u25b1", + "fnof;": "\u0192", + "fopf;": "\U0001d557", + "forall;": "\u2200", + "fork;": "\u22d4", + "forkv;": "\u2ad9", + "fpartint;": "\u2a0d", + "frac12": "\xbd", + "frac12;": "\xbd", + "frac13;": "\u2153", + "frac14": "\xbc", + "frac14;": "\xbc", + "frac15;": "\u2155", + "frac16;": "\u2159", + "frac18;": "\u215b", + "frac23;": "\u2154", + "frac25;": "\u2156", + "frac34": "\xbe", + "frac34;": "\xbe", + "frac35;": "\u2157", + "frac38;": "\u215c", + "frac45;": "\u2158", + "frac56;": "\u215a", + "frac58;": "\u215d", + "frac78;": "\u215e", + "frasl;": "\u2044", + "frown;": "\u2322", + "fscr;": "\U0001d4bb", + "gE;": "\u2267", + "gEl;": "\u2a8c", + "gacute;": "\u01f5", + "gamma;": "\u03b3", + "gammad;": "\u03dd", + "gap;": "\u2a86", + "gbreve;": "\u011f", + "gcirc;": "\u011d", + "gcy;": "\u0433", + "gdot;": "\u0121", + "ge;": "\u2265", + "gel;": "\u22db", + "geq;": "\u2265", + "geqq;": "\u2267", + "geqslant;": "\u2a7e", + "ges;": "\u2a7e", + "gescc;": "\u2aa9", + "gesdot;": "\u2a80", + "gesdoto;": "\u2a82", + "gesdotol;": "\u2a84", + "gesl;": "\u22db\ufe00", + "gesles;": "\u2a94", + "gfr;": "\U0001d524", + "gg;": "\u226b", + "ggg;": "\u22d9", + "gimel;": "\u2137", + "gjcy;": "\u0453", + "gl;": "\u2277", + "glE;": "\u2a92", + "gla;": "\u2aa5", + "glj;": "\u2aa4", + "gnE;": "\u2269", + "gnap;": "\u2a8a", + "gnapprox;": "\u2a8a", + "gne;": "\u2a88", + "gneq;": "\u2a88", + "gneqq;": "\u2269", + "gnsim;": "\u22e7", + "gopf;": "\U0001d558", + "grave;": "`", + "gscr;": "\u210a", + "gsim;": "\u2273", + "gsime;": "\u2a8e", + "gsiml;": "\u2a90", + "gt": ">", + "gt;": ">", + "gtcc;": "\u2aa7", + "gtcir;": "\u2a7a", + "gtdot;": "\u22d7", + "gtlPar;": "\u2995", + "gtquest;": "\u2a7c", + "gtrapprox;": "\u2a86", + "gtrarr;": "\u2978", + "gtrdot;": "\u22d7", + "gtreqless;": "\u22db", + "gtreqqless;": "\u2a8c", + "gtrless;": "\u2277", + "gtrsim;": "\u2273", + "gvertneqq;": "\u2269\ufe00", + "gvnE;": "\u2269\ufe00", + "hArr;": "\u21d4", + "hairsp;": "\u200a", + "half;": "\xbd", + "hamilt;": "\u210b", + "hardcy;": "\u044a", + "harr;": "\u2194", + "harrcir;": "\u2948", + "harrw;": "\u21ad", + "hbar;": "\u210f", + "hcirc;": "\u0125", + "hearts;": "\u2665", + "heartsuit;": "\u2665", + "hellip;": "\u2026", + "hercon;": "\u22b9", + "hfr;": "\U0001d525", + "hksearow;": "\u2925", + "hkswarow;": "\u2926", + "hoarr;": "\u21ff", + "homtht;": "\u223b", + "hookleftarrow;": "\u21a9", + "hookrightarrow;": "\u21aa", + "hopf;": "\U0001d559", + "horbar;": "\u2015", + "hscr;": "\U0001d4bd", + "hslash;": "\u210f", + "hstrok;": "\u0127", + "hybull;": "\u2043", + "hyphen;": "\u2010", + "iacute": "\xed", + "iacute;": "\xed", + "ic;": "\u2063", + "icirc": "\xee", + "icirc;": "\xee", + "icy;": "\u0438", + "iecy;": "\u0435", + "iexcl": "\xa1", + "iexcl;": "\xa1", + "iff;": "\u21d4", + "ifr;": "\U0001d526", + "igrave": "\xec", + "igrave;": "\xec", + "ii;": "\u2148", + "iiiint;": "\u2a0c", + "iiint;": "\u222d", + "iinfin;": "\u29dc", + "iiota;": "\u2129", + "ijlig;": "\u0133", + "imacr;": "\u012b", + "image;": "\u2111", + "imagline;": "\u2110", + "imagpart;": "\u2111", + "imath;": "\u0131", + "imof;": "\u22b7", + "imped;": "\u01b5", + "in;": "\u2208", + "incare;": "\u2105", + "infin;": "\u221e", + "infintie;": "\u29dd", + "inodot;": "\u0131", + "int;": "\u222b", + "intcal;": "\u22ba", + "integers;": "\u2124", + "intercal;": "\u22ba", + "intlarhk;": "\u2a17", + "intprod;": "\u2a3c", + "iocy;": "\u0451", + "iogon;": "\u012f", + "iopf;": "\U0001d55a", + "iota;": "\u03b9", + "iprod;": "\u2a3c", + "iquest": "\xbf", + "iquest;": "\xbf", + "iscr;": "\U0001d4be", + "isin;": "\u2208", + "isinE;": "\u22f9", + "isindot;": "\u22f5", + "isins;": "\u22f4", + "isinsv;": "\u22f3", + "isinv;": "\u2208", + "it;": "\u2062", + "itilde;": "\u0129", + "iukcy;": "\u0456", + "iuml": "\xef", + "iuml;": "\xef", + "jcirc;": "\u0135", + "jcy;": "\u0439", + "jfr;": "\U0001d527", + "jmath;": "\u0237", + "jopf;": "\U0001d55b", + "jscr;": "\U0001d4bf", + "jsercy;": "\u0458", + "jukcy;": "\u0454", + "kappa;": "\u03ba", + "kappav;": "\u03f0", + "kcedil;": "\u0137", + "kcy;": "\u043a", + "kfr;": "\U0001d528", + "kgreen;": "\u0138", + "khcy;": "\u0445", + "kjcy;": "\u045c", + "kopf;": "\U0001d55c", + "kscr;": "\U0001d4c0", + "lAarr;": "\u21da", + "lArr;": "\u21d0", + "lAtail;": "\u291b", + "lBarr;": "\u290e", + "lE;": "\u2266", + "lEg;": "\u2a8b", + "lHar;": "\u2962", + "lacute;": "\u013a", + "laemptyv;": "\u29b4", + "lagran;": "\u2112", + "lambda;": "\u03bb", + "lang;": "\u27e8", + "langd;": "\u2991", + "langle;": "\u27e8", + "lap;": "\u2a85", + "laquo": "\xab", + "laquo;": "\xab", + "larr;": "\u2190", + "larrb;": "\u21e4", + "larrbfs;": "\u291f", + "larrfs;": "\u291d", + "larrhk;": "\u21a9", + "larrlp;": "\u21ab", + "larrpl;": "\u2939", + "larrsim;": "\u2973", + "larrtl;": "\u21a2", + "lat;": "\u2aab", + "latail;": "\u2919", + "late;": "\u2aad", + "lates;": "\u2aad\ufe00", + "lbarr;": "\u290c", + "lbbrk;": "\u2772", + "lbrace;": "{", + "lbrack;": "[", + "lbrke;": "\u298b", + "lbrksld;": "\u298f", + "lbrkslu;": "\u298d", + "lcaron;": "\u013e", + "lcedil;": "\u013c", + "lceil;": "\u2308", + "lcub;": "{", + "lcy;": "\u043b", + "ldca;": "\u2936", + "ldquo;": "\u201c", + "ldquor;": "\u201e", + "ldrdhar;": "\u2967", + "ldrushar;": "\u294b", + "ldsh;": "\u21b2", + "le;": "\u2264", + "leftarrow;": "\u2190", + "leftarrowtail;": "\u21a2", + "leftharpoondown;": "\u21bd", + "leftharpoonup;": "\u21bc", + "leftleftarrows;": "\u21c7", + "leftrightarrow;": "\u2194", + "leftrightarrows;": "\u21c6", + "leftrightharpoons;": "\u21cb", + "leftrightsquigarrow;": "\u21ad", + "leftthreetimes;": "\u22cb", + "leg;": "\u22da", + "leq;": "\u2264", + "leqq;": "\u2266", + "leqslant;": "\u2a7d", + "les;": "\u2a7d", + "lescc;": "\u2aa8", + "lesdot;": "\u2a7f", + "lesdoto;": "\u2a81", + "lesdotor;": "\u2a83", + "lesg;": "\u22da\ufe00", + "lesges;": "\u2a93", + "lessapprox;": "\u2a85", + "lessdot;": "\u22d6", + "lesseqgtr;": "\u22da", + "lesseqqgtr;": "\u2a8b", + "lessgtr;": "\u2276", + "lesssim;": "\u2272", + "lfisht;": "\u297c", + "lfloor;": "\u230a", + "lfr;": "\U0001d529", + "lg;": "\u2276", + "lgE;": "\u2a91", + "lhard;": "\u21bd", + "lharu;": "\u21bc", + "lharul;": "\u296a", + "lhblk;": "\u2584", + "ljcy;": "\u0459", + "ll;": "\u226a", + "llarr;": "\u21c7", + "llcorner;": "\u231e", + "llhard;": "\u296b", + "lltri;": "\u25fa", + "lmidot;": "\u0140", + "lmoust;": "\u23b0", + "lmoustache;": "\u23b0", + "lnE;": "\u2268", + "lnap;": "\u2a89", + "lnapprox;": "\u2a89", + "lne;": "\u2a87", + "lneq;": "\u2a87", + "lneqq;": "\u2268", + "lnsim;": "\u22e6", + "loang;": "\u27ec", + "loarr;": "\u21fd", + "lobrk;": "\u27e6", + "longleftarrow;": "\u27f5", + "longleftrightarrow;": "\u27f7", + "longmapsto;": "\u27fc", + "longrightarrow;": "\u27f6", + "looparrowleft;": "\u21ab", + "looparrowright;": "\u21ac", + "lopar;": "\u2985", + "lopf;": "\U0001d55d", + "loplus;": "\u2a2d", + "lotimes;": "\u2a34", + "lowast;": "\u2217", + "lowbar;": "_", + "loz;": "\u25ca", + "lozenge;": "\u25ca", + "lozf;": "\u29eb", + "lpar;": "(", + "lparlt;": "\u2993", + "lrarr;": "\u21c6", + "lrcorner;": "\u231f", + "lrhar;": "\u21cb", + "lrhard;": "\u296d", + "lrm;": "\u200e", + "lrtri;": "\u22bf", + "lsaquo;": "\u2039", + "lscr;": "\U0001d4c1", + "lsh;": "\u21b0", + "lsim;": "\u2272", + "lsime;": "\u2a8d", + "lsimg;": "\u2a8f", + "lsqb;": "[", + "lsquo;": "\u2018", + "lsquor;": "\u201a", + "lstrok;": "\u0142", + "lt": "<", + "lt;": "<", + "ltcc;": "\u2aa6", + "ltcir;": "\u2a79", + "ltdot;": "\u22d6", + "lthree;": "\u22cb", + "ltimes;": "\u22c9", + "ltlarr;": "\u2976", + "ltquest;": "\u2a7b", + "ltrPar;": "\u2996", + "ltri;": "\u25c3", + "ltrie;": "\u22b4", + "ltrif;": "\u25c2", + "lurdshar;": "\u294a", + "luruhar;": "\u2966", + "lvertneqq;": "\u2268\ufe00", + "lvnE;": "\u2268\ufe00", + "mDDot;": "\u223a", + "macr": "\xaf", + "macr;": "\xaf", + "male;": "\u2642", + "malt;": "\u2720", + "maltese;": "\u2720", + "map;": "\u21a6", + "mapsto;": "\u21a6", + "mapstodown;": "\u21a7", + "mapstoleft;": "\u21a4", + "mapstoup;": "\u21a5", + "marker;": "\u25ae", + "mcomma;": "\u2a29", + "mcy;": "\u043c", + "mdash;": "\u2014", + "measuredangle;": "\u2221", + "mfr;": "\U0001d52a", + "mho;": "\u2127", + "micro": "\xb5", + "micro;": "\xb5", + "mid;": "\u2223", + "midast;": "*", + "midcir;": "\u2af0", + "middot": "\xb7", + "middot;": "\xb7", + "minus;": "\u2212", + "minusb;": "\u229f", + "minusd;": "\u2238", + "minusdu;": "\u2a2a", + "mlcp;": "\u2adb", + "mldr;": "\u2026", + "mnplus;": "\u2213", + "models;": "\u22a7", + "mopf;": "\U0001d55e", + "mp;": "\u2213", + "mscr;": "\U0001d4c2", + "mstpos;": "\u223e", + "mu;": "\u03bc", + "multimap;": "\u22b8", + "mumap;": "\u22b8", + "nGg;": "\u22d9\u0338", + "nGt;": "\u226b\u20d2", + "nGtv;": "\u226b\u0338", + "nLeftarrow;": "\u21cd", + "nLeftrightarrow;": "\u21ce", + "nLl;": "\u22d8\u0338", + "nLt;": "\u226a\u20d2", + "nLtv;": "\u226a\u0338", + "nRightarrow;": "\u21cf", + "nVDash;": "\u22af", + "nVdash;": "\u22ae", + "nabla;": "\u2207", + "nacute;": "\u0144", + "nang;": "\u2220\u20d2", + "nap;": "\u2249", + "napE;": "\u2a70\u0338", + "napid;": "\u224b\u0338", + "napos;": "\u0149", + "napprox;": "\u2249", + "natur;": "\u266e", + "natural;": "\u266e", + "naturals;": "\u2115", + "nbsp": "\xa0", + "nbsp;": "\xa0", + "nbump;": "\u224e\u0338", + "nbumpe;": "\u224f\u0338", + "ncap;": "\u2a43", + "ncaron;": "\u0148", + "ncedil;": "\u0146", + "ncong;": "\u2247", + "ncongdot;": "\u2a6d\u0338", + "ncup;": "\u2a42", + "ncy;": "\u043d", + "ndash;": "\u2013", + "ne;": "\u2260", + "neArr;": "\u21d7", + "nearhk;": "\u2924", + "nearr;": "\u2197", + "nearrow;": "\u2197", + "nedot;": "\u2250\u0338", + "nequiv;": "\u2262", + "nesear;": "\u2928", + "nesim;": "\u2242\u0338", + "nexist;": "\u2204", + "nexists;": "\u2204", + "nfr;": "\U0001d52b", + "ngE;": "\u2267\u0338", + "nge;": "\u2271", + "ngeq;": "\u2271", + "ngeqq;": "\u2267\u0338", + "ngeqslant;": "\u2a7e\u0338", + "nges;": "\u2a7e\u0338", + "ngsim;": "\u2275", + "ngt;": "\u226f", + "ngtr;": "\u226f", + "nhArr;": "\u21ce", + "nharr;": "\u21ae", + "nhpar;": "\u2af2", + "ni;": "\u220b", + "nis;": "\u22fc", + "nisd;": "\u22fa", + "niv;": "\u220b", + "njcy;": "\u045a", + "nlArr;": "\u21cd", + "nlE;": "\u2266\u0338", + "nlarr;": "\u219a", + "nldr;": "\u2025", + "nle;": "\u2270", + "nleftarrow;": "\u219a", + "nleftrightarrow;": "\u21ae", + "nleq;": "\u2270", + "nleqq;": "\u2266\u0338", + "nleqslant;": "\u2a7d\u0338", + "nles;": "\u2a7d\u0338", + "nless;": "\u226e", + "nlsim;": "\u2274", + "nlt;": "\u226e", + "nltri;": "\u22ea", + "nltrie;": "\u22ec", + "nmid;": "\u2224", + "nopf;": "\U0001d55f", + "not": "\xac", + "not;": "\xac", + "notin;": "\u2209", + "notinE;": "\u22f9\u0338", + "notindot;": "\u22f5\u0338", + "notinva;": "\u2209", + "notinvb;": "\u22f7", + "notinvc;": "\u22f6", + "notni;": "\u220c", + "notniva;": "\u220c", + "notnivb;": "\u22fe", + "notnivc;": "\u22fd", + "npar;": "\u2226", + "nparallel;": "\u2226", + "nparsl;": "\u2afd\u20e5", + "npart;": "\u2202\u0338", + "npolint;": "\u2a14", + "npr;": "\u2280", + "nprcue;": "\u22e0", + "npre;": "\u2aaf\u0338", + "nprec;": "\u2280", + "npreceq;": "\u2aaf\u0338", + "nrArr;": "\u21cf", + "nrarr;": "\u219b", + "nrarrc;": "\u2933\u0338", + "nrarrw;": "\u219d\u0338", + "nrightarrow;": "\u219b", + "nrtri;": "\u22eb", + "nrtrie;": "\u22ed", + "nsc;": "\u2281", + "nsccue;": "\u22e1", + "nsce;": "\u2ab0\u0338", + "nscr;": "\U0001d4c3", + "nshortmid;": "\u2224", + "nshortparallel;": "\u2226", + "nsim;": "\u2241", + "nsime;": "\u2244", + "nsimeq;": "\u2244", + "nsmid;": "\u2224", + "nspar;": "\u2226", + "nsqsube;": "\u22e2", + "nsqsupe;": "\u22e3", + "nsub;": "\u2284", + "nsubE;": "\u2ac5\u0338", + "nsube;": "\u2288", + "nsubset;": "\u2282\u20d2", + "nsubseteq;": "\u2288", + "nsubseteqq;": "\u2ac5\u0338", + "nsucc;": "\u2281", + "nsucceq;": "\u2ab0\u0338", + "nsup;": "\u2285", + "nsupE;": "\u2ac6\u0338", + "nsupe;": "\u2289", + "nsupset;": "\u2283\u20d2", + "nsupseteq;": "\u2289", + "nsupseteqq;": "\u2ac6\u0338", + "ntgl;": "\u2279", + "ntilde": "\xf1", + "ntilde;": "\xf1", + "ntlg;": "\u2278", + "ntriangleleft;": "\u22ea", + "ntrianglelefteq;": "\u22ec", + "ntriangleright;": "\u22eb", + "ntrianglerighteq;": "\u22ed", + "nu;": "\u03bd", + "num;": "#", + "numero;": "\u2116", + "numsp;": "\u2007", + "nvDash;": "\u22ad", + "nvHarr;": "\u2904", + "nvap;": "\u224d\u20d2", + "nvdash;": "\u22ac", + "nvge;": "\u2265\u20d2", + "nvgt;": ">\u20d2", + "nvinfin;": "\u29de", + "nvlArr;": "\u2902", + "nvle;": "\u2264\u20d2", + "nvlt;": "<\u20d2", + "nvltrie;": "\u22b4\u20d2", + "nvrArr;": "\u2903", + "nvrtrie;": "\u22b5\u20d2", + "nvsim;": "\u223c\u20d2", + "nwArr;": "\u21d6", + "nwarhk;": "\u2923", + "nwarr;": "\u2196", + "nwarrow;": "\u2196", + "nwnear;": "\u2927", + "oS;": "\u24c8", + "oacute": "\xf3", + "oacute;": "\xf3", + "oast;": "\u229b", + "ocir;": "\u229a", + "ocirc": "\xf4", + "ocirc;": "\xf4", + "ocy;": "\u043e", + "odash;": "\u229d", + "odblac;": "\u0151", + "odiv;": "\u2a38", + "odot;": "\u2299", + "odsold;": "\u29bc", + "oelig;": "\u0153", + "ofcir;": "\u29bf", + "ofr;": "\U0001d52c", + "ogon;": "\u02db", + "ograve": "\xf2", + "ograve;": "\xf2", + "ogt;": "\u29c1", + "ohbar;": "\u29b5", + "ohm;": "\u03a9", + "oint;": "\u222e", + "olarr;": "\u21ba", + "olcir;": "\u29be", + "olcross;": "\u29bb", + "oline;": "\u203e", + "olt;": "\u29c0", + "omacr;": "\u014d", + "omega;": "\u03c9", + "omicron;": "\u03bf", + "omid;": "\u29b6", + "ominus;": "\u2296", + "oopf;": "\U0001d560", + "opar;": "\u29b7", + "operp;": "\u29b9", + "oplus;": "\u2295", + "or;": "\u2228", + "orarr;": "\u21bb", + "ord;": "\u2a5d", + "order;": "\u2134", + "orderof;": "\u2134", + "ordf": "\xaa", + "ordf;": "\xaa", + "ordm": "\xba", + "ordm;": "\xba", + "origof;": "\u22b6", + "oror;": "\u2a56", + "orslope;": "\u2a57", + "orv;": "\u2a5b", + "oscr;": "\u2134", + "oslash": "\xf8", + "oslash;": "\xf8", + "osol;": "\u2298", + "otilde": "\xf5", + "otilde;": "\xf5", + "otimes;": "\u2297", + "otimesas;": "\u2a36", + "ouml": "\xf6", + "ouml;": "\xf6", + "ovbar;": "\u233d", + "par;": "\u2225", + "para": "\xb6", + "para;": "\xb6", + "parallel;": "\u2225", + "parsim;": "\u2af3", + "parsl;": "\u2afd", + "part;": "\u2202", + "pcy;": "\u043f", + "percnt;": "%", + "period;": ".", + "permil;": "\u2030", + "perp;": "\u22a5", + "pertenk;": "\u2031", + "pfr;": "\U0001d52d", + "phi;": "\u03c6", + "phiv;": "\u03d5", + "phmmat;": "\u2133", + "phone;": "\u260e", + "pi;": "\u03c0", + "pitchfork;": "\u22d4", + "piv;": "\u03d6", + "planck;": "\u210f", + "planckh;": "\u210e", + "plankv;": "\u210f", + "plus;": "+", + "plusacir;": "\u2a23", + "plusb;": "\u229e", + "pluscir;": "\u2a22", + "plusdo;": "\u2214", + "plusdu;": "\u2a25", + "pluse;": "\u2a72", + "plusmn": "\xb1", + "plusmn;": "\xb1", + "plussim;": "\u2a26", + "plustwo;": "\u2a27", + "pm;": "\xb1", + "pointint;": "\u2a15", + "popf;": "\U0001d561", + "pound": "\xa3", + "pound;": "\xa3", + "pr;": "\u227a", + "prE;": "\u2ab3", + "prap;": "\u2ab7", + "prcue;": "\u227c", + "pre;": "\u2aaf", + "prec;": "\u227a", + "precapprox;": "\u2ab7", + "preccurlyeq;": "\u227c", + "preceq;": "\u2aaf", + "precnapprox;": "\u2ab9", + "precneqq;": "\u2ab5", + "precnsim;": "\u22e8", + "precsim;": "\u227e", + "prime;": "\u2032", + "primes;": "\u2119", + "prnE;": "\u2ab5", + "prnap;": "\u2ab9", + "prnsim;": "\u22e8", + "prod;": "\u220f", + "profalar;": "\u232e", + "profline;": "\u2312", + "profsurf;": "\u2313", + "prop;": "\u221d", + "propto;": "\u221d", + "prsim;": "\u227e", + "prurel;": "\u22b0", + "pscr;": "\U0001d4c5", + "psi;": "\u03c8", + "puncsp;": "\u2008", + "qfr;": "\U0001d52e", + "qint;": "\u2a0c", + "qopf;": "\U0001d562", + "qprime;": "\u2057", + "qscr;": "\U0001d4c6", + "quaternions;": "\u210d", + "quatint;": "\u2a16", + "quest;": "?", + "questeq;": "\u225f", + "quot": "\"", + "quot;": "\"", + "rAarr;": "\u21db", + "rArr;": "\u21d2", + "rAtail;": "\u291c", + "rBarr;": "\u290f", + "rHar;": "\u2964", + "race;": "\u223d\u0331", + "racute;": "\u0155", + "radic;": "\u221a", + "raemptyv;": "\u29b3", + "rang;": "\u27e9", + "rangd;": "\u2992", + "range;": "\u29a5", + "rangle;": "\u27e9", + "raquo": "\xbb", + "raquo;": "\xbb", + "rarr;": "\u2192", + "rarrap;": "\u2975", + "rarrb;": "\u21e5", + "rarrbfs;": "\u2920", + "rarrc;": "\u2933", + "rarrfs;": "\u291e", + "rarrhk;": "\u21aa", + "rarrlp;": "\u21ac", + "rarrpl;": "\u2945", + "rarrsim;": "\u2974", + "rarrtl;": "\u21a3", + "rarrw;": "\u219d", + "ratail;": "\u291a", + "ratio;": "\u2236", + "rationals;": "\u211a", + "rbarr;": "\u290d", + "rbbrk;": "\u2773", + "rbrace;": "}", + "rbrack;": "]", + "rbrke;": "\u298c", + "rbrksld;": "\u298e", + "rbrkslu;": "\u2990", + "rcaron;": "\u0159", + "rcedil;": "\u0157", + "rceil;": "\u2309", + "rcub;": "}", + "rcy;": "\u0440", + "rdca;": "\u2937", + "rdldhar;": "\u2969", + "rdquo;": "\u201d", + "rdquor;": "\u201d", + "rdsh;": "\u21b3", + "real;": "\u211c", + "realine;": "\u211b", + "realpart;": "\u211c", + "reals;": "\u211d", + "rect;": "\u25ad", + "reg": "\xae", + "reg;": "\xae", + "rfisht;": "\u297d", + "rfloor;": "\u230b", + "rfr;": "\U0001d52f", + "rhard;": "\u21c1", + "rharu;": "\u21c0", + "rharul;": "\u296c", + "rho;": "\u03c1", + "rhov;": "\u03f1", + "rightarrow;": "\u2192", + "rightarrowtail;": "\u21a3", + "rightharpoondown;": "\u21c1", + "rightharpoonup;": "\u21c0", + "rightleftarrows;": "\u21c4", + "rightleftharpoons;": "\u21cc", + "rightrightarrows;": "\u21c9", + "rightsquigarrow;": "\u219d", + "rightthreetimes;": "\u22cc", + "ring;": "\u02da", + "risingdotseq;": "\u2253", + "rlarr;": "\u21c4", + "rlhar;": "\u21cc", + "rlm;": "\u200f", + "rmoust;": "\u23b1", + "rmoustache;": "\u23b1", + "rnmid;": "\u2aee", + "roang;": "\u27ed", + "roarr;": "\u21fe", + "robrk;": "\u27e7", + "ropar;": "\u2986", + "ropf;": "\U0001d563", + "roplus;": "\u2a2e", + "rotimes;": "\u2a35", + "rpar;": ")", + "rpargt;": "\u2994", + "rppolint;": "\u2a12", + "rrarr;": "\u21c9", + "rsaquo;": "\u203a", + "rscr;": "\U0001d4c7", + "rsh;": "\u21b1", + "rsqb;": "]", + "rsquo;": "\u2019", + "rsquor;": "\u2019", + "rthree;": "\u22cc", + "rtimes;": "\u22ca", + "rtri;": "\u25b9", + "rtrie;": "\u22b5", + "rtrif;": "\u25b8", + "rtriltri;": "\u29ce", + "ruluhar;": "\u2968", + "rx;": "\u211e", + "sacute;": "\u015b", + "sbquo;": "\u201a", + "sc;": "\u227b", + "scE;": "\u2ab4", + "scap;": "\u2ab8", + "scaron;": "\u0161", + "sccue;": "\u227d", + "sce;": "\u2ab0", + "scedil;": "\u015f", + "scirc;": "\u015d", + "scnE;": "\u2ab6", + "scnap;": "\u2aba", + "scnsim;": "\u22e9", + "scpolint;": "\u2a13", + "scsim;": "\u227f", + "scy;": "\u0441", + "sdot;": "\u22c5", + "sdotb;": "\u22a1", + "sdote;": "\u2a66", + "seArr;": "\u21d8", + "searhk;": "\u2925", + "searr;": "\u2198", + "searrow;": "\u2198", + "sect": "\xa7", + "sect;": "\xa7", + "semi;": ";", + "seswar;": "\u2929", + "setminus;": "\u2216", + "setmn;": "\u2216", + "sext;": "\u2736", + "sfr;": "\U0001d530", + "sfrown;": "\u2322", + "sharp;": "\u266f", + "shchcy;": "\u0449", + "shcy;": "\u0448", + "shortmid;": "\u2223", + "shortparallel;": "\u2225", + "shy": "\xad", + "shy;": "\xad", + "sigma;": "\u03c3", + "sigmaf;": "\u03c2", + "sigmav;": "\u03c2", + "sim;": "\u223c", + "simdot;": "\u2a6a", + "sime;": "\u2243", + "simeq;": "\u2243", + "simg;": "\u2a9e", + "simgE;": "\u2aa0", + "siml;": "\u2a9d", + "simlE;": "\u2a9f", + "simne;": "\u2246", + "simplus;": "\u2a24", + "simrarr;": "\u2972", + "slarr;": "\u2190", + "smallsetminus;": "\u2216", + "smashp;": "\u2a33", + "smeparsl;": "\u29e4", + "smid;": "\u2223", + "smile;": "\u2323", + "smt;": "\u2aaa", + "smte;": "\u2aac", + "smtes;": "\u2aac\ufe00", + "softcy;": "\u044c", + "sol;": "/", + "solb;": "\u29c4", + "solbar;": "\u233f", + "sopf;": "\U0001d564", + "spades;": "\u2660", + "spadesuit;": "\u2660", + "spar;": "\u2225", + "sqcap;": "\u2293", + "sqcaps;": "\u2293\ufe00", + "sqcup;": "\u2294", + "sqcups;": "\u2294\ufe00", + "sqsub;": "\u228f", + "sqsube;": "\u2291", + "sqsubset;": "\u228f", + "sqsubseteq;": "\u2291", + "sqsup;": "\u2290", + "sqsupe;": "\u2292", + "sqsupset;": "\u2290", + "sqsupseteq;": "\u2292", + "squ;": "\u25a1", + "square;": "\u25a1", + "squarf;": "\u25aa", + "squf;": "\u25aa", + "srarr;": "\u2192", + "sscr;": "\U0001d4c8", + "ssetmn;": "\u2216", + "ssmile;": "\u2323", + "sstarf;": "\u22c6", + "star;": "\u2606", + "starf;": "\u2605", + "straightepsilon;": "\u03f5", + "straightphi;": "\u03d5", + "strns;": "\xaf", + "sub;": "\u2282", + "subE;": "\u2ac5", + "subdot;": "\u2abd", + "sube;": "\u2286", + "subedot;": "\u2ac3", + "submult;": "\u2ac1", + "subnE;": "\u2acb", + "subne;": "\u228a", + "subplus;": "\u2abf", + "subrarr;": "\u2979", + "subset;": "\u2282", + "subseteq;": "\u2286", + "subseteqq;": "\u2ac5", + "subsetneq;": "\u228a", + "subsetneqq;": "\u2acb", + "subsim;": "\u2ac7", + "subsub;": "\u2ad5", + "subsup;": "\u2ad3", + "succ;": "\u227b", + "succapprox;": "\u2ab8", + "succcurlyeq;": "\u227d", + "succeq;": "\u2ab0", + "succnapprox;": "\u2aba", + "succneqq;": "\u2ab6", + "succnsim;": "\u22e9", + "succsim;": "\u227f", + "sum;": "\u2211", + "sung;": "\u266a", + "sup1": "\xb9", + "sup1;": "\xb9", + "sup2": "\xb2", + "sup2;": "\xb2", + "sup3": "\xb3", + "sup3;": "\xb3", + "sup;": "\u2283", + "supE;": "\u2ac6", + "supdot;": "\u2abe", + "supdsub;": "\u2ad8", + "supe;": "\u2287", + "supedot;": "\u2ac4", + "suphsol;": "\u27c9", + "suphsub;": "\u2ad7", + "suplarr;": "\u297b", + "supmult;": "\u2ac2", + "supnE;": "\u2acc", + "supne;": "\u228b", + "supplus;": "\u2ac0", + "supset;": "\u2283", + "supseteq;": "\u2287", + "supseteqq;": "\u2ac6", + "supsetneq;": "\u228b", + "supsetneqq;": "\u2acc", + "supsim;": "\u2ac8", + "supsub;": "\u2ad4", + "supsup;": "\u2ad6", + "swArr;": "\u21d9", + "swarhk;": "\u2926", + "swarr;": "\u2199", + "swarrow;": "\u2199", + "swnwar;": "\u292a", + "szlig": "\xdf", + "szlig;": "\xdf", + "target;": "\u2316", + "tau;": "\u03c4", + "tbrk;": "\u23b4", + "tcaron;": "\u0165", + "tcedil;": "\u0163", + "tcy;": "\u0442", + "tdot;": "\u20db", + "telrec;": "\u2315", + "tfr;": "\U0001d531", + "there4;": "\u2234", + "therefore;": "\u2234", + "theta;": "\u03b8", + "thetasym;": "\u03d1", + "thetav;": "\u03d1", + "thickapprox;": "\u2248", + "thicksim;": "\u223c", + "thinsp;": "\u2009", + "thkap;": "\u2248", + "thksim;": "\u223c", + "thorn": "\xfe", + "thorn;": "\xfe", + "tilde;": "\u02dc", + "times": "\xd7", + "times;": "\xd7", + "timesb;": "\u22a0", + "timesbar;": "\u2a31", + "timesd;": "\u2a30", + "tint;": "\u222d", + "toea;": "\u2928", + "top;": "\u22a4", + "topbot;": "\u2336", + "topcir;": "\u2af1", + "topf;": "\U0001d565", + "topfork;": "\u2ada", + "tosa;": "\u2929", + "tprime;": "\u2034", + "trade;": "\u2122", + "triangle;": "\u25b5", + "triangledown;": "\u25bf", + "triangleleft;": "\u25c3", + "trianglelefteq;": "\u22b4", + "triangleq;": "\u225c", + "triangleright;": "\u25b9", + "trianglerighteq;": "\u22b5", + "tridot;": "\u25ec", + "trie;": "\u225c", + "triminus;": "\u2a3a", + "triplus;": "\u2a39", + "trisb;": "\u29cd", + "tritime;": "\u2a3b", + "trpezium;": "\u23e2", + "tscr;": "\U0001d4c9", + "tscy;": "\u0446", + "tshcy;": "\u045b", + "tstrok;": "\u0167", + "twixt;": "\u226c", + "twoheadleftarrow;": "\u219e", + "twoheadrightarrow;": "\u21a0", + "uArr;": "\u21d1", + "uHar;": "\u2963", + "uacute": "\xfa", + "uacute;": "\xfa", + "uarr;": "\u2191", + "ubrcy;": "\u045e", + "ubreve;": "\u016d", + "ucirc": "\xfb", + "ucirc;": "\xfb", + "ucy;": "\u0443", + "udarr;": "\u21c5", + "udblac;": "\u0171", + "udhar;": "\u296e", + "ufisht;": "\u297e", + "ufr;": "\U0001d532", + "ugrave": "\xf9", + "ugrave;": "\xf9", + "uharl;": "\u21bf", + "uharr;": "\u21be", + "uhblk;": "\u2580", + "ulcorn;": "\u231c", + "ulcorner;": "\u231c", + "ulcrop;": "\u230f", + "ultri;": "\u25f8", + "umacr;": "\u016b", + "uml": "\xa8", + "uml;": "\xa8", + "uogon;": "\u0173", + "uopf;": "\U0001d566", + "uparrow;": "\u2191", + "updownarrow;": "\u2195", + "upharpoonleft;": "\u21bf", + "upharpoonright;": "\u21be", + "uplus;": "\u228e", + "upsi;": "\u03c5", + "upsih;": "\u03d2", + "upsilon;": "\u03c5", + "upuparrows;": "\u21c8", + "urcorn;": "\u231d", + "urcorner;": "\u231d", + "urcrop;": "\u230e", + "uring;": "\u016f", + "urtri;": "\u25f9", + "uscr;": "\U0001d4ca", + "utdot;": "\u22f0", + "utilde;": "\u0169", + "utri;": "\u25b5", + "utrif;": "\u25b4", + "uuarr;": "\u21c8", + "uuml": "\xfc", + "uuml;": "\xfc", + "uwangle;": "\u29a7", + "vArr;": "\u21d5", + "vBar;": "\u2ae8", + "vBarv;": "\u2ae9", + "vDash;": "\u22a8", + "vangrt;": "\u299c", + "varepsilon;": "\u03f5", + "varkappa;": "\u03f0", + "varnothing;": "\u2205", + "varphi;": "\u03d5", + "varpi;": "\u03d6", + "varpropto;": "\u221d", + "varr;": "\u2195", + "varrho;": "\u03f1", + "varsigma;": "\u03c2", + "varsubsetneq;": "\u228a\ufe00", + "varsubsetneqq;": "\u2acb\ufe00", + "varsupsetneq;": "\u228b\ufe00", + "varsupsetneqq;": "\u2acc\ufe00", + "vartheta;": "\u03d1", + "vartriangleleft;": "\u22b2", + "vartriangleright;": "\u22b3", + "vcy;": "\u0432", + "vdash;": "\u22a2", + "vee;": "\u2228", + "veebar;": "\u22bb", + "veeeq;": "\u225a", + "vellip;": "\u22ee", + "verbar;": "|", + "vert;": "|", + "vfr;": "\U0001d533", + "vltri;": "\u22b2", + "vnsub;": "\u2282\u20d2", + "vnsup;": "\u2283\u20d2", + "vopf;": "\U0001d567", + "vprop;": "\u221d", + "vrtri;": "\u22b3", + "vscr;": "\U0001d4cb", + "vsubnE;": "\u2acb\ufe00", + "vsubne;": "\u228a\ufe00", + "vsupnE;": "\u2acc\ufe00", + "vsupne;": "\u228b\ufe00", + "vzigzag;": "\u299a", + "wcirc;": "\u0175", + "wedbar;": "\u2a5f", + "wedge;": "\u2227", + "wedgeq;": "\u2259", + "weierp;": "\u2118", + "wfr;": "\U0001d534", + "wopf;": "\U0001d568", + "wp;": "\u2118", + "wr;": "\u2240", + "wreath;": "\u2240", + "wscr;": "\U0001d4cc", + "xcap;": "\u22c2", + "xcirc;": "\u25ef", + "xcup;": "\u22c3", + "xdtri;": "\u25bd", + "xfr;": "\U0001d535", + "xhArr;": "\u27fa", + "xharr;": "\u27f7", + "xi;": "\u03be", + "xlArr;": "\u27f8", + "xlarr;": "\u27f5", + "xmap;": "\u27fc", + "xnis;": "\u22fb", + "xodot;": "\u2a00", + "xopf;": "\U0001d569", + "xoplus;": "\u2a01", + "xotime;": "\u2a02", + "xrArr;": "\u27f9", + "xrarr;": "\u27f6", + "xscr;": "\U0001d4cd", + "xsqcup;": "\u2a06", + "xuplus;": "\u2a04", + "xutri;": "\u25b3", + "xvee;": "\u22c1", + "xwedge;": "\u22c0", + "yacute": "\xfd", + "yacute;": "\xfd", + "yacy;": "\u044f", + "ycirc;": "\u0177", + "ycy;": "\u044b", + "yen": "\xa5", + "yen;": "\xa5", + "yfr;": "\U0001d536", + "yicy;": "\u0457", + "yopf;": "\U0001d56a", + "yscr;": "\U0001d4ce", + "yucy;": "\u044e", + "yuml": "\xff", + "yuml;": "\xff", + "zacute;": "\u017a", + "zcaron;": "\u017e", + "zcy;": "\u0437", + "zdot;": "\u017c", + "zeetrf;": "\u2128", + "zeta;": "\u03b6", + "zfr;": "\U0001d537", + "zhcy;": "\u0436", + "zigrarr;": "\u21dd", + "zopf;": "\U0001d56b", + "zscr;": "\U0001d4cf", + "zwj;": "\u200d", + "zwnj;": "\u200c", +} + +replacementCharacters = { + 0x0: "\uFFFD", + 0x0d: "\u000D", + 0x80: "\u20AC", + 0x81: "\u0081", + 0x82: "\u201A", + 0x83: "\u0192", + 0x84: "\u201E", + 0x85: "\u2026", + 0x86: "\u2020", + 0x87: "\u2021", + 0x88: "\u02C6", + 0x89: "\u2030", + 0x8A: "\u0160", + 0x8B: "\u2039", + 0x8C: "\u0152", + 0x8D: "\u008D", + 0x8E: "\u017D", + 0x8F: "\u008F", + 0x90: "\u0090", + 0x91: "\u2018", + 0x92: "\u2019", + 0x93: "\u201C", + 0x94: "\u201D", + 0x95: "\u2022", + 0x96: "\u2013", + 0x97: "\u2014", + 0x98: "\u02DC", + 0x99: "\u2122", + 0x9A: "\u0161", + 0x9B: "\u203A", + 0x9C: "\u0153", + 0x9D: "\u009D", + 0x9E: "\u017E", + 0x9F: "\u0178", +} + +tokenTypes = { + "Doctype": 0, + "Characters": 1, + "SpaceCharacters": 2, + "StartTag": 3, + "EndTag": 4, + "EmptyTag": 5, + "Comment": 6, + "ParseError": 7 +} + +tagTokenTypes = frozenset([tokenTypes["StartTag"], tokenTypes["EndTag"], + tokenTypes["EmptyTag"]]) + + +prefixes = {v: k for k, v in namespaces.items()} +prefixes["http://www.w3.org/1998/Math/MathML"] = "math" + + +class DataLossWarning(UserWarning): + """Raised when the current tree is unable to represent the input data""" + pass + + +class _ReparseException(Exception): + pass diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__init__.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8919f989730838dcf7e5f084cf3d62317c84e155 GIT binary patch literal 216 zcmYk0F%H5o3`J9k0U`Au48#LsKthNUuyBAVC5F1Rjg_RWI&cAIF2R*pIRYCK$pl~e z&$9LPWu50U5p}!ED$Q5Izp}XOqWvVoh=Z7C`-gDp{KMx8rEL(1FWz^|)&(fYmxHbl z19VJ^+Ce*`PE?~Rv_}K7$F_%>3g9u6wq43KcnY{+eZ1&1dSGHuF=ecSGBoung=0fN Y=Rw6v3Q9>HpVLiaO;_VKz4eY3Uwkt?0ssI2 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e937b4a04a56d62f903c7de16cf4b0c7eed625b2 GIT binary patch literal 1338 zcmZuxOK%)S5bmDG?(BMB;1ITu#*FDchgEMt^KS_IKsNcJ<&u=%(+C^O@3XZFSfBy`j}rr$E%&fswU+&FKvH z$wFGde&=hWz<_$JD_7ClO`|d1hJB7=-$%7Y6=LoV}HHeh>MLGD)4#ppExK)w=lKs1eBsvnc%W-~Y3MY{d54E9IoM!t?&G}D%O&2s zb-CO0U_Z=lm!AV3Yu8|0aP)5!*AaYZdbha_mM^ujZhi&c5LKR;6uaL8w-T>oCTIrr z*U!bOYoO5mskK8-87daquFmBNfGdVx3*DYeqr_6zASf}an6IH-7qwm#{l=}j_QCwq z!eS0TLQYQQG1#KleIam{>P)e6P5m)#Mh}>0TgbX!$ptuF$(qmv-tD~K_=zA}U|uo= zXd_fCGc(i`4R1GEdx&D+Lj|nlij|S#WlRN&g_)=XQ=j_Lmm%uK2aj%|UVzQtgbn$I z8XBbA{-?-@G7<`HpP_Q>gule%dc_~JAD>+EEe}N(t(p18#n0JgfAq( zzofNO|3atUNr|g|9B@Zc_jvE#QQ2&E!qC2cn{S?T#=g^GY#|;l(cMc7iYZ>OlBc{3 z(x4Qn;OrAqff9F22^}6pI#J<*C6gbBW{K#|v!$zx)@v|jQ(ND~%504@b=6(8mC0+R zp)g+CtZ+Hq8C!sdOLX@FgJvmLEDaP_!5vG55-P+sR1+29I#E;Pjl1ZhDX?5lcOQ-R z{_6aUOcXC~qTAJp@xwat8m87eyIvTcLGq>s>Nr3?hN2_n-xRGQW-m=a6y3{b`(gq zr5V%D?r2Uik3}r{Z$yEGSFLX?7Pd5AOKL5lyQp4nbnbiTsASJDjPu>l(|dZGew@$5 EFA|}~f&c&j literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1fbbab8af775c26b8a82a37e1a7ca27834fedd8 GIT binary patch literal 1892 zcmZt{J8v9CcxLwL^Z7wy2S-TOHWXLbS0IoGNfgO;LJ&HT5+Sro7_V>Ue0$#4&CFh~ zwO1fgAPQtflqu{EB#Ko01bzVJv{d;65u$-_cF*wIpfl!PR;LJK2Cn3dS66FL~(L(FE*Q^XwZjNI?7&}Hre z)bU;dFX~u&B|4CKQYud4w8(|hK8q)@jPp#dmRa1-8K+6CxQG(@5*r?@?Sn}2z7a6L z2wd*KmH_~cLd;M|7!ECC&QlcHjUl1a7@*y|aRPErZr#sDysu=izkf63Dhm3;NJy@3 z?e%uP*uCGocYA+7P|;x!XDSbdJYqpU2w2`PQ=X~51==o_Ih*M0z?K^T6dK_(QlSc; z6O1Z2QHx>lpPZ;2!6U_G5Cx4PtyVBwHzIKu$h;JNej`vrK0600KjK*+6)>i6Q1c8T z6=#PH{lyJ90`TOLw%4(R3w8+)fc7bkvsh88{RdNsD?`VYfM!xH)bz{d z3|JR1u6V^(8omjF^Qw_^Z6=AWG*YrJ=PU#tz~&bfK>31M%xSpUJI}4J5cIIee0If1 ziSg^VtIT0*&q<93tHztz0KC6Clk~s%)UvGxp1ExO92>4$+q1XHt_uokc0v zw!wv7oHa!LURtQ*8g1(9uC`gEBJIuU?BPjks8q4V$7MV@Y4`I?LBDSq$sN)IvgYAr zUGZ;KUAdpU9v$z?jwP0%+Qg~>YXE>ptixBkdl>_z9WqB?iZxs)a;a+5I)2@EZ?q~j z1hlG?PWcB7(z{^_)YDRk{f1%oAQ)lDxwO|D=ceyi9g zExbx>ya6{GxA7H#E?&bfS%tGpHUQ`T>jU%wwgGDc#|E5SIGZ;Yq%^N>GT-5KBzhg! zOfX|7gr!AknzIt-4%KZ+$7PhvFdn5atSPOBMs4w&7iO-B+7&Yq&5V!+7=!)AdP?>> po)JDMRSDHah54HiX3z^Wdo;RC(%Zyp|7K&>ZIj}9T&e;my$VlB=)m2^fRdu<_L910K z@O|}lXXCvoLjFKz^0R>X5SHx2#t5S^NvKB?!!r`oGbx@Kv6a}K4YbLuxRO-8D$q8o z#75LNVrGy=VaB*0M~aIemTg+p6o06EwVU(j6b;bAS_>q9ZXjb6 z^)yJh%!822qPd+#>}Jdpo+`XLtjnG zc@Y>z6djTSc?b>JXpPN+&A{EeS5!BVm_p@ zGDeMb=^xPnH#fqkkpus#mTK(4y*ZLrbX?Dn+j@3L(?0=CebYEJ1ZM69d4jup6F&E} zRh=u4d^xf@_W7Nbj(z@6>cSiRe3~KPek*f?6l;K$zwZ#%WUZkc(Rp$}Azzm11Dqx4a?K^- zb7;uVG-t9I^aI|ZNvqZ|1?h>!^cS#qMtlAJq@rxBs6#`3Kdv04wJn3qF2I1$(x(&B zrz7dvkrbjjk&Yrv?}4W|jl=+%uHMPmbo}SE{IZr~T~5TF&O>&!EjG{S&>UxXXxt-| zY|StN&F=hiVd1cV(crA8K&ZRHdg0tmaY%{$+~=I1m@` zv~n|LaOc)u=N`-zmzRSDx*B#B&fGw{rAFB-7v0ycLW66|!i1lqdLv745aEoP7(vr3 zIIB(%#AS32_Y)^?QhH}zcp;tj`t;3{Er3%uJ3+z4+dlV{x%}C(C4Z5iol_1Zd+Z8r+ z!2|-zvm9Er5>YN1pwzC3Gw|cJGSKoziIIh^2cS5QW^g8nmtZUG?I0d-ybiA+F5&sP zlWiWUE3mx`OUAGfYSCHh&^j!K&eJBHf;CGo&?y7yDWERGJ_BpcD7D7?Do zy*i!OCl~1})CCH;d2`;FY|uJAZF;v|#X*F%f!Xr?Bx3`Z6n@e4{jEU|k0e#!XIbd` zy6fu*iq>cjg*=Wya2n)Uh)U>4@iDOCWCb>dTJ}^!KhSb}3VrnkY5;@P7x>SO!1*q4 zmUz=Je>$W2(~;3b{c^f=^&1zpFw<|UFG>nKeG8S3lRtLYt-zR#E3$WKs0_F7I7DmA=>mz_3ZR+Pj{!P zXU#6N2Q?=V*@JlSWNrpLd-Cide}G6KUIan$F9?GEUUm0ogxEt>SHJqbSFc|E-m3{0 z7FrC?XJ4*u-{>;-8-2__E6g$+CV9dpyw4}1FD6dk;Y?=IvSFJ`A6X6Dw=))UBvoavc8bK?~psUS>G)k={KY&oA~ymFOT8flr1=P z+<4dH1ncZS_ii-Fb|c-%@&ayzNv8<6bZ4ZpNv9Y`og&+b(vB`v6i$ZZQT`2U2mC<_do89vq{v8^Bt|HImNd(i1qlR za65{M-ZYPcIQ=M8G8n~46i`@YZ*4b9cY8@Z=;eFGI7=_Bz0%V-f%ADd+zGcL-OJ;= z7XT$Q)f*R+_aA6dFiZ0ygsj_8#|Y}zr>7{{U@p2X zZ}}e~?3?>yf2oRNjUN&h>xUvq333fh|B7zrsP@dE*yW3o;>V@fWvYYdIJXR;py#h5uXn@-OAmoO2I(!U$<&9GP8c7DOjXD>StJYT0O$qGd|lc7 zvO+A9Ez(S{0YiPz^yWlu!KU-dx(%jriJy0cXLI zhA#FJ@M4%HTPmC8#=!{bM_};b3DRt!UW5{_QI-`(6w01!O@Ss-gjl3b(^7P@43_K`x$W^D*z=-ya{gAxg&mqsx)mrH<&;jj$+=R@r+Amj>#F~(=R~Am}IH30m z=>08pPFmzwN9z<7>Qohn(^mHo^N1i;{GwiwY^NhwIAam_jx2m%S%Bu8r$5$u=|$)~ zVpsk9NaxQ=2l6?c`?ZcuqqAiifzM~b4Rww>;-Xqbhud2uvGGyyYzC;OX@>I1=8erD zB#e-tzLe^DOk6iSSC5kJInxXwjI_o;74ZLCPG%Ju^RBX3YER84Q zFv+%zBV$F~E{rC|AH`83byOISax7BD9c5}_#P|Z*MYKz3FQQ#Wd&zi|kU)tskSGXK zWr;cuw~T|bY?}CYL03N#Hypq(F-?qD*7dGXZ_x&yr9EJ8sPIDN>T!H-V(v+r zqtwTkUh1h@U`M1;NVIWT2wZy?sAmZDzxjU(v+twn8|aSmzl9rAoU+;9rkjB7fhJ_l zN`|>svt=3Gj04UrIWAHA2dxWr$pQN7r4Hm1^@s6 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-39.pyc b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..680b4db966e2553adb9fe0f4379d31358e096b87 GIT binary patch literal 16902 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 wgz|*){`}+0s+#}(afo51+(_tETcpOAlW zaeIJ{Jb`H{5Ryn*kdmgfWGO4X)T5|lg`fJ;lYSADVH$!ikYUj(qckexG=_ESvaRAj zX&Nj4azjQczDr=$c}8R`+pmdit8mu6@Y1f_ke$~g-IVNr47*owCK-CJCnlyY=2r2% zY-(*?B=bdX^15>Ud6j3iRJ_Qo(xNbXR}_P&^C!ZnD~1c^HgzV272`scsWdQIa z83O#43%}0`*!}G3Ze0|jG0F^1rhs#G_&~kNRAUEuHE6Wj8Cdno3a!M>KvZ&IGM$4_ zT?6*O$3@pZ8RmFB5Ft*4ZvFrv={dDzMlabC%KRO9@#{HTGRd~dxwrJBcg*yYB{h#g z=WmlGnRyF>8X0^^&S|v|J|Xx#Us9Yh_zJb(K!gQL3oI5Qqiv$CjPdI+sqTaI4OrV? zePjK#{erHoOZJ>l^0F@pRApmNBY5ZA(*`m+fSm1*;>h`xD3uP-6pky2s@}l|P4cma zZ|T6bZ#p*&bO=Fu10y5Okp`T*k5)C_*UBipP&a+g-gknp>}KdY->BlyMNr?Bs|##> ztSY?;`~5}qeR#e7C7ITxO7iB|n0bQ?OeVRRo`{)JHkmg$&#M!mB|ppy#gTV187)+` zNQ!)tG^ci2SD%l*P7Hv12ss^#BW02%ZxRk(vewDemc>Z<>cZ{`Jhql?)>fL8&y*2Gd*TvWy##k9FFjS_^d0ERj0OhX3`OCQ| z-dkFn%Q^#fe5mU)RT*WSU*yK>2u{`aP#}_3QErJ(P>1#Jz%`` tag into head of document""" + def __init__(self, source, encoding): + """Creates a Filter + + :arg source: the source token stream + + :arg encoding: the encoding to set + + """ + base.Filter.__init__(self, source) + self.encoding = encoding + + def __iter__(self): + state = "pre_head" + meta_found = (self.encoding is None) + pending = [] + + for token in base.Filter.__iter__(self): + type = token["type"] + if type == "StartTag": + if token["name"].lower() == "head": + state = "in_head" + + elif type == "EmptyTag": + if token["name"].lower() == "meta": + # replace charset with actual encoding + has_http_equiv_content_type = False + for (namespace, name), value in token["data"].items(): + if namespace is not None: + continue + elif name.lower() == 'charset': + token["data"][(namespace, name)] = self.encoding + meta_found = True + break + elif name == 'http-equiv' and value.lower() == 'content-type': + has_http_equiv_content_type = True + else: + if has_http_equiv_content_type and (None, "content") in token["data"]: + token["data"][(None, "content")] = 'text/html; charset=%s' % self.encoding + meta_found = True + + elif token["name"].lower() == "head" and not meta_found: + # insert meta into empty head + yield {"type": "StartTag", "name": "head", + "data": token["data"]} + yield {"type": "EmptyTag", "name": "meta", + "data": {(None, "charset"): self.encoding}} + yield {"type": "EndTag", "name": "head"} + meta_found = True + continue + + elif type == "EndTag": + if token["name"].lower() == "head" and pending: + # insert meta into head (if necessary) and flush pending queue + yield pending.pop(0) + if not meta_found: + yield {"type": "EmptyTag", "name": "meta", + "data": {(None, "charset"): self.encoding}} + while pending: + yield pending.pop(0) + meta_found = True + state = "post_head" + + if state == "in_head": + pending.append(token) + else: + yield token diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/lint.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/lint.py new file mode 100644 index 0000000..fcc07ee --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/lint.py @@ -0,0 +1,93 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import text_type + +from . import base +from ..constants import namespaces, voidElements + +from ..constants import spaceCharacters +spaceCharacters = "".join(spaceCharacters) + + +class Filter(base.Filter): + """Lints the token stream for errors + + If it finds any errors, it'll raise an ``AssertionError``. + + """ + def __init__(self, source, require_matching_tags=True): + """Creates a Filter + + :arg source: the source token stream + + :arg require_matching_tags: whether or not to require matching tags + + """ + super(Filter, self).__init__(source) + self.require_matching_tags = require_matching_tags + + def __iter__(self): + open_elements = [] + for token in base.Filter.__iter__(self): + type = token["type"] + if type in ("StartTag", "EmptyTag"): + namespace = token["namespace"] + name = token["name"] + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + assert isinstance(token["data"], dict) + if (not namespace or namespace == namespaces["html"]) and name in voidElements: + assert type == "EmptyTag" + else: + assert type == "StartTag" + if type == "StartTag" and self.require_matching_tags: + open_elements.append((namespace, name)) + for (namespace, name), value in token["data"].items(): + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + assert isinstance(value, text_type) + + elif type == "EndTag": + namespace = token["namespace"] + name = token["name"] + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + if (not namespace or namespace == namespaces["html"]) and name in voidElements: + assert False, "Void element reported as EndTag token: %(tag)s" % {"tag": name} + elif self.require_matching_tags: + start = open_elements.pop() + assert start == (namespace, name) + + elif type == "Comment": + data = token["data"] + assert isinstance(data, text_type) + + elif type in ("Characters", "SpaceCharacters"): + data = token["data"] + assert isinstance(data, text_type) + assert data != "" + if type == "SpaceCharacters": + assert data.strip(spaceCharacters) == "" + + elif type == "Doctype": + name = token["name"] + assert name is None or isinstance(name, text_type) + assert token["publicId"] is None or isinstance(name, text_type) + assert token["systemId"] is None or isinstance(name, text_type) + + elif type == "Entity": + assert isinstance(token["name"], text_type) + + elif type == "SerializerError": + assert isinstance(token["data"], text_type) + + else: + assert False, "Unknown token type: %(type)s" % {"type": type} + + yield token diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/optionaltags.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/optionaltags.py new file mode 100644 index 0000000..4a86501 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/optionaltags.py @@ -0,0 +1,207 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import base + + +class Filter(base.Filter): + """Removes optional tags from the token stream""" + def slider(self): + previous1 = previous2 = None + for token in self.source: + if previous1 is not None: + yield previous2, previous1, token + previous2 = previous1 + previous1 = token + if previous1 is not None: + yield previous2, previous1, None + + def __iter__(self): + for previous, token, next in self.slider(): + type = token["type"] + if type == "StartTag": + if (token["data"] or + not self.is_optional_start(token["name"], previous, next)): + yield token + elif type == "EndTag": + if not self.is_optional_end(token["name"], next): + yield token + else: + yield token + + def is_optional_start(self, tagname, previous, next): + type = next and next["type"] or None + if tagname in 'html': + # An html element's start tag may be omitted if the first thing + # inside the html element is not a space character or a comment. + return type not in ("Comment", "SpaceCharacters") + elif tagname == 'head': + # A head element's start tag may be omitted if the first thing + # inside the head element is an element. + # XXX: we also omit the start tag if the head element is empty + if type in ("StartTag", "EmptyTag"): + return True + elif type == "EndTag": + return next["name"] == "head" + elif tagname == 'body': + # A body element's start tag may be omitted if the first thing + # inside the body element is not a space character or a comment, + # except if the first thing inside the body element is a script + # or style element and the node immediately preceding the body + # element is a head element whose end tag has been omitted. + if type in ("Comment", "SpaceCharacters"): + return False + elif type == "StartTag": + # XXX: we do not look at the preceding event, so we never omit + # the body element's start tag if it's followed by a script or + # a style element. + return next["name"] not in ('script', 'style') + else: + return True + elif tagname == 'colgroup': + # A colgroup element's start tag may be omitted if the first thing + # inside the colgroup element is a col element, and if the element + # is not immediately preceded by another colgroup element whose + # end tag has been omitted. + if type in ("StartTag", "EmptyTag"): + # XXX: we do not look at the preceding event, so instead we never + # omit the colgroup element's end tag when it is immediately + # followed by another colgroup element. See is_optional_end. + return next["name"] == "col" + else: + return False + elif tagname == 'tbody': + # A tbody element's start tag may be omitted if the first thing + # inside the tbody element is a tr element, and if the element is + # not immediately preceded by a tbody, thead, or tfoot element + # whose end tag has been omitted. + if type == "StartTag": + # omit the thead and tfoot elements' end tag when they are + # immediately followed by a tbody element. See is_optional_end. + if previous and previous['type'] == 'EndTag' and \ + previous['name'] in ('tbody', 'thead', 'tfoot'): + return False + return next["name"] == 'tr' + else: + return False + return False + + def is_optional_end(self, tagname, next): + type = next and next["type"] or None + if tagname in ('html', 'head', 'body'): + # An html element's end tag may be omitted if the html element + # is not immediately followed by a space character or a comment. + return type not in ("Comment", "SpaceCharacters") + elif tagname in ('li', 'optgroup', 'tr'): + # A li element's end tag may be omitted if the li element is + # immediately followed by another li element or if there is + # no more content in the parent element. + # An optgroup element's end tag may be omitted if the optgroup + # element is immediately followed by another optgroup element, + # or if there is no more content in the parent element. + # A tr element's end tag may be omitted if the tr element is + # immediately followed by another tr element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] == tagname + else: + return type == "EndTag" or type is None + elif tagname in ('dt', 'dd'): + # A dt element's end tag may be omitted if the dt element is + # immediately followed by another dt element or a dd element. + # A dd element's end tag may be omitted if the dd element is + # immediately followed by another dd element or a dt element, + # or if there is no more content in the parent element. + if type == "StartTag": + return next["name"] in ('dt', 'dd') + elif tagname == 'dd': + return type == "EndTag" or type is None + else: + return False + elif tagname == 'p': + # A p element's end tag may be omitted if the p element is + # immediately followed by an address, article, aside, + # blockquote, datagrid, dialog, dir, div, dl, fieldset, + # footer, form, h1, h2, h3, h4, h5, h6, header, hr, menu, + # nav, ol, p, pre, section, table, or ul, element, or if + # there is no more content in the parent element. + if type in ("StartTag", "EmptyTag"): + return next["name"] in ('address', 'article', 'aside', + 'blockquote', 'datagrid', 'dialog', + 'dir', 'div', 'dl', 'fieldset', 'footer', + 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', + 'header', 'hr', 'menu', 'nav', 'ol', + 'p', 'pre', 'section', 'table', 'ul') + else: + return type == "EndTag" or type is None + elif tagname == 'option': + # An option element's end tag may be omitted if the option + # element is immediately followed by another option element, + # or if it is immediately followed by an optgroup + # element, or if there is no more content in the parent + # element. + if type == "StartTag": + return next["name"] in ('option', 'optgroup') + else: + return type == "EndTag" or type is None + elif tagname in ('rt', 'rp'): + # An rt element's end tag may be omitted if the rt element is + # immediately followed by an rt or rp element, or if there is + # no more content in the parent element. + # An rp element's end tag may be omitted if the rp element is + # immediately followed by an rt or rp element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] in ('rt', 'rp') + else: + return type == "EndTag" or type is None + elif tagname == 'colgroup': + # A colgroup element's end tag may be omitted if the colgroup + # element is not immediately followed by a space character or + # a comment. + if type in ("Comment", "SpaceCharacters"): + return False + elif type == "StartTag": + # XXX: we also look for an immediately following colgroup + # element. See is_optional_start. + return next["name"] != 'colgroup' + else: + return True + elif tagname in ('thead', 'tbody'): + # A thead element's end tag may be omitted if the thead element + # is immediately followed by a tbody or tfoot element. + # A tbody element's end tag may be omitted if the tbody element + # is immediately followed by a tbody or tfoot element, or if + # there is no more content in the parent element. + # A tfoot element's end tag may be omitted if the tfoot element + # is immediately followed by a tbody element, or if there is no + # more content in the parent element. + # XXX: we never omit the end tag when the following element is + # a tbody. See is_optional_start. + if type == "StartTag": + return next["name"] in ['tbody', 'tfoot'] + elif tagname == 'tbody': + return type == "EndTag" or type is None + else: + return False + elif tagname == 'tfoot': + # A tfoot element's end tag may be omitted if the tfoot element + # is immediately followed by a tbody element, or if there is no + # more content in the parent element. + # XXX: we never omit the end tag when the following element is + # a tbody. See is_optional_start. + if type == "StartTag": + return next["name"] == 'tbody' + else: + return type == "EndTag" or type is None + elif tagname in ('td', 'th'): + # A td element's end tag may be omitted if the td element is + # immediately followed by a td or th element, or if there is + # no more content in the parent element. + # A th element's end tag may be omitted if the th element is + # immediately followed by a td or th element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] in ('td', 'th') + else: + return type == "EndTag" or type is None + return False diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/sanitizer.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/sanitizer.py new file mode 100644 index 0000000..aa7431d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/sanitizer.py @@ -0,0 +1,916 @@ +"""Deprecated from html5lib 1.1. + +See `here `_ for +information about its deprecation; `Bleach `_ +is recommended as a replacement. Please let us know in the aforementioned issue +if Bleach is unsuitable for your needs. + +""" +from __future__ import absolute_import, division, unicode_literals + +import re +import warnings +from xml.sax.saxutils import escape, unescape + +from pip._vendor.six.moves import urllib_parse as urlparse + +from . import base +from ..constants import namespaces, prefixes + +__all__ = ["Filter"] + + +_deprecation_msg = ( + "html5lib's sanitizer is deprecated; see " + + "https://github.com/html5lib/html5lib-python/issues/443 and please let " + + "us know if Bleach is unsuitable for your needs" +) + +warnings.warn(_deprecation_msg, DeprecationWarning) + +allowed_elements = frozenset(( + (namespaces['html'], 'a'), + (namespaces['html'], 'abbr'), + (namespaces['html'], 'acronym'), + (namespaces['html'], 'address'), + (namespaces['html'], 'area'), + (namespaces['html'], 'article'), + (namespaces['html'], 'aside'), + (namespaces['html'], 'audio'), + (namespaces['html'], 'b'), + (namespaces['html'], 'big'), + (namespaces['html'], 'blockquote'), + (namespaces['html'], 'br'), + (namespaces['html'], 'button'), + (namespaces['html'], 'canvas'), + (namespaces['html'], 'caption'), + (namespaces['html'], 'center'), + (namespaces['html'], 'cite'), + (namespaces['html'], 'code'), + (namespaces['html'], 'col'), + (namespaces['html'], 'colgroup'), + (namespaces['html'], 'command'), + (namespaces['html'], 'datagrid'), + (namespaces['html'], 'datalist'), + (namespaces['html'], 'dd'), + (namespaces['html'], 'del'), + (namespaces['html'], 'details'), + (namespaces['html'], 'dfn'), + (namespaces['html'], 'dialog'), + (namespaces['html'], 'dir'), + (namespaces['html'], 'div'), + (namespaces['html'], 'dl'), + (namespaces['html'], 'dt'), + (namespaces['html'], 'em'), + (namespaces['html'], 'event-source'), + (namespaces['html'], 'fieldset'), + (namespaces['html'], 'figcaption'), + (namespaces['html'], 'figure'), + (namespaces['html'], 'footer'), + (namespaces['html'], 'font'), + (namespaces['html'], 'form'), + (namespaces['html'], 'header'), + (namespaces['html'], 'h1'), + (namespaces['html'], 'h2'), + (namespaces['html'], 'h3'), + (namespaces['html'], 'h4'), + (namespaces['html'], 'h5'), + (namespaces['html'], 'h6'), + (namespaces['html'], 'hr'), + (namespaces['html'], 'i'), + (namespaces['html'], 'img'), + (namespaces['html'], 'input'), + (namespaces['html'], 'ins'), + (namespaces['html'], 'keygen'), + (namespaces['html'], 'kbd'), + (namespaces['html'], 'label'), + (namespaces['html'], 'legend'), + (namespaces['html'], 'li'), + (namespaces['html'], 'm'), + (namespaces['html'], 'map'), + (namespaces['html'], 'menu'), + (namespaces['html'], 'meter'), + (namespaces['html'], 'multicol'), + (namespaces['html'], 'nav'), + (namespaces['html'], 'nextid'), + (namespaces['html'], 'ol'), + (namespaces['html'], 'output'), + (namespaces['html'], 'optgroup'), + (namespaces['html'], 'option'), + (namespaces['html'], 'p'), + (namespaces['html'], 'pre'), + (namespaces['html'], 'progress'), + (namespaces['html'], 'q'), + (namespaces['html'], 's'), + (namespaces['html'], 'samp'), + (namespaces['html'], 'section'), + (namespaces['html'], 'select'), + (namespaces['html'], 'small'), + (namespaces['html'], 'sound'), + (namespaces['html'], 'source'), + (namespaces['html'], 'spacer'), + (namespaces['html'], 'span'), + (namespaces['html'], 'strike'), + (namespaces['html'], 'strong'), + (namespaces['html'], 'sub'), + (namespaces['html'], 'sup'), + (namespaces['html'], 'table'), + (namespaces['html'], 'tbody'), + (namespaces['html'], 'td'), + (namespaces['html'], 'textarea'), + (namespaces['html'], 'time'), + (namespaces['html'], 'tfoot'), + (namespaces['html'], 'th'), + (namespaces['html'], 'thead'), + (namespaces['html'], 'tr'), + (namespaces['html'], 'tt'), + (namespaces['html'], 'u'), + (namespaces['html'], 'ul'), + (namespaces['html'], 'var'), + (namespaces['html'], 'video'), + (namespaces['mathml'], 'maction'), + (namespaces['mathml'], 'math'), + (namespaces['mathml'], 'merror'), + (namespaces['mathml'], 'mfrac'), + (namespaces['mathml'], 'mi'), + (namespaces['mathml'], 'mmultiscripts'), + (namespaces['mathml'], 'mn'), + (namespaces['mathml'], 'mo'), + (namespaces['mathml'], 'mover'), + (namespaces['mathml'], 'mpadded'), + (namespaces['mathml'], 'mphantom'), + (namespaces['mathml'], 'mprescripts'), + (namespaces['mathml'], 'mroot'), + (namespaces['mathml'], 'mrow'), + (namespaces['mathml'], 'mspace'), + (namespaces['mathml'], 'msqrt'), + (namespaces['mathml'], 'mstyle'), + (namespaces['mathml'], 'msub'), + (namespaces['mathml'], 'msubsup'), + (namespaces['mathml'], 'msup'), + (namespaces['mathml'], 'mtable'), + (namespaces['mathml'], 'mtd'), + (namespaces['mathml'], 'mtext'), + (namespaces['mathml'], 'mtr'), + (namespaces['mathml'], 'munder'), + (namespaces['mathml'], 'munderover'), + (namespaces['mathml'], 'none'), + (namespaces['svg'], 'a'), + (namespaces['svg'], 'animate'), + (namespaces['svg'], 'animateColor'), + (namespaces['svg'], 'animateMotion'), + (namespaces['svg'], 'animateTransform'), + (namespaces['svg'], 'clipPath'), + (namespaces['svg'], 'circle'), + (namespaces['svg'], 'defs'), + (namespaces['svg'], 'desc'), + (namespaces['svg'], 'ellipse'), + (namespaces['svg'], 'font-face'), + (namespaces['svg'], 'font-face-name'), + (namespaces['svg'], 'font-face-src'), + (namespaces['svg'], 'g'), + (namespaces['svg'], 'glyph'), + (namespaces['svg'], 'hkern'), + (namespaces['svg'], 'linearGradient'), + (namespaces['svg'], 'line'), + (namespaces['svg'], 'marker'), + (namespaces['svg'], 'metadata'), + (namespaces['svg'], 'missing-glyph'), + (namespaces['svg'], 'mpath'), + (namespaces['svg'], 'path'), + (namespaces['svg'], 'polygon'), + (namespaces['svg'], 'polyline'), + (namespaces['svg'], 'radialGradient'), + (namespaces['svg'], 'rect'), + (namespaces['svg'], 'set'), + (namespaces['svg'], 'stop'), + (namespaces['svg'], 'svg'), + (namespaces['svg'], 'switch'), + (namespaces['svg'], 'text'), + (namespaces['svg'], 'title'), + (namespaces['svg'], 'tspan'), + (namespaces['svg'], 'use'), +)) + +allowed_attributes = frozenset(( + # HTML attributes + (None, 'abbr'), + (None, 'accept'), + (None, 'accept-charset'), + (None, 'accesskey'), + (None, 'action'), + (None, 'align'), + (None, 'alt'), + (None, 'autocomplete'), + (None, 'autofocus'), + (None, 'axis'), + (None, 'background'), + (None, 'balance'), + (None, 'bgcolor'), + (None, 'bgproperties'), + (None, 'border'), + (None, 'bordercolor'), + (None, 'bordercolordark'), + (None, 'bordercolorlight'), + (None, 'bottompadding'), + (None, 'cellpadding'), + (None, 'cellspacing'), + (None, 'ch'), + (None, 'challenge'), + (None, 'char'), + (None, 'charoff'), + (None, 'choff'), + (None, 'charset'), + (None, 'checked'), + (None, 'cite'), + (None, 'class'), + (None, 'clear'), + (None, 'color'), + (None, 'cols'), + (None, 'colspan'), + (None, 'compact'), + (None, 'contenteditable'), + (None, 'controls'), + (None, 'coords'), + (None, 'data'), + (None, 'datafld'), + (None, 'datapagesize'), + (None, 'datasrc'), + (None, 'datetime'), + (None, 'default'), + (None, 'delay'), + (None, 'dir'), + (None, 'disabled'), + (None, 'draggable'), + (None, 'dynsrc'), + (None, 'enctype'), + (None, 'end'), + (None, 'face'), + (None, 'for'), + (None, 'form'), + (None, 'frame'), + (None, 'galleryimg'), + (None, 'gutter'), + (None, 'headers'), + (None, 'height'), + (None, 'hidefocus'), + (None, 'hidden'), + (None, 'high'), + (None, 'href'), + (None, 'hreflang'), + (None, 'hspace'), + (None, 'icon'), + (None, 'id'), + (None, 'inputmode'), + (None, 'ismap'), + (None, 'keytype'), + (None, 'label'), + (None, 'leftspacing'), + (None, 'lang'), + (None, 'list'), + (None, 'longdesc'), + (None, 'loop'), + (None, 'loopcount'), + (None, 'loopend'), + (None, 'loopstart'), + (None, 'low'), + (None, 'lowsrc'), + (None, 'max'), + (None, 'maxlength'), + (None, 'media'), + (None, 'method'), + (None, 'min'), + (None, 'multiple'), + (None, 'name'), + (None, 'nohref'), + (None, 'noshade'), + (None, 'nowrap'), + (None, 'open'), + (None, 'optimum'), + (None, 'pattern'), + (None, 'ping'), + (None, 'point-size'), + (None, 'poster'), + (None, 'pqg'), + (None, 'preload'), + (None, 'prompt'), + (None, 'radiogroup'), + (None, 'readonly'), + (None, 'rel'), + (None, 'repeat-max'), + (None, 'repeat-min'), + (None, 'replace'), + (None, 'required'), + (None, 'rev'), + (None, 'rightspacing'), + (None, 'rows'), + (None, 'rowspan'), + (None, 'rules'), + (None, 'scope'), + (None, 'selected'), + (None, 'shape'), + (None, 'size'), + (None, 'span'), + (None, 'src'), + (None, 'start'), + (None, 'step'), + (None, 'style'), + (None, 'summary'), + (None, 'suppress'), + (None, 'tabindex'), + (None, 'target'), + (None, 'template'), + (None, 'title'), + (None, 'toppadding'), + (None, 'type'), + (None, 'unselectable'), + (None, 'usemap'), + (None, 'urn'), + (None, 'valign'), + (None, 'value'), + (None, 'variable'), + (None, 'volume'), + (None, 'vspace'), + (None, 'vrml'), + (None, 'width'), + (None, 'wrap'), + (namespaces['xml'], 'lang'), + # MathML attributes + (None, 'actiontype'), + (None, 'align'), + (None, 'columnalign'), + (None, 'columnalign'), + (None, 'columnalign'), + (None, 'columnlines'), + (None, 'columnspacing'), + (None, 'columnspan'), + (None, 'depth'), + (None, 'display'), + (None, 'displaystyle'), + (None, 'equalcolumns'), + (None, 'equalrows'), + (None, 'fence'), + (None, 'fontstyle'), + (None, 'fontweight'), + (None, 'frame'), + (None, 'height'), + (None, 'linethickness'), + (None, 'lspace'), + (None, 'mathbackground'), + (None, 'mathcolor'), + (None, 'mathvariant'), + (None, 'mathvariant'), + (None, 'maxsize'), + (None, 'minsize'), + (None, 'other'), + (None, 'rowalign'), + (None, 'rowalign'), + (None, 'rowalign'), + (None, 'rowlines'), + (None, 'rowspacing'), + (None, 'rowspan'), + (None, 'rspace'), + (None, 'scriptlevel'), + (None, 'selection'), + (None, 'separator'), + (None, 'stretchy'), + (None, 'width'), + (None, 'width'), + (namespaces['xlink'], 'href'), + (namespaces['xlink'], 'show'), + (namespaces['xlink'], 'type'), + # SVG attributes + (None, 'accent-height'), + (None, 'accumulate'), + (None, 'additive'), + (None, 'alphabetic'), + (None, 'arabic-form'), + (None, 'ascent'), + (None, 'attributeName'), + (None, 'attributeType'), + (None, 'baseProfile'), + (None, 'bbox'), + (None, 'begin'), + (None, 'by'), + (None, 'calcMode'), + (None, 'cap-height'), + (None, 'class'), + (None, 'clip-path'), + (None, 'color'), + (None, 'color-rendering'), + (None, 'content'), + (None, 'cx'), + (None, 'cy'), + (None, 'd'), + (None, 'dx'), + (None, 'dy'), + (None, 'descent'), + (None, 'display'), + (None, 'dur'), + (None, 'end'), + (None, 'fill'), + (None, 'fill-opacity'), + (None, 'fill-rule'), + (None, 'font-family'), + (None, 'font-size'), + (None, 'font-stretch'), + (None, 'font-style'), + (None, 'font-variant'), + (None, 'font-weight'), + (None, 'from'), + (None, 'fx'), + (None, 'fy'), + (None, 'g1'), + (None, 'g2'), + (None, 'glyph-name'), + (None, 'gradientUnits'), + (None, 'hanging'), + (None, 'height'), + (None, 'horiz-adv-x'), + (None, 'horiz-origin-x'), + (None, 'id'), + (None, 'ideographic'), + (None, 'k'), + (None, 'keyPoints'), + (None, 'keySplines'), + (None, 'keyTimes'), + (None, 'lang'), + (None, 'marker-end'), + (None, 'marker-mid'), + (None, 'marker-start'), + (None, 'markerHeight'), + (None, 'markerUnits'), + (None, 'markerWidth'), + (None, 'mathematical'), + (None, 'max'), + (None, 'min'), + (None, 'name'), + (None, 'offset'), + (None, 'opacity'), + (None, 'orient'), + (None, 'origin'), + (None, 'overline-position'), + (None, 'overline-thickness'), + (None, 'panose-1'), + (None, 'path'), + (None, 'pathLength'), + (None, 'points'), + (None, 'preserveAspectRatio'), + (None, 'r'), + (None, 'refX'), + (None, 'refY'), + (None, 'repeatCount'), + (None, 'repeatDur'), + (None, 'requiredExtensions'), + (None, 'requiredFeatures'), + (None, 'restart'), + (None, 'rotate'), + (None, 'rx'), + (None, 'ry'), + (None, 'slope'), + (None, 'stemh'), + (None, 'stemv'), + (None, 'stop-color'), + (None, 'stop-opacity'), + (None, 'strikethrough-position'), + (None, 'strikethrough-thickness'), + (None, 'stroke'), + (None, 'stroke-dasharray'), + (None, 'stroke-dashoffset'), + (None, 'stroke-linecap'), + (None, 'stroke-linejoin'), + (None, 'stroke-miterlimit'), + (None, 'stroke-opacity'), + (None, 'stroke-width'), + (None, 'systemLanguage'), + (None, 'target'), + (None, 'text-anchor'), + (None, 'to'), + (None, 'transform'), + (None, 'type'), + (None, 'u1'), + (None, 'u2'), + (None, 'underline-position'), + (None, 'underline-thickness'), + (None, 'unicode'), + (None, 'unicode-range'), + (None, 'units-per-em'), + (None, 'values'), + (None, 'version'), + (None, 'viewBox'), + (None, 'visibility'), + (None, 'width'), + (None, 'widths'), + (None, 'x'), + (None, 'x-height'), + (None, 'x1'), + (None, 'x2'), + (namespaces['xlink'], 'actuate'), + (namespaces['xlink'], 'arcrole'), + (namespaces['xlink'], 'href'), + (namespaces['xlink'], 'role'), + (namespaces['xlink'], 'show'), + (namespaces['xlink'], 'title'), + (namespaces['xlink'], 'type'), + (namespaces['xml'], 'base'), + (namespaces['xml'], 'lang'), + (namespaces['xml'], 'space'), + (None, 'y'), + (None, 'y1'), + (None, 'y2'), + (None, 'zoomAndPan'), +)) + +attr_val_is_uri = frozenset(( + (None, 'href'), + (None, 'src'), + (None, 'cite'), + (None, 'action'), + (None, 'longdesc'), + (None, 'poster'), + (None, 'background'), + (None, 'datasrc'), + (None, 'dynsrc'), + (None, 'lowsrc'), + (None, 'ping'), + (namespaces['xlink'], 'href'), + (namespaces['xml'], 'base'), +)) + +svg_attr_val_allows_ref = frozenset(( + (None, 'clip-path'), + (None, 'color-profile'), + (None, 'cursor'), + (None, 'fill'), + (None, 'filter'), + (None, 'marker'), + (None, 'marker-start'), + (None, 'marker-mid'), + (None, 'marker-end'), + (None, 'mask'), + (None, 'stroke'), +)) + +svg_allow_local_href = frozenset(( + (None, 'altGlyph'), + (None, 'animate'), + (None, 'animateColor'), + (None, 'animateMotion'), + (None, 'animateTransform'), + (None, 'cursor'), + (None, 'feImage'), + (None, 'filter'), + (None, 'linearGradient'), + (None, 'pattern'), + (None, 'radialGradient'), + (None, 'textpath'), + (None, 'tref'), + (None, 'set'), + (None, 'use') +)) + +allowed_css_properties = frozenset(( + 'azimuth', + 'background-color', + 'border-bottom-color', + 'border-collapse', + 'border-color', + 'border-left-color', + 'border-right-color', + 'border-top-color', + 'clear', + 'color', + 'cursor', + 'direction', + 'display', + 'elevation', + 'float', + 'font', + 'font-family', + 'font-size', + 'font-style', + 'font-variant', + 'font-weight', + 'height', + 'letter-spacing', + 'line-height', + 'overflow', + 'pause', + 'pause-after', + 'pause-before', + 'pitch', + 'pitch-range', + 'richness', + 'speak', + 'speak-header', + 'speak-numeral', + 'speak-punctuation', + 'speech-rate', + 'stress', + 'text-align', + 'text-decoration', + 'text-indent', + 'unicode-bidi', + 'vertical-align', + 'voice-family', + 'volume', + 'white-space', + 'width', +)) + +allowed_css_keywords = frozenset(( + 'auto', + 'aqua', + 'black', + 'block', + 'blue', + 'bold', + 'both', + 'bottom', + 'brown', + 'center', + 'collapse', + 'dashed', + 'dotted', + 'fuchsia', + 'gray', + 'green', + '!important', + 'italic', + 'left', + 'lime', + 'maroon', + 'medium', + 'none', + 'navy', + 'normal', + 'nowrap', + 'olive', + 'pointer', + 'purple', + 'red', + 'right', + 'solid', + 'silver', + 'teal', + 'top', + 'transparent', + 'underline', + 'white', + 'yellow', +)) + +allowed_svg_properties = frozenset(( + 'fill', + 'fill-opacity', + 'fill-rule', + 'stroke', + 'stroke-width', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-opacity', +)) + +allowed_protocols = frozenset(( + 'ed2k', + 'ftp', + 'http', + 'https', + 'irc', + 'mailto', + 'news', + 'gopher', + 'nntp', + 'telnet', + 'webcal', + 'xmpp', + 'callto', + 'feed', + 'urn', + 'aim', + 'rsync', + 'tag', + 'ssh', + 'sftp', + 'rtsp', + 'afs', + 'data', +)) + +allowed_content_types = frozenset(( + 'image/png', + 'image/jpeg', + 'image/gif', + 'image/webp', + 'image/bmp', + 'text/plain', +)) + + +data_content_type = re.compile(r''' + ^ + # Match a content type / + (?P[-a-zA-Z0-9.]+/[-a-zA-Z0-9.]+) + # Match any character set and encoding + (?:(?:;charset=(?:[-a-zA-Z0-9]+)(?:;(?:base64))?) + |(?:;(?:base64))?(?:;charset=(?:[-a-zA-Z0-9]+))?) + # Assume the rest is data + ,.* + $ + ''', + re.VERBOSE) + + +class Filter(base.Filter): + """Sanitizes token stream of XHTML+MathML+SVG and of inline style attributes""" + def __init__(self, + source, + allowed_elements=allowed_elements, + allowed_attributes=allowed_attributes, + allowed_css_properties=allowed_css_properties, + allowed_css_keywords=allowed_css_keywords, + allowed_svg_properties=allowed_svg_properties, + allowed_protocols=allowed_protocols, + allowed_content_types=allowed_content_types, + attr_val_is_uri=attr_val_is_uri, + svg_attr_val_allows_ref=svg_attr_val_allows_ref, + svg_allow_local_href=svg_allow_local_href): + """Creates a Filter + + :arg allowed_elements: set of elements to allow--everything else will + be escaped + + :arg allowed_attributes: set of attributes to allow in + elements--everything else will be stripped + + :arg allowed_css_properties: set of CSS properties to allow--everything + else will be stripped + + :arg allowed_css_keywords: set of CSS keywords to allow--everything + else will be stripped + + :arg allowed_svg_properties: set of SVG properties to allow--everything + else will be removed + + :arg allowed_protocols: set of allowed protocols for URIs + + :arg allowed_content_types: set of allowed content types for ``data`` URIs. + + :arg attr_val_is_uri: set of attributes that have URI values--values + that have a scheme not listed in ``allowed_protocols`` are removed + + :arg svg_attr_val_allows_ref: set of SVG attributes that can have + references + + :arg svg_allow_local_href: set of SVG elements that can have local + hrefs--these are removed + + """ + super(Filter, self).__init__(source) + + warnings.warn(_deprecation_msg, DeprecationWarning) + + self.allowed_elements = allowed_elements + self.allowed_attributes = allowed_attributes + self.allowed_css_properties = allowed_css_properties + self.allowed_css_keywords = allowed_css_keywords + self.allowed_svg_properties = allowed_svg_properties + self.allowed_protocols = allowed_protocols + self.allowed_content_types = allowed_content_types + self.attr_val_is_uri = attr_val_is_uri + self.svg_attr_val_allows_ref = svg_attr_val_allows_ref + self.svg_allow_local_href = svg_allow_local_href + + def __iter__(self): + for token in base.Filter.__iter__(self): + token = self.sanitize_token(token) + if token: + yield token + + # Sanitize the +html+, escaping all elements not in ALLOWED_ELEMENTS, and + # stripping out all attributes not in ALLOWED_ATTRIBUTES. Style attributes + # are parsed, and a restricted set, specified by ALLOWED_CSS_PROPERTIES and + # ALLOWED_CSS_KEYWORDS, are allowed through. attributes in ATTR_VAL_IS_URI + # are scanned, and only URI schemes specified in ALLOWED_PROTOCOLS are + # allowed. + # + # sanitize_html('') + # => <script> do_nasty_stuff() </script> + # sanitize_html('Click here for $100') + # => Click here for $100 + def sanitize_token(self, token): + + # accommodate filters which use token_type differently + token_type = token["type"] + if token_type in ("StartTag", "EndTag", "EmptyTag"): + name = token["name"] + namespace = token["namespace"] + if ((namespace, name) in self.allowed_elements or + (namespace is None and + (namespaces["html"], name) in self.allowed_elements)): + return self.allowed_token(token) + else: + return self.disallowed_token(token) + elif token_type == "Comment": + pass + else: + return token + + def allowed_token(self, token): + if "data" in token: + attrs = token["data"] + attr_names = set(attrs.keys()) + + # Remove forbidden attributes + for to_remove in (attr_names - self.allowed_attributes): + del token["data"][to_remove] + attr_names.remove(to_remove) + + # Remove attributes with disallowed URL values + for attr in (attr_names & self.attr_val_is_uri): + assert attr in attrs + # I don't have a clue where this regexp comes from or why it matches those + # characters, nor why we call unescape. I just know it's always been here. + # Should you be worried by this comment in a sanitizer? Yes. On the other hand, all + # this will do is remove *more* than it otherwise would. + val_unescaped = re.sub("[`\x00-\x20\x7f-\xa0\\s]+", '', + unescape(attrs[attr])).lower() + # remove replacement characters from unescaped characters + val_unescaped = val_unescaped.replace("\ufffd", "") + try: + uri = urlparse.urlparse(val_unescaped) + except ValueError: + uri = None + del attrs[attr] + if uri and uri.scheme: + if uri.scheme not in self.allowed_protocols: + del attrs[attr] + if uri.scheme == 'data': + m = data_content_type.match(uri.path) + if not m: + del attrs[attr] + elif m.group('content_type') not in self.allowed_content_types: + del attrs[attr] + + for attr in self.svg_attr_val_allows_ref: + if attr in attrs: + attrs[attr] = re.sub(r'url\s*\(\s*[^#\s][^)]+?\)', + ' ', + unescape(attrs[attr])) + if (token["name"] in self.svg_allow_local_href and + (namespaces['xlink'], 'href') in attrs and re.search(r'^\s*[^#\s].*', + attrs[(namespaces['xlink'], 'href')])): + del attrs[(namespaces['xlink'], 'href')] + if (None, 'style') in attrs: + attrs[(None, 'style')] = self.sanitize_css(attrs[(None, 'style')]) + token["data"] = attrs + return token + + def disallowed_token(self, token): + token_type = token["type"] + if token_type == "EndTag": + token["data"] = "" % token["name"] + elif token["data"]: + assert token_type in ("StartTag", "EmptyTag") + attrs = [] + for (ns, name), v in token["data"].items(): + attrs.append(' %s="%s"' % (name if ns is None else "%s:%s" % (prefixes[ns], name), escape(v))) + token["data"] = "<%s%s>" % (token["name"], ''.join(attrs)) + else: + token["data"] = "<%s>" % token["name"] + if token.get("selfClosing"): + token["data"] = token["data"][:-1] + "/>" + + token["type"] = "Characters" + + del token["name"] + return token + + def sanitize_css(self, style): + # disallow urls + style = re.compile(r'url\s*\(\s*[^\s)]+?\s*\)\s*').sub(' ', style) + + # gauntlet + if not re.match(r"""^([:,;#%.\sa-zA-Z0-9!]|\w-\w|'[\s\w]+'|"[\s\w]+"|\([\d,\s]+\))*$""", style): + return '' + if not re.match(r"^\s*([-\w]+\s*:[^:;]*(;\s*|$))*$", style): + return '' + + clean = [] + for prop, value in re.findall(r"([-\w]+)\s*:\s*([^:;]*)", style): + if not value: + continue + if prop.lower() in self.allowed_css_properties: + clean.append(prop + ': ' + value + ';') + elif prop.split('-')[0].lower() in ['background', 'border', 'margin', + 'padding']: + for keyword in value.split(): + if keyword not in self.allowed_css_keywords and \ + not re.match(r"^(#[0-9a-fA-F]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|\d{0,2}\.?\d{0,2}(cm|em|ex|in|mm|pc|pt|px|%|,|\))?)$", keyword): # noqa + break + else: + clean.append(prop + ': ' + value + ';') + elif prop.lower() in self.allowed_svg_properties: + clean.append(prop + ': ' + value + ';') + + return ' '.join(clean) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/whitespace.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/whitespace.py new file mode 100644 index 0000000..0d12584 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/whitespace.py @@ -0,0 +1,38 @@ +from __future__ import absolute_import, division, unicode_literals + +import re + +from . import base +from ..constants import rcdataElements, spaceCharacters +spaceCharacters = "".join(spaceCharacters) + +SPACES_REGEX = re.compile("[%s]+" % spaceCharacters) + + +class Filter(base.Filter): + """Collapses whitespace except in pre, textarea, and script elements""" + spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements)) + + def __iter__(self): + preserve = 0 + for token in base.Filter.__iter__(self): + type = token["type"] + if type == "StartTag" \ + and (preserve or token["name"] in self.spacePreserveElements): + preserve += 1 + + elif type == "EndTag" and preserve: + preserve -= 1 + + elif not preserve and type == "SpaceCharacters" and token["data"]: + # Test on token["data"] above to not introduce spaces where there were not + token["data"] = " " + + elif not preserve and type == "Characters": + token["data"] = collapse_spaces(token["data"]) + + yield token + + +def collapse_spaces(text): + return SPACES_REGEX.sub(' ', text) diff --git a/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/html5parser.py b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/html5parser.py new file mode 100644 index 0000000..d06784f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/html5parser.py @@ -0,0 +1,2795 @@ +from __future__ import absolute_import, division, unicode_literals +from pip._vendor.six import with_metaclass, viewkeys + +import types + +from . import _inputstream +from . import _tokenizer + +from . import treebuilders +from .treebuilders.base import Marker + +from . import _utils +from .constants import ( + spaceCharacters, asciiUpper2Lower, + specialElements, headingElements, cdataElements, rcdataElements, + tokenTypes, tagTokenTypes, + namespaces, + htmlIntegrationPointElements, mathmlTextIntegrationPointElements, + adjustForeignAttributes as adjustForeignAttributesMap, + adjustMathMLAttributes, adjustSVGAttributes, + E, + _ReparseException +) + + +def parse(doc, treebuilder="etree", namespaceHTMLElements=True, **kwargs): + """Parse an HTML document as a string or file-like object into a tree + + :arg doc: the document to parse as a string or file-like object + + :arg treebuilder: the treebuilder to use when parsing + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :returns: parsed tree + + Example: + + >>> from html5lib.html5parser import parse + >>> parse('

    This is a doc

    ') + + + """ + tb = treebuilders.getTreeBuilder(treebuilder) + p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) + return p.parse(doc, **kwargs) + + +def parseFragment(doc, container="div", treebuilder="etree", namespaceHTMLElements=True, **kwargs): + """Parse an HTML fragment as a string or file-like object into a tree + + :arg doc: the fragment to parse as a string or file-like object + + :arg container: the container context to parse the fragment in + + :arg treebuilder: the treebuilder to use when parsing + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :returns: parsed tree + + Example: + + >>> from html5lib.html5libparser import parseFragment + >>> parseFragment('this is a fragment') + + + """ + tb = treebuilders.getTreeBuilder(treebuilder) + p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) + return p.parseFragment(doc, container=container, **kwargs) + + +def method_decorator_metaclass(function): + class Decorated(type): + def __new__(meta, classname, bases, classDict): + for attributeName, attribute in classDict.items(): + if isinstance(attribute, types.FunctionType): + attribute = function(attribute) + + classDict[attributeName] = attribute + return type.__new__(meta, classname, bases, classDict) + return Decorated + + +class HTMLParser(object): + """HTML parser + + Generates a tree structure from a stream of (possibly malformed) HTML. + + """ + + def __init__(self, tree=None, strict=False, namespaceHTMLElements=True, debug=False): + """ + :arg tree: a treebuilder class controlling the type of tree that will be + returned. Built in treebuilders can be accessed through + html5lib.treebuilders.getTreeBuilder(treeType) + + :arg strict: raise an exception when a parse error is encountered + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :arg debug: whether or not to enable debug mode which logs things + + Example: + + >>> from html5lib.html5parser import HTMLParser + >>> parser = HTMLParser() # generates parser with etree builder + >>> parser = HTMLParser('lxml', strict=True) # generates parser with lxml builder which is strict + + """ + + # Raise an exception on the first error encountered + self.strict = strict + + if tree is None: + tree = treebuilders.getTreeBuilder("etree") + self.tree = tree(namespaceHTMLElements) + self.errors = [] + + self.phases = {name: cls(self, self.tree) for name, cls in + getPhases(debug).items()} + + def _parse(self, stream, innerHTML=False, container="div", scripting=False, **kwargs): + + self.innerHTMLMode = innerHTML + self.container = container + self.scripting = scripting + self.tokenizer = _tokenizer.HTMLTokenizer(stream, parser=self, **kwargs) + self.reset() + + try: + self.mainLoop() + except _ReparseException: + self.reset() + self.mainLoop() + + def reset(self): + self.tree.reset() + self.firstStartTag = False + self.errors = [] + self.log = [] # only used with debug mode + # "quirks" / "limited quirks" / "no quirks" + self.compatMode = "no quirks" + + if self.innerHTMLMode: + self.innerHTML = self.container.lower() + + if self.innerHTML in cdataElements: + self.tokenizer.state = self.tokenizer.rcdataState + elif self.innerHTML in rcdataElements: + self.tokenizer.state = self.tokenizer.rawtextState + elif self.innerHTML == 'plaintext': + self.tokenizer.state = self.tokenizer.plaintextState + else: + # state already is data state + # self.tokenizer.state = self.tokenizer.dataState + pass + self.phase = self.phases["beforeHtml"] + self.phase.insertHtmlElement() + self.resetInsertionMode() + else: + self.innerHTML = False # pylint:disable=redefined-variable-type + self.phase = self.phases["initial"] + + self.lastPhase = None + + self.beforeRCDataPhase = None + + self.framesetOK = True + + @property + def documentEncoding(self): + """Name of the character encoding that was used to decode the input stream, or + :obj:`None` if that is not determined yet + + """ + if not hasattr(self, 'tokenizer'): + return None + return self.tokenizer.stream.charEncoding[0].name + + def isHTMLIntegrationPoint(self, element): + if (element.name == "annotation-xml" and + element.namespace == namespaces["mathml"]): + return ("encoding" in element.attributes and + element.attributes["encoding"].translate( + asciiUpper2Lower) in + ("text/html", "application/xhtml+xml")) + else: + return (element.namespace, element.name) in htmlIntegrationPointElements + + def isMathMLTextIntegrationPoint(self, element): + return (element.namespace, element.name) in mathmlTextIntegrationPointElements + + def mainLoop(self): + CharactersToken = tokenTypes["Characters"] + SpaceCharactersToken = tokenTypes["SpaceCharacters"] + StartTagToken = tokenTypes["StartTag"] + EndTagToken = tokenTypes["EndTag"] + CommentToken = tokenTypes["Comment"] + DoctypeToken = tokenTypes["Doctype"] + ParseErrorToken = tokenTypes["ParseError"] + + for token in self.tokenizer: + prev_token = None + new_token = token + while new_token is not None: + prev_token = new_token + currentNode = self.tree.openElements[-1] if self.tree.openElements else None + currentNodeNamespace = currentNode.namespace if currentNode else None + currentNodeName = currentNode.name if currentNode else None + + type = new_token["type"] + + if type == ParseErrorToken: + self.parseError(new_token["data"], new_token.get("datavars", {})) + new_token = None + else: + if (len(self.tree.openElements) == 0 or + currentNodeNamespace == self.tree.defaultNamespace or + (self.isMathMLTextIntegrationPoint(currentNode) and + ((type == StartTagToken and + token["name"] not in frozenset(["mglyph", "malignmark"])) or + type in (CharactersToken, SpaceCharactersToken))) or + (currentNodeNamespace == namespaces["mathml"] and + currentNodeName == "annotation-xml" and + type == StartTagToken and + token["name"] == "svg") or + (self.isHTMLIntegrationPoint(currentNode) and + type in (StartTagToken, CharactersToken, SpaceCharactersToken))): + phase = self.phase + else: + phase = self.phases["inForeignContent"] + + if type == CharactersToken: + new_token = phase.processCharacters(new_token) + elif type == SpaceCharactersToken: + new_token = phase.processSpaceCharacters(new_token) + elif type == StartTagToken: + new_token = phase.processStartTag(new_token) + elif type == EndTagToken: + new_token = phase.processEndTag(new_token) + elif type == CommentToken: + new_token = phase.processComment(new_token) + elif type == DoctypeToken: + new_token = phase.processDoctype(new_token) + + if (type == StartTagToken and prev_token["selfClosing"] and + not prev_token["selfClosingAcknowledged"]): + self.parseError("non-void-element-with-trailing-solidus", + {"name": prev_token["name"]}) + + # When the loop finishes it's EOF + reprocess = True + phases = [] + while reprocess: + phases.append(self.phase) + reprocess = self.phase.processEOF() + if reprocess: + assert self.phase not in phases + + def parse(self, stream, *args, **kwargs): + """Parse a HTML document into a well-formed tree + + :arg stream: a file-like object or string containing the HTML to be parsed + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element). + + :arg scripting: treat noscript elements as if JavaScript was turned on + + :returns: parsed tree + + Example: + + >>> from html5lib.html5parser import HTMLParser + >>> parser = HTMLParser() + >>> parser.parse('

    This is a doc

    ') + + + """ + self._parse(stream, False, None, *args, **kwargs) + return self.tree.getDocument() + + def parseFragment(self, stream, *args, **kwargs): + """Parse a HTML fragment into a well-formed tree fragment + + :arg container: name of the element we're setting the innerHTML + property if set to None, default to 'div' + + :arg stream: a file-like object or string containing the HTML to be parsed + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + :arg scripting: treat noscript elements as if JavaScript was turned on + + :returns: parsed tree + + Example: + + >>> from html5lib.html5libparser import HTMLParser + >>> parser = HTMLParser() + >>> parser.parseFragment('this is a fragment') + + + """ + self._parse(stream, True, *args, **kwargs) + return self.tree.getFragment() + + def parseError(self, errorcode="XXX-undefined-error", datavars=None): + # XXX The idea is to make errorcode mandatory. + if datavars is None: + datavars = {} + self.errors.append((self.tokenizer.stream.position(), errorcode, datavars)) + if self.strict: + raise ParseError(E[errorcode] % datavars) + + def adjustMathMLAttributes(self, token): + adjust_attributes(token, adjustMathMLAttributes) + + def adjustSVGAttributes(self, token): + adjust_attributes(token, adjustSVGAttributes) + + def adjustForeignAttributes(self, token): + adjust_attributes(token, adjustForeignAttributesMap) + + def reparseTokenNormal(self, token): + # pylint:disable=unused-argument + self.parser.phase() + + def resetInsertionMode(self): + # The name of this method is mostly historical. (It's also used in the + # specification.) + last = False + newModes = { + "select": "inSelect", + "td": "inCell", + "th": "inCell", + "tr": "inRow", + "tbody": "inTableBody", + "thead": "inTableBody", + "tfoot": "inTableBody", + "caption": "inCaption", + "colgroup": "inColumnGroup", + "table": "inTable", + "head": "inBody", + "body": "inBody", + "frameset": "inFrameset", + "html": "beforeHead" + } + for node in self.tree.openElements[::-1]: + nodeName = node.name + new_phase = None + if node == self.tree.openElements[0]: + assert self.innerHTML + last = True + nodeName = self.innerHTML + # Check for conditions that should only happen in the innerHTML + # case + if nodeName in ("select", "colgroup", "head", "html"): + assert self.innerHTML + + if not last and node.namespace != self.tree.defaultNamespace: + continue + + if nodeName in newModes: + new_phase = self.phases[newModes[nodeName]] + break + elif last: + new_phase = self.phases["inBody"] + break + + self.phase = new_phase + + def parseRCDataRawtext(self, token, contentType): + # Generic RCDATA/RAWTEXT Parsing algorithm + assert contentType in ("RAWTEXT", "RCDATA") + + self.tree.insertElement(token) + + if contentType == "RAWTEXT": + self.tokenizer.state = self.tokenizer.rawtextState + else: + self.tokenizer.state = self.tokenizer.rcdataState + + self.originalPhase = self.phase + + self.phase = self.phases["text"] + + +@_utils.memoize +def getPhases(debug): + def log(function): + """Logger that records which phase processes each token""" + type_names = {value: key for key, value in tokenTypes.items()} + + def wrapped(self, *args, **kwargs): + if function.__name__.startswith("process") and len(args) > 0: + token = args[0] + info = {"type": type_names[token['type']]} + if token['type'] in tagTokenTypes: + info["name"] = token['name'] + + self.parser.log.append((self.parser.tokenizer.state.__name__, + self.parser.phase.__class__.__name__, + self.__class__.__name__, + function.__name__, + info)) + return function(self, *args, **kwargs) + else: + return function(self, *args, **kwargs) + return wrapped + + def getMetaclass(use_metaclass, metaclass_func): + if use_metaclass: + return method_decorator_metaclass(metaclass_func) + else: + return type + + # pylint:disable=unused-argument + class Phase(with_metaclass(getMetaclass(debug, log))): + """Base class for helper object that implements each phase of processing + """ + __slots__ = ("parser", "tree", "__startTagCache", "__endTagCache") + + def __init__(self, parser, tree): + self.parser = parser + self.tree = tree + self.__startTagCache = {} + self.__endTagCache = {} + + def processEOF(self): + raise NotImplementedError + + def processComment(self, token): + # For most phases the following is correct. Where it's not it will be + # overridden. + self.tree.insertComment(token, self.tree.openElements[-1]) + + def processDoctype(self, token): + self.parser.parseError("unexpected-doctype") + + def processCharacters(self, token): + self.tree.insertText(token["data"]) + + def processSpaceCharacters(self, token): + self.tree.insertText(token["data"]) + + def processStartTag(self, token): + # Note the caching is done here rather than BoundMethodDispatcher as doing it there + # requires a circular reference to the Phase, and this ends up with a significant + # (CPython 2.7, 3.8) GC cost when parsing many short inputs + name = token["name"] + # In Py2, using `in` is quicker in general than try/except KeyError + # In Py3, `in` is quicker when there are few cache hits (typically short inputs) + if name in self.__startTagCache: + func = self.__startTagCache[name] + else: + func = self.__startTagCache[name] = self.startTagHandler[name] + # bound the cache size in case we get loads of unknown tags + while len(self.__startTagCache) > len(self.startTagHandler) * 1.1: + # this makes the eviction policy random on Py < 3.7 and FIFO >= 3.7 + self.__startTagCache.pop(next(iter(self.__startTagCache))) + return func(token) + + def startTagHtml(self, token): + if not self.parser.firstStartTag and token["name"] == "html": + self.parser.parseError("non-html-root") + # XXX Need a check here to see if the first start tag token emitted is + # this token... If it's not, invoke self.parser.parseError(). + for attr, value in token["data"].items(): + if attr not in self.tree.openElements[0].attributes: + self.tree.openElements[0].attributes[attr] = value + self.parser.firstStartTag = False + + def processEndTag(self, token): + # Note the caching is done here rather than BoundMethodDispatcher as doing it there + # requires a circular reference to the Phase, and this ends up with a significant + # (CPython 2.7, 3.8) GC cost when parsing many short inputs + name = token["name"] + # In Py2, using `in` is quicker in general than try/except KeyError + # In Py3, `in` is quicker when there are few cache hits (typically short inputs) + if name in self.__endTagCache: + func = self.__endTagCache[name] + else: + func = self.__endTagCache[name] = self.endTagHandler[name] + # bound the cache size in case we get loads of unknown tags + while len(self.__endTagCache) > len(self.endTagHandler) * 1.1: + # this makes the eviction policy random on Py < 3.7 and FIFO >= 3.7 + self.__endTagCache.pop(next(iter(self.__endTagCache))) + return func(token) + + class InitialPhase(Phase): + __slots__ = tuple() + + def processSpaceCharacters(self, token): + pass + + def processComment(self, token): + self.tree.insertComment(token, self.tree.document) + + def processDoctype(self, token): + name = token["name"] + publicId = token["publicId"] + systemId = token["systemId"] + correct = token["correct"] + + if (name != "html" or publicId is not None or + systemId is not None and systemId != "about:legacy-compat"): + self.parser.parseError("unknown-doctype") + + if publicId is None: + publicId = "" + + self.tree.insertDoctype(token) + + if publicId != "": + publicId = publicId.translate(asciiUpper2Lower) + + if (not correct or token["name"] != "html" or + publicId.startswith( + ("+//silmaril//dtd html pro v0r11 19970101//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", + "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//")) or + publicId in ("-//w3o//dtd w3 html strict 3.0//en//", + "-/w3c/dtd html 4.0 transitional/en", + "html") or + publicId.startswith( + ("-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//")) and + systemId is None or + systemId and systemId.lower() == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"): + self.parser.compatMode = "quirks" + elif (publicId.startswith( + ("-//w3c//dtd xhtml 1.0 frameset//", + "-//w3c//dtd xhtml 1.0 transitional//")) or + publicId.startswith( + ("-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//")) and + systemId is not None): + self.parser.compatMode = "limited quirks" + + self.parser.phase = self.parser.phases["beforeHtml"] + + def anythingElse(self): + self.parser.compatMode = "quirks" + self.parser.phase = self.parser.phases["beforeHtml"] + + def processCharacters(self, token): + self.parser.parseError("expected-doctype-but-got-chars") + self.anythingElse() + return token + + def processStartTag(self, token): + self.parser.parseError("expected-doctype-but-got-start-tag", + {"name": token["name"]}) + self.anythingElse() + return token + + def processEndTag(self, token): + self.parser.parseError("expected-doctype-but-got-end-tag", + {"name": token["name"]}) + self.anythingElse() + return token + + def processEOF(self): + self.parser.parseError("expected-doctype-but-got-eof") + self.anythingElse() + return True + + class BeforeHtmlPhase(Phase): + __slots__ = tuple() + + # helper methods + def insertHtmlElement(self): + self.tree.insertRoot(impliedTagToken("html", "StartTag")) + self.parser.phase = self.parser.phases["beforeHead"] + + # other + def processEOF(self): + self.insertHtmlElement() + return True + + def processComment(self, token): + self.tree.insertComment(token, self.tree.document) + + def processSpaceCharacters(self, token): + pass + + def processCharacters(self, token): + self.insertHtmlElement() + return token + + def processStartTag(self, token): + if token["name"] == "html": + self.parser.firstStartTag = True + self.insertHtmlElement() + return token + + def processEndTag(self, token): + if token["name"] not in ("head", "body", "html", "br"): + self.parser.parseError("unexpected-end-tag-before-html", + {"name": token["name"]}) + else: + self.insertHtmlElement() + return token + + class BeforeHeadPhase(Phase): + __slots__ = tuple() + + def processEOF(self): + self.startTagHead(impliedTagToken("head", "StartTag")) + return True + + def processSpaceCharacters(self, token): + pass + + def processCharacters(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagHead(self, token): + self.tree.insertElement(token) + self.tree.headPointer = self.tree.openElements[-1] + self.parser.phase = self.parser.phases["inHead"] + + def startTagOther(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def endTagImplyHead(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def endTagOther(self, token): + self.parser.parseError("end-tag-after-implied-root", + {"name": token["name"]}) + + startTagHandler = _utils.MethodDispatcher([ + ("html", startTagHtml), + ("head", startTagHead) + ]) + startTagHandler.default = startTagOther + + endTagHandler = _utils.MethodDispatcher([ + (("head", "body", "html", "br"), endTagImplyHead) + ]) + endTagHandler.default = endTagOther + + class InHeadPhase(Phase): + __slots__ = tuple() + + # the real thing + def processEOF(self): + self.anythingElse() + return True + + def processCharacters(self, token): + self.anythingElse() + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagHead(self, token): + self.parser.parseError("two-heads-are-not-better-than-one") + + def startTagBaseLinkCommand(self, token): + self.tree.insertElement(token) + self.tree.openElements.pop() + token["selfClosingAcknowledged"] = True + + def startTagMeta(self, token): + self.tree.insertElement(token) + self.tree.openElements.pop() + token["selfClosingAcknowledged"] = True + + attributes = token["data"] + if self.parser.tokenizer.stream.charEncoding[1] == "tentative": + if "charset" in attributes: + self.parser.tokenizer.stream.changeEncoding(attributes["charset"]) + elif ("content" in attributes and + "http-equiv" in attributes and + attributes["http-equiv"].lower() == "content-type"): + # Encoding it as UTF-8 here is a hack, as really we should pass + # the abstract Unicode string, and just use the + # ContentAttrParser on that, but using UTF-8 allows all chars + # to be encoded and as a ASCII-superset works. + data = _inputstream.EncodingBytes(attributes["content"].encode("utf-8")) + parser = _inputstream.ContentAttrParser(data) + codec = parser.parse() + self.parser.tokenizer.stream.changeEncoding(codec) + + def startTagTitle(self, token): + self.parser.parseRCDataRawtext(token, "RCDATA") + + def startTagNoFramesStyle(self, token): + # Need to decide whether to implement the scripting-disabled case + self.parser.parseRCDataRawtext(token, "RAWTEXT") + + def startTagNoscript(self, token): + if self.parser.scripting: + self.parser.parseRCDataRawtext(token, "RAWTEXT") + else: + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inHeadNoscript"] + + def startTagScript(self, token): + self.tree.insertElement(token) + self.parser.tokenizer.state = self.parser.tokenizer.scriptDataState + self.parser.originalPhase = self.parser.phase + self.parser.phase = self.parser.phases["text"] + + def startTagOther(self, token): + self.anythingElse() + return token + + def endTagHead(self, token): + node = self.parser.tree.openElements.pop() + assert node.name == "head", "Expected head got %s" % node.name + self.parser.phase = self.parser.phases["afterHead"] + + def endTagHtmlBodyBr(self, token): + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + self.endTagHead(impliedTagToken("head")) + + startTagHandler = _utils.MethodDispatcher([ + ("html", startTagHtml), + ("title", startTagTitle), + (("noframes", "style"), startTagNoFramesStyle), + ("noscript", startTagNoscript), + ("script", startTagScript), + (("base", "basefont", "bgsound", "command", "link"), + startTagBaseLinkCommand), + ("meta", startTagMeta), + ("head", startTagHead) + ]) + startTagHandler.default = startTagOther + + endTagHandler = _utils.MethodDispatcher([ + ("head", endTagHead), + (("br", "html", "body"), endTagHtmlBodyBr) + ]) + endTagHandler.default = endTagOther + + class InHeadNoscriptPhase(Phase): + __slots__ = tuple() + + def processEOF(self): + self.parser.parseError("eof-in-head-noscript") + self.anythingElse() + return True + + def processComment(self, token): + return self.parser.phases["inHead"].processComment(token) + + def processCharacters(self, token): + self.parser.parseError("char-in-head-noscript") + self.anythingElse() + return token + + def processSpaceCharacters(self, token): + return self.parser.phases["inHead"].processSpaceCharacters(token) + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagBaseLinkCommand(self, token): + return self.parser.phases["inHead"].processStartTag(token) + + def startTagHeadNoscript(self, token): + self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) + + def startTagOther(self, token): + self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) + self.anythingElse() + return token + + def endTagNoscript(self, token): + node = self.parser.tree.openElements.pop() + assert node.name == "noscript", "Expected noscript got %s" % node.name + self.parser.phase = self.parser.phases["inHead"] + + def endTagBr(self, token): + self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + # Caller must raise parse error first! + self.endTagNoscript(impliedTagToken("noscript")) + + startTagHandler = _utils.MethodDispatcher([ + ("html", startTagHtml), + (("basefont", "bgsound", "link", "meta", "noframes", "style"), startTagBaseLinkCommand), + (("head", "noscript"), startTagHeadNoscript), + ]) + startTagHandler.default = startTagOther + + endTagHandler = _utils.MethodDispatcher([ + ("noscript", endTagNoscript), + ("br", endTagBr), + ]) + endTagHandler.default = endTagOther + + class AfterHeadPhase(Phase): + __slots__ = tuple() + + def processEOF(self): + self.anythingElse() + return True + + def processCharacters(self, token): + self.anythingElse() + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagBody(self, token): + self.parser.framesetOK = False + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inBody"] + + def startTagFrameset(self, token): + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inFrameset"] + + def startTagFromHead(self, token): + self.parser.parseError("unexpected-start-tag-out-of-my-head", + {"name": token["name"]}) + self.tree.openElements.append(self.tree.headPointer) + self.parser.phases["inHead"].processStartTag(token) + for node in self.tree.openElements[::-1]: + if node.name == "head": + self.tree.openElements.remove(node) + break + + def startTagHead(self, token): + self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) + + def startTagOther(self, token): + self.anythingElse() + return token + + def endTagHtmlBodyBr(self, token): + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + self.tree.insertElement(impliedTagToken("body", "StartTag")) + self.parser.phase = self.parser.phases["inBody"] + self.parser.framesetOK = True + + startTagHandler = _utils.MethodDispatcher([ + ("html", startTagHtml), + ("body", startTagBody), + ("frameset", startTagFrameset), + (("base", "basefont", "bgsound", "link", "meta", "noframes", "script", + "style", "title"), + startTagFromHead), + ("head", startTagHead) + ]) + startTagHandler.default = startTagOther + endTagHandler = _utils.MethodDispatcher([(("body", "html", "br"), + endTagHtmlBodyBr)]) + endTagHandler.default = endTagOther + + class InBodyPhase(Phase): + # http://www.whatwg.org/specs/web-apps/current-work/#parsing-main-inbody + # the really-really-really-very crazy mode + __slots__ = ("processSpaceCharacters",) + + def __init__(self, *args, **kwargs): + super(InBodyPhase, self).__init__(*args, **kwargs) + # Set this to the default handler + self.processSpaceCharacters = self.processSpaceCharactersNonPre + + def isMatchingFormattingElement(self, node1, node2): + return (node1.name == node2.name and + node1.namespace == node2.namespace and + node1.attributes == node2.attributes) + + # helper + def addFormattingElement(self, token): + self.tree.insertElement(token) + element = self.tree.openElements[-1] + + matchingElements = [] + for node in self.tree.activeFormattingElements[::-1]: + if node is Marker: + break + elif self.isMatchingFormattingElement(node, element): + matchingElements.append(node) + + assert len(matchingElements) <= 3 + if len(matchingElements) == 3: + self.tree.activeFormattingElements.remove(matchingElements[-1]) + self.tree.activeFormattingElements.append(element) + + # the real deal + def processEOF(self): + allowed_elements = frozenset(("dd", "dt", "li", "p", "tbody", "td", + "tfoot", "th", "thead", "tr", "body", + "html")) + for node in self.tree.openElements[::-1]: + if node.name not in allowed_elements: + self.parser.parseError("expected-closing-tag-but-got-eof") + break + # Stop parsing + + def processSpaceCharactersDropNewline(self, token): + # Sometimes (start of
    , , and 
  • 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�+0H@r6%Cb-fm>)_&5g^DmUjaYl(NuLO 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∈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

    &kpvgZS`F8s`mgo3HzPaF?%Z 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 z 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

  • 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%0AsYlZV`G zLs#825o8p>w6Jef>cnJx*~C*i-^`l$Gi~xXlSWR@fV0#n&XWJT0>RGAR{0@x(b1TB z2D_5V7g0yUD`xEDG}DAV2=F*7XQO2~s0vk`XKJ&Dz=*YcrHOFII73>Q4c8#4YzCr; zuzVf|MfrUrtzI$kkk+u#Fz_;w)}U4EBBo?n{3o7+o>zog$fIzJDF`z%L6HUcK87OM zZUi(timQG3z63P6K)lBgBRB0NNMUzH5Y6{2zjhD>3=fFPo!b7JLhL9~!q2o1AWjuGJS*n9;eeSo9H~evIf#d_*s52Q zh{Yx;BALo!bEA3pLeUENhk-k0WMI)$o#B)1nXspn%0DphBhnIvVTSInk6&+rK0E1F|=?z9onyfL9g;6Cn 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 z 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µOx>?ou4Z2d?T(OT)2Z|P&Yp% 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

    fiJ0Go%5I)?j{UOa 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]#~ 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 z z{kB8gwFbk)*1nR0uKsN*{311NsI=+ zuA#f{aM+yawVfK;UJZREa5tuU=>2b3$~KS%>MhZ$CjI_vxAOjOdjDSj3`Sfz zWN`EHy76)EA+P(O{$8kYe_lz2XSHi_M$qE9uEnvlgArY(7A5<&jZTH@+r4&1@Y;dy zwLhg_J4&zZsn^Pwf4kRy7Q9yAUi(@4we9p;A6|>ahoaoCgQk_M5lDH809`3ht(R-F zn|=yXrKI>()b*@t{CVC*7pB6$U<^XYklm;=%DyM}tazju8FtVx8|CImo35(j$43im zux(&Nf-y_KE7q@=enkdzD8FQId~~#LC4WjQ7Y>T<>v&n)-PYnCX|ZiqDxA=Dg7tZc zeqNR>2Sz?}TYX{Mb`0NF-Z4medwm8u(k#4P^b4ca318$(EA$p5gyk>uVn+3Dhws?C zrAWu(PgKTV_H9}%XBNu+^&$A+FfzvUibGA}M^3)Nh916J&*BT<*!^(6yq^mHUN>3} zMU@^{TpjNltqk4uvP6Jd>~B@^q<57klRt(j$rO*PEg)1>6+hTF*BHzoFvF$1&igRf zxz+I%D6bl12H>e>;{4)^sql0l)!+)~?tC)Q7?PNWc&@}c@m$G5p`vL{J?b;f*>B*% z4XW1%n{lWQBa@}6R{VODiV^)9t6#>)G<_8+B!pc}L9iH_l(z}ycrwg!1opK5@BrTZ zv7U1qCXG=()EjlmA6WxWRF+gBrZ>eeNBr`1zg+5<#l=;>!Y{Y_<)MCgv0twB%gg+- zq=`vRcrdMw+XC7oZpRWRWR$%v$|N>Vvzs;+wc%!t3D7Ut)+{FC28oV|C^ zyzsR}4=kwPTVw&Qf@ftcor2Qr>_dy4cv>BQI2Ash+wg-6Wok^mKszjUJ~)7E6j%w7 zPqg})x$J|o`8eYsIHX?{x;Iq6kcGfL{i@ZkG5TdPPy-E9xKvj?5h#JDvj(=EmI{CQ zel8FAgfcv!?p)~q;#=BDLmT)8D!jyx9;_XK8Rg&z7YO3PGEVjVt7zlFm{JZl)06>V zuQow9uqy3H$+1+oF$F^BR$Z1&tLft+Wm2#zL4XTkU#Dgm@kBIApojQ zoQZG$u%b}&lgv{3_wZ_@PCR0=YM`gYAFqzT>75wb*wh*$Y~>m)$c?P-lM!@wqa_6& zlF=@f7!<`H?{8;Tn{ZgEc&?-Zd>??zY6X+liXwoR+5^d49%nl{`09;)Bd-S3J}@8bZ= zQ4!st#F8Nv%v;kn?MY;%HBqvJQMLPFKx2cp(E!Yb5ao=s)4 zPvNJUjdZnzP|yP5CeOWxRDyJJ3DA^uveTuK{71{KBKz*v(#545|BZUST7mL_f}0BO zCB&aFU)v+Y86UA$$5Xqi@j`&mbQ0(+ugg&NvYp?{ea!+s1j+9T!G*b03-b|d94Q4Q zgv)p2Ll>g9Sdgv3{XTEormAHy_+A~|^xKE3;vdHPFQ|@x6KY&Z<)+6%P48l}n8ZW3 zNia&Nl~gzm`kK}w$~r2`pwfR~sJV`wZJPJKOD)+W0V}UDatH7j_^KPCIlDtN=kY8r z78D~P6L+y6kB26HNy}CF7}!9#9sjMl(E&o%FZnH6-g2J-SM8Sy?=IR!cYP!W zhcS2_PX56m1 zCVIV_(bq+*@91u7Ai-Do^&cG=;T90Ez==bi$srdp2pN85Nb6C>lh_apJo&iTw}|e- z?maXh(Y$mkiGsr17Lu2!aTxZPJ9@NTnHJ!V>JdK_%Z3SVzU86!K%)~=s85rnIdp{G zo=sm`T^*x4i`{RdN6YNDPpV8F99T4|dn|rvVL)QMJ|9Sm*F3tlGXVeeZGc!v3%)OW zE6T}RDcg=Y7LX?2`by@H0e{(B493~pyty}SmY1A|VSzmxi!W;H1H30+CnzEhS=dB* zD%_p@*7oaI{CyrCV-GR9fhWe?9`;ReZ)lYVWOMhaZ*gaLdVB=89{Re9+fjVdiZ`p+ zi{gt`yqlu))CU-abdtuV)71DW^5dJWA=K2UnK=qq!!zkK-!xzsAwuJkw*C2IX#8jO z(O0*A+J;H+k+z8b5Z?BPAvgP)3Tfaz`98oko04qsSlq`@0@W>KD|m0u6qAn=N}m4u3h zL9&YQX~TxfVGJd3=weU{kCKJ1B?r+%P2#*#o9QSP7(sK88i(qitStndpkG$YA$}+< z2g2+y6ZGK+=qiCj=+8C?8vTeZR~_G%P?iyrY)3dMiGWcT9p3Lbum85)OuV37xQ_x? zN^Inz<~wXb)HKa9<|bd6f*7eF4XZjn$BcI((<0pxFHD|*i5S^V+~-W9iL!%kKqyU2 zw(6wgS6v9nAHeC#P|=3`KO7mi=$Ht9PAZiyQtPW{fvy$^1Ra7d)^cDpDUMDEPf<S^QKt;fT3xrkQRiY z5%0X8I-drpS&f6(Uuj@28iXM~SZSe7kz++#?)WB#HdThhOAru*uUP^@o5OpB@a*E_ z`Cl&7F20@4eLF#p{5{j~{WI`gQAr43Ht$5)%YSwlUs|1T_bTt9W}bJ_>4x;B`Sp8i zoaLW}&SLz+dTi9kqY?X9|7qyrT(tj7fzZC*q5au!X3!o&^;?QUd+Y-yX*#s84S+E; z0ERX~4%)|Pv|3paCA(?l5{A%q6 z$k4^OT=*fE!F0P$v!IC1;3!H~lsp86((XrwY4Hb2zb25T zOpL;0;9rZ9k89U7E`SJS)<7#0!9Vw^+vOl2L`@*W^Lfjrd3l3EcY$}64XJ|q10^Px z8*Ti8Mf3e)@%Pa;Q{iv8BcGT8e5>Q1S*b8KpSOguW zBTm5%u2m)Q-0*t1?u_A%;EeF;R4IOs(aPzaI@|Ts5TKgqROQ8fd8%Jt=9g#q&U9mnNN-kjb3E?MAHbB6ny=k*HghfEAQ^E22c=ii@bwpghe}Ejc75nT=9?i zYe3(Y*z&V^WF3{-k8y?lT9cpi?x0EcMHTe`T#5ngwt#7CikSMg<06I^;VLCkz}18m z3Spbdzi(sXeg$RihsCriXb+`KtA+d=?pJNKX-sx7E}3d!Orer#7Db_^k5|3klcS^U zIyE}puG6BEb!CkNYt_4&vQO&f*yz2Tb_`JiW^PouLR1+fI36zBo+>-a0gxc4-BaOJ zLfW|aiTFVlKgpI0$1jnnR}=q_gt6WE1FTnY4}b<6q-|F{i@G`n=x0=+rEC$GU`^oG z!A44jFSeeSdSCobTxz3N;8HpKX$g~c@|e$`rUO{5zSt^~*@K`8<~?yK-Ko3>%9!Wf zGXgGkVAPk)KyzIBf(GK*@e*u06fcrmt7>#wHDqjdV;l7x-yV!Ud4=I8%c;ggP5asl zqmj5;W<;m!tpj%1ly^c+3n)|pUcx;K)JPmP`n@l7x3GT0Sj&JZG=$#&^0+*AGt{h@ z{a8!*JnI1wLaiyZ^*ZWkl~E?j_PoMTI6a)FiKfE)slE_Qtg|AJBP1xA91#gvXHh%W zDT6^9O^?JZ(NYf#%_4zv=Vo5aqhtjoc9s125}F313gTA^#}3$|50C45nu_x7OIRb~ zp6GC%y)A!%3}>Geuuyk75fP*7p%RD+siD=1f9YL1a9dlVP%{UunITgM5!PO$nDU{K zP|M_&_n$yJ9UIgW zaHJ`!LkVISz5N>b<~Wz9J;EJ@h(z#G>vT#i{;v18?Gfgjc#oE1tAVg4%^5XNyJ`t9 zW$mi=6UAj=L;)EoC{>3Ij$0?+M~gQ!|MW!`o4i1Twn+c-zIqKcO3~LUd`LlR+R^7~gN~wV&i*WC z3sgbT)AD138|YP6WXX@Z=gW^foE*rHhMz#bL-Db_(o_zGuSuMW^vEvU2kZ-!CZxx{ z6b1D4mLA{s_q&ECDKb}VDcF>tb2e4En01Au$3SrW3-#3@wAB|JTe+ix368V%7}nv) z$bCNbm=&FF_k9I~C6%Perru<#zoZmRa7=}N&7Kk#dfXBgYDr}@)%F20CbsClTA-XQ zv?L3dl<*TRV+4AnuO(H72CdW-on3P8=LNA$uu-I)&}N#l*P~Y&0Cl;N^XhV2tBtTj z066j~UOAmg;)%9}GXVJ2AF==-PL3W7nspHXFq`9^)AX|BHQ0>=qT-|gD&UOG7T$o( z3gb=4i+Yoh6$5DGHt19=o~((lsDYjhevj?aQugh$u5ptt=wxib`vRWE70pmB6j-N< z+;%c*DtyBWylkYQ?SyLR;Y@0YE~>V#C}PDsPF+Zc(W$+|wswkQsc;bi&gn)Vnj`Qr zx23^;ewc1Fm$vAnyKR+-btn>~jhaP*9Q*Fq!DQMtcF)58v$WL9#M;cZfTzq1F&Hdb zg-K9{^0P!84&jw{=P3m78pVC#FRRkQiq91V4kkuIMFsyNL!K!AR>F!&)Rb7GZG-3H zX+1Na$(6$BM8N{xa6Xd?DR+@n_|J>A7H(r!}exW4=QBksVqspD%_$d~3v= z@fXs~UwPXUYEXsK9`?;20t1}IKY0aBXtNZ@64Rp7DKNvBJmyz|9ug3Qz?i%A2tD$j zszJ}oxcWW&hC{Y!D>t=u7jx}o2sPT5#!GK}M(xvaFrd1POo+OS`(oJpGhZ?6f1M$r zhjTE?>o$)y9)K&MmPO~JNh*92Ro$(F>=x)$tybg9zyU2r4i50bo;~T%>FwN7xIhK#v#ZbpIL9DiUa@wtY2J8+Q{l~cW=1A04kya? zemd8?v>Rnp3A(8-(b&Md1ZiWfdsR*%l1Gcug>VpC#|0R*laI-=-P~H=>p{B7>xY}? z8USeE);bl{u=d3Y*oe4*4ZYd)94`U%`nqe?OtK7 zw`&56?D4Qvb6;jw(c9xuRql1(<-o|DC>Sg-CVEAgWO7^BZjSx;DJUOC9)OOn)OG}a z3^gWlzisFA{jIsL<#)%Rs9_Nu7f?y@Ee>mjQ4-54%&Xhj$f38>i!wuFY4nQu1%dDy zPS?J@lA4(yk{teS6e|8aEZ&Yok1SH~2x943!ZTdaN9wSSB1T5)Mml2TtyK5~-Do)q z0~fA!kfVYjA}ETKe)*;g7O7CM$mKvIIM$QAMF;@_)^kamPN#E7}7~oeYaZEuuqIxI)w*7V6U@>ezH2mS4YID2UK|tdO}h`6Z2l zkd^oj1`+Tf-#@JUSuVm;q(%`HsMIpU**-bJ1ApW7Oz^<8+{V7}ULBPQ9so_V@YBAGLhwMuf(M>>EZ6ez z2xTKP2~9N7>z7xjx8T}?2kzob0IWLuFzl zs18bT`Z3ls~mc}&&ErQ-l7xQiQOA{mI^<)D3{94r)<-|j%I|t@NIWu z7lCo@CwA|@BnJR(2WpqlgwI+Fg+`?+?jUX&!Y`-&VE$#!DOKzCz<1m`K#=?h2*h6>+(^C!&;iDTi&04cKYVZsNphj-w=kxLv5 zEXwxZOda-J{5P2IU=B0E)j$!*lCe?;f&#c#Wga76tKHDeMr|loqf78_DP+!tT2KASKls}gLX4)g#08Ul>pX9&!8iRAkE3mp9 zpb!=*HeiMj31(~aph=XGLm~9z8EO6fH%B}ykfzPkfr`E+|IL=X zVjCyhf3vDrXa1Z0=8GNKxhCI#Gk`no{Wp(21RAZ$e=}k=|IKJ;Ui$I|&be{%tc;;&jzNI* zP)Y<4u0EjbDO#%QY0~9o{H!7H5gIvM10x<2y%ZbVn>F#3-oAF=()l-VupB0BuvXQa zjPkyB)1J6km?k!=`8E;+)Ap{14t*>)P}?+ZT9XPp#V;@N%ME^6rbY?>V^moRp9-}q zT0cXI)Ssglyk&?mK1AU0KUGUjz!uR$$OskGTidXx}X+>*aVRF6-rX$Fj|FH(s=r znW%4@M-SSbGx(A0V}>@IJSS4S?Y*{e+vYMyW2!p!VZ2fs5x;BoAF)@?w%<#=dxi(f zV6J^&!UvuCrzVcgl8+k%Iv3w`@xg(7Tq-$cJ^fQi#|-@s_vJ{(lPPvdI$pDX>eNqV z%=_W}Q>UNra8yLV_fI{{+Gt}N!n3h$6MT>UsVnC?q?<&SvM@ySC(AqM{8J-7Ndw>q z^-s+kn*{*ppLz(q>mmSPruW{h>2<|Fb-vz&m=r^S+WV*e{ek(XPV^h^l7A}S_LHdV zn*3Au-lb9a{;9uzyQyJ!*Zflr_t2CHE*<)(u24@vDtj`4f2!VpwnqO{#M)o#T|G?V z$=`S-$9_2BgR4QYn)oxA?lR|rYh>51kuBS@9GHuL;>wNebU>j@)*lEj(RcA6V4}+S z668#Z$e~b@aVRujOXcMC{7Hp(`)96by%S{uD^*U7S!1)MtjCP%zABfwp;(XH} zGD&hWPJqMdLc}+vE5!Huqa5)KU9S9rHL_n4I@m`8QTnZjeoUAzsAREJsLVzP9zCqBLy6sC4pOHfIaxa3*Tpf z4a5)lHS4IE3SUYo;|tNR9Q&fA9Fke3{UOD^Kjb7~BY1OO;14-kH?sX9HHNPp`a^b0 zX8A+hx&&#?f|Gd@nVh61B|^KM#A$;ho7t zl3i=!^Q+{o;01a0aKxXj^mqw7yeLNz;y4!Ug41=^T=0Wodk~smTNXWJb7;Rg#J9F# z5K@PlK}b01olpkk8qz-Ik6ds#-)q^?N6Yta9wd&q`p1crOHhU6;DERLAx_Hcx;sI{w~x!am)`Oo&>x*VARos++#Y`pdeXK*CG-PWHm7PrgT5w) zq%YxM#uIV$yieGO7k$yOj8d@-aREWcJc#A;o!}QivXK^8RQdU%L=*O+Jyj_oNfs`T z7)xL=2sFxhK=lnB2JVYUE*zS$y=qHAQjpeTkMOZkj<-id>bGEOBK31>0#Yx}sm;2Q zS;bnmvq&a_?V9D$N)F(U)~lb^i$%)>jZTg}!?2|!wdx8Pnavd-U)tc8r@OK{&nyX% zhdSo$sJRM8`N!y21%FNy791T>1vRbPb~dxsFOZdH0}ar^{D@1vEtg?_OxYObi`2)X z*C>T0D?M*X!O}&qr~c8MgBTnB!~9X@m6Ntqaz*Q@-GS)mug*OXord6Ze|Hc(r`p$4 z$mCSD|TjQ$>&S_2r*sl>v&_UAr=!!_Z&{p_ZQQI+~DySsVzn z*3Y2zw&~fPu}x@2o-j~zJJ7G13dvtMN+7>}QC|JVZ3keG5N{(XBr0Vp`~@rAwyV6W zJMzaGuC~E^;Y~eM(_JVmE%L7VC)|%H);yQnd@RpQs)l8{jj*Tx)`>hxg~w0|xMB`J zoMfow&To%Og=4dF7p#J^E!cS&D_F4SF34H1k)e-T3A^t!qjJBiSb$t7Y!gwB=@Z-+ zkxBWm!cg-pp#$#v1{=*}voKT>!!m}lk}HqmN=$UYEnf-tgQDn^kT`mlZqZV3qi!3a z`;gWlbl2!c_WA5m<{=ySs0L1W5{qE?2SJ){9S^LaaWjK-d_Y@MOrOwx1e=!3{GwO% z{RWU#xQ%ouECRznAdw*}R4ends-(j6sgVkQ_%|S1%nkp9_Pdk~vPWphP=+z`?%FtN z=}-RMwL$mQ5joIJ_F-fq#Ol^gMc*hKz=Ec+`N#Y6>xYOC%ZS3lXx>4@!(>0wVXCvN z_-E5IQ$O9s9zMXhlMfQSY=YcuN>z;q0nwYF%nGz0PRpWVhu!M-;D<2{lBf&f{I}ql zmS^wN+`U-8$Ly?I+g4R9Dz0Z(+c%sPuHx8n<1i!jlihI$K@>?B1B`e72aYV;f&Ra! zlGfG4;GLMS9n%=AwXT)NX_TIh;Q#@t(l;|Ms8m_`Emhr#XbUl}o;59fN#OkvIGGB+ zatm3IxW{sYc)lUedsL$o6f1Bi6605i`SS-&8XxVhKjqZ!LG2AKqAh;dcJYI^=GGRW zMWBS%!Q$Cvp=9_UWpJVae5`ta=la(mu2Eave?_Rdh#`Wa<&0LQKzm0$xA=Pl3y!RB zsqjJCm~_l*ABUPP0}!R*u|y>?3*~ur`^6IHV;?PN75w(hP8NSQ-K5S^ui|m0l|3>& z7JD!C$U6P}CSa~1?ppw*fmAq8FUBn@bGWh?vv$2>E%!P5WuGsV;7)s10oU5Yq{F^+ zCdBZP>CCSh{1cY=C!?$4FLC_YJ*w&dbZFv{TBiP=geGpTANkL4%sLg`kk?ZJY}05p z!5CgNiYd?yHEY!NsTcj3-cA&k_Fx2kh;b&bx8u%F(L&qn>EqDJuNXoqe9V9461>AH z+qQg1n3d@DW=5q`%*jZI(18!m)9d*%zg$7NEv$n&PwAk}LJsOYG`ok6Idx~)J<%9LDH{RqCor_gIV$bZ}3 zklLI6!*q~HioKIZAdz(ESb26pP80964OR3~qF0`=jF+n8k7KU|)!WLm1(si_=B~7O zzQrtzQ*kTk^`9wqvObrKotzXR-x{6AMRJ`;fbm6 zTkfH8kTdP~Qtz%`Fq^)1{21t^Px<5SsFod$=$hx@fBQQPdw(4xM&NAJbnC$r2X z;Qf}TsqlF2ucrTZ9AA{L3DQJPe9^w8U2jfo5O4(t3|NB$2K-^Y&xily zU!6s_e81DS{RV9QgS~06(Q}~;){;| zv!uG*_@c$!%i18T#~0nM3N2+bxddy12`Up`bdvSF)O)#HTq;SmTz?F-BbPtf7VhI) zC=z8uewD?iw9Wk!;#ch&@Toq6$lCn;$*EH3(74oug&ur(jYd4jW!2DrPKD1k?4&WX zhKHK+WaZ%SNx8CSXk66?4ETuGLQRSuavv&uk1|F%!6+-H=xka_g2Lfrd~w-Ta72`N zn#~~WA=p2r(4HKFS98Turu=rY(#ed1&2N8=B~h@c?mAN)Bz2A{r>SrQElZa5m!er2 zTeZ#=AyA{$FWB)QQpaFi5r{@fMJf42)re?!4hE&b<2i=|-_fZmf;+yw3ZMX-zte+& zbJ)+){>3e-WKa!Vt^TvqBGTIJjIYlwH-FFDP67 zm`XIJQL1H1_~r~Ph>R-r_F0OI=#HItc+5POaCl;_nwMBit%g)>YUpR}>i+mD4y*vXffJl3p+^Qwkh%a#0J zf6TR&&ZBHB1~mt?@NG-}H&yg1=V9&voiNXw`4Fi_9JE~qlF+#;3%R8MmK02w?O01I zb*mG5{24bJ3D|7TOED59-OBd^5bCF^E`C8BFxgmw)E?_WAd{ zRbOtSNJU(T4IDj8+l&t1ve zVj2NuM^La-b1a+JO?M8$K4FvLeC_9HzYYg1IX}8J4>EK9ln#KZ*K&;lk%;H<9=g^U z5c=#bZgl{)+s6-d7LWFk;xfcWl*y!l@%!;;AMFtEDbxGb#;1I8kj%-K(49pOj0k8` zUu!oQ=+;x4T5~+wi%$v)KYTpet4I3#0wDSEXnQjwQ8LjI87PgSeUI^I-L4eG)|M~f zg(uPg_(9{*cFP8Us8%Z64@~PK01&=*ze3aNN<3O}3U5M@MSR-FqrLdH#iKo~Dm0!Q z!qvXBPV*(4%?@+XzH5p{+ucT?y+gi)pDg(<@n|cw(w)bn<##ZdARg`CzjqT|V?5dv zYk#R%xTgrjHZ-@E_##Wz&w1;V)+jr^=yTo3jxSnntJqzwFPf5IS-KcsG)(WVHNNOz7Jl{kqGI07 z#20OBEoH?QRqftce9_f{KsJO&E2I57e`PDD`vfV3q-d~hUNmX*~qq5EF{MT|08Nvmew zou@Io4CWWWz_K0LP92IRVkigBSIsx>Iq~6QIf57fDPViFI0fvf5{(@#QLBJHNW6-Q zlPD@YV20BTuzPBAD#AcI!pM;$_so2cou~~h9a{QWu6!p(SQ-FdUz2e@QSZpx6*|yl z>#m@#HWWSS+d_v}3!ZZpYDg^pi=q%`ZhChM6?OA-E&Kv;7<~qzOP+mHJ;`4Y4RZ>w z&LsG2H{c+*ZizYkGo4!mm@WSv8WbbZnwrzTOs@o^F$MqDTiN~a-8Ootij!>7KQ@ErCA3q} z-ZHM~tR>vzwFbjguwE(Ds$gAGz^k5>0+{vb$<47`i@1(A zZCzIL1{zYzcEQuIrq7q5OTsKgwcz2ftE&HtJ(v%vpN=7|%u5wA_li z^z1s#iQJsvI$RiEp_(zZ*t@a8Dm3}I_S_d7O6<|VT2+(ih~5efN$af@xcf_?BoPsp z!{yVFWrVx-?S`*tkn?uUxs2sy%0>pYgK<=!HY}I1loTwO?uT7$tjIt&Qx|!m93 zpdxd}a4nXn}-C{4%!TK`8?U9o%jDzT5KC(xl0z& zNJx$7<0wS`+$0>TN`>!au*t(P6J(F%Fum88j!qpcQTHqrw+FJ9Qq<0#r17y8bS1u! z$LTckZqldtlio$R%n8#MchZX-1taao`Bc}vhq%|ahb1GGEq0OGL}_Ow9AWZvhWy&E zex++7mOvfx{y5p`>KAeo|0h*C@_%;h@840App_hd|DdAp;_v6^7!wFOQ}lW}@Bf-gV3zrW@ZS!aGEe}8$gaXk^Xb>zx9$Js2tUw{9;6%O^qC^M)(38eh7{QcDzYXkhx^Y_o1 z+t~_yzyAKGf8K5d$S)1ni}#mG=s=38uISN{<878lG+}WO;Vc;@YDYO`~y1j_g|s9iGp+Ru{m!{ zNBQ7C_|uyG{ncs&0jdLk|H(WuzevP>{BQI3Z}vzR{ryQH?b`hPqc4!mmh10d#=Wc! zvbw+jK~-oeo699wlN^8lS=RGX@4aGisZ~_V_4j**G^C(khkPQZADEWXoWSnq6S;PS zE(vPKNy$UXoDM}dVXf_aO(G|s$QVOd1U8+|L9IW~6hjUP%YH((kNZqPAP(R?-VHTL zV0Cc-ODV4&2XGqArNWIoOUD6R%`2ppINUmNy1T^z{7!>GnowGaqxW%?PtE&jB|@s- z1xZqtmPcrMB(CmLwgR4Lm|D2P(B-|E8|PBSBK#|B4nY74kT9j^fIT+kolukHzF5nJ z1elpW^~AE)`<#IyAL6m!k|&f-Zd;oByZd-qRN3g&l3|E&4BIETGdzl-yG zo2E6t#w`O^z66BAy1<_=J=~~7H%-F%_?yQV`K!o^>K%jiPNpS23X-`x4cW2nTxdR$y}z;nxZMBU5N+Ec%gEG zUmjy+JH^ywHnMawm!bX>)6p#>KCE*`-NXP;YS(FgbpP>E)7Oy9rQv~e$b!q1kIiXK z$y_>cpD$L2y4%$W%q^6MH1hwPYdoH$?u){mv2`L59Fb}fBEcQb zh`>N)g2+>jWdBmf!D}M?8B9`u!FeQ~t}jgf$C`E@&M*hmHtY|{PSY6-Mp21C`Spj0 zluNsIO*=EJcBdo|ai&FFJMQB`7%!}QpE1y87sNB zCG4eR-3Dzb*hPrv_G#IIx0jl?ZkbggWp*mODUT%(*e&ED(T-HOo1SP)hJy@H8Z+j1paM9!;6a__nB)SYH1I*wGZQ0~({vf)Q zJV^Tq=e6(}_aw&aaE0ahQC-30ChiQoV&!+EwiaCg)}l{WBP|6xs}b{$?x9g83bxUW z+(i#*BI!lXd{=T^7ru&xS1yD?rCNw_pnU`KXq^d@WfB8vTk_f4J?#Lyj=OJO)%bHF zEiY!S#%4!RRqjc?A|7^+&f$@^5?0hhdFXCd>ZXqJm#hA2pI43@PW%ofbc|B|(S$BliypsQgun2f>z2AYifi|-C)C_Jr@UEgBy#nE@b*}~UvJUTRTN%Rs z?F`*@AMcC=S^d^ycU8sDC`@icCr(o4(+GT(iJ5x$j1_Bv=cKnR4&ADF&AMz^(5^7K z0GzCfpFl38!A10fy&CdDAp-I$8PZ@rh9Xg+b+l$+D;#RB2NjdQ6Fx%Xg>x3DdcQC! z;gB!b?4jm~f?2!oL#-vLUx?I#$0(uT5TzE}Pjcx`-ClwYMMQ@nMz~h>O|YTbT>1Q| z=`E76BY#flr%9Z|Bq}VVvw)!|jS95HaOe671Q}8vC$&3QFBG-Zs=su)7Tf=JSfb#V zQzZiWTZ#|Le(T)(D>Z8jLz;am{4ds5G(&eq@A81Eo%#2?5xkxjSrr-S$L+2gdB`W+ zh>4`hgD^UhPOVZxSiU|;kf!M6?FI>Yhz}ZPA28kdw@4QxZUXTKTs2Rt?-Q)&`cV5b znyHE}NJ=r(^)K$K;LI&;;Ecey#CV!%(zDxH!wF`0f*$wQV+H8$7gV-+_ED)X z&up7*tI|&>wegva1(_&NUbK!j=egz1(04VI80P)cgw>Mc8_r@QIXYzD+$i?`el~ZI z-f!m0v2$?M3&d%aUk2YYRADL?_&ZlhR z(ILj@SH&Jm4!{Y0$4^nwT+~yogg>FNU;g;XeIUTCnZY%B02IMJ}^PsNkA5>MKYOf8`zeVE2l z>LEO;8R8!X=9BJ#w75s@NIZlwql3^@Dv~#-v8GG;i}jrE6OCY*@7KI7Rh3b&$GB&3 z`!n3tWuznZ2~K>@ukfhtNU=6WAXFHmmRemDBWnVDTZ}i8 z+;pGwV8{ea6w)UNAS&(iO4admk*dex%sjW4Zp zRBdV{Wt_1eMY`iASk-t@NnYKSRf&rThWHD(p&Vx5Q}ZEI?zbEZq>dluvshSPtNMRb z&nM#%I@(SVU*o*Vz=eYb0JYSku0rEQrFnHR5VX{QR&5QE8ttW6OAo%JF3)VAm9hR0 zhbH!?eer>9tGkOmS|S;P=4@-4nr+>65G0@6U-mU>qK?$SaBHd0imLvPh9+)hjilc}wm{SiURYw@h9BumCBccOd;FPoZ*loW{++22~ORLVJlVO`wLKLh(I2R9-n( z%g~Q+dVcA>bFsF`yE@SZvXJyfAU!m3U|*Yr+Q|ZasA&QnB`?#^;@NGnk${|cl^PR> zlectG#rmtWDu5;VgjHb%Rhq#K&YGq)RcR5X&=+CG+HA&0hk7G_iwSMBRQN94F>@Pn zefE2)cUfK*`O4+LqqIozr!D*E69kb;DXy)Gn`v97LwEFx*0Wb2aw02D6g*C!Z@npha+?5h@gm@$4C`ET&nO8RN)PgV}_s$ zxsQR9U@X*J06j`tBwwPSzq)B*J0i)Pda`~iW0cI~6IuSom8rUMjVnv8 zp{7$M{3ptGbff+9TMarr+EaGU9&M=UU{zM&$-0j?S*ae?WGeg)&_)!J#kzrLUriaT zuGR-uhsn@*Jjw8M913WPR!Ubmxh_QMl{(HTrM!!{kl+|77S)Wb* znO&zw54P*H=+SmPURuB~(cWs&UcNafAZtv>($%85oF~(mDzpO91P+%baEvs8lZ^Nt z&WcpDjYx$@oRrI?j;CzI_BKV}CVJKHnC4DfGdAnTwD%!s??Zg;eMp2y(61rV-mlz4 z;`tE7^C70ar`KKUn^5x@5X`Z}^MM z4BiwdAD?V5AsC*Ns3kntk}u;5dOxDaW}kRcKu8qK(+y{zU?aK@^rgb1HBfCvA1SBM zI3MKFEiin@I_=5B3$ro28zA-@JBXhD*I@W1$LC`B1(XfLo3-qTUbB9Z#_$rBU>z`g z_HLbExR_)rdoC(Yi}0cZdnSr$sjvKBsBc{TGpOE3;r&{5Z1HsaHl=s%Fe&D}ZreV+iigmD^1O~_rzv~C{VJGU z(@t0ltxXdQ>Tjw1d_HdO|M0%d6Rp&q3&irs!-VZdBrC6e6aAE4n^$*;e#&8&S9g#b zOURAohV9a0>Ce+-8-I-C9CI9)F$sf#Pi=;%oUrmR2u$knSmT#H&OJ63|5t1i|LfV! zO}y+{zk{z@Yo?jjw^Zv1{ur%X^($I?=1b-j{!l;v!%riA%T)T7l56KQ*Ur9~cDAF5 zwwQZ*sC)Xrw&^+Spr^a>fzHs>hnt=cHO-{#>h9p`Zjfmy%(HdaL7(IO%jFT{qoatc zJywYC!~|dB94{mMG2Azu<}iLF?VNLuj z%y>ii1nJ=s(Z{hA2&%<=#oB2U`mH79ce#FRP5E8HL=acEe}%@hV53sc>oUe&hI4_l zJkP>^>mPgu1=K4t6IR3a1hWj$uHWWcC1G?>0E~0GV8ceK> z4>HEita9+s&?U)TpzTdKL9=q$?$!AP!OZ&&1DbOd>?5 z9r<&|@^aRBD(~oA%DjxSQRdAYWj<$@G!81=pfqE22y`_QJK6=gKVON8kb9m=r{FQf z*;g*@3zyY#R3VI-*aY|3hgp(|@jvv5=5B|qUP`@axfFG-rih{Hs;*@DjM())JEd-4 z(2*I@wgUMdg|_i$lhYVvRpb0($pfXDYD>XW!X1chxr!w4xXL9&g^{~p1LDo8kqW>5 zOF&V~`+h>y7bzPkwqgzvTO+~eF3G8&bf{|v#?yGrvVf7i9Wuu82vK_-$##=_m$-Lt z)(mG&E7B359W+Ul=HVTZ{62oDA!2O>6(!~lwd*vCun?5SP_9CoGCaD5Inhjj^)n*}sMZodo^I79`|gVt$+Q}&U3(84tCz;o>L~pf#Sg<1zK%E05`o9~ zQLaZy>;{2#J<)$;wNaZX$VS(){ojsa2ey=*%Z263w(*HvWJ%%KWb*za*)K*mwP{k} z+bAnLW3MPNEb}V3r%xG>l@!}^awKa$^LdahF75eqgd}qN1 z@kkqfWYaMWw|urwPN&_&yQ3M)vZFo;bayo z@AsS+ZxP&dA`fB^k)cJNIZ2myuukgH+6R4_jNJMt)MQpOQ58?spv77Z(d3m@ZZcX> zjUX^n+LseoLQzPF==Z(nW4wHlLw(vF&G}>Yhx}=!p#JxJK4a>p4)vFS^_lY-9!M$F z|1t70&Z^M{xX+i9=J?rsW|1vbE$W2}BLLQWg@c44|xB>X)bZWqXh3S5p=z z58ku-sIr(9o7_=33K8>*2+cX5K+F!rrzasXB0j6H!1sGTW6xggRv;BV4XhXY)Rek% zKI7zSfpopjXY9%={`99BsB}J~|F)f-&lqwT)pNf0TEm_8=QCb86f|1X_g=|NCYoKL z;DK6OCp-qa^W%T-^^b?-suT&zCP&X^TwG?ARwv(kWmCb;C0mUVhQU4mTfg^u&J|repHU^GUEBGL zCu5T1a?fW}ROM`t)z4?_pb9Nz#ax0l!DuTHlNG|K{|uNdVQk2I;!?*_Emt1%3~9bt zr}G)N>O6sy(wrdepU?Q}g)Rwd9Y)?t(=HhKuyhF2R8ni??~YyUhofWoT!(&AX-XS+l&E@L|6OAzXR{Ux1hbr@CVUr z@(4;*@ehLI8h9>kx?j8LR#PR^^ig`cgD9^)-KSalRMYr2j-gy#r%kTEqG^GUr* zrC_F~=dCu=I@M46?z=eU9T=ph{NOuhYp}9*`Z0n#+SG9a4`LWD43JOC8+Nk_dvViD z`j+W&RC~GX)WwD{=Y1ShFUx z`l|*}9!S|7Q*A2!EATEWoa^I5QF8Y(jrTooMwK(&6?*^DZ7IA`gr8C&IIGc0LFBRI zEs@9lX|SEXD(iTLIOYkFNQ@|i(mzPSme_f;m84tEcoAL8 z=67@WqPiJ*zL*8?P?dFJm&{{hctM7_2D?u4v(9!1MA6o}e&Gns(aQqbdY0K64We&W zfSEWpOU@S|WfDrT|bj zr~5t>aE1@RTfT_*+M4o5)~mknLLlfxf%^sM>IFe%CcZl7~?m# z%x}yy=(f9wkV;p!6tHY){h%B6~d6xOjE+U6L+Dl%JK-)~48 zOCyf1VJUN4Cw@9ejWJeclesjOW!LmUv_Bwfd&5u5<$dyYmZGpVL zJhdsfw-&-Ff+@mzTzPUsi(T%uQR?i#G@1&}VYToxIc$B9u97DxF3FW|S9w4-@A&6n z_(GXkMa4>PR&m!4zNNA`19CCKTJkQUo;b+6uZn}Lq)v{#vk*YI?{P?EDg>fH zysTfZv?R?<-`+Xru`Y?xD@48$_0HZIW6oLj&Ps|RMa3c+L)XLJd9BIWvUdUt89kQS zz)>mWk5B=&@rU2#T0KXkt)7ADCu8-r-3uRt*SW1NtLJnz%BB#aiBHV7vZDjCdTL7p zt!us(YPg7^469hq!gRtaO0^%LH5GQv_2G2FZ(}VzqKei_-oSzd+#nVjru@AVi!e@P5eO}qqhvV)z?0Xh;~lr zwwyVof{sC3cp=YDg@)znG3%pgC^SpM6%i`p8l0d|a>Wvrjg?H&FIGx#5?6m4jy$?NpNj|%BtK`2gEU5$o=Z>%yPtJSC% z(Uj_rQDKP{9OqQo^UG6gYOD-pt-xZnNpo}c94;|k&r2L|(w-+kFjLO~$<=ms#yr?% zb;~Y)=?@;J$Xjg1@u~ZSMZ?NkeBki_i+B$mZ?KZ(t*&@vbF~Ox}luyYv3?$9D zA)s$QagDX;2%r&Iuyi9wWJO!DiEN_RMqg&rKae)GiG5)!z-|$$0WZV6jG(<;p1Vld zwYH*GNA~RUG(EE@ZUC-2f2%eAr9p2li~6TDha$Vy$P$$kWlwzJsF|w!=aqM2Mq;eC|IiaeHl!yMf-L9- z;KNY>&QIdk`_MwrqBzhK3Rn;ceFSokfX+8B7bZ)NUFqy33e*4OXM&hx+>);%`m@@3 z<@saM0FbnsWyxRNj@)V^><|F%!d2L;+{4$Ywy*fz1l>?g;+UG62KKih)`C^UAxtA;)^z1FE9he&b{P zYj$UNs?%^O z-_<7*oL7F)f0jM5HuH5lSFs(KK{g=^wZ>bNqmftDOs=BP+j z+>R?p2o8O*i7_PX+vR~M=`>4XNgmTPiwwO?Xq_l%)eRRXSYg^~D*Q{vDZ;PaNp{;x zA$9}3>foO?DC~@*2_i9Lhz0KO#4?x=YM#J5$!7jk$2s4am=>MRZwRFM)Q5voV#GpS z1;%kf4_>GmbhnJF>n`9>gwk7T49LF80TbnSmk*F89 zK5I5HVVxuZ9Th05D{`i=V-2tR@P@u(?VHRjYD2Nay}9q|?MyurUB2C$suSjGU9xzE zSy$fX(LE_1RL9*3>OFZ$8+JPPI7F>chAy3j~bPPj-Lgy<| z;ivp{AuM9FzOJ*pUv9k5zbTua!UZ2HYpR`_h7u9)LtMkxZD$i$$DwjK3lQx1>@Cm-NXP5eSUWhh>(j4@WC;Rf^nj7a88tKMk(kjn6th-J0yU~6zxL3-N)H%#p`HZ&hQB?JLyDmBUisYQ^^Nhs`G9lJ`FT=R3^NhRdM)rBe z?RBH$^Njym;sT#46oGXoV5x~;RLC(oLJtp!wH${rzw8(QBFd`$w*q|CI5PN}S{6&V zOfjkO02bx{&NBj@NrCk0=MV=%qqKS;sfds_|99X0JY(ygEK3*9GdAhnwVr4E9Sgtu zdBzy;rjcX7{?<~~dB*dfOiQQj@Ye}nFc(pt(!g!JKUHs>c_rMK(a z<1ddQ#~Iwb^wEKK>Vpu)t)F8LbGNOVmJGfXT$A|1^y&jx6* z#Nd2=h-rAJ`AYh%YN0Bk2ItR`&V@2U+F!w*^dyp93(3Cq3>TYOA(BmS>^3~Z&(b%S zP#;LyVDz=HNeW^>s4LbbFthAk=-pIaRd#Jr%c>UWG3PcOO7;&mKdCk!TDD=;7pE47 z8gv5ElsI)$YhaQLH7fRyw}lvyWaL=FzcLBTQUw?K6Oz&BcR$IR5TU?TAc~-e3~wSV zGCb#hcF&#P@sw?TVs|=h3DeMlk|I+y;XE5!6Ao#Hz%-yQXoIEtrYV1x@0 z8K+ZA_u*>GLSKliHcN)cK9U`Mc+hSDO`SbZ%pd4K<+dHN?`*F-z2J;Jz7kXUke%f+ zLJMELiT#{e?3qQTZDtPT!-h=4x`@{ewY}s0sxw?wnJp^PL4`3tsPJ%AM|-`PN?E*X zHU1T2Ln3eLJad-4?R@lNb%xa>V{aRDSC{NR1qN%&cB0iQ`9f0iW>w>( zXk$)Obv8D%{F)N&-5I_yaE`B5y99-zk*&Na;d`d8M$jnC_6wu*WUgO;O8CYiszD}P z9HD4ltxmJH>>KsQZodBUg>^r57z@QF|MOYjCBCq~Ve^{f3&TFfCl+XXT~Fse-sj3| zhVO8gAirj-fRHGA`3r~fW{=T5-yU=Loq;{3Yw?8+?N9ELL3=DRzoO`96=Zx&U}mlj z>{)oBoIMNvksDUKF8QBpJBw}$jLax}zFEfXC4pIHC6ktsd5Hi5{w%Zd3^THbx2#YZ z+>oXY!1jIDp}wkTjLefjN}>Lb5nouni#C88kOp3&fiZAr<(={07GF5)#LiY=b-U1d zuYh)^zXDIc({2UGF9FueE+i0iCB85}Dv+*MeBr{K-7d#Rory233UwA=_#TUv8(+Ab zJMH5O&!^Ef#utuQExvH{e^-2A*-p74^B$B@GdhVcob^8|zHqbCx)@)W z6w3>S=KZ8pC1sHT1B;7dxG*zr?0ggZpGKXXys#(H4hD;gmAzsb!bLd0R$H?3w1D^)2VWf?DLu z+JPPG#|1Y1hF2AD5wo$np`^n53I|cPHJV_2p{9GRn^{gW;hmv5?<}L)Ox;(lT@HiN zg4!RRQ+G~I-7i&FI$;p>s26H;UTDmDL18YEr!f6sZ~0oGJ?bY2LeUB1ls@o0peL^> z=P~>Dv7ZPXR>s)aT8y#0sth8;q{Lq#>oMt&y`P{IC~!{C2%I}v=7xr>VdyBAy5xH; z1km}*CX--Ms97vI#^Sp5V+pfA8JoLob7>+k`Jw>^N2E=Dvd;(L-8>E9dWq-?LM-#k zMSgj)U(WN(t$uk0?HL03T60m^)-{{a)?S; zzzky|siqi9V1oo8y5S8vRk3#t``R{>Ols>)`aONdX)q0V=wR)gcrD?mwp;=e02&6O zCULRbi>h)ETfHaBN?u-?vLFf00g_*s)l0X{&^%SLOn^b&g~6qo@*?iDA0qla*ZoE- z&)OenV6Q;b*?|9t74hfj2!Bq*3+v1D3c1pIPT)6#0yLWO?ESj!utx0R{W(_=&eb>Wr)>Jh6=Jf9Uekmgc+?WT9$8Fu z%U&Qz@@*k*<2T*Tslp1LitXstSLpElIp*JUA+o3@WaJ__2L8aaib;?Wsfqulq;lbq zQXCo^7GRJJHA!2A$tFKAq&u+PK=us=qH1*i?vh|2+h`zr@KW0esc=EN*S^`pAOEu& zWTMw)yrw|H*ST-*!XW=aP)|Yz^#-JyzZWmvyj^rRJ`^_@X|L9hj*65Y={!`jvXX!R z|6w7664#omD=y{XcRH?h(N8U#Z{z&JjNLc2%fB>~oO>J%$0?q3E49lw&9snl`H4KX z<5K?+4)oN(v56? z<86kY9ezLieNxSb?jmZebARJ|n(Oz-14@QescT` zFZ`uT{sv|BOZyu<&^8c#@Hf0kQKHX!`x`zs%GYT=gL_EODMC%VKWILK2NyfpM}khq z=(@S~=J%D)AfK6b=x=yEBwhE1^f#aqp}+Ne&O8oVMpCKu&1le#Av(7e9*574{w^Me zM}^=f2nb^{#QzaLK2&M3Z?ZZ|y=`w3&EA8~jb`WI`%K<;{x!4bIKT47Z#r}@lzXk# zm-PSrXG8bGe3!nXNMTtKg=Hc56HU~Kk0|*b5?~tLR~2Q@9b?lc6ou~CK!_p@{0!)A z9mUN`&I*DguQXeTLwD9>hHrI3M3lB(0g4dLK7WYhU9@<^d<7*(2r(-p?#mQ!`Xv)4 zOhtx=6(Fn%r7A2ls^~maGTbksERU6=mQD??M!1&8`l+WJ#9Ba)Gc1YKcT)AF9e_YsVOp*7IGhAIs}L!H7^kmaEtrH;9x zK{qLz{6krlRn|~sauOIlW0))r|JLshVsC=i1%TG{ygFO2~PgSku)z!0ih=C^IyDa?fsg85LpPBk-|U_M6Wj$w}4 zF?ADRC%J6Jgt!jpnp6fsM}E==%se}udZKD$&l{^*H2AY{%P}K&IW!tURFwq&m|qT- zL!-=Ij^QdN_)@c7T@-&{QZ;(yUG@{BMXFFx57Y;2#9+)=uxMlbkX^lPn4Dw9V3M|o zs?O7TTdm(xOLU3o&~LpHj&w%rLTzxu_=jnm94~81?wLHZ=;?qE;vxC`dujSoOhi$# z=#dLekEw@tu=I1j>FrhEvWydF&lIIDI3q|^f2q>Gk&f)9R57h_k zac3d=LDSzT5Z1zp!CNVt1Bq$R=Wb#BhOw3bWlSg)KAdO4-LZU6a0i>_eZKRPvtkER zLE|oFfu4E7ZRk?^oW}z5{!&Aj^_PTL1Ml7t_OhL5rzZY^rXp03d7PQ(n?lSaxuIra z*57#FsGH5}+(RKDp5==L>B)>@7@XJPk-Hgcw%nC`|54*(LutseED(gi`8PG;&*_`T zv*skfM=HFD-uW&E?Vc5%Krr=N)E8zy;w`%w0)lw|K#_EpY|LCwJjVRUp2IH zm^ZTsENPrylx6AXBRhemAIy`P-(!^C8)v4^$vcIYHOM~tSu`9T*#RX;{++jFOAl=O zS5ubFX9Z&vR~30vd6|`AO)4z*3!_wM^$WvQnC%y0Ds*hm&;HIKDWU^2J||=+Nv24Q zgEPU3yp|dn?z_`qUdJCj6j8}0SuNo)U}rV(am!2i5g0qQAhWu44`$o!_ZBV#?e!Jg z+Zx(K7N)dVaMC$eyZR@WAZ*hq3**X}2YY7n0*7C^?HlTE75c$gtOnp1qniHr6>ItJ z5$kXk`Z0wXxtDc(>n-e7se*EDW{ z(jWKFv&X$LgE#xeiVci;ujZ_1hiU#QYJ`99;YN5^dW8FEggV>v9Y@&j(JaV9B;5!P zTkjF}^hY@Bh5&|kick3@`*%laZNP^A9f#VoFl(rr1Vg=v#p}p*(GHl&$4KPb)=dfn zLpoDKTCQWaF0I1vHpY4IODnwR^?}Qn8K_ow58|%q>`^N0?H3MKL2d{=>92y^5GwRl zL2d{YcAy|mKXJM^{Waa-^f~%SXa0wYFFGD>@lOrRG>Ct?yi5Lv1K_eXiBl^~l0Jon z3Y2jC564r~ZZ4NrvOdvI??Oh>85f9JEfFtp7I;MCvI7LeAO1Yr0S`Hxm;#V||HGB6 zt;nbd{QCMIL>ukk&l=97{W{MP9w)(e=6~3C|1Vh~?J!$qnur!@R02SvDY7JCe3s$OMHr zb($!|dAyRP3+QJKy@-LHtH%f5!ig(QH^*KVy{t>(evZAaoWTX80()IQL;Uq;{K>W0 z>o(f&$FbLi?sr>7gdtj>;AOr+x52B9r=~pH5MT} zc;I)j*KH-#UyHr&({EH~sdxG{!u$*A+%P`}-^Us`cEQ0i)}c;}Veupp?u(l#jr3UU zMEbnFCI(2qbw{#B@--?|>DY$;HB_^4Yo!V{P_nj6NuU4&tJ_!fo1^_^N)rJLlHxw1 z+Hgz@0U)Ts*T!88hOd%i(~*QI+m7h8R(_dYgMJJ9WSkJkVjdUFb4aP`8Kis~bmVhn>o?b3Av^Px5tN4`>I_7QqaMMzxuM?e-JL6V zD6xuVLVAn^)g*C16&>5|15?>q*hnfr;s25MCh$>J=l_2Ykf7iMWi(pUsL_VHK`R0Z znh5BO291J(b&DI~Qbh@h8^$IG(;*dGtQ%UY)}?j9YN@EzAP8u!;*Kl0-!U$@0$Q2h z`}3T8XYOQyghl;-|GZx0&N=tovpnZ{&UwzWoq4MC7&PHiimUl0blhJx9IhHpR1N1w zdP<#vMO=|?lSL@vt40%iJB-;V|Kk@Ch~pINgotV*Z=1Eoy3!&r9X&2wAbaq(r@c>VdFDzXzWUHF~Zt4EC#_ye|M>}c)Suz)&Y;%%5E)V z!NF#?mbKw`IzV#G>L&+&DN5S#{Ej1KIYo_yR@$nfJmHJbGIPW}>%#IBe=X8py;D@4 zm09AApDLE;cQoFJzrO=)49WY&^3?VDXud=D9R1{w35M=%)lW*^o0lHVVq@OI_)$vmsR6n`#r4$bK=$!MJ#ATuNDma`3bmbq0a`lsEKAzdV-Fsg@IrhS}+Q6IYCpV(E zO(RH8`Aod@Z6Ax5RwSJKNNqFv$?Yf=YlVLDE$Uf=e)8dLk(Tt6*Jg{fT|c=6ABXjm zo04v-pS&7;OGoc*(6HUXVm!x(%S0Y<@4cWOq;$ZA0>SZNPoJRm($`P!ukvege2@(M zXJ4YISgn3CPUDUBlLOVE#`?*H%xpUP&PNwD)=%CmY|f6y=_jA3Trj5N?s1EhjmhaJ z&(t^Ts-Ij%;Bx6F_x^%Gwpu@#|5Z92t7(mXa=#<~&*>){dbL?Uxd>z^ugld>e&uCn z_r;sT`pG{Cb=Cq|*F``1@f{AoW{C0d_21Tw^`f7g$ylYIthj=u)4X@qmwxi5aKAJ9 z$qFck&AScy$<6#8-ZL@i;rh}~UiG&SWHb87ds1!f;aML#7p?%+ zaA&Bi8U1AY)^#;kKlzNh6w*(={0Z9pKtGv45o7wvdgTWC$@`TE^pm$K5$GqcQzFn$ zPEjJzPhLhs@`w*>w9T)4pKU&8fA44edni6bHTcbuWVzhP;7=OsC+|Ji_HgchvO{=3 z9l{X|5Uyvn@iOTp7m zMPEPp1#>H5iH_xM)lY6Jb`enya$FI3HgU7^o=sf5TLill>;b zTD`_iB5F__O`~S+%IMatqI~~tN*M*AqFmf_T~w5Rdru9vsG@vWEdj6aU;-88pZ#~M zRZ$*n^)K-rzf6n7i+mEC1@z2WFPfLvZT+td$3Hj|FTD0QYsK#8$m^~J(}Se~{p3}K z_-mn`{K}A_MS0!n+x#%{x^reYQpuIq%>@~oJxQ-ud0pKS(Z&xculo{OYpcBO-nSgp zm|EcGUDicjS0&V6gS@W7$}I5~ULwqYjm8_{`*>T9o7GQN;ZrCAH>G@_pS<#n0O{9R zKl$QTKa76zwHqB$E($g<6JzYLv<0LLL;xE=Kl#xcLeU>jKl!{!_3J&9oZgK;h zER=GGrMKSHCe`+(8~x<#ulb|P>L(T3pc(z7DgHAm%DJyMQc*r`6``WM+ox799y*CFUoNWt|x8I&zItHfK%`hw=>Z$ zoUr1Pj*5I%|7GN|7H^2ZZ>~C<6QT5XpoiTMUr3PB34V~$yQnLcAfSi!W{Mx^rPeHf z%ZY0;n*1*#=X8ws#I_1y-WGD}DWqlb!pV*YDBHqxe?{#CeCn?Z7pA+?!UfM{9HR8m z)fk9C3@@p{jAg^1QYyy~MZ9}8Zxq|W2(#NT6r6_?X@~^`vMf)G%}+hakyVS)9xF&cMZ?Bc6T7`n_n(CaoD z`k9EX@#Nl*ey5(mJ;PGHNX2XR2cmcCaF)2s3iuLxQJncCP&VZKePmX7ar?;}Fo`6CqCZk|l&^uI zfnAbA^`BKpb8Gw9Osyy+@Yyi)b03GT{2F30ZnbJ0Od>)y2CS?WH0!fyt`o+bwa9=wU z;#amQ1-QQ@Q%~Y?@H3~15^K(yDfABM9fI~7Ks!#%Q~&_Lfz~+cjU`@=15~E5TP*pA z3j@{j+j2%L%9Rj~uWlP7Uo=xmQE`KNFdBgeI#0 z7m-O@=tsL}V~P2!<1a!=f==yOs)FWU(m@FOA`ncYov>~CC4Z2&D#Q#!FG@$Rr;Dj+ zq`8-l4m7-}fJZJg@pp6~9ewVF+-2`c(ng%`3AgIH9)mbCXW2Wafg8WoRpOIGV^l2%){L&oU0^{j;J zzEq@Sx>*oKN^bSnlanj4WvgIaDP>9RMb)KLJt#4(L*kHjf*KY!7eirZ7L`sOTf*xO zyzZ1Zq-SE-Zj;+L9AzMz-@bz;&Ky4cV8SdXhx|Kd9n8gu$nWL-m5yHVypR4>oBCK$ z3o2k$qa840M3zF`b_AxeI-{)ki#%?~o&NPnS%%~qmtlOXp{jPUqD)rkS-)#`v zi}THmbgQxIz?v}{3dTKPPNQyL83$d{(QD{-YB0aTfi8ae+(mi433vE8sChmvhX@Jl z1`Z_ro0f$_@AawN2Jrog;2Ui^>FBCOAbtg|RebYnzJX-R6Hle1+d)zd{lc}ssFJ%- z;|sUzko2{ZTLI>;NZP8co>ruz|Ko*)+wcia%%2b1o~rcXbo4?x3bSGbs?PLZcG1h@ z@l$XwZ6EQdOFT-ia~RET<^$f)TWpT4;e-*{Lye9$9x5Gu-Y>lor72{~&~3_t+zY+4 zUZo$@_1@X){x{@@r5laTd(F!?4%bk%Y=+}A-+F9t)H6|NYweK+vxH!v(aXm9Ak!I= zZ`?<6ZJ6ZL8sal2I{z^8jVrHoe1EQd<6S0py~#IPjL&@cGh&-JqzJZ} z2&93PwyIp?D!IX8wZ=!+=B_(f0WD329AKuKggy{f7C#r{{~m%Z<-m zx*&%@n#O0|UImhU3V8%`;#??{;uQKUm@Ve)pi{L=9Zj)ZebZt?n$Z4aB+TrKq#^oi zZVK&F$}6)YvDax>uut{Wda@=xb!r;pRuBxUR>#=m8Eq^XxOqd*>FB$Lom7Th7;c`m zd6IgF^n$R>_`UJyl6n1PU}#1sOLVr@=tt9PY7*d- z7P?>vmuvxw7-GUYA1mT0NF=1tNm{5F+Ud72`$_cMOYjJ1y_?v-gypP0a$%cJy7qdGsV*b~jJKsJq8& z1{4!m_YX$ke0(mpWGoesS#b`&6PnjaDf; z6mCJ+f;bPoyjwQS*ikv+6fuN|Q+uD=3l)Ea$<%D<(2Z{OE9L^lhzIa)whpJd8EyI7k?Py6 zPN1quwhnR)R6*p5dz4@2XVF$KCVfx9EEovApWR#N9e5n!Op=Zk@>-)B$*1bBmfv*r zmyhSlPJcn#wwO1qWnaogrkE_2Y9h@*Z~WbBH3vedznj-S8b zwiZoUdEM@tpcNd_`x_hc62wKRcO^s8EEh25R1^p_6Y!#*PAK5TOnc&LW>1Ii8lGl| z(cbV|N6exEUq|wgVYP2li@3*eaEFv?7Bx|UkioblU-+QeO>K|z!1lHAKq7UzNxB9e zOT0l*j2iG>sYV9yfaw_M{^2Tihl(wz*UT9WIK;o$1c1Yp60$<{UV1!tE^t)TaA zKPsdR@UGsMH#D3i$$+NiKC&A2b1AQOA%d*KNi^){=bWdU{qeV>7+DGn+RazPxJ#cB zyvUCEWKuxY`|b&b#CDbM^`-*tR@WV`-RkeWZ)_jYl0DV_*M|0~YWnY=r%osj_9+u0 ztZAPLoSOQvI1=xH(-b!ojb%0iAp)nVvqTMRu_dHdA8&fdNsaWKT7iW_HZpiWk9;=}VR@Ek2xM$`jwl5~-nyWeWE2#Jd)6dOyGNu<=pj z##*$bdiyczUt_R`8y-JS^fBb z{aOpe@A#yVeDMw~m5HYDgwGKQhT{p3QbstQ@NtHu&Bhbn=bbgi6TaqQc+FPD6TXxQ zWx~Xdz{$>{zrwu5N;knj&i>-!=}j$Rh7i)_qGVVT4zF11de8dE~ssNNtl4^)=5 z#ns9rUEp_ns-G_M(=+^ZFF!rgPnY`XdOux3da`2^GJfXJ!DzCzr3yG+hmF=fo^akn zOv_rv6P`Cam{Lt_<11ojm_J8y~*xF?OM^bo$g3qq~6l)~L+7GbWiyuYGDdGnlO2&nMP5!#4 zk-70_8+0dqKCb0w;S9AKT5{|FQ{?E!_|2JIg^=mZV2;ZH2T=#W` z;t6klr9<}|f8DDOFmzuhf89GD%%VHOk()^h-CH&OFuJ$OU$+X+CNcgS)L-|~aSr3_ zb1?onaIsm85Bv&!;}cF%wsI5v#8&JUT>P8$*S+xp;rma_UpEg6b}cj;G@kIzRn5Wt zIFP#qnA`4$>40`Uom?yJxu$r+gYOr1w$@*FGnGc{@q@<`w)M#CJKxqKolsr4l3D+- z!yWc2_9JTxC^@k9cooftE7^)tT9@)!;k-@0?P{z?zPw-1`?fBm@OvO+vqDymqHyV7 z-`5nJA%ET5?CT}ob`@HwdeNOgi=Cs-%cu8k_1FF5?=ri0j=%2QforvaH}%&&f}u6_ z*L?$wKp#I7v|Nq9?%Bc{WCm-BC%gx3tifM*(`=EJ{B=EgF6z=D;v5ug%2KxTGSE~G4a6*Vlyfd+Y zS-rpRbu`}CU$;&jYV5CDXoLABuNuV@P79minAK&S9N`Dj(H%o$y8FD)m@s(+CJ*bI zb@kUh^Z_-v+`D2{Tl{rLKA3K$zwYn1{6FWfyYJVqS#66aTm)*Dvq-w>b@7A;->oTk z7+ZW=*kAV@&HGv)>$>>s4)~43uNh)I9DW^R-Kbq3@r3gjtF!|%4rb{z)yewu*ZuUY zP`@+&x-;&v&ASc$y2sz;dblbc^l*Lo>%M(f%FfpP%O5x;II2E2}zjy#&kHS)mU@nbuac_D|SCeUgv=d!BT;|?rp=2^)IiR{T4U^fglIm zpz^xMPH}5RuDoswM%C;|T9Rob;K;%;{Q@5{cM~@+x6qD}YEfSI<}IR)A5va7=r3)T z*QIZER8ydH@fRPhi@a{0P=5{bx*1kxiC0)A%>M--YJ~6Ob$Sm8>o`t~VJ5)#KGV_W zXOO1x;rvve;Fv3LTN+A6W-Nd1`OiPUpE5kX~z^7 zA-&iPd$u;7aOW8UTxGqFf8AAo_Js>M@q{Nsj>wI9*Vte8Y$Mc=zwXr(5;;h~ zP;|0GsmVeqcUam(<=5iOhQIEv)NG?$v%ju3du_26Qg{pYdN%QqY^6>{x4Bh>q1AIY zsm82~&ZCHAbSj#a(T$~)BXHKDQ6D%NU4dkDMUv4$ea+nK7i`=)F@BA;h)ik0U-x9% z3Hj>|u+A}=nc)Whx;qAMLjJnP4`3B)*M=VEuI)!5MMB)5J2bgEaHJoYY10?bbN1;EaQf7yYG-vv5~1B)NZc4Bl&hLN{eBI zaq1}5oQ(9weYXX}I99jsVf=;*(8#Pov@9Bovu9bj(21qr*yZLF7_*@r4IPXSu3XF zMl-H<3Jm;jP^xAH7li1#1RwEyb2#>?QW~I#IC7>=f-ZpE(I~`^ElV8Pp)4`9oxoEm z@Qe|7swo>Om~QKjAXF$=mGI{{Oo-faq-=EO&J$3HkxJC_p%Osa`2Z?0UM`tSc@t06 z8Q>=mQK2FEseL+Y)NT(Etki4F_Qo4dV%w->U7s&rf75&`nTKgs1p8S^q@$Cs&$ZO6 zCT*aYq>T~wU@b-5HenzX@X3ZsESPdFw+p*yOnRsd$_Mu3SWdlaXN z<)$x`iq&=BSRVE2kEpOzYY>wz+>cFsGE#d!4VNcY#5ymG&GCw=HsN>g=VQx1Z|F2w zzm|XA`^nhE=Ob6oiM5*(srA?-Vz_3E;d4<*2~UmB#ynYdV!$EcpiF6BU~m$ajqS_Q zN1MtQY_zD9J;onyWALd#uGCb!%z8Q985Yv(85D~5e>PUL$UeN5q?tSZ0 z`BbZA@7NSnMjjU0yJDd&+*8J1IM zITK$uR!5~L?#6oeZ@unak8O0k-I8*g#W{>P6`Cxndg=ayk*YE=r@ZINc>kv(llt?O ztP8g;Z}&ZNc+CqYP4D3UbPdA*dig`!eP}h6_grBHH1YoPB9qjZ*31HZ8;#cu*i&}t znn?TjQa%p8WB1IrUdt0bQu~O$H1P029xu|-#v$W5RU(tB&=5A~Nxw=x}lI{2hfY18wlc8jQRk6)_NRzJHI!6rcyy@D1ZwNKbMAV=XwKY=F64D(7u zj>(38G6?}uOqB|iQiucfU_f~-S-hFf1LzKrP4EnU6Mw+kon~br_yO7$giP95)UMjE zx3s_7FZ5qp4|usq>BMw1X4P{sY0Y$z|6FSCp&XvNTC(3@4rR+o&_Neg3PFvKc7+Op zgu3c!5|KpKKo9b2jM~d%I?QDY@d^&pC)tcujY_KtMEy!>bm{kAO z-qbpL$Kq_uWwCVrIBe^kpFZ&^{)7>2kw!3DRnqZ7Jx$8}tik+XtHKd7n5`n$QY2FI zBs7JQU>t|0{tF{llwq-(`X_m2n^C5o89wH7k3`}%?_J3{h1kND!T_FBM~ ze5y#@Ks}AC@OR-q=hTt9x#g1Ma!ML`rS7G8Iy#8qq;``TbX{nvD5xlk=yFKe9@tWW zErLB8Eg{{e7hlP^bXmh?k#6P1=QQG_v;(o(>OKedYoRzB$dGp0Qo8Zy$Q}4|9M?V8 z7GJ|VF+#R-p8*)s(bykz_lZ){wohC{SJ)?>KQXgUDE><6toCj}<<*c0aFQSi+Ye3~ zy+27^&Tm0_bm^=Pyx%$dzTtGCTV+71RtN^KJtdSUN?>7>%`ufV;F&(%=+|UjkAf|# z5aLuhRt@CB&NQ61Ak;3QF;&SD~xYEx!=&_`T4rf zm@LiO(vLvQ6vTbaa6V z9G}fiNB^mua<=(LFpAGiM6h(FqfhAlZoGfM-uD2mZdFT1pVF&tygJ=~#r-8k}I@4ss4&*irvNBx5p_w{Vr>IJs*Mz8xsOuWZZ@c#hL|L%6u$o$UO0@8BBG8?t z%?lw@gTXc85sWb{UJ3IalHcxNs4KRWt+gT$gSW!oat-kaRxZ?1wBhBq=|fo_>wJf~ zF5ruCjl&?J^(Mbg~0=Gw(0aA@C~z6EHH zhVvKdDjN_x8Ar$f?JEQA54Pw|`y)cgF*9yOJc3m?6AAUHdxOR!=uqxZe=+dON{L5; zltTRzX6p!Ffd?G5(iAV5iVN3A{{>7x_#v}MQIgR5H#Hn<( z@d)tD71&C3z^-I)Vz&*dc!AVroCr-6C!spDHU>|Se0@`;67>e4+TvPXD!s^0PxI4D z{q(JVdYPY|sWkKUKhmjc66t8i$+;}__mdc*grPGjlZi+0+=0!-BRG+7VT2DjV0G~b z9=Un-@d$dT64(uMD$0#V(3@AbB`u>RQr1rafTM6uftyaWeQe$0L|6q_zD-`#}qw@PI4CD(1!`m`PrUK$^xQxKag@eJ1k= z<^=xIclW~Net&CuiTAH!?NU!ttf@XdmiRiJNF%2dX3o&)c~148)&A2afc#3*@{OIz zQ~%h@9zN0SW&O(Q-21ZGQYv}FHn+X3U%PR8IpTqVgJ|Se1p_yRbK(j8_%lLc-oqsD zJqRIbC)JxO;A|H7N5_)e{$--T@LBqW7{?Ji#UoG)?Stn+yHwaArhO(+_dk z46M1t!IrArcy-*B`v~mxiyVgFPurIj(O6^q_BoT*BDHgEa8~a_!e%*uDbN?MFvX-^ z4s;q;$X{zPBLi`k@mg=#SDlZSnDHX&7W)(+uJ$ot*M5Jus4Dv*Bp*ytEv*R;d+~*2 zw59fRi>kmSm>njV9Ry44PP1Xy2@UeS5ro!DJ+ARES8%8Huc50GSwJkx5-=yL2*3nY z2Gk0NoPRavt6#>{GX@;1BT!x0gR+eC^14PSQ|?1}+#!O(_;})=QjHgIl&ae?dSa0HX49OWT(EXMDe=zsds66~lIhd+ zzYCxlok;vr^I^4UStKJm3V)t8q>mpZhmaF7vdBTh1fXTQ- zyF-wMPy8lQYoOn^&jl3F#1=(ryV$4=@#h#yu4Nm^S6#MiJpYn6yzbh%p%dwB&Ms2dD$lzAvwXewwV3M#ZUzY%*9M zv`-T9QYtD^J>UTJfv)oL-#L6TNAFN&VuI{~aCac5LzK zs&l3P?m{Ix`wajtfIG$ZMs)y5L*8Ug8S%Qy@?&)z3B3CjbVbYRmh^!N&%km~%5p)R zqIjZH>KA0ey*IJ3MMRmW1~EHYrcU<^qIvpQ#Do;_p5=3w(hwH0l!HY>43piusNRjF zB~W}=Oltgz4O}}=G{XB> z&AvoY@yJYZ7}9xU9Y%C^ztD)>hA`I9d3}v2>W}E3Ju)MjfVkF1Q#QekX2R}9N53SQ zn)sdO&0c?`^kxW_8@l>Ai^*yDuND5UUXG+NVxrWa4d@F}3Xwv(VITe3ReyTuPgnk^ zh7#|b8sU&A@>KsjbGc|6JsWG0Z zasNz>eN^M_e*cn z{TBt^Ts|_md9(SYYVK1tce-kn{)^Jr`PBwB7J3I~dQwe+OpW>8xqdyTEBlm8L%$~J z8mjOM#8kkE61C~}_p^H|dpG~Pd~ZiTdmCj(GufN^+3oF__Ric!yyT^q_!5t1TC7Ble`%k5;||;EU;0`5ka#Z+&INJ~IG6)SYKdvHf9ds9TApy%sZ@$fD+MpC z$6B(L=>5Fc{hxxWsdtd{nNb`}WIpB(T4~iT(n&4gAr`P#h6POARa{Roowv1ZD3tgj zea6lxR#1_&$FrbqyRRevdh)Vjj&s5DW+i;i@sfE#WJbJbuBK^xoQrv!G z+emq2@G_G~54=b$!cWP+)V5&n#`}Q|9Qp=zG5w~02<#vOkU)|4?ZqvET{t1ISNLGB z^ua!+Ww3KhdwaZFuPXcl8h6vboZ5m<+>O-l1vBEA0RHbP{R6m|PP5%sa%GK5($mvl z3*830rOpXcd6SN|10Y$;^GDpy4~6Iyk+oZU_yS59xl`3Wk2ygsS~iXif$R~w7{n$# z*diOS0YkHa?9pI=<+-eh(`;61Q2|aGot&MM=~Okv_7MhX$jP+KzFy+Zj%vmF4}}}s zlZ#^>ns}-_0Ymb1Eb%1=Vd-=7p%AJ1mI@#+5gt#8A(rtJQ<2Aeandrr5O@mpOdQK$ ziL+Euj8JKK!<1`K9qjThSbN?}QB|IJ&ih+;nOZsj3E6dN#TOGY)t)UFU-onifRL`2 zdIPOHB%E$Y7)xFZJM!T97v&)fnk*~q^5o9#jHa>RuOvTK7g)BwWrh}~kT>6TqP>JCR9Zp zNpV}_mC!b-#Aqd!`U#Gaj@i>2l%}+8Ok9Z;*b>PRN+d@p@#P4;DKw`+vb-l_SzJUhE+rHkUzTFt9n*y|A>Zn~M;l>{DkK%AO z^gHZ{X_)J6_^4YpzY{zDLHVhV7$dT_Lusl!i4_p%lGm!V#NOrX4u_-H4_KBLadxEDfqBm_C02_2{f`W7(3iq=-d~b>dmYWtP>RtkT*~ zBDI{d82Z4XK1K&FBQ>5IT;Q%9yF zQhOaWG9{@bPlNlmOiikWRM=kN!7-d?i0L=*_MzG_W`ofUJxI>9a)-q@yn= zI~)~JpFI9KLtrqI zO0_4>uxD_ch$9tQzEmqeSonI1-ymV@If)`A?yxT{j3*)+5`t7|EQ!U1_|MVor#qYj zLl_u6q#|?yvbdb0$!VtANlYu=i_FB7;@&(&Gn4&hZENRXUp(+Qa?S_PcQS+GyHU(p42y!=VT{K&X_3z>4ju#&+o<4+jLe}=G$ee zFN^eT0HURS!a%glPvA!A3{Ep3g7@ffHvEJxk-9kFMTTXYF48tFW)Gx1q)3-8nFxr9 zFNLKOGKZ8Q0RrJ40i06@8l_^@%LM4F(T2I{==9%cK{SEHRr(42yt=8AWw_jn{oJ|a zHs<%nYte_3!Dy49b>?9ZnTRY9yu0hHT*cb0q-~?<(pA9fy0?yI*`-YS5&*2*SDZPs zKZ`6&@->)Z+wf}K4aRXO&N2MH9^gXS^A8NU8`K?EDyRrMysxgxXR~#vA~Jf0%wTWS zvR4NabguLAP=^5hs!$fdXg_|_c#mqsS)8lRvk77c8z zyg?lu-Kupp_^ygD@d0hX(z|HDni%x|Zkslgpk3!8Fa&tl$VFfjKOUq4>sqy*nBc{D zQYE6o)Z4t*D6nee8Avmy*&$in+&T@y;cO%9=#KrWW-2k>O^w$+(h37WHblhOI* z^Mq$v)J`vr)wu=6CWA)sIp|<$O16@9eJ1=}J_l~D#S&_O>F9?bVLICFj9eb3GigK3 z#jsbxwR%SHJP(4Uq*XTdD|c#ygST|HB~6pSl1Au}ysW#1Kk>At1zdBaMF{{oUxcN8 zqLN;?iftcCFj?+YL!z$QeH-#c=t{5rs}Qv!gKeA$gmPfE zN(+@rdFG{V;19Tm9%(oQdpIlQjnna8~uSh+?j{MG@3Ww%RCfxdMuEef-zv`rXU6^ z?51F<%t-Akom49}hagB`r_Gp)1Pwcvvi*$Vo%qg@(;eTraAOuo8dttLGt%4?q#G0; zs((hCk?jZbKI@pE1v-Ywi;lVJXnSxzgQ3nrLG5`DvmmfxYnedlI;5kzb%_Fh`)g9x zSD}>RBHmv9vzo?rpq;92F^NU$iGGNmuphlFXX5LTiNENOm*<=-LOu#?CwG}wg%0hL zRg3SQzzu8r^MN?=?&VmfE71feu3<1aZ=K`lEl@%=0}nR14aUFi{F~@5}w(K_*6#v>VbJT?4ss^ zw!&>_ho3>IafgRKO-Dyjp8Evd^yx$ETxMbSgFIx`c6UM^Qk$+iov84gI;38v%Iv0) zEncsDFmkHB2jkqaCl85&jql}CEv|g04$O8BG8s_ElZXW->>Mo=s3b2hB?k#rzerDB zRVuOA67ImO^iu!jXeB)VWhGD}xr`*=_2B1M?&oloTH$|!H5|N;*t}4{`%aig zXL>!-0MB`@h+Z@J0G3sq?em-YoO638_DEgpr+sw>t*f2M){ei(lQwVwmYMcm;~^p1 zQ{mBilCJk(!tt=D`Y$yer5Ev}XFd42*!>*NPr2f$!;HsCt%MYJsBxxUG;W?7pMhoZ z{;zN$;VZ#~gkLKw@kYG=TeiHIqf2DcNafa~OCyu^6k_)OHZo}+e#kFlg(`z})Cjrn z;$)G99I~Laz{dCyL&tPnai;9nK{Idc~eo ziWk_k8D>@cZoOV|q7sP(oEH0Vvo0N4RX@D(lK@_rgn7ME@8zIR3lp%+uCS%fY#D7{^&c>Lc~?VmBm?}tk?caN~{idfZC z-!;RzIvF@Z{!SP<{gXO^okCmu5So-|>HSq>Otds%oMF`Y6q9{_sQ~T#IAYd^uTRoI za+ukJDcd|VD<_V|%hNvZW2NLW^Y0hoyHRLv9M|v8 z&#r95LlYnJ<`$B6O(Sj{0Xn6lzoCCA%w6)ra+xBUX&BEvE;NvOC?m8fP{Yg^r_WW# zQ{t#_*FILxU?B7*5~Xkp?NynCJYO_=v58)6&Wk&F;nzEh?nuZpk7Ykw$+*o^y3?8L zY@Tfe*DxFAg`!sh_#?Id5iD5d+!UOrLfU5=_M}+qFMdrdi`wnIpPeRAQabuGx|7pF z!%4YGG`I5_4z)atdej8Cb(Gps<%VMoWh!%+mGLo~vmZ;By~VE%AZb0W1~cG^m(KaNEPd!|4B{uphZZXHvX4Ik;MP*Gj3 z=cxtMx*BkDu8=rB-l(K_JX_+eI0=;EkNDz6E$#k&l?#8?cK?uKI_QuHwd7W}bTzm` z44AV8YDtB^vY9C1N0GxSWLL%pNLU$!;!Yh$Rcr7MdBVyp@dmCG?jJ_uKE~(Z`yGbw zP5nb2lW#c~-`GDS{edApH_xn#e@Hj_7N9*_$|mY6NZ8M9un8B2zA^wtMF5Oaezes; z?mG5osP=7Hix-Qm_x=2|SY(rA`}tNL3dvWYg+A>RiGWa0fjLsLm0-7W z>>pa10cmVC?-j!I(ZPD7#7HHy$Y>w}sRpvt(zj+#Sj&_Tb=rUsU==o+0rV%oZrP%< zHU1&@jSxuN$qdV>ik2dk6FEc$p6$}k~5c#Typ(Gx>3Jb z)-0mT|2_YZ$EUBQf5>%0+UBfW!u)KH;o?Md{X?db7b1|R{vqe6K(fzh9>JXC_=jw7 zEidt|`9izYofKRD{vm^UyS=Qjf5@+v+FrIE{6j7uCNQkgKjaHx9joG+{6n6i9Q>JF zNSgBxIfT}7{6nr+y&J|qejG%xfHrGGoFNPB6HrBs?$h<8=i0}ME&ZM<V!P z_^%Iht6?v1*>FMfSj3kgTZ#9!C1s8NivO#?>pCI;c6Kjf;bH?V)m z#+!w(Xk%MGcQ#D+*>J>$BaJOuTmO&+L!I>Pv<9Sa&G?6WRt~DIPydiZHx7-+Z3x2* zo!8fhzNW{LCtm$gW<(kPkRANd`2HcAlMMTZJf(Dwf5?O6`2Hbx>t&n$Lk>IKQD31q z#Q#;`T|6wH$aDQ)Mc!%rYU&?y?jZr8ck;h3@xHGJYW&jwRp9l^)VO`7#;9ssoqxy! zna@8uBIwXkerY{k%(Er`kV`ThIFDZ$Z;k@*mP|F*`PE#dYVHJWeIv8WmA=lUGae^} z-Y+sesiZ)r#(eK^zn-|Vv;HCbkaW9iFTX&E3S|95w)V5TDLd;QvXP(tEx-)MI_ZK|B$bKE2y63^dcL|Kjiy-NB;F7K~~IhIC$QygwII`*NcD1wlT2?r^s>& zl{?K#G%(qo&T3bX<)v#276r0L3Ou`iG2BQ?PbnfQI}- zcCfFx|N336SbwK5GTNN=YCJt}#y?~++42vOOhvlK2YJe5te&UrY!=z`0rMY;CAq#{ z>DBm$I8q4wLw@(pD)SFft_<(wKr6=gTGBf4NrbKwpNK#jTM7T6fHHh>AX=^xDGgP6wgnXH_Bo^ zfsS}ByisoCYY;=-O-?JGrn(X%2!wo?*^0WEb+&uzN|C0!UWG_N2o7jUlq#{*e}mvQ zW6F3?r4o7mSjH$(;1ZLnDX#Pk|FZ(zV-%7>vnF)$o-B8YKj*Zt?*VXtXh9qFgcD3I zb(-bK@2{t@8P6B;N{V69Su00(MXxz6Oa=k8aQjXRrCQOeY28h`Nu1a0w2+S8R|d~` zl=E6hM{gk&n}~l&InAz}*TN1OK*nofN2Q$C!s*!mmgWjhZzXMlQ&Zj&gs>xfK-T`Z z6|M{?eK$rU&Nzvf^TGOcYq$ViIQst7>1HgAJIR3p*@;Tk4Lq2@a9Vyv#NJ=i1$n8% zF*pg!6c_IAtHSr+PM!x(4k9UkhnOXQr=<-%cx%l z+6xb|Ez|4umKNFr_%x&b&0TM0+S6wLhK+=c3W0PDC?*a9MIHVPUkYEs{tX|Ifqz4i zPO;gR>#;uk8*X^6P5uoZGkO+9toY^D;0qd6?Q+9mW33H7IbNC%?f7~|{OPLn^skOs-^0KAz8dT_$-YhBU9d3L|I5Ka)xhVLm;TDagmt^_qtIcLxiwT2e)31`3 z6>6W# zS?_OTE|qq7YP{sf+^5oal$Y#tw|%0JUV);=nTCa|!sybUDWxtJYE0Sq*c^H%@}_rv z>NfhNAyJ^dsxUTZDL%h@)jyPP*@kS#QV_$}(YmofE@We55nIiBhG5pQlX>c&4t|b{ z>{$Jk5Yus{l)i(vIvpA6NdG+AyXSK8_ZH6BtX&7ez-a&X`FoiZ6e&j>e}UL&>N}J5 zyS>wg2_HioMtJY)(%;{mhIKvC&(hgneT_p^gYU^EVxx zYMEp6iP~SD*jFH{nO6~_Z4tQ9_psRIAIpl_?<3xVm73eyR2w>^x znS8=c0xHsRToPY0JQ&<4Htqfrd(+A$oG10+6~$>*~}?2s>1>iO;LVc)i6ntM#^cmk|ihBp`2eJ zBJVVbF>m~(+Om~&tFT)&T969ZszH2nQTr=GkHi8IayOrlxq<>hp3q0jpll8@Ym2(8 zwM9E2t3}gq4(1yT^P(4QqqW_#k$hl9?vU9p|01F zru*fQylK^bxf=!Bx?fg&vZnoV!bKZuzkH*&zhCaOk@m|d6VTj#Iq;X^{c=xIf>YD| za(CV|-7mLNc}V7q zD=l-K_sa`|j)wQkQ~n)va$WYzw=Qb!e%bw)*6f#~dbM`HoOg-8U+&8%ZQU;y?8&?b z`{hFytpEM;Y!R%#U%vBRc)uJD%B`RMa+6RSAAcF%FPDKg&9~92{W7(Oql(`D4fe|; z-Hur#<|BLD%Jh9`myFSiz2yvcig;X)GupW) zhxal#L+yX+f}5ZZyp?Bc169M*VdbO%X5VTTqpg@?1XPpISPMfJF7$+Vlc{*6ag3=N zzkH$E*~;H%)lNL|Ogg#+O~GXlTS%t__I4)-Hn%u^NEl0KtINH9`%H(J3MuY9P=-4JtJrA+z%f?3q&qd%tNc z-fqMLIJh0SyPLZ6{}b>4Ip^hTsfjxRjqm5|#IP7wpV?hP3eC}FcBb>W(*0%!t3*#X z($%y6DP4>sP6)2iBEf$W78`3U&&YVA-QnfSVfBRuiV@^ySn0B<22N2ZH*&E;RtBW=6* zg?7@I$5DUIS7Kc{6vySwu`SgZ^D^77w?aq!_@k88zv@_W_gAQ*VVhC>+at1ltz~D< z`@%X->*4c$C&Rt;OTlq}^Xzdy`|5&)<^8|8ctE z6RD_d7GY!F^La>K*cpExb*@AJ;ULr8DY_yZ-I6k8v)T{o{Yfmj8+XGD{Nxt`D-f12 zhG!*Di;^Tg{@}?E7%wjxk+j~NPjt~Strq!MRx`uUYR!wAna6muLwIj}NUHJsm_ z*21sTDH$XosHUq@+e&Jn;hDt17ZvElwovcu`Yin7Epu5>@rPWns2UJe>I(7aQg?aw zoM!gufz`P3RRigKXui<(J5`RZAS@&BN_-|qlex1YOE8(g>B(enE>S^O{@B*ymGu%u z_1TA4{*=A!PZ_GYCEj@pR?oj|-nj+-CH~KV=v&Xf+)dY;@GmngvlaYHnZLmlf)Bx& z-_41C?5~u6)fgbCNq9Bib=>@`f~%ybJz$+~tAEvLv?y|_)Ff-ty-m+^jEZ3Z2m5Q) zs1EjrQxrkK872rAohg6usV$VB=*nM&s{fSYF`@$@S6TJe5XZ@H{6bxqvStvz*UHY4!Igkr5I-f~TKf;+G>qZzN#sx>ml~uVE#+-GS_LYo8(Nl1|Jkv0 za^M+*U?h*)4cxU?`NEjVj7rnBl+s!8(zV6ZA#PUUrQ}(T^??l9=8NW*W|4SkX_f>? zlx7IjkEvBVNZtF~^=g=F-i}c;JJUe!5rL5zdfJ}TEVzK=Kp&G%b&$_`xQ!PD55J9B zUYKisNJt2z!<;0LHaEwOY__KqZ*I?N#XH(_dhsuLre@$JPmdpZMKyQ*qdiPiHoQ3E zz43m55nQ2Zkt^6crzE`wM8T&9Ma*7OlW=yY@_ zQ<*BpB_Fh5gGfhlrLrj(}Ie5AR5^iT6hGq%Vf@-2@V z%C_P>)45%X=b5wb3Rs(UKF{2Lw79QUpJ%3Qzxwk`xhNAlX#IKSZ`22InQh>pg_zU;ylxPaVyR<$DaCA zKF_RpzsY&#esEwtoo5PrP?eONP0uqo@~ZK9=G>h`QGL$fl|N-U=b4)yTK#$Er0F{~xP)5d)QDoxIv|;u9m3olc z7HGBdmVH)W@)?fWSCemY)H&2i!{cbUVWQ+pwUUF%wg9E&^O4$pl%l0dnHJ>F=6uN^ z{xC|jMpU*N_Y2v&bN2u<8{*;BTz}C-j=8!*=L?6Xb!)rW9vKu$S3>UC*tnJ zk8Am1(72|%gKF=3lo_epO~^o#*fv>w%b3c^#svCUz8Ku?DBvWBb-6Mf-Bm=Y$cg|2 zhz;D=Dn&DJfK`fRgqteLdwsXz7#_0&@xU63-t@ka_`oaP6n_(qEFY8iXg338cXbkY zyYuj>EgV)I_>b1%&xA#}_;VZ0*hufDqSoS1YH-W=b1L;@@Mq>H8T>ht{4oCXq2bo! zPlVFz34ey$K*686o39i8)Izz9@aJ5z41Y%Q!=O5XHU!lc@F!p8eEj*>%Z>1-0W=BY z&v%CS;Lk=@X%7A@-ztkggT9r~x9AvC@&j2>g+Je9@aIKdWbxu6pKoK;C|p+&!rqVhK(eMv$(m-65TPSxLMbU(Q-#S# zmEF_Vqte4M4d-cXGwEI-k{&Ii9kk)jU^Q~^i7}a zu~zeu2FXM75xHD_YH?0X7L<-YpZTcKw5(jd^^Z9%uO0PMnwA{-jWm9~GI}HshT{61 z^|gPBld;Ok9A)%<*9Ygg-M@^SgH)2gl6!;7AT@IDV9)w8a@iq;{27#=Dq#baFmGg2 zh4dGAc}Shw#1*r4Q$FIzYDiWdD5U?>6`T;^O4o=s`t5XdDbyc-L>=c}wI~fm^+HS< zg2D_xv$f@}3aiBiF)va(Wn%B}5X$lwGv(I7kwVk*n z?jaWrVen=byIfg#p)1d=W7s!sr?%%kN>`j6Sjb8AuVyf_p{B7;q1O?2K31R z#TM*piFeqY!M2rIGS@_(JqW$z=Bo*PcDttS^x3av`aEKAOY|wKXhNU6GJflrFPe8G zIuP(?QLrTvm0E5MBs!pTE{X0%+DKF@42W3qLN1BQsvZ)J)c#ge-y)e_O*IYObL>Zc z1bU6oi{|KcNqz=tnx)t6Ki|5I^!okdtEJaZcl=4w>z^NQLa)<6v-Lu+-)-DHy`D+< zAePEgI%PngrPn|IwaxVU$fqsR>xqACJH4)EKfSrMC3kT5$o#q(~qg*N83-&q4DPEbAR$zx1T;%woM!9^SH-WOP_~s z|C6H6^rKDa^DEG5z0l_|?VG31|6uk7ea_>x5Be;9rvK7r`aDaan8a2#<#*>?*>?I| z&3?Mkz?SH<+5PnOjhfp}Zv?z+Cec>xrysY=CDHdthxgONke7y8-rXFDu4z9VLa%@P z{q!*g(;U5CN&f2Sb^nUC((Bz1ua;hK`q@v4UJrY?3B3-6j@Apk{ylx6DI1&czl2(Z zUc2XIK%b@8!)|IquQ~q7mlc%nyZ<;BXW~0L8c!aWe@I=I%VJ3#Cx$OX0^6QTa~HlnC-f5E;#l%mI#We-53Vx`jwX2{ zS?0qx=Jd(><7^_!kt?e|oCBA5FCwyvB?nn{NIMfRt9@(~AfXCbq)Wn;stnGMmKko>??T4o8#nZgdp(KVMcQO*0)fq9|(x*V5 zWcR0l<|q1j@?KZQ+O1Obgq=@??lbb9nvV8o2a(>u zA=cs&EoOd;fBfF&mFPkE^BSbph?@exiIIL2^*3nb&+|d1dgm`6)Sv8F7pl2`sOFB% z*Sv~DraC{$Y97xAl85>5Np{>nR9nOUnuiSWaa5`~(9G~_&$rsQv3}>&f0}03heNW( z`sYBJ&DLM)*MGkBiZp(0n~>?f))Zu9BF`VLJ5cZHO{(LkXXnE!z7&A2_d0k z{B)v;QN;MUo!7ddYeE;M;+XW#eJOYh;$Qv#lHXbIJsnH-^;g=<{3+ad2THhL62bh% zYA!>gRy!FUgO(s=T!qqArlU%s014neFT^|#?_{FwE; z(J#}51pR5~qE1n__eY3@AHBS%(1SH>pN{^HTI{83qpRNr^sMfH6o+2}3TNd#L-s;3%&%!>Y1BUgNH1)bO;?C&xU`Qo!x!{SI;5inL2HBxq?3B=4Gb$ zX=05S>O4&u&Er{r@=<3Khc5qHE|L`DJVc47Deo==t?ITcmd+oyXRKyH0Wa@X6Uh?_ zg%X$hRqYT|%!m*HObN45uzA(6>YUZ{NS#??wqTk&d3PUJ!V-s+%|h zH{z7ivyNx1*FJI-`FZ@c!z+ zk$wlho|Yw_{S2#Xz7a$(=Hk_KRTm?d-s$MsE)zfJbX7OYEcWqzIB!BU(N*25XFu2T zzkZn&l%b~qO%!;K$uc{6aiKTMU1a7RPdC!hF_a6I2*1By#uI7v_piJXz=nkSyRG&2 zg|Dexq`tM#MQ-@%ogX95UQXb%23+!j7aE6ViH+i7Gs<4>z57Qs{WV_%P1`ezA0?9L zZ?8@i`JJfe6I*ab+pHa~){q$0CO~2U0*Q<6>eT)2ZV}f#f zgs1x3uNooQeH3r_lT~$_e%>E0J&l|YjC*;Wh503d&@k!>o^m_1=l7a_XiQBNvx}pbn2Sj)wb!NzPecpN%J8j3>Uf zg?2keosN$C(uR+p20zfS4UIhgf{DA$ zP3)ue3&7tl4}FJYf%o}AThPyCj;4<-J5F8184i4ST;bCmrw#>36PBi=g#lMN zLRH>U%WJUrFZ%C$@IDxuo{oMjo(xSBifIBX(h>^GRKCNw9XWcfq#?tm$z;dsE(UO` z%>H94>4rFD^iY~ETNON*(oD0N~9uDg6C9sM;K4$W93ovll1nBD`yhqNObOZfn8rux`tZj0EJ z&zLc9?3FfA0X@}x9P@7~vl$vlsq74mpc3oE2g?NN>6gyVs0QZH#aR188j&S9#NW`n^-_% z*3JFtmapbvX}Hst5NrMHOzWqB1R%#yYyF*c^bHYO+grEh7JmketAMfjWIayGoPZ5A zcB65kg;)r`J9y(}>}0sPiwlEU>mSUTG?O-KtLRPYXThwoXpFN@;RMd&hoF7y`gDdaj@mh_4bBUjc>N(jiTt3 zCp05xVtF>Uh;YA`8x6rQ^OC`i;fvI%{%j=sq(0F{p9MkAUbcR{NT%kc#}t2Fn6!E; zNT>hhzf33nm*m~z=QWTQS}^_dS4>M~-&kFTy#am4vPZ2ikwM5hMzG9%SoUB(ohzFy zFGD@F_&x?r*JgaKJz4Fjz4Ke$-X-hQ-ZHoUHW-`;_(Zm)cu+AH$gdzp2#b>n;EqjeeI z9e#VGTHW4R>(pK_zHeA=S~tG`rPgJ9xt0VT)Ial1A2kjP=jbhPh# z;*6Xu`&azd+s(vZJ*b7GAtKSbI6S2|o0li{YOh0bjT6`Dg#7f-#GE)iOne?QK2Uw* z()4)E%63Dyejb)6-ua7o&!@`!KYxCwp%b4R*S>fC+*rG(&RY?jGmCU!72DMR@mS=b z$9q2+zkFpoR?EmA=BScbU3t9S!}(Mjiwt=+)_*aD79-m+zRH~;U-cFuA$1mp#Md;= z6*I#IlyUqf0y++a+q-kKuOtZXkM2A_oRE<9gpW$RB*tp_2b=&Jf&24#|7Q){DESr) zQit+vzzqW=TJA{{rgYSM$Cz|@P)z%)e#!mT9~exlehI${8#t(-p-b>FoNIxZ!JG2P z#0|&c=6^R;Xcm|>2_!BqXt*xiTa!PE{{!qpDV8r$%F6forrj6kA@f=oFrjUNCSqda zQe%l%y-N^pg(xMSI1un{*Bod1Tbh0PY2s!MEGm_fzVt$em~WJk^f%L?0dC2w2(i*d%?!y zHaVRjj#58;>EsR?mcoqoqVa}*1d^Ujtl!JMBQDdyMBWN+Y~RHacJ#YQ=m9jk`-gBU z)a?mYu|*z|oCdVR@h6s7b=*1)C$QKiFcLv%vS@kB zgL*9(RH_5&{PyidzYfhFRRihh7jFe^YlybKXpkd8)S8tWkByZjo{7vln}awKj+eb2 zUu?lx1{5<=#ull4!s^(Y{vm1GiitLf#db<(-PuxCS*h`~6du(W(u^un`v9*Q**@8k zabvl;))dh2Z$Gcey7~w?u(-3B9j{z4;*0GWN=sNZ!QJ(B&0Q-cm1+ZX= z1>sc(eFI_oEZ>*Uz$F$ZV!F)UlsDeo83ojcj{-YMMZ0mcbdio|M7IAXKZd;V0?;)v z)nxn8c`Qzkwj8!e1p|b%l?8oEN{QjdAw}4#_fo~BlyQzOsnL>60Nx@hq9Ywo<6;Vd z9M8Uv`~Fqvs2Qs3a~e^_v6EQ*Bsfyn^~pc-M!hbtV-0a41>zktQtNVLVuL*9Gz8Ib zrHdrQuQB>nq!<9zG-qy0IfFCP^I%171n+_LAO!D2_X)u}P9lK!rEjbb-dpLjEW9Ng z@rM2R$AkCsH?r{l&n;PaFW=YTJ$j+R`{+M32k%>6-;nVBFFgps`<{Lwc;87PfOl7V z(K3EtpwF`K7MXkR-uUCed(!J!cpr0f7T%NgF?g?-Z}3h{Z4TbQdTm3(`#5?KhIijE zyh#M`zVX%7!dstZ;jJCa8$12SgZEaiW#Qd0BMa}X`Ww6_KVk5`@XF@kJ$Lbjg!d=? za^U?|pAfuXB@w`TcY4t>e&4Rovhe0`p69i{;m3pb?TfSUzWC2sc;DXF;9WS+;NAK6 z&B1%vD;pBtm(qg}eoxpd1n&z;1n~a%%d3O;LHaBUZ!rblAFuoI;N92m!*KiMrZ;8b z-FI(;_Z^QLysw+m9K7FsX+y%hD?Jdr9|lD5CvW{S1n*Z#1n?e8FII!!`YZ$Q-cNeF zT$=;z**W{S+wIpIb8==Q=H#iDvdDeY^enKS+RK2w?;Hd6Zpr3=eg2CXV1K$Em=lId;xqdtMG?|aC^e{9Z6MBW_<3bX_ zd<=blb@OqMKFiLB0`q!1UH#+D$Aagx^Krv<+4)#NV0QTPevjIG^qkz>e2jf=z0OBt z{HF&Yct5j82;NVU2;lwZqSe9s8hw_9H_9#W|BpW&yhl8jh4-%4X5l?TLBi{z3m9JN{!}Uf1>LTWK%3*BpM{qn{@aAnwew>FCkSa8ttY4^)lj>l1D&2+h}_ zyNBj0P9m7E-Jf0Ed~K!Avh&qh^VR+jKi+)Z{%m%>F8)(?zHZ;c=Bw~wo3G9jo13p; z&#c$^Y6R~~=|KqIH|-jN_jM!!c>nvqtAqDx`Ya1?l$G#5Q-3^o_kAV{?@h1H!n?1o z3#g0UG27sMT}^ZFe)sA13h%5v9AcV<0EYb{{uodFt44+~NGt=eD||@OHR2ROEs9f= zSGA=~9E!^Ouc|VQ1(v#8`PWcpx%OMK49u_Vt4fgZ5dY*V82!ksJ*D2*)c3O4nb8m; ztXEYuRm0oxt4(+XFy7YwN&A(vwXDe&CZV;E7~Yjb`~PoTVE;!~MyCd;ie$$zR=^38 zZvBrCql&x5>!PLSz3GOcSTEyeUrl{wrUc;rH(Os%DK4;~MQUa0B)$x>OKun@!aUF9 zJB4bQVNWMz%EVM5^wVJq{j|SAvm7!PWPe5o7qr5%vF_7=28NXBFW zu&QvZ&-tS-4MeESFZ!VdwzCDoBx7*Yu%>59T-m8v;?sCSjDjhEHU}S{FT6T!OIPm`P#X7OZnJsj~PNVExK*TT3g%ApmQ@L4~xVO{8Rg z`;HAe$`X-Z9k9MKwNWfF3=f9)h{`47^0!&5Bx}8Vp6D%OZ-ptSZ(p`zp)enm_deye zJ4wa&K1~aT;&wVGm|aL)T~}LOOS~uG!-rq0s&|m9?Oa3&5uoIkgR?0G+WE*e>=wK%ZFyaY; z%M>U=pVal>9eo;ka?q!h%Bbsj7#RVF@-x0sA1a--wRit^vIeKJO?W|1DsgyPL~Ry8 zEuQQYOO8h^wlgnfMOwh_scy<7^HrO3NVuHp{vUhq0%zxR{r}G-8JQr?aXCaAj5-*X zFd?agjLgWz874YNbyP5jbPzI_VU#j4XUO#AXlUHpXroo7rH#6UMkN&qN*kA=(#mL+ z=Qu7w8*x3q_h;?>oH=K5LG}Or{{FAmZ(grC``P>1&)#dVz1G@muf6u(0OW4Kq`EoV z;TOs&Hw($h$h~H5ez==!gBI(A^mAsm6(p`rmHq5w4{}nsAMnv!C8P(RX@TeFNO1FI zPFbq(C|gMpnUe*r07`5Kpxm}a0Db+8bpVv$C#xLevIVR$eCvpTUQS%nhso;&G}qz`y)T!Zg1I=tWxQ&r%-J zWj{PgeO6(v#owYzT@Q(WLe1>2cgbxbZ1uq&szBsWH+DzJ!r}p==_|)A-C&>??STYYW2`yFs*c zPc!nI(=V%a9qN1`$BT59*ZhHTEVIqwMX_K%C3GUs90RO?w29SK08LpQn&VtMKH_B7 z`cx(Uzq#1+OVk~BufOS5_!~t$sFxSn9m!;PkPL~m=LcQQaxgR{Tbnq7ThrBb=%F7A zVjy3w&>&C77xOIOS6DbV-lMQ!RI;Hw^nj=SAikONFj;vG1vKza@hwM|a_O zfh+u5*-bS33iHQOvZ1?yhwRAgF?RlBU1}`!rj&E-1CU=uY*IJ8!*iTx4b;<*m+*1E z^-5z)J4M@!TAwd}z=l$Q-cD^n z*pHk}#{1pdCA_tEWd=b+p?-wFo-jlM@xS^cRdzV_$l_ot0O_(3sy0<++dxOZ*SabD z9w-K(vu7lVe?S!ffGE0a^tc*Epc97kbIi{C9I+)o6H9AxY|oyMDqAzo75XRF##Kba z{qg+;6~GR`amhAtY)XO+X~J~DElMiCud5N|bJ-p)Qx7i^4QOv!lUIv-75}mx-ICVL zPM>ty$depKnX`=?1QcL&Q|Fy9?k^6b9M$krh|lvW)kgf*bB#9mXeik{KF{VY*9jC< zbbfC|k2m#JH2)B*=tj3J|HAX@R9>yZ zxBF&(Pe<>5oSCn8fNi#JIoeM?+Bzw6&k{34?2UxxR9`mtosWQfNj-pJoT(cZ0BSxM z(MxZk=%fyJ{y-$D%cykrKxVc*xMM5u0ppYnxoFgBtFp+Il!3N~5eYTQ4wg-Hvjy9ySf!+ON_(`V+-p8%LcFdQF8OQ8~F?+X8LzUVhlz#<-gl{e@<^~e%JvJ`2nxUy=!ao_)9R> zv~Fu3f^Ea;b-c>r5N1AUqk@@PCr|JDhKcO;(8jm;pzv&p?~$|MY>I?|vnpsOIh-OD z+1oTMJGrBie6LdsNdRxU2)A^eIb|zxAct=rE}4M9>2t#By!d5&CX3T~vN%nXT6fI) zM1}WC%q(K{ml6k2)%5tl)+uOVC7i&VKqoBM$5K;sI!4)a!ZtUNSwljo6d$!vNM6OY zNlpuU3f?tRctT7ek7axWN0JF=S&62v@L1Qqih9~rY+*g;=j(Y7s1Q$Q71Z9 z#@BPYtEaUI-QVhXk_^IE0}5d-cC?ZGRPX;4=~^aiqEboY!UL2cOFmVguO)N=153xq zf%6Cksx2o*Cv{IN&vcpA3Bq%+OX)o{I^A%qs{_}Ieyo8jgnl%-#TL#s9aGl8`NZo} zw^=ASo+s|$NZQe%s*`cU&DIpDP(-SgL1Qg^>mIPk=@uv*FY^e3>MwVrV}rzQqb#B_ zJK$z*WYZdN2tM5EOVm3(e>?AD@<^s8LL?LzAgHMr180TKt0v*B)LiTWI?yBHd!T1S zi0GgqdDWrP%9j>_$Z@*z(WCLwWyAX0eakVF_-50R-Zp=Dx0I%f^MGs)Rp|!MK*dMP zS|g$%hgKc`Duh9?XDZn!_9OCxsHsXovnk{!?op#~u~SLgjQZ|3>Xy9Tzb?1bu%#+i zQ&#?-;dI$6TJK;wZB=kV>H=Ov2u5?pqspI1J40|H?XDUPK5Sw}s2bQ6n5`EEff!Xyx%R#P9&7!sc5^!Cl4)?BnLac*qheE&7r_f2=Ze-^>}KZa@;*rb_7f{U+bQ-<_TgQYGsvF9x9{*G3k5C%jvw49B=&8bq4g48 zX_#Jqq;0x4r7ObF?+!?Y@dl2IWEQ0XN=l}P}nY6S0ZAqmhLuYqYt zmA0`UGagH%%_a#}m8B@s(7+tFmrDFWNsWl_wSJiZL*$^Fro%WVE%wqD1O_gn> zRAaq4#t&tKlpxjD5&G0lD0&BN|yppXVIv8Y8=~yZDTLHSms+=lu(PzW7(-p z*pX?GEbdHdrZ#%ET6qV!NL4?hpc{(|*CJP6O9gsb&(IHboxPdBMpX({wLl9eIZLW_ z?iG|`BR)mtVjaXNt&Y-iv2zun;@^JFMt{Jv^_4JQI0EU*eO54v&n+fcNa^%AD6rVqZP3~9#zcB6EY=p(hr z1Qgbd`2fIRCEJ{2ZV#c8x#1z%?velve=B$gw-yWkyv((+=Ui&bBvlp+)(AdmJp|QA z4O$))|2Gv4r`k9n3a~3r`?y!jW`y)B7=<=0{j9D3{$FMuPU4+qYV?`rlPO$pSxlA8H9~F9c=aMyKg9&-aX&lC^th_h zwj)jU3v;mIWU=BDvEsbAlyu!T`XdWx$FHz(eEi~#h}F!Gpd$vf;U%rpnMeGpSV^xS zZkpMZMs0(?dWjg#l=NLx_%{}7xBt#+wY(Z(@ig60} zcSpoJ?j58x2x(0lrd_jct9RS&V26)y2L&eoQtr~@L~5>SBjT)`Wy})EQp5U2!t8-6 zs45pbpHkFqjMjPM2i+zxHaOtPFut#9mjv962S=KVsm{&N3pYz#e49;5($!@gGcB4K z66`-c%D2DIJm}`T#ucl`X5~H0g9fS{4>vNkwBP%*O-T!98%{oH2S$?=TlU5wV#@)6 zN=6>3Q`=}@lhy;vYagV;*dnjr;Mq~ODu{`9U$whg?QWOgn8jN$y5=fzhdn#3@~{aw4sH|#xIr>xfC$^!?`*-}Z!(_F8vmWI+^Pp@=Pemz~L`odmHq!wAd z$hP?;OI^N6A)01X5$&3>dAK4=eS|Jc#-H&KD9Fi03FP{^&JPl8b!uO|G)cSXtIrmY z$|+Etmi)nrE%{pr(OAfa3_`X`X0W`0-Mj1#?s`;4-4vYYp3CGxB5AhWAgpWc#b@C~ z!wD8{w1bE2RRn!^pIFs^HA3&We0aQtbK{dOoEM*}FoeB@NImtf29AzJ@phtEXpbVu z#kTrIu~gWUxJiYFcrCe?E?fC+-AlR&0-*fMY6*jkN($b38H)H#f14yT$*qvK~Wlu(MA{yd?Y-ed8(@xbD<iJ>!*}7{z=C)P{xwlX;Z3N%S2pOW$R43SGa)e`4p;y>@;jWnCU_B#J#M42mk@W2 z2oJ;lY&ZA*)iB19UI3;}z#o+c3y1TGp}i=vG?Khf{fCUcg{V~=d~iyC>py216G~Yj z#4;_NqOy+tX>Ii`;~oEUt8L*W&NHn_#Efl*(c(Ji^Go^K_MT+zt1SB7N>;tD)>Gr0@z5vxQeDSQLF}?&qgoFrc5#dnP)OeLrsK^h%9gzU z9z@?o@yeSf+9qorKL@~+MxSb4@EJPERP{gqOatI+9Im#Yzs3m_lbOp<>5phTReUDj zpfoRJlu8ZzCP}>q)V+gYGd!{?(ft}RcWRd>Ju&Sqw8ScFr!uvJDb2{CO@&Omt@sU^ zVEpN0m+Ql>5>F+W=S=gg?rGI|Z%>81THpO|TURPoHLz;kIGb@;)on0FX|;BXVen2>==ozDQK2UAq+1KoZCKqY_Dczu z$&bdnUKpP*#M(($GXc%)e(%-3x17|{Hk=o#`_mfy7kKAWBgvcWQ#W6cg`Iu8_Nk^f zweM-fcAq{%YA*KLPxYy#Mv~9*sk(p@qt*no-Vvium1u2^>vA<*i%#Jb=_>K@3NS5; zJpV_?5PwXCS?5R)>(j_7d!4yNT3uX_g0&|6hepNaYL>mAT=uAx(xpzIx zc%s3sUFS?T1N$`2cr34l0yro)a>XF^fTp@v|AdLptz-_{q#DCEE#_Hvuns~K8iZ=M z4W4jllPPSu*a`}f0wF$o0851CKdD9bnFPCZw_NO(WU?GLk;5zrn)g>|!e7am?M#uD z`_V?KDcH1I0;7bk!*j7Me@+RVYh}rJ(9+3do<)r}@`A?FDX*H|TD#D`@BV$T>jQ`y zOQW0)Jh&oVJEFN53E?Mjvr%jv$3+yB_)0Fe1toSrJccdL@4!lR#Dmry z8s&$~8gO9Povb+4r{fQ=r2x5wT4#^QcXnOp(zSInKhoPsvLA!P`0kfFURpb;`^~zi z->e@Er96IkdhfA`&W{J#=`e}NA%Rul2;He-YLSL@Bu=6`6I^&72Y|Sg($-;1$mSR|vu=z3#hQDQ%{8PgnG~<|Qk=;{1@9x3^W3}&Ek`|H;CauivvYS;$IRt9}FHoLj+zavf!y6nv4>~Bsr=YMg>XCVlCxyM%tqpS{ zJ?6UjDvR2SJw%;yj4x!(fngz|!$LYKWccFDnWBnRYyuhU>D|TjCUw~I=-H}<4yiy5 zsyh=kh);RR-M|qq6e_f?&=|UkB*Io>DlYJ#1Sz4@Qf3oZ+jCZOSQ{=an-o;FYC2XU zR#yayRhf(Z*eFsq@XuGDQQr@K2)UlZrB=rm_DrL5>E{b(a6ku`Rq5P+5K~| z(bpFnHii>7`EjDEP7kg*BX929S0DACh11fk`uLIl43$P1!-NIXI9donnwCn^WnWFI zuafZ&(pdSMLxA?+Fq1&(YzVe_NsK=AvrUtX(X&S|7^o53`Oz&l=&|v1=#~s|m0SqJ z(Dq#2pye8t(Q>gK*3oa+{@3;WSbd#X)tyNd3J#hPTD&!P=>b|JrBPM&LJ9Qi%u=<^Ft|nUK zq(3F9tv{OysY7E*x@_8|>QDNX&Xii}Iui$O`Z5tDR&8Elw4RyAJLD&t@>@LBb7_2i z_lP*>-d+P#6(o76mJv6o<||t_6A$3vvLRZtCD+EcH78O>mPewsXr>M2@_IuN(#gGB z{9}7)pP^VsbhVjhT}>!13mL0mWzGQ0_A7Fmo4Hg7l;>RM2mRXiL9l-Zg3ZNt0$JHn zg?+QD08Lj<xpY*I*abBZZ7J+ zjXMb~=uofaorH{wxVWC7l9QuS3(G|jsRdC2&e=6u8<#&YsQ65$9Rb0KKu3R~fjrWFMp!!>A@Y}DgvIAEr8IjyVcKP-F9pCQEt0^gxhWx{CZ_>_~PMf z5*QLO-a!O?Z@hJap&^l;I3&@zq()n3*yb=DQ$aDll}&gWfM1l zX%@?<+Rg>O&J3TaW{@tVsVBc5A`_Gr*&oW`D^Aig%$D7+^95`vXd9C2)75v7Fo~O) zG{OxwSP`T+ARhDDUu`|E(Io4AVqB-+=3>91R{^rIv~9F>m?p`qX4&{{DB{`xbb$KQ zO~%u5wvnKIM;1J3O|~$QZLgzY;Ik##c`#DuPG00$!{ewJC|079~xzLFxejI(!}~dAioxT6&iuodSE+&%^;Patdi_E z8IrFauJyjbXIWsqh6D%>I66wt0F%)^zHIopxVo{?u|BpA!Ot~<&)g^tRo@A1w}6{q z*dH*ie_YzeE+{_{L=bP6px3VxR?k@7XbJ)6@68d6aOQgUHK`YZQ?QO?Cvwg@-!o{a(ouz#GT5zC>F!~ro7hLIf+O~k#K$`xK;EGW z4LApqmRDb$zlEK*@6JgKFHtBvTxScIxOp0IV8cU5n8bY63cG>AWPdlopN@5%=yoER z*;{EvQfCyx3C!bkStS*Zff+$8?rzdkrJm?kR;gvPu7M%wQ6)BH&o>v~lnsTEuHR5_ zE_T%w#j@tR#7)+muO3Jb-t(l5$eM;evZe)DbL_27)-)kg(-%nAylib;Lcx+X~BKs<%nt&m9HXv)nHhEd|P~_g0CYUF2DnB(-c{n9RDwD!cDAV zNOB09_?dBKAa7wH1E>cX;4=w^8+-Y7T77nk$nQwa6FE=M&LbFHV*wqcVQpYAs6pI9 zKN$#-u7SuU8MAR&qPL1VYH~c03Hqq7{iw!NAFK2tVxqdGdpW9G&-jMF2`W$73&TQ! ztF`fM*C$EH6Wrbgyc^&K{m@a{dIq>BkO;=)8sMgGXn=#o=%Nh_aGvIh#C6{9c-yM8WHfZ=$(yeA^Jst#^FOaqjX4$G4xP zL~R=x-)1TU;wT*7&VE|s+f8orvXSv^kuBp2yT#+%4gY)N+dbbE6}s_F1Db|X8_-VG z1EPE?p~kaQESwuZ*}`O82c3s(8jffg3DR{&w6+mqk9C!)jnbO&S?}obC+xbPX>>W5 z_85EZz=I!M9=6fN*!vY8VeeUc+F*E+1^K~n&w9t+;b3@upTTe)fc;?D+Goi6Qn%-G zL5#ZFJ06Z(&(JiR+y?O(JV+qixw{Qb`SI@DhZye$?y>JW!1&7Z2#ld%d(I54iL;Z4*se3*6eWpxyGT( zlID=oUu!w0e4%8O1H!wJOWcZdqI;fA^))g|Ynv8%*3J17sVPi7xTZ#W*IM8U;wv^U zvDr#S{$Gr`x!Cn4Dy3X^qu_G+Y>SP*$q&dc$h$OkO{6+)%q2^OHRrE-o4(Be8opAt z3Y9-CvXkcjyy~73A2lg8BU+c55UuNcI9i{YUr9M;^ndPhb;@n_MIx=^Zc#hcGDVm; zCB4IqEjnz~>NX#{;@?_Kt0z?Hr$Rqb{qUXJ6skpve#^Hvaj_66P$?G>l(rr#)v#IW zHe)B(7Tu1#Gf*Z23WB@2wDpWc?xDo!DVTJ-#%h={)Y+T^LucV!3^?YpSp3b2_*7Sfx)3{gjkR7QpqD6dbQy=?G*i{+!*>yz1#aa987XKD{#|D&( z-EbLJlY{{WJ*-*?xMgiwBo97O{Xg z<6%rjJtK#y))j;l&A^Y@XGV*77UCp_`7majSEBQ`2l$w?{X6vC_>8seo{3I z5b!bSk0uDEh8go2OhODYY@v>biavUL^ODS?f&l?zGZ?7SW<+$cIXf{kvYC&%oQgFw zQu{PBT5aJx^O2IdEvh(7D-zetNJOBSRgcPtFqu8$O41AMB}q{y6Z-_DqmN`~701h- zbJdd)vXE>r1P5LYb}nt(QIj0oX2r=c61ctdf!P#gMyhX$+{%@aH4U5`wEk3?NWl>L z1P;7#6k$#Gg*61@yD#KYyrZ#IoLhyp1M7v(PcFV=YUWb)zF8$Gltn3VN%rrBvx^y> zq9z?dUD~#P9>zWT!WdY#Rl$(2c+t$XC0O}@n!76KPhu_>qZz%E2cANIU6}y;P~e%l z*ejP7Q{aoljRJowB&G*n{PiLVTs9yc8Xq@8g_$$^QsI}aG|cvd!KV8-DpW-MX@f)> zrKGoCe-0Q%ga}GI9--`RdDxC`O)86*T(i>QP~Zob1n_JJe4{5Rtf%! zsVf}jlO4qrb`f!-u(|pqJ$UHRMHJ>`97hZxvdLjGu9A@AHRz_xQfD~o8YQ~|4W?f; zB*R*;s?3J)E3C@)2eD6$=T`#pD|5mP^K14{bd?H?>2~h>RX}R;?noZ8yJ8uMBxNPX z1c|KGf=y3XIZ7!!J*KQ}XgyU%`4Fasqae$M>y?b{2dKE;npKC+1HgeIF zO408^-!4`Xlg<~8Hwi_a_iq{%34Ekkk+nY3u1GmGiy>wyk+{Z-S-$J3em==+LsY~q zdI&}=M~>goXR7$z#dKD>x?T%Q=~(8D{J3~=Ud-6~T4`u*cxVrak?Bk!??J}X{ik&g zh!aeQPH>THbta2;jSL->QV-z^8Daoq-IP{+PQdbzji<)Hd<)C`bLrW6~}kkDj;LdVQYv2rZG`n{ki1Hb0Y_ zrPyEOZT{NYgFUJHUo{=MvPkk1A~mzX14Lau9@^RrC!>>8(^L(J&HhLx9HZ(Hj~#$2 zF=+^Z2!#N-X{+ZwHRRm@Dm@su6||^&+zJc~h{#NWNJ(=%M`|(~g1F{6cXKcz2t{l? zq$f<7#%de9ur$=9kK=tkcuyzM_1FG0b^-1bWYCCB^ z+e>rGA-x8-iCf5ryN%G&A79g3iH@hb+pJoAge+VXUq~p4y;va7P^-9Q*j zzeghnGq#;XscH$l!UgT&h+z_G)rAsGT21GiHnCH&<~@gk@|t(iX7Ek;(8hvKso-ME zw<`G6_W6ljDDUn3h?%c1rj9rG4fbLJ7TALm2#SSBE-9B+3&0Wfj$VjrKS|z@5!&v|+}42E*q80#o8p z8ttCHM-sj*5~c&xzv7%x6fCA6LR@`V>EogeDHx6@<~olXNVVMZ;c=t)kZQSwc;u+n zd@p&S8g1Dk4-E6I3)Hh{y0Y?D@lk2pwrbdZJSu-Vd#g_SxSV}q?3Y|^nVFgX+8*SW z1|rKT+VZvpJHe^7xbiv0ms2Zss}2&QDNjzh*!TI?*)rK0|6dwO^BRe$#AzfNptT?< z-M6PuJvq1CNK%b!2)1CkDmyF}I|87LPB#wwbN213VBmInGS%584Sfi6S}ykS`Nf3! zZ{kLniw#+WuRiQ^66SzY`VeMzI~0Sau#X=8u-s$Son!D{(N8ujK%z%+Cl}Zjad@1D z6;1$p{aGjt@#(cVO(jbNGunoGLq} z(nd@Hn>$a+TQ5?le25PAy?WlK#yrB~MeUr-n2JAwfjF~WXdu4BkXqJ5LUc?RphRghhT|27H7%s6C0RpWMIT8ioJdl-jgupHR}0dEODwQuB?i{u z`cY93hwTtUUK5UsdzjV3D^VbhEsa`)KniqFoTeEXUv)$U8k z)X&-o_rBjIysiprw-HG>%i2GE+Az`zyK^J!&j)TBqTjDS4<{j9e@;`L(69C9YjZ{B z`RM>#YdFfq_CXNl&GWQYEnC-Qy3TUkr>;L=+*-_j=Mgvd^Xt#s9$LhHpT7P);d^=e z{H_y$s zJNrBXQv+hXU!+qfG|E~pJ86rRg?kjVLCq*vsenR9R?G*i#@B*b^SBDWba2o^bTB8@DH%yS<3(|Jf7%ueT?B z_pbkEPe3Yd*q$IWi0lb9gu&38KZ8BtduK=vIeWrGXNpyeR`TXh(E9BO_nhw8|5NM< z`%r=L|DeLLMWam7dhsJv)MxH?OfFVSC4~$>T9u07XAaQHEK`WGXUAwm|G>KChnCB( z@VovJ=;`Vczs`Xrwxz7*Zj6ZR;(vp~3*J&KNT8bFl9({1BQEZlj-`HlypF+V8^U@* zyvCSWNF+3xtBP!joZ6tH&iTPB&Dqr$k7iMuhKJb-_aNC17qay#KF7z=4JcMVjns}p z@8i!4cv(U$#1dj5mJlm^UVOgtVF?j2iF!LMOxn_p_Bi#BFW!_yTw zvW&Qv_t#p;q93JbKe_BJI$%O0wrqH^(_qr8AP}%&3!4=GG>l=oo2+~QYo{#$tUG-n zX{RyBaQZyegOmAWW4XY5mh0(_%5#TzvTt*54d*xU&QaL~zZ-xSjOU!g?Vf59Elni4 z2gI{mvURw!S==!Ozx!9d#q}U}mr2P}3xgAWLIv#OFKy%O77VNU)QmWxIZ&infxkZA zC9pSJ4aq|=<3p@N^%9>w$fsr&)$_19q!WR3Y5|so5N4=4o~l6`dK)!8Y?AG%S;W>N zvTFy09qLC=W<&&$)c}JItS};i$eI*~c;wEYew}OKTyHF%=ZwX4frv}_7V|#gjl(s; z1HbCKh$R`27dFQ~1kkkrJzlgfn$KfSj0txNaN61=#%$Kh7Bd&>sohjb&!&7kRFq&~ zhCD&sz$I?YB7T#=CvMFnZnkdX)=c68Kjf9nqKR;C+X@^mWLV~gL(b0$JVwX&_ z^v}|h11#&RV8j3?DV=!;KY|LXEfkPL1cn4;H(#KKFFc?~Bl3Fq zMy^!ey}{|>`74z(@-Y=v_NZBjC`^XoS`n>M2L7dR=9ellO#gkVRPm3z;Z=FX76o~j z{QQnQViMcte#dR7;-@PgeddOOq+6Kc@7)5jV3eWG%0?(>2Ce@&bAzfr-@iR_k~BAd}<*^H1T zG8_%5xw|yGb6w}Ms%*JA$nfzbzX4+5DQ@~OgpI7!(Lu4n-W;a|oi%xzFK5Pjn{P{j z&G*NASd)CC^+efsaC4A-3MOOOl&TZ3Q;kFi0?K?H8r<6H55*VH zS%(dtKVp4+u@TRP$fUmWQ@2aY&rhoci!U}hKYik)PoJOON*LBsLjr$wzjY~1yMo6Jkt`sr zAfUc+h@P@r4-=IYZv)Hj+u2^xuWf5?Nr6>csyOc+V&*W4EDnPsU!^*;>)dP)1zVyz zmzK)`p^*3bk;k<~zrE`N*BJ!9Wo~R4nTstwp}1v>h+E4zELts_!csxOir#PfXLmH( z4gPVSn4z_3H|yC){ibvli{Wfa9rWpIe>c`SZp*Lzg=#~2aM{gXZO9(=IX9WUOi!+N zlWB^EIq&hYC3m&G{eA2vIEjYVcl+T+Gu=e&n7;Nre*X z1eGiaHAvahgFo4~2)mz-vojNYaAr4;XmqH7(t<0>)hRBb0We{Lkd;QN^XsL10m7%P zmktz|u!*ggesB{KYPG0=VY||r**i>257)3=NktmAr54#N!NM=TUizIW>NS=Qu}X`V z`kiabr4>9H8DdR4u*WZ#F0s659Ub(gMr#lBq?JpX>4Jj44k@}$`w?Ht>$ZAvcohi?{>=0n7dG|k;P zJ@}MiMWhL_zCB@Mn?t|fW}8DF&7PE)xm*imxmc6&;<8lP@|SeQgmW1~04^ZvZs~Ya za+IcWbW&E2=o4<&OWPQ2;zV^pO|ng#rn}UziIa0iWxjCxPY;*xGeVW+L43UruUQCP zfU$RLBQrM9k3TU9<*WDN4!%g}Gi_onFoSfut2+wiz`|nziRFbR3I)uv<~c%%JWSJN zi#~CT$O8Y!IX!Ac?8<3&mB(Y}x%(i>b(Kd$c=g0bl*RgDxxdN-$E=YzlJS02Z7{V) zHL3BLmzi?(O7A}Q6S1>x5c`Pn?hu4VZI1(WmESmvbcoXfETkv)HwjLaclm$TBLIuBJ0z`o*dUwGW-p8 zZ)GpelfdyvOwPAYl`UQ6NZHEj) zF#aj=8h&wE8xxVE1OmInWEeeUj`(AQhSUyEd_&##YVK*Z;c0}Pa+S8tDCkAQ zNLx!THi*21gG(uK>&m|ynaFPTqdkgxQPr07GPpTa;!eJFJG;xCJ$oe%0mCAPwDc~P zC}W~~f^0-~tVzh#-!);xYPV)l6>c`3E*n2BN^acJA?&3iv;lgN*}Jr*jjkOgazx8~ zgig@Zas^>7cIYv*UDVbJo3xmBj*}LnBrPgJ zY4Jx2L|Tk0X|0xc6jIM6qn8$s@HYFELP@oSQlc(J_{_yVnrsV-$dsDQ_pMzx9ntpMlFu&pob z1l|-%ug4#kZltM2=fSwwn%9*n*UTCRuwNfz8mC52M4IE*B;+}LnI?lZbj#q0_i#~E2?}>Q0VRv0hS{g?-d>KEGb*{OSc=J0?|y_&&xaR ze>u9C@*XA*<+Z~2nkRQBOy*QXwk%mTuH4`Kg7?)pDIU`2D+#D#Tos*L3fJ&BYWXwBoE0R_g=Jn z_yfd>(}>OzHyC1U_i%&6a;02koAfkFPuR{)t~%Sf5!wewsWN;taH9tP9@4>6?AsK(gUXk)o_b@m9vU~7e zcz!>8xXJgIl9HX;h!@!T7WJfiX0exX&dL95N`MVhD25&7C!}``O5Fzimo`) zk;b!cg?zXn`gr~AkUp9mef)!jkUqvzOaXmNTv@QYd=ALHuh6IH1$f`#k?mZck3KS8 z)>Cw=q`YAXxbrVuZJj^af_&%iuvKyAfBSQG{-n_13>dEbn(O?(yb*RjqPW;!a=}8O zE;VPd0_ojB{XCA><3XqQFrLHR%-_0-j=ob6Ejp9?!wUv=i@jcld;GU!HL5G8^*FJ>!zVCIaP7l7yf;P6qiP?qN7U?_ z18KL3(Pf9}p@3m#E>+Ru8T7LM8~0ebE#*R0@Z^I!lf^hidoVO#G zNyEtB<&91g)J?uNVstL8$qyGr{%0kS7UmSLNlm0rU`E1>q6|s|vP0EL0Qw2^C@sPa zQ4QfuXEn@0Csqk4&G080coll$>M>nEvkB#vWV9)EQtDf5{2vf^XYk20U{Z=RYrFTx z7vQi%(fZet(@%a6A#Ri3HKZ~5t?#~NwRIV7uj^cjwrB>~SAzTQ-x7pPjdPp;tFPl_ zzo^jMDO#@VnnbD8y42UdPn$@q{aeTW`d1N!Y%)=l(0!Xua=VIHEu0@fZ{j2g|=&eIa zvRe^_049~R(dVxQjnyEwJe+^^EDj9-lx*B0fCT>d5A-gg%HB0pUc z>HH%P368bYhrF<7VNB1`c@_|I-W~-NT8_$yTL+y=K3y=OY;GFwiee_O;mcN7be7M! z3a-b^Y-YLrj?r#A*~8q2_?Rs1nzCx5+N_5r9vbyfp}l}?1Ds61R8Fy*1rp3+S<`p> zQkHSQ2gf`y=Z$9Y@5S=nc3`a?))!}7$iTjnA3yb*w!rX_l+j1 zb@QG3EWZG$POS+3@xb=7Sv&$p!Zk7IVZv}3 zD6XZ(>?rHOfAN_4H}HAjN)61#+DP$!?M69WFtEJZC#emXmf+UM zZia*RH#?KyI1V_n@X}r`2bBg1C2g6D4GEKS!Ot#MTUP~d^oX-_)Z%%%$lvgJU~uD3 zs_ci0oB{edad79dibQAi43bJB$*q_n&{W;WYWoAviBa^D#F7k0SnWDSsj2E=1lUSB zFtKUzJCT;fL|PshKYY!!$azoI@7yE9@6dsmnID=KXTrtC)ZT70Pj8Oc0H9{gIsvAH?*Z>j^^{mCrfS>qdXh5^|l6&s~iz;=;pEl*% zLQ<1e*TV1Icn9V3FfTrb2f71eJ--<1`NbN`uWX2ncKq17)8R;BS-QM(Qpp2Sn-P}> zK`WpHO03LaLL2#LEc|k~fi&{@e}mZc;5#g^y`g6R>4)Ww zZPp;$dtq6@ak{?JOh60hs;>LQR{~g*c|EZ}RsCb7rUxfDKD$0$b{c_9PmQ+yJ{Nlw z+37jrcrunmy57WKY~21MiB$?g`OuFmxUBIAAm*8UeIuVAnm_DxvUG~^^m#6J*1^T% zc^Yvx)KuT6b$ti`a2S8}yiXi^JaVH5VWXP?5H4C_DGW!WxFfYI89Te`t-;h zm5?g?u~x@OZ@nlZ>*iw|v$qA`qsoM-NDUy`}Fj{uywZhuG_)Ze%oPefdVj}ot=tx33 z^isVxB71ls3F)#6l%V@;9mLYoR6{P-evo?G9nzI=&O|{Zy-twKGHP;*s&exX-1#GL zS>`+CCp2KUR?*AE`4bvHO8Ym5catd}@*Tl3VJQq)y;Agrmpfs9r)Nq{iw)H8X6# zu&uP9^H>r&8BIvgWf{5-_G9?2O1gi)F7rkpk^TfVpw)7uBTz zcg2rYEp{)!E8Gk4Y~7$`(o&j8HPr0`K}cdJG;2DI>#!1CD_gfTam#z|!^K}^l(IOm zgEcd_Vu9>zWsrln*C&#OOpV8lA%YZv9+U1QsRD`@+JhN8ZlA|UNbr#^b-bn!j_7e5 zFgDu&(L;|b^nMR?I}6z{L6|*P968Gv4*yECY@58i?SS59(5_(KC7T-vJ?abyP2;$P zjtWuS1PE~}oVW=R;;K|YN}xzK2*?Dh^_srex0N0sT=|t3LBp(PQU!v?mfL)O?=i!) zTnqjDQi!}8Bnb<~SMh$8x{y#qFXZ^ct7yo&g9?F1D#K(T5yc zkCf*91q6!8`4T)g3V-X8$dP$GUyBhGiIrFv&yGZ19U*w! zo})aTkN6^ZHu|W&yVM$<$qW)n>+*s0$ix3kU7>ur=aOyL>EJeQB|y*F3z+IhXY8jJ#Z7MgLduY~T{UD*)|hZm^)?hAN&XCAbFt@#8@qI`ALL8( zAn)RO>4FV`ypVDhV^zW0E8NXRN|6{dMUk6}l1u4BWmN(7-5+pH z4<%-XStnJW%rp1Y@e7)($RRYhrKoaUG@qqpL-VYyRb<(zN?0G72doF?FN$XAoF8gD zENFFk&~HPn{!ZUkH&$Ix!db&TG_ijoEv>{WZQg}C*jJ4)d)5wQ&3sRFrK)Rr&c!z4 zS9Hk7LeMkoN6-^_1br!H2wJ)!1pUJ*>*b!RUhZks*#8Bji?|10Cvnf?unjY`XS-<` zjWz9P=9@^B-~3xPA>%U4Oi%)CYWgm@==7>hh@xAKB198CR>{`sao45>C9JR0Bi1H% zeS)Lj=1fvQe39m`-?1Sx-Kg~7M>A<_Pn4VeJz#fPkBlT@|62L^y%xfsC->U{-=_yPhW7t z=dVgwU!NXi4GZa%Ni6W?k)8b67wuc4_YESh3J+}<_|RtiJGp;n2TwX0H{oFs*=(!zQ8Efe2ko&$nehXKW` z!+_kwPksKUX2G66%cc>8_5O2#s8Y*{7WHv zDqAj+@d29d5}B^ZHa>C@T40=KW;)V*yO%5pu*uGizfNQtJ$aNiJ5M$>cbaCSp^7JH zM&)AX?J0$Q*BJyF)1|29&mNnQd?V7emb=z7r6%hN-XAaQ_XW-lvLlBl>%EMZ+Ka=omfYg6(wJv!c*ispJ#(Rwv`6=sD3 zR)ZocQLNFJd6uz=gaJ?s@gXc-e0vYqNmZK3%s1b6puVhj0on>ALgs-r z;+^VSlj=f07_=zN;X;1>IVHPC8VP3$DT@-a@iM) zx!Bv4`Yc2roZgEob+@$_;05k1;=-LUE2c364ou^$I_uh_#HnV+ZphqDOY?Y4H$Y7u zjp>AgxE#oe`dbi7lFInk!`C6?u6@C!+n1X*)gu_mD&iIg2uogZ`1S6xwC56$u0Rb4 zRf~cgX>wS3<(X{+Am29_^~f1|^?c0;U5Z*QF(zBVYWiI9W*;xnxJ&-H$9$G7mRuNxl1unJ|`OoA3-60{Jg6aww5l&?bz zoGCCg4LVby2@9dA$1-7QQ^Y6<>0?$uBPSwe56oK%MJa`5L{z_tyGiwn^6NTp_(~?2 zoJNxQtoq`&x$C+wU*V(WltWZZNXDvZLg83Q$2EfTXzCK=D}?H*UOV7n@X+lR}n7 zHq7K=^GRLcOc~?ZuT+k}FK0As#T9keB=3|{BLhR79xMGLeIzj!YUO0dn2oT=8il-<&o1&BJC%41#Gw(IpFA4f?VuienWtq$>@2I$k=%1MIv@THa5P**m&<-l3OER zepW9$(akt>gO(552S?L142PYamp`9zB&#rOIP)qtxX&nK_Sw0QjLG*~=32Y5d?K43 zCRXWkRytR`0v$FJiV<2|?-;)GO`N^I&d7H{l+}tVoac^--0S#DK)nW~yAKW=bu!N%HRC3%|ir6pbSG*fsK3Pj!NED@1DW#1R zMZ~E=Gm*^q?StxzQ@gfRISh_Kay$GzMHjrobyut$rYz56C*IMKUjuW;UnxOc z2Q}QwxC1k=H_dcWeMEafuiW=ndgTw+E7gBKzu?7uy_oj8%*J%H(Y?*(5|rewE}zq2 zoit09rcl%hw>`92y{?af>vsT`c?JNd&|ohQtnuCapYwn#(b&Mo{ac69(0AS|8lZ~0 zWDkfy+>Bu8AjBMV9f1wwd`*PH!W_jRLSb4&xKJVGsi7*bhS1~tD}cfD zYHJ1EZgpYh*qPb|jzl-4F}C=>?O@DB=R#Nt8a+zj8P)q5d9PVB+7eSxPP!Udk9<0`L_0GZ&jMwkT57#7WsX=d2gzGn8yFKgBQy%qJ_MR{=t#1!E21Vmtm9UA&PE-zKbn zywflvNQ0vmZmD5Kk{Rv6cpX_OjZT7kv4!|LSU4}S_R9Bgct&VxwX52^nL_NWm4hOw>sn)EIM*qwwXlO%d@wR4_b9zm%t5*W5RKnUx z=wt6;ymZqn25N7&s=j#!eFg$0c1W%Sb@};BaN{%3_!NeJ&UWV(9kO^h6I9B=ez`kQwC!}u z%q{qL!b;{-A6&SfMvcL*zQUf!ZhY%%%EwTpo1nYvXd1Kwq6to5^cf#-CN#l~^F`Sf zIk|!|FK1YqMLIYs$<)aq*HfdYe*4$}TI)!!mmvR2*7fL)HKH@j^;H)3Djp#&|3`F3 z#)Hgv&ERBE8MB+IveG zrh-dOAA;gJUXII%R*-MfR~1O0E>xFk9G?SVO03a%PrSp&t9-o0$0acJUQ8mTug1c; z@dgX$#hWbOJZCMYk4lsuAun^A%J1>@%~w9n$pON=9W9*aXDBy$$3$ip_B|GR3mFA0 zyvd!{%l9?NThhR;K0%Ret zL0MqcfKb=w5`btYJ;ju2T2O-OqIsDqyUgJiP+r~WRc*WFwHAG1S-TQ+#=Tm18^V_* znS+`Ac_rmuzVb@S-8{`dP-PlYCK)V=BL3YxGY0UT5D*XifurY z-B}uRQLs;`BE=@dB%jrrteJ3_{0)++iNl?~%zlJHz6zP%a!;$WN_+CspIRxBxYm!8Oe`ImN*EO0v-1G%OPfxZC-gK zMP<+RnZy%84s7ZRL&7`b)kikf-d#CWTy_^_C$WO_KS<2H>&nwdR>A{?B`lzX;csNO z_Ej{g!{(935wL*04yi5~EE|o^as5(;Q(pxqvay`uDVk}5p^2LbXQ)*E{F@!zn=n3} z^Nh-E14_Z?E>U-Hcu=(F5IlLPS(Es(xWq?&n^HUM3q)#dx#+X{NMgCCvqw<|;NNNN zW2UCWVYZ@BTuK+EWcvFmDT4*@p3Onyeg$x4o^e$-6C&fPI;Jk-Q1unzZ|nM|x7%&s+7t}JQ&k~&e$ zAGDLEh#9}ma2eor%cZAg{_?H%o2t&hbhw(_L>PE35qe{EtSHiMWv zI<2`Kg6B+>qvXoA3E6s;goswg>{p4%13Nqr%6VYdg>|SkJzzALaR`~W;{0pg7$mF) zZN{_4@}qB^p*?wSf6UC+SC@hX4&7KjAkLQ{WaMG}w4VZEs_X8lwWXL~-)q@NK}u{6XuKSh4?IFWDL&WVG>)p3fe9BPvIBl;KldD8QH{K8{pSc~QSTm^BfnBZ{-^Gbq~omxAh4e@UN5Ff<3nJ32dUZgz~L@!dHC4q5pKiw}!1* z7IitkXlq=15^B$#45(_)8JiTfC)^un6dSy_C-oYG@8t+~;|y+S%<2Sz@FWLrL-d5; z1L5;J)xW>5KU-E*e=$Ben{Zw)Su}xq^=TwI(Kv17<*)R<9G8FT?x-61+BLl|cgw$& zdk`Q@`fKmYLHU>FAe|oBP*CjapvTpzV{Z8J=mLQLlz(}*dwESkoxjPyl=$Jx_gD7T zd9{DpdI>M0zwCW+QTSq-r-eT}=4m0Mr*FUS6GD30zN`;Dt$oMm2d0`Cff3qwdA$S8s~YiCmE-OZ8@Y zOv-FgJ=Pv4>#;_UUEk+d#L0yiYl15a<`ulLbA0nfgvT&$9q z0LA~|ux$X8kIvTcRZeY+T%bsWMUwHE)Twxhk9Yg{5Fgj&e|oQ(r1q&@Ph19^8!fym zeyiTA>RfDLxrb1vk~j!oL~lyS0B{rU#b#LQhVga4r{U`a3dsCE zTG0C0f8H3Cv>m=)3fWE+a^|3dVkT^~m`L(y<0|XP1U=b6Pqv3WnHg>XjchvnZ*CX< zVurNNwWY1wBirvkos)V+hre`*k*=H6$guOCz@{rs;rgnZ;vIk$a*`Kdl0KAD78ZS~ zD@7+Cqfbsno#}cRx~*L#Gf(Eqa&p5G4H9=v`OYz7u6M+|X82RgMsJCnrmwA__g26hJlSe*H{s> zL*w)-Pi}zBJ#9VH+l)p!yD6HPXInuhYlks@W$J?vgX-2oVm^c#9Wmd9Nh3tu081_C z)(~-CG|%a+(NVJ@uK;oHmbzjaGX0gcfD{?OuFy*jk$>Z%b`cqR$uU1=24DmOZPL8ehV^ZNSOroQ`}XlALfksf*GG%rj}pjsph3J%UrwTrf=mdsqE zzA5qM>{i+~M&C}>(H*nhiBciMqWnB&{5>vSP?vu)A)pD|PDTy3W(!1-N)gyMDfBl1Y*D;%0 z8@M4bksi<{C;*~$Yrm$9g_qBBvE9kdT}|LWO5Dy3$*($d98Ec|G3SZ68d`T#s}m|^ zXucGq%kFngnOph3YJO3S+!bX%a^}nY&}Y%3JiGiN*RDP*6y0N}wRREC_a&KUjmYpC z7j6t16CmsBwhJi82wo;U(feJl+qSgy4Ru?j>m6aiX(Q`)-PZv{9$N6*(73G>)WWDvnmWXjD+jpZn-AGwtevc>irWM zf62`5<~MV(0Y0;-v)wC{PmkogmwdI0M)EA@6Y0kK%N(Y<(j#|0)uZ?DPYk`0t}}U2 zy9j+6yE%_Wk2kLcWun45Rk~3s+>0-z7bCZN%ryjBjLdA4#&w_7EP~Fl>D`94!^&qJ z0yWx*wk|a;f6r6n%^yQacb67WTBPeL7WgtZ$p0&kv7F`i69DMIqy?C;Mn{r2X?V|L z>?xnQM2H}>VUEm-gSKwV>?mE-62<@6zL@K#2*So$kJpL{6eGLuac9eLa#Ui?2yHWN%=v7%!t8XB%3$`6=<6U^LoG4-;>G~6CSE_FVBJvGeO{ldrdr6&D;e(`& zfmLHE;vw}ow#eN8zwQC0^4Gy)IU@GEJSJ?d+F|-x&O`aP)kNvB?r2FA99QOAsMg+F6 z&;~a-oab)FoB3e}RYp1wpkSTyRio|kRgvU_rX^6(A+v^#s>@-K<((JNR&ta|UCEk{ z3*R;Md#sIIdXA=hAihPAj(({1f_mCVKj6#M^NFT3)J@Tm zT3y3+y|jDmro1P_OT>) z>pi zyI%@k9o$P)k)%_7iU?~e$P^_^8vSad>ja&>WcYPV(ftk`Hkri3(@?ZX+0GDzl-F*A zl-FQC4$dm7_#e_@iYZ#XC^DEd`jbf4hvp1R66dq4&Ma{eVa0zmCiRNdTPRHQX?B%$ z#p+c?3yVz4w6Un&=ih*2J;UBaLy6G(vJHBoR*< zk8jpX8m$-f>7637_`WJDAd7QW(?yTtSMd2O{YF8hk*+}$Jp2vg31PI#1|jv{C{whs zLs3&*dIG~I8epQk7REd+uL1&5OR#KD?TC9>N^5go%VWv9zWWu70MINm&FV%9w{O3t2Yq{FXU^r*$B0wwjJTiD)?GzaYi<~Ob1VSu?h~d zU*<>6-5PeuLsrTBhf+d8#2QFR>o)nf6_RV5Bl>z?e&LRz3GpHc?s>E|KbcSsVD}-l zhE@1pzupk1H~K)g5Vx@ZameBPI<>%^<{V9tNq9v`n^c+b zZZ^n$UCOCu1C|h;&*ivW6alLLk!^R*ms%L`J(j$a=RB^Ol(QihyN{fr!Av)*QHT%r z)fDCpagz3VAMkl8VO_b{tV~Y+?ds|-FKOFU19>zPpgH6r2unSH58UfVd7X=$Z?$l$ zF9_Y*#-vrj;nY~LWT*8&)LfS2W$V+Qra60dTs)w(bvR2@xvk|+Zr7TJvEk1q2=sn2KgX~3nq?;rpneF z<_-fs2-59-WJ%8eB*yO#{Wh&1(Jzr2z;U?Typdcc=)ec!M%RT6zg}*!_Q(rp&pex!AoD>K{=a zTVc6fnggsbd!9_q55l(~FCw{-ZREW)i5ftcq(Z9AN3P0e8s%)&Lt>Rfqj29lP<*TM-Pt>c<*MK%s6t zYpgY;llxi%CVIjvla@$VGvp*ajwN>Ca}ThlC!86Q@eV3e1mrr;jG_+6{D@CMM*Tt^ zTzxRTu5;ww$;830hoUX-l8gO`%1F#cY|67L7dwW8dKq4LKFpqT!Bv-ua0}KOxi-cY z8$S-^gxYRXX+1;%i`IkSBmWO~Zvq}=b^VVgKqM;gPSla82muBG7Yu3yWJ@H#J2F62 zR4fQsEuttyO@vm3Xfid^agbVEOBL&etySuRxDu2lTB}j3;u>7g8KV%j3f0Q|KA&^X zJKLK9srY}s&!0y#?|IL;=bm%!x#uqLU0`)MP%hSxq!07ve+mTR9Qz$8L1&aV*^KfU zVvE?ouuq&a%1i4SV?W*%*wLLf#QRV5%yx2xPhoD=lQcyU&5o(GVLmDD=TN3x&XYE> zV>jljPv+-vRL99&^#0+{LD2xq8EiA8lL4Yt%hmYo3wQ!Ud_Jpgf3}OrCm+MQBFv+) zwSzXFu!n`7_7vntwriBk6X?Imy83fMkgJsAxmg&`U5kUe>7^LBqMn$M+$=~Gdl{4x zQvySVA-CbEp(eNW9R_0{C!`7*Of!XAqsc0~V(X)?YlbMm)Cqp^?(F{NO1 zPV6+{p3vn%a&K#_1?4*Qa+JeZE8vW^1_nak%$zxMfYqap1#V;;Q$H+W2|vbLerLS3 z8O~U)1FmNOYg=i->KFZ?E#o3b;`+NE%#h2rPK3$Qq*Wb?NBT_FGow*s^jEk zvXpJyBq2rPAM&{sJevb8eh%%sneO~eY`Pg_wb6xd%adei*D0CR1u~bEbSNLPLJgHM z-TAC#%<8F+QD##Bq1Vm}{q`<^atXY z&m`s(1hkv^3`^#7s|**D`lRNw&B^EUkC0Cc5U&vVrhat3y-LcN(>FXFlhxNb4?15O z#JIN@vY~OpGM}ksXO&GWn|>Bssq5ckD|Hw6S^LWA(`}~xH}Gu4eOH@iGCkhdp>I+b z&AH-D04v@kmdldqLh?d54{{8EDxy(-Z@gxWsH5*=_&XSLI1AZ5EuMElO1-|`scEU+ z%zDk%yqYRv08>mxL!GK6Rr_i}tlIt|8?4|N4i2B{wc53h9m|}P5#(CrT$H}WyR(RO{~b!eu(;Zh2j;9z~TLoK^k-#Y$~a87$C_3b>TzCHE<3-LXv zZyCd725fPY)Ve(olNldG@A$9gQr!`EtbU@wq)5ZJ&lelA`_*c^!?WuCWR&22Gh%+J zQiV>{&4tvleRe;O*!KzRl+yw!ZBA-F2Rr%PvI+Tg0>qnO;6n9S!;w;{+P7IR-bJE} zI)zr_bR5~8*=igEN*TTN1TyYD7U0e*TrC-+!ack|DqMPf`%&%tRcNN#Y~OEg24c^* z@4x;|?cHYk{xxEKo9+94kcPE&54Z1O_I>TPgi1fEeXn9Z|3mveHJQ(k zYTr9CpWSTVE08857NLEA=yishweRda+#JBP2sh=wG3|SW9X`Wj_y5YeT4sZ5zguYi zb~8gi7i{o+lz{d0vt_jn`DJUOh>Tecvk}tOmW7?{@5gT*=uj;#YWi|iFt(p?C zTa)kF<6XO|u^pm#l}OwHFWXlgQx+-xF4Ae8vQ{Q}z;&oPux1Syzv6!_2GM+b4a=?S zfJ{4<^RS-}v91wjIP*F7obcUyY<~Tu;`oYoco7-i`(HHUm2bmLk>O(ms5C%N0nP!C zGQf`=u`(wWu896+-(1WpovG`Bo%=Y7{J6~wvw_EO+5dwGJe+Xg@Q(bjt*|5hpNIwX z7>QZ^(R0O0>sOk)qNtwbAh&jHku$MjyxWAdEhu7tg2UwHfj~ zd1P*?d?HUEJSY%em~V&kj!Kc_t+!ZxH7??>tQDaWSc$Kf+wD*cps8T8l|k&6E#mR+R5AE&`7_QoxG!|#?uf=4nw zh4FzAb3$KlMEiux5818Z0Reldx#Qmcpn}eU(DtOgG3!7R--wUqyz%KUmt zyxgrh`u$~d!Eb@n_kINI`TAqLrkJrKj!Kt*3Z^kr$7TFv~v0|Rs4?@ygyo6$sme+Iv}w+e-nBL0i9f28}H^q+X)Z#|-d+^XBr z@|5Ch3WJ2qW0i6USc?1P!6}^A?NKxH_65l!d3gY_W!w&ze8d`HC^s>t;-hORr+{p3 zfV+q@U^PqvFT&IsX52W*HiMIFmAs)Fb3{%}4o|`K-O!w>z3s^5`O&AiYQ|Y9d@1(5 zU?Kq5w_)0iiPG*M2WJdgN?XdtGZwEwZh`RSxa~&fDltjfn-}DL{KkB_Ag`_p{hQjs zSYa;T^BGwRfC67#)vR6M-<6h-TPu_f~XV8d-qRfo(u!>lI0J} zJlUDI$~@Vcz4##mrt^nBC|iY-(oh;JUzf>d92Ia3QJ4!X89n{|_!9=Z0$7Q06Cp|L zV)o4=!$0bCF%p)Dr(Z5{^HGZ6VFsI4usF-RVQmIqKhNj1p zw0MX61dn3;JvznDKl)cP>OBZK+lYEMV=j&L$b)R+-d@lu>48qXfy;C>F%@f%!j%|m zmO2y4R)NIxxHpP;346%mp^xPmkp!uVQNUF_Segfd_e@-OxbhNHnhOp=zH#qZ$jEXJ z72q$n9<(%ORsC}>*d+ly(Le8>{J{EqbeS{_M9F=f54USykz9}$h|I>M!dgt7ALWA*E&C_u$1ojc`{OTH zP4I`W+~f~eN7r{`U#F_0nLBwMueaOawm)z=E?jkEV8|y|JjnzrLD{5B`uuA? zX+JJ<+_z6~#t8+TDe=v(!nkQ#JonlDsKBn?j~q*LTV1v%I>GEK3cwX$RF_V$?T6luP<>iF5Jc6**x$D8W|;Y&S;Cxvp*Dly|D zGY9*h#%PBBYGAt9D==LlCKprZ7hzVh-$j1Ry}^K0KDPz0@Hr+t&gU{=l@B)Da>ZlR z_#rY$81XK<_Bl4G=_ZnG6m}S6bSzEu*=shn$48L{F)=(Zoi^U51Tv?;%h;clVxL|3 z*R4_&cI97doBr?k*I>w!sl16#;U4^|b(9_6*RG9qSj8PAwl#|DwvMgphrh?*QkB~6 zhgT1kHmVVkx~14ubb0Y<9=bn0;4N5i5RVQ)6ZXt}u+Tz4r|OxPk#pqo`O!m(Lx;xT z=$)K@jQ9By2+%9ZNOle0a+mOWN&5lTF1G9)_pVXeR5qB$$6JP)@I`3>&Sr0ILw*ff zz97%5zz4Q?pRScf)maAje z^SYPN1?W+plQS+n>=VqxW6v|@ovXj3S-ab7K5CzE$k6+VAQkU(50WK7$@5eOm)>^h zd)Dl}kc2gR!-ZP2JDK`?29x2lC2RTqNnNN?mUuB7DV%um3ZBXJVu!27i(JwO&((NR z`y}w1{QTAUhCI0=7BopLpNW$?AbGHERnQPYW3eQ0>31`obR` z<}*`_@z-0LQFRMhbr004Tk2RU?yUzCJAA2p_(h1n+^mO5*el-WJP;&6Q)J@LH6z*K z2z?)jEX0SUc=WvE4wCi}+2Fv7%RTn_t*wrKssnZtR`5l3j@g!qNEx(o?>8?RFY7Z~ zy{vX*Zgn>f5t(3rv_l?ycI#x(A>L;Ls1u%K44M*Om~^IeMLn*HGrJ$Ebj@9Dc4*<5@fcv%i`zNJ&5dh?A=|rKx zJNh-&J>sD_dI3JewDiDtRzup({tsBoJ zLVas6^)2C)2uv;SIIhzptY2#d&_5+~7I5{;Xy0JIQ+vaHFc`!^m7RB}(U~%oM@STY%4Tu}P4U}>3 z3Sb-$OxTOHE1SKJMuI(UuXh^Tv{zbvZ&!60qEeJ=TkXh`i}4ffgf^-6^2*%mse$m5 zHFy&U|CRLy!2tH1x!7NuS^uxr`j5alpXHlY|B)uWuA}}#u=IBfaa>D)X4MFB4Z;UH zSCusB6s(_XDMNdTWFT?HhbOPn_~7K979XU7HEl2zB4;K`XFo7q7_;Zd6hGejJ(&Br2eXz6VAC{45DOLF8hlCiN@eS zRPeOM0QZ7`zV`Cc-0D7HYLh9V`{fmh`je;<@jkKjsU=QZWo4eMTP=6jtCw`W3Z&~*f<91wbUY5#Yr)|Uc)Ud7lGEv03!h1?PN*<`lj(e^ z*J#;d%jj3GPF63FnNC*ibEJ*_8e|l(3u_)r^LX!^wBDMWCsEO+Ery9LuqF`QP+Su-FP}py zObcv_K8_gz=~K4!*DSHtZi9{or^QZ^MWXZik@Pn7TvM&2;{(XpjWQzUuv6KBQATEL z`tMreo1;f&2rTw+m)+r2CyKmB;_tE5V-WhWHKRG&JuQE{N!Vy9`KL&|gm)CCz>{#5 ziKAUw8G=dNI}NF+-=be;m{anwLAIPA8 z_c^fx=x-Hz_1~{Cea&Rmn#_x25L0qGRD!~tNGPp1rXieO|8;mL$O%Z+@<9?Y0x*-q zWJ6&xs`l{N^u~2ak>ZUh@x(NZiGKNDZ5qpwAbotli~guTyccWz&YH&7XHzSFnmA7V zi2l3(L1^%$Z-V`Tm*=N;ITM9`FBqj1s?swmrP0T|3qVLCJTN1(e6>DC&+W(jj%DwM zwJ_ga^GTlR5!P~A1Rj1uW@bW+E^7)g;-BVJt~r_V#n`8sC0lcThu9%)~v6S{W;W2YPrt59m8??6tfyjCJ>}d)H(K+DH&bGsUzf}G>X965)&BvzE_n!xZ^?mpN zaMkBr>+GB;sZ!zGn*ByhHwajq7NNO2ZDUY5n*&;_JTfH;?(dVe`i6S8@3Eju&rdt9G}m^dLC ze}rY+`!^JeavKj^o7`{^v*d)es14+bwWurPR~MD);!-*GobR#rbQS@w(I7CNK%)S< zn=X8C9{n3l)7J795EwI~8lKLIpw`IaZS%Vinf;$B?5 ziv0`CBHA(K)QPOy3v3QU!~DNV7(H_;y=yj9!vrzbS;8T(qqpT&@Oe5T+DiKj_gju^ z67KiG@69Ixd_;k77{`l%2^|kr5NGchWkO_p)mo;7Dww`NWzJ80{Cwy*EBZ9UR>~z^d-> z>$ta&nWAZ#F@=g>lBOhzNWKe}7v@B<6)`>;M?~4+=0thLKUxfYD=bWWKR5ogfxtH@ zKHrVsJQnyBijO|&;(r?XFIIe`8y`Ft_)5hucjLcd{uPR^cjHGheX-(ax$&k-T1pl0bi;3NZ z-{{5%iLX@rayR~0gMqJ5e7zfAeH`$`il61idud;f;%zrRkNLNvkr(~l_#2J_zDe=< zZhSTID-<7H<3dKhsbL)R3@QW4S=*DlB@>l$FH~w{|uTXrw8}AkW zSNtqD{`Dh}-lKTijrSf0d@Dw>qQ4t|8uM>be7+lBE&3}yy3(cp-L&6g#W%X~-%!3v z#V>c`y~I~2zTS-=P5#A-pVbC_1n?fk+iv_fQvMjkivDi=4TmFrlj8H;_;up{ijO|( z(*IGWU#$2>H-0nIS1NwF8!!AT6kqSg-_7*Jil61ii~JtN+irX{Z*=2d zXZ@{I{Bk$`h7#Z_6kqSgpEex$V#UvL<8P4ukK%1N{?Wsbz7=yaqQ4toBIU36d^dg_ z{cDBdqknhlKl*s!7c0KejW1#Tm5N{P##hrnDimMu#(Sw>vEpaB@j>x_#oKQDql_P| zxMo50cjIpu2z-;`^WFH@`vAW}@zE77{k_z0vEm!uc(H$_;+MPeUh=O{e7zfABK2SK zv)uUCeMs+7yzR#4N&Wvy^>^dHVfrS;=ezO3e}&?s54!Y!l<5~MzR`^jvi?*mez_a( zrG6EPuXp1|Gkvk*XSwkuqQBy8H~!JyNZhH#XLwu9s^WFG$EZ-H1k3Qhi-z)kn zzR``pf&42Kzub+lCcZ-P^=|xV=3lJ%S#EqE;ysGD-FUC)->Uk%@uL}kniQY!#;+6q zSA6tuF8v?vh4hOR-{{6~X8KCSFL&c#m;S%v>)rU%$iGdqsc6H@fk{zf$qb-S~Cl z|BA17<4>b}#fqQh#;;@fdK7QF@m{8H{X+G3 zH$F)JtyKK-6g=0zU>*o94!%aj2NYtW=l$qd5Kh5F&B7EyozOA#iwynI;7awK}ynpic6`;zehIu0fv67%JZ1gZ@n+6c$z#r&|*OT>rl(d{~D!VosIq_L%*=Q zp+7_EuggY%o1t$$%Fy>!`svx|=NS6chZ_2AxM+_09-WPTgrOe^FQ)t(ls>*Zi@se9 zy`}UwDgDdY=-)?+Li?yZ=PCW|+2|iI^tbmj@(fb?x!LF!82Sg%3Q+!zNF-tg=6kc)XA4>o>Z|@XPw5}bM*obVcleK0`i0r(7a98L zj{htD#BB7_41HYv?bDe0e>VC7hQ9d_W1q*Ae(OD1^xc6LBc*(=QTo-{=wCAQ4*xTh z{<>`Rw;6iJK7EybdN%qwhTc+rw?)}XQO`~ zEeh>(u(9WPN`HGc`UedCbfq7p^mDV(FEI2IwZ3#z`jOe_Cm8zpK}Mc8KUM$FM&I4g zZ&i8jRr=<;ve;(}S`g@ayYio>^bcmEf5y;HM=QwsJ67ozW}{zZ=$i`-eOINQn2mm# zp`WYreENy{e>VC7hJNdjhW}$qzxB>6`tCqO0(~c{Jl81w>TL8c8Ty4ve}>XumyP~5 zL%+4Fk*BZHPtQg_C!PPc&FcTz=trc>zd`Baf6k(B7eoJ``om31|8h3^_tEgcK92n7 zDgEu)=pQij@dJ&%gOq-5Hu?pI{$-`_sPrSV(N9o$9RL4V{XZLh_jLaEDt+@ES?sd~ z4GH~Upp{vqQ%tk-W&_C!k_WblC_5W=20}TDk z>YtA({nlk!^xc7mg!*cGca74o&PM-|q3@ycoT2pBWuw2%&^I4u(9c!= zgOq-5Hu?pI{yOE~QRzo!qn}{tC#wIv`GNX>Hu~<$U+r_R(l_6h#XeimkkB9YH~P*~ z`UkVoKV#@Er5~&G3$xKLGW2onpLA9FiP`9<8TtqJGxB`8N&Pg7nlwSSqCZ&Hl8~yuecxWHh_dKP)JsbT4hJK>*AEfkiv(Yaw^wwcU z-;PQ@G8_GbbpCI?ul}EnzPq76y1?+iSLvJon8iL@(2zjiX02cIl>WhN^v@W2%VYSD zRr-b5=ocCKqqV+tRr-n9=%*Qar~mfpd+Pt$=m!}3xXSaG(r>*ri@rP1kg$BUK3=2r ztFzI+Wa#HQ{;%}cWuw2%&~NQx?9*52r)Q&|W9TjAzwKT1|7`Rl4E;!@-=OsITe9fe zC7u6GO8;^;`uEZBz&?)r=PCW|+2|iI^iKbLkkZf1M!&$&AFcN3sPrSV(N8e+tF^q| zd`JC18+~^}KVALdUZrooIg5R^pdo?2BRiY&ny2&+W}|<`(9c!+u}Z%%8~q|ff4kCm zRr-n9=%=Og|MYG3|7`RF487Aoe@yAO-jqe(9cW0P@6lS{uTlEd+2~&~^vxRI&QSX6 zveDmW=(no<`zrnPZ1i&seUDDY{@dPC|IbE0Lgi8a*`W0C8?)%!#n4aR*YLkd>0i!9 z|2`TX*vBd~^yex4?b+xbF!T=pK}tV28~p-9|MEVDe@CSsnT>vep}$?}-`uGFpN+n| zq2H?d-mCP@H)OHT7BnQ#_d3V_mHxqO^v@Xj9)}wF$1458Z1jtiUdyYi(of7rKh4lv zs_&<7s{d!BA7JQTR{wcS>9;P)qVEngB+xgm^w%i;>TL8c8Tz?Oe}>XumyP~5L%+J4 zu}@#6pPr3=j-g+;x1rzmhWdXt`VoeHq~rfeAOAxZeY+U?2Oa-c`j@lOzmJ9o_Su?m zVC7 zhQ5cE?_)~8_4iry-GPP#`a1ltQTo-{=wCAQ3ss&ol>WMG^tT!MiAvvB>8EF-pJV8I zDE+qA)c>>5k5K+vzcwg+d~p_iyQK5KN$FqCM*lt<9@uB@0mlC4DgEu)=pQij@eYQ5 zkkZf1M!&$&_t5&)QRzo!qo0t@|IJs`|J$awBMVA#P6*TRe#i~j0?5Vb8+li(?&k=E zFTw?oN69VV!gbW%$?||Lu89=R<`HLgve^%Fs>n|QecN2<;qap*zghv?aZR-^5Q)9 zOQB*?-ixTPIWI@b8+XP)Udt`7okd=;Ut|F`gkFNi&TZ?YKj4rR>$CN>)88^1A-t@ zDYstWV(S1ewjNiEQ<92SapMWjR2?7M+R`0o`wJYf%A-<|ED`LSqJa(LL!Z;WaDJ5J zIXH0*TO@d#T18@?XL9SaxK(oh5DtdNcFEUpI%b#h@X_#rvX!y#iY{;33Kjky6g*?D1yzjSbaHeoMZ`e zI|zGnd7w3Rw9WPm{C1{w+4I;j6zKWp*VfzvPMB%UeRif*1r9T!5X_Px^sZSBxoflx~z^j%VI zEBGH43*_}g#z5It(KDf5zKx?Ws)I?*tl+JrPf_YPXbvY4mBmuAdqLq3H4db88*naf zpyw-aiB9{#(6CR{BwsPkHH4vF4Zd1+EL;XUeP!pq6zKVez3u(L>`w+y98%u1v3lR} zxi9)rkv8R2off$Svb_=d${+e~^*_O*5y@W(zFLhs@d6Hew`OG5~L`*Od#xJlK)IHN$0FWBM_k4WskE{p%G-hxW--+8!|pTXgrRi zLXBUOTH_nbaZ(J5?A1We?J(KgZhN7?o`bR1%q+LwjE)X|QFRX73`f1;Z#N%Ep86;6 zAFBlvvv{(;<0ELI#D;fc+JB?dM;hjyuUZNC(wr74Yw0r!8y zAKC^_u_JR4^0r0~U&&~QS=SL5G$KUhyuTMne>j#~nK-ESl(E^)QWbChm zx4#$2ZLxd4W^a4Pp8d{Xd*~H~jkr4~_qo8(QBBnc&aAyWin{~4Ab89yA3E+ctB%*d zM$SSFXbHVny;`nm!L1Ho2SV>v?T1{x!j{_pVEb(#cZ=Qg4dnd_OYH5@!FQ}+H>53l z5`W-tQ+@d@dne@f=YD~+#87Y6dHkW4*f84n3!}{QZe_sm9WbmKYD~b=f2R#K_Et5j zPAQ8_VUfR67J3J=jt{+2y$Z{nfB0yBczQl}b>IG5vw3`^FR`oJTJ#E(mb2EM51O6b)*{}#AiHl@ z;#KUAfFPK)a#(R`UEB)2L^wRQD1b;?oOYxsPD4cSEv@-9HxL=q>hIZ9->LY-`alk& z%3NZsl`q4G(3Y(4{N2*G(4m4T=|+$_s46g1Vvw?LgjD7 z-}3xMG^Y8j*npY8-CS6U`z-^Z&*1KZQ`}t?YM}Io!z7~1Lx5UdmEeJBYKK0H=C45L zDExs<(p>oGo2|4p)r=jAL~^)wbF{Vrp`|zOm7#S)Yk6A1-okIcFkbMQmwEZoXF$Y# zz;E>8PQ+;4{L~<0&ZrFFI8oL&+(6Gp5r41+5m&?V&*VU4W)aU9uOO4M`x%2!5#{h5 zUVA=1+*ht4^7DAS&=z~m7FNaenPCZW0%0k9)Xl%cRXzisrz!L8oS{ym>U2XtW+gl#o6Xd~tL7pk74+Tt7z!U{cQGgVl zQQ%YnmYz}IU4TqHqmWy{n5Z2dSLqK;*dF6$oujOk9XixCSfMuo_;UR?AKC8tpHcP4 zbttQ^>g2&~wkUP{zdrBjTTpqV+l;2$MkV>a5tYOC1VRny6Z+YTuG!Qv(7!>hn)8RQ z?ZBe(hbDEXam!oYfdU6QP~u4)DDu<}j?Cp99HGlQI8v8)P_Y9YwxdU2Ls&M_SFNqb zQ%W7ws)ma3VKnkMs#*!F8l16%4@KA@#V0DqJR+PN6S4M5({5kegEi^4tDK33wDxO0 z+Ar21L}Y2f;JK7t_ zqBTJ81KY-vyX-~_MQ6PXa;)my+$Km>|8is#(hhZ(J4fv4n!8Bk&8!b{z`9J zz+TZxI1|p0@P|)Fhj^`j&F4el&~w(N`;xWt@{t44$T1iX-xuu$gK^I$R8@Cp(W?71 zY(pRFM~^O&2wW=eBj*dy{;(?=3W>$V^r3%>54~cq`Cu=*|4VS6c=aLZPBs`93N_=# zEcPga&s%ldz&y2A2`B1DH$Xn{AGF8nKP)wI4Mb(h3&FRz`ugN~s&*|-Y-cx$UUMiK z%9x$I&hGhoiqjnQIQvg6?FK#{$Za(Kf^gd&=0#i^KsUHW+`x{Eha0?7Uhf-FUVmg9_ zHi>skc1I%|d;Xosi6cEQk5tP6#`ai$I5jMSt~`9hdMZkRW2cB?=p3jv6yC}|h^Jha?sA?@1B=__%x+;;c~9yEtTC+sz!G3;QppPW75SfYV`G7w!! z+|7b2#Ln^55;$ox)U=M~xzN1zjZp@DcU1KNPOqRxTq{Rx&_DV~Lx)#OeGMR`pRBjr zvt!j0y`|^ai8eNASFLBeKp+3SmIHm<=8d#v9OIVvY%PN-a2Ny} zW(%)Dwp%bnfN&;XicWvQupf;qUYoqDujcp)0iiBIPf8=hEchs+rzXz0hz;5~24Xbu24 zy24!gMxc~Hjlr1n{PFgTBK(L(4)sh@bOAp9uT(UR!teztf>;g9 z*c`!sDROA(7WdvMY}1bK!i?u|d5il`yQUupg!8d5?`Z3J|LBR~xPSV7WGwsy!<5A3 zg}C>PAl{Yo3CC%3?lI!M0%zIF4L@=3`3s?tbRMeq<@{w~+~oD4c-J^`X~ zKoHT04*?0{9R$Q6fln0>^*=lU9zC5>IeFztW}i5l#>}Bk<{T={(wW3Fbe76Z^j5(X z^jcHywB#t?=zxz4$BPcUWRWr_w49t%wGS;YBl^W(Q9vm+L7H}|_lI8U{qK2BPt63( zpHcsw>H1%}C-f&1%nD}LA0Z=Ce@W9E{qO+M|1!7!teK|#+bni=oZBdN_^K8=e3fO7 zVuveuPvMdID0Vn6TCTNM7`55wcBam47CXv*63c!n4>3wBbKDl&FW(e74$m1y2BI>> zOcXh;hm|6)h<3y!WiWzvJ2X34Q-{`EKi*T3$tQ?XAR%;<^36ty-$?)#|-ocYrEm!8D;lN(=MS-XL0a@?oHPjJ~BX? zmo5b?@1jeSI#b_GQr8&IUG;f=xvwJ69m1ssO9(GzU9Qkz?mbL(MQ09mc{|z+YF_b# zsX@(g?++K_RZ6^tY}b=Y%8+uH3X9lW5&iOZmmV{PwmCY+Lp>&6GCzm%H;Mdcj862h z*~6SgJ6?(d*-P^{*eJr+FGQD3MD}CrSi~o3J4^WlZM;k7no@#;l&RRINwLR>*t~06 zTE~3cuZwoUNX^_6QkO=Diqxs3e;3l`=2l+^a;XzxzI)dR`${WoIt|DbRCgua)O z!OrwOe3{WVnWR*bG)If}Vd)-oVY(n{+nRSEaS)B>~G%4n;2LdrO4}7)O0T265;{?iM9-}v zdesf-x}eT}i&!b`e;##-g4xgLzhB}yf@JwU$*g~B`5iCv?`-^kYr4)TzjmtghaIT% zzh}D3&-CV5e_i7RPW$ZU_`jE`ZQ|8hMC+dxuTCU~oi!N$xg}j^lyetJ(;VH>o;v5G z=z=(P8Q+L`Bhqh{EYti7VcL_ z`r{Fl;-~uKJ!lDb8c)u;IlXM4{w0#8IeJPvmd&~6rm6okjMw*3wT(X>$K0XzZj9I2 zUrTmI9!3MOQ+K@Jrp*3JjU>VO&$-n2l5A9mo2H&Kqmy=J53PN`5l&bbegH836IU2_GHsfLm-|X^(3}dD-)o zxE^#Zfk@{+$q&y3k1X+RMXu31ds`r$>g$K%FUqN!%x^g}?2tM29v?<9;lOFkQch#y z^T`rDL;hO%swLU202{P_p7w$8BfeS48*6f`;P}IELVf4HoKZb=B61Ccv1k&jv0G;F z6W=2~+X%U|vkG}3guISGr1LEKNfmNOuQVaY{sbXoxAqa4jzA`X@KAh2iF?lwnV#}B z7?}pA%0xQI)WIdw1$$7YAABOyhE9~JH@=z2z0Xajo$m5A8kvr3mtv>B1R|Ytm1t4$QD1# z$W}wyAkYeyWu#;yNob?!>Gyd}#mti*36ch%>J^U^aTu>|r#k z(9Bkt%zoJ6m~qM;%&ebgW@~1vOlGZzIGSy_d(Ub1H{8TQmoL@KDvX1in$Ya3J($@s z$czzpGBZJ?UX0&BXfyM_+2p%#BHz9DV7_-8YLv_|mVDy}r`YbgixG?8BhW=?g$R2f znDjV?U=}PbZVv>_e`c2Xr^SxOg$#k54$+Eqv_8nnl|m3Oy4}%Xi9d>bTKmxAKK>( zwuor9KR%rgSf3=qpzDR-xc7}Id|T%$WhxYo`~tpNu(Qr0wu5Y9E3zYx_-2p{9a&p` zuk}^n*DPHsd%Om{(&(69b>N~RUr{~!r^E8B;H-m~P2b&N)Idf*oSVU@hcNnN>TXDs z1L>lVWHNfAkP_X!D@MyQRhym3C?br`-5o}vTCYq-<-(}Wb`KP z1dn^)|HUr+D3y_@c3~!?MZ)M$yTeFS>z&DHv@n{wD@JS?(o}o<>WimNa2)FlvC2?MNHV(PPsxZ1mQC zw9&F`j2hcuB&yBHWVBcqP0z;2k!V?F@%PDOG*%cLmW`1kQ7R*m=-sn2RNGNN)i$4& z#UUMuT*3bjnT#G4M)zl969$S zc2r9(HDUDrnHj3(2&3zE#b{YdsR^SSG8sMAnKqh`jnRrWB4kYtDs3Q>(Hvpad3P9z zMC~&f^$|udo}9%-ZAm14^u**08@=0!s)cvOD7E-SwTm+u{XrO=v^$JMwSJk5P7+3Y z?+znTt@(@$)pCVVW5q6Plv@0v+KrivR_#k0U9&rkM78mmjOGfXF}uS^RO^t*=rCcF zw<|`eRYX*K^7ITFy|)ilTRU+VHcDkAs$G)FXo)bY-5o}vTK`N&*O%UM8cy!f3>< z7`ZC#QjmJCY;KJl@vFQr)Bjcg-DqNJre+#jD&$5Tq z303u(oEh23R;I1F5XUB|{UNc*UrtGrpsGh~iij|L$VHVf^5x7>1&MCC7`b{Y`Kqlv zR%jE)X&FcxZ9X-PwH3@2&Lz`7BTs(lxM*==iV1fa?}0hPAca@%%fax1f z&Tx+pMgJk$(hpA2-x<->z~<3;nT&1`M%z!yVhD$kD?SX!WKfNmET(bNJ7v@@GyMojziwCQ9Upmj zVum4hpt4|n(5})uKDsnB{WFsOv~1~%Q}j>skyA4nRSTm7cE!k5BKu@AI#L+DW@oXe zBazET)=bDS%}0ET}3V(!*0@`umD zUh|=L?Z}*}{OAk6#NiEqOl#NC>IVv|A88B5=35053yCSULu31`$c^2P=mD@NHlzEn zUvgh$1Xl9d5bY$-6+{+J+e;w;G@xXN!73xC{8E-85i^UJRwbKHAP35^@vi4fz#hQj z7&qgEI7SiP&@qKOn zub?0--+~F>GNJLAy%j5Of#q9bjSsa9C0l(9EZ-8_ir={RpNf^Y!1Apu3wi{IK=>~G zR*E$_cM7HXGHi$SOR>6M+#3|^Q$BiM+&fPpIw1B{D?}fRd#5NwH;jA7D@0F>dq*ln zXN-FXDnx(8Ii7_0Mekrd1VSHCIJz8lp>M{$xk^v>jC;R6f%FjkGdze&AIJmxn;Yc; zYs6mWL&{>Zx^+@`&gbuz0C>+w9^-@Ysw!qU1AsZnW_;vA9#ZvY!?vcDqh}`1%ZSX1 zdp=u39AmG@|4N$zu^fFWDkVCMSm1p zNr{Ux^z+P`*Uwp9H;FaEsfOdj)gGLLvsdl*_SV(^Kw_(ory166&$H^D!UK+*<*|QO z-E{)Y^!T54#tnX)!Uf@R_~}u97=q)ra9~J}I#BWKg|#-7p617)5Sw@wPjr1p1nzIE zI?7oy@z;sKNrCaI{r%zNd@f{_uQ4!W%N36?$wQ=V(sV6%`6CPRqvI~Zxd8|vWAfP= zboGZ9IHw6VJb}JD{Q?s4BX#)75>l|iC+>E5WjL@a|>4V$S>AF;g{)brkl)kv+!ryd=^77aQ@J5898vu z#Z_y$C^O}#1fD?|Zf`><^zBn+DJVs>vk~pM4LoGy7>2FUId9AXFC>sbfoCvGeP~M| z-n0zipC0&=h%zn538fQ(J{puBf!ZT+^tMY=BTxfK=ur$L*p~>XrBfIsyYl7GPKZ@3bwwfPB zYXaY-A4O}zV!t0nYl7x~OMZ-QCZsm~DB8tR;&+kugygzE(*UHFMa$tk!zRP@FTjbA z3DW_QVOJ?9iws4ejorl3WEOFj6@GqM4i6(K` zdkxado-wTUM!=g@xW2To6Ap#p{%st#7x&s|7{YlMESaCf^YU6q9?3fupdH5KLCGtK z2uk@99(jPzV4fRX>aX3ATYUio;e6fYQSM7UbD}@am0~mE;jVH!JO$_X49&r5i8!%5 zdjENdFy;Vjo=|S}>)>N&&SN3e;wU{Fhf^>Pzo$x^#g>9mr7a`M>gRfJnq@wZA+^JW zHqO=T&0{P#9&3)Vod3!ktOp*PV=Y=FDx*`72NcNzp}}P}-{zL%^c6Izz%tTKE1Q1S zbKH5uCXzaDJ9aKC1?G{w7r%QKC(y9h7%AC)Jq_SJzsG*~>HLcrFf^P$^g-Dw)0EtE zjLfYJ&Z+7{R4Ec23o>nJmH{hWl#!4ohIR?PJM=kYf5Is@{%|J1^NtR z+#bL{$v!ayaX4?>D&t*j!!i=1-Q)32qYE;r1HDm|JXo5hrMuYs~>?-+n)>&Tby90FL+_1kr z>RTa3YlpC7x=D#@AOhiKgwe&4#OPuPvwjZqoqJzt{r$245Vful-KImhX7Bgl8#<|d zs9m`8ibv^zd3WFkXXFL9At$&dO%N{m7pg4Q1>!H`o;qgGi&-{1QYTDMwN_gm`(?{h z(QJ7pZ)FFMoyF6O@kcs~V?0jPqD@&HqDQ^EpUly+ig8`wd8n}*Rd@h%R8fTeGi5JP ztV2)a4|X|N!AD`I*gG_84+xmob1Q_34DW>>*#&Wg6k5qXgd>x1lvSkj`&-bND{Jjy zY89rvD{vxnF6M{*;U0)cIF9h$qc~;ori{zqq@5`qPoAq_3o+RdJP`WC4!s?{aZy1+ zOgM}Q5Opuo8XSV%1ZEJd{-2cK&=7yPJwpY%SY8{!M&miUd}|kwPxVb!!8~v)XX`@w zQBaOzl-6H}^Kfwp+>8ua4!)JLJR&C3V1?AIPQe0+f6Z9$nFls(O2wO5$8jtf#*+xh z(!83Cg9|aniVb5TRG&gn@gF=Q{!4ruL2#g+04rW$^I(EX*(x>~#^Qw!Q(x~vL!^B; z#s79Z5V=-E>9t2n%YbMWe3E8@3r>#RhQlZ6J|?0flHlZ64^EKvOs3CFr}vz}r-?=Q zGZx-siiPb_1?-!T{tll}IwcEcy)EBwmZ8{K>Imxo0YD=jtl%qsKF8V2MKf(VclOflJaQ26 z*y@+pZOq$oiPC|{QHu-bV&47R*ib3YJpVtynhsodi3nLTm@guo3*-krX}pz17ro&N z`f8%0)deW_&RT#Fj(u;d5r}*Dp+<1hO%NSk|2wDTdcPR1p8|+zb-uv@)cI<_ld!F@v^{_)E4)ncvlL#T@O*_E6s}je2{1m@ zpg9O6>zr)Kj<&yKU#W8WBt;e?Bnq;WKoMU8kQT8R0F6N*r9~`NY*B2sm{B!z68B3@ z%tTDgG?LhM5=+f~x<8DGmKg_yJ;cYPU5^3l*va@K#kSM3YO|n}>(q3v?;`iu_Y`4g zh2JJa*-_US?EInT*d<^Qh?Kn4Nb%udd-8;zOtr za>}8`;rZw!v)`BKBR>N4%$as{(t4+l+{BC+wLj>~J~B=xF2=;^tLmBmlg{M!2XK>N z%J1-iu9%kZ6@Yd_tzVH`wXwsKQ%4S$Oi39zTq-jor7~bZ(865ssG>kd@7We#e6JEyu_@QDMUfy{en?QR@rbGpUOGzx!mL=8uvi%E&Ux?3J4w2GF)KH z=H?O}1PHV(xXT0*b04q|Z@aa0ZSfL=@~nu?!U?}EW8&VyNWhm27&76s8nj7s?Xp5I z2RRMB@mU#~$&pZL-w{AWNQGeF)T5}>+%+}o-AF@DVpMbR+V zwPJ*OPKT@P+{XAOc3FQ9w#@rJxaSj`<&9k}Z%l^76cNLr82lC-x%@z!A9Kd@%I!#p zQq+*OB*K4S)%p5=b9jC2T1Hc%*mj{?nn*Yd)5!xN&yI$AXPoeqZeM*QHM7mVj8%+; zk0d3GdtU$w5ri1D?Mv_z>cDS7vQ3pK1HMmi%0vfeg7_yb4;?yV_SjHKt_x4tLKP}oqRa9x_xL|Zs^pXK}P2E(K9LY zF{mjf13wg_19lGS*~KL6IA;_vqS+t*KJFK<_LPtLji3n3XF)dqy~jzK}E zl=~rxaz7J+RLlKzJnortKMrl&k5m%fsh!We&ggE+JqISpn0JjFx;y2*?Se$Pcbd(| za+!B+_)g0G?;WJ0^mzqWDmwG7SOkr7AAoE!%Kf~1-itqBu>F9Qa^HZ5?Bzc2$^WI? zzkedxxM$A4u0mgv^RLp*yXRj`v%_X{nP}07xSpJa<>4C#qMp|b^I`J!HBhjxn#)5_ z3OKdalV>>(h5Fmt0*B>Kh$mVq5 zt>E6+l^g4fKU4`Fp8(ckK=2|_0ApMH#=W;Na)&l>riJsV6m>EUijIgO$U)tqa5v*E zg{fh3z@*}=>@4|R;+rqOIEO>%c0NTIh}#X z^eRwtqBtQ)-4syJAe%@J12ut+@G`<~*#&z2wr#l3^@m)+kq9}b=gE7*~8-^o8_hE~2C)^0z-s(Ti~)^0z| z3f|{Ijkv;BaHti$4UeSQueM=J?e=cgH4(f(TQp~LN>7;t2kcYs+usV#QThV`dadAe z1q%UowSpB29t`jxD_EvrH-Lv&!DAHc4iH)QR#u~u+_g2w|av4V3I91L)f6`Y~q2>^#!!IKpn25_hqJW;_B0Eb(_V-+j~I1)>h z6+97OnHBUZSPpQM72Hd~F#tzn<{rC#SPC}4u~smu;7I`eR`4wa0|3Wa!50*q0B}5J zX91$LC$_hOEAVKCkHa_*x0Z1r*8`X9F-9(v`eN2{Nk5+h=T&&=uZ?4VKEDvzOZOFZ zt`%;?5XM#9T3h)l`t=1Iw=ET3HQ!_Ee?7vX6M%)V45dd+0OJ@a-0(hhq+=2Z*6!K_* z1FYay1qT8wwt|}!JQmaqf0(4Wb8yK8YUc-#^{UX23Voz3f$b*=f_W zdRY`3v0YvkoMS!!&4TN}A?bmT;c}9O@refWQ2S%n4~xNqogi0iCM2Sc8Wzt`P{X3F zpoYaE3Tjw9TtN+shbX9Fv6F%t7JtB3WoD#daf^Z)7Mm5+u-K%ahQ&1sYFKjJSnQ^thQ-bbYFOOC z&)twp!{Sy2H7ssYP{ZOY3Tjww6*!Q@m*y_ zA|fuvMs)_zIn#DvHqr@Zb#hP&I!DVuh)*+};XWqvjaUJnTr)MRPad7(lgzOK{%6A9 z=d%(1eu)Wy6nBeaew3iP+gl2%yS<>Gy4#Zqs=M8NJNcs7}*GL3NsVo{?Fdrd2_8 znhz9Ir+HODb(-fCRHu1FL3NtD6;!9WQ9*T@YZO$cnXjNa&G`zd)BHj~b((Pss?!Wp zP@U!|1=VS~E2vImDX31915lmj8~Nm%(sldSfxC)PpQE?O81=%LJBv~0qo-*+?Sj9; z(+-`S)ziYDbUZCRM%m}V-JaQ==5FN>IK|yc6jXOROhI+Gt_rHVvm4fPSmnf+2c8-GTZj%&LcN?vs zy4&#zs=M`7P~ELiL3Ovi6;yZo4t-y$ukO~Opt{?;3aY#PQ$cmNXB1R-dr(1jHyOr) zv$`8s4yn8S7LRF7VxRkx?#2=Ka`ulfES4_<94T-(z8Jr34IBB3Awms*vBrbLYm8N! zNyDC1%7lt(GR-jK*XaA=vzXkFyr5CW+f2B=aRTR3xJlIcjD`gQv=K(+WJk8efS04m z?F82mcgCCwUPYe{WJK6YkV$Hb-5@QknGmAPs{qHgkUI=>0Gb7idgn6}fZE=kub}!e zZ(Jl+eR-UM>dV6vR9`+yLG|VC3aT$#3aT&XD5$0M(aeLJgq$@><2J zFLQ|%iPe|yQBZyPCI!`(>lGAVuD+7##E+{l;iLF)^?7_0|E-?NNAcb2lldrqTRn!4 z;#RuM5Er0#@EjNe;c3KU^240-hpw9TbuQ8|{9$C^D^<9(MPr3lZ1gEG` z09)^t0%+xrtSG!3X=C@2L3sE+$Qj-wGF8;#2<&ne9sDqJ;zqVbW@ zfZ{XEFuX95QEA+Tt`UaV=)My&BFwcZvbA7c_wW$1mBj?MJYdOQ$+WxR4u7x6+SV3f z6i7KJBIQ^{c>s&3fK&Z~@^QRiP0Cx?<8AE5f-5s3r}~S`q!fhEOn1c=COabY?uf~| zUZ1y^EkQzpykB*OiB$mTv9Z*w(km7FEDO_iN}IS$2+*oZbm<90#7^d`pU&&`cItyK;(^ZYfuIOw2ZMc# z3*8-6m=~i>s@x3bHYy5JVD;IG;BEg<({MJulV}QjLweoT8YOyv~ zDX9DNvs4iQQ-l}d3n&%=4TjTkLXZ8p-O&1u9QCCdJY=eG1%F`d&E;kg$IW(a$O#V1 zqf%J5vD$Av(EK7l^ET(p>sVB#oO5wv4XJkd&+2n8sP%Rt5fv zrmk)?n>tW3UPB(skq7sdfG%~N+xsM0l2Or+bc@Fs=x`3vz|6)sdb2loBiT42^LG1lWU@eA=kZiS~m z4}2$vvsQ(pL|$;TGU@1H$Eq(0L zpUO+hlLo4QiDUbL-5x3?#<>|0z8Dl0}f&w@IsJnW)z^1*%@hB+o>CbGrE=9{?pMi4&SzTSM@1fG5iXI3x10~x}n>DuhpE~gx3 zwVzh^M1yaHWDYeTqGvY=u?gAixr>K`o(?Ttd3tzAJsa=Eqx)TJJQ+(6#Dn`SH9PT; zzLoq6bjN-HcIttTRbY1PJ0k+FI9Ud|=)zL72V(|_U_lw)pqkVGNq9cr1ExjUVXX(u zj^ASZiqGDRhuB%)qOpZa)H`k?wDfA(yQO<}|4pUafV(#VN z#&SDb0bbe03h-Yi1Ze3EU0QrCC*w!@tX&{a%NQz%CEu3$#l70!QU$F2-pU8qw2|iN z(Q+`4O28U$(^H9_?ZdLyGMqC4Cc+R!@ibB-jU_9<9b>iC;k`$4`ZW5+5@(UvF7{*N zNC!+F*%4Xgx$3|3upab;SJT!7_6BIyZ4*Qs^`JJiXYVum z2dDSBh_1lhA=Tfo_xWSjgHA6`tP8A?N3$-l5nry+%RJ~USr7XA{;BH%(L`gcd?2#H z^hoM@&~vZExv z*<1At;&*Z-ARLkrC+_X|gLIY&U`580P?1sRY=Agx=vv>!=3$BND)X?^_j^2`--mE# z9uWVKNP2>sm>RK)0X3ZW=x>aZ-B|$1B6+s~G*0#|;*1LQ79Qzjg|H}An$;c2Z_my^ zse$YOU`dw=;(_qFzS00jO*Xos<-Q7J>da((6MGilM&x)TMo^KRp;P24H4m6W!UNV3 zAX8lgC{qrw#ddTt7?KUa_i%k$VK8jVyq6h{X0Nue=8hjcEb;NX0Unm(dOvXWi$UoT?+t`WhU!fJ1enc~iOeZYoyie2)b{bs*q) zNhtY@ROBZ&Ynf()Xe!Tt94_~jZW~^FjRSwiwBql=F<5gX%$HBW62Lo5eq_Z~1opoV z-{C<)Q}9jnDv%{)s0+(idW>nwxF7J`1te!j6#*!>R#y3n@b?N|PyD^m*XwJRUT<1( z2J8znP4)G~-$}kf_#5zzl~OzdwCDP!!%}7yrPyv6q!HV#Fb}5D4tG9#KC5TmDfr=f zy~X&BOP`{LV?%Wi75tOPG{7oLkU(hf-FRvpO3C%X(reUaI)A76}nm??ARmUUhtd$KiTWSl*+_f{U zi<_{OsRa)U8rDRyl?fxP6|iny1J>&a(Yl6q1P)Z7J%POy=sSg3&HxUT||BM)b!_LAe50Jvf3@37!L2qO5g zg74}}E(XQRhvel3efg+)`G~xH$naXzKD1^{EPwAcWi|iayDa}jD|ibKtS6ZNG4)`H zj9;R!{E^@2ShLY-Eo5XXGR_$(d4Cb+o6An{@>VGvlv;NT7BTs2e`pu5Mn58n%M5_C z5|B4TT_L*-jHOtJhc5J$uw>R;7Wn13V`zU%7V_Sp^BoT@c zN?GQ17~A>~gE!&Xe7Kz|q1n74X0b7jAx99Y(*x^n{!%)gB$*5n@g2I^3IL4yHTaDl za=wQXXndDjJyzR;zY}wIuR@VX+w0)fI=Lo7A-V9xWN2uqC*hyfx5sV*nXoCz$0w@j z&_TSi4i!YI0$lfr7PxL*NeVN3VZ)^A_|Si&bH=z`-l`jkIE_z0*ia@b0v~}P(3sWX zht|nE`+m%iMuz_qKk_-S*yMf^VSKObh|dY#@f^MCZ|3|8BZ*bl0g*&(GCn*A-FbXD z>I%_th=rVciNC1Y9L-3j53%tBz{ZawRaAASzGBz+SJAcO+LC-d>?k9Jb)T`F%3Jw6 zidym*eneE9Xo2>(ZN#&zHz@fzQ7TcI}gT(j~7;#kQHUCpNgo1PDQ3D{xi^@ z4V%3bC|MSllmJ$C28}!ziXR6qJkUa#f9V;8K8t(jY$fll_)KZy)?K8hr%-FB>tY4R zZo{DSJp5rVWE1)0ADZf}MP^dhcu3x?MP^c$0nE(TI`MHpB^CA_{jK!8XYFM^UNRZJ zPsOCqjS3JPB27LlA8U`*F8m;|?mGbZD@;sqPIzXsPT8B_# zD9gM9zoLFD%1Ftzeax)#&Crp?$B_hQp!`|L%lV3h4Ca{S1%z4!4%}af8?k3ZF_--R zh&vPbxQp`tr$-9qt8x@X+;Wsw5z18xf&{ttYY-|TltcFa{ya0^J(9GfDE{+m_d7G+Ii7ju zndf=tnddtb2UvgR#T4SUgSIR1$`XMjN9CdPd^Y?l%Zg9Ea5`+S4YXy{MUnD7hdiCL z`I{l3p<~}`o|sWK>hHnh5Gugew>hfev_uU@$LKLi;QR}F80Uc6HPg*(`Z_N5}L5^<%Bp2XMtxWL!xm1Wf50O3{eG;>8%4N{;>8MI)&`xO>S zcR|emo$6+)x+|#8y82PNR%@^@(uIEYy9S{(FKxIQWgg|h-fFF3_S6=dkR}#>~ znnLCJn6bWni{e8iK1bbJ=;s!O3;h=~s9NYRqNH-CbsBF%&9e+?lt?Qh!u)izl!MF& zbGjydbVfP?&T419UPHq@$IDh@2EQU=)|+Bt?j~;2zKnpCT~9#3NA>g#BaU*h^)JpX zTQ;Q47y|-Mws_U1ysAZ8H(8#{Yz_>wge3;GG)dXHWvhvc&(!F=mNBr41|7x8;X5f9 z%@oxa_1T&fiTj9s(p+N^MxODc1uU8*P=z<_CYUl|?;T@tZ6^___K}*Ro8|eavPlNu zD!s!X>;`&~ou;NTq6niDRmd3RDTcTj6y=P{1U~`}Q=9VaMi~_`3yE?ml2jFrwu+`j zFwMSTA05d(RXAs)3csMgGKa5HL&)t60O}99{kbY9x1|IUU3Qg|+siFF`pW4htQWjy z!uq!#JcT4i+Gre1BSqW7q~qU_sqp+l4`G~=`{vu zmDycoG(g$zVeTA~WtQ#U!d(5N5(du3<5vE;Y$I@%oIfIinCy{a5B=IB8wChQi5(1s z@5dfF7sUw;wTa@JX^+(4!jP7j7$d;9zocj~M0vKC?>o)eBR`=}@H)!3BkJst4e)Fa zR6Rkh+WldCEiXuWV@@^6K_jlvEQMI!-<)V>+@<2Q@idMo{y@7-$AjW0rR*u0X?n1z^n_O%tjn=1EYNoFuuLS-on`Yrrk>{b)h~dcUsQz@h8p%#Jt9qRa zEU~YeN$E6;CT+M=y9q2YeZZQZMR99hNKSQdm?BR*GE&NHYO%;bNoBJ+UKi)Tzhu9B zTvX=0n-g86)|MO?X&FgXA=Ni%PEx#5o!+=TGBR_*dgRgseF3TZccK2C8}jQns*?4Q zCE;n{UwK$>C?)%kV|xSAa+qHbARr|=;TKaBiuz%5+!K^=aHOHCnTiR7`$8aQ7RWQi zG`j!;*gov-v&G@cvpi&JoLNqP!h;)kg*)Y9yYnk0)6ohOo{x|Dy~)0UK!)Kj5b^V`J9^Wb&<+Km3|( zq~%hc%#t6F%q%&Nm}OfAj!2gAitjJw4^K>HE@H>JnCx48kSWtP?`|W8fpUKryPX)- z?dD?3iD7u&j+le+BC|{a=KYzWm@s8S`iEg`<{zd-E`CI2O9J<=DEBWPx0m;4w(#-$ zEPnCR95d7N1g5_=szLtnRDb`ph^wA}44+o}H{82Fg|!p7V%3UlmCDWal@IoLzv%K( z@5N6Kat+*n&k+AoI%+Z4N4R(%(*6DW5Yk;Ne(|${^i>+os>O0klu^w=>P@r;X#lS1 z#e*TF1oDvn$=+dS^T0U!(#*$0NC^}m?edvJ1TS{+Jfxa#>PZNxo68qJBS>GM(QZL{ zhGmj1&OvIHUEliA?%f|lND1U2-N#oRLb`*?`&bAmfdZs&F^`II`m&4XA(gvf2r0w~ zBLaVs+ZH8mttwVTT6N5qrZ*gynag@RyZEZXOsc7zB`Gc}@ziAVfAo!)Vgnhx zubEGE(&+v&7A<^F=2PUF3s^0j`6&(>1$K5(Fe0VWPi61;q%*}-kqURw%Ry=(6=@lv zinOd4{S>P)e?ID7w1zwR-g=mQeg%*Qukho}M;&y%*_Q_M2<=PqDgN7cRLmVidN<+h zUf*^0rSKS1eO6=b=H20MU)RgN)F>7f7Ym!BP*kC&LXXTR{@k&ByAx@75X4$f&ZAC@ z15<6YWcM@mpcCO)smEBd19E4=*~_n&VF0|jBTHNKVMpiuCIfYaW5Z&`~r;w`IVjuWd&eRaZvM-osy4Rae*@3Al#62Lu#71KyfaxnY zlNG^!?|x)6l7YhTFl6NqKd1g^&^ksRvx74uIo;U~PK`obl8e%?ZA483DFbtZ8YFo+ zI(6r@rDmi`;$}v&@9r=oArdenH6b_pn2``$B{n2zhs@=FS^ty_NYE4x*poTg4(pM& zb%1%BOB`iHT5dL^j(&HJkT>ixdw?jTs$^!bhx~#F5dLS?PovhL#Yh>@KavuM zbt+y8n?$O2{rhmG(Cl4O3WXAMLRQ3&JT6u5x!_d>ejp(AszMwqa8z~Bsk3D*@`j=d zsW&tfiJPWme?IIJZe~gs1HDZ=2FMKWNQ9VoL2|A{w;ocorLp=sSG}qMZEPT}5~^XyRAO?nxm$^2vMo z-(3#>cCIv>%xWhC#+{4576IPBzaf3LOhQnxJi(Hq`nePbzWvX?7uiNQgLML}=4~VE z=#2i5JrlNcqG%OKM3>BQqG*jpM}OfolR(p+H3@Vhb=u-mwhM=kvmK#`@0#~M*ak(@^Q&eJ2QsJs3)tg z8AH}9Qn2ctKnpfB2U#GOokKlTVQD-2w9l*V7FV| Dj`tI%&qj`wxLGhwv0_bIH! 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/__pycache__/verifier.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cffi/__pycache__/verifier.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f2e92198752b1c18c640aff1e79912e50a75c917 GIT binary patch literal 9309 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 JzUQsn{{tO2wax$l literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cffi/_cffi_errors.h b/.venv/lib/python3.9/site-packages/cffi/_cffi_errors.h new file mode 100644 index 0000000..158e059 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/_cffi_errors.h @@ -0,0 +1,149 @@ +#ifndef CFFI_MESSAGEBOX +# ifdef _MSC_VER +# define CFFI_MESSAGEBOX 1 +# else +# define CFFI_MESSAGEBOX 0 +# endif +#endif + + +#if CFFI_MESSAGEBOX +/* Windows only: logic to take the Python-CFFI embedding logic + initialization errors and display them in a background thread + with MessageBox. The idea is that if the whole program closes + as a result of this problem, then likely it is already a console + program and you can read the stderr output in the console too. + If it is not a console program, then it will likely show its own + dialog to complain, or generally not abruptly close, and for this + case the background thread should stay alive. +*/ +static void *volatile _cffi_bootstrap_text; + +static PyObject *_cffi_start_error_capture(void) +{ + PyObject *result = NULL; + PyObject *x, *m, *bi; + + if (InterlockedCompareExchangePointer(&_cffi_bootstrap_text, + (void *)1, NULL) != NULL) + return (PyObject *)1; + + m = PyImport_AddModule("_cffi_error_capture"); + if (m == NULL) + goto error; + + result = PyModule_GetDict(m); + if (result == NULL) + goto error; + +#if PY_MAJOR_VERSION >= 3 + bi = PyImport_ImportModule("builtins"); +#else + bi = PyImport_ImportModule("__builtin__"); +#endif + if (bi == NULL) + goto error; + PyDict_SetItemString(result, "__builtins__", bi); + Py_DECREF(bi); + + x = PyRun_String( + "import sys\n" + "class FileLike:\n" + " def write(self, x):\n" + " try:\n" + " of.write(x)\n" + " except: pass\n" + " self.buf += x\n" + " def flush(self):\n" + " pass\n" + "fl = FileLike()\n" + "fl.buf = ''\n" + "of = sys.stderr\n" + "sys.stderr = fl\n" + "def done():\n" + " sys.stderr = of\n" + " return fl.buf\n", /* make sure the returned value stays alive */ + Py_file_input, + result, result); + Py_XDECREF(x); + + error: + if (PyErr_Occurred()) + { + PyErr_WriteUnraisable(Py_None); + PyErr_Clear(); + } + return result; +} + +#pragma comment(lib, "user32.lib") + +static DWORD WINAPI _cffi_bootstrap_dialog(LPVOID ignored) +{ + Sleep(666); /* may be interrupted if the whole process is closing */ +#if PY_MAJOR_VERSION >= 3 + MessageBoxW(NULL, (wchar_t *)_cffi_bootstrap_text, + L"Python-CFFI error", + MB_OK | MB_ICONERROR); +#else + MessageBoxA(NULL, (char *)_cffi_bootstrap_text, + "Python-CFFI error", + MB_OK | MB_ICONERROR); +#endif + _cffi_bootstrap_text = NULL; + return 0; +} + +static void _cffi_stop_error_capture(PyObject *ecap) +{ + PyObject *s; + void *text; + + if (ecap == (PyObject *)1) + return; + + if (ecap == NULL) + goto error; + + s = PyRun_String("done()", Py_eval_input, ecap, ecap); + if (s == NULL) + goto error; + + /* Show a dialog box, but in a background thread, and + never show multiple dialog boxes at once. */ +#if PY_MAJOR_VERSION >= 3 + text = PyUnicode_AsWideCharString(s, NULL); +#else + text = PyString_AsString(s); +#endif + + _cffi_bootstrap_text = text; + + if (text != NULL) + { + HANDLE h; + h = CreateThread(NULL, 0, _cffi_bootstrap_dialog, + NULL, 0, NULL); + if (h != NULL) + CloseHandle(h); + } + /* decref the string, but it should stay alive as 'fl.buf' + in the small module above. It will really be freed only if + we later get another similar error. So it's a leak of at + most one copy of the small module. That's fine for this + situation which is usually a "fatal error" anyway. */ + Py_DECREF(s); + PyErr_Clear(); + return; + + error: + _cffi_bootstrap_text = NULL; + PyErr_Clear(); +} + +#else + +static PyObject *_cffi_start_error_capture(void) { return NULL; } +static void _cffi_stop_error_capture(PyObject *ecap) { } + +#endif diff --git a/.venv/lib/python3.9/site-packages/cffi/_cffi_include.h b/.venv/lib/python3.9/site-packages/cffi/_cffi_include.h new file mode 100644 index 0000000..908a1d7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/_cffi_include.h @@ -0,0 +1,389 @@ +#define _CFFI_ + +/* We try to define Py_LIMITED_API before including Python.h. + + Mess: we can only define it if Py_DEBUG, Py_TRACE_REFS and + Py_REF_DEBUG are not defined. This is a best-effort approximation: + we can learn about Py_DEBUG from pyconfig.h, but it is unclear if + the same works for the other two macros. Py_DEBUG implies them, + but not the other way around. + + The implementation is messy (issue #350): on Windows, with _MSC_VER, + we have to define Py_LIMITED_API even before including pyconfig.h. + In that case, we guess what pyconfig.h will do to the macros above, + and check our guess after the #include. + + Note that on Windows, with CPython 3.x, you need >= 3.5 and virtualenv + version >= 16.0.0. With older versions of either, you don't get a + copy of PYTHON3.DLL in the virtualenv. We can't check the version of + CPython *before* we even include pyconfig.h. ffi.set_source() puts + a ``#define _CFFI_NO_LIMITED_API'' at the start of this file if it is + running on Windows < 3.5, as an attempt at fixing it, but that's + arguably wrong because it may not be the target version of Python. + Still better than nothing I guess. As another workaround, you can + remove the definition of Py_LIMITED_API here. + + See also 'py_limited_api' in cffi/setuptools_ext.py. +*/ +#if !defined(_CFFI_USE_EMBEDDING) && !defined(Py_LIMITED_API) +# ifdef _MSC_VER +# if !defined(_DEBUG) && !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) && !defined(_CFFI_NO_LIMITED_API) +# define Py_LIMITED_API +# endif +# include + /* sanity-check: Py_LIMITED_API will cause crashes if any of these + are also defined. Normally, the Python file PC/pyconfig.h does not + cause any of these to be defined, with the exception that _DEBUG + causes Py_DEBUG. Double-check that. */ +# ifdef Py_LIMITED_API +# if defined(Py_DEBUG) +# error "pyconfig.h unexpectedly defines Py_DEBUG, but Py_LIMITED_API is set" +# endif +# if defined(Py_TRACE_REFS) +# error "pyconfig.h unexpectedly defines Py_TRACE_REFS, but Py_LIMITED_API is set" +# endif +# if defined(Py_REF_DEBUG) +# error "pyconfig.h unexpectedly defines Py_REF_DEBUG, but Py_LIMITED_API is set" +# endif +# endif +# else +# include +# if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) && !defined(_CFFI_NO_LIMITED_API) +# define Py_LIMITED_API +# endif +# endif +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#include +#include "parse_c_type.h" + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif + +#ifdef __GNUC__ +# define _CFFI_UNUSED_FN __attribute__((unused)) +#else +# define _CFFI_UNUSED_FN /* nothing */ +#endif + +#ifdef __cplusplus +# ifndef _Bool + typedef bool _Bool; /* semi-hackish: C++ has no _Bool; bool is builtin */ +# endif +#endif + +/********** CPython-specific section **********/ +#ifndef PYPY_VERSION + + +#if PY_MAJOR_VERSION >= 3 +# define PyInt_FromLong PyLong_FromLong +#endif + +#define _cffi_from_c_double PyFloat_FromDouble +#define _cffi_from_c_float PyFloat_FromDouble +#define _cffi_from_c_long PyInt_FromLong +#define _cffi_from_c_ulong PyLong_FromUnsignedLong +#define _cffi_from_c_longlong PyLong_FromLongLong +#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong +#define _cffi_from_c__Bool PyBool_FromLong + +#define _cffi_to_c_double PyFloat_AsDouble +#define _cffi_to_c_float PyFloat_AsDouble + +#define _cffi_from_c_int(x, type) \ + (((type)-1) > 0 ? /* unsigned */ \ + (sizeof(type) < sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + sizeof(type) == sizeof(long) ? \ + PyLong_FromUnsignedLong((unsigned long)x) : \ + PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ + (sizeof(type) <= sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + PyLong_FromLongLong((long long)x))) + +#define _cffi_to_c_int(o, type) \ + ((type)( \ + sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ + : (type)_cffi_to_c_i8(o)) : \ + sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ + : (type)_cffi_to_c_i16(o)) : \ + sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ + : (type)_cffi_to_c_i32(o)) : \ + sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ + : (type)_cffi_to_c_i64(o)) : \ + (Py_FatalError("unsupported size for type " #type), (type)0))) + +#define _cffi_to_c_i8 \ + ((int(*)(PyObject *))_cffi_exports[1]) +#define _cffi_to_c_u8 \ + ((int(*)(PyObject *))_cffi_exports[2]) +#define _cffi_to_c_i16 \ + ((int(*)(PyObject *))_cffi_exports[3]) +#define _cffi_to_c_u16 \ + ((int(*)(PyObject *))_cffi_exports[4]) +#define _cffi_to_c_i32 \ + ((int(*)(PyObject *))_cffi_exports[5]) +#define _cffi_to_c_u32 \ + ((unsigned int(*)(PyObject *))_cffi_exports[6]) +#define _cffi_to_c_i64 \ + ((long long(*)(PyObject *))_cffi_exports[7]) +#define _cffi_to_c_u64 \ + ((unsigned long long(*)(PyObject *))_cffi_exports[8]) +#define _cffi_to_c_char \ + ((int(*)(PyObject *))_cffi_exports[9]) +#define _cffi_from_c_pointer \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[10]) +#define _cffi_to_c_pointer \ + ((char *(*)(PyObject *, struct _cffi_ctypedescr *))_cffi_exports[11]) +#define _cffi_get_struct_layout \ + not used any more +#define _cffi_restore_errno \ + ((void(*)(void))_cffi_exports[13]) +#define _cffi_save_errno \ + ((void(*)(void))_cffi_exports[14]) +#define _cffi_from_c_char \ + ((PyObject *(*)(char))_cffi_exports[15]) +#define _cffi_from_c_deref \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[16]) +#define _cffi_to_c \ + ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[17]) +#define _cffi_from_c_struct \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[18]) +#define _cffi_to_c_wchar_t \ + ((_cffi_wchar_t(*)(PyObject *))_cffi_exports[19]) +#define _cffi_from_c_wchar_t \ + ((PyObject *(*)(_cffi_wchar_t))_cffi_exports[20]) +#define _cffi_to_c_long_double \ + ((long double(*)(PyObject *))_cffi_exports[21]) +#define _cffi_to_c__Bool \ + ((_Bool(*)(PyObject *))_cffi_exports[22]) +#define _cffi_prepare_pointer_call_argument \ + ((Py_ssize_t(*)(struct _cffi_ctypedescr *, \ + PyObject *, char **))_cffi_exports[23]) +#define _cffi_convert_array_from_object \ + ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[24]) +#define _CFFI_CPIDX 25 +#define _cffi_call_python \ + ((void(*)(struct _cffi_externpy_s *, char *))_cffi_exports[_CFFI_CPIDX]) +#define _cffi_to_c_wchar3216_t \ + ((int(*)(PyObject *))_cffi_exports[26]) +#define _cffi_from_c_wchar3216_t \ + ((PyObject *(*)(int))_cffi_exports[27]) +#define _CFFI_NUM_EXPORTS 28 + +struct _cffi_ctypedescr; + +static void *_cffi_exports[_CFFI_NUM_EXPORTS]; + +#define _cffi_type(index) ( \ + assert((((uintptr_t)_cffi_types[index]) & 1) == 0), \ + (struct _cffi_ctypedescr *)_cffi_types[index]) + +static PyObject *_cffi_init(const char *module_name, Py_ssize_t version, + const struct _cffi_type_context_s *ctx) +{ + PyObject *module, *o_arg, *new_module; + void *raw[] = { + (void *)module_name, + (void *)version, + (void *)_cffi_exports, + (void *)ctx, + }; + + module = PyImport_ImportModule("_cffi_backend"); + if (module == NULL) + goto failure; + + o_arg = PyLong_FromVoidPtr((void *)raw); + if (o_arg == NULL) + goto failure; + + new_module = PyObject_CallMethod( + module, (char *)"_init_cffi_1_0_external_module", (char *)"O", o_arg); + + Py_DECREF(o_arg); + Py_DECREF(module); + return new_module; + + failure: + Py_XDECREF(module); + return NULL; +} + + +#ifdef HAVE_WCHAR_H +typedef wchar_t _cffi_wchar_t; +#else +typedef uint16_t _cffi_wchar_t; /* same random pick as _cffi_backend.c */ +#endif + +_CFFI_UNUSED_FN static uint16_t _cffi_to_c_char16_t(PyObject *o) +{ + if (sizeof(_cffi_wchar_t) == 2) + return (uint16_t)_cffi_to_c_wchar_t(o); + else + return (uint16_t)_cffi_to_c_wchar3216_t(o); +} + +_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char16_t(uint16_t x) +{ + if (sizeof(_cffi_wchar_t) == 2) + return _cffi_from_c_wchar_t((_cffi_wchar_t)x); + else + return _cffi_from_c_wchar3216_t((int)x); +} + +_CFFI_UNUSED_FN static int _cffi_to_c_char32_t(PyObject *o) +{ + if (sizeof(_cffi_wchar_t) == 4) + return (int)_cffi_to_c_wchar_t(o); + else + return (int)_cffi_to_c_wchar3216_t(o); +} + +_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char32_t(unsigned int x) +{ + if (sizeof(_cffi_wchar_t) == 4) + return _cffi_from_c_wchar_t((_cffi_wchar_t)x); + else + return _cffi_from_c_wchar3216_t((int)x); +} + +union _cffi_union_alignment_u { + unsigned char m_char; + unsigned short m_short; + unsigned int m_int; + unsigned long m_long; + unsigned long long m_longlong; + float m_float; + double m_double; + long double m_longdouble; +}; + +struct _cffi_freeme_s { + struct _cffi_freeme_s *next; + union _cffi_union_alignment_u alignment; +}; + +_CFFI_UNUSED_FN static int +_cffi_convert_array_argument(struct _cffi_ctypedescr *ctptr, PyObject *arg, + char **output_data, Py_ssize_t datasize, + struct _cffi_freeme_s **freeme) +{ + char *p; + if (datasize < 0) + return -1; + + p = *output_data; + if (p == NULL) { + struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( + offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); + if (fp == NULL) + return -1; + fp->next = *freeme; + *freeme = fp; + p = *output_data = (char *)&fp->alignment; + } + memset((void *)p, 0, (size_t)datasize); + return _cffi_convert_array_from_object(p, ctptr, arg); +} + +_CFFI_UNUSED_FN static void +_cffi_free_array_arguments(struct _cffi_freeme_s *freeme) +{ + do { + void *p = (void *)freeme; + freeme = freeme->next; + PyObject_Free(p); + } while (freeme != NULL); +} + +/********** end CPython-specific section **********/ +#else +_CFFI_UNUSED_FN +static void (*_cffi_call_python_org)(struct _cffi_externpy_s *, char *); +# define _cffi_call_python _cffi_call_python_org +#endif + + +#define _cffi_array_len(array) (sizeof(array) / sizeof((array)[0])) + +#define _cffi_prim_int(size, sign) \ + ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \ + (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \ + (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \ + (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \ + _CFFI__UNKNOWN_PRIM) + +#define _cffi_prim_float(size) \ + ((size) == sizeof(float) ? _CFFI_PRIM_FLOAT : \ + (size) == sizeof(double) ? _CFFI_PRIM_DOUBLE : \ + (size) == sizeof(long double) ? _CFFI__UNKNOWN_LONG_DOUBLE : \ + _CFFI__UNKNOWN_FLOAT_PRIM) + +#define _cffi_check_int(got, got_nonpos, expected) \ + ((got_nonpos) == (expected <= 0) && \ + (got) == (unsigned long long)expected) + +#ifdef MS_WIN32 +# define _cffi_stdcall __stdcall +#else +# define _cffi_stdcall /* nothing */ +#endif + +#ifdef __cplusplus +} +#endif diff --git a/.venv/lib/python3.9/site-packages/cffi/_embedding.h b/.venv/lib/python3.9/site-packages/cffi/_embedding.h new file mode 100644 index 0000000..64c04f6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/_embedding.h @@ -0,0 +1,550 @@ + +/***** Support code for embedding *****/ + +#ifdef __cplusplus +extern "C" { +#endif + + +#if defined(_WIN32) +# define CFFI_DLLEXPORT __declspec(dllexport) +#elif defined(__GNUC__) +# define CFFI_DLLEXPORT __attribute__((visibility("default"))) +#else +# define CFFI_DLLEXPORT /* nothing */ +#endif + + +/* There are two global variables of type _cffi_call_python_fnptr: + + * _cffi_call_python, which we declare just below, is the one called + by ``extern "Python"`` implementations. + + * _cffi_call_python_org, which on CPython is actually part of the + _cffi_exports[] array, is the function pointer copied from + _cffi_backend. If _cffi_start_python() fails, then this is set + to NULL; otherwise, it should never be NULL. + + After initialization is complete, both are equal. However, the + first one remains equal to &_cffi_start_and_call_python until the + very end of initialization, when we are (or should be) sure that + concurrent threads also see a completely initialized world, and + only then is it changed. +*/ +#undef _cffi_call_python +typedef void (*_cffi_call_python_fnptr)(struct _cffi_externpy_s *, char *); +static void _cffi_start_and_call_python(struct _cffi_externpy_s *, char *); +static _cffi_call_python_fnptr _cffi_call_python = &_cffi_start_and_call_python; + + +#ifndef _MSC_VER + /* --- Assuming a GCC not infinitely old --- */ +# define cffi_compare_and_swap(l,o,n) __sync_bool_compare_and_swap(l,o,n) +# define cffi_write_barrier() __sync_synchronize() +# if !defined(__amd64__) && !defined(__x86_64__) && \ + !defined(__i386__) && !defined(__i386) +# define cffi_read_barrier() __sync_synchronize() +# else +# define cffi_read_barrier() (void)0 +# endif +#else + /* --- Windows threads version --- */ +# include +# define cffi_compare_and_swap(l,o,n) \ + (InterlockedCompareExchangePointer(l,n,o) == (o)) +# define cffi_write_barrier() InterlockedCompareExchange(&_cffi_dummy,0,0) +# define cffi_read_barrier() (void)0 +static volatile LONG _cffi_dummy; +#endif + +#ifdef WITH_THREAD +# ifndef _MSC_VER +# include + static pthread_mutex_t _cffi_embed_startup_lock; +# else + static CRITICAL_SECTION _cffi_embed_startup_lock; +# endif + static char _cffi_embed_startup_lock_ready = 0; +#endif + +static void _cffi_acquire_reentrant_mutex(void) +{ + static void *volatile lock = NULL; + + while (!cffi_compare_and_swap(&lock, NULL, (void *)1)) { + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: pthread_mutex_init() should be very fast, and + this is only run at start-up anyway. */ + } + +#ifdef WITH_THREAD + if (!_cffi_embed_startup_lock_ready) { +# ifndef _MSC_VER + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&_cffi_embed_startup_lock, &attr); +# else + InitializeCriticalSection(&_cffi_embed_startup_lock); +# endif + _cffi_embed_startup_lock_ready = 1; + } +#endif + + while (!cffi_compare_and_swap(&lock, (void *)1, NULL)) + ; + +#ifndef _MSC_VER + pthread_mutex_lock(&_cffi_embed_startup_lock); +#else + EnterCriticalSection(&_cffi_embed_startup_lock); +#endif +} + +static void _cffi_release_reentrant_mutex(void) +{ +#ifndef _MSC_VER + pthread_mutex_unlock(&_cffi_embed_startup_lock); +#else + LeaveCriticalSection(&_cffi_embed_startup_lock); +#endif +} + + +/********** CPython-specific section **********/ +#ifndef PYPY_VERSION + +#include "_cffi_errors.h" + + +#define _cffi_call_python_org _cffi_exports[_CFFI_CPIDX] + +PyMODINIT_FUNC _CFFI_PYTHON_STARTUP_FUNC(void); /* forward */ + +static void _cffi_py_initialize(void) +{ + /* XXX use initsigs=0, which "skips initialization registration of + signal handlers, which might be useful when Python is + embedded" according to the Python docs. But review and think + if it should be a user-controllable setting. + + XXX we should also give a way to write errors to a buffer + instead of to stderr. + + XXX if importing 'site' fails, CPython (any version) calls + exit(). Should we try to work around this behavior here? + */ + Py_InitializeEx(0); +} + +static int _cffi_initialize_python(void) +{ + /* This initializes Python, imports _cffi_backend, and then the + present .dll/.so is set up as a CPython C extension module. + */ + int result; + PyGILState_STATE state; + PyObject *pycode=NULL, *global_dict=NULL, *x; + PyObject *builtins; + + state = PyGILState_Ensure(); + + /* Call the initxxx() function from the present module. It will + create and initialize us as a CPython extension module, instead + of letting the startup Python code do it---it might reimport + the same .dll/.so and get maybe confused on some platforms. + It might also have troubles locating the .dll/.so again for all + I know. + */ + (void)_CFFI_PYTHON_STARTUP_FUNC(); + if (PyErr_Occurred()) + goto error; + + /* Now run the Python code provided to ffi.embedding_init_code(). + */ + pycode = Py_CompileString(_CFFI_PYTHON_STARTUP_CODE, + "", + Py_file_input); + if (pycode == NULL) + goto error; + global_dict = PyDict_New(); + if (global_dict == NULL) + goto error; + builtins = PyEval_GetBuiltins(); + if (builtins == NULL) + goto error; + if (PyDict_SetItemString(global_dict, "__builtins__", builtins) < 0) + goto error; + x = PyEval_EvalCode( +#if PY_MAJOR_VERSION < 3 + (PyCodeObject *) +#endif + pycode, global_dict, global_dict); + if (x == NULL) + goto error; + Py_DECREF(x); + + /* Done! Now if we've been called from + _cffi_start_and_call_python() in an ``extern "Python"``, we can + only hope that the Python code did correctly set up the + corresponding @ffi.def_extern() function. Otherwise, the + general logic of ``extern "Python"`` functions (inside the + _cffi_backend module) will find that the reference is still + missing and print an error. + */ + result = 0; + done: + Py_XDECREF(pycode); + Py_XDECREF(global_dict); + PyGILState_Release(state); + return result; + + error:; + { + /* Print as much information as potentially useful. + Debugging load-time failures with embedding is not fun + */ + PyObject *ecap; + PyObject *exception, *v, *tb, *f, *modules, *mod; + PyErr_Fetch(&exception, &v, &tb); + ecap = _cffi_start_error_capture(); + f = PySys_GetObject((char *)"stderr"); + if (f != NULL && f != Py_None) { + PyFile_WriteString( + "Failed to initialize the Python-CFFI embedding logic:\n\n", f); + } + + if (exception != NULL) { + PyErr_NormalizeException(&exception, &v, &tb); + PyErr_Display(exception, v, tb); + } + Py_XDECREF(exception); + Py_XDECREF(v); + Py_XDECREF(tb); + + if (f != NULL && f != Py_None) { + PyFile_WriteString("\nFrom: " _CFFI_MODULE_NAME + "\ncompiled with cffi version: 2.0.0" + "\n_cffi_backend module: ", f); + modules = PyImport_GetModuleDict(); + mod = PyDict_GetItemString(modules, "_cffi_backend"); + if (mod == NULL) { + PyFile_WriteString("not loaded", f); + } + else { + v = PyObject_GetAttrString(mod, "__file__"); + PyFile_WriteObject(v, f, 0); + Py_XDECREF(v); + } + PyFile_WriteString("\nsys.path: ", f); + PyFile_WriteObject(PySys_GetObject((char *)"path"), f, 0); + PyFile_WriteString("\n\n", f); + } + _cffi_stop_error_capture(ecap); + } + result = -1; + goto done; +} + +#if PY_VERSION_HEX < 0x03080000 +PyAPI_DATA(char *) _PyParser_TokenNames[]; /* from CPython */ +#endif + +static int _cffi_carefully_make_gil(void) +{ + /* This does the basic initialization of Python. It can be called + completely concurrently from unrelated threads. It assumes + that we don't hold the GIL before (if it exists), and we don't + hold it afterwards. + + (What it really does used to be completely different in Python 2 + and Python 3, with the Python 2 solution avoiding the spin-lock + around the Py_InitializeEx() call. However, after recent changes + to CPython 2.7 (issue #358) it no longer works. So we use the + Python 3 solution everywhere.) + + This initializes Python by calling Py_InitializeEx(). + Important: this must not be called concurrently at all. + So we use a global variable as a simple spin lock. This global + variable must be from 'libpythonX.Y.so', not from this + cffi-based extension module, because it must be shared from + different cffi-based extension modules. + + In Python < 3.8, we choose + _PyParser_TokenNames[0] as a completely arbitrary pointer value + that is never written to. The default is to point to the + string "ENDMARKER". We change it temporarily to point to the + next character in that string. (Yes, I know it's REALLY + obscure.) + + In Python >= 3.8, this string array is no longer writable, so + instead we pick PyCapsuleType.tp_version_tag. We can't change + Python < 3.8 because someone might use a mixture of cffi + embedded modules, some of which were compiled before this file + changed. + + In Python >= 3.12, this stopped working because that particular + tp_version_tag gets modified during interpreter startup. It's + arguably a bad idea before 3.12 too, but again we can't change + that because someone might use a mixture of cffi embedded + modules, and no-one reported a bug so far. In Python >= 3.12 + we go instead for PyCapsuleType.tp_as_buffer, which is supposed + to always be NULL. We write to it temporarily a pointer to + a struct full of NULLs, which is semantically the same. + */ + +#ifdef WITH_THREAD +# if PY_VERSION_HEX < 0x03080000 + char *volatile *lock = (char *volatile *)_PyParser_TokenNames; + char *old_value, *locked_value; + + while (1) { /* spin loop */ + old_value = *lock; + locked_value = old_value + 1; + if (old_value[0] == 'E') { + assert(old_value[1] == 'N'); + if (cffi_compare_and_swap(lock, old_value, locked_value)) + break; + } + else { + assert(old_value[0] == 'N'); + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: PyEval_InitThreads() should be very fast, and + this is only run at start-up anyway. */ + } + } +# else +# if PY_VERSION_HEX < 0x030C0000 + int volatile *lock = (int volatile *)&PyCapsule_Type.tp_version_tag; + int old_value, locked_value = -42; + assert(!(PyCapsule_Type.tp_flags & Py_TPFLAGS_HAVE_VERSION_TAG)); +# else + static struct ebp_s { PyBufferProcs buf; int mark; } empty_buffer_procs; + empty_buffer_procs.mark = -42; + PyBufferProcs *volatile *lock = (PyBufferProcs *volatile *) + &PyCapsule_Type.tp_as_buffer; + PyBufferProcs *old_value, *locked_value = &empty_buffer_procs.buf; +# endif + + while (1) { /* spin loop */ + old_value = *lock; + if (old_value == 0) { + if (cffi_compare_and_swap(lock, old_value, locked_value)) + break; + } + else { +# if PY_VERSION_HEX < 0x030C0000 + assert(old_value == locked_value); +# else + /* The pointer should point to a possibly different + empty_buffer_procs from another C extension module */ + assert(((struct ebp_s *)old_value)->mark == -42); +# endif + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: PyEval_InitThreads() should be very fast, and + this is only run at start-up anyway. */ + } + } +# endif +#endif + + /* call Py_InitializeEx() */ + if (!Py_IsInitialized()) { + _cffi_py_initialize(); +#if PY_VERSION_HEX < 0x03070000 + PyEval_InitThreads(); +#endif + PyEval_SaveThread(); /* release the GIL */ + /* the returned tstate must be the one that has been stored into the + autoTLSkey by _PyGILState_Init() called from Py_Initialize(). */ + } + else { +#if PY_VERSION_HEX < 0x03070000 + /* PyEval_InitThreads() is always a no-op from CPython 3.7 */ + PyGILState_STATE state = PyGILState_Ensure(); + PyEval_InitThreads(); + PyGILState_Release(state); +#endif + } + +#ifdef WITH_THREAD + /* release the lock */ + while (!cffi_compare_and_swap(lock, locked_value, old_value)) + ; +#endif + + return 0; +} + +/********** end CPython-specific section **********/ + + +#else + + +/********** PyPy-specific section **********/ + +PyMODINIT_FUNC _CFFI_PYTHON_STARTUP_FUNC(const void *[]); /* forward */ + +static struct _cffi_pypy_init_s { + const char *name; + void *func; /* function pointer */ + const char *code; +} _cffi_pypy_init = { + _CFFI_MODULE_NAME, + _CFFI_PYTHON_STARTUP_FUNC, + _CFFI_PYTHON_STARTUP_CODE, +}; + +extern int pypy_carefully_make_gil(const char *); +extern int pypy_init_embedded_cffi_module(int, struct _cffi_pypy_init_s *); + +static int _cffi_carefully_make_gil(void) +{ + return pypy_carefully_make_gil(_CFFI_MODULE_NAME); +} + +static int _cffi_initialize_python(void) +{ + return pypy_init_embedded_cffi_module(0xB011, &_cffi_pypy_init); +} + +/********** end PyPy-specific section **********/ + + +#endif + + +#ifdef __GNUC__ +__attribute__((noinline)) +#endif +static _cffi_call_python_fnptr _cffi_start_python(void) +{ + /* Delicate logic to initialize Python. This function can be + called multiple times concurrently, e.g. when the process calls + its first ``extern "Python"`` functions in multiple threads at + once. It can also be called recursively, in which case we must + ignore it. We also have to consider what occurs if several + different cffi-based extensions reach this code in parallel + threads---it is a different copy of the code, then, and we + can't have any shared global variable unless it comes from + 'libpythonX.Y.so'. + + Idea: + + * _cffi_carefully_make_gil(): "carefully" call + PyEval_InitThreads() (possibly with Py_InitializeEx() first). + + * then we use a (local) custom lock to make sure that a call to this + cffi-based extension will wait if another call to the *same* + extension is running the initialization in another thread. + It is reentrant, so that a recursive call will not block, but + only one from a different thread. + + * then we grab the GIL and (Python 2) we call Py_InitializeEx(). + At this point, concurrent calls to Py_InitializeEx() are not + possible: we have the GIL. + + * do the rest of the specific initialization, which may + temporarily release the GIL but not the custom lock. + Only release the custom lock when we are done. + */ + static char called = 0; + + if (_cffi_carefully_make_gil() != 0) + return NULL; + + _cffi_acquire_reentrant_mutex(); + + /* Here the GIL exists, but we don't have it. We're only protected + from concurrency by the reentrant mutex. */ + + /* This file only initializes the embedded module once, the first + time this is called, even if there are subinterpreters. */ + if (!called) { + called = 1; /* invoke _cffi_initialize_python() only once, + but don't set '_cffi_call_python' right now, + otherwise concurrent threads won't call + this function at all (we need them to wait) */ + if (_cffi_initialize_python() == 0) { + /* now initialization is finished. Switch to the fast-path. */ + + /* We would like nobody to see the new value of + '_cffi_call_python' without also seeing the rest of the + data initialized. However, this is not possible. But + the new value of '_cffi_call_python' is the function + 'cffi_call_python()' from _cffi_backend. So: */ + cffi_write_barrier(); + /* ^^^ we put a write barrier here, and a corresponding + read barrier at the start of cffi_call_python(). This + ensures that after that read barrier, we see everything + done here before the write barrier. + */ + + assert(_cffi_call_python_org != NULL); + _cffi_call_python = (_cffi_call_python_fnptr)_cffi_call_python_org; + } + else { + /* initialization failed. Reset this to NULL, even if it was + already set to some other value. Future calls to + _cffi_start_python() are still forced to occur, and will + always return NULL from now on. */ + _cffi_call_python_org = NULL; + } + } + + _cffi_release_reentrant_mutex(); + + return (_cffi_call_python_fnptr)_cffi_call_python_org; +} + +static +void _cffi_start_and_call_python(struct _cffi_externpy_s *externpy, char *args) +{ + _cffi_call_python_fnptr fnptr; + int current_err = errno; +#ifdef _MSC_VER + int current_lasterr = GetLastError(); +#endif + fnptr = _cffi_start_python(); + if (fnptr == NULL) { + fprintf(stderr, "function %s() called, but initialization code " + "failed. Returning 0.\n", externpy->name); + memset(args, 0, externpy->size_of_result); + } +#ifdef _MSC_VER + SetLastError(current_lasterr); +#endif + errno = current_err; + + if (fnptr != NULL) + fnptr(externpy, args); +} + + +/* The cffi_start_python() function makes sure Python is initialized + and our cffi module is set up. It can be called manually from the + user C code. The same effect is obtained automatically from any + dll-exported ``extern "Python"`` function. This function returns + -1 if initialization failed, 0 if all is OK. */ +_CFFI_UNUSED_FN +static int cffi_start_python(void) +{ + if (_cffi_call_python == &_cffi_start_and_call_python) { + if (_cffi_start_python() == NULL) + return -1; + } + cffi_read_barrier(); + return 0; +} + +#undef cffi_compare_and_swap +#undef cffi_write_barrier +#undef cffi_read_barrier + +#ifdef __cplusplus +} +#endif diff --git a/.venv/lib/python3.9/site-packages/cffi/_imp_emulation.py b/.venv/lib/python3.9/site-packages/cffi/_imp_emulation.py new file mode 100644 index 0000000..136abdd --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/_imp_emulation.py @@ -0,0 +1,83 @@ + +try: + # this works on Python < 3.12 + from imp import * + +except ImportError: + # this is a limited emulation for Python >= 3.12. + # Note that this is used only for tests or for the old ffi.verify(). + # This is copied from the source code of Python 3.11. + + from _imp import (acquire_lock, release_lock, + is_builtin, is_frozen) + + from importlib._bootstrap import _load + + from importlib import machinery + import os + import sys + import tokenize + + SEARCH_ERROR = 0 + PY_SOURCE = 1 + PY_COMPILED = 2 + C_EXTENSION = 3 + PY_RESOURCE = 4 + PKG_DIRECTORY = 5 + C_BUILTIN = 6 + PY_FROZEN = 7 + PY_CODERESOURCE = 8 + IMP_HOOK = 9 + + def get_suffixes(): + extensions = [(s, 'rb', C_EXTENSION) + for s in machinery.EXTENSION_SUFFIXES] + source = [(s, 'r', PY_SOURCE) for s in machinery.SOURCE_SUFFIXES] + bytecode = [(s, 'rb', PY_COMPILED) for s in machinery.BYTECODE_SUFFIXES] + return extensions + source + bytecode + + def find_module(name, path=None): + if not isinstance(name, str): + raise TypeError("'name' must be a str, not {}".format(type(name))) + elif not isinstance(path, (type(None), list)): + # Backwards-compatibility + raise RuntimeError("'path' must be None or a list, " + "not {}".format(type(path))) + + if path is None: + if is_builtin(name): + return None, None, ('', '', C_BUILTIN) + elif is_frozen(name): + return None, None, ('', '', PY_FROZEN) + else: + path = sys.path + + for entry in path: + package_directory = os.path.join(entry, name) + for suffix in ['.py', machinery.BYTECODE_SUFFIXES[0]]: + package_file_name = '__init__' + suffix + file_path = os.path.join(package_directory, package_file_name) + if os.path.isfile(file_path): + return None, package_directory, ('', '', PKG_DIRECTORY) + for suffix, mode, type_ in get_suffixes(): + file_name = name + suffix + file_path = os.path.join(entry, file_name) + if os.path.isfile(file_path): + break + else: + continue + break # Break out of outer loop when breaking out of inner loop. + else: + raise ImportError(name, name=name) + + encoding = None + if 'b' not in mode: + with open(file_path, 'rb') as file: + encoding = tokenize.detect_encoding(file.readline)[0] + file = open(file_path, mode, encoding=encoding) + return file, file_path, (suffix, mode, type_) + + def load_dynamic(name, path, file=None): + loader = machinery.ExtensionFileLoader(name, path) + spec = machinery.ModuleSpec(name=name, loader=loader, origin=path) + return _load(spec) diff --git a/.venv/lib/python3.9/site-packages/cffi/_shimmed_dist_utils.py b/.venv/lib/python3.9/site-packages/cffi/_shimmed_dist_utils.py new file mode 100644 index 0000000..c3d2312 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/_shimmed_dist_utils.py @@ -0,0 +1,45 @@ +""" +Temporary shim module to indirect the bits of distutils we need from setuptools/distutils while providing useful +error messages beyond `No module named 'distutils' on Python >= 3.12, or when setuptools' vendored distutils is broken. + +This is a compromise to avoid a hard-dep on setuptools for Python >= 3.12, since many users don't need runtime compilation support from CFFI. +""" +import sys + +try: + # import setuptools first; this is the most robust way to ensure its embedded distutils is available + # (the .pth shim should usually work, but this is even more robust) + import setuptools +except Exception as ex: + if sys.version_info >= (3, 12): + # Python 3.12 has no built-in distutils to fall back on, so any import problem is fatal + raise Exception("This CFFI feature requires setuptools on Python >= 3.12. The setuptools module is missing or non-functional.") from ex + + # silently ignore on older Pythons (support fallback to stdlib distutils where available) +else: + del setuptools + +try: + # bring in just the bits of distutils we need, whether they really came from setuptools or stdlib-embedded distutils + from distutils import log, sysconfig + from distutils.ccompiler import CCompiler + from distutils.command.build_ext import build_ext + from distutils.core import Distribution, Extension + from distutils.dir_util import mkpath + from distutils.errors import DistutilsSetupError, CompileError, LinkError + from distutils.log import set_threshold, set_verbosity + + if sys.platform == 'win32': + try: + # FUTURE: msvc9compiler module was removed in setuptools 74; consider removing, as it's only used by an ancient patch in `recompiler` + from distutils.msvc9compiler import MSVCCompiler + except ImportError: + MSVCCompiler = None +except Exception as ex: + if sys.version_info >= (3, 12): + raise Exception("This CFFI feature requires setuptools on Python >= 3.12. Please install the setuptools package.") from ex + + # anything older, just let the underlying distutils import error fly + raise Exception("This CFFI feature requires distutils. Please install the distutils or setuptools package.") from ex + +del sys diff --git a/.venv/lib/python3.9/site-packages/cffi/api.py b/.venv/lib/python3.9/site-packages/cffi/api.py new file mode 100644 index 0000000..5a474f3 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/api.py @@ -0,0 +1,967 @@ +import sys, types +from .lock import allocate_lock +from .error import CDefError +from . import model + +try: + callable +except NameError: + # Python 3.1 + from collections import Callable + callable = lambda x: isinstance(x, Callable) + +try: + basestring +except NameError: + # Python 3.x + basestring = str + +_unspecified = object() + + + +class FFI(object): + r''' + The main top-level class that you instantiate once, or once per module. + + Example usage: + + ffi = FFI() + ffi.cdef(""" + int printf(const char *, ...); + """) + + C = ffi.dlopen(None) # standard library + -or- + C = ffi.verify() # use a C compiler: verify the decl above is right + + C.printf("hello, %s!\n", ffi.new("char[]", "world")) + ''' + + def __init__(self, backend=None): + """Create an FFI instance. The 'backend' argument is used to + select a non-default backend, mostly for tests. + """ + if backend is None: + # You need PyPy (>= 2.0 beta), or a CPython (>= 2.6) with + # _cffi_backend.so compiled. + import _cffi_backend as backend + from . import __version__ + if backend.__version__ != __version__: + # bad version! Try to be as explicit as possible. + if hasattr(backend, '__file__'): + # CPython + raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. When we import the top-level '_cffi_backend' extension module, we get version %s, located in %r. The two versions should be equal; check your installation." % ( + __version__, __file__, + backend.__version__, backend.__file__)) + else: + # PyPy + raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. This interpreter comes with a built-in '_cffi_backend' module, which is version %s. The two versions should be equal; check your installation." % ( + __version__, __file__, backend.__version__)) + # (If you insist you can also try to pass the option + # 'backend=backend_ctypes.CTypesBackend()', but don't + # rely on it! It's probably not going to work well.) + + from . import cparser + self._backend = backend + self._lock = allocate_lock() + self._parser = cparser.Parser() + self._cached_btypes = {} + self._parsed_types = types.ModuleType('parsed_types').__dict__ + self._new_types = types.ModuleType('new_types').__dict__ + self._function_caches = [] + self._libraries = [] + self._cdefsources = [] + self._included_ffis = [] + self._windows_unicode = None + self._init_once_cache = {} + self._cdef_version = None + self._embedding = None + self._typecache = model.get_typecache(backend) + if hasattr(backend, 'set_ffi'): + backend.set_ffi(self) + for name in list(backend.__dict__): + if name.startswith('RTLD_'): + setattr(self, name, getattr(backend, name)) + # + with self._lock: + self.BVoidP = self._get_cached_btype(model.voidp_type) + self.BCharA = self._get_cached_btype(model.char_array_type) + if isinstance(backend, types.ModuleType): + # _cffi_backend: attach these constants to the class + if not hasattr(FFI, 'NULL'): + FFI.NULL = self.cast(self.BVoidP, 0) + FFI.CData, FFI.CType = backend._get_types() + else: + # ctypes backend: attach these constants to the instance + self.NULL = self.cast(self.BVoidP, 0) + self.CData, self.CType = backend._get_types() + self.buffer = backend.buffer + + def cdef(self, csource, override=False, packed=False, pack=None): + """Parse the given C source. This registers all declared functions, + types, and global variables. The functions and global variables can + then be accessed via either 'ffi.dlopen()' or 'ffi.verify()'. + The types can be used in 'ffi.new()' and other functions. + If 'packed' is specified as True, all structs declared inside this + cdef are packed, i.e. laid out without any field alignment at all. + Alternatively, 'pack' can be a small integer, and requests for + alignment greater than that are ignored (pack=1 is equivalent to + packed=True). + """ + self._cdef(csource, override=override, packed=packed, pack=pack) + + def embedding_api(self, csource, packed=False, pack=None): + self._cdef(csource, packed=packed, pack=pack, dllexport=True) + if self._embedding is None: + self._embedding = '' + + def _cdef(self, csource, override=False, **options): + if not isinstance(csource, str): # unicode, on Python 2 + if not isinstance(csource, basestring): + raise TypeError("cdef() argument must be a string") + csource = csource.encode('ascii') + with self._lock: + self._cdef_version = object() + self._parser.parse(csource, override=override, **options) + self._cdefsources.append(csource) + if override: + for cache in self._function_caches: + cache.clear() + finishlist = self._parser._recomplete + if finishlist: + self._parser._recomplete = [] + for tp in finishlist: + tp.finish_backend_type(self, finishlist) + + def dlopen(self, name, flags=0): + """Load and return a dynamic library identified by 'name'. + The standard C library can be loaded by passing None. + Note that functions and types declared by 'ffi.cdef()' are not + linked to a particular library, just like C headers; in the + library we only look for the actual (untyped) symbols. + """ + if not (isinstance(name, basestring) or + name is None or + isinstance(name, self.CData)): + raise TypeError("dlopen(name): name must be a file name, None, " + "or an already-opened 'void *' handle") + with self._lock: + lib, function_cache = _make_ffi_library(self, name, flags) + self._function_caches.append(function_cache) + self._libraries.append(lib) + return lib + + def dlclose(self, lib): + """Close a library obtained with ffi.dlopen(). After this call, + access to functions or variables from the library will fail + (possibly with a segmentation fault). + """ + type(lib).__cffi_close__(lib) + + def _typeof_locked(self, cdecl): + # call me with the lock! + key = cdecl + if key in self._parsed_types: + return self._parsed_types[key] + # + if not isinstance(cdecl, str): # unicode, on Python 2 + cdecl = cdecl.encode('ascii') + # + type = self._parser.parse_type(cdecl) + really_a_function_type = type.is_raw_function + if really_a_function_type: + type = type.as_function_pointer() + btype = self._get_cached_btype(type) + result = btype, really_a_function_type + self._parsed_types[key] = result + return result + + def _typeof(self, cdecl, consider_function_as_funcptr=False): + # string -> ctype object + try: + result = self._parsed_types[cdecl] + except KeyError: + with self._lock: + result = self._typeof_locked(cdecl) + # + btype, really_a_function_type = result + if really_a_function_type and not consider_function_as_funcptr: + raise CDefError("the type %r is a function type, not a " + "pointer-to-function type" % (cdecl,)) + return btype + + def typeof(self, cdecl): + """Parse the C type given as a string and return the + corresponding object. + It can also be used on 'cdata' instance to get its C type. + """ + if isinstance(cdecl, basestring): + return self._typeof(cdecl) + if isinstance(cdecl, self.CData): + return self._backend.typeof(cdecl) + if isinstance(cdecl, types.BuiltinFunctionType): + res = _builtin_function_type(cdecl) + if res is not None: + return res + if (isinstance(cdecl, types.FunctionType) + and hasattr(cdecl, '_cffi_base_type')): + with self._lock: + return self._get_cached_btype(cdecl._cffi_base_type) + raise TypeError(type(cdecl)) + + def sizeof(self, cdecl): + """Return the size in bytes of the argument. It can be a + string naming a C type, or a 'cdata' instance. + """ + if isinstance(cdecl, basestring): + BType = self._typeof(cdecl) + return self._backend.sizeof(BType) + else: + return self._backend.sizeof(cdecl) + + def alignof(self, cdecl): + """Return the natural alignment size in bytes of the C type + given as a string. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.alignof(cdecl) + + def offsetof(self, cdecl, *fields_or_indexes): + """Return the offset of the named field inside the given + structure or array, which must be given as a C type name. + You can give several field names in case of nested structures. + You can also give numeric values which correspond to array + items, in case of an array type. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._typeoffsetof(cdecl, *fields_or_indexes)[1] + + def new(self, cdecl, init=None): + """Allocate an instance according to the specified C type and + return a pointer to it. The specified C type must be either a + pointer or an array: ``new('X *')`` allocates an X and returns + a pointer to it, whereas ``new('X[n]')`` allocates an array of + n X'es and returns an array referencing it (which works + mostly like a pointer, like in C). You can also use + ``new('X[]', n)`` to allocate an array of a non-constant + length n. + + The memory is initialized following the rules of declaring a + global variable in C: by default it is zero-initialized, but + an explicit initializer can be given which can be used to + fill all or part of the memory. + + When the returned object goes out of scope, the memory + is freed. In other words the returned object has + ownership of the value of type 'cdecl' that it points to. This + means that the raw data can be used as long as this object is + kept alive, but must not be used for a longer time. Be careful + about that when copying the pointer to the memory somewhere + else, e.g. into another structure. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.newp(cdecl, init) + + def new_allocator(self, alloc=None, free=None, + should_clear_after_alloc=True): + """Return a new allocator, i.e. a function that behaves like ffi.new() + but uses the provided low-level 'alloc' and 'free' functions. + + 'alloc' is called with the size as argument. If it returns NULL, a + MemoryError is raised. 'free' is called with the result of 'alloc' + as argument. Both can be either Python function or directly C + functions. If 'free' is None, then no free function is called. + If both 'alloc' and 'free' are None, the default is used. + + If 'should_clear_after_alloc' is set to False, then the memory + returned by 'alloc' is assumed to be already cleared (or you are + fine with garbage); otherwise CFFI will clear it. + """ + compiled_ffi = self._backend.FFI() + allocator = compiled_ffi.new_allocator(alloc, free, + should_clear_after_alloc) + def allocate(cdecl, init=None): + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return allocator(cdecl, init) + return allocate + + def cast(self, cdecl, source): + """Similar to a C cast: returns an instance of the named C + type initialized with the given 'source'. The source is + casted between integers or pointers of any type. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.cast(cdecl, source) + + def string(self, cdata, maxlen=-1): + """Return a Python string (or unicode string) from the 'cdata'. + If 'cdata' is a pointer or array of characters or bytes, returns + the null-terminated string. The returned string extends until + the first null character, or at most 'maxlen' characters. If + 'cdata' is an array then 'maxlen' defaults to its length. + + If 'cdata' is a pointer or array of wchar_t, returns a unicode + string following the same rules. + + If 'cdata' is a single character or byte or a wchar_t, returns + it as a string or unicode string. + + If 'cdata' is an enum, returns the value of the enumerator as a + string, or 'NUMBER' if the value is out of range. + """ + return self._backend.string(cdata, maxlen) + + def unpack(self, cdata, length): + """Unpack an array of C data of the given length, + returning a Python string/unicode/list. + + If 'cdata' is a pointer to 'char', returns a byte string. + It does not stop at the first null. This is equivalent to: + ffi.buffer(cdata, length)[:] + + If 'cdata' is a pointer to 'wchar_t', returns a unicode string. + 'length' is measured in wchar_t's; it is not the size in bytes. + + If 'cdata' is a pointer to anything else, returns a list of + 'length' items. This is a faster equivalent to: + [cdata[i] for i in range(length)] + """ + return self._backend.unpack(cdata, length) + + #def buffer(self, cdata, size=-1): + # """Return a read-write buffer object that references the raw C data + # pointed to by the given 'cdata'. The 'cdata' must be a pointer or + # an array. Can be passed to functions expecting a buffer, or directly + # manipulated with: + # + # buf[:] get a copy of it in a regular string, or + # buf[idx] as a single character + # buf[:] = ... + # buf[idx] = ... change the content + # """ + # note that 'buffer' is a type, set on this instance by __init__ + + def from_buffer(self, cdecl, python_buffer=_unspecified, + require_writable=False): + """Return a cdata of the given type pointing to the data of the + given Python object, which must support the buffer interface. + Note that this is not meant to be used on the built-in types + str or unicode (you can build 'char[]' arrays explicitly) + but only on objects containing large quantities of raw data + in some other format, like 'array.array' or numpy arrays. + + The first argument is optional and default to 'char[]'. + """ + if python_buffer is _unspecified: + cdecl, python_buffer = self.BCharA, cdecl + elif isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.from_buffer(cdecl, python_buffer, + require_writable) + + def memmove(self, dest, src, n): + """ffi.memmove(dest, src, n) copies n bytes of memory from src to dest. + + Like the C function memmove(), the memory areas may overlap; + apart from that it behaves like the C function memcpy(). + + 'src' can be any cdata ptr or array, or any Python buffer object. + 'dest' can be any cdata ptr or array, or a writable Python buffer + object. The size to copy, 'n', is always measured in bytes. + + Unlike other methods, this one supports all Python buffer including + byte strings and bytearrays---but it still does not support + non-contiguous buffers. + """ + return self._backend.memmove(dest, src, n) + + def callback(self, cdecl, python_callable=None, error=None, onerror=None): + """Return a callback object or a decorator making such a + callback object. 'cdecl' must name a C function pointer type. + The callback invokes the specified 'python_callable' (which may + be provided either directly or via a decorator). Important: the + callback object must be manually kept alive for as long as the + callback may be invoked from the C level. + """ + def callback_decorator_wrap(python_callable): + if not callable(python_callable): + raise TypeError("the 'python_callable' argument " + "is not callable") + return self._backend.callback(cdecl, python_callable, + error, onerror) + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl, consider_function_as_funcptr=True) + if python_callable is None: + return callback_decorator_wrap # decorator mode + else: + return callback_decorator_wrap(python_callable) # direct mode + + def getctype(self, cdecl, replace_with=''): + """Return a string giving the C type 'cdecl', which may be itself + a string or a object. If 'replace_with' is given, it gives + extra text to append (or insert for more complicated C types), like + a variable name, or '*' to get actually the C type 'pointer-to-cdecl'. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + replace_with = replace_with.strip() + if (replace_with.startswith('*') + and '&[' in self._backend.getcname(cdecl, '&')): + replace_with = '(%s)' % replace_with + elif replace_with and not replace_with[0] in '[(': + replace_with = ' ' + replace_with + return self._backend.getcname(cdecl, replace_with) + + def gc(self, cdata, destructor, size=0): + """Return a new cdata object that points to the same + data. Later, when this new cdata object is garbage-collected, + 'destructor(old_cdata_object)' will be called. + + The optional 'size' gives an estimate of the size, used to + trigger the garbage collection more eagerly. So far only used + on PyPy. It tells the GC that the returned object keeps alive + roughly 'size' bytes of external memory. + """ + return self._backend.gcp(cdata, destructor, size) + + def _get_cached_btype(self, type): + assert self._lock.acquire(False) is False + # call me with the lock! + try: + BType = self._cached_btypes[type] + except KeyError: + finishlist = [] + BType = type.get_cached_btype(self, finishlist) + for type in finishlist: + type.finish_backend_type(self, finishlist) + return BType + + def verify(self, source='', tmpdir=None, **kwargs): + """Verify that the current ffi signatures compile on this + machine, and return a dynamic library object. The dynamic + library can be used to call functions and access global + variables declared in this 'ffi'. The library is compiled + by the C compiler: it gives you C-level API compatibility + (including calling macros). This is unlike 'ffi.dlopen()', + which requires binary compatibility in the signatures. + """ + from .verifier import Verifier, _caller_dir_pycache + # + # If set_unicode(True) was called, insert the UNICODE and + # _UNICODE macro declarations + if self._windows_unicode: + self._apply_windows_unicode(kwargs) + # + # Set the tmpdir here, and not in Verifier.__init__: it picks + # up the caller's directory, which we want to be the caller of + # ffi.verify(), as opposed to the caller of Veritier(). + tmpdir = tmpdir or _caller_dir_pycache() + # + # Make a Verifier() and use it to load the library. + self.verifier = Verifier(self, source, tmpdir, **kwargs) + lib = self.verifier.load_library() + # + # Save the loaded library for keep-alive purposes, even + # if the caller doesn't keep it alive itself (it should). + self._libraries.append(lib) + return lib + + def _get_errno(self): + return self._backend.get_errno() + def _set_errno(self, errno): + self._backend.set_errno(errno) + errno = property(_get_errno, _set_errno, None, + "the value of 'errno' from/to the C calls") + + def getwinerror(self, code=-1): + return self._backend.getwinerror(code) + + def _pointer_to(self, ctype): + with self._lock: + return model.pointer_cache(self, ctype) + + def addressof(self, cdata, *fields_or_indexes): + """Return the address of a . + If 'fields_or_indexes' are given, returns the address of that + field or array item in the structure or array, recursively in + case of nested structures. + """ + try: + ctype = self._backend.typeof(cdata) + except TypeError: + if '__addressof__' in type(cdata).__dict__: + return type(cdata).__addressof__(cdata, *fields_or_indexes) + raise + if fields_or_indexes: + ctype, offset = self._typeoffsetof(ctype, *fields_or_indexes) + else: + if ctype.kind == "pointer": + raise TypeError("addressof(pointer)") + offset = 0 + ctypeptr = self._pointer_to(ctype) + return self._backend.rawaddressof(ctypeptr, cdata, offset) + + def _typeoffsetof(self, ctype, field_or_index, *fields_or_indexes): + ctype, offset = self._backend.typeoffsetof(ctype, field_or_index) + for field1 in fields_or_indexes: + ctype, offset1 = self._backend.typeoffsetof(ctype, field1, 1) + offset += offset1 + return ctype, offset + + def include(self, ffi_to_include): + """Includes the typedefs, structs, unions and enums defined + in another FFI instance. Usage is similar to a #include in C, + where a part of the program might include types defined in + another part for its own usage. Note that the include() + method has no effect on functions, constants and global + variables, which must anyway be accessed directly from the + lib object returned by the original FFI instance. + """ + if not isinstance(ffi_to_include, FFI): + raise TypeError("ffi.include() expects an argument that is also of" + " type cffi.FFI, not %r" % ( + type(ffi_to_include).__name__,)) + if ffi_to_include is self: + raise ValueError("self.include(self)") + with ffi_to_include._lock: + with self._lock: + self._parser.include(ffi_to_include._parser) + self._cdefsources.append('[') + self._cdefsources.extend(ffi_to_include._cdefsources) + self._cdefsources.append(']') + self._included_ffis.append(ffi_to_include) + + def new_handle(self, x): + return self._backend.newp_handle(self.BVoidP, x) + + def from_handle(self, x): + return self._backend.from_handle(x) + + def release(self, x): + self._backend.release(x) + + def set_unicode(self, enabled_flag): + """Windows: if 'enabled_flag' is True, enable the UNICODE and + _UNICODE defines in C, and declare the types like TCHAR and LPTCSTR + to be (pointers to) wchar_t. If 'enabled_flag' is False, + declare these types to be (pointers to) plain 8-bit characters. + This is mostly for backward compatibility; you usually want True. + """ + if self._windows_unicode is not None: + raise ValueError("set_unicode() can only be called once") + enabled_flag = bool(enabled_flag) + if enabled_flag: + self.cdef("typedef wchar_t TBYTE;" + "typedef wchar_t TCHAR;" + "typedef const wchar_t *LPCTSTR;" + "typedef const wchar_t *PCTSTR;" + "typedef wchar_t *LPTSTR;" + "typedef wchar_t *PTSTR;" + "typedef TBYTE *PTBYTE;" + "typedef TCHAR *PTCHAR;") + else: + self.cdef("typedef char TBYTE;" + "typedef char TCHAR;" + "typedef const char *LPCTSTR;" + "typedef const char *PCTSTR;" + "typedef char *LPTSTR;" + "typedef char *PTSTR;" + "typedef TBYTE *PTBYTE;" + "typedef TCHAR *PTCHAR;") + self._windows_unicode = enabled_flag + + def _apply_windows_unicode(self, kwds): + defmacros = kwds.get('define_macros', ()) + if not isinstance(defmacros, (list, tuple)): + raise TypeError("'define_macros' must be a list or tuple") + defmacros = list(defmacros) + [('UNICODE', '1'), + ('_UNICODE', '1')] + kwds['define_macros'] = defmacros + + def _apply_embedding_fix(self, kwds): + # must include an argument like "-lpython2.7" for the compiler + def ensure(key, value): + lst = kwds.setdefault(key, []) + if value not in lst: + lst.append(value) + # + if '__pypy__' in sys.builtin_module_names: + import os + if sys.platform == "win32": + # we need 'libpypy-c.lib'. Current distributions of + # pypy (>= 4.1) contain it as 'libs/python27.lib'. + pythonlib = "python{0[0]}{0[1]}".format(sys.version_info) + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'libs')) + else: + # we need 'libpypy-c.{so,dylib}', which should be by + # default located in 'sys.prefix/bin' for installed + # systems. + if sys.version_info < (3,): + pythonlib = "pypy-c" + else: + pythonlib = "pypy3-c" + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'bin')) + # On uninstalled pypy's, the libpypy-c is typically found in + # .../pypy/goal/. + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'pypy', 'goal')) + else: + if sys.platform == "win32": + template = "python%d%d" + if hasattr(sys, 'gettotalrefcount'): + template += '_d' + else: + try: + import sysconfig + except ImportError: # 2.6 + from cffi._shimmed_dist_utils import sysconfig + template = "python%d.%d" + if sysconfig.get_config_var('DEBUG_EXT'): + template += sysconfig.get_config_var('DEBUG_EXT') + pythonlib = (template % + (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) + if hasattr(sys, 'abiflags'): + pythonlib += sys.abiflags + ensure('libraries', pythonlib) + if sys.platform == "win32": + ensure('extra_link_args', '/MANIFEST') + + def set_source(self, module_name, source, source_extension='.c', **kwds): + import os + if hasattr(self, '_assigned_source'): + raise ValueError("set_source() cannot be called several times " + "per ffi object") + if not isinstance(module_name, basestring): + raise TypeError("'module_name' must be a string") + if os.sep in module_name or (os.altsep and os.altsep in module_name): + raise ValueError("'module_name' must not contain '/': use a dotted " + "name to make a 'package.module' location") + self._assigned_source = (str(module_name), source, + source_extension, kwds) + + def set_source_pkgconfig(self, module_name, pkgconfig_libs, source, + source_extension='.c', **kwds): + from . import pkgconfig + if not isinstance(pkgconfig_libs, list): + raise TypeError("the pkgconfig_libs argument must be a list " + "of package names") + kwds2 = pkgconfig.flags_from_pkgconfig(pkgconfig_libs) + pkgconfig.merge_flags(kwds, kwds2) + self.set_source(module_name, source, source_extension, **kwds) + + def distutils_extension(self, tmpdir='build', verbose=True): + from cffi._shimmed_dist_utils import mkpath + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + if hasattr(self, 'verifier'): # fallback, 'tmpdir' ignored + return self.verifier.get_extension() + raise ValueError("set_source() must be called before" + " distutils_extension()") + module_name, source, source_extension, kwds = self._assigned_source + if source is None: + raise TypeError("distutils_extension() is only for C extension " + "modules, not for dlopen()-style pure Python " + "modules") + mkpath(tmpdir) + ext, updated = recompile(self, module_name, + source, tmpdir=tmpdir, extradir=tmpdir, + source_extension=source_extension, + call_c_compiler=False, **kwds) + if verbose: + if updated: + sys.stderr.write("regenerated: %r\n" % (ext.sources[0],)) + else: + sys.stderr.write("not modified: %r\n" % (ext.sources[0],)) + return ext + + def emit_c_code(self, filename): + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before emit_c_code()") + module_name, source, source_extension, kwds = self._assigned_source + if source is None: + raise TypeError("emit_c_code() is only for C extension modules, " + "not for dlopen()-style pure Python modules") + recompile(self, module_name, source, + c_file=filename, call_c_compiler=False, + uses_ffiplatform=False, **kwds) + + def emit_python_code(self, filename): + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before emit_c_code()") + module_name, source, source_extension, kwds = self._assigned_source + if source is not None: + raise TypeError("emit_python_code() is only for dlopen()-style " + "pure Python modules, not for C extension modules") + recompile(self, module_name, source, + c_file=filename, call_c_compiler=False, + uses_ffiplatform=False, **kwds) + + def compile(self, tmpdir='.', verbose=0, target=None, debug=None): + """The 'target' argument gives the final file name of the + compiled DLL. Use '*' to force distutils' choice, suitable for + regular CPython C API modules. Use a file name ending in '.*' + to ask for the system's default extension for dynamic libraries + (.so/.dll/.dylib). + + The default is '*' when building a non-embedded C API extension, + and (module_name + '.*') when building an embedded library. + """ + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before compile()") + module_name, source, source_extension, kwds = self._assigned_source + return recompile(self, module_name, source, tmpdir=tmpdir, + target=target, source_extension=source_extension, + compiler_verbose=verbose, debug=debug, **kwds) + + def init_once(self, func, tag): + # Read _init_once_cache[tag], which is either (False, lock) if + # we're calling the function now in some thread, or (True, result). + # Don't call setdefault() in most cases, to avoid allocating and + # immediately freeing a lock; but still use setdefaut() to avoid + # races. + try: + x = self._init_once_cache[tag] + except KeyError: + x = self._init_once_cache.setdefault(tag, (False, allocate_lock())) + # Common case: we got (True, result), so we return the result. + if x[0]: + return x[1] + # Else, it's a lock. Acquire it to serialize the following tests. + with x[1]: + # Read again from _init_once_cache the current status. + x = self._init_once_cache[tag] + if x[0]: + return x[1] + # Call the function and store the result back. + result = func() + self._init_once_cache[tag] = (True, result) + return result + + def embedding_init_code(self, pysource): + if self._embedding: + raise ValueError("embedding_init_code() can only be called once") + # fix 'pysource' before it gets dumped into the C file: + # - remove empty lines at the beginning, so it starts at "line 1" + # - dedent, if all non-empty lines are indented + # - check for SyntaxErrors + import re + match = re.match(r'\s*\n', pysource) + if match: + pysource = pysource[match.end():] + lines = pysource.splitlines() or [''] + prefix = re.match(r'\s*', lines[0]).group() + for i in range(1, len(lines)): + line = lines[i] + if line.rstrip(): + while not line.startswith(prefix): + prefix = prefix[:-1] + i = len(prefix) + lines = [line[i:]+'\n' for line in lines] + pysource = ''.join(lines) + # + compile(pysource, "cffi_init", "exec") + # + self._embedding = pysource + + def def_extern(self, *args, **kwds): + raise ValueError("ffi.def_extern() is only available on API-mode FFI " + "objects") + + def list_types(self): + """Returns the user type names known to this FFI instance. + This returns a tuple containing three lists of names: + (typedef_names, names_of_structs, names_of_unions) + """ + typedefs = [] + structs = [] + unions = [] + for key in self._parser._declarations: + if key.startswith('typedef '): + typedefs.append(key[8:]) + elif key.startswith('struct '): + structs.append(key[7:]) + elif key.startswith('union '): + unions.append(key[6:]) + typedefs.sort() + structs.sort() + unions.sort() + return (typedefs, structs, unions) + + +def _load_backend_lib(backend, name, flags): + import os + if not isinstance(name, basestring): + if sys.platform != "win32" or name is not None: + return backend.load_library(name, flags) + name = "c" # Windows: load_library(None) fails, but this works + # on Python 2 (backward compatibility hack only) + first_error = None + if '.' in name or '/' in name or os.sep in name: + try: + return backend.load_library(name, flags) + except OSError as e: + first_error = e + import ctypes.util + path = ctypes.util.find_library(name) + if path is None: + if name == "c" and sys.platform == "win32" and sys.version_info >= (3,): + raise OSError("dlopen(None) cannot work on Windows for Python 3 " + "(see http://bugs.python.org/issue23606)") + msg = ("ctypes.util.find_library() did not manage " + "to locate a library called %r" % (name,)) + if first_error is not None: + msg = "%s. Additionally, %s" % (first_error, msg) + raise OSError(msg) + return backend.load_library(path, flags) + +def _make_ffi_library(ffi, libname, flags): + backend = ffi._backend + backendlib = _load_backend_lib(backend, libname, flags) + # + def accessor_function(name): + key = 'function ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + value = backendlib.load_function(BType, name) + library.__dict__[name] = value + # + def accessor_variable(name): + key = 'variable ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + read_variable = backendlib.read_variable + write_variable = backendlib.write_variable + setattr(FFILibrary, name, property( + lambda self: read_variable(BType, name), + lambda self, value: write_variable(BType, name, value))) + # + def addressof_var(name): + try: + return addr_variables[name] + except KeyError: + with ffi._lock: + if name not in addr_variables: + key = 'variable ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + if BType.kind != 'array': + BType = model.pointer_cache(ffi, BType) + p = backendlib.load_function(BType, name) + addr_variables[name] = p + return addr_variables[name] + # + def accessor_constant(name): + raise NotImplementedError("non-integer constant '%s' cannot be " + "accessed from a dlopen() library" % (name,)) + # + def accessor_int_constant(name): + library.__dict__[name] = ffi._parser._int_constants[name] + # + accessors = {} + accessors_version = [False] + addr_variables = {} + # + def update_accessors(): + if accessors_version[0] is ffi._cdef_version: + return + # + for key, (tp, _) in ffi._parser._declarations.items(): + if not isinstance(tp, model.EnumType): + tag, name = key.split(' ', 1) + if tag == 'function': + accessors[name] = accessor_function + elif tag == 'variable': + accessors[name] = accessor_variable + elif tag == 'constant': + accessors[name] = accessor_constant + else: + for i, enumname in enumerate(tp.enumerators): + def accessor_enum(name, tp=tp, i=i): + tp.check_not_partial() + library.__dict__[name] = tp.enumvalues[i] + accessors[enumname] = accessor_enum + for name in ffi._parser._int_constants: + accessors.setdefault(name, accessor_int_constant) + accessors_version[0] = ffi._cdef_version + # + def make_accessor(name): + with ffi._lock: + if name in library.__dict__ or name in FFILibrary.__dict__: + return # added by another thread while waiting for the lock + if name not in accessors: + update_accessors() + if name not in accessors: + raise AttributeError(name) + accessors[name](name) + # + class FFILibrary(object): + def __getattr__(self, name): + make_accessor(name) + return getattr(self, name) + def __setattr__(self, name, value): + try: + property = getattr(self.__class__, name) + except AttributeError: + make_accessor(name) + setattr(self, name, value) + else: + property.__set__(self, value) + def __dir__(self): + with ffi._lock: + update_accessors() + return accessors.keys() + def __addressof__(self, name): + if name in library.__dict__: + return library.__dict__[name] + if name in FFILibrary.__dict__: + return addressof_var(name) + make_accessor(name) + if name in library.__dict__: + return library.__dict__[name] + if name in FFILibrary.__dict__: + return addressof_var(name) + raise AttributeError("cffi library has no function or " + "global variable named '%s'" % (name,)) + def __cffi_close__(self): + backendlib.close_lib() + self.__dict__.clear() + # + if isinstance(libname, basestring): + try: + if not isinstance(libname, str): # unicode, on Python 2 + libname = libname.encode('utf-8') + FFILibrary.__name__ = 'FFILibrary_%s' % libname + except UnicodeError: + pass + library = FFILibrary() + return library, library.__dict__ + +def _builtin_function_type(func): + # a hack to make at least ffi.typeof(builtin_function) work, + # if the builtin function was obtained by 'vengine_cpy'. + import sys + try: + module = sys.modules[func.__module__] + ffi = module._cffi_original_ffi + types_of_builtin_funcs = module._cffi_types_of_builtin_funcs + tp = types_of_builtin_funcs[func] + except (KeyError, AttributeError, TypeError): + return None + else: + with ffi._lock: + return ffi._get_cached_btype(tp) diff --git a/.venv/lib/python3.9/site-packages/cffi/backend_ctypes.py b/.venv/lib/python3.9/site-packages/cffi/backend_ctypes.py new file mode 100644 index 0000000..e7956a7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/backend_ctypes.py @@ -0,0 +1,1121 @@ +import ctypes, ctypes.util, operator, sys +from . import model + +if sys.version_info < (3,): + bytechr = chr +else: + unicode = str + long = int + xrange = range + bytechr = lambda num: bytes([num]) + +class CTypesType(type): + pass + +class CTypesData(object): + __metaclass__ = CTypesType + __slots__ = ['__weakref__'] + __name__ = '' + + def __init__(self, *args): + raise TypeError("cannot instantiate %r" % (self.__class__,)) + + @classmethod + def _newp(cls, init): + raise TypeError("expected a pointer or array ctype, got '%s'" + % (cls._get_c_name(),)) + + @staticmethod + def _to_ctypes(value): + raise TypeError + + @classmethod + def _arg_to_ctypes(cls, *value): + try: + ctype = cls._ctype + except AttributeError: + raise TypeError("cannot create an instance of %r" % (cls,)) + if value: + res = cls._to_ctypes(*value) + if not isinstance(res, ctype): + res = cls._ctype(res) + else: + res = cls._ctype() + return res + + @classmethod + def _create_ctype_obj(cls, init): + if init is None: + return cls._arg_to_ctypes() + else: + return cls._arg_to_ctypes(init) + + @staticmethod + def _from_ctypes(ctypes_value): + raise TypeError + + @classmethod + def _get_c_name(cls, replace_with=''): + return cls._reftypename.replace(' &', replace_with) + + @classmethod + def _fix_class(cls): + cls.__name__ = 'CData<%s>' % (cls._get_c_name(),) + cls.__qualname__ = 'CData<%s>' % (cls._get_c_name(),) + cls.__module__ = 'ffi' + + def _get_own_repr(self): + raise NotImplementedError + + def _addr_repr(self, address): + if address == 0: + return 'NULL' + else: + if address < 0: + address += 1 << (8*ctypes.sizeof(ctypes.c_void_p)) + return '0x%x' % address + + def __repr__(self, c_name=None): + own = self._get_own_repr() + return '' % (c_name or self._get_c_name(), own) + + def _convert_to_address(self, BClass): + if BClass is None: + raise TypeError("cannot convert %r to an address" % ( + self._get_c_name(),)) + else: + raise TypeError("cannot convert %r to %r" % ( + self._get_c_name(), BClass._get_c_name())) + + @classmethod + def _get_size(cls): + return ctypes.sizeof(cls._ctype) + + def _get_size_of_instance(self): + return ctypes.sizeof(self._ctype) + + @classmethod + def _cast_from(cls, source): + raise TypeError("cannot cast to %r" % (cls._get_c_name(),)) + + def _cast_to_integer(self): + return self._convert_to_address(None) + + @classmethod + def _alignment(cls): + return ctypes.alignment(cls._ctype) + + def __iter__(self): + raise TypeError("cdata %r does not support iteration" % ( + self._get_c_name()),) + + def _make_cmp(name): + cmpfunc = getattr(operator, name) + def cmp(self, other): + v_is_ptr = not isinstance(self, CTypesGenericPrimitive) + w_is_ptr = (isinstance(other, CTypesData) and + not isinstance(other, CTypesGenericPrimitive)) + if v_is_ptr and w_is_ptr: + return cmpfunc(self._convert_to_address(None), + other._convert_to_address(None)) + elif v_is_ptr or w_is_ptr: + return NotImplemented + else: + if isinstance(self, CTypesGenericPrimitive): + self = self._value + if isinstance(other, CTypesGenericPrimitive): + other = other._value + return cmpfunc(self, other) + cmp.func_name = name + return cmp + + __eq__ = _make_cmp('__eq__') + __ne__ = _make_cmp('__ne__') + __lt__ = _make_cmp('__lt__') + __le__ = _make_cmp('__le__') + __gt__ = _make_cmp('__gt__') + __ge__ = _make_cmp('__ge__') + + def __hash__(self): + return hash(self._convert_to_address(None)) + + def _to_string(self, maxlen): + raise TypeError("string(): %r" % (self,)) + + +class CTypesGenericPrimitive(CTypesData): + __slots__ = [] + + def __hash__(self): + return hash(self._value) + + def _get_own_repr(self): + return repr(self._from_ctypes(self._value)) + + +class CTypesGenericArray(CTypesData): + __slots__ = [] + + @classmethod + def _newp(cls, init): + return cls(init) + + def __iter__(self): + for i in xrange(len(self)): + yield self[i] + + def _get_own_repr(self): + return self._addr_repr(ctypes.addressof(self._blob)) + + +class CTypesGenericPtr(CTypesData): + __slots__ = ['_address', '_as_ctype_ptr'] + _automatic_casts = False + kind = "pointer" + + @classmethod + def _newp(cls, init): + return cls(init) + + @classmethod + def _cast_from(cls, source): + if source is None: + address = 0 + elif isinstance(source, CTypesData): + address = source._cast_to_integer() + elif isinstance(source, (int, long)): + address = source + else: + raise TypeError("bad type for cast to %r: %r" % + (cls, type(source).__name__)) + return cls._new_pointer_at(address) + + @classmethod + def _new_pointer_at(cls, address): + self = cls.__new__(cls) + self._address = address + self._as_ctype_ptr = ctypes.cast(address, cls._ctype) + return self + + def _get_own_repr(self): + try: + return self._addr_repr(self._address) + except AttributeError: + return '???' + + def _cast_to_integer(self): + return self._address + + def __nonzero__(self): + return bool(self._address) + __bool__ = __nonzero__ + + @classmethod + def _to_ctypes(cls, value): + if not isinstance(value, CTypesData): + raise TypeError("unexpected %s object" % type(value).__name__) + address = value._convert_to_address(cls) + return ctypes.cast(address, cls._ctype) + + @classmethod + def _from_ctypes(cls, ctypes_ptr): + address = ctypes.cast(ctypes_ptr, ctypes.c_void_p).value or 0 + return cls._new_pointer_at(address) + + @classmethod + def _initialize(cls, ctypes_ptr, value): + if value: + ctypes_ptr.contents = cls._to_ctypes(value).contents + + def _convert_to_address(self, BClass): + if (BClass in (self.__class__, None) or BClass._automatic_casts + or self._automatic_casts): + return self._address + else: + return CTypesData._convert_to_address(self, BClass) + + +class CTypesBaseStructOrUnion(CTypesData): + __slots__ = ['_blob'] + + @classmethod + def _create_ctype_obj(cls, init): + # may be overridden + raise TypeError("cannot instantiate opaque type %s" % (cls,)) + + def _get_own_repr(self): + return self._addr_repr(ctypes.addressof(self._blob)) + + @classmethod + def _offsetof(cls, fieldname): + return getattr(cls._ctype, fieldname).offset + + def _convert_to_address(self, BClass): + if getattr(BClass, '_BItem', None) is self.__class__: + return ctypes.addressof(self._blob) + else: + return CTypesData._convert_to_address(self, BClass) + + @classmethod + def _from_ctypes(cls, ctypes_struct_or_union): + self = cls.__new__(cls) + self._blob = ctypes_struct_or_union + return self + + @classmethod + def _to_ctypes(cls, value): + return value._blob + + def __repr__(self, c_name=None): + return CTypesData.__repr__(self, c_name or self._get_c_name(' &')) + + +class CTypesBackend(object): + + PRIMITIVE_TYPES = { + 'char': ctypes.c_char, + 'short': ctypes.c_short, + 'int': ctypes.c_int, + 'long': ctypes.c_long, + 'long long': ctypes.c_longlong, + 'signed char': ctypes.c_byte, + 'unsigned char': ctypes.c_ubyte, + 'unsigned short': ctypes.c_ushort, + 'unsigned int': ctypes.c_uint, + 'unsigned long': ctypes.c_ulong, + 'unsigned long long': ctypes.c_ulonglong, + 'float': ctypes.c_float, + 'double': ctypes.c_double, + '_Bool': ctypes.c_bool, + } + + for _name in ['unsigned long long', 'unsigned long', + 'unsigned int', 'unsigned short', 'unsigned char']: + _size = ctypes.sizeof(PRIMITIVE_TYPES[_name]) + PRIMITIVE_TYPES['uint%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_void_p): + PRIMITIVE_TYPES['uintptr_t'] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_size_t): + PRIMITIVE_TYPES['size_t'] = PRIMITIVE_TYPES[_name] + + for _name in ['long long', 'long', 'int', 'short', 'signed char']: + _size = ctypes.sizeof(PRIMITIVE_TYPES[_name]) + PRIMITIVE_TYPES['int%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_void_p): + PRIMITIVE_TYPES['intptr_t'] = PRIMITIVE_TYPES[_name] + PRIMITIVE_TYPES['ptrdiff_t'] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_size_t): + PRIMITIVE_TYPES['ssize_t'] = PRIMITIVE_TYPES[_name] + + + def __init__(self): + self.RTLD_LAZY = 0 # not supported anyway by ctypes + self.RTLD_NOW = 0 + self.RTLD_GLOBAL = ctypes.RTLD_GLOBAL + self.RTLD_LOCAL = ctypes.RTLD_LOCAL + + def set_ffi(self, ffi): + self.ffi = ffi + + def _get_types(self): + return CTypesData, CTypesType + + def load_library(self, path, flags=0): + cdll = ctypes.CDLL(path, flags) + return CTypesLibrary(self, cdll) + + def new_void_type(self): + class CTypesVoid(CTypesData): + __slots__ = [] + _reftypename = 'void &' + @staticmethod + def _from_ctypes(novalue): + return None + @staticmethod + def _to_ctypes(novalue): + if novalue is not None: + raise TypeError("None expected, got %s object" % + (type(novalue).__name__,)) + return None + CTypesVoid._fix_class() + return CTypesVoid + + def new_primitive_type(self, name): + if name == 'wchar_t': + raise NotImplementedError(name) + ctype = self.PRIMITIVE_TYPES[name] + if name == 'char': + kind = 'char' + elif name in ('float', 'double'): + kind = 'float' + else: + if name in ('signed char', 'unsigned char'): + kind = 'byte' + elif name == '_Bool': + kind = 'bool' + else: + kind = 'int' + is_signed = (ctype(-1).value == -1) + # + def _cast_source_to_int(source): + if isinstance(source, (int, long, float)): + source = int(source) + elif isinstance(source, CTypesData): + source = source._cast_to_integer() + elif isinstance(source, bytes): + source = ord(source) + elif source is None: + source = 0 + else: + raise TypeError("bad type for cast to %r: %r" % + (CTypesPrimitive, type(source).__name__)) + return source + # + kind1 = kind + class CTypesPrimitive(CTypesGenericPrimitive): + __slots__ = ['_value'] + _ctype = ctype + _reftypename = '%s &' % name + kind = kind1 + + def __init__(self, value): + self._value = value + + @staticmethod + def _create_ctype_obj(init): + if init is None: + return ctype() + return ctype(CTypesPrimitive._to_ctypes(init)) + + if kind == 'int' or kind == 'byte': + @classmethod + def _cast_from(cls, source): + source = _cast_source_to_int(source) + source = ctype(source).value # cast within range + return cls(source) + def __int__(self): + return self._value + + if kind == 'bool': + @classmethod + def _cast_from(cls, source): + if not isinstance(source, (int, long, float)): + source = _cast_source_to_int(source) + return cls(bool(source)) + def __int__(self): + return int(self._value) + + if kind == 'char': + @classmethod + def _cast_from(cls, source): + source = _cast_source_to_int(source) + source = bytechr(source & 0xFF) + return cls(source) + def __int__(self): + return ord(self._value) + + if kind == 'float': + @classmethod + def _cast_from(cls, source): + if isinstance(source, float): + pass + elif isinstance(source, CTypesGenericPrimitive): + if hasattr(source, '__float__'): + source = float(source) + else: + source = int(source) + else: + source = _cast_source_to_int(source) + source = ctype(source).value # fix precision + return cls(source) + def __int__(self): + return int(self._value) + def __float__(self): + return self._value + + _cast_to_integer = __int__ + + if kind == 'int' or kind == 'byte' or kind == 'bool': + @staticmethod + def _to_ctypes(x): + if not isinstance(x, (int, long)): + if isinstance(x, CTypesData): + x = int(x) + else: + raise TypeError("integer expected, got %s" % + type(x).__name__) + if ctype(x).value != x: + if not is_signed and x < 0: + raise OverflowError("%s: negative integer" % name) + else: + raise OverflowError("%s: integer out of bounds" + % name) + return x + + if kind == 'char': + @staticmethod + def _to_ctypes(x): + if isinstance(x, bytes) and len(x) == 1: + return x + if isinstance(x, CTypesPrimitive): # > + return x._value + raise TypeError("character expected, got %s" % + type(x).__name__) + def __nonzero__(self): + return ord(self._value) != 0 + else: + def __nonzero__(self): + return self._value != 0 + __bool__ = __nonzero__ + + if kind == 'float': + @staticmethod + def _to_ctypes(x): + if not isinstance(x, (int, long, float, CTypesData)): + raise TypeError("float expected, got %s" % + type(x).__name__) + return ctype(x).value + + @staticmethod + def _from_ctypes(value): + return getattr(value, 'value', value) + + @staticmethod + def _initialize(blob, init): + blob.value = CTypesPrimitive._to_ctypes(init) + + if kind == 'char': + def _to_string(self, maxlen): + return self._value + if kind == 'byte': + def _to_string(self, maxlen): + return chr(self._value & 0xff) + # + CTypesPrimitive._fix_class() + return CTypesPrimitive + + def new_pointer_type(self, BItem): + getbtype = self.ffi._get_cached_btype + if BItem is getbtype(model.PrimitiveType('char')): + kind = 'charp' + elif BItem in (getbtype(model.PrimitiveType('signed char')), + getbtype(model.PrimitiveType('unsigned char'))): + kind = 'bytep' + elif BItem is getbtype(model.void_type): + kind = 'voidp' + else: + kind = 'generic' + # + class CTypesPtr(CTypesGenericPtr): + __slots__ = ['_own'] + if kind == 'charp': + __slots__ += ['__as_strbuf'] + _BItem = BItem + if hasattr(BItem, '_ctype'): + _ctype = ctypes.POINTER(BItem._ctype) + _bitem_size = ctypes.sizeof(BItem._ctype) + else: + _ctype = ctypes.c_void_p + if issubclass(BItem, CTypesGenericArray): + _reftypename = BItem._get_c_name('(* &)') + else: + _reftypename = BItem._get_c_name(' * &') + + def __init__(self, init): + ctypeobj = BItem._create_ctype_obj(init) + if kind == 'charp': + self.__as_strbuf = ctypes.create_string_buffer( + ctypeobj.value + b'\x00') + self._as_ctype_ptr = ctypes.cast( + self.__as_strbuf, self._ctype) + else: + self._as_ctype_ptr = ctypes.pointer(ctypeobj) + self._address = ctypes.cast(self._as_ctype_ptr, + ctypes.c_void_p).value + self._own = True + + def __add__(self, other): + if isinstance(other, (int, long)): + return self._new_pointer_at(self._address + + other * self._bitem_size) + else: + return NotImplemented + + def __sub__(self, other): + if isinstance(other, (int, long)): + return self._new_pointer_at(self._address - + other * self._bitem_size) + elif type(self) is type(other): + return (self._address - other._address) // self._bitem_size + else: + return NotImplemented + + def __getitem__(self, index): + if getattr(self, '_own', False) and index != 0: + raise IndexError + return BItem._from_ctypes(self._as_ctype_ptr[index]) + + def __setitem__(self, index, value): + self._as_ctype_ptr[index] = BItem._to_ctypes(value) + + if kind == 'charp' or kind == 'voidp': + @classmethod + def _arg_to_ctypes(cls, *value): + if value and isinstance(value[0], bytes): + return ctypes.c_char_p(value[0]) + else: + return super(CTypesPtr, cls)._arg_to_ctypes(*value) + + if kind == 'charp' or kind == 'bytep': + def _to_string(self, maxlen): + if maxlen < 0: + maxlen = sys.maxsize + p = ctypes.cast(self._as_ctype_ptr, + ctypes.POINTER(ctypes.c_char)) + n = 0 + while n < maxlen and p[n] != b'\x00': + n += 1 + return b''.join([p[i] for i in range(n)]) + + def _get_own_repr(self): + if getattr(self, '_own', False): + return 'owning %d bytes' % ( + ctypes.sizeof(self._as_ctype_ptr.contents),) + return super(CTypesPtr, self)._get_own_repr() + # + if (BItem is self.ffi._get_cached_btype(model.void_type) or + BItem is self.ffi._get_cached_btype(model.PrimitiveType('char'))): + CTypesPtr._automatic_casts = True + # + CTypesPtr._fix_class() + return CTypesPtr + + def new_array_type(self, CTypesPtr, length): + if length is None: + brackets = ' &[]' + else: + brackets = ' &[%d]' % length + BItem = CTypesPtr._BItem + getbtype = self.ffi._get_cached_btype + if BItem is getbtype(model.PrimitiveType('char')): + kind = 'char' + elif BItem in (getbtype(model.PrimitiveType('signed char')), + getbtype(model.PrimitiveType('unsigned char'))): + kind = 'byte' + else: + kind = 'generic' + # + class CTypesArray(CTypesGenericArray): + __slots__ = ['_blob', '_own'] + if length is not None: + _ctype = BItem._ctype * length + else: + __slots__.append('_ctype') + _reftypename = BItem._get_c_name(brackets) + _declared_length = length + _CTPtr = CTypesPtr + + def __init__(self, init): + if length is None: + if isinstance(init, (int, long)): + len1 = init + init = None + elif kind == 'char' and isinstance(init, bytes): + len1 = len(init) + 1 # extra null + else: + init = tuple(init) + len1 = len(init) + self._ctype = BItem._ctype * len1 + self._blob = self._ctype() + self._own = True + if init is not None: + self._initialize(self._blob, init) + + @staticmethod + def _initialize(blob, init): + if isinstance(init, bytes): + init = [init[i:i+1] for i in range(len(init))] + else: + if isinstance(init, CTypesGenericArray): + if (len(init) != len(blob) or + not isinstance(init, CTypesArray)): + raise TypeError("length/type mismatch: %s" % (init,)) + init = tuple(init) + if len(init) > len(blob): + raise IndexError("too many initializers") + addr = ctypes.cast(blob, ctypes.c_void_p).value + PTR = ctypes.POINTER(BItem._ctype) + itemsize = ctypes.sizeof(BItem._ctype) + for i, value in enumerate(init): + p = ctypes.cast(addr + i * itemsize, PTR) + BItem._initialize(p.contents, value) + + def __len__(self): + return len(self._blob) + + def __getitem__(self, index): + if not (0 <= index < len(self._blob)): + raise IndexError + return BItem._from_ctypes(self._blob[index]) + + def __setitem__(self, index, value): + if not (0 <= index < len(self._blob)): + raise IndexError + self._blob[index] = BItem._to_ctypes(value) + + if kind == 'char' or kind == 'byte': + def _to_string(self, maxlen): + if maxlen < 0: + maxlen = len(self._blob) + p = ctypes.cast(self._blob, + ctypes.POINTER(ctypes.c_char)) + n = 0 + while n < maxlen and p[n] != b'\x00': + n += 1 + return b''.join([p[i] for i in range(n)]) + + def _get_own_repr(self): + if getattr(self, '_own', False): + return 'owning %d bytes' % (ctypes.sizeof(self._blob),) + return super(CTypesArray, self)._get_own_repr() + + def _convert_to_address(self, BClass): + if BClass in (CTypesPtr, None) or BClass._automatic_casts: + return ctypes.addressof(self._blob) + else: + return CTypesData._convert_to_address(self, BClass) + + @staticmethod + def _from_ctypes(ctypes_array): + self = CTypesArray.__new__(CTypesArray) + self._blob = ctypes_array + return self + + @staticmethod + def _arg_to_ctypes(value): + return CTypesPtr._arg_to_ctypes(value) + + def __add__(self, other): + if isinstance(other, (int, long)): + return CTypesPtr._new_pointer_at( + ctypes.addressof(self._blob) + + other * ctypes.sizeof(BItem._ctype)) + else: + return NotImplemented + + @classmethod + def _cast_from(cls, source): + raise NotImplementedError("casting to %r" % ( + cls._get_c_name(),)) + # + CTypesArray._fix_class() + return CTypesArray + + def _new_struct_or_union(self, kind, name, base_ctypes_class): + # + class struct_or_union(base_ctypes_class): + pass + struct_or_union.__name__ = '%s_%s' % (kind, name) + kind1 = kind + # + class CTypesStructOrUnion(CTypesBaseStructOrUnion): + __slots__ = ['_blob'] + _ctype = struct_or_union + _reftypename = '%s &' % (name,) + _kind = kind = kind1 + # + CTypesStructOrUnion._fix_class() + return CTypesStructOrUnion + + def new_struct_type(self, name): + return self._new_struct_or_union('struct', name, ctypes.Structure) + + def new_union_type(self, name): + return self._new_struct_or_union('union', name, ctypes.Union) + + def complete_struct_or_union(self, CTypesStructOrUnion, fields, tp, + totalsize=-1, totalalignment=-1, sflags=0, + pack=0): + if totalsize >= 0 or totalalignment >= 0: + raise NotImplementedError("the ctypes backend of CFFI does not support " + "structures completed by verify(); please " + "compile and install the _cffi_backend module.") + struct_or_union = CTypesStructOrUnion._ctype + fnames = [fname for (fname, BField, bitsize) in fields] + btypes = [BField for (fname, BField, bitsize) in fields] + bitfields = [bitsize for (fname, BField, bitsize) in fields] + # + bfield_types = {} + cfields = [] + for (fname, BField, bitsize) in fields: + if bitsize < 0: + cfields.append((fname, BField._ctype)) + bfield_types[fname] = BField + else: + cfields.append((fname, BField._ctype, bitsize)) + bfield_types[fname] = Ellipsis + if sflags & 8: + struct_or_union._pack_ = 1 + elif pack: + struct_or_union._pack_ = pack + struct_or_union._fields_ = cfields + CTypesStructOrUnion._bfield_types = bfield_types + # + @staticmethod + def _create_ctype_obj(init): + result = struct_or_union() + if init is not None: + initialize(result, init) + return result + CTypesStructOrUnion._create_ctype_obj = _create_ctype_obj + # + def initialize(blob, init): + if is_union: + if len(init) > 1: + raise ValueError("union initializer: %d items given, but " + "only one supported (use a dict if needed)" + % (len(init),)) + if not isinstance(init, dict): + if isinstance(init, (bytes, unicode)): + raise TypeError("union initializer: got a str") + init = tuple(init) + if len(init) > len(fnames): + raise ValueError("too many values for %s initializer" % + CTypesStructOrUnion._get_c_name()) + init = dict(zip(fnames, init)) + addr = ctypes.addressof(blob) + for fname, value in init.items(): + BField, bitsize = name2fieldtype[fname] + assert bitsize < 0, \ + "not implemented: initializer with bit fields" + offset = CTypesStructOrUnion._offsetof(fname) + PTR = ctypes.POINTER(BField._ctype) + p = ctypes.cast(addr + offset, PTR) + BField._initialize(p.contents, value) + is_union = CTypesStructOrUnion._kind == 'union' + name2fieldtype = dict(zip(fnames, zip(btypes, bitfields))) + # + for fname, BField, bitsize in fields: + if fname == '': + raise NotImplementedError("nested anonymous structs/unions") + if hasattr(CTypesStructOrUnion, fname): + raise ValueError("the field name %r conflicts in " + "the ctypes backend" % fname) + if bitsize < 0: + def getter(self, fname=fname, BField=BField, + offset=CTypesStructOrUnion._offsetof(fname), + PTR=ctypes.POINTER(BField._ctype)): + addr = ctypes.addressof(self._blob) + p = ctypes.cast(addr + offset, PTR) + return BField._from_ctypes(p.contents) + def setter(self, value, fname=fname, BField=BField): + setattr(self._blob, fname, BField._to_ctypes(value)) + # + if issubclass(BField, CTypesGenericArray): + setter = None + if BField._declared_length == 0: + def getter(self, fname=fname, BFieldPtr=BField._CTPtr, + offset=CTypesStructOrUnion._offsetof(fname), + PTR=ctypes.POINTER(BField._ctype)): + addr = ctypes.addressof(self._blob) + p = ctypes.cast(addr + offset, PTR) + return BFieldPtr._from_ctypes(p) + # + else: + def getter(self, fname=fname, BField=BField): + return BField._from_ctypes(getattr(self._blob, fname)) + def setter(self, value, fname=fname, BField=BField): + # xxx obscure workaround + value = BField._to_ctypes(value) + oldvalue = getattr(self._blob, fname) + setattr(self._blob, fname, value) + if value != getattr(self._blob, fname): + setattr(self._blob, fname, oldvalue) + raise OverflowError("value too large for bitfield") + setattr(CTypesStructOrUnion, fname, property(getter, setter)) + # + CTypesPtr = self.ffi._get_cached_btype(model.PointerType(tp)) + for fname in fnames: + if hasattr(CTypesPtr, fname): + raise ValueError("the field name %r conflicts in " + "the ctypes backend" % fname) + def getter(self, fname=fname): + return getattr(self[0], fname) + def setter(self, value, fname=fname): + setattr(self[0], fname, value) + setattr(CTypesPtr, fname, property(getter, setter)) + + def new_function_type(self, BArgs, BResult, has_varargs): + nameargs = [BArg._get_c_name() for BArg in BArgs] + if has_varargs: + nameargs.append('...') + nameargs = ', '.join(nameargs) + # + class CTypesFunctionPtr(CTypesGenericPtr): + __slots__ = ['_own_callback', '_name'] + _ctype = ctypes.CFUNCTYPE(getattr(BResult, '_ctype', None), + *[BArg._ctype for BArg in BArgs], + use_errno=True) + _reftypename = BResult._get_c_name('(* &)(%s)' % (nameargs,)) + + def __init__(self, init, error=None): + # create a callback to the Python callable init() + import traceback + assert not has_varargs, "varargs not supported for callbacks" + if getattr(BResult, '_ctype', None) is not None: + error = BResult._from_ctypes( + BResult._create_ctype_obj(error)) + else: + error = None + def callback(*args): + args2 = [] + for arg, BArg in zip(args, BArgs): + args2.append(BArg._from_ctypes(arg)) + try: + res2 = init(*args2) + res2 = BResult._to_ctypes(res2) + except: + traceback.print_exc() + res2 = error + if issubclass(BResult, CTypesGenericPtr): + if res2: + res2 = ctypes.cast(res2, ctypes.c_void_p).value + # .value: http://bugs.python.org/issue1574593 + else: + res2 = None + #print repr(res2) + return res2 + if issubclass(BResult, CTypesGenericPtr): + # The only pointers callbacks can return are void*s: + # http://bugs.python.org/issue5710 + callback_ctype = ctypes.CFUNCTYPE( + ctypes.c_void_p, + *[BArg._ctype for BArg in BArgs], + use_errno=True) + else: + callback_ctype = CTypesFunctionPtr._ctype + self._as_ctype_ptr = callback_ctype(callback) + self._address = ctypes.cast(self._as_ctype_ptr, + ctypes.c_void_p).value + self._own_callback = init + + @staticmethod + def _initialize(ctypes_ptr, value): + if value: + raise NotImplementedError("ctypes backend: not supported: " + "initializers for function pointers") + + def __repr__(self): + c_name = getattr(self, '_name', None) + if c_name: + i = self._reftypename.index('(* &)') + if self._reftypename[i-1] not in ' )*': + c_name = ' ' + c_name + c_name = self._reftypename.replace('(* &)', c_name) + return CTypesData.__repr__(self, c_name) + + def _get_own_repr(self): + if getattr(self, '_own_callback', None) is not None: + return 'calling %r' % (self._own_callback,) + return super(CTypesFunctionPtr, self)._get_own_repr() + + def __call__(self, *args): + if has_varargs: + assert len(args) >= len(BArgs) + extraargs = args[len(BArgs):] + args = args[:len(BArgs)] + else: + assert len(args) == len(BArgs) + ctypes_args = [] + for arg, BArg in zip(args, BArgs): + ctypes_args.append(BArg._arg_to_ctypes(arg)) + if has_varargs: + for i, arg in enumerate(extraargs): + if arg is None: + ctypes_args.append(ctypes.c_void_p(0)) # NULL + continue + if not isinstance(arg, CTypesData): + raise TypeError( + "argument %d passed in the variadic part " + "needs to be a cdata object (got %s)" % + (1 + len(BArgs) + i, type(arg).__name__)) + ctypes_args.append(arg._arg_to_ctypes(arg)) + result = self._as_ctype_ptr(*ctypes_args) + return BResult._from_ctypes(result) + # + CTypesFunctionPtr._fix_class() + return CTypesFunctionPtr + + def new_enum_type(self, name, enumerators, enumvalues, CTypesInt): + assert isinstance(name, str) + reverse_mapping = dict(zip(reversed(enumvalues), + reversed(enumerators))) + # + class CTypesEnum(CTypesInt): + __slots__ = [] + _reftypename = '%s &' % name + + def _get_own_repr(self): + value = self._value + try: + return '%d: %s' % (value, reverse_mapping[value]) + except KeyError: + return str(value) + + def _to_string(self, maxlen): + value = self._value + try: + return reverse_mapping[value] + except KeyError: + return str(value) + # + CTypesEnum._fix_class() + return CTypesEnum + + def get_errno(self): + return ctypes.get_errno() + + def set_errno(self, value): + ctypes.set_errno(value) + + def string(self, b, maxlen=-1): + return b._to_string(maxlen) + + def buffer(self, bptr, size=-1): + raise NotImplementedError("buffer() with ctypes backend") + + def sizeof(self, cdata_or_BType): + if isinstance(cdata_or_BType, CTypesData): + return cdata_or_BType._get_size_of_instance() + else: + assert issubclass(cdata_or_BType, CTypesData) + return cdata_or_BType._get_size() + + def alignof(self, BType): + assert issubclass(BType, CTypesData) + return BType._alignment() + + def newp(self, BType, source): + if not issubclass(BType, CTypesData): + raise TypeError + return BType._newp(source) + + def cast(self, BType, source): + return BType._cast_from(source) + + def callback(self, BType, source, error, onerror): + assert onerror is None # XXX not implemented + return BType(source, error) + + _weakref_cache_ref = None + + def gcp(self, cdata, destructor, size=0): + if self._weakref_cache_ref is None: + import weakref + class MyRef(weakref.ref): + def __eq__(self, other): + myref = self() + return self is other or ( + myref is not None and myref is other()) + def __ne__(self, other): + return not (self == other) + def __hash__(self): + try: + return self._hash + except AttributeError: + self._hash = hash(self()) + return self._hash + self._weakref_cache_ref = {}, MyRef + weak_cache, MyRef = self._weakref_cache_ref + + if destructor is None: + try: + del weak_cache[MyRef(cdata)] + except KeyError: + raise TypeError("Can remove destructor only on a object " + "previously returned by ffi.gc()") + return None + + def remove(k): + cdata, destructor = weak_cache.pop(k, (None, None)) + if destructor is not None: + destructor(cdata) + + new_cdata = self.cast(self.typeof(cdata), cdata) + assert new_cdata is not cdata + weak_cache[MyRef(new_cdata, remove)] = (cdata, destructor) + return new_cdata + + typeof = type + + def getcname(self, BType, replace_with): + return BType._get_c_name(replace_with) + + def typeoffsetof(self, BType, fieldname, num=0): + if isinstance(fieldname, str): + if num == 0 and issubclass(BType, CTypesGenericPtr): + BType = BType._BItem + if not issubclass(BType, CTypesBaseStructOrUnion): + raise TypeError("expected a struct or union ctype") + BField = BType._bfield_types[fieldname] + if BField is Ellipsis: + raise TypeError("not supported for bitfields") + return (BField, BType._offsetof(fieldname)) + elif isinstance(fieldname, (int, long)): + if issubclass(BType, CTypesGenericArray): + BType = BType._CTPtr + if not issubclass(BType, CTypesGenericPtr): + raise TypeError("expected an array or ptr ctype") + BItem = BType._BItem + offset = BItem._get_size() * fieldname + if offset > sys.maxsize: + raise OverflowError + return (BItem, offset) + else: + raise TypeError(type(fieldname)) + + def rawaddressof(self, BTypePtr, cdata, offset=None): + if isinstance(cdata, CTypesBaseStructOrUnion): + ptr = ctypes.pointer(type(cdata)._to_ctypes(cdata)) + elif isinstance(cdata, CTypesGenericPtr): + if offset is None or not issubclass(type(cdata)._BItem, + CTypesBaseStructOrUnion): + raise TypeError("unexpected cdata type") + ptr = type(cdata)._to_ctypes(cdata) + elif isinstance(cdata, CTypesGenericArray): + ptr = type(cdata)._to_ctypes(cdata) + else: + raise TypeError("expected a ") + if offset: + ptr = ctypes.cast( + ctypes.c_void_p( + ctypes.cast(ptr, ctypes.c_void_p).value + offset), + type(ptr)) + return BTypePtr._from_ctypes(ptr) + + +class CTypesLibrary(object): + + def __init__(self, backend, cdll): + self.backend = backend + self.cdll = cdll + + def load_function(self, BType, name): + c_func = getattr(self.cdll, name) + funcobj = BType._from_ctypes(c_func) + funcobj._name = name + return funcobj + + def read_variable(self, BType, name): + try: + ctypes_obj = BType._ctype.in_dll(self.cdll, name) + except AttributeError as e: + raise NotImplementedError(e) + return BType._from_ctypes(ctypes_obj) + + def write_variable(self, BType, name, value): + new_ctypes_obj = BType._to_ctypes(value) + ctypes_obj = BType._ctype.in_dll(self.cdll, name) + ctypes.memmove(ctypes.addressof(ctypes_obj), + ctypes.addressof(new_ctypes_obj), + ctypes.sizeof(BType._ctype)) diff --git a/.venv/lib/python3.9/site-packages/cffi/cffi_opcode.py b/.venv/lib/python3.9/site-packages/cffi/cffi_opcode.py new file mode 100644 index 0000000..6421df6 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/cffi_opcode.py @@ -0,0 +1,187 @@ +from .error import VerificationError + +class CffiOp(object): + def __init__(self, op, arg): + self.op = op + self.arg = arg + + def as_c_expr(self): + if self.op is None: + assert isinstance(self.arg, str) + return '(_cffi_opcode_t)(%s)' % (self.arg,) + classname = CLASS_NAME[self.op] + return '_CFFI_OP(_CFFI_OP_%s, %s)' % (classname, self.arg) + + def as_python_bytes(self): + if self.op is None and self.arg.isdigit(): + value = int(self.arg) # non-negative: '-' not in self.arg + if value >= 2**31: + raise OverflowError("cannot emit %r: limited to 2**31-1" + % (self.arg,)) + return format_four_bytes(value) + if isinstance(self.arg, str): + raise VerificationError("cannot emit to Python: %r" % (self.arg,)) + return format_four_bytes((self.arg << 8) | self.op) + + def __str__(self): + classname = CLASS_NAME.get(self.op, self.op) + return '(%s %s)' % (classname, self.arg) + +def format_four_bytes(num): + return '\\x%02X\\x%02X\\x%02X\\x%02X' % ( + (num >> 24) & 0xFF, + (num >> 16) & 0xFF, + (num >> 8) & 0xFF, + (num ) & 0xFF) + +OP_PRIMITIVE = 1 +OP_POINTER = 3 +OP_ARRAY = 5 +OP_OPEN_ARRAY = 7 +OP_STRUCT_UNION = 9 +OP_ENUM = 11 +OP_FUNCTION = 13 +OP_FUNCTION_END = 15 +OP_NOOP = 17 +OP_BITFIELD = 19 +OP_TYPENAME = 21 +OP_CPYTHON_BLTN_V = 23 # varargs +OP_CPYTHON_BLTN_N = 25 # noargs +OP_CPYTHON_BLTN_O = 27 # O (i.e. a single arg) +OP_CONSTANT = 29 +OP_CONSTANT_INT = 31 +OP_GLOBAL_VAR = 33 +OP_DLOPEN_FUNC = 35 +OP_DLOPEN_CONST = 37 +OP_GLOBAL_VAR_F = 39 +OP_EXTERN_PYTHON = 41 + +PRIM_VOID = 0 +PRIM_BOOL = 1 +PRIM_CHAR = 2 +PRIM_SCHAR = 3 +PRIM_UCHAR = 4 +PRIM_SHORT = 5 +PRIM_USHORT = 6 +PRIM_INT = 7 +PRIM_UINT = 8 +PRIM_LONG = 9 +PRIM_ULONG = 10 +PRIM_LONGLONG = 11 +PRIM_ULONGLONG = 12 +PRIM_FLOAT = 13 +PRIM_DOUBLE = 14 +PRIM_LONGDOUBLE = 15 + +PRIM_WCHAR = 16 +PRIM_INT8 = 17 +PRIM_UINT8 = 18 +PRIM_INT16 = 19 +PRIM_UINT16 = 20 +PRIM_INT32 = 21 +PRIM_UINT32 = 22 +PRIM_INT64 = 23 +PRIM_UINT64 = 24 +PRIM_INTPTR = 25 +PRIM_UINTPTR = 26 +PRIM_PTRDIFF = 27 +PRIM_SIZE = 28 +PRIM_SSIZE = 29 +PRIM_INT_LEAST8 = 30 +PRIM_UINT_LEAST8 = 31 +PRIM_INT_LEAST16 = 32 +PRIM_UINT_LEAST16 = 33 +PRIM_INT_LEAST32 = 34 +PRIM_UINT_LEAST32 = 35 +PRIM_INT_LEAST64 = 36 +PRIM_UINT_LEAST64 = 37 +PRIM_INT_FAST8 = 38 +PRIM_UINT_FAST8 = 39 +PRIM_INT_FAST16 = 40 +PRIM_UINT_FAST16 = 41 +PRIM_INT_FAST32 = 42 +PRIM_UINT_FAST32 = 43 +PRIM_INT_FAST64 = 44 +PRIM_UINT_FAST64 = 45 +PRIM_INTMAX = 46 +PRIM_UINTMAX = 47 +PRIM_FLOATCOMPLEX = 48 +PRIM_DOUBLECOMPLEX = 49 +PRIM_CHAR16 = 50 +PRIM_CHAR32 = 51 + +_NUM_PRIM = 52 +_UNKNOWN_PRIM = -1 +_UNKNOWN_FLOAT_PRIM = -2 +_UNKNOWN_LONG_DOUBLE = -3 + +_IO_FILE_STRUCT = -1 + +PRIMITIVE_TO_INDEX = { + 'char': PRIM_CHAR, + 'short': PRIM_SHORT, + 'int': PRIM_INT, + 'long': PRIM_LONG, + 'long long': PRIM_LONGLONG, + 'signed char': PRIM_SCHAR, + 'unsigned char': PRIM_UCHAR, + 'unsigned short': PRIM_USHORT, + 'unsigned int': PRIM_UINT, + 'unsigned long': PRIM_ULONG, + 'unsigned long long': PRIM_ULONGLONG, + 'float': PRIM_FLOAT, + 'double': PRIM_DOUBLE, + 'long double': PRIM_LONGDOUBLE, + '_cffi_float_complex_t': PRIM_FLOATCOMPLEX, + '_cffi_double_complex_t': PRIM_DOUBLECOMPLEX, + '_Bool': PRIM_BOOL, + 'wchar_t': PRIM_WCHAR, + 'char16_t': PRIM_CHAR16, + 'char32_t': PRIM_CHAR32, + 'int8_t': PRIM_INT8, + 'uint8_t': PRIM_UINT8, + 'int16_t': PRIM_INT16, + 'uint16_t': PRIM_UINT16, + 'int32_t': PRIM_INT32, + 'uint32_t': PRIM_UINT32, + 'int64_t': PRIM_INT64, + 'uint64_t': PRIM_UINT64, + 'intptr_t': PRIM_INTPTR, + 'uintptr_t': PRIM_UINTPTR, + 'ptrdiff_t': PRIM_PTRDIFF, + 'size_t': PRIM_SIZE, + 'ssize_t': PRIM_SSIZE, + 'int_least8_t': PRIM_INT_LEAST8, + 'uint_least8_t': PRIM_UINT_LEAST8, + 'int_least16_t': PRIM_INT_LEAST16, + 'uint_least16_t': PRIM_UINT_LEAST16, + 'int_least32_t': PRIM_INT_LEAST32, + 'uint_least32_t': PRIM_UINT_LEAST32, + 'int_least64_t': PRIM_INT_LEAST64, + 'uint_least64_t': PRIM_UINT_LEAST64, + 'int_fast8_t': PRIM_INT_FAST8, + 'uint_fast8_t': PRIM_UINT_FAST8, + 'int_fast16_t': PRIM_INT_FAST16, + 'uint_fast16_t': PRIM_UINT_FAST16, + 'int_fast32_t': PRIM_INT_FAST32, + 'uint_fast32_t': PRIM_UINT_FAST32, + 'int_fast64_t': PRIM_INT_FAST64, + 'uint_fast64_t': PRIM_UINT_FAST64, + 'intmax_t': PRIM_INTMAX, + 'uintmax_t': PRIM_UINTMAX, + } + +F_UNION = 0x01 +F_CHECK_FIELDS = 0x02 +F_PACKED = 0x04 +F_EXTERNAL = 0x08 +F_OPAQUE = 0x10 + +G_FLAGS = dict([('_CFFI_' + _key, globals()[_key]) + for _key in ['F_UNION', 'F_CHECK_FIELDS', 'F_PACKED', + 'F_EXTERNAL', 'F_OPAQUE']]) + +CLASS_NAME = {} +for _name, _value in list(globals().items()): + if _name.startswith('OP_') and isinstance(_value, int): + CLASS_NAME[_value] = _name[3:] diff --git a/.venv/lib/python3.9/site-packages/cffi/commontypes.py b/.venv/lib/python3.9/site-packages/cffi/commontypes.py new file mode 100644 index 0000000..d4dae35 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/commontypes.py @@ -0,0 +1,82 @@ +import sys +from . import model +from .error import FFIError + + +COMMON_TYPES = {} + +try: + # fetch "bool" and all simple Windows types + from _cffi_backend import _get_common_types + _get_common_types(COMMON_TYPES) +except ImportError: + pass + +COMMON_TYPES['FILE'] = model.unknown_type('FILE', '_IO_FILE') +COMMON_TYPES['bool'] = '_Bool' # in case we got ImportError above +COMMON_TYPES['float _Complex'] = '_cffi_float_complex_t' +COMMON_TYPES['double _Complex'] = '_cffi_double_complex_t' + +for _type in model.PrimitiveType.ALL_PRIMITIVE_TYPES: + if _type.endswith('_t'): + COMMON_TYPES[_type] = _type +del _type + +_CACHE = {} + +def resolve_common_type(parser, commontype): + try: + return _CACHE[commontype] + except KeyError: + cdecl = COMMON_TYPES.get(commontype, commontype) + if not isinstance(cdecl, str): + result, quals = cdecl, 0 # cdecl is already a BaseType + elif cdecl in model.PrimitiveType.ALL_PRIMITIVE_TYPES: + result, quals = model.PrimitiveType(cdecl), 0 + elif cdecl == 'set-unicode-needed': + raise FFIError("The Windows type %r is only available after " + "you call ffi.set_unicode()" % (commontype,)) + else: + if commontype == cdecl: + raise FFIError( + "Unsupported type: %r. Please look at " + "http://cffi.readthedocs.io/en/latest/cdef.html#ffi-cdef-limitations " + "and file an issue if you think this type should really " + "be supported." % (commontype,)) + result, quals = parser.parse_type_and_quals(cdecl) # recursive + + assert isinstance(result, model.BaseTypeByIdentity) + _CACHE[commontype] = result, quals + return result, quals + + +# ____________________________________________________________ +# extra types for Windows (most of them are in commontypes.c) + + +def win_common_types(): + return { + "UNICODE_STRING": model.StructType( + "_UNICODE_STRING", + ["Length", + "MaximumLength", + "Buffer"], + [model.PrimitiveType("unsigned short"), + model.PrimitiveType("unsigned short"), + model.PointerType(model.PrimitiveType("wchar_t"))], + [-1, -1, -1]), + "PUNICODE_STRING": "UNICODE_STRING *", + "PCUNICODE_STRING": "const UNICODE_STRING *", + + "TBYTE": "set-unicode-needed", + "TCHAR": "set-unicode-needed", + "LPCTSTR": "set-unicode-needed", + "PCTSTR": "set-unicode-needed", + "LPTSTR": "set-unicode-needed", + "PTSTR": "set-unicode-needed", + "PTBYTE": "set-unicode-needed", + "PTCHAR": "set-unicode-needed", + } + +if sys.platform == 'win32': + COMMON_TYPES.update(win_common_types()) diff --git a/.venv/lib/python3.9/site-packages/cffi/cparser.py b/.venv/lib/python3.9/site-packages/cffi/cparser.py new file mode 100644 index 0000000..dd590d8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/cparser.py @@ -0,0 +1,1015 @@ +from . import model +from .commontypes import COMMON_TYPES, resolve_common_type +from .error import FFIError, CDefError +try: + from . import _pycparser as pycparser +except ImportError: + import pycparser +import weakref, re, sys + +try: + if sys.version_info < (3,): + import thread as _thread + else: + import _thread + lock = _thread.allocate_lock() +except ImportError: + lock = None + +def _workaround_for_static_import_finders(): + # Issue #392: packaging tools like cx_Freeze can not find these + # because pycparser uses exec dynamic import. This is an obscure + # workaround. This function is never called. + import pycparser.yacctab + import pycparser.lextab + +CDEF_SOURCE_STRING = "" +_r_comment = re.compile(r"/\*.*?\*/|//([^\n\\]|\\.)*?$", + re.DOTALL | re.MULTILINE) +_r_define = re.compile(r"^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)" + r"\b((?:[^\n\\]|\\.)*?)$", + re.DOTALL | re.MULTILINE) +_r_line_directive = re.compile(r"^[ \t]*#[ \t]*(?:line|\d+)\b.*$", re.MULTILINE) +_r_partial_enum = re.compile(r"=\s*\.\.\.\s*[,}]|\.\.\.\s*\}") +_r_enum_dotdotdot = re.compile(r"__dotdotdot\d+__$") +_r_partial_array = re.compile(r"\[\s*\.\.\.\s*\]") +_r_words = re.compile(r"\w+|\S") +_parser_cache = None +_r_int_literal = re.compile(r"-?0?x?[0-9a-f]+[lu]*$", re.IGNORECASE) +_r_stdcall1 = re.compile(r"\b(__stdcall|WINAPI)\b") +_r_stdcall2 = re.compile(r"[(]\s*(__stdcall|WINAPI)\b") +_r_cdecl = re.compile(r"\b__cdecl\b") +_r_extern_python = re.compile(r'\bextern\s*"' + r'(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.') +_r_star_const_space = re.compile( # matches "* const " + r"[*]\s*((const|volatile|restrict)\b\s*)+") +_r_int_dotdotdot = re.compile(r"(\b(int|long|short|signed|unsigned|char)\s*)+" + r"\.\.\.") +_r_float_dotdotdot = re.compile(r"\b(double|float)\s*\.\.\.") + +def _get_parser(): + global _parser_cache + if _parser_cache is None: + _parser_cache = pycparser.CParser() + return _parser_cache + +def _workaround_for_old_pycparser(csource): + # Workaround for a pycparser issue (fixed between pycparser 2.10 and + # 2.14): "char*const***" gives us a wrong syntax tree, the same as + # for "char***(*const)". This means we can't tell the difference + # afterwards. But "char(*const(***))" gives us the right syntax + # tree. The issue only occurs if there are several stars in + # sequence with no parenthesis in between, just possibly qualifiers. + # Attempt to fix it by adding some parentheses in the source: each + # time we see "* const" or "* const *", we add an opening + # parenthesis before each star---the hard part is figuring out where + # to close them. + parts = [] + while True: + match = _r_star_const_space.search(csource) + if not match: + break + #print repr(''.join(parts)+csource), '=>', + parts.append(csource[:match.start()]) + parts.append('('); closing = ')' + parts.append(match.group()) # e.g. "* const " + endpos = match.end() + if csource.startswith('*', endpos): + parts.append('('); closing += ')' + level = 0 + i = endpos + while i < len(csource): + c = csource[i] + if c == '(': + level += 1 + elif c == ')': + if level == 0: + break + level -= 1 + elif c in ',;=': + if level == 0: + break + i += 1 + csource = csource[endpos:i] + closing + csource[i:] + #print repr(''.join(parts)+csource) + parts.append(csource) + return ''.join(parts) + +def _preprocess_extern_python(csource): + # input: `extern "Python" int foo(int);` or + # `extern "Python" { int foo(int); }` + # output: + # void __cffi_extern_python_start; + # int foo(int); + # void __cffi_extern_python_stop; + # + # input: `extern "Python+C" int foo(int);` + # output: + # void __cffi_extern_python_plus_c_start; + # int foo(int); + # void __cffi_extern_python_stop; + parts = [] + while True: + match = _r_extern_python.search(csource) + if not match: + break + endpos = match.end() - 1 + #print + #print ''.join(parts)+csource + #print '=>' + parts.append(csource[:match.start()]) + if 'C' in match.group(1): + parts.append('void __cffi_extern_python_plus_c_start; ') + else: + parts.append('void __cffi_extern_python_start; ') + if csource[endpos] == '{': + # grouping variant + closing = csource.find('}', endpos) + if closing < 0: + raise CDefError("'extern \"Python\" {': no '}' found") + if csource.find('{', endpos + 1, closing) >= 0: + raise NotImplementedError("cannot use { } inside a block " + "'extern \"Python\" { ... }'") + parts.append(csource[endpos+1:closing]) + csource = csource[closing+1:] + else: + # non-grouping variant + semicolon = csource.find(';', endpos) + if semicolon < 0: + raise CDefError("'extern \"Python\": no ';' found") + parts.append(csource[endpos:semicolon+1]) + csource = csource[semicolon+1:] + parts.append(' void __cffi_extern_python_stop;') + #print ''.join(parts)+csource + #print + parts.append(csource) + return ''.join(parts) + +def _warn_for_string_literal(csource): + if '"' not in csource: + return + for line in csource.splitlines(): + if '"' in line and not line.lstrip().startswith('#'): + import warnings + warnings.warn("String literal found in cdef() or type source. " + "String literals are ignored here, but you should " + "remove them anyway because some character sequences " + "confuse pre-parsing.") + break + +def _warn_for_non_extern_non_static_global_variable(decl): + if not decl.storage: + import warnings + warnings.warn("Global variable '%s' in cdef(): for consistency " + "with C it should have a storage class specifier " + "(usually 'extern')" % (decl.name,)) + +def _remove_line_directives(csource): + # _r_line_directive matches whole lines, without the final \n, if they + # start with '#line' with some spacing allowed, or '#NUMBER'. This + # function stores them away and replaces them with exactly the string + # '#line@N', where N is the index in the list 'line_directives'. + line_directives = [] + def replace(m): + i = len(line_directives) + line_directives.append(m.group()) + return '#line@%d' % i + csource = _r_line_directive.sub(replace, csource) + return csource, line_directives + +def _put_back_line_directives(csource, line_directives): + def replace(m): + s = m.group() + if not s.startswith('#line@'): + raise AssertionError("unexpected #line directive " + "(should have been processed and removed") + return line_directives[int(s[6:])] + return _r_line_directive.sub(replace, csource) + +def _preprocess(csource): + # First, remove the lines of the form '#line N "filename"' because + # the "filename" part could confuse the rest + csource, line_directives = _remove_line_directives(csource) + # Remove comments. NOTE: this only work because the cdef() section + # should not contain any string literals (except in line directives)! + def replace_keeping_newlines(m): + return ' ' + m.group().count('\n') * '\n' + csource = _r_comment.sub(replace_keeping_newlines, csource) + # Remove the "#define FOO x" lines + macros = {} + for match in _r_define.finditer(csource): + macroname, macrovalue = match.groups() + macrovalue = macrovalue.replace('\\\n', '').strip() + macros[macroname] = macrovalue + csource = _r_define.sub('', csource) + # + if pycparser.__version__ < '2.14': + csource = _workaround_for_old_pycparser(csource) + # + # BIG HACK: replace WINAPI or __stdcall with "volatile const". + # It doesn't make sense for the return type of a function to be + # "volatile volatile const", so we abuse it to detect __stdcall... + # Hack number 2 is that "int(volatile *fptr)();" is not valid C + # syntax, so we place the "volatile" before the opening parenthesis. + csource = _r_stdcall2.sub(' volatile volatile const(', csource) + csource = _r_stdcall1.sub(' volatile volatile const ', csource) + csource = _r_cdecl.sub(' ', csource) + # + # Replace `extern "Python"` with start/end markers + csource = _preprocess_extern_python(csource) + # + # Now there should not be any string literal left; warn if we get one + _warn_for_string_literal(csource) + # + # Replace "[...]" with "[__dotdotdotarray__]" + csource = _r_partial_array.sub('[__dotdotdotarray__]', csource) + # + # Replace "...}" with "__dotdotdotNUM__}". This construction should + # occur only at the end of enums; at the end of structs we have "...;}" + # and at the end of vararg functions "...);". Also replace "=...[,}]" + # with ",__dotdotdotNUM__[,}]": this occurs in the enums too, when + # giving an unknown value. + matches = list(_r_partial_enum.finditer(csource)) + for number, match in enumerate(reversed(matches)): + p = match.start() + if csource[p] == '=': + p2 = csource.find('...', p, match.end()) + assert p2 > p + csource = '%s,__dotdotdot%d__ %s' % (csource[:p], number, + csource[p2+3:]) + else: + assert csource[p:p+3] == '...' + csource = '%s __dotdotdot%d__ %s' % (csource[:p], number, + csource[p+3:]) + # Replace "int ..." or "unsigned long int..." with "__dotdotdotint__" + csource = _r_int_dotdotdot.sub(' __dotdotdotint__ ', csource) + # Replace "float ..." or "double..." with "__dotdotdotfloat__" + csource = _r_float_dotdotdot.sub(' __dotdotdotfloat__ ', csource) + # Replace all remaining "..." with the same name, "__dotdotdot__", + # which is declared with a typedef for the purpose of C parsing. + csource = csource.replace('...', ' __dotdotdot__ ') + # Finally, put back the line directives + csource = _put_back_line_directives(csource, line_directives) + return csource, macros + +def _common_type_names(csource): + # Look in the source for what looks like usages of types from the + # list of common types. A "usage" is approximated here as the + # appearance of the word, minus a "definition" of the type, which + # is the last word in a "typedef" statement. Approximative only + # but should be fine for all the common types. + look_for_words = set(COMMON_TYPES) + look_for_words.add(';') + look_for_words.add(',') + look_for_words.add('(') + look_for_words.add(')') + look_for_words.add('typedef') + words_used = set() + is_typedef = False + paren = 0 + previous_word = '' + for word in _r_words.findall(csource): + if word in look_for_words: + if word == ';': + if is_typedef: + words_used.discard(previous_word) + look_for_words.discard(previous_word) + is_typedef = False + elif word == 'typedef': + is_typedef = True + paren = 0 + elif word == '(': + paren += 1 + elif word == ')': + paren -= 1 + elif word == ',': + if is_typedef and paren == 0: + words_used.discard(previous_word) + look_for_words.discard(previous_word) + else: # word in COMMON_TYPES + words_used.add(word) + previous_word = word + return words_used + + +class Parser(object): + + def __init__(self): + self._declarations = {} + self._included_declarations = set() + self._anonymous_counter = 0 + self._structnode2type = weakref.WeakKeyDictionary() + self._options = {} + self._int_constants = {} + self._recomplete = [] + self._uses_new_feature = None + + def _parse(self, csource): + csource, macros = _preprocess(csource) + # XXX: for more efficiency we would need to poke into the + # internals of CParser... the following registers the + # typedefs, because their presence or absence influences the + # parsing itself (but what they are typedef'ed to plays no role) + ctn = _common_type_names(csource) + typenames = [] + for name in sorted(self._declarations): + if name.startswith('typedef '): + name = name[8:] + typenames.append(name) + ctn.discard(name) + typenames += sorted(ctn) + # + csourcelines = [] + csourcelines.append('# 1 ""') + for typename in typenames: + csourcelines.append('typedef int %s;' % typename) + csourcelines.append('typedef int __dotdotdotint__, __dotdotdotfloat__,' + ' __dotdotdot__;') + # this forces pycparser to consider the following in the file + # called from line 1 + csourcelines.append('# 1 "%s"' % (CDEF_SOURCE_STRING,)) + csourcelines.append(csource) + csourcelines.append('') # see test_missing_newline_bug + fullcsource = '\n'.join(csourcelines) + if lock is not None: + lock.acquire() # pycparser is not thread-safe... + try: + ast = _get_parser().parse(fullcsource) + except pycparser.c_parser.ParseError as e: + self.convert_pycparser_error(e, csource) + finally: + if lock is not None: + lock.release() + # csource will be used to find buggy source text + return ast, macros, csource + + def _convert_pycparser_error(self, e, csource): + # xxx look for ":NUM:" at the start of str(e) + # and interpret that as a line number. This will not work if + # the user gives explicit ``# NUM "FILE"`` directives. + line = None + msg = str(e) + match = re.match(r"%s:(\d+):" % (CDEF_SOURCE_STRING,), msg) + if match: + linenum = int(match.group(1), 10) + csourcelines = csource.splitlines() + if 1 <= linenum <= len(csourcelines): + line = csourcelines[linenum-1] + return line + + def convert_pycparser_error(self, e, csource): + line = self._convert_pycparser_error(e, csource) + + msg = str(e) + if line: + msg = 'cannot parse "%s"\n%s' % (line.strip(), msg) + else: + msg = 'parse error\n%s' % (msg,) + raise CDefError(msg) + + def parse(self, csource, override=False, packed=False, pack=None, + dllexport=False): + if packed: + if packed != True: + raise ValueError("'packed' should be False or True; use " + "'pack' to give another value") + if pack: + raise ValueError("cannot give both 'pack' and 'packed'") + pack = 1 + elif pack: + if pack & (pack - 1): + raise ValueError("'pack' must be a power of two, not %r" % + (pack,)) + else: + pack = 0 + prev_options = self._options + try: + self._options = {'override': override, + 'packed': pack, + 'dllexport': dllexport} + self._internal_parse(csource) + finally: + self._options = prev_options + + def _internal_parse(self, csource): + ast, macros, csource = self._parse(csource) + # add the macros + self._process_macros(macros) + # find the first "__dotdotdot__" and use that as a separator + # between the repeated typedefs and the real csource + iterator = iter(ast.ext) + for decl in iterator: + if decl.name == '__dotdotdot__': + break + else: + assert 0 + current_decl = None + # + try: + self._inside_extern_python = '__cffi_extern_python_stop' + for decl in iterator: + current_decl = decl + if isinstance(decl, pycparser.c_ast.Decl): + self._parse_decl(decl) + elif isinstance(decl, pycparser.c_ast.Typedef): + if not decl.name: + raise CDefError("typedef does not declare any name", + decl) + quals = 0 + if (isinstance(decl.type.type, pycparser.c_ast.IdentifierType) and + decl.type.type.names[-1].startswith('__dotdotdot')): + realtype = self._get_unknown_type(decl) + elif (isinstance(decl.type, pycparser.c_ast.PtrDecl) and + isinstance(decl.type.type, pycparser.c_ast.TypeDecl) and + isinstance(decl.type.type.type, + pycparser.c_ast.IdentifierType) and + decl.type.type.type.names[-1].startswith('__dotdotdot')): + realtype = self._get_unknown_ptr_type(decl) + else: + realtype, quals = self._get_type_and_quals( + decl.type, name=decl.name, partial_length_ok=True, + typedef_example="*(%s *)0" % (decl.name,)) + self._declare('typedef ' + decl.name, realtype, quals=quals) + elif decl.__class__.__name__ == 'Pragma': + # skip pragma, only in pycparser 2.15 + import warnings + warnings.warn( + "#pragma in cdef() are entirely ignored. " + "They should be removed for now, otherwise your " + "code might behave differently in a future version " + "of CFFI if #pragma support gets added. Note that " + "'#pragma pack' needs to be replaced with the " + "'packed' keyword argument to cdef().") + else: + raise CDefError("unexpected <%s>: this construct is valid " + "C but not valid in cdef()" % + decl.__class__.__name__, decl) + except CDefError as e: + if len(e.args) == 1: + e.args = e.args + (current_decl,) + raise + except FFIError as e: + msg = self._convert_pycparser_error(e, csource) + if msg: + e.args = (e.args[0] + "\n *** Err: %s" % msg,) + raise + + def _add_constants(self, key, val): + if key in self._int_constants: + if self._int_constants[key] == val: + return # ignore identical double declarations + raise FFIError( + "multiple declarations of constant: %s" % (key,)) + self._int_constants[key] = val + + def _add_integer_constant(self, name, int_str): + int_str = int_str.lower().rstrip("ul") + neg = int_str.startswith('-') + if neg: + int_str = int_str[1:] + # "010" is not valid oct in py3 + if (int_str.startswith("0") and int_str != '0' + and not int_str.startswith("0x")): + int_str = "0o" + int_str[1:] + pyvalue = int(int_str, 0) + if neg: + pyvalue = -pyvalue + self._add_constants(name, pyvalue) + self._declare('macro ' + name, pyvalue) + + def _process_macros(self, macros): + for key, value in macros.items(): + value = value.strip() + if _r_int_literal.match(value): + self._add_integer_constant(key, value) + elif value == '...': + self._declare('macro ' + key, value) + else: + raise CDefError( + 'only supports one of the following syntax:\n' + ' #define %s ... (literally dot-dot-dot)\n' + ' #define %s NUMBER (with NUMBER an integer' + ' constant, decimal/hex/octal)\n' + 'got:\n' + ' #define %s %s' + % (key, key, key, value)) + + def _declare_function(self, tp, quals, decl): + tp = self._get_type_pointer(tp, quals) + if self._options.get('dllexport'): + tag = 'dllexport_python ' + elif self._inside_extern_python == '__cffi_extern_python_start': + tag = 'extern_python ' + elif self._inside_extern_python == '__cffi_extern_python_plus_c_start': + tag = 'extern_python_plus_c ' + else: + tag = 'function ' + self._declare(tag + decl.name, tp) + + def _parse_decl(self, decl): + node = decl.type + if isinstance(node, pycparser.c_ast.FuncDecl): + tp, quals = self._get_type_and_quals(node, name=decl.name) + assert isinstance(tp, model.RawFunctionType) + self._declare_function(tp, quals, decl) + else: + if isinstance(node, pycparser.c_ast.Struct): + self._get_struct_union_enum_type('struct', node) + elif isinstance(node, pycparser.c_ast.Union): + self._get_struct_union_enum_type('union', node) + elif isinstance(node, pycparser.c_ast.Enum): + self._get_struct_union_enum_type('enum', node) + elif not decl.name: + raise CDefError("construct does not declare any variable", + decl) + # + if decl.name: + tp, quals = self._get_type_and_quals(node, + partial_length_ok=True) + if tp.is_raw_function: + self._declare_function(tp, quals, decl) + elif (tp.is_integer_type() and + hasattr(decl, 'init') and + hasattr(decl.init, 'value') and + _r_int_literal.match(decl.init.value)): + self._add_integer_constant(decl.name, decl.init.value) + elif (tp.is_integer_type() and + isinstance(decl.init, pycparser.c_ast.UnaryOp) and + decl.init.op == '-' and + hasattr(decl.init.expr, 'value') and + _r_int_literal.match(decl.init.expr.value)): + self._add_integer_constant(decl.name, + '-' + decl.init.expr.value) + elif (tp is model.void_type and + decl.name.startswith('__cffi_extern_python_')): + # hack: `extern "Python"` in the C source is replaced + # with "void __cffi_extern_python_start;" and + # "void __cffi_extern_python_stop;" + self._inside_extern_python = decl.name + else: + if self._inside_extern_python !='__cffi_extern_python_stop': + raise CDefError( + "cannot declare constants or " + "variables with 'extern \"Python\"'") + if (quals & model.Q_CONST) and not tp.is_array_type: + self._declare('constant ' + decl.name, tp, quals=quals) + else: + _warn_for_non_extern_non_static_global_variable(decl) + self._declare('variable ' + decl.name, tp, quals=quals) + + def parse_type(self, cdecl): + return self.parse_type_and_quals(cdecl)[0] + + def parse_type_and_quals(self, cdecl): + ast, macros = self._parse('void __dummy(\n%s\n);' % cdecl)[:2] + assert not macros + exprnode = ast.ext[-1].type.args.params[0] + if isinstance(exprnode, pycparser.c_ast.ID): + raise CDefError("unknown identifier '%s'" % (exprnode.name,)) + return self._get_type_and_quals(exprnode.type) + + def _declare(self, name, obj, included=False, quals=0): + if name in self._declarations: + prevobj, prevquals = self._declarations[name] + if prevobj is obj and prevquals == quals: + return + if not self._options.get('override'): + raise FFIError( + "multiple declarations of %s (for interactive usage, " + "try cdef(xx, override=True))" % (name,)) + assert '__dotdotdot__' not in name.split() + self._declarations[name] = (obj, quals) + if included: + self._included_declarations.add(obj) + + def _extract_quals(self, type): + quals = 0 + if isinstance(type, (pycparser.c_ast.TypeDecl, + pycparser.c_ast.PtrDecl)): + if 'const' in type.quals: + quals |= model.Q_CONST + if 'volatile' in type.quals: + quals |= model.Q_VOLATILE + if 'restrict' in type.quals: + quals |= model.Q_RESTRICT + return quals + + def _get_type_pointer(self, type, quals, declname=None): + if isinstance(type, model.RawFunctionType): + return type.as_function_pointer() + if (isinstance(type, model.StructOrUnionOrEnum) and + type.name.startswith('$') and type.name[1:].isdigit() and + type.forcename is None and declname is not None): + return model.NamedPointerType(type, declname, quals) + return model.PointerType(type, quals) + + def _get_type_and_quals(self, typenode, name=None, partial_length_ok=False, + typedef_example=None): + # first, dereference typedefs, if we have it already parsed, we're good + if (isinstance(typenode, pycparser.c_ast.TypeDecl) and + isinstance(typenode.type, pycparser.c_ast.IdentifierType) and + len(typenode.type.names) == 1 and + ('typedef ' + typenode.type.names[0]) in self._declarations): + tp, quals = self._declarations['typedef ' + typenode.type.names[0]] + quals |= self._extract_quals(typenode) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.ArrayDecl): + # array type + if typenode.dim is None: + length = None + else: + length = self._parse_constant( + typenode.dim, partial_length_ok=partial_length_ok) + # a hack: in 'typedef int foo_t[...][...];', don't use '...' as + # the length but use directly the C expression that would be + # generated by recompiler.py. This lets the typedef be used in + # many more places within recompiler.py + if typedef_example is not None: + if length == '...': + length = '_cffi_array_len(%s)' % (typedef_example,) + typedef_example = "*" + typedef_example + # + tp, quals = self._get_type_and_quals(typenode.type, + partial_length_ok=partial_length_ok, + typedef_example=typedef_example) + return model.ArrayType(tp, length), quals + # + if isinstance(typenode, pycparser.c_ast.PtrDecl): + # pointer type + itemtype, itemquals = self._get_type_and_quals(typenode.type) + tp = self._get_type_pointer(itemtype, itemquals, declname=name) + quals = self._extract_quals(typenode) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.TypeDecl): + quals = self._extract_quals(typenode) + type = typenode.type + if isinstance(type, pycparser.c_ast.IdentifierType): + # assume a primitive type. get it from .names, but reduce + # synonyms to a single chosen combination + names = list(type.names) + if names != ['signed', 'char']: # keep this unmodified + prefixes = {} + while names: + name = names[0] + if name in ('short', 'long', 'signed', 'unsigned'): + prefixes[name] = prefixes.get(name, 0) + 1 + del names[0] + else: + break + # ignore the 'signed' prefix below, and reorder the others + newnames = [] + for prefix in ('unsigned', 'short', 'long'): + for i in range(prefixes.get(prefix, 0)): + newnames.append(prefix) + if not names: + names = ['int'] # implicitly + if names == ['int']: # but kill it if 'short' or 'long' + if 'short' in prefixes or 'long' in prefixes: + names = [] + names = newnames + names + ident = ' '.join(names) + if ident == 'void': + return model.void_type, quals + if ident == '__dotdotdot__': + raise FFIError(':%d: bad usage of "..."' % + typenode.coord.line) + tp0, quals0 = resolve_common_type(self, ident) + return tp0, (quals | quals0) + # + if isinstance(type, pycparser.c_ast.Struct): + # 'struct foobar' + tp = self._get_struct_union_enum_type('struct', type, name) + return tp, quals + # + if isinstance(type, pycparser.c_ast.Union): + # 'union foobar' + tp = self._get_struct_union_enum_type('union', type, name) + return tp, quals + # + if isinstance(type, pycparser.c_ast.Enum): + # 'enum foobar' + tp = self._get_struct_union_enum_type('enum', type, name) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.FuncDecl): + # a function type + return self._parse_function_type(typenode, name), 0 + # + # nested anonymous structs or unions end up here + if isinstance(typenode, pycparser.c_ast.Struct): + return self._get_struct_union_enum_type('struct', typenode, name, + nested=True), 0 + if isinstance(typenode, pycparser.c_ast.Union): + return self._get_struct_union_enum_type('union', typenode, name, + nested=True), 0 + # + raise FFIError(":%d: bad or unsupported type declaration" % + typenode.coord.line) + + def _parse_function_type(self, typenode, funcname=None): + params = list(getattr(typenode.args, 'params', [])) + for i, arg in enumerate(params): + if not hasattr(arg, 'type'): + raise CDefError("%s arg %d: unknown type '%s'" + " (if you meant to use the old C syntax of giving" + " untyped arguments, it is not supported)" + % (funcname or 'in expression', i + 1, + getattr(arg, 'name', '?'))) + ellipsis = ( + len(params) > 0 and + isinstance(params[-1].type, pycparser.c_ast.TypeDecl) and + isinstance(params[-1].type.type, + pycparser.c_ast.IdentifierType) and + params[-1].type.type.names == ['__dotdotdot__']) + if ellipsis: + params.pop() + if not params: + raise CDefError( + "%s: a function with only '(...)' as argument" + " is not correct C" % (funcname or 'in expression')) + args = [self._as_func_arg(*self._get_type_and_quals(argdeclnode.type)) + for argdeclnode in params] + if not ellipsis and args == [model.void_type]: + args = [] + result, quals = self._get_type_and_quals(typenode.type) + # the 'quals' on the result type are ignored. HACK: we absure them + # to detect __stdcall functions: we textually replace "__stdcall" + # with "volatile volatile const" above. + abi = None + if hasattr(typenode.type, 'quals'): # else, probable syntax error anyway + if typenode.type.quals[-3:] == ['volatile', 'volatile', 'const']: + abi = '__stdcall' + return model.RawFunctionType(tuple(args), result, ellipsis, abi) + + def _as_func_arg(self, type, quals): + if isinstance(type, model.ArrayType): + return model.PointerType(type.item, quals) + elif isinstance(type, model.RawFunctionType): + return type.as_function_pointer() + else: + return type + + def _get_struct_union_enum_type(self, kind, type, name=None, nested=False): + # First, a level of caching on the exact 'type' node of the AST. + # This is obscure, but needed because pycparser "unrolls" declarations + # such as "typedef struct { } foo_t, *foo_p" and we end up with + # an AST that is not a tree, but a DAG, with the "type" node of the + # two branches foo_t and foo_p of the trees being the same node. + # It's a bit silly but detecting "DAG-ness" in the AST tree seems + # to be the only way to distinguish this case from two independent + # structs. See test_struct_with_two_usages. + try: + return self._structnode2type[type] + except KeyError: + pass + # + # Note that this must handle parsing "struct foo" any number of + # times and always return the same StructType object. Additionally, + # one of these times (not necessarily the first), the fields of + # the struct can be specified with "struct foo { ...fields... }". + # If no name is given, then we have to create a new anonymous struct + # with no caching; in this case, the fields are either specified + # right now or never. + # + force_name = name + name = type.name + # + # get the type or create it if needed + if name is None: + # 'force_name' is used to guess a more readable name for + # anonymous structs, for the common case "typedef struct { } foo". + if force_name is not None: + explicit_name = '$%s' % force_name + else: + self._anonymous_counter += 1 + explicit_name = '$%d' % self._anonymous_counter + tp = None + else: + explicit_name = name + key = '%s %s' % (kind, name) + tp, _ = self._declarations.get(key, (None, None)) + # + if tp is None: + if kind == 'struct': + tp = model.StructType(explicit_name, None, None, None) + elif kind == 'union': + tp = model.UnionType(explicit_name, None, None, None) + elif kind == 'enum': + if explicit_name == '__dotdotdot__': + raise CDefError("Enums cannot be declared with ...") + tp = self._build_enum_type(explicit_name, type.values) + else: + raise AssertionError("kind = %r" % (kind,)) + if name is not None: + self._declare(key, tp) + else: + if kind == 'enum' and type.values is not None: + raise NotImplementedError( + "enum %s: the '{}' declaration should appear on the first " + "time the enum is mentioned, not later" % explicit_name) + if not tp.forcename: + tp.force_the_name(force_name) + if tp.forcename and '$' in tp.name: + self._declare('anonymous %s' % tp.forcename, tp) + # + self._structnode2type[type] = tp + # + # enums: done here + if kind == 'enum': + return tp + # + # is there a 'type.decls'? If yes, then this is the place in the + # C sources that declare the fields. If no, then just return the + # existing type, possibly still incomplete. + if type.decls is None: + return tp + # + if tp.fldnames is not None: + raise CDefError("duplicate declaration of struct %s" % name) + fldnames = [] + fldtypes = [] + fldbitsize = [] + fldquals = [] + for decl in type.decls: + if (isinstance(decl.type, pycparser.c_ast.IdentifierType) and + ''.join(decl.type.names) == '__dotdotdot__'): + # XXX pycparser is inconsistent: 'names' should be a list + # of strings, but is sometimes just one string. Use + # str.join() as a way to cope with both. + self._make_partial(tp, nested) + continue + if decl.bitsize is None: + bitsize = -1 + else: + bitsize = self._parse_constant(decl.bitsize) + self._partial_length = False + type, fqual = self._get_type_and_quals(decl.type, + partial_length_ok=True) + if self._partial_length: + self._make_partial(tp, nested) + if isinstance(type, model.StructType) and type.partial: + self._make_partial(tp, nested) + fldnames.append(decl.name or '') + fldtypes.append(type) + fldbitsize.append(bitsize) + fldquals.append(fqual) + tp.fldnames = tuple(fldnames) + tp.fldtypes = tuple(fldtypes) + tp.fldbitsize = tuple(fldbitsize) + tp.fldquals = tuple(fldquals) + if fldbitsize != [-1] * len(fldbitsize): + if isinstance(tp, model.StructType) and tp.partial: + raise NotImplementedError("%s: using both bitfields and '...;'" + % (tp,)) + tp.packed = self._options.get('packed') + if tp.completed: # must be re-completed: it is not opaque any more + tp.completed = 0 + self._recomplete.append(tp) + return tp + + def _make_partial(self, tp, nested): + if not isinstance(tp, model.StructOrUnion): + raise CDefError("%s cannot be partial" % (tp,)) + if not tp.has_c_name() and not nested: + raise NotImplementedError("%s is partial but has no C name" %(tp,)) + tp.partial = True + + def _parse_constant(self, exprnode, partial_length_ok=False): + # for now, limited to expressions that are an immediate number + # or positive/negative number + if isinstance(exprnode, pycparser.c_ast.Constant): + s = exprnode.value + if '0' <= s[0] <= '9': + s = s.rstrip('uUlL') + try: + if s.startswith('0'): + return int(s, 8) + else: + return int(s, 10) + except ValueError: + if len(s) > 1: + if s.lower()[0:2] == '0x': + return int(s, 16) + elif s.lower()[0:2] == '0b': + return int(s, 2) + raise CDefError("invalid constant %r" % (s,)) + elif s[0] == "'" and s[-1] == "'" and ( + len(s) == 3 or (len(s) == 4 and s[1] == "\\")): + return ord(s[-2]) + else: + raise CDefError("invalid constant %r" % (s,)) + # + if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and + exprnode.op == '+'): + return self._parse_constant(exprnode.expr) + # + if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and + exprnode.op == '-'): + return -self._parse_constant(exprnode.expr) + # load previously defined int constant + if (isinstance(exprnode, pycparser.c_ast.ID) and + exprnode.name in self._int_constants): + return self._int_constants[exprnode.name] + # + if (isinstance(exprnode, pycparser.c_ast.ID) and + exprnode.name == '__dotdotdotarray__'): + if partial_length_ok: + self._partial_length = True + return '...' + raise FFIError(":%d: unsupported '[...]' here, cannot derive " + "the actual array length in this context" + % exprnode.coord.line) + # + if isinstance(exprnode, pycparser.c_ast.BinaryOp): + left = self._parse_constant(exprnode.left) + right = self._parse_constant(exprnode.right) + if exprnode.op == '+': + return left + right + elif exprnode.op == '-': + return left - right + elif exprnode.op == '*': + return left * right + elif exprnode.op == '/': + return self._c_div(left, right) + elif exprnode.op == '%': + return left - self._c_div(left, right) * right + elif exprnode.op == '<<': + return left << right + elif exprnode.op == '>>': + return left >> right + elif exprnode.op == '&': + return left & right + elif exprnode.op == '|': + return left | right + elif exprnode.op == '^': + return left ^ right + # + raise FFIError(":%d: unsupported expression: expected a " + "simple numeric constant" % exprnode.coord.line) + + def _c_div(self, a, b): + result = a // b + if ((a < 0) ^ (b < 0)) and (a % b) != 0: + result += 1 + return result + + def _build_enum_type(self, explicit_name, decls): + if decls is not None: + partial = False + enumerators = [] + enumvalues = [] + nextenumvalue = 0 + for enum in decls.enumerators: + if _r_enum_dotdotdot.match(enum.name): + partial = True + continue + if enum.value is not None: + nextenumvalue = self._parse_constant(enum.value) + enumerators.append(enum.name) + enumvalues.append(nextenumvalue) + self._add_constants(enum.name, nextenumvalue) + nextenumvalue += 1 + enumerators = tuple(enumerators) + enumvalues = tuple(enumvalues) + tp = model.EnumType(explicit_name, enumerators, enumvalues) + tp.partial = partial + else: # opaque enum + tp = model.EnumType(explicit_name, (), ()) + return tp + + def include(self, other): + for name, (tp, quals) in other._declarations.items(): + if name.startswith('anonymous $enum_$'): + continue # fix for test_anonymous_enum_include + kind = name.split(' ', 1)[0] + if kind in ('struct', 'union', 'enum', 'anonymous', 'typedef'): + self._declare(name, tp, included=True, quals=quals) + for k, v in other._int_constants.items(): + self._add_constants(k, v) + + def _get_unknown_type(self, decl): + typenames = decl.type.type.names + if typenames == ['__dotdotdot__']: + return model.unknown_type(decl.name) + + if typenames == ['__dotdotdotint__']: + if self._uses_new_feature is None: + self._uses_new_feature = "'typedef int... %s'" % decl.name + return model.UnknownIntegerType(decl.name) + + if typenames == ['__dotdotdotfloat__']: + # note: not for 'long double' so far + if self._uses_new_feature is None: + self._uses_new_feature = "'typedef float... %s'" % decl.name + return model.UnknownFloatType(decl.name) + + raise FFIError(':%d: unsupported usage of "..." in typedef' + % decl.coord.line) + + def _get_unknown_ptr_type(self, decl): + if decl.type.type.type.names == ['__dotdotdot__']: + return model.unknown_ptr_type(decl.name) + raise FFIError(':%d: unsupported usage of "..." in typedef' + % decl.coord.line) diff --git a/.venv/lib/python3.9/site-packages/cffi/error.py b/.venv/lib/python3.9/site-packages/cffi/error.py new file mode 100644 index 0000000..0a27247 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/error.py @@ -0,0 +1,31 @@ + +class FFIError(Exception): + __module__ = 'cffi' + +class CDefError(Exception): + __module__ = 'cffi' + def __str__(self): + try: + current_decl = self.args[1] + filename = current_decl.coord.file + linenum = current_decl.coord.line + prefix = '%s:%d: ' % (filename, linenum) + except (AttributeError, TypeError, IndexError): + prefix = '' + return '%s%s' % (prefix, self.args[0]) + +class VerificationError(Exception): + """ An error raised when verification fails + """ + __module__ = 'cffi' + +class VerificationMissing(Exception): + """ An error raised when incomplete structures are passed into + cdef, but no verification has been done + """ + __module__ = 'cffi' + +class PkgConfigError(Exception): + """ An error raised for missing modules in pkg-config + """ + __module__ = 'cffi' diff --git a/.venv/lib/python3.9/site-packages/cffi/ffiplatform.py b/.venv/lib/python3.9/site-packages/cffi/ffiplatform.py new file mode 100644 index 0000000..adca28f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/ffiplatform.py @@ -0,0 +1,113 @@ +import sys, os +from .error import VerificationError + + +LIST_OF_FILE_NAMES = ['sources', 'include_dirs', 'library_dirs', + 'extra_objects', 'depends'] + +def get_extension(srcfilename, modname, sources=(), **kwds): + from cffi._shimmed_dist_utils import Extension + allsources = [srcfilename] + for src in sources: + allsources.append(os.path.normpath(src)) + return Extension(name=modname, sources=allsources, **kwds) + +def compile(tmpdir, ext, compiler_verbose=0, debug=None): + """Compile a C extension module using distutils.""" + + saved_environ = os.environ.copy() + try: + outputfilename = _build(tmpdir, ext, compiler_verbose, debug) + outputfilename = os.path.abspath(outputfilename) + finally: + # workaround for a distutils bugs where some env vars can + # become longer and longer every time it is used + for key, value in saved_environ.items(): + if os.environ.get(key) != value: + os.environ[key] = value + return outputfilename + +def _build(tmpdir, ext, compiler_verbose=0, debug=None): + # XXX compact but horrible :-( + from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity + + dist = Distribution({'ext_modules': [ext]}) + dist.parse_config_files() + options = dist.get_option_dict('build_ext') + if debug is None: + debug = sys.flags.debug + options['debug'] = ('ffiplatform', debug) + options['force'] = ('ffiplatform', True) + options['build_lib'] = ('ffiplatform', tmpdir) + options['build_temp'] = ('ffiplatform', tmpdir) + # + try: + old_level = set_threshold(0) or 0 + try: + set_verbosity(compiler_verbose) + dist.run_command('build_ext') + cmd_obj = dist.get_command_obj('build_ext') + [soname] = cmd_obj.get_outputs() + finally: + set_threshold(old_level) + except (CompileError, LinkError) as e: + raise VerificationError('%s: %s' % (e.__class__.__name__, e)) + # + return soname + +try: + from os.path import samefile +except ImportError: + def samefile(f1, f2): + return os.path.abspath(f1) == os.path.abspath(f2) + +def maybe_relative_path(path): + if not os.path.isabs(path): + return path # already relative + dir = path + names = [] + while True: + prevdir = dir + dir, name = os.path.split(prevdir) + if dir == prevdir or not dir: + return path # failed to make it relative + names.append(name) + try: + if samefile(dir, os.curdir): + names.reverse() + return os.path.join(*names) + except OSError: + pass + +# ____________________________________________________________ + +try: + int_or_long = (int, long) + import cStringIO +except NameError: + int_or_long = int # Python 3 + import io as cStringIO + +def _flatten(x, f): + if isinstance(x, str): + f.write('%ds%s' % (len(x), x)) + elif isinstance(x, dict): + keys = sorted(x.keys()) + f.write('%dd' % len(keys)) + for key in keys: + _flatten(key, f) + _flatten(x[key], f) + elif isinstance(x, (list, tuple)): + f.write('%dl' % len(x)) + for value in x: + _flatten(value, f) + elif isinstance(x, int_or_long): + f.write('%di' % (x,)) + else: + raise TypeError( + "the keywords to verify() contains unsupported object %r" % (x,)) + +def flatten(x): + f = cStringIO.StringIO() + _flatten(x, f) + return f.getvalue() diff --git a/.venv/lib/python3.9/site-packages/cffi/lock.py b/.venv/lib/python3.9/site-packages/cffi/lock.py new file mode 100644 index 0000000..db91b71 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/lock.py @@ -0,0 +1,30 @@ +import sys + +if sys.version_info < (3,): + try: + from thread import allocate_lock + except ImportError: + from dummy_thread import allocate_lock +else: + try: + from _thread import allocate_lock + except ImportError: + from _dummy_thread import allocate_lock + + +##import sys +##l1 = allocate_lock + +##class allocate_lock(object): +## def __init__(self): +## self._real = l1() +## def __enter__(self): +## for i in range(4, 0, -1): +## print sys._getframe(i).f_code +## print +## return self._real.__enter__() +## def __exit__(self, *args): +## return self._real.__exit__(*args) +## def acquire(self, f): +## assert f is False +## return self._real.acquire(f) diff --git a/.venv/lib/python3.9/site-packages/cffi/model.py b/.venv/lib/python3.9/site-packages/cffi/model.py new file mode 100644 index 0000000..e5f4cae --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/model.py @@ -0,0 +1,618 @@ +import types +import weakref + +from .lock import allocate_lock +from .error import CDefError, VerificationError, VerificationMissing + +# type qualifiers +Q_CONST = 0x01 +Q_RESTRICT = 0x02 +Q_VOLATILE = 0x04 + +def qualify(quals, replace_with): + if quals & Q_CONST: + replace_with = ' const ' + replace_with.lstrip() + if quals & Q_VOLATILE: + replace_with = ' volatile ' + replace_with.lstrip() + if quals & Q_RESTRICT: + # It seems that __restrict is supported by gcc and msvc. + # If you hit some different compiler, add a #define in + # _cffi_include.h for it (and in its copies, documented there) + replace_with = ' __restrict ' + replace_with.lstrip() + return replace_with + + +class BaseTypeByIdentity(object): + is_array_type = False + is_raw_function = False + + def get_c_name(self, replace_with='', context='a C file', quals=0): + result = self.c_name_with_marker + assert result.count('&') == 1 + # some logic duplication with ffi.getctype()... :-( + replace_with = replace_with.strip() + if replace_with: + if replace_with.startswith('*') and '&[' in result: + replace_with = '(%s)' % replace_with + elif not replace_with[0] in '[(': + replace_with = ' ' + replace_with + replace_with = qualify(quals, replace_with) + result = result.replace('&', replace_with) + if '$' in result: + raise VerificationError( + "cannot generate '%s' in %s: unknown type name" + % (self._get_c_name(), context)) + return result + + def _get_c_name(self): + return self.c_name_with_marker.replace('&', '') + + def has_c_name(self): + return '$' not in self._get_c_name() + + def is_integer_type(self): + return False + + def get_cached_btype(self, ffi, finishlist, can_delay=False): + try: + BType = ffi._cached_btypes[self] + except KeyError: + BType = self.build_backend_type(ffi, finishlist) + BType2 = ffi._cached_btypes.setdefault(self, BType) + assert BType2 is BType + return BType + + def __repr__(self): + return '<%s>' % (self._get_c_name(),) + + def _get_items(self): + return [(name, getattr(self, name)) for name in self._attrs_] + + +class BaseType(BaseTypeByIdentity): + + def __eq__(self, other): + return (self.__class__ == other.__class__ and + self._get_items() == other._get_items()) + + def __ne__(self, other): + return not self == other + + def __hash__(self): + return hash((self.__class__, tuple(self._get_items()))) + + +class VoidType(BaseType): + _attrs_ = () + + def __init__(self): + self.c_name_with_marker = 'void&' + + def build_backend_type(self, ffi, finishlist): + return global_cache(self, ffi, 'new_void_type') + +void_type = VoidType() + + +class BasePrimitiveType(BaseType): + def is_complex_type(self): + return False + + +class PrimitiveType(BasePrimitiveType): + _attrs_ = ('name',) + + ALL_PRIMITIVE_TYPES = { + 'char': 'c', + 'short': 'i', + 'int': 'i', + 'long': 'i', + 'long long': 'i', + 'signed char': 'i', + 'unsigned char': 'i', + 'unsigned short': 'i', + 'unsigned int': 'i', + 'unsigned long': 'i', + 'unsigned long long': 'i', + 'float': 'f', + 'double': 'f', + 'long double': 'f', + '_cffi_float_complex_t': 'j', + '_cffi_double_complex_t': 'j', + '_Bool': 'i', + # the following types are not primitive in the C sense + 'wchar_t': 'c', + 'char16_t': 'c', + 'char32_t': 'c', + 'int8_t': 'i', + 'uint8_t': 'i', + 'int16_t': 'i', + 'uint16_t': 'i', + 'int32_t': 'i', + 'uint32_t': 'i', + 'int64_t': 'i', + 'uint64_t': 'i', + 'int_least8_t': 'i', + 'uint_least8_t': 'i', + 'int_least16_t': 'i', + 'uint_least16_t': 'i', + 'int_least32_t': 'i', + 'uint_least32_t': 'i', + 'int_least64_t': 'i', + 'uint_least64_t': 'i', + 'int_fast8_t': 'i', + 'uint_fast8_t': 'i', + 'int_fast16_t': 'i', + 'uint_fast16_t': 'i', + 'int_fast32_t': 'i', + 'uint_fast32_t': 'i', + 'int_fast64_t': 'i', + 'uint_fast64_t': 'i', + 'intptr_t': 'i', + 'uintptr_t': 'i', + 'intmax_t': 'i', + 'uintmax_t': 'i', + 'ptrdiff_t': 'i', + 'size_t': 'i', + 'ssize_t': 'i', + } + + def __init__(self, name): + assert name in self.ALL_PRIMITIVE_TYPES + self.name = name + self.c_name_with_marker = name + '&' + + def is_char_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'c' + def is_integer_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'i' + def is_float_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'f' + def is_complex_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'j' + + def build_backend_type(self, ffi, finishlist): + return global_cache(self, ffi, 'new_primitive_type', self.name) + + +class UnknownIntegerType(BasePrimitiveType): + _attrs_ = ('name',) + + def __init__(self, name): + self.name = name + self.c_name_with_marker = name + '&' + + def is_integer_type(self): + return True + + def build_backend_type(self, ffi, finishlist): + raise NotImplementedError("integer type '%s' can only be used after " + "compilation" % self.name) + +class UnknownFloatType(BasePrimitiveType): + _attrs_ = ('name', ) + + def __init__(self, name): + self.name = name + self.c_name_with_marker = name + '&' + + def build_backend_type(self, ffi, finishlist): + raise NotImplementedError("float type '%s' can only be used after " + "compilation" % self.name) + + +class BaseFunctionType(BaseType): + _attrs_ = ('args', 'result', 'ellipsis', 'abi') + + def __init__(self, args, result, ellipsis, abi=None): + self.args = args + self.result = result + self.ellipsis = ellipsis + self.abi = abi + # + reprargs = [arg._get_c_name() for arg in self.args] + if self.ellipsis: + reprargs.append('...') + reprargs = reprargs or ['void'] + replace_with = self._base_pattern % (', '.join(reprargs),) + if abi is not None: + replace_with = replace_with[:1] + abi + ' ' + replace_with[1:] + self.c_name_with_marker = ( + self.result.c_name_with_marker.replace('&', replace_with)) + + +class RawFunctionType(BaseFunctionType): + # Corresponds to a C type like 'int(int)', which is the C type of + # a function, but not a pointer-to-function. The backend has no + # notion of such a type; it's used temporarily by parsing. + _base_pattern = '(&)(%s)' + is_raw_function = True + + def build_backend_type(self, ffi, finishlist): + raise CDefError("cannot render the type %r: it is a function " + "type, not a pointer-to-function type" % (self,)) + + def as_function_pointer(self): + return FunctionPtrType(self.args, self.result, self.ellipsis, self.abi) + + +class FunctionPtrType(BaseFunctionType): + _base_pattern = '(*&)(%s)' + + def build_backend_type(self, ffi, finishlist): + result = self.result.get_cached_btype(ffi, finishlist) + args = [] + for tp in self.args: + args.append(tp.get_cached_btype(ffi, finishlist)) + abi_args = () + if self.abi == "__stdcall": + if not self.ellipsis: # __stdcall ignored for variadic funcs + try: + abi_args = (ffi._backend.FFI_STDCALL,) + except AttributeError: + pass + return global_cache(self, ffi, 'new_function_type', + tuple(args), result, self.ellipsis, *abi_args) + + def as_raw_function(self): + return RawFunctionType(self.args, self.result, self.ellipsis, self.abi) + + +class PointerType(BaseType): + _attrs_ = ('totype', 'quals') + + def __init__(self, totype, quals=0): + self.totype = totype + self.quals = quals + extra = " *&" + if totype.is_array_type: + extra = "(%s)" % (extra.lstrip(),) + extra = qualify(quals, extra) + self.c_name_with_marker = totype.c_name_with_marker.replace('&', extra) + + def build_backend_type(self, ffi, finishlist): + BItem = self.totype.get_cached_btype(ffi, finishlist, can_delay=True) + return global_cache(self, ffi, 'new_pointer_type', BItem) + +voidp_type = PointerType(void_type) + +def ConstPointerType(totype): + return PointerType(totype, Q_CONST) + +const_voidp_type = ConstPointerType(void_type) + + +class NamedPointerType(PointerType): + _attrs_ = ('totype', 'name') + + def __init__(self, totype, name, quals=0): + PointerType.__init__(self, totype, quals) + self.name = name + self.c_name_with_marker = name + '&' + + +class ArrayType(BaseType): + _attrs_ = ('item', 'length') + is_array_type = True + + def __init__(self, item, length): + self.item = item + self.length = length + # + if length is None: + brackets = '&[]' + elif length == '...': + brackets = '&[/*...*/]' + else: + brackets = '&[%s]' % length + self.c_name_with_marker = ( + self.item.c_name_with_marker.replace('&', brackets)) + + def length_is_unknown(self): + return isinstance(self.length, str) + + def resolve_length(self, newlength): + return ArrayType(self.item, newlength) + + def build_backend_type(self, ffi, finishlist): + if self.length_is_unknown(): + raise CDefError("cannot render the type %r: unknown length" % + (self,)) + self.item.get_cached_btype(ffi, finishlist) # force the item BType + BPtrItem = PointerType(self.item).get_cached_btype(ffi, finishlist) + return global_cache(self, ffi, 'new_array_type', BPtrItem, self.length) + +char_array_type = ArrayType(PrimitiveType('char'), None) + + +class StructOrUnionOrEnum(BaseTypeByIdentity): + _attrs_ = ('name',) + forcename = None + + def build_c_name_with_marker(self): + name = self.forcename or '%s %s' % (self.kind, self.name) + self.c_name_with_marker = name + '&' + + def force_the_name(self, forcename): + self.forcename = forcename + self.build_c_name_with_marker() + + def get_official_name(self): + assert self.c_name_with_marker.endswith('&') + return self.c_name_with_marker[:-1] + + +class StructOrUnion(StructOrUnionOrEnum): + fixedlayout = None + completed = 0 + partial = False + packed = 0 + + def __init__(self, name, fldnames, fldtypes, fldbitsize, fldquals=None): + self.name = name + self.fldnames = fldnames + self.fldtypes = fldtypes + self.fldbitsize = fldbitsize + self.fldquals = fldquals + self.build_c_name_with_marker() + + def anonymous_struct_fields(self): + if self.fldtypes is not None: + for name, type in zip(self.fldnames, self.fldtypes): + if name == '' and isinstance(type, StructOrUnion): + yield type + + def enumfields(self, expand_anonymous_struct_union=True): + fldquals = self.fldquals + if fldquals is None: + fldquals = (0,) * len(self.fldnames) + for name, type, bitsize, quals in zip(self.fldnames, self.fldtypes, + self.fldbitsize, fldquals): + if (name == '' and isinstance(type, StructOrUnion) + and expand_anonymous_struct_union): + # nested anonymous struct/union + for result in type.enumfields(): + yield result + else: + yield (name, type, bitsize, quals) + + def force_flatten(self): + # force the struct or union to have a declaration that lists + # directly all fields returned by enumfields(), flattening + # nested anonymous structs/unions. + names = [] + types = [] + bitsizes = [] + fldquals = [] + for name, type, bitsize, quals in self.enumfields(): + names.append(name) + types.append(type) + bitsizes.append(bitsize) + fldquals.append(quals) + self.fldnames = tuple(names) + self.fldtypes = tuple(types) + self.fldbitsize = tuple(bitsizes) + self.fldquals = tuple(fldquals) + + def get_cached_btype(self, ffi, finishlist, can_delay=False): + BType = StructOrUnionOrEnum.get_cached_btype(self, ffi, finishlist, + can_delay) + if not can_delay: + self.finish_backend_type(ffi, finishlist) + return BType + + def finish_backend_type(self, ffi, finishlist): + if self.completed: + if self.completed != 2: + raise NotImplementedError("recursive structure declaration " + "for '%s'" % (self.name,)) + return + BType = ffi._cached_btypes[self] + # + self.completed = 1 + # + if self.fldtypes is None: + pass # not completing it: it's an opaque struct + # + elif self.fixedlayout is None: + fldtypes = [tp.get_cached_btype(ffi, finishlist) + for tp in self.fldtypes] + lst = list(zip(self.fldnames, fldtypes, self.fldbitsize)) + extra_flags = () + if self.packed: + if self.packed == 1: + extra_flags = (8,) # SF_PACKED + else: + extra_flags = (0, self.packed) + ffi._backend.complete_struct_or_union(BType, lst, self, + -1, -1, *extra_flags) + # + else: + fldtypes = [] + fieldofs, fieldsize, totalsize, totalalignment = self.fixedlayout + for i in range(len(self.fldnames)): + fsize = fieldsize[i] + ftype = self.fldtypes[i] + # + if isinstance(ftype, ArrayType) and ftype.length_is_unknown(): + # fix the length to match the total size + BItemType = ftype.item.get_cached_btype(ffi, finishlist) + nlen, nrest = divmod(fsize, ffi.sizeof(BItemType)) + if nrest != 0: + self._verification_error( + "field '%s.%s' has a bogus size?" % ( + self.name, self.fldnames[i] or '{}')) + ftype = ftype.resolve_length(nlen) + self.fldtypes = (self.fldtypes[:i] + (ftype,) + + self.fldtypes[i+1:]) + # + BFieldType = ftype.get_cached_btype(ffi, finishlist) + if isinstance(ftype, ArrayType) and ftype.length is None: + assert fsize == 0 + else: + bitemsize = ffi.sizeof(BFieldType) + if bitemsize != fsize: + self._verification_error( + "field '%s.%s' is declared as %d bytes, but is " + "really %d bytes" % (self.name, + self.fldnames[i] or '{}', + bitemsize, fsize)) + fldtypes.append(BFieldType) + # + lst = list(zip(self.fldnames, fldtypes, self.fldbitsize, fieldofs)) + ffi._backend.complete_struct_or_union(BType, lst, self, + totalsize, totalalignment) + self.completed = 2 + + def _verification_error(self, msg): + raise VerificationError(msg) + + def check_not_partial(self): + if self.partial and self.fixedlayout is None: + raise VerificationMissing(self._get_c_name()) + + def build_backend_type(self, ffi, finishlist): + self.check_not_partial() + finishlist.append(self) + # + return global_cache(self, ffi, 'new_%s_type' % self.kind, + self.get_official_name(), key=self) + + +class StructType(StructOrUnion): + kind = 'struct' + + +class UnionType(StructOrUnion): + kind = 'union' + + +class EnumType(StructOrUnionOrEnum): + kind = 'enum' + partial = False + partial_resolved = False + + def __init__(self, name, enumerators, enumvalues, baseinttype=None): + self.name = name + self.enumerators = enumerators + self.enumvalues = enumvalues + self.baseinttype = baseinttype + self.build_c_name_with_marker() + + def force_the_name(self, forcename): + StructOrUnionOrEnum.force_the_name(self, forcename) + if self.forcename is None: + name = self.get_official_name() + self.forcename = '$' + name.replace(' ', '_') + + def check_not_partial(self): + if self.partial and not self.partial_resolved: + raise VerificationMissing(self._get_c_name()) + + def build_backend_type(self, ffi, finishlist): + self.check_not_partial() + base_btype = self.build_baseinttype(ffi, finishlist) + return global_cache(self, ffi, 'new_enum_type', + self.get_official_name(), + self.enumerators, self.enumvalues, + base_btype, key=self) + + def build_baseinttype(self, ffi, finishlist): + if self.baseinttype is not None: + return self.baseinttype.get_cached_btype(ffi, finishlist) + # + if self.enumvalues: + smallest_value = min(self.enumvalues) + largest_value = max(self.enumvalues) + else: + import warnings + try: + # XXX! The goal is to ensure that the warnings.warn() + # will not suppress the warning. We want to get it + # several times if we reach this point several times. + __warningregistry__.clear() + except NameError: + pass + warnings.warn("%r has no values explicitly defined; " + "guessing that it is equivalent to 'unsigned int'" + % self._get_c_name()) + smallest_value = largest_value = 0 + if smallest_value < 0: # needs a signed type + sign = 1 + candidate1 = PrimitiveType("int") + candidate2 = PrimitiveType("long") + else: + sign = 0 + candidate1 = PrimitiveType("unsigned int") + candidate2 = PrimitiveType("unsigned long") + btype1 = candidate1.get_cached_btype(ffi, finishlist) + btype2 = candidate2.get_cached_btype(ffi, finishlist) + size1 = ffi.sizeof(btype1) + size2 = ffi.sizeof(btype2) + if (smallest_value >= ((-1) << (8*size1-1)) and + largest_value < (1 << (8*size1-sign))): + return btype1 + if (smallest_value >= ((-1) << (8*size2-1)) and + largest_value < (1 << (8*size2-sign))): + return btype2 + raise CDefError("%s values don't all fit into either 'long' " + "or 'unsigned long'" % self._get_c_name()) + +def unknown_type(name, structname=None): + if structname is None: + structname = '$%s' % name + tp = StructType(structname, None, None, None) + tp.force_the_name(name) + tp.origin = "unknown_type" + return tp + +def unknown_ptr_type(name, structname=None): + if structname is None: + structname = '$$%s' % name + tp = StructType(structname, None, None, None) + return NamedPointerType(tp, name) + + +global_lock = allocate_lock() +_typecache_cffi_backend = weakref.WeakValueDictionary() + +def get_typecache(backend): + # returns _typecache_cffi_backend if backend is the _cffi_backend + # module, or type(backend).__typecache if backend is an instance of + # CTypesBackend (or some FakeBackend class during tests) + if isinstance(backend, types.ModuleType): + return _typecache_cffi_backend + with global_lock: + if not hasattr(type(backend), '__typecache'): + type(backend).__typecache = weakref.WeakValueDictionary() + return type(backend).__typecache + +def global_cache(srctype, ffi, funcname, *args, **kwds): + key = kwds.pop('key', (funcname, args)) + assert not kwds + try: + return ffi._typecache[key] + except KeyError: + pass + try: + res = getattr(ffi._backend, funcname)(*args) + except NotImplementedError as e: + raise NotImplementedError("%s: %r: %s" % (funcname, srctype, e)) + # note that setdefault() on WeakValueDictionary is not atomic + # and contains a rare bug (http://bugs.python.org/issue19542); + # we have to use a lock and do it ourselves + cache = ffi._typecache + with global_lock: + res1 = cache.get(key) + if res1 is None: + cache[key] = res + return res + else: + return res1 + +def pointer_cache(ffi, BType): + return global_cache('?', ffi, 'new_pointer_type', BType) + +def attach_exception_info(e, name): + if e.args and type(e.args[0]) is str: + e.args = ('%s: %s' % (name, e.args[0]),) + e.args[1:] diff --git a/.venv/lib/python3.9/site-packages/cffi/parse_c_type.h b/.venv/lib/python3.9/site-packages/cffi/parse_c_type.h new file mode 100644 index 0000000..84e4ef8 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/parse_c_type.h @@ -0,0 +1,181 @@ + +/* This part is from file 'cffi/parse_c_type.h'. It is copied at the + beginning of C sources generated by CFFI's ffi.set_source(). */ + +typedef void *_cffi_opcode_t; + +#define _CFFI_OP(opcode, arg) (_cffi_opcode_t)(opcode | (((uintptr_t)(arg)) << 8)) +#define _CFFI_GETOP(cffi_opcode) ((unsigned char)(uintptr_t)cffi_opcode) +#define _CFFI_GETARG(cffi_opcode) (((intptr_t)cffi_opcode) >> 8) + +#define _CFFI_OP_PRIMITIVE 1 +#define _CFFI_OP_POINTER 3 +#define _CFFI_OP_ARRAY 5 +#define _CFFI_OP_OPEN_ARRAY 7 +#define _CFFI_OP_STRUCT_UNION 9 +#define _CFFI_OP_ENUM 11 +#define _CFFI_OP_FUNCTION 13 +#define _CFFI_OP_FUNCTION_END 15 +#define _CFFI_OP_NOOP 17 +#define _CFFI_OP_BITFIELD 19 +#define _CFFI_OP_TYPENAME 21 +#define _CFFI_OP_CPYTHON_BLTN_V 23 // varargs +#define _CFFI_OP_CPYTHON_BLTN_N 25 // noargs +#define _CFFI_OP_CPYTHON_BLTN_O 27 // O (i.e. a single arg) +#define _CFFI_OP_CONSTANT 29 +#define _CFFI_OP_CONSTANT_INT 31 +#define _CFFI_OP_GLOBAL_VAR 33 +#define _CFFI_OP_DLOPEN_FUNC 35 +#define _CFFI_OP_DLOPEN_CONST 37 +#define _CFFI_OP_GLOBAL_VAR_F 39 +#define _CFFI_OP_EXTERN_PYTHON 41 + +#define _CFFI_PRIM_VOID 0 +#define _CFFI_PRIM_BOOL 1 +#define _CFFI_PRIM_CHAR 2 +#define _CFFI_PRIM_SCHAR 3 +#define _CFFI_PRIM_UCHAR 4 +#define _CFFI_PRIM_SHORT 5 +#define _CFFI_PRIM_USHORT 6 +#define _CFFI_PRIM_INT 7 +#define _CFFI_PRIM_UINT 8 +#define _CFFI_PRIM_LONG 9 +#define _CFFI_PRIM_ULONG 10 +#define _CFFI_PRIM_LONGLONG 11 +#define _CFFI_PRIM_ULONGLONG 12 +#define _CFFI_PRIM_FLOAT 13 +#define _CFFI_PRIM_DOUBLE 14 +#define _CFFI_PRIM_LONGDOUBLE 15 + +#define _CFFI_PRIM_WCHAR 16 +#define _CFFI_PRIM_INT8 17 +#define _CFFI_PRIM_UINT8 18 +#define _CFFI_PRIM_INT16 19 +#define _CFFI_PRIM_UINT16 20 +#define _CFFI_PRIM_INT32 21 +#define _CFFI_PRIM_UINT32 22 +#define _CFFI_PRIM_INT64 23 +#define _CFFI_PRIM_UINT64 24 +#define _CFFI_PRIM_INTPTR 25 +#define _CFFI_PRIM_UINTPTR 26 +#define _CFFI_PRIM_PTRDIFF 27 +#define _CFFI_PRIM_SIZE 28 +#define _CFFI_PRIM_SSIZE 29 +#define _CFFI_PRIM_INT_LEAST8 30 +#define _CFFI_PRIM_UINT_LEAST8 31 +#define _CFFI_PRIM_INT_LEAST16 32 +#define _CFFI_PRIM_UINT_LEAST16 33 +#define _CFFI_PRIM_INT_LEAST32 34 +#define _CFFI_PRIM_UINT_LEAST32 35 +#define _CFFI_PRIM_INT_LEAST64 36 +#define _CFFI_PRIM_UINT_LEAST64 37 +#define _CFFI_PRIM_INT_FAST8 38 +#define _CFFI_PRIM_UINT_FAST8 39 +#define _CFFI_PRIM_INT_FAST16 40 +#define _CFFI_PRIM_UINT_FAST16 41 +#define _CFFI_PRIM_INT_FAST32 42 +#define _CFFI_PRIM_UINT_FAST32 43 +#define _CFFI_PRIM_INT_FAST64 44 +#define _CFFI_PRIM_UINT_FAST64 45 +#define _CFFI_PRIM_INTMAX 46 +#define _CFFI_PRIM_UINTMAX 47 +#define _CFFI_PRIM_FLOATCOMPLEX 48 +#define _CFFI_PRIM_DOUBLECOMPLEX 49 +#define _CFFI_PRIM_CHAR16 50 +#define _CFFI_PRIM_CHAR32 51 + +#define _CFFI__NUM_PRIM 52 +#define _CFFI__UNKNOWN_PRIM (-1) +#define _CFFI__UNKNOWN_FLOAT_PRIM (-2) +#define _CFFI__UNKNOWN_LONG_DOUBLE (-3) + +#define _CFFI__IO_FILE_STRUCT (-1) + + +struct _cffi_global_s { + const char *name; + void *address; + _cffi_opcode_t type_op; + void *size_or_direct_fn; // OP_GLOBAL_VAR: size, or 0 if unknown + // OP_CPYTHON_BLTN_*: addr of direct function +}; + +struct _cffi_getconst_s { + unsigned long long value; + const struct _cffi_type_context_s *ctx; + int gindex; +}; + +struct _cffi_struct_union_s { + const char *name; + int type_index; // -> _cffi_types, on a OP_STRUCT_UNION + int flags; // _CFFI_F_* flags below + size_t size; + int alignment; + int first_field_index; // -> _cffi_fields array + int num_fields; +}; +#define _CFFI_F_UNION 0x01 // is a union, not a struct +#define _CFFI_F_CHECK_FIELDS 0x02 // complain if fields are not in the + // "standard layout" or if some are missing +#define _CFFI_F_PACKED 0x04 // for CHECK_FIELDS, assume a packed struct +#define _CFFI_F_EXTERNAL 0x08 // in some other ffi.include() +#define _CFFI_F_OPAQUE 0x10 // opaque + +struct _cffi_field_s { + const char *name; + size_t field_offset; + size_t field_size; + _cffi_opcode_t field_type_op; +}; + +struct _cffi_enum_s { + const char *name; + int type_index; // -> _cffi_types, on a OP_ENUM + int type_prim; // _CFFI_PRIM_xxx + const char *enumerators; // comma-delimited string +}; + +struct _cffi_typename_s { + const char *name; + int type_index; /* if opaque, points to a possibly artificial + OP_STRUCT which is itself opaque */ +}; + +struct _cffi_type_context_s { + _cffi_opcode_t *types; + const struct _cffi_global_s *globals; + const struct _cffi_field_s *fields; + const struct _cffi_struct_union_s *struct_unions; + const struct _cffi_enum_s *enums; + const struct _cffi_typename_s *typenames; + int num_globals; + int num_struct_unions; + int num_enums; + int num_typenames; + const char *const *includes; + int num_types; + int flags; /* future extension */ +}; + +struct _cffi_parse_info_s { + const struct _cffi_type_context_s *ctx; + _cffi_opcode_t *output; + unsigned int output_size; + size_t error_location; + const char *error_message; +}; + +struct _cffi_externpy_s { + const char *name; + size_t size_of_result; + void *reserved1, *reserved2; +}; + +#ifdef _CFFI_INTERNAL +static int parse_c_type(struct _cffi_parse_info_s *info, const char *input); +static int search_in_globals(const struct _cffi_type_context_s *ctx, + const char *search, size_t search_len); +static int search_in_struct_unions(const struct _cffi_type_context_s *ctx, + const char *search, size_t search_len); +#endif diff --git a/.venv/lib/python3.9/site-packages/cffi/pkgconfig.py b/.venv/lib/python3.9/site-packages/cffi/pkgconfig.py new file mode 100644 index 0000000..5c93f15 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/pkgconfig.py @@ -0,0 +1,121 @@ +# pkg-config, https://www.freedesktop.org/wiki/Software/pkg-config/ integration for cffi +import sys, os, subprocess + +from .error import PkgConfigError + + +def merge_flags(cfg1, cfg2): + """Merge values from cffi config flags cfg2 to cf1 + + Example: + merge_flags({"libraries": ["one"]}, {"libraries": ["two"]}) + {"libraries": ["one", "two"]} + """ + for key, value in cfg2.items(): + if key not in cfg1: + cfg1[key] = value + else: + if not isinstance(cfg1[key], list): + raise TypeError("cfg1[%r] should be a list of strings" % (key,)) + if not isinstance(value, list): + raise TypeError("cfg2[%r] should be a list of strings" % (key,)) + cfg1[key].extend(value) + return cfg1 + + +def call(libname, flag, encoding=sys.getfilesystemencoding()): + """Calls pkg-config and returns the output if found + """ + a = ["pkg-config", "--print-errors"] + a.append(flag) + a.append(libname) + try: + pc = subprocess.Popen(a, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except EnvironmentError as e: + raise PkgConfigError("cannot run pkg-config: %s" % (str(e).strip(),)) + + bout, berr = pc.communicate() + if pc.returncode != 0: + try: + berr = berr.decode(encoding) + except Exception: + pass + raise PkgConfigError(berr.strip()) + + if sys.version_info >= (3,) and not isinstance(bout, str): # Python 3.x + try: + bout = bout.decode(encoding) + except UnicodeDecodeError: + raise PkgConfigError("pkg-config %s %s returned bytes that cannot " + "be decoded with encoding %r:\n%r" % + (flag, libname, encoding, bout)) + + if os.altsep != '\\' and '\\' in bout: + raise PkgConfigError("pkg-config %s %s returned an unsupported " + "backslash-escaped output:\n%r" % + (flag, libname, bout)) + return bout + + +def flags_from_pkgconfig(libs): + r"""Return compiler line flags for FFI.set_source based on pkg-config output + + Usage + ... + ffibuilder.set_source("_foo", pkgconfig = ["libfoo", "libbar >= 1.8.3"]) + + If pkg-config is installed on build machine, then arguments include_dirs, + library_dirs, libraries, define_macros, extra_compile_args and + extra_link_args are extended with an output of pkg-config for libfoo and + libbar. + + Raises PkgConfigError in case the pkg-config call fails. + """ + + def get_include_dirs(string): + return [x[2:] for x in string.split() if x.startswith("-I")] + + def get_library_dirs(string): + return [x[2:] for x in string.split() if x.startswith("-L")] + + def get_libraries(string): + return [x[2:] for x in string.split() if x.startswith("-l")] + + # convert -Dfoo=bar to list of tuples [("foo", "bar")] expected by distutils + def get_macros(string): + def _macro(x): + x = x[2:] # drop "-D" + if '=' in x: + return tuple(x.split("=", 1)) # "-Dfoo=bar" => ("foo", "bar") + else: + return (x, None) # "-Dfoo" => ("foo", None) + return [_macro(x) for x in string.split() if x.startswith("-D")] + + def get_other_cflags(string): + return [x for x in string.split() if not x.startswith("-I") and + not x.startswith("-D")] + + def get_other_libs(string): + return [x for x in string.split() if not x.startswith("-L") and + not x.startswith("-l")] + + # return kwargs for given libname + def kwargs(libname): + fse = sys.getfilesystemencoding() + all_cflags = call(libname, "--cflags") + all_libs = call(libname, "--libs") + return { + "include_dirs": get_include_dirs(all_cflags), + "library_dirs": get_library_dirs(all_libs), + "libraries": get_libraries(all_libs), + "define_macros": get_macros(all_cflags), + "extra_compile_args": get_other_cflags(all_cflags), + "extra_link_args": get_other_libs(all_libs), + } + + # merge all arguments together + ret = {} + for libname in libs: + lib_flags = kwargs(libname) + merge_flags(ret, lib_flags) + return ret diff --git a/.venv/lib/python3.9/site-packages/cffi/recompiler.py b/.venv/lib/python3.9/site-packages/cffi/recompiler.py new file mode 100644 index 0000000..7734a34 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/recompiler.py @@ -0,0 +1,1598 @@ +import io, os, sys, sysconfig +from . import ffiplatform, model +from .error import VerificationError +from .cffi_opcode import * + +VERSION_BASE = 0x2601 +VERSION_EMBEDDED = 0x2701 +VERSION_CHAR16CHAR32 = 0x2801 + +USE_LIMITED_API = ((sys.platform != 'win32' or sys.version_info < (3, 0) or + sys.version_info >= (3, 5)) and + not sysconfig.get_config_var("Py_GIL_DISABLED")) # free-threaded doesn't yet support limited API + +class GlobalExpr: + def __init__(self, name, address, type_op, size=0, check_value=0): + self.name = name + self.address = address + self.type_op = type_op + self.size = size + self.check_value = check_value + + def as_c_expr(self): + return ' { "%s", (void *)%s, %s, (void *)%s },' % ( + self.name, self.address, self.type_op.as_c_expr(), self.size) + + def as_python_expr(self): + return "b'%s%s',%d" % (self.type_op.as_python_bytes(), self.name, + self.check_value) + +class FieldExpr: + def __init__(self, name, field_offset, field_size, fbitsize, field_type_op): + self.name = name + self.field_offset = field_offset + self.field_size = field_size + self.fbitsize = fbitsize + self.field_type_op = field_type_op + + def as_c_expr(self): + spaces = " " * len(self.name) + return (' { "%s", %s,\n' % (self.name, self.field_offset) + + ' %s %s,\n' % (spaces, self.field_size) + + ' %s %s },' % (spaces, self.field_type_op.as_c_expr())) + + def as_python_expr(self): + raise NotImplementedError + + def as_field_python_expr(self): + if self.field_type_op.op == OP_NOOP: + size_expr = '' + elif self.field_type_op.op == OP_BITFIELD: + size_expr = format_four_bytes(self.fbitsize) + else: + raise NotImplementedError + return "b'%s%s%s'" % (self.field_type_op.as_python_bytes(), + size_expr, + self.name) + +class StructUnionExpr: + def __init__(self, name, type_index, flags, size, alignment, comment, + first_field_index, c_fields): + self.name = name + self.type_index = type_index + self.flags = flags + self.size = size + self.alignment = alignment + self.comment = comment + self.first_field_index = first_field_index + self.c_fields = c_fields + + def as_c_expr(self): + return (' { "%s", %d, %s,' % (self.name, self.type_index, self.flags) + + '\n %s, %s, ' % (self.size, self.alignment) + + '%d, %d ' % (self.first_field_index, len(self.c_fields)) + + ('/* %s */ ' % self.comment if self.comment else '') + + '},') + + def as_python_expr(self): + flags = eval(self.flags, G_FLAGS) + fields_expr = [c_field.as_field_python_expr() + for c_field in self.c_fields] + return "(b'%s%s%s',%s)" % ( + format_four_bytes(self.type_index), + format_four_bytes(flags), + self.name, + ','.join(fields_expr)) + +class EnumExpr: + def __init__(self, name, type_index, size, signed, allenums): + self.name = name + self.type_index = type_index + self.size = size + self.signed = signed + self.allenums = allenums + + def as_c_expr(self): + return (' { "%s", %d, _cffi_prim_int(%s, %s),\n' + ' "%s" },' % (self.name, self.type_index, + self.size, self.signed, self.allenums)) + + def as_python_expr(self): + prim_index = { + (1, 0): PRIM_UINT8, (1, 1): PRIM_INT8, + (2, 0): PRIM_UINT16, (2, 1): PRIM_INT16, + (4, 0): PRIM_UINT32, (4, 1): PRIM_INT32, + (8, 0): PRIM_UINT64, (8, 1): PRIM_INT64, + }[self.size, self.signed] + return "b'%s%s%s\\x00%s'" % (format_four_bytes(self.type_index), + format_four_bytes(prim_index), + self.name, self.allenums) + +class TypenameExpr: + def __init__(self, name, type_index): + self.name = name + self.type_index = type_index + + def as_c_expr(self): + return ' { "%s", %d },' % (self.name, self.type_index) + + def as_python_expr(self): + return "b'%s%s'" % (format_four_bytes(self.type_index), self.name) + + +# ____________________________________________________________ + + +class Recompiler: + _num_externpy = 0 + + def __init__(self, ffi, module_name, target_is_python=False): + self.ffi = ffi + self.module_name = module_name + self.target_is_python = target_is_python + self._version = VERSION_BASE + + def needs_version(self, ver): + self._version = max(self._version, ver) + + def collect_type_table(self): + self._typesdict = {} + self._generate("collecttype") + # + all_decls = sorted(self._typesdict, key=str) + # + # prepare all FUNCTION bytecode sequences first + self.cffi_types = [] + for tp in all_decls: + if tp.is_raw_function: + assert self._typesdict[tp] is None + self._typesdict[tp] = len(self.cffi_types) + self.cffi_types.append(tp) # placeholder + for tp1 in tp.args: + assert isinstance(tp1, (model.VoidType, + model.BasePrimitiveType, + model.PointerType, + model.StructOrUnionOrEnum, + model.FunctionPtrType)) + if self._typesdict[tp1] is None: + self._typesdict[tp1] = len(self.cffi_types) + self.cffi_types.append(tp1) # placeholder + self.cffi_types.append('END') # placeholder + # + # prepare all OTHER bytecode sequences + for tp in all_decls: + if not tp.is_raw_function and self._typesdict[tp] is None: + self._typesdict[tp] = len(self.cffi_types) + self.cffi_types.append(tp) # placeholder + if tp.is_array_type and tp.length is not None: + self.cffi_types.append('LEN') # placeholder + assert None not in self._typesdict.values() + # + # collect all structs and unions and enums + self._struct_unions = {} + self._enums = {} + for tp in all_decls: + if isinstance(tp, model.StructOrUnion): + self._struct_unions[tp] = None + elif isinstance(tp, model.EnumType): + self._enums[tp] = None + for i, tp in enumerate(sorted(self._struct_unions, + key=lambda tp: tp.name)): + self._struct_unions[tp] = i + for i, tp in enumerate(sorted(self._enums, + key=lambda tp: tp.name)): + self._enums[tp] = i + # + # emit all bytecode sequences now + for tp in all_decls: + method = getattr(self, '_emit_bytecode_' + tp.__class__.__name__) + method(tp, self._typesdict[tp]) + # + # consistency check + for op in self.cffi_types: + assert isinstance(op, CffiOp) + self.cffi_types = tuple(self.cffi_types) # don't change any more + + def _enum_fields(self, tp): + # When producing C, expand all anonymous struct/union fields. + # That's necessary to have C code checking the offsets of the + # individual fields contained in them. When producing Python, + # don't do it and instead write it like it is, with the + # corresponding fields having an empty name. Empty names are + # recognized at runtime when we import the generated Python + # file. + expand_anonymous_struct_union = not self.target_is_python + return tp.enumfields(expand_anonymous_struct_union) + + def _do_collect_type(self, tp): + if not isinstance(tp, model.BaseTypeByIdentity): + if isinstance(tp, tuple): + for x in tp: + self._do_collect_type(x) + return + if tp not in self._typesdict: + self._typesdict[tp] = None + if isinstance(tp, model.FunctionPtrType): + self._do_collect_type(tp.as_raw_function()) + elif isinstance(tp, model.StructOrUnion): + if tp.fldtypes is not None and ( + tp not in self.ffi._parser._included_declarations): + for name1, tp1, _, _ in self._enum_fields(tp): + self._do_collect_type(self._field_type(tp, name1, tp1)) + else: + for _, x in tp._get_items(): + self._do_collect_type(x) + + def _generate(self, step_name): + lst = self.ffi._parser._declarations.items() + for name, (tp, quals) in sorted(lst): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_cpy_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in recompile(): %r" % name) + try: + self._current_quals = quals + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + # ---------- + + ALL_STEPS = ["global", "field", "struct_union", "enum", "typename"] + + def collect_step_tables(self): + # collect the declarations for '_cffi_globals', '_cffi_typenames', etc. + self._lsts = {} + for step_name in self.ALL_STEPS: + self._lsts[step_name] = [] + self._seen_struct_unions = set() + self._generate("ctx") + self._add_missing_struct_unions() + # + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + if step_name != "field": + lst.sort(key=lambda entry: entry.name) + self._lsts[step_name] = tuple(lst) # don't change any more + # + # check for a possible internal inconsistency: _cffi_struct_unions + # should have been generated with exactly self._struct_unions + lst = self._lsts["struct_union"] + for tp, i in self._struct_unions.items(): + assert i < len(lst) + assert lst[i].name == tp.name + assert len(lst) == len(self._struct_unions) + # same with enums + lst = self._lsts["enum"] + for tp, i in self._enums.items(): + assert i < len(lst) + assert lst[i].name == tp.name + assert len(lst) == len(self._enums) + + # ---------- + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def write_source_to_f(self, f, preamble): + if self.target_is_python: + assert preamble is None + self.write_py_source_to_f(f) + else: + assert preamble is not None + self.write_c_source_to_f(f, preamble) + + def _rel_readlines(self, filename): + g = open(os.path.join(os.path.dirname(__file__), filename), 'r') + lines = g.readlines() + g.close() + return lines + + def write_c_source_to_f(self, f, preamble): + self._f = f + prnt = self._prnt + if self.ffi._embedding is not None: + prnt('#define _CFFI_USE_EMBEDDING') + if not USE_LIMITED_API: + prnt('#define _CFFI_NO_LIMITED_API') + # + # first the '#include' (actually done by inlining the file's content) + lines = self._rel_readlines('_cffi_include.h') + i = lines.index('#include "parse_c_type.h"\n') + lines[i:i+1] = self._rel_readlines('parse_c_type.h') + prnt(''.join(lines)) + # + # if we have ffi._embedding != None, we give it here as a macro + # and include an extra file + base_module_name = self.module_name.split('.')[-1] + if self.ffi._embedding is not None: + prnt('#define _CFFI_MODULE_NAME "%s"' % (self.module_name,)) + prnt('static const char _CFFI_PYTHON_STARTUP_CODE[] = {') + self._print_string_literal_in_array(self.ffi._embedding) + prnt('0 };') + prnt('#ifdef PYPY_VERSION') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC _cffi_pypyinit_%s' % ( + base_module_name,)) + prnt('#elif PY_MAJOR_VERSION >= 3') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC PyInit_%s' % ( + base_module_name,)) + prnt('#else') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC init%s' % ( + base_module_name,)) + prnt('#endif') + lines = self._rel_readlines('_embedding.h') + i = lines.index('#include "_cffi_errors.h"\n') + lines[i:i+1] = self._rel_readlines('_cffi_errors.h') + prnt(''.join(lines)) + self.needs_version(VERSION_EMBEDDED) + # + # then paste the C source given by the user, verbatim. + prnt('/************************************************************/') + prnt() + prnt(preamble) + prnt() + prnt('/************************************************************/') + prnt() + # + # the declaration of '_cffi_types' + prnt('static void *_cffi_types[] = {') + typeindex2type = dict([(i, tp) for (tp, i) in self._typesdict.items()]) + for i, op in enumerate(self.cffi_types): + comment = '' + if i in typeindex2type: + comment = ' // ' + typeindex2type[i]._get_c_name() + prnt('/* %2d */ %s,%s' % (i, op.as_c_expr(), comment)) + if not self.cffi_types: + prnt(' 0') + prnt('};') + prnt() + # + # call generate_cpy_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._seen_constants = set() + self._generate("decl") + # + # the declaration of '_cffi_globals' and '_cffi_typenames' + nums = {} + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + nums[step_name] = len(lst) + if nums[step_name] > 0: + prnt('static const struct _cffi_%s_s _cffi_%ss[] = {' % ( + step_name, step_name)) + for entry in lst: + prnt(entry.as_c_expr()) + prnt('};') + prnt() + # + # the declaration of '_cffi_includes' + if self.ffi._included_ffis: + prnt('static const char * const _cffi_includes[] = {') + for ffi_to_include in self.ffi._included_ffis: + try: + included_module_name, included_source = ( + ffi_to_include._assigned_source[:2]) + except AttributeError: + raise VerificationError( + "ffi object %r includes %r, but the latter has not " + "been prepared with set_source()" % ( + self.ffi, ffi_to_include,)) + if included_source is None: + raise VerificationError( + "not implemented yet: ffi.include() of a Python-based " + "ffi inside a C-based ffi") + prnt(' "%s",' % (included_module_name,)) + prnt(' NULL') + prnt('};') + prnt() + # + # the declaration of '_cffi_type_context' + prnt('static const struct _cffi_type_context_s _cffi_type_context = {') + prnt(' _cffi_types,') + for step_name in self.ALL_STEPS: + if nums[step_name] > 0: + prnt(' _cffi_%ss,' % step_name) + else: + prnt(' NULL, /* no %ss */' % step_name) + for step_name in self.ALL_STEPS: + if step_name != "field": + prnt(' %d, /* num_%ss */' % (nums[step_name], step_name)) + if self.ffi._included_ffis: + prnt(' _cffi_includes,') + else: + prnt(' NULL, /* no includes */') + prnt(' %d, /* num_types */' % (len(self.cffi_types),)) + flags = 0 + if self._num_externpy > 0 or self.ffi._embedding is not None: + flags |= 1 # set to mean that we use extern "Python" + prnt(' %d, /* flags */' % flags) + prnt('};') + prnt() + # + # the init function + prnt('#ifdef __GNUC__') + prnt('# pragma GCC visibility push(default) /* for -fvisibility= */') + prnt('#endif') + prnt() + prnt('#ifdef PYPY_VERSION') + prnt('PyMODINIT_FUNC') + prnt('_cffi_pypyinit_%s(const void *p[])' % (base_module_name,)) + prnt('{') + if flags & 1: + prnt(' if (((intptr_t)p[0]) >= 0x0A03) {') + prnt(' _cffi_call_python_org = ' + '(void(*)(struct _cffi_externpy_s *, char *))p[1];') + prnt(' }') + prnt(' p[0] = (const void *)0x%x;' % self._version) + prnt(' p[1] = &_cffi_type_context;') + prnt('#if PY_MAJOR_VERSION >= 3') + prnt(' return NULL;') + prnt('#endif') + prnt('}') + # on Windows, distutils insists on putting init_cffi_xyz in + # 'export_symbols', so instead of fighting it, just give up and + # give it one + prnt('# ifdef _MSC_VER') + prnt(' PyMODINIT_FUNC') + prnt('# if PY_MAJOR_VERSION >= 3') + prnt(' PyInit_%s(void) { return NULL; }' % (base_module_name,)) + prnt('# else') + prnt(' init%s(void) { }' % (base_module_name,)) + prnt('# endif') + prnt('# endif') + prnt('#elif PY_MAJOR_VERSION >= 3') + prnt('PyMODINIT_FUNC') + prnt('PyInit_%s(void)' % (base_module_name,)) + prnt('{') + prnt(' return _cffi_init("%s", 0x%x, &_cffi_type_context);' % ( + self.module_name, self._version)) + prnt('}') + prnt('#else') + prnt('PyMODINIT_FUNC') + prnt('init%s(void)' % (base_module_name,)) + prnt('{') + prnt(' _cffi_init("%s", 0x%x, &_cffi_type_context);' % ( + self.module_name, self._version)) + prnt('}') + prnt('#endif') + prnt() + prnt('#ifdef __GNUC__') + prnt('# pragma GCC visibility pop') + prnt('#endif') + self._version = None + + def _to_py(self, x): + if isinstance(x, str): + return "b'%s'" % (x,) + if isinstance(x, (list, tuple)): + rep = [self._to_py(item) for item in x] + if len(rep) == 1: + rep.append('') + return "(%s)" % (','.join(rep),) + return x.as_python_expr() # Py2: unicode unexpected; Py3: bytes unexp. + + def write_py_source_to_f(self, f): + self._f = f + prnt = self._prnt + # + # header + prnt("# auto-generated file") + prnt("import _cffi_backend") + # + # the 'import' of the included ffis + num_includes = len(self.ffi._included_ffis or ()) + for i in range(num_includes): + ffi_to_include = self.ffi._included_ffis[i] + try: + included_module_name, included_source = ( + ffi_to_include._assigned_source[:2]) + except AttributeError: + raise VerificationError( + "ffi object %r includes %r, but the latter has not " + "been prepared with set_source()" % ( + self.ffi, ffi_to_include,)) + if included_source is not None: + raise VerificationError( + "not implemented yet: ffi.include() of a C-based " + "ffi inside a Python-based ffi") + prnt('from %s import ffi as _ffi%d' % (included_module_name, i)) + prnt() + prnt("ffi = _cffi_backend.FFI('%s'," % (self.module_name,)) + prnt(" _version = 0x%x," % (self._version,)) + self._version = None + # + # the '_types' keyword argument + self.cffi_types = tuple(self.cffi_types) # don't change any more + types_lst = [op.as_python_bytes() for op in self.cffi_types] + prnt(' _types = %s,' % (self._to_py(''.join(types_lst)),)) + typeindex2type = dict([(i, tp) for (tp, i) in self._typesdict.items()]) + # + # the keyword arguments from ALL_STEPS + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + if len(lst) > 0 and step_name != "field": + prnt(' _%ss = %s,' % (step_name, self._to_py(lst))) + # + # the '_includes' keyword argument + if num_includes > 0: + prnt(' _includes = (%s,),' % ( + ', '.join(['_ffi%d' % i for i in range(num_includes)]),)) + # + # the footer + prnt(')') + + # ---------- + + def _gettypenum(self, type): + # a KeyError here is a bug. please report it! :-) + return self._typesdict[type] + + def _convert_funcarg_to_c(self, tp, fromvar, tovar, errcode): + extraarg = '' + if isinstance(tp, model.BasePrimitiveType) and not tp.is_complex_type(): + if tp.is_integer_type() and tp.name != '_Bool': + converter = '_cffi_to_c_int' + extraarg = ', %s' % tp.name + elif isinstance(tp, model.UnknownFloatType): + # don't check with is_float_type(): it may be a 'long + # double' here, and _cffi_to_c_double would loose precision + converter = '(%s)_cffi_to_c_double' % (tp.get_c_name(''),) + else: + cname = tp.get_c_name('') + converter = '(%s)_cffi_to_c_%s' % (cname, + tp.name.replace(' ', '_')) + if cname in ('char16_t', 'char32_t'): + self.needs_version(VERSION_CHAR16CHAR32) + errvalue = '-1' + # + elif isinstance(tp, model.PointerType): + self._convert_funcarg_to_c_ptr_or_array(tp, fromvar, + tovar, errcode) + return + # + elif (isinstance(tp, model.StructOrUnionOrEnum) or + isinstance(tp, model.BasePrimitiveType)): + # a struct (not a struct pointer) as a function argument; + # or, a complex (the same code works) + self._prnt(' if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)' + % (tovar, self._gettypenum(tp), fromvar)) + self._prnt(' %s;' % errcode) + return + # + elif isinstance(tp, model.FunctionPtrType): + converter = '(%s)_cffi_to_c_pointer' % tp.get_c_name('') + extraarg = ', _cffi_type(%d)' % self._gettypenum(tp) + errvalue = 'NULL' + # + else: + raise NotImplementedError(tp) + # + self._prnt(' %s = %s(%s%s);' % (tovar, converter, fromvar, extraarg)) + self._prnt(' if (%s == (%s)%s && PyErr_Occurred())' % ( + tovar, tp.get_c_name(''), errvalue)) + self._prnt(' %s;' % errcode) + + def _extra_local_variables(self, tp, localvars, freelines): + if isinstance(tp, model.PointerType): + localvars.add('Py_ssize_t datasize') + localvars.add('struct _cffi_freeme_s *large_args_free = NULL') + freelines.add('if (large_args_free != NULL)' + ' _cffi_free_array_arguments(large_args_free);') + + def _convert_funcarg_to_c_ptr_or_array(self, tp, fromvar, tovar, errcode): + self._prnt(' datasize = _cffi_prepare_pointer_call_argument(') + self._prnt(' _cffi_type(%d), %s, (char **)&%s);' % ( + self._gettypenum(tp), fromvar, tovar)) + self._prnt(' if (datasize != 0) {') + self._prnt(' %s = ((size_t)datasize) <= 640 ? ' + '(%s)alloca((size_t)datasize) : NULL;' % ( + tovar, tp.get_c_name(''))) + self._prnt(' if (_cffi_convert_array_argument(_cffi_type(%d), %s, ' + '(char **)&%s,' % (self._gettypenum(tp), fromvar, tovar)) + self._prnt(' datasize, &large_args_free) < 0)') + self._prnt(' %s;' % errcode) + self._prnt(' }') + + def _convert_expr_from_c(self, tp, var, context): + if isinstance(tp, model.BasePrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + return '_cffi_from_c_int(%s, %s)' % (var, tp.name) + elif isinstance(tp, model.UnknownFloatType): + return '_cffi_from_c_double(%s)' % (var,) + elif tp.name != 'long double' and not tp.is_complex_type(): + cname = tp.name.replace(' ', '_') + if cname in ('char16_t', 'char32_t'): + self.needs_version(VERSION_CHAR16CHAR32) + return '_cffi_from_c_%s(%s)' % (cname, var) + else: + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, (model.PointerType, model.FunctionPtrType)): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.ArrayType): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(model.PointerType(tp.item))) + elif isinstance(tp, model.StructOrUnion): + if tp.fldnames is None: + raise TypeError("'%s' is used as %s, but is opaque" % ( + tp._get_c_name(), context)) + return '_cffi_from_c_struct((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.EnumType): + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + else: + raise NotImplementedError(tp) + + # ---------- + # typedefs + + def _typedef_type(self, tp, name): + return self._global_type(tp, "(*(%s *)0)" % (name,)) + + def _generate_cpy_typedef_collecttype(self, tp, name): + self._do_collect_type(self._typedef_type(tp, name)) + + def _generate_cpy_typedef_decl(self, tp, name): + pass + + def _typedef_ctx(self, tp, name): + type_index = self._typesdict[tp] + self._lsts["typename"].append(TypenameExpr(name, type_index)) + + def _generate_cpy_typedef_ctx(self, tp, name): + tp = self._typedef_type(tp, name) + self._typedef_ctx(tp, name) + if getattr(tp, "origin", None) == "unknown_type": + self._struct_ctx(tp, tp.name, approxname=None) + elif isinstance(tp, model.NamedPointerType): + self._struct_ctx(tp.totype, tp.totype.name, approxname=tp.name, + named_ptr=tp) + + # ---------- + # function declarations + + def _generate_cpy_function_collecttype(self, tp, name): + self._do_collect_type(tp.as_raw_function()) + if tp.ellipsis and not self.target_is_python: + self._do_collect_type(tp) + + def _generate_cpy_function_decl(self, tp, name): + assert not self.target_is_python + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no CPython wrapper) + self._generate_cpy_constant_decl(tp, name) + return + prnt = self._prnt + numargs = len(tp.args) + if numargs == 0: + argname = 'noarg' + elif numargs == 1: + argname = 'arg0' + else: + argname = 'args' + # + # ------------------------------ + # the 'd' version of the function, only for addressof(lib, 'func') + arguments = [] + call_arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arguments.append(type.get_c_name(' x%d' % i, context)) + call_arguments.append('x%d' % i) + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + if tp.abi: + abi = tp.abi + ' ' + else: + abi = '' + name_and_arguments = '%s_cffi_d_%s(%s)' % (abi, name, repr_arguments) + prnt('static %s' % (tp.result.get_c_name(name_and_arguments),)) + prnt('{') + call_arguments = ', '.join(call_arguments) + result_code = 'return ' + if isinstance(tp.result, model.VoidType): + result_code = '' + prnt(' %s%s(%s);' % (result_code, name, call_arguments)) + prnt('}') + # + prnt('#ifndef PYPY_VERSION') # ------------------------------ + # + prnt('static PyObject *') + prnt('_cffi_f_%s(PyObject *self, PyObject *%s)' % (name, argname)) + prnt('{') + # + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arg = type.get_c_name(' x%d' % i, context) + prnt(' %s;' % arg) + # + localvars = set() + freelines = set() + for type in tp.args: + self._extra_local_variables(type, localvars, freelines) + for decl in sorted(localvars): + prnt(' %s;' % (decl,)) + # + if not isinstance(tp.result, model.VoidType): + result_code = 'result = ' + context = 'result of %s' % name + result_decl = ' %s;' % tp.result.get_c_name(' result', context) + prnt(result_decl) + prnt(' PyObject *pyresult;') + else: + result_decl = None + result_code = '' + # + if len(tp.args) > 1: + rng = range(len(tp.args)) + for i in rng: + prnt(' PyObject *arg%d;' % i) + prnt() + prnt(' if (!PyArg_UnpackTuple(args, "%s", %d, %d, %s))' % ( + name, len(rng), len(rng), + ', '.join(['&arg%d' % i for i in rng]))) + prnt(' return NULL;') + prnt() + # + for i, type in enumerate(tp.args): + self._convert_funcarg_to_c(type, 'arg%d' % i, 'x%d' % i, + 'return NULL') + prnt() + # + prnt(' Py_BEGIN_ALLOW_THREADS') + prnt(' _cffi_restore_errno();') + call_arguments = ['x%d' % i for i in range(len(tp.args))] + call_arguments = ', '.join(call_arguments) + prnt(' { %s%s(%s); }' % (result_code, name, call_arguments)) + prnt(' _cffi_save_errno();') + prnt(' Py_END_ALLOW_THREADS') + prnt() + # + prnt(' (void)self; /* unused */') + if numargs == 0: + prnt(' (void)noarg; /* unused */') + if result_code: + prnt(' pyresult = %s;' % + self._convert_expr_from_c(tp.result, 'result', 'result type')) + for freeline in freelines: + prnt(' ' + freeline) + prnt(' return pyresult;') + else: + for freeline in freelines: + prnt(' ' + freeline) + prnt(' Py_INCREF(Py_None);') + prnt(' return Py_None;') + prnt('}') + # + prnt('#else') # ------------------------------ + # + # the PyPy version: need to replace struct/union arguments with + # pointers, and if the result is a struct/union, insert a first + # arg that is a pointer to the result. We also do that for + # complex args and return type. + def need_indirection(type): + return (isinstance(type, model.StructOrUnion) or + (isinstance(type, model.PrimitiveType) and + type.is_complex_type())) + difference = False + arguments = [] + call_arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + indirection = '' + if need_indirection(type): + indirection = '*' + difference = True + arg = type.get_c_name(' %sx%d' % (indirection, i), context) + arguments.append(arg) + call_arguments.append('%sx%d' % (indirection, i)) + tp_result = tp.result + if need_indirection(tp_result): + context = 'result of %s' % name + arg = tp_result.get_c_name(' *result', context) + arguments.insert(0, arg) + tp_result = model.void_type + result_decl = None + result_code = '*result = ' + difference = True + if difference: + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + name_and_arguments = '%s_cffi_f_%s(%s)' % (abi, name, + repr_arguments) + prnt('static %s' % (tp_result.get_c_name(name_and_arguments),)) + prnt('{') + if result_decl: + prnt(result_decl) + call_arguments = ', '.join(call_arguments) + prnt(' { %s%s(%s); }' % (result_code, name, call_arguments)) + if result_decl: + prnt(' return result;') + prnt('}') + else: + prnt('# define _cffi_f_%s _cffi_d_%s' % (name, name)) + # + prnt('#endif') # ------------------------------ + prnt() + + def _generate_cpy_function_ctx(self, tp, name): + if tp.ellipsis and not self.target_is_python: + self._generate_cpy_constant_ctx(tp, name) + return + type_index = self._typesdict[tp.as_raw_function()] + numargs = len(tp.args) + if self.target_is_python: + meth_kind = OP_DLOPEN_FUNC + elif numargs == 0: + meth_kind = OP_CPYTHON_BLTN_N # 'METH_NOARGS' + elif numargs == 1: + meth_kind = OP_CPYTHON_BLTN_O # 'METH_O' + else: + meth_kind = OP_CPYTHON_BLTN_V # 'METH_VARARGS' + self._lsts["global"].append( + GlobalExpr(name, '_cffi_f_%s' % name, + CffiOp(meth_kind, type_index), + size='_cffi_d_%s' % name)) + + # ---------- + # named structs or unions + + def _field_type(self, tp_struct, field_name, tp_field): + if isinstance(tp_field, model.ArrayType): + actual_length = tp_field.length + if actual_length == '...': + ptr_struct_name = tp_struct.get_c_name('*') + actual_length = '_cffi_array_len(((%s)0)->%s)' % ( + ptr_struct_name, field_name) + tp_item = self._field_type(tp_struct, '%s[0]' % field_name, + tp_field.item) + tp_field = model.ArrayType(tp_item, actual_length) + return tp_field + + def _struct_collecttype(self, tp): + self._do_collect_type(tp) + if self.target_is_python: + # also requires nested anon struct/unions in ABI mode, recursively + for fldtype in tp.anonymous_struct_fields(): + self._struct_collecttype(fldtype) + + def _struct_decl(self, tp, cname, approxname): + if tp.fldtypes is None: + return + prnt = self._prnt + checkfuncname = '_cffi_checkfld_%s' % (approxname,) + prnt('_CFFI_UNUSED_FN') + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in self._enum_fields(tp): + try: + if ftype.is_integer_type() or fbitsize >= 0: + # accept all integers, but complain on float or double + if fname != '': + prnt(" (void)((p->%s) | 0); /* check that '%s.%s' is " + "an integer */" % (fname, cname, fname)) + continue + # only accept exactly the type declared, except that '[]' + # is interpreted as a '*' and so will match any array length. + # (It would also match '*', but that's harder to detect...) + while (isinstance(ftype, model.ArrayType) + and (ftype.length is None or ftype.length == '...')): + ftype = ftype.item + fname = fname + '[0]' + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + prnt('struct _cffi_align_%s { char x; %s y; };' % (approxname, cname)) + prnt() + + def _struct_ctx(self, tp, cname, approxname, named_ptr=None): + type_index = self._typesdict[tp] + reason_for_not_expanding = None + flags = [] + if isinstance(tp, model.UnionType): + flags.append("_CFFI_F_UNION") + if tp.fldtypes is None: + flags.append("_CFFI_F_OPAQUE") + reason_for_not_expanding = "opaque" + if (tp not in self.ffi._parser._included_declarations and + (named_ptr is None or + named_ptr not in self.ffi._parser._included_declarations)): + if tp.fldtypes is None: + pass # opaque + elif tp.partial or any(tp.anonymous_struct_fields()): + pass # field layout obtained silently from the C compiler + else: + flags.append("_CFFI_F_CHECK_FIELDS") + if tp.packed: + if tp.packed > 1: + raise NotImplementedError( + "%r is declared with 'pack=%r'; only 0 or 1 are " + "supported in API mode (try to use \"...;\", which " + "does not require a 'pack' declaration)" % + (tp, tp.packed)) + flags.append("_CFFI_F_PACKED") + else: + flags.append("_CFFI_F_EXTERNAL") + reason_for_not_expanding = "external" + flags = '|'.join(flags) or '0' + c_fields = [] + if reason_for_not_expanding is None: + enumfields = list(self._enum_fields(tp)) + for fldname, fldtype, fbitsize, fqual in enumfields: + fldtype = self._field_type(tp, fldname, fldtype) + self._check_not_opaque(fldtype, + "field '%s.%s'" % (tp.name, fldname)) + # cname is None for _add_missing_struct_unions() only + op = OP_NOOP + if fbitsize >= 0: + op = OP_BITFIELD + size = '%d /* bits */' % fbitsize + elif cname is None or ( + isinstance(fldtype, model.ArrayType) and + fldtype.length is None): + size = '(size_t)-1' + else: + size = 'sizeof(((%s)0)->%s)' % ( + tp.get_c_name('*') if named_ptr is None + else named_ptr.name, + fldname) + if cname is None or fbitsize >= 0: + offset = '(size_t)-1' + elif named_ptr is not None: + offset = '(size_t)(((char *)&((%s)4096)->%s) - (char *)4096)' % ( + named_ptr.name, fldname) + else: + offset = 'offsetof(%s, %s)' % (tp.get_c_name(''), fldname) + c_fields.append( + FieldExpr(fldname, offset, size, fbitsize, + CffiOp(op, self._typesdict[fldtype]))) + first_field_index = len(self._lsts["field"]) + self._lsts["field"].extend(c_fields) + # + if cname is None: # unknown name, for _add_missing_struct_unions + size = '(size_t)-2' + align = -2 + comment = "unnamed" + else: + if named_ptr is not None: + size = 'sizeof(*(%s)0)' % (named_ptr.name,) + align = '-1 /* unknown alignment */' + else: + size = 'sizeof(%s)' % (cname,) + align = 'offsetof(struct _cffi_align_%s, y)' % (approxname,) + comment = None + else: + size = '(size_t)-1' + align = -1 + first_field_index = -1 + comment = reason_for_not_expanding + self._lsts["struct_union"].append( + StructUnionExpr(tp.name, type_index, flags, size, align, comment, + first_field_index, c_fields)) + self._seen_struct_unions.add(tp) + + def _check_not_opaque(self, tp, location): + while isinstance(tp, model.ArrayType): + tp = tp.item + if isinstance(tp, model.StructOrUnion) and tp.fldtypes is None: + raise TypeError( + "%s is of an opaque type (not declared in cdef())" % location) + + def _add_missing_struct_unions(self): + # not very nice, but some struct declarations might be missing + # because they don't have any known C name. Check that they are + # not partial (we can't complete or verify them!) and emit them + # anonymously. + lst = list(self._struct_unions.items()) + lst.sort(key=lambda tp_order: tp_order[1]) + for tp, order in lst: + if tp not in self._seen_struct_unions: + if tp.partial: + raise NotImplementedError("internal inconsistency: %r is " + "partial but was not seen at " + "this point" % (tp,)) + if tp.name.startswith('$') and tp.name[1:].isdigit(): + approxname = tp.name[1:] + elif tp.name == '_IO_FILE' and tp.forcename == 'FILE': + approxname = 'FILE' + self._typedef_ctx(tp, 'FILE') + else: + raise NotImplementedError("internal inconsistency: %r" % + (tp,)) + self._struct_ctx(tp, None, approxname) + + def _generate_cpy_struct_collecttype(self, tp, name): + self._struct_collecttype(tp) + _generate_cpy_union_collecttype = _generate_cpy_struct_collecttype + + def _struct_names(self, tp): + cname = tp.get_c_name('') + if ' ' in cname: + return cname, cname.replace(' ', '_') + else: + return cname, '_' + cname + + def _generate_cpy_struct_decl(self, tp, name): + self._struct_decl(tp, *self._struct_names(tp)) + _generate_cpy_union_decl = _generate_cpy_struct_decl + + def _generate_cpy_struct_ctx(self, tp, name): + self._struct_ctx(tp, *self._struct_names(tp)) + _generate_cpy_union_ctx = _generate_cpy_struct_ctx + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + def _generate_cpy_anonymous_collecttype(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_collecttype(tp, name) + else: + self._struct_collecttype(tp) + + def _generate_cpy_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_decl(tp) + else: + self._struct_decl(tp, name, 'typedef_' + name) + + def _generate_cpy_anonymous_ctx(self, tp, name): + if isinstance(tp, model.EnumType): + self._enum_ctx(tp, name) + else: + self._struct_ctx(tp, name, 'typedef_' + name) + + # ---------- + # constants, declared with "static const ..." + + def _generate_cpy_const(self, is_int, name, tp=None, category='const', + check_value=None): + if (category, name) in self._seen_constants: + raise VerificationError( + "duplicate declaration of %s '%s'" % (category, name)) + self._seen_constants.add((category, name)) + # + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + if is_int: + prnt('static int %s(unsigned long long *o)' % funcname) + prnt('{') + prnt(' int n = (%s) <= 0;' % (name,)) + prnt(' *o = (unsigned long long)((%s) | 0);' + ' /* check that %s is an integer */' % (name, name)) + if check_value is not None: + if check_value > 0: + check_value = '%dU' % (check_value,) + prnt(' if (!_cffi_check_int(*o, n, %s))' % (check_value,)) + prnt(' n |= 2;') + prnt(' return n;') + prnt('}') + else: + assert check_value is None + prnt('static void %s(char *o)' % funcname) + prnt('{') + prnt(' *(%s)o = %s;' % (tp.get_c_name('*'), name)) + prnt('}') + prnt() + + def _generate_cpy_constant_collecttype(self, tp, name): + is_int = tp.is_integer_type() + if not is_int or self.target_is_python: + self._do_collect_type(tp) + + def _generate_cpy_constant_decl(self, tp, name): + is_int = tp.is_integer_type() + self._generate_cpy_const(is_int, name, tp) + + def _generate_cpy_constant_ctx(self, tp, name): + if not self.target_is_python and tp.is_integer_type(): + type_op = CffiOp(OP_CONSTANT_INT, -1) + else: + if self.target_is_python: + const_kind = OP_DLOPEN_CONST + else: + const_kind = OP_CONSTANT + type_index = self._typesdict[tp] + type_op = CffiOp(const_kind, type_index) + self._lsts["global"].append( + GlobalExpr(name, '_cffi_const_%s' % name, type_op)) + + # ---------- + # enums + + def _generate_cpy_enum_collecttype(self, tp, name): + self._do_collect_type(tp) + + def _generate_cpy_enum_decl(self, tp, name=None): + for enumerator in tp.enumerators: + self._generate_cpy_const(True, enumerator) + + def _enum_ctx(self, tp, cname): + type_index = self._typesdict[tp] + type_op = CffiOp(OP_ENUM, -1) + if self.target_is_python: + tp.check_not_partial() + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._lsts["global"].append( + GlobalExpr(enumerator, '_cffi_const_%s' % enumerator, type_op, + check_value=enumvalue)) + # + if cname is not None and '$' not in cname and not self.target_is_python: + size = "sizeof(%s)" % cname + signed = "((%s)-1) <= 0" % cname + else: + basetp = tp.build_baseinttype(self.ffi, []) + size = self.ffi.sizeof(basetp) + signed = int(int(self.ffi.cast(basetp, -1)) < 0) + allenums = ",".join(tp.enumerators) + self._lsts["enum"].append( + EnumExpr(tp.name, type_index, size, signed, allenums)) + + def _generate_cpy_enum_ctx(self, tp, name): + self._enum_ctx(tp, tp._get_c_name()) + + # ---------- + # macros: for now only for integers + + def _generate_cpy_macro_collecttype(self, tp, name): + pass + + def _generate_cpy_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_cpy_const(True, name, check_value=check_value) + + def _generate_cpy_macro_ctx(self, tp, name): + if tp == '...': + if self.target_is_python: + raise VerificationError( + "cannot use the syntax '...' in '#define %s ...' when " + "using the ABI mode" % (name,)) + check_value = None + else: + check_value = tp # an integer + type_op = CffiOp(OP_CONSTANT_INT, -1) + self._lsts["global"].append( + GlobalExpr(name, '_cffi_const_%s' % name, type_op, + check_value=check_value)) + + # ---------- + # global variables + + def _global_type(self, tp, global_name): + if isinstance(tp, model.ArrayType): + actual_length = tp.length + if actual_length == '...': + actual_length = '_cffi_array_len(%s)' % (global_name,) + tp_item = self._global_type(tp.item, '%s[0]' % global_name) + tp = model.ArrayType(tp_item, actual_length) + return tp + + def _generate_cpy_variable_collecttype(self, tp, name): + self._do_collect_type(self._global_type(tp, name)) + + def _generate_cpy_variable_decl(self, tp, name): + prnt = self._prnt + tp = self._global_type(tp, name) + if isinstance(tp, model.ArrayType) and tp.length is None: + tp = tp.item + ampersand = '' + else: + ampersand = '&' + # This code assumes that casts from "tp *" to "void *" is a + # no-op, i.e. a function that returns a "tp *" can be called + # as if it returned a "void *". This should be generally true + # on any modern machine. The only exception to that rule (on + # uncommon architectures, and as far as I can tell) might be + # if 'tp' were a function type, but that is not possible here. + # (If 'tp' is a function _pointer_ type, then casts from "fn_t + # **" to "void *" are again no-ops, as far as I can tell.) + decl = '*_cffi_var_%s(void)' % (name,) + prnt('static ' + tp.get_c_name(decl, quals=self._current_quals)) + prnt('{') + prnt(' return %s(%s);' % (ampersand, name)) + prnt('}') + prnt() + + def _generate_cpy_variable_ctx(self, tp, name): + tp = self._global_type(tp, name) + type_index = self._typesdict[tp] + if self.target_is_python: + op = OP_GLOBAL_VAR + else: + op = OP_GLOBAL_VAR_F + self._lsts["global"].append( + GlobalExpr(name, '_cffi_var_%s' % name, CffiOp(op, type_index))) + + # ---------- + # extern "Python" + + def _generate_cpy_extern_python_collecttype(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + self._do_collect_type(tp) + _generate_cpy_dllexport_python_collecttype = \ + _generate_cpy_extern_python_plus_c_collecttype = \ + _generate_cpy_extern_python_collecttype + + def _extern_python_decl(self, tp, name, tag_and_space): + prnt = self._prnt + if isinstance(tp.result, model.VoidType): + size_of_result = '0' + else: + context = 'result of %s' % name + size_of_result = '(int)sizeof(%s)' % ( + tp.result.get_c_name('', context),) + prnt('static struct _cffi_externpy_s _cffi_externpy__%s =' % name) + prnt(' { "%s.%s", %s, 0, 0 };' % ( + self.module_name, name, size_of_result)) + prnt() + # + arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arg = type.get_c_name(' a%d' % i, context) + arguments.append(arg) + # + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + name_and_arguments = '%s(%s)' % (name, repr_arguments) + if tp.abi == "__stdcall": + name_and_arguments = '_cffi_stdcall ' + name_and_arguments + # + def may_need_128_bits(tp): + return (isinstance(tp, model.PrimitiveType) and + tp.name == 'long double') + # + size_of_a = max(len(tp.args)*8, 8) + if may_need_128_bits(tp.result): + size_of_a = max(size_of_a, 16) + if isinstance(tp.result, model.StructOrUnion): + size_of_a = 'sizeof(%s) > %d ? sizeof(%s) : %d' % ( + tp.result.get_c_name(''), size_of_a, + tp.result.get_c_name(''), size_of_a) + prnt('%s%s' % (tag_and_space, tp.result.get_c_name(name_and_arguments))) + prnt('{') + prnt(' char a[%s];' % size_of_a) + prnt(' char *p = a;') + for i, type in enumerate(tp.args): + arg = 'a%d' % i + if (isinstance(type, model.StructOrUnion) or + may_need_128_bits(type)): + arg = '&' + arg + type = model.PointerType(type) + prnt(' *(%s)(p + %d) = %s;' % (type.get_c_name('*'), i*8, arg)) + prnt(' _cffi_call_python(&_cffi_externpy__%s, p);' % name) + if not isinstance(tp.result, model.VoidType): + prnt(' return *(%s)p;' % (tp.result.get_c_name('*'),)) + prnt('}') + prnt() + self._num_externpy += 1 + + def _generate_cpy_extern_python_decl(self, tp, name): + self._extern_python_decl(tp, name, 'static ') + + def _generate_cpy_dllexport_python_decl(self, tp, name): + self._extern_python_decl(tp, name, 'CFFI_DLLEXPORT ') + + def _generate_cpy_extern_python_plus_c_decl(self, tp, name): + self._extern_python_decl(tp, name, '') + + def _generate_cpy_extern_python_ctx(self, tp, name): + if self.target_is_python: + raise VerificationError( + "cannot use 'extern \"Python\"' in the ABI mode") + if tp.ellipsis: + raise NotImplementedError("a vararg function is extern \"Python\"") + type_index = self._typesdict[tp] + type_op = CffiOp(OP_EXTERN_PYTHON, type_index) + self._lsts["global"].append( + GlobalExpr(name, '&_cffi_externpy__%s' % name, type_op, name)) + + _generate_cpy_dllexport_python_ctx = \ + _generate_cpy_extern_python_plus_c_ctx = \ + _generate_cpy_extern_python_ctx + + def _print_string_literal_in_array(self, s): + prnt = self._prnt + prnt('// # NB. this is not a string because of a size limit in MSVC') + if not isinstance(s, bytes): # unicode + s = s.encode('utf-8') # -> bytes + else: + s.decode('utf-8') # got bytes, check for valid utf-8 + try: + s.decode('ascii') + except UnicodeDecodeError: + s = b'# -*- encoding: utf8 -*-\n' + s + for line in s.splitlines(True): + comment = line + if type('//') is bytes: # python2 + line = map(ord, line) # make a list of integers + else: # python3 + # type(line) is bytes, which enumerates like a list of integers + comment = ascii(comment)[1:-1] + prnt(('// ' + comment).rstrip()) + printed_line = '' + for c in line: + if len(printed_line) >= 76: + prnt(printed_line) + printed_line = '' + printed_line += '%d,' % (c,) + prnt(printed_line) + + # ---------- + # emitting the opcodes for individual types + + def _emit_bytecode_VoidType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, PRIM_VOID) + + def _emit_bytecode_PrimitiveType(self, tp, index): + prim_index = PRIMITIVE_TO_INDEX[tp.name] + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, prim_index) + + def _emit_bytecode_UnknownIntegerType(self, tp, index): + s = ('_cffi_prim_int(sizeof(%s), (\n' + ' ((%s)-1) | 0 /* check that %s is an integer type */\n' + ' ) <= 0)' % (tp.name, tp.name, tp.name)) + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, s) + + def _emit_bytecode_UnknownFloatType(self, tp, index): + s = ('_cffi_prim_float(sizeof(%s) *\n' + ' (((%s)1) / 2) * 2 /* integer => 0, float => 1 */\n' + ' )' % (tp.name, tp.name)) + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, s) + + def _emit_bytecode_RawFunctionType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_FUNCTION, self._typesdict[tp.result]) + index += 1 + for tp1 in tp.args: + realindex = self._typesdict[tp1] + if index != realindex: + if isinstance(tp1, model.PrimitiveType): + self._emit_bytecode_PrimitiveType(tp1, index) + else: + self.cffi_types[index] = CffiOp(OP_NOOP, realindex) + index += 1 + flags = int(tp.ellipsis) + if tp.abi is not None: + if tp.abi == '__stdcall': + flags |= 2 + else: + raise NotImplementedError("abi=%r" % (tp.abi,)) + self.cffi_types[index] = CffiOp(OP_FUNCTION_END, flags) + + def _emit_bytecode_PointerType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_POINTER, self._typesdict[tp.totype]) + + _emit_bytecode_ConstPointerType = _emit_bytecode_PointerType + _emit_bytecode_NamedPointerType = _emit_bytecode_PointerType + + def _emit_bytecode_FunctionPtrType(self, tp, index): + raw = tp.as_raw_function() + self.cffi_types[index] = CffiOp(OP_POINTER, self._typesdict[raw]) + + def _emit_bytecode_ArrayType(self, tp, index): + item_index = self._typesdict[tp.item] + if tp.length is None: + self.cffi_types[index] = CffiOp(OP_OPEN_ARRAY, item_index) + elif tp.length == '...': + raise VerificationError( + "type %s badly placed: the '...' array length can only be " + "used on global arrays or on fields of structures" % ( + str(tp).replace('/*...*/', '...'),)) + else: + assert self.cffi_types[index + 1] == 'LEN' + self.cffi_types[index] = CffiOp(OP_ARRAY, item_index) + self.cffi_types[index + 1] = CffiOp(None, str(tp.length)) + + def _emit_bytecode_StructType(self, tp, index): + struct_index = self._struct_unions[tp] + self.cffi_types[index] = CffiOp(OP_STRUCT_UNION, struct_index) + _emit_bytecode_UnionType = _emit_bytecode_StructType + + def _emit_bytecode_EnumType(self, tp, index): + enum_index = self._enums[tp] + self.cffi_types[index] = CffiOp(OP_ENUM, enum_index) + + +if sys.version_info >= (3,): + NativeIO = io.StringIO +else: + class NativeIO(io.BytesIO): + def write(self, s): + if isinstance(s, unicode): + s = s.encode('ascii') + super(NativeIO, self).write(s) + +def _is_file_like(maybefile): + # compare to xml.etree.ElementTree._get_writer + return hasattr(maybefile, 'write') + +def _make_c_or_py_source(ffi, module_name, preamble, target_file, verbose): + if verbose: + print("generating %s" % (target_file,)) + recompiler = Recompiler(ffi, module_name, + target_is_python=(preamble is None)) + recompiler.collect_type_table() + recompiler.collect_step_tables() + if _is_file_like(target_file): + recompiler.write_source_to_f(target_file, preamble) + return True + f = NativeIO() + recompiler.write_source_to_f(f, preamble) + output = f.getvalue() + try: + with open(target_file, 'r') as f1: + if f1.read(len(output) + 1) != output: + raise IOError + if verbose: + print("(already up-to-date)") + return False # already up-to-date + except IOError: + tmp_file = '%s.~%d' % (target_file, os.getpid()) + with open(tmp_file, 'w') as f1: + f1.write(output) + try: + os.rename(tmp_file, target_file) + except OSError: + os.unlink(target_file) + os.rename(tmp_file, target_file) + return True + +def make_c_source(ffi, module_name, preamble, target_c_file, verbose=False): + assert preamble is not None + return _make_c_or_py_source(ffi, module_name, preamble, target_c_file, + verbose) + +def make_py_source(ffi, module_name, target_py_file, verbose=False): + return _make_c_or_py_source(ffi, module_name, None, target_py_file, + verbose) + +def _modname_to_file(outputdir, modname, extension): + parts = modname.split('.') + try: + os.makedirs(os.path.join(outputdir, *parts[:-1])) + except OSError: + pass + parts[-1] += extension + return os.path.join(outputdir, *parts), parts + + +# Aaargh. Distutils is not tested at all for the purpose of compiling +# DLLs that are not extension modules. Here are some hacks to work +# around that, in the _patch_for_*() functions... + +def _patch_meth(patchlist, cls, name, new_meth): + old = getattr(cls, name) + patchlist.append((cls, name, old)) + setattr(cls, name, new_meth) + return old + +def _unpatch_meths(patchlist): + for cls, name, old_meth in reversed(patchlist): + setattr(cls, name, old_meth) + +def _patch_for_embedding(patchlist): + if sys.platform == 'win32': + # we must not remove the manifest when building for embedding! + # FUTURE: this module was removed in setuptools 74; this is likely dead code and should be removed, + # since the toolchain it supports (VS2005-2008) is also long dead. + from cffi._shimmed_dist_utils import MSVCCompiler + if MSVCCompiler is not None: + _patch_meth(patchlist, MSVCCompiler, '_remove_visual_c_ref', + lambda self, manifest_file: manifest_file) + + if sys.platform == 'darwin': + # we must not make a '-bundle', but a '-dynamiclib' instead + from cffi._shimmed_dist_utils import CCompiler + def my_link_shared_object(self, *args, **kwds): + if '-bundle' in self.linker_so: + self.linker_so = list(self.linker_so) + i = self.linker_so.index('-bundle') + self.linker_so[i] = '-dynamiclib' + return old_link_shared_object(self, *args, **kwds) + old_link_shared_object = _patch_meth(patchlist, CCompiler, + 'link_shared_object', + my_link_shared_object) + +def _patch_for_target(patchlist, target): + from cffi._shimmed_dist_utils import build_ext + # if 'target' is different from '*', we need to patch some internal + # method to just return this 'target' value, instead of having it + # built from module_name + if target.endswith('.*'): + target = target[:-2] + if sys.platform == 'win32': + target += '.dll' + elif sys.platform == 'darwin': + target += '.dylib' + else: + target += '.so' + _patch_meth(patchlist, build_ext, 'get_ext_filename', + lambda self, ext_name: target) + + +def recompile(ffi, module_name, preamble, tmpdir='.', call_c_compiler=True, + c_file=None, source_extension='.c', extradir=None, + compiler_verbose=1, target=None, debug=None, + uses_ffiplatform=True, **kwds): + if not isinstance(module_name, str): + module_name = module_name.encode('ascii') + if ffi._windows_unicode: + ffi._apply_windows_unicode(kwds) + if preamble is not None: + if call_c_compiler and _is_file_like(c_file): + raise TypeError("Writing to file-like objects is not supported " + "with call_c_compiler=True") + embedding = (ffi._embedding is not None) + if embedding: + ffi._apply_embedding_fix(kwds) + if c_file is None: + c_file, parts = _modname_to_file(tmpdir, module_name, + source_extension) + if extradir: + parts = [extradir] + parts + ext_c_file = os.path.join(*parts) + else: + ext_c_file = c_file + # + if target is None: + if embedding: + target = '%s.*' % module_name + else: + target = '*' + # + if uses_ffiplatform: + ext = ffiplatform.get_extension(ext_c_file, module_name, **kwds) + else: + ext = None + updated = make_c_source(ffi, module_name, preamble, c_file, + verbose=compiler_verbose) + if call_c_compiler: + patchlist = [] + cwd = os.getcwd() + try: + if embedding: + _patch_for_embedding(patchlist) + if target != '*': + _patch_for_target(patchlist, target) + if compiler_verbose: + if tmpdir == '.': + msg = 'the current directory is' + else: + msg = 'setting the current directory to' + print('%s %r' % (msg, os.path.abspath(tmpdir))) + os.chdir(tmpdir) + outputfilename = ffiplatform.compile('.', ext, + compiler_verbose, debug) + finally: + os.chdir(cwd) + _unpatch_meths(patchlist) + return outputfilename + else: + return ext, updated + else: + if c_file is None: + c_file, _ = _modname_to_file(tmpdir, module_name, '.py') + updated = make_py_source(ffi, module_name, c_file, + verbose=compiler_verbose) + if call_c_compiler: + return c_file + else: + return None, updated + diff --git a/.venv/lib/python3.9/site-packages/cffi/setuptools_ext.py b/.venv/lib/python3.9/site-packages/cffi/setuptools_ext.py new file mode 100644 index 0000000..5cdd246 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/setuptools_ext.py @@ -0,0 +1,229 @@ +import os +import sys +import sysconfig + +try: + basestring +except NameError: + # Python 3.x + basestring = str + +def error(msg): + from cffi._shimmed_dist_utils import DistutilsSetupError + raise DistutilsSetupError(msg) + + +def execfile(filename, glob): + # We use execfile() (here rewritten for Python 3) instead of + # __import__() to load the build script. The problem with + # a normal import is that in some packages, the intermediate + # __init__.py files may already try to import the file that + # we are generating. + with open(filename) as f: + src = f.read() + src += '\n' # Python 2.6 compatibility + code = compile(src, filename, 'exec') + exec(code, glob, glob) + + +def add_cffi_module(dist, mod_spec): + from cffi.api import FFI + + if not isinstance(mod_spec, basestring): + error("argument to 'cffi_modules=...' must be a str or a list of str," + " not %r" % (type(mod_spec).__name__,)) + mod_spec = str(mod_spec) + try: + build_file_name, ffi_var_name = mod_spec.split(':') + except ValueError: + error("%r must be of the form 'path/build.py:ffi_variable'" % + (mod_spec,)) + if not os.path.exists(build_file_name): + ext = '' + rewritten = build_file_name.replace('.', '/') + '.py' + if os.path.exists(rewritten): + ext = ' (rewrite cffi_modules to [%r])' % ( + rewritten + ':' + ffi_var_name,) + error("%r does not name an existing file%s" % (build_file_name, ext)) + + mod_vars = {'__name__': '__cffi__', '__file__': build_file_name} + execfile(build_file_name, mod_vars) + + try: + ffi = mod_vars[ffi_var_name] + except KeyError: + error("%r: object %r not found in module" % (mod_spec, + ffi_var_name)) + if not isinstance(ffi, FFI): + ffi = ffi() # maybe it's a function instead of directly an ffi + if not isinstance(ffi, FFI): + error("%r is not an FFI instance (got %r)" % (mod_spec, + type(ffi).__name__)) + if not hasattr(ffi, '_assigned_source'): + error("%r: the set_source() method was not called" % (mod_spec,)) + module_name, source, source_extension, kwds = ffi._assigned_source + if ffi._windows_unicode: + kwds = kwds.copy() + ffi._apply_windows_unicode(kwds) + + if source is None: + _add_py_module(dist, ffi, module_name) + else: + _add_c_module(dist, ffi, module_name, source, source_extension, kwds) + +def _set_py_limited_api(Extension, kwds): + """ + Add py_limited_api to kwds if setuptools >= 26 is in use. + Do not alter the setting if it already exists. + Setuptools takes care of ignoring the flag on Python 2 and PyPy. + + CPython itself should ignore the flag in a debugging version + (by not listing .abi3.so in the extensions it supports), but + it doesn't so far, creating troubles. That's why we check + for "not hasattr(sys, 'gettotalrefcount')" (the 2.7 compatible equivalent + of 'd' not in sys.abiflags). (http://bugs.python.org/issue28401) + + On Windows, with CPython <= 3.4, it's better not to use py_limited_api + because virtualenv *still* doesn't copy PYTHON3.DLL on these versions. + Recently (2020) we started shipping only >= 3.5 wheels, though. So + we'll give it another try and set py_limited_api on Windows >= 3.5. + """ + from cffi._shimmed_dist_utils import log + from cffi import recompiler + + if ('py_limited_api' not in kwds and not hasattr(sys, 'gettotalrefcount') + and recompiler.USE_LIMITED_API): + import setuptools + try: + setuptools_major_version = int(setuptools.__version__.partition('.')[0]) + if setuptools_major_version >= 26: + kwds['py_limited_api'] = True + except ValueError: # certain development versions of setuptools + # If we don't know the version number of setuptools, we + # try to set 'py_limited_api' anyway. At worst, we get a + # warning. + kwds['py_limited_api'] = True + + if sysconfig.get_config_var("Py_GIL_DISABLED"): + if kwds.get('py_limited_api'): + log.info("Ignoring py_limited_api=True for free-threaded build.") + + kwds['py_limited_api'] = False + + if kwds.get('py_limited_api') is False: + # avoid setting Py_LIMITED_API if py_limited_api=False + # which _cffi_include.h does unless _CFFI_NO_LIMITED_API is defined + kwds.setdefault("define_macros", []).append(("_CFFI_NO_LIMITED_API", None)) + return kwds + +def _add_c_module(dist, ffi, module_name, source, source_extension, kwds): + # We are a setuptools extension. Need this build_ext for py_limited_api. + from setuptools.command.build_ext import build_ext + from cffi._shimmed_dist_utils import Extension, log, mkpath + from cffi import recompiler + + allsources = ['$PLACEHOLDER'] + allsources.extend(kwds.pop('sources', [])) + kwds = _set_py_limited_api(Extension, kwds) + ext = Extension(name=module_name, sources=allsources, **kwds) + + def make_mod(tmpdir, pre_run=None): + c_file = os.path.join(tmpdir, module_name + source_extension) + log.info("generating cffi module %r" % c_file) + mkpath(tmpdir) + # a setuptools-only, API-only hook: called with the "ext" and "ffi" + # arguments just before we turn the ffi into C code. To use it, + # subclass the 'distutils.command.build_ext.build_ext' class and + # add a method 'def pre_run(self, ext, ffi)'. + if pre_run is not None: + pre_run(ext, ffi) + updated = recompiler.make_c_source(ffi, module_name, source, c_file) + if not updated: + log.info("already up-to-date") + return c_file + + if dist.ext_modules is None: + dist.ext_modules = [] + dist.ext_modules.append(ext) + + base_class = dist.cmdclass.get('build_ext', build_ext) + class build_ext_make_mod(base_class): + def run(self): + if ext.sources[0] == '$PLACEHOLDER': + pre_run = getattr(self, 'pre_run', None) + ext.sources[0] = make_mod(self.build_temp, pre_run) + base_class.run(self) + dist.cmdclass['build_ext'] = build_ext_make_mod + # NB. multiple runs here will create multiple 'build_ext_make_mod' + # classes. Even in this case the 'build_ext' command should be + # run once; but just in case, the logic above does nothing if + # called again. + + +def _add_py_module(dist, ffi, module_name): + from setuptools.command.build_py import build_py + from setuptools.command.build_ext import build_ext + from cffi._shimmed_dist_utils import log, mkpath + from cffi import recompiler + + def generate_mod(py_file): + log.info("generating cffi module %r" % py_file) + mkpath(os.path.dirname(py_file)) + updated = recompiler.make_py_source(ffi, module_name, py_file) + if not updated: + log.info("already up-to-date") + + base_class = dist.cmdclass.get('build_py', build_py) + class build_py_make_mod(base_class): + def run(self): + base_class.run(self) + module_path = module_name.split('.') + module_path[-1] += '.py' + generate_mod(os.path.join(self.build_lib, *module_path)) + def get_source_files(self): + # This is called from 'setup.py sdist' only. Exclude + # the generate .py module in this case. + saved_py_modules = self.py_modules + try: + if saved_py_modules: + self.py_modules = [m for m in saved_py_modules + if m != module_name] + return base_class.get_source_files(self) + finally: + self.py_modules = saved_py_modules + dist.cmdclass['build_py'] = build_py_make_mod + + # distutils and setuptools have no notion I could find of a + # generated python module. If we don't add module_name to + # dist.py_modules, then things mostly work but there are some + # combination of options (--root and --record) that will miss + # the module. So we add it here, which gives a few apparently + # harmless warnings about not finding the file outside the + # build directory. + # Then we need to hack more in get_source_files(); see above. + if dist.py_modules is None: + dist.py_modules = [] + dist.py_modules.append(module_name) + + # the following is only for "build_ext -i" + base_class_2 = dist.cmdclass.get('build_ext', build_ext) + class build_ext_make_mod(base_class_2): + def run(self): + base_class_2.run(self) + if self.inplace: + # from get_ext_fullpath() in distutils/command/build_ext.py + module_path = module_name.split('.') + package = '.'.join(module_path[:-1]) + build_py = self.get_finalized_command('build_py') + package_dir = build_py.get_package_dir(package) + file_name = module_path[-1] + '.py' + generate_mod(os.path.join(package_dir, file_name)) + dist.cmdclass['build_ext'] = build_ext_make_mod + +def cffi_modules(dist, attr, value): + assert attr == 'cffi_modules' + if isinstance(value, basestring): + value = [value] + + for cffi_module in value: + add_cffi_module(dist, cffi_module) diff --git a/.venv/lib/python3.9/site-packages/cffi/vengine_cpy.py b/.venv/lib/python3.9/site-packages/cffi/vengine_cpy.py new file mode 100644 index 0000000..02e6a47 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/vengine_cpy.py @@ -0,0 +1,1087 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys +from . import model +from .error import VerificationError +from . import _imp_emulation as imp + + +class VCPythonEngine(object): + _class_key = 'x' + _gen_python_module = True + + def __init__(self, verifier): + self.verifier = verifier + self.ffi = verifier.ffi + self._struct_pending_verification = {} + self._types_of_builtin_functions = {} + + def patch_extension_kwds(self, kwds): + pass + + def find_module(self, module_name, path, so_suffixes): + try: + f, filename, descr = imp.find_module(module_name, path) + except ImportError: + return None + if f is not None: + f.close() + # Note that after a setuptools installation, there are both .py + # and .so files with the same basename. The code here relies on + # imp.find_module() locating the .so in priority. + if descr[0] not in so_suffixes: + return None + return filename + + def collect_types(self): + self._typesdict = {} + self._generate("collecttype") + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def _gettypenum(self, type): + # a KeyError here is a bug. please report it! :-) + return self._typesdict[type] + + def _do_collect_type(self, tp): + if ((not isinstance(tp, model.PrimitiveType) + or tp.name == 'long double') + and tp not in self._typesdict): + num = len(self._typesdict) + self._typesdict[tp] = num + + def write_source_to_f(self): + self.collect_types() + # + # The new module will have a _cffi_setup() function that receives + # objects from the ffi world, and that calls some setup code in + # the module. This setup code is split in several independent + # functions, e.g. one per constant. The functions are "chained" + # by ending in a tail call to each other. + # + # This is further split in two chained lists, depending on if we + # can do it at import-time or if we must wait for _cffi_setup() to + # provide us with the objects. This is needed because we + # need the values of the enum constants in order to build the + # that we may have to pass to _cffi_setup(). + # + # The following two 'chained_list_constants' items contains + # the head of these two chained lists, as a string that gives the + # call to do, if any. + self._chained_list_constants = ['((void)lib,0)', '((void)lib,0)'] + # + prnt = self._prnt + # first paste some standard set of lines that are mostly '#define' + prnt(cffimod_header) + prnt() + # then paste the C source given by the user, verbatim. + prnt(self.verifier.preamble) + prnt() + # + # call generate_cpy_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._generate("decl") + # + # implement the function _cffi_setup_custom() as calling the + # head of the chained list. + self._generate_setup_custom() + prnt() + # + # produce the method table, including the entries for the + # generated Python->C function wrappers, which are done + # by generate_cpy_function_method(). + prnt('static PyMethodDef _cffi_methods[] = {') + self._generate("method") + prnt(' {"_cffi_setup", _cffi_setup, METH_VARARGS, NULL},') + prnt(' {NULL, NULL, 0, NULL} /* Sentinel */') + prnt('};') + prnt() + # + # standard init. + modname = self.verifier.get_module_name() + constants = self._chained_list_constants[False] + prnt('#if PY_MAJOR_VERSION >= 3') + prnt() + prnt('static struct PyModuleDef _cffi_module_def = {') + prnt(' PyModuleDef_HEAD_INIT,') + prnt(' "%s",' % modname) + prnt(' NULL,') + prnt(' -1,') + prnt(' _cffi_methods,') + prnt(' NULL, NULL, NULL, NULL') + prnt('};') + prnt() + prnt('PyMODINIT_FUNC') + prnt('PyInit_%s(void)' % modname) + prnt('{') + prnt(' PyObject *lib;') + prnt(' lib = PyModule_Create(&_cffi_module_def);') + prnt(' if (lib == NULL)') + prnt(' return NULL;') + prnt(' if (%s < 0 || _cffi_init() < 0) {' % (constants,)) + prnt(' Py_DECREF(lib);') + prnt(' return NULL;') + prnt(' }') + prnt('#if Py_GIL_DISABLED') + prnt(' PyUnstable_Module_SetGIL(lib, Py_MOD_GIL_NOT_USED);') + prnt('#endif') + prnt(' return lib;') + prnt('}') + prnt() + prnt('#else') + prnt() + prnt('PyMODINIT_FUNC') + prnt('init%s(void)' % modname) + prnt('{') + prnt(' PyObject *lib;') + prnt(' lib = Py_InitModule("%s", _cffi_methods);' % modname) + prnt(' if (lib == NULL)') + prnt(' return;') + prnt(' if (%s < 0 || _cffi_init() < 0)' % (constants,)) + prnt(' return;') + prnt(' return;') + prnt('}') + prnt() + prnt('#endif') + + def load_library(self, flags=None): + # XXX review all usages of 'self' here! + # import it as a new extension module + imp.acquire_lock() + try: + if hasattr(sys, "getdlopenflags"): + previous_flags = sys.getdlopenflags() + try: + if hasattr(sys, "setdlopenflags") and flags is not None: + sys.setdlopenflags(flags) + module = imp.load_dynamic(self.verifier.get_module_name(), + self.verifier.modulefilename) + except ImportError as e: + error = "importing %r: %s" % (self.verifier.modulefilename, e) + raise VerificationError(error) + finally: + if hasattr(sys, "setdlopenflags"): + sys.setdlopenflags(previous_flags) + finally: + imp.release_lock() + # + # call loading_cpy_struct() to get the struct layout inferred by + # the C compiler + self._load(module, 'loading') + # + # the C code will need the objects. Collect them in + # order in a list. + revmapping = dict([(value, key) + for (key, value) in self._typesdict.items()]) + lst = [revmapping[i] for i in range(len(revmapping))] + lst = list(map(self.ffi._get_cached_btype, lst)) + # + # build the FFILibrary class and instance and call _cffi_setup(). + # this will set up some fields like '_cffi_types', and only then + # it will invoke the chained list of functions that will really + # build (notably) the constant objects, as if they are + # pointers, and store them as attributes on the 'library' object. + class FFILibrary(object): + _cffi_python_module = module + _cffi_ffi = self.ffi + _cffi_dir = [] + def __dir__(self): + return FFILibrary._cffi_dir + list(self.__dict__) + library = FFILibrary() + if module._cffi_setup(lst, VerificationError, library): + import warnings + warnings.warn("reimporting %r might overwrite older definitions" + % (self.verifier.get_module_name())) + # + # finally, call the loaded_cpy_xxx() functions. This will perform + # the final adjustments, like copying the Python->C wrapper + # functions from the module to the 'library' object, and setting + # up the FFILibrary class with properties for the global C variables. + self._load(module, 'loaded', library=library) + module._cffi_original_ffi = self.ffi + module._cffi_types_of_builtin_funcs = self._types_of_builtin_functions + return library + + def _get_declarations(self): + lst = [(key, tp) for (key, (tp, qual)) in + self.ffi._parser._declarations.items()] + lst.sort() + return lst + + def _generate(self, step_name): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_cpy_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in verify(): %r" % name) + try: + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _load(self, module, step_name, **kwds): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + method = getattr(self, '_%s_cpy_%s' % (step_name, kind)) + try: + method(tp, realname, module, **kwds) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _generate_nothing(self, tp, name): + pass + + def _loaded_noop(self, tp, name, module, **kwds): + pass + + # ---------- + + def _convert_funcarg_to_c(self, tp, fromvar, tovar, errcode): + extraarg = '' + if isinstance(tp, model.PrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + converter = '_cffi_to_c_int' + extraarg = ', %s' % tp.name + elif tp.is_complex_type(): + raise VerificationError( + "not implemented in verify(): complex types") + else: + converter = '(%s)_cffi_to_c_%s' % (tp.get_c_name(''), + tp.name.replace(' ', '_')) + errvalue = '-1' + # + elif isinstance(tp, model.PointerType): + self._convert_funcarg_to_c_ptr_or_array(tp, fromvar, + tovar, errcode) + return + # + elif isinstance(tp, (model.StructOrUnion, model.EnumType)): + # a struct (not a struct pointer) as a function argument + self._prnt(' if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)' + % (tovar, self._gettypenum(tp), fromvar)) + self._prnt(' %s;' % errcode) + return + # + elif isinstance(tp, model.FunctionPtrType): + converter = '(%s)_cffi_to_c_pointer' % tp.get_c_name('') + extraarg = ', _cffi_type(%d)' % self._gettypenum(tp) + errvalue = 'NULL' + # + else: + raise NotImplementedError(tp) + # + self._prnt(' %s = %s(%s%s);' % (tovar, converter, fromvar, extraarg)) + self._prnt(' if (%s == (%s)%s && PyErr_Occurred())' % ( + tovar, tp.get_c_name(''), errvalue)) + self._prnt(' %s;' % errcode) + + def _extra_local_variables(self, tp, localvars, freelines): + if isinstance(tp, model.PointerType): + localvars.add('Py_ssize_t datasize') + localvars.add('struct _cffi_freeme_s *large_args_free = NULL') + freelines.add('if (large_args_free != NULL)' + ' _cffi_free_array_arguments(large_args_free);') + + def _convert_funcarg_to_c_ptr_or_array(self, tp, fromvar, tovar, errcode): + self._prnt(' datasize = _cffi_prepare_pointer_call_argument(') + self._prnt(' _cffi_type(%d), %s, (char **)&%s);' % ( + self._gettypenum(tp), fromvar, tovar)) + self._prnt(' if (datasize != 0) {') + self._prnt(' %s = ((size_t)datasize) <= 640 ? ' + 'alloca((size_t)datasize) : NULL;' % (tovar,)) + self._prnt(' if (_cffi_convert_array_argument(_cffi_type(%d), %s, ' + '(char **)&%s,' % (self._gettypenum(tp), fromvar, tovar)) + self._prnt(' datasize, &large_args_free) < 0)') + self._prnt(' %s;' % errcode) + self._prnt(' }') + + def _convert_expr_from_c(self, tp, var, context): + if isinstance(tp, model.PrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + return '_cffi_from_c_int(%s, %s)' % (var, tp.name) + elif tp.name != 'long double': + return '_cffi_from_c_%s(%s)' % (tp.name.replace(' ', '_'), var) + else: + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, (model.PointerType, model.FunctionPtrType)): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.ArrayType): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(model.PointerType(tp.item))) + elif isinstance(tp, model.StructOrUnion): + if tp.fldnames is None: + raise TypeError("'%s' is used as %s, but is opaque" % ( + tp._get_c_name(), context)) + return '_cffi_from_c_struct((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.EnumType): + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + else: + raise NotImplementedError(tp) + + # ---------- + # typedefs: generates no code so far + + _generate_cpy_typedef_collecttype = _generate_nothing + _generate_cpy_typedef_decl = _generate_nothing + _generate_cpy_typedef_method = _generate_nothing + _loading_cpy_typedef = _loaded_noop + _loaded_cpy_typedef = _loaded_noop + + # ---------- + # function declarations + + def _generate_cpy_function_collecttype(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + self._do_collect_type(tp) + else: + # don't call _do_collect_type(tp) in this common case, + # otherwise test_autofilled_struct_as_argument fails + for type in tp.args: + self._do_collect_type(type) + self._do_collect_type(tp.result) + + def _generate_cpy_function_decl(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no CPython wrapper) + self._generate_cpy_const(False, name, tp) + return + prnt = self._prnt + numargs = len(tp.args) + if numargs == 0: + argname = 'noarg' + elif numargs == 1: + argname = 'arg0' + else: + argname = 'args' + prnt('static PyObject *') + prnt('_cffi_f_%s(PyObject *self, PyObject *%s)' % (name, argname)) + prnt('{') + # + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + prnt(' %s;' % type.get_c_name(' x%d' % i, context)) + # + localvars = set() + freelines = set() + for type in tp.args: + self._extra_local_variables(type, localvars, freelines) + for decl in sorted(localvars): + prnt(' %s;' % (decl,)) + # + if not isinstance(tp.result, model.VoidType): + result_code = 'result = ' + context = 'result of %s' % name + prnt(' %s;' % tp.result.get_c_name(' result', context)) + prnt(' PyObject *pyresult;') + else: + result_code = '' + # + if len(tp.args) > 1: + rng = range(len(tp.args)) + for i in rng: + prnt(' PyObject *arg%d;' % i) + prnt() + prnt(' if (!PyArg_ParseTuple(args, "%s:%s", %s))' % ( + 'O' * numargs, name, ', '.join(['&arg%d' % i for i in rng]))) + prnt(' return NULL;') + prnt() + # + for i, type in enumerate(tp.args): + self._convert_funcarg_to_c(type, 'arg%d' % i, 'x%d' % i, + 'return NULL') + prnt() + # + prnt(' Py_BEGIN_ALLOW_THREADS') + prnt(' _cffi_restore_errno();') + prnt(' { %s%s(%s); }' % ( + result_code, name, + ', '.join(['x%d' % i for i in range(len(tp.args))]))) + prnt(' _cffi_save_errno();') + prnt(' Py_END_ALLOW_THREADS') + prnt() + # + prnt(' (void)self; /* unused */') + if numargs == 0: + prnt(' (void)noarg; /* unused */') + if result_code: + prnt(' pyresult = %s;' % + self._convert_expr_from_c(tp.result, 'result', 'result type')) + for freeline in freelines: + prnt(' ' + freeline) + prnt(' return pyresult;') + else: + for freeline in freelines: + prnt(' ' + freeline) + prnt(' Py_INCREF(Py_None);') + prnt(' return Py_None;') + prnt('}') + prnt() + + def _generate_cpy_function_method(self, tp, name): + if tp.ellipsis: + return + numargs = len(tp.args) + if numargs == 0: + meth = 'METH_NOARGS' + elif numargs == 1: + meth = 'METH_O' + else: + meth = 'METH_VARARGS' + self._prnt(' {"%s", _cffi_f_%s, %s, NULL},' % (name, name, meth)) + + _loading_cpy_function = _loaded_noop + + def _loaded_cpy_function(self, tp, name, module, library): + if tp.ellipsis: + return + func = getattr(module, name) + setattr(library, name, func) + self._types_of_builtin_functions[func] = tp + + # ---------- + # named structs + + _generate_cpy_struct_collecttype = _generate_nothing + def _generate_cpy_struct_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'struct', name) + def _generate_cpy_struct_method(self, tp, name): + self._generate_struct_or_union_method(tp, 'struct', name) + def _loading_cpy_struct(self, tp, name, module): + self._loading_struct_or_union(tp, 'struct', name, module) + def _loaded_cpy_struct(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + _generate_cpy_union_collecttype = _generate_nothing + def _generate_cpy_union_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'union', name) + def _generate_cpy_union_method(self, tp, name): + self._generate_struct_or_union_method(tp, 'union', name) + def _loading_cpy_union(self, tp, name, module): + self._loading_struct_or_union(tp, 'union', name, module) + def _loaded_cpy_union(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_struct_or_union_decl(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + checkfuncname = '_cffi_check_%s_%s' % (prefix, name) + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + cname = ('%s %s' % (prefix, name)).strip() + # + prnt = self._prnt + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if (isinstance(ftype, model.PrimitiveType) + and ftype.is_integer_type()) or fbitsize >= 0: + # accept all integers, but complain on float or double + prnt(' (void)((p->%s) << 1);' % fname) + else: + # only accept exactly the type declared. + try: + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + prnt('static PyObject *') + prnt('%s(PyObject *self, PyObject *noarg)' % (layoutfuncname,)) + prnt('{') + prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname) + prnt(' static Py_ssize_t nums[] = {') + prnt(' sizeof(%s),' % cname) + prnt(' offsetof(struct _cffi_aligncheck, y),') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + prnt(' offsetof(%s, %s),' % (cname, fname)) + if isinstance(ftype, model.ArrayType) and ftype.length is None: + prnt(' 0, /* %s */' % ftype._get_c_name()) + else: + prnt(' sizeof(((%s *)0)->%s),' % (cname, fname)) + prnt(' -1') + prnt(' };') + prnt(' (void)self; /* unused */') + prnt(' (void)noarg; /* unused */') + prnt(' return _cffi_get_struct_layout(nums);') + prnt(' /* the next line is not executed, but compiled */') + prnt(' %s(0);' % (checkfuncname,)) + prnt('}') + prnt() + + def _generate_struct_or_union_method(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + self._prnt(' {"%s", %s, METH_NOARGS, NULL},' % (layoutfuncname, + layoutfuncname)) + + def _loading_struct_or_union(self, tp, prefix, name, module): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + # + function = getattr(module, layoutfuncname) + layout = function() + if isinstance(tp, model.StructOrUnion) and tp.partial: + # use the function()'s sizes and offsets to guide the + # layout of the struct + totalsize = layout[0] + totalalignment = layout[1] + fieldofs = layout[2::2] + fieldsize = layout[3::2] + tp.force_flatten() + assert len(fieldofs) == len(fieldsize) == len(tp.fldnames) + tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment + else: + cname = ('%s %s' % (prefix, name)).strip() + self._struct_pending_verification[tp] = layout, cname + + def _loaded_struct_or_union(self, tp): + if tp.fldnames is None: + return # nothing to do with opaque structs + self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered + + if tp in self._struct_pending_verification: + # check that the layout sizes and offsets match the real ones + def check(realvalue, expectedvalue, msg): + if realvalue != expectedvalue: + raise VerificationError( + "%s (we have %d, but C compiler says %d)" + % (msg, expectedvalue, realvalue)) + ffi = self.ffi + BStruct = ffi._get_cached_btype(tp) + layout, cname = self._struct_pending_verification.pop(tp) + check(layout[0], ffi.sizeof(BStruct), "wrong total size") + check(layout[1], ffi.alignof(BStruct), "wrong total alignment") + i = 2 + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + check(layout[i], ffi.offsetof(BStruct, fname), + "wrong offset for field %r" % (fname,)) + if layout[i+1] != 0: + BField = ffi._get_cached_btype(ftype) + check(layout[i+1], ffi.sizeof(BField), + "wrong size for field %r" % (fname,)) + i += 2 + assert i == len(layout) + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + _generate_cpy_anonymous_collecttype = _generate_nothing + + def _generate_cpy_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_decl(tp, name, '') + else: + self._generate_struct_or_union_decl(tp, '', name) + + def _generate_cpy_anonymous_method(self, tp, name): + if not isinstance(tp, model.EnumType): + self._generate_struct_or_union_method(tp, '', name) + + def _loading_cpy_anonymous(self, tp, name, module): + if isinstance(tp, model.EnumType): + self._loading_cpy_enum(tp, name, module) + else: + self._loading_struct_or_union(tp, '', name, module) + + def _loaded_cpy_anonymous(self, tp, name, module, **kwds): + if isinstance(tp, model.EnumType): + self._loaded_cpy_enum(tp, name, module, **kwds) + else: + self._loaded_struct_or_union(tp) + + # ---------- + # constants, likely declared with '#define' + + def _generate_cpy_const(self, is_int, name, tp=None, category='const', + vartp=None, delayed=True, size_too=False, + check_value=None): + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + prnt('static int %s(PyObject *lib)' % funcname) + prnt('{') + prnt(' PyObject *o;') + prnt(' int res;') + if not is_int: + prnt(' %s;' % (vartp or tp).get_c_name(' i', name)) + else: + assert category == 'const' + # + if check_value is not None: + self._check_int_constant_value(name, check_value) + # + if not is_int: + if category == 'var': + realexpr = '&' + name + else: + realexpr = name + prnt(' i = (%s);' % (realexpr,)) + prnt(' o = %s;' % (self._convert_expr_from_c(tp, 'i', + 'variable type'),)) + assert delayed + else: + prnt(' o = _cffi_from_c_int_const(%s);' % name) + prnt(' if (o == NULL)') + prnt(' return -1;') + if size_too: + prnt(' {') + prnt(' PyObject *o1 = o;') + prnt(' o = Py_BuildValue("On", o1, (Py_ssize_t)sizeof(%s));' + % (name,)) + prnt(' Py_DECREF(o1);') + prnt(' if (o == NULL)') + prnt(' return -1;') + prnt(' }') + prnt(' res = PyObject_SetAttrString(lib, "%s", o);' % name) + prnt(' Py_DECREF(o);') + prnt(' if (res < 0)') + prnt(' return -1;') + prnt(' return %s;' % self._chained_list_constants[delayed]) + self._chained_list_constants[delayed] = funcname + '(lib)' + prnt('}') + prnt() + + def _generate_cpy_constant_collecttype(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + if not is_int: + self._do_collect_type(tp) + + def _generate_cpy_constant_decl(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + self._generate_cpy_const(is_int, name, tp) + + _generate_cpy_constant_method = _generate_nothing + _loading_cpy_constant = _loaded_noop + _loaded_cpy_constant = _loaded_noop + + # ---------- + # enums + + def _check_int_constant_value(self, name, value, err_prefix=''): + prnt = self._prnt + if value <= 0: + prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % ( + name, name, value)) + else: + prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % ( + name, name, value)) + prnt(' char buf[64];') + prnt(' if ((%s) <= 0)' % name) + prnt(' snprintf(buf, 63, "%%ld", (long)(%s));' % name) + prnt(' else') + prnt(' snprintf(buf, 63, "%%lu", (unsigned long)(%s));' % + name) + prnt(' PyErr_Format(_cffi_VerificationError,') + prnt(' "%s%s has the real value %s, not %s",') + prnt(' "%s", "%s", buf, "%d");' % ( + err_prefix, name, value)) + prnt(' return -1;') + prnt(' }') + + def _enum_funcname(self, prefix, name): + # "$enum_$1" => "___D_enum____D_1" + name = name.replace('$', '___D_') + return '_cffi_e_%s_%s' % (prefix, name) + + def _generate_cpy_enum_decl(self, tp, name, prefix='enum'): + if tp.partial: + for enumerator in tp.enumerators: + self._generate_cpy_const(True, enumerator, delayed=False) + return + # + funcname = self._enum_funcname(prefix, name) + prnt = self._prnt + prnt('static int %s(PyObject *lib)' % funcname) + prnt('{') + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._check_int_constant_value(enumerator, enumvalue, + "enum %s: " % name) + prnt(' return %s;' % self._chained_list_constants[True]) + self._chained_list_constants[True] = funcname + '(lib)' + prnt('}') + prnt() + + _generate_cpy_enum_collecttype = _generate_nothing + _generate_cpy_enum_method = _generate_nothing + + def _loading_cpy_enum(self, tp, name, module): + if tp.partial: + enumvalues = [getattr(module, enumerator) + for enumerator in tp.enumerators] + tp.enumvalues = tuple(enumvalues) + tp.partial_resolved = True + + def _loaded_cpy_enum(self, tp, name, module, library): + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + setattr(library, enumerator, enumvalue) + + # ---------- + # macros: for now only for integers + + def _generate_cpy_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_cpy_const(True, name, check_value=check_value) + + _generate_cpy_macro_collecttype = _generate_nothing + _generate_cpy_macro_method = _generate_nothing + _loading_cpy_macro = _loaded_noop + _loaded_cpy_macro = _loaded_noop + + # ---------- + # global variables + + def _generate_cpy_variable_collecttype(self, tp, name): + if isinstance(tp, model.ArrayType): + tp_ptr = model.PointerType(tp.item) + else: + tp_ptr = model.PointerType(tp) + self._do_collect_type(tp_ptr) + + def _generate_cpy_variable_decl(self, tp, name): + if isinstance(tp, model.ArrayType): + tp_ptr = model.PointerType(tp.item) + self._generate_cpy_const(False, name, tp, vartp=tp_ptr, + size_too = tp.length_is_unknown()) + else: + tp_ptr = model.PointerType(tp) + self._generate_cpy_const(False, name, tp_ptr, category='var') + + _generate_cpy_variable_method = _generate_nothing + _loading_cpy_variable = _loaded_noop + + def _loaded_cpy_variable(self, tp, name, module, library): + value = getattr(library, name) + if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the + # sense that "a=..." is forbidden + if tp.length_is_unknown(): + assert isinstance(value, tuple) + (value, size) = value + BItemType = self.ffi._get_cached_btype(tp.item) + length, rest = divmod(size, self.ffi.sizeof(BItemType)) + if rest != 0: + raise VerificationError( + "bad size: %r does not seem to be an array of %s" % + (name, tp.item)) + tp = tp.resolve_length(length) + # 'value' is a which we have to replace with + # a if the N is actually known + if tp.length is not None: + BArray = self.ffi._get_cached_btype(tp) + value = self.ffi.cast(BArray, value) + setattr(library, name, value) + return + # remove ptr= from the library instance, and replace + # it by a property on the class, which reads/writes into ptr[0]. + ptr = value + delattr(library, name) + def getter(library): + return ptr[0] + def setter(library, value): + ptr[0] = value + setattr(type(library), name, property(getter, setter)) + type(library)._cffi_dir.append(name) + + # ---------- + + def _generate_setup_custom(self): + prnt = self._prnt + prnt('static int _cffi_setup_custom(PyObject *lib)') + prnt('{') + prnt(' return %s;' % self._chained_list_constants[True]) + prnt('}') + +cffimod_header = r''' +#include +#include + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif + +#if PY_MAJOR_VERSION < 3 +# undef PyCapsule_CheckExact +# undef PyCapsule_GetPointer +# define PyCapsule_CheckExact(capsule) (PyCObject_Check(capsule)) +# define PyCapsule_GetPointer(capsule, name) \ + (PyCObject_AsVoidPtr(capsule)) +#endif + +#if PY_MAJOR_VERSION >= 3 +# define PyInt_FromLong PyLong_FromLong +#endif + +#define _cffi_from_c_double PyFloat_FromDouble +#define _cffi_from_c_float PyFloat_FromDouble +#define _cffi_from_c_long PyInt_FromLong +#define _cffi_from_c_ulong PyLong_FromUnsignedLong +#define _cffi_from_c_longlong PyLong_FromLongLong +#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong +#define _cffi_from_c__Bool PyBool_FromLong + +#define _cffi_to_c_double PyFloat_AsDouble +#define _cffi_to_c_float PyFloat_AsDouble + +#define _cffi_from_c_int_const(x) \ + (((x) > 0) ? \ + ((unsigned long long)(x) <= (unsigned long long)LONG_MAX) ? \ + PyInt_FromLong((long)(x)) : \ + PyLong_FromUnsignedLongLong((unsigned long long)(x)) : \ + ((long long)(x) >= (long long)LONG_MIN) ? \ + PyInt_FromLong((long)(x)) : \ + PyLong_FromLongLong((long long)(x))) + +#define _cffi_from_c_int(x, type) \ + (((type)-1) > 0 ? /* unsigned */ \ + (sizeof(type) < sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + sizeof(type) == sizeof(long) ? \ + PyLong_FromUnsignedLong((unsigned long)x) : \ + PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ + (sizeof(type) <= sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + PyLong_FromLongLong((long long)x))) + +#define _cffi_to_c_int(o, type) \ + ((type)( \ + sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ + : (type)_cffi_to_c_i8(o)) : \ + sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ + : (type)_cffi_to_c_i16(o)) : \ + sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ + : (type)_cffi_to_c_i32(o)) : \ + sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ + : (type)_cffi_to_c_i64(o)) : \ + (Py_FatalError("unsupported size for type " #type), (type)0))) + +#define _cffi_to_c_i8 \ + ((int(*)(PyObject *))_cffi_exports[1]) +#define _cffi_to_c_u8 \ + ((int(*)(PyObject *))_cffi_exports[2]) +#define _cffi_to_c_i16 \ + ((int(*)(PyObject *))_cffi_exports[3]) +#define _cffi_to_c_u16 \ + ((int(*)(PyObject *))_cffi_exports[4]) +#define _cffi_to_c_i32 \ + ((int(*)(PyObject *))_cffi_exports[5]) +#define _cffi_to_c_u32 \ + ((unsigned int(*)(PyObject *))_cffi_exports[6]) +#define _cffi_to_c_i64 \ + ((long long(*)(PyObject *))_cffi_exports[7]) +#define _cffi_to_c_u64 \ + ((unsigned long long(*)(PyObject *))_cffi_exports[8]) +#define _cffi_to_c_char \ + ((int(*)(PyObject *))_cffi_exports[9]) +#define _cffi_from_c_pointer \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[10]) +#define _cffi_to_c_pointer \ + ((char *(*)(PyObject *, CTypeDescrObject *))_cffi_exports[11]) +#define _cffi_get_struct_layout \ + ((PyObject *(*)(Py_ssize_t[]))_cffi_exports[12]) +#define _cffi_restore_errno \ + ((void(*)(void))_cffi_exports[13]) +#define _cffi_save_errno \ + ((void(*)(void))_cffi_exports[14]) +#define _cffi_from_c_char \ + ((PyObject *(*)(char))_cffi_exports[15]) +#define _cffi_from_c_deref \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[16]) +#define _cffi_to_c \ + ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[17]) +#define _cffi_from_c_struct \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[18]) +#define _cffi_to_c_wchar_t \ + ((wchar_t(*)(PyObject *))_cffi_exports[19]) +#define _cffi_from_c_wchar_t \ + ((PyObject *(*)(wchar_t))_cffi_exports[20]) +#define _cffi_to_c_long_double \ + ((long double(*)(PyObject *))_cffi_exports[21]) +#define _cffi_to_c__Bool \ + ((_Bool(*)(PyObject *))_cffi_exports[22]) +#define _cffi_prepare_pointer_call_argument \ + ((Py_ssize_t(*)(CTypeDescrObject *, PyObject *, char **))_cffi_exports[23]) +#define _cffi_convert_array_from_object \ + ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[24]) +#define _CFFI_NUM_EXPORTS 25 + +typedef struct _ctypedescr CTypeDescrObject; + +static void *_cffi_exports[_CFFI_NUM_EXPORTS]; +static PyObject *_cffi_types, *_cffi_VerificationError; + +static int _cffi_setup_custom(PyObject *lib); /* forward */ + +static PyObject *_cffi_setup(PyObject *self, PyObject *args) +{ + PyObject *library; + int was_alive = (_cffi_types != NULL); + (void)self; /* unused */ + if (!PyArg_ParseTuple(args, "OOO", &_cffi_types, &_cffi_VerificationError, + &library)) + return NULL; + Py_INCREF(_cffi_types); + Py_INCREF(_cffi_VerificationError); + if (_cffi_setup_custom(library) < 0) + return NULL; + return PyBool_FromLong(was_alive); +} + +union _cffi_union_alignment_u { + unsigned char m_char; + unsigned short m_short; + unsigned int m_int; + unsigned long m_long; + unsigned long long m_longlong; + float m_float; + double m_double; + long double m_longdouble; +}; + +struct _cffi_freeme_s { + struct _cffi_freeme_s *next; + union _cffi_union_alignment_u alignment; +}; + +#ifdef __GNUC__ + __attribute__((unused)) +#endif +static int _cffi_convert_array_argument(CTypeDescrObject *ctptr, PyObject *arg, + char **output_data, Py_ssize_t datasize, + struct _cffi_freeme_s **freeme) +{ + char *p; + if (datasize < 0) + return -1; + + p = *output_data; + if (p == NULL) { + struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( + offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); + if (fp == NULL) + return -1; + fp->next = *freeme; + *freeme = fp; + p = *output_data = (char *)&fp->alignment; + } + memset((void *)p, 0, (size_t)datasize); + return _cffi_convert_array_from_object(p, ctptr, arg); +} + +#ifdef __GNUC__ + __attribute__((unused)) +#endif +static void _cffi_free_array_arguments(struct _cffi_freeme_s *freeme) +{ + do { + void *p = (void *)freeme; + freeme = freeme->next; + PyObject_Free(p); + } while (freeme != NULL); +} + +static int _cffi_init(void) +{ + PyObject *module, *c_api_object = NULL; + + module = PyImport_ImportModule("_cffi_backend"); + if (module == NULL) + goto failure; + + c_api_object = PyObject_GetAttrString(module, "_C_API"); + if (c_api_object == NULL) + goto failure; + if (!PyCapsule_CheckExact(c_api_object)) { + PyErr_SetNone(PyExc_ImportError); + goto failure; + } + memcpy(_cffi_exports, PyCapsule_GetPointer(c_api_object, "cffi"), + _CFFI_NUM_EXPORTS * sizeof(void *)); + + Py_DECREF(module); + Py_DECREF(c_api_object); + return 0; + + failure: + Py_XDECREF(module); + Py_XDECREF(c_api_object); + return -1; +} + +#define _cffi_type(num) ((CTypeDescrObject *)PyList_GET_ITEM(_cffi_types, num)) + +/**********/ +''' diff --git a/.venv/lib/python3.9/site-packages/cffi/vengine_gen.py b/.venv/lib/python3.9/site-packages/cffi/vengine_gen.py new file mode 100644 index 0000000..bffc821 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/vengine_gen.py @@ -0,0 +1,679 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys, os +import types + +from . import model +from .error import VerificationError + + +class VGenericEngine(object): + _class_key = 'g' + _gen_python_module = False + + def __init__(self, verifier): + self.verifier = verifier + self.ffi = verifier.ffi + self.export_symbols = [] + self._struct_pending_verification = {} + + def patch_extension_kwds(self, kwds): + # add 'export_symbols' to the dictionary. Note that we add the + # list before filling it. When we fill it, it will thus also show + # up in kwds['export_symbols']. + kwds.setdefault('export_symbols', self.export_symbols) + + def find_module(self, module_name, path, so_suffixes): + for so_suffix in so_suffixes: + basename = module_name + so_suffix + if path is None: + path = sys.path + for dirname in path: + filename = os.path.join(dirname, basename) + if os.path.isfile(filename): + return filename + + def collect_types(self): + pass # not needed in the generic engine + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def write_source_to_f(self): + prnt = self._prnt + # first paste some standard set of lines that are mostly '#include' + prnt(cffimod_header) + # then paste the C source given by the user, verbatim. + prnt(self.verifier.preamble) + # + # call generate_gen_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._generate('decl') + # + # on Windows, distutils insists on putting init_cffi_xyz in + # 'export_symbols', so instead of fighting it, just give up and + # give it one + if sys.platform == 'win32': + if sys.version_info >= (3,): + prefix = 'PyInit_' + else: + prefix = 'init' + modname = self.verifier.get_module_name() + prnt("void %s%s(void) { }\n" % (prefix, modname)) + + def load_library(self, flags=0): + # import it with the CFFI backend + backend = self.ffi._backend + # needs to make a path that contains '/', on Posix + filename = os.path.join(os.curdir, self.verifier.modulefilename) + module = backend.load_library(filename, flags) + # + # call loading_gen_struct() to get the struct layout inferred by + # the C compiler + self._load(module, 'loading') + + # build the FFILibrary class and instance, this is a module subclass + # because modules are expected to have usually-constant-attributes and + # in PyPy this means the JIT is able to treat attributes as constant, + # which we want. + class FFILibrary(types.ModuleType): + _cffi_generic_module = module + _cffi_ffi = self.ffi + _cffi_dir = [] + def __dir__(self): + return FFILibrary._cffi_dir + library = FFILibrary("") + # + # finally, call the loaded_gen_xxx() functions. This will set + # up the 'library' object. + self._load(module, 'loaded', library=library) + return library + + def _get_declarations(self): + lst = [(key, tp) for (key, (tp, qual)) in + self.ffi._parser._declarations.items()] + lst.sort() + return lst + + def _generate(self, step_name): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_gen_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in verify(): %r" % name) + try: + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _load(self, module, step_name, **kwds): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + method = getattr(self, '_%s_gen_%s' % (step_name, kind)) + try: + method(tp, realname, module, **kwds) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _generate_nothing(self, tp, name): + pass + + def _loaded_noop(self, tp, name, module, **kwds): + pass + + # ---------- + # typedefs: generates no code so far + + _generate_gen_typedef_decl = _generate_nothing + _loading_gen_typedef = _loaded_noop + _loaded_gen_typedef = _loaded_noop + + # ---------- + # function declarations + + def _generate_gen_function_decl(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no _cffi_f_%s wrapper) + self._generate_gen_const(False, name, tp) + return + prnt = self._prnt + numargs = len(tp.args) + argnames = [] + for i, type in enumerate(tp.args): + indirection = '' + if isinstance(type, model.StructOrUnion): + indirection = '*' + argnames.append('%sx%d' % (indirection, i)) + context = 'argument of %s' % name + arglist = [type.get_c_name(' %s' % arg, context) + for type, arg in zip(tp.args, argnames)] + tpresult = tp.result + if isinstance(tpresult, model.StructOrUnion): + arglist.insert(0, tpresult.get_c_name(' *r', context)) + tpresult = model.void_type + arglist = ', '.join(arglist) or 'void' + wrappername = '_cffi_f_%s' % name + self.export_symbols.append(wrappername) + if tp.abi: + abi = tp.abi + ' ' + else: + abi = '' + funcdecl = ' %s%s(%s)' % (abi, wrappername, arglist) + context = 'result of %s' % name + prnt(tpresult.get_c_name(funcdecl, context)) + prnt('{') + # + if isinstance(tp.result, model.StructOrUnion): + result_code = '*r = ' + elif not isinstance(tp.result, model.VoidType): + result_code = 'return ' + else: + result_code = '' + prnt(' %s%s(%s);' % (result_code, name, ', '.join(argnames))) + prnt('}') + prnt() + + _loading_gen_function = _loaded_noop + + def _loaded_gen_function(self, tp, name, module, library): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + newfunction = self._load_constant(False, tp, name, module) + else: + indirections = [] + base_tp = tp + if (any(isinstance(typ, model.StructOrUnion) for typ in tp.args) + or isinstance(tp.result, model.StructOrUnion)): + indirect_args = [] + for i, typ in enumerate(tp.args): + if isinstance(typ, model.StructOrUnion): + typ = model.PointerType(typ) + indirections.append((i, typ)) + indirect_args.append(typ) + indirect_result = tp.result + if isinstance(indirect_result, model.StructOrUnion): + if indirect_result.fldtypes is None: + raise TypeError("'%s' is used as result type, " + "but is opaque" % ( + indirect_result._get_c_name(),)) + indirect_result = model.PointerType(indirect_result) + indirect_args.insert(0, indirect_result) + indirections.insert(0, ("result", indirect_result)) + indirect_result = model.void_type + tp = model.FunctionPtrType(tuple(indirect_args), + indirect_result, tp.ellipsis) + BFunc = self.ffi._get_cached_btype(tp) + wrappername = '_cffi_f_%s' % name + newfunction = module.load_function(BFunc, wrappername) + for i, typ in indirections: + newfunction = self._make_struct_wrapper(newfunction, i, typ, + base_tp) + setattr(library, name, newfunction) + type(library)._cffi_dir.append(name) + + def _make_struct_wrapper(self, oldfunc, i, tp, base_tp): + backend = self.ffi._backend + BType = self.ffi._get_cached_btype(tp) + if i == "result": + ffi = self.ffi + def newfunc(*args): + res = ffi.new(BType) + oldfunc(res, *args) + return res[0] + else: + def newfunc(*args): + args = args[:i] + (backend.newp(BType, args[i]),) + args[i+1:] + return oldfunc(*args) + newfunc._cffi_base_type = base_tp + return newfunc + + # ---------- + # named structs + + def _generate_gen_struct_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'struct', name) + + def _loading_gen_struct(self, tp, name, module): + self._loading_struct_or_union(tp, 'struct', name, module) + + def _loaded_gen_struct(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_gen_union_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'union', name) + + def _loading_gen_union(self, tp, name, module): + self._loading_struct_or_union(tp, 'union', name, module) + + def _loaded_gen_union(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_struct_or_union_decl(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + checkfuncname = '_cffi_check_%s_%s' % (prefix, name) + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + cname = ('%s %s' % (prefix, name)).strip() + # + prnt = self._prnt + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if (isinstance(ftype, model.PrimitiveType) + and ftype.is_integer_type()) or fbitsize >= 0: + # accept all integers, but complain on float or double + prnt(' (void)((p->%s) << 1);' % fname) + else: + # only accept exactly the type declared. + try: + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + self.export_symbols.append(layoutfuncname) + prnt('intptr_t %s(intptr_t i)' % (layoutfuncname,)) + prnt('{') + prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname) + prnt(' static intptr_t nums[] = {') + prnt(' sizeof(%s),' % cname) + prnt(' offsetof(struct _cffi_aligncheck, y),') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + prnt(' offsetof(%s, %s),' % (cname, fname)) + if isinstance(ftype, model.ArrayType) and ftype.length is None: + prnt(' 0, /* %s */' % ftype._get_c_name()) + else: + prnt(' sizeof(((%s *)0)->%s),' % (cname, fname)) + prnt(' -1') + prnt(' };') + prnt(' return nums[i];') + prnt(' /* the next line is not executed, but compiled */') + prnt(' %s(0);' % (checkfuncname,)) + prnt('}') + prnt() + + def _loading_struct_or_union(self, tp, prefix, name, module): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + # + BFunc = self.ffi._typeof_locked("intptr_t(*)(intptr_t)")[0] + function = module.load_function(BFunc, layoutfuncname) + layout = [] + num = 0 + while True: + x = function(num) + if x < 0: break + layout.append(x) + num += 1 + if isinstance(tp, model.StructOrUnion) and tp.partial: + # use the function()'s sizes and offsets to guide the + # layout of the struct + totalsize = layout[0] + totalalignment = layout[1] + fieldofs = layout[2::2] + fieldsize = layout[3::2] + tp.force_flatten() + assert len(fieldofs) == len(fieldsize) == len(tp.fldnames) + tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment + else: + cname = ('%s %s' % (prefix, name)).strip() + self._struct_pending_verification[tp] = layout, cname + + def _loaded_struct_or_union(self, tp): + if tp.fldnames is None: + return # nothing to do with opaque structs + self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered + + if tp in self._struct_pending_verification: + # check that the layout sizes and offsets match the real ones + def check(realvalue, expectedvalue, msg): + if realvalue != expectedvalue: + raise VerificationError( + "%s (we have %d, but C compiler says %d)" + % (msg, expectedvalue, realvalue)) + ffi = self.ffi + BStruct = ffi._get_cached_btype(tp) + layout, cname = self._struct_pending_verification.pop(tp) + check(layout[0], ffi.sizeof(BStruct), "wrong total size") + check(layout[1], ffi.alignof(BStruct), "wrong total alignment") + i = 2 + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + check(layout[i], ffi.offsetof(BStruct, fname), + "wrong offset for field %r" % (fname,)) + if layout[i+1] != 0: + BField = ffi._get_cached_btype(ftype) + check(layout[i+1], ffi.sizeof(BField), + "wrong size for field %r" % (fname,)) + i += 2 + assert i == len(layout) + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + def _generate_gen_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_gen_enum_decl(tp, name, '') + else: + self._generate_struct_or_union_decl(tp, '', name) + + def _loading_gen_anonymous(self, tp, name, module): + if isinstance(tp, model.EnumType): + self._loading_gen_enum(tp, name, module, '') + else: + self._loading_struct_or_union(tp, '', name, module) + + def _loaded_gen_anonymous(self, tp, name, module, **kwds): + if isinstance(tp, model.EnumType): + self._loaded_gen_enum(tp, name, module, **kwds) + else: + self._loaded_struct_or_union(tp) + + # ---------- + # constants, likely declared with '#define' + + def _generate_gen_const(self, is_int, name, tp=None, category='const', + check_value=None): + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + self.export_symbols.append(funcname) + if check_value is not None: + assert is_int + assert category == 'const' + prnt('int %s(char *out_error)' % funcname) + prnt('{') + self._check_int_constant_value(name, check_value) + prnt(' return 0;') + prnt('}') + elif is_int: + assert category == 'const' + prnt('int %s(long long *out_value)' % funcname) + prnt('{') + prnt(' *out_value = (long long)(%s);' % (name,)) + prnt(' return (%s) <= 0;' % (name,)) + prnt('}') + else: + assert tp is not None + assert check_value is None + if category == 'var': + ampersand = '&' + else: + ampersand = '' + extra = '' + if category == 'const' and isinstance(tp, model.StructOrUnion): + extra = 'const *' + ampersand = '&' + prnt(tp.get_c_name(' %s%s(void)' % (extra, funcname), name)) + prnt('{') + prnt(' return (%s%s);' % (ampersand, name)) + prnt('}') + prnt() + + def _generate_gen_constant_decl(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + self._generate_gen_const(is_int, name, tp) + + _loading_gen_constant = _loaded_noop + + def _load_constant(self, is_int, tp, name, module, check_value=None): + funcname = '_cffi_const_%s' % name + if check_value is not None: + assert is_int + self._load_known_int_constant(module, funcname) + value = check_value + elif is_int: + BType = self.ffi._typeof_locked("long long*")[0] + BFunc = self.ffi._typeof_locked("int(*)(long long*)")[0] + function = module.load_function(BFunc, funcname) + p = self.ffi.new(BType) + negative = function(p) + value = int(p[0]) + if value < 0 and not negative: + BLongLong = self.ffi._typeof_locked("long long")[0] + value += (1 << (8*self.ffi.sizeof(BLongLong))) + else: + assert check_value is None + fntypeextra = '(*)(void)' + if isinstance(tp, model.StructOrUnion): + fntypeextra = '*' + fntypeextra + BFunc = self.ffi._typeof_locked(tp.get_c_name(fntypeextra, name))[0] + function = module.load_function(BFunc, funcname) + value = function() + if isinstance(tp, model.StructOrUnion): + value = value[0] + return value + + def _loaded_gen_constant(self, tp, name, module, library): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + value = self._load_constant(is_int, tp, name, module) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + + # ---------- + # enums + + def _check_int_constant_value(self, name, value): + prnt = self._prnt + if value <= 0: + prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % ( + name, name, value)) + else: + prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % ( + name, name, value)) + prnt(' char buf[64];') + prnt(' if ((%s) <= 0)' % name) + prnt(' sprintf(buf, "%%ld", (long)(%s));' % name) + prnt(' else') + prnt(' sprintf(buf, "%%lu", (unsigned long)(%s));' % + name) + prnt(' sprintf(out_error, "%s has the real value %s, not %s",') + prnt(' "%s", buf, "%d");' % (name[:100], value)) + prnt(' return -1;') + prnt(' }') + + def _load_known_int_constant(self, module, funcname): + BType = self.ffi._typeof_locked("char[]")[0] + BFunc = self.ffi._typeof_locked("int(*)(char*)")[0] + function = module.load_function(BFunc, funcname) + p = self.ffi.new(BType, 256) + if function(p) < 0: + error = self.ffi.string(p) + if sys.version_info >= (3,): + error = str(error, 'utf-8') + raise VerificationError(error) + + def _enum_funcname(self, prefix, name): + # "$enum_$1" => "___D_enum____D_1" + name = name.replace('$', '___D_') + return '_cffi_e_%s_%s' % (prefix, name) + + def _generate_gen_enum_decl(self, tp, name, prefix='enum'): + if tp.partial: + for enumerator in tp.enumerators: + self._generate_gen_const(True, enumerator) + return + # + funcname = self._enum_funcname(prefix, name) + self.export_symbols.append(funcname) + prnt = self._prnt + prnt('int %s(char *out_error)' % funcname) + prnt('{') + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._check_int_constant_value(enumerator, enumvalue) + prnt(' return 0;') + prnt('}') + prnt() + + def _loading_gen_enum(self, tp, name, module, prefix='enum'): + if tp.partial: + enumvalues = [self._load_constant(True, tp, enumerator, module) + for enumerator in tp.enumerators] + tp.enumvalues = tuple(enumvalues) + tp.partial_resolved = True + else: + funcname = self._enum_funcname(prefix, name) + self._load_known_int_constant(module, funcname) + + def _loaded_gen_enum(self, tp, name, module, library): + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + setattr(library, enumerator, enumvalue) + type(library)._cffi_dir.append(enumerator) + + # ---------- + # macros: for now only for integers + + def _generate_gen_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_gen_const(True, name, check_value=check_value) + + _loading_gen_macro = _loaded_noop + + def _loaded_gen_macro(self, tp, name, module, library): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + value = self._load_constant(True, tp, name, module, + check_value=check_value) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + + # ---------- + # global variables + + def _generate_gen_variable_decl(self, tp, name): + if isinstance(tp, model.ArrayType): + if tp.length_is_unknown(): + prnt = self._prnt + funcname = '_cffi_sizeof_%s' % (name,) + self.export_symbols.append(funcname) + prnt("size_t %s(void)" % funcname) + prnt("{") + prnt(" return sizeof(%s);" % (name,)) + prnt("}") + tp_ptr = model.PointerType(tp.item) + self._generate_gen_const(False, name, tp_ptr) + else: + tp_ptr = model.PointerType(tp) + self._generate_gen_const(False, name, tp_ptr, category='var') + + _loading_gen_variable = _loaded_noop + + def _loaded_gen_variable(self, tp, name, module, library): + if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the + # sense that "a=..." is forbidden + if tp.length_is_unknown(): + funcname = '_cffi_sizeof_%s' % (name,) + BFunc = self.ffi._typeof_locked('size_t(*)(void)')[0] + function = module.load_function(BFunc, funcname) + size = function() + BItemType = self.ffi._get_cached_btype(tp.item) + length, rest = divmod(size, self.ffi.sizeof(BItemType)) + if rest != 0: + raise VerificationError( + "bad size: %r does not seem to be an array of %s" % + (name, tp.item)) + tp = tp.resolve_length(length) + tp_ptr = model.PointerType(tp.item) + value = self._load_constant(False, tp_ptr, name, module) + # 'value' is a which we have to replace with + # a if the N is actually known + if tp.length is not None: + BArray = self.ffi._get_cached_btype(tp) + value = self.ffi.cast(BArray, value) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + return + # remove ptr= from the library instance, and replace + # it by a property on the class, which reads/writes into ptr[0]. + funcname = '_cffi_var_%s' % name + BFunc = self.ffi._typeof_locked(tp.get_c_name('*(*)(void)', name))[0] + function = module.load_function(BFunc, funcname) + ptr = function() + def getter(library): + return ptr[0] + def setter(library, value): + ptr[0] = value + setattr(type(library), name, property(getter, setter)) + type(library)._cffi_dir.append(name) + +cffimod_header = r''' +#include +#include +#include +#include +#include /* XXX for ssize_t on some platforms */ + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif +''' diff --git a/.venv/lib/python3.9/site-packages/cffi/verifier.py b/.venv/lib/python3.9/site-packages/cffi/verifier.py new file mode 100644 index 0000000..e392a2b --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cffi/verifier.py @@ -0,0 +1,306 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys, os, binascii, shutil, io +from . import __version_verifier_modules__ +from . import ffiplatform +from .error import VerificationError + +if sys.version_info >= (3, 3): + import importlib.machinery + def _extension_suffixes(): + return importlib.machinery.EXTENSION_SUFFIXES[:] +else: + import imp + def _extension_suffixes(): + return [suffix for suffix, _, type in imp.get_suffixes() + if type == imp.C_EXTENSION] + + +if sys.version_info >= (3,): + NativeIO = io.StringIO +else: + class NativeIO(io.BytesIO): + def write(self, s): + if isinstance(s, unicode): + s = s.encode('ascii') + super(NativeIO, self).write(s) + + +class Verifier(object): + + def __init__(self, ffi, preamble, tmpdir=None, modulename=None, + ext_package=None, tag='', force_generic_engine=False, + source_extension='.c', flags=None, relative_to=None, **kwds): + if ffi._parser._uses_new_feature: + raise VerificationError( + "feature not supported with ffi.verify(), but only " + "with ffi.set_source(): %s" % (ffi._parser._uses_new_feature,)) + self.ffi = ffi + self.preamble = preamble + if not modulename: + flattened_kwds = ffiplatform.flatten(kwds) + vengine_class = _locate_engine_class(ffi, force_generic_engine) + self._vengine = vengine_class(self) + self._vengine.patch_extension_kwds(kwds) + self.flags = flags + self.kwds = self.make_relative_to(kwds, relative_to) + # + if modulename: + if tag: + raise TypeError("can't specify both 'modulename' and 'tag'") + else: + key = '\x00'.join(['%d.%d' % sys.version_info[:2], + __version_verifier_modules__, + preamble, flattened_kwds] + + ffi._cdefsources) + if sys.version_info >= (3,): + key = key.encode('utf-8') + k1 = hex(binascii.crc32(key[0::2]) & 0xffffffff) + k1 = k1.lstrip('0x').rstrip('L') + k2 = hex(binascii.crc32(key[1::2]) & 0xffffffff) + k2 = k2.lstrip('0').rstrip('L') + modulename = '_cffi_%s_%s%s%s' % (tag, self._vengine._class_key, + k1, k2) + suffix = _get_so_suffixes()[0] + self.tmpdir = tmpdir or _caller_dir_pycache() + self.sourcefilename = os.path.join(self.tmpdir, modulename + source_extension) + self.modulefilename = os.path.join(self.tmpdir, modulename + suffix) + self.ext_package = ext_package + self._has_source = False + self._has_module = False + + def write_source(self, file=None): + """Write the C source code. It is produced in 'self.sourcefilename', + which can be tweaked beforehand.""" + with self.ffi._lock: + if self._has_source and file is None: + raise VerificationError( + "source code already written") + self._write_source(file) + + def compile_module(self): + """Write the C source code (if not done already) and compile it. + This produces a dynamic link library in 'self.modulefilename'.""" + with self.ffi._lock: + if self._has_module: + raise VerificationError("module already compiled") + if not self._has_source: + self._write_source() + self._compile_module() + + def load_library(self): + """Get a C module from this Verifier instance. + Returns an instance of a FFILibrary class that behaves like the + objects returned by ffi.dlopen(), but that delegates all + operations to the C module. If necessary, the C code is written + and compiled first. + """ + with self.ffi._lock: + if not self._has_module: + self._locate_module() + if not self._has_module: + if not self._has_source: + self._write_source() + self._compile_module() + return self._load_library() + + def get_module_name(self): + basename = os.path.basename(self.modulefilename) + # kill both the .so extension and the other .'s, as introduced + # by Python 3: 'basename.cpython-33m.so' + basename = basename.split('.', 1)[0] + # and the _d added in Python 2 debug builds --- but try to be + # conservative and not kill a legitimate _d + if basename.endswith('_d') and hasattr(sys, 'gettotalrefcount'): + basename = basename[:-2] + return basename + + def get_extension(self): + if not self._has_source: + with self.ffi._lock: + if not self._has_source: + self._write_source() + sourcename = ffiplatform.maybe_relative_path(self.sourcefilename) + modname = self.get_module_name() + return ffiplatform.get_extension(sourcename, modname, **self.kwds) + + def generates_python_module(self): + return self._vengine._gen_python_module + + def make_relative_to(self, kwds, relative_to): + if relative_to and os.path.dirname(relative_to): + dirname = os.path.dirname(relative_to) + kwds = kwds.copy() + for key in ffiplatform.LIST_OF_FILE_NAMES: + if key in kwds: + lst = kwds[key] + if not isinstance(lst, (list, tuple)): + raise TypeError("keyword '%s' should be a list or tuple" + % (key,)) + lst = [os.path.join(dirname, fn) for fn in lst] + kwds[key] = lst + return kwds + + # ---------- + + def _locate_module(self): + if not os.path.isfile(self.modulefilename): + if self.ext_package: + try: + pkg = __import__(self.ext_package, None, None, ['__doc__']) + except ImportError: + return # cannot import the package itself, give up + # (e.g. it might be called differently before installation) + path = pkg.__path__ + else: + path = None + filename = self._vengine.find_module(self.get_module_name(), path, + _get_so_suffixes()) + if filename is None: + return + self.modulefilename = filename + self._vengine.collect_types() + self._has_module = True + + def _write_source_to(self, file): + self._vengine._f = file + try: + self._vengine.write_source_to_f() + finally: + del self._vengine._f + + def _write_source(self, file=None): + if file is not None: + self._write_source_to(file) + else: + # Write our source file to an in memory file. + f = NativeIO() + self._write_source_to(f) + source_data = f.getvalue() + + # Determine if this matches the current file + if os.path.exists(self.sourcefilename): + with open(self.sourcefilename, "r") as fp: + needs_written = not (fp.read() == source_data) + else: + needs_written = True + + # Actually write the file out if it doesn't match + if needs_written: + _ensure_dir(self.sourcefilename) + with open(self.sourcefilename, "w") as fp: + fp.write(source_data) + + # Set this flag + self._has_source = True + + def _compile_module(self): + # compile this C source + tmpdir = os.path.dirname(self.sourcefilename) + outputfilename = ffiplatform.compile(tmpdir, self.get_extension()) + try: + same = ffiplatform.samefile(outputfilename, self.modulefilename) + except OSError: + same = False + if not same: + _ensure_dir(self.modulefilename) + shutil.move(outputfilename, self.modulefilename) + self._has_module = True + + def _load_library(self): + assert self._has_module + if self.flags is not None: + return self._vengine.load_library(self.flags) + else: + return self._vengine.load_library() + +# ____________________________________________________________ + +_FORCE_GENERIC_ENGINE = False # for tests + +def _locate_engine_class(ffi, force_generic_engine): + if _FORCE_GENERIC_ENGINE: + force_generic_engine = True + if not force_generic_engine: + if '__pypy__' in sys.builtin_module_names: + force_generic_engine = True + else: + try: + import _cffi_backend + except ImportError: + _cffi_backend = '?' + if ffi._backend is not _cffi_backend: + force_generic_engine = True + if force_generic_engine: + from . import vengine_gen + return vengine_gen.VGenericEngine + else: + from . import vengine_cpy + return vengine_cpy.VCPythonEngine + +# ____________________________________________________________ + +_TMPDIR = None + +def _caller_dir_pycache(): + if _TMPDIR: + return _TMPDIR + result = os.environ.get('CFFI_TMPDIR') + if result: + return result + filename = sys._getframe(2).f_code.co_filename + return os.path.abspath(os.path.join(os.path.dirname(filename), + '__pycache__')) + +def set_tmpdir(dirname): + """Set the temporary directory to use instead of __pycache__.""" + global _TMPDIR + _TMPDIR = dirname + +def cleanup_tmpdir(tmpdir=None, keep_so=False): + """Clean up the temporary directory by removing all files in it + called `_cffi_*.{c,so}` as well as the `build` subdirectory.""" + tmpdir = tmpdir or _caller_dir_pycache() + try: + filelist = os.listdir(tmpdir) + except OSError: + return + if keep_so: + suffix = '.c' # only remove .c files + else: + suffix = _get_so_suffixes()[0].lower() + for fn in filelist: + if fn.lower().startswith('_cffi_') and ( + fn.lower().endswith(suffix) or fn.lower().endswith('.c')): + try: + os.unlink(os.path.join(tmpdir, fn)) + except OSError: + pass + clean_dir = [os.path.join(tmpdir, 'build')] + for dir in clean_dir: + try: + for fn in os.listdir(dir): + fn = os.path.join(dir, fn) + if os.path.isdir(fn): + clean_dir.append(fn) + else: + os.unlink(fn) + except OSError: + pass + +def _get_so_suffixes(): + suffixes = _extension_suffixes() + if not suffixes: + # bah, no C_EXTENSION available. Occurs on pypy without cpyext + if sys.platform == 'win32': + suffixes = [".pyd"] + else: + suffixes = [".so"] + + return suffixes + +def _ensure_dir(filename): + dirname = os.path.dirname(filename) + if dirname and not os.path.isdir(dirname): + os.makedirs(dirname) diff --git a/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/INSTALLER b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/METADATA b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/METADATA new file mode 100644 index 0000000..408da48 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/METADATA @@ -0,0 +1,110 @@ +Metadata-Version: 2.4 +Name: cryptography +Version: 49.0.0 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: POSIX +Classifier: Operating System :: POSIX :: BSD +Classifier: Operating System :: POSIX :: Linux +Classifier: Operating System :: Microsoft :: Windows +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +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 :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable +Classifier: Topic :: Security :: Cryptography +Requires-Dist: cffi>=2.0.0 ; platform_python_implementation != 'PyPy' +Requires-Dist: typing-extensions>=4.13.2 ; python_full_version < '3.11' +Requires-Dist: bcrypt>=3.1.5 ; extra == 'ssh' +Provides-Extra: ssh +License-File: LICENSE +License-File: LICENSE.APACHE +License-File: LICENSE.BSD +Summary: cryptography is a package which provides cryptographic recipes and primitives to Python developers. +Author-email: The Python Cryptographic Authority and individual contributors +License-Expression: Apache-2.0 OR BSD-3-Clause +Requires-Python: >=3.9, !=3.9.0, !=3.9.1 +Description-Content-Type: text/x-rst; charset=UTF-8 +Project-URL: changelog, https://cryptography.io/en/latest/changelog/ +Project-URL: documentation, https://cryptography.io/ +Project-URL: homepage, https://github.com/pyca/cryptography +Project-URL: issues, https://github.com/pyca/cryptography/issues +Project-URL: source, https://github.com/pyca/cryptography/ + +pyca/cryptography +================= + +.. image:: https://img.shields.io/pypi/v/cryptography.svg + :target: https://pypi.org/project/cryptography/ + :alt: Latest Version + +.. image:: https://readthedocs.org/projects/cryptography/badge/?version=latest + :target: https://cryptography.io + :alt: Latest Docs + +.. image:: https://github.com/pyca/cryptography/actions/workflows/ci.yml/badge.svg + :target: https://github.com/pyca/cryptography/actions/workflows/ci.yml?query=branch%3Amain + +``cryptography`` is a package which provides cryptographic recipes and +primitives to Python developers. Our goal is for it to be your "cryptographic +standard library". It supports Python 3.9+ and PyPy3 7.3.11+. + +``cryptography`` includes both high level recipes and low level interfaces to +common cryptographic algorithms such as symmetric ciphers, message digests, and +key derivation functions. For example, to encrypt something with +``cryptography``'s high level symmetric encryption recipe: + +.. code-block:: pycon + + >>> from cryptography.fernet import Fernet + >>> # Put this somewhere safe! + >>> key = Fernet.generate_key() + >>> f = Fernet(key) + >>> token = f.encrypt(b"A really secret message. Not for prying eyes.") + >>> token + b'...' + >>> f.decrypt(token) + b'A really secret message. Not for prying eyes.' + +You can find more information in the `documentation`_. + +You can install ``cryptography`` with: + +.. code-block:: console + + $ pip install cryptography + +For full details see `the installation documentation`_. + +Discussion +~~~~~~~~~~ + +If you run into bugs, you can file them in our `issue tracker`_. + +We maintain a `cryptography-dev`_ mailing list for development discussion. + +You can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get +involved. + +Security +~~~~~~~~ + +Need to report a security issue? Please consult our `security reporting`_ +documentation. + + +.. _`documentation`: https://cryptography.io/ +.. _`the installation documentation`: https://cryptography.io/en/latest/installation/ +.. _`issue tracker`: https://github.com/pyca/cryptography/issues +.. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev +.. _`security reporting`: https://cryptography.io/en/latest/security/ + diff --git a/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/RECORD b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/RECORD new file mode 100644 index 0000000..3631746 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/RECORD @@ -0,0 +1,195 @@ +cryptography-49.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cryptography-49.0.0.dist-info/METADATA,sha256=H8g50k78NV8OXFB6qAeCK8pDcecyYDttPpKyQDje3tI,4343 +cryptography-49.0.0.dist-info/RECORD,, +cryptography-49.0.0.dist-info/WHEEL,sha256=MnJZM4vvsK5fDkXMx7UTOdZcIAYeerNWYvIjr1XbD5U,108 +cryptography-49.0.0.dist-info/licenses/LICENSE,sha256=Pgx8CRqUi4JTO6mP18u0BDLW8amsv4X1ki0vmak65rs,197 +cryptography-49.0.0.dist-info/licenses/LICENSE.APACHE,sha256=qsc7MUj20dcRHbyjIJn2jSbGRMaBOuHk8F9leaomY_4,11360 +cryptography-49.0.0.dist-info/licenses/LICENSE.BSD,sha256=YCxMdILeZHndLpeTzaJ15eY9dz2s0eymiSMqtwCPtPs,1532 +cryptography-49.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json,sha256=_5Lc-8zkys-qqxa-ROfnbst2dv1C5n7UhsYizdSAWew,45648 +cryptography-49.0.0.dist-info/sboms/sbom.json,sha256=WYwNSGvh_69UziImCyow4F7_yrWzpuiwmUyKIHhkK0E,1206 +cryptography/__about__.py,sha256=p2cyvtrX_xcEkq3BVREzUdakMwPxE5Npl9xNKBvay-k,445 +cryptography/__init__.py,sha256=mthuUrTd4FROCpUYrTIqhjz6s6T9djAZrV7nZ1oMm2o,364 +cryptography/__pycache__/__about__.cpython-39.pyc,, +cryptography/__pycache__/__init__.cpython-39.pyc,, +cryptography/__pycache__/exceptions.cpython-39.pyc,, +cryptography/__pycache__/fernet.cpython-39.pyc,, +cryptography/__pycache__/utils.cpython-39.pyc,, +cryptography/exceptions.py,sha256=835EWILc2fwxw-gyFMriciC2SqhViETB10LBSytnDIc,1087 +cryptography/fernet.py,sha256=3Cvxkh0KJSbX8HbnCHu4wfCW7U0GgfUA3v_qQ8a8iWc,6963 +cryptography/hazmat/__init__.py,sha256=5IwrLWrVp0AjEr_4FdWG_V057NSJGY_W4egNNsuct0g,455 +cryptography/hazmat/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/__pycache__/_oid.cpython-39.pyc,, +cryptography/hazmat/_oid.py,sha256=mHJL2m4LnXNqetu_yX8QnNb8UaOuX4y59uKZEGukT1o,17879 +cryptography/hazmat/asn1/__init__.py,sha256=30QNQSTZyAfiM8l9SStLnV20d6efznwm4e43MkTHAVY,776 +cryptography/hazmat/asn1/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/asn1/__pycache__/asn1.cpython-39.pyc,, +cryptography/hazmat/asn1/asn1.py,sha256=9mcfrmdvK7KtjhRYofMzAjW0u7nvqbfsvPfbhNQK1BQ,19152 +cryptography/hazmat/backends/__init__.py,sha256=O5jvKFQdZnXhKeqJ-HtulaEL9Ni7mr1mDzZY5kHlYhI,361 +cryptography/hazmat/backends/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/backends/openssl/__init__.py,sha256=p3jmJfnCag9iE5sdMrN6VvVEu55u46xaS_IjoI0SrmA,305 +cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-39.pyc,, +cryptography/hazmat/backends/openssl/backend.py,sha256=3ReyMe3ee_A8-3fSroGu7xu6pPevXQLt9Wd5O9xxecY,10591 +cryptography/hazmat/bindings/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/bindings/_rust.abi3.so,sha256=yc0FvE49q4BShGowkvKQWhWzxf-KJTasJ52A1txIn8Y,13817304 +cryptography/hazmat/bindings/_rust/__init__.pyi,sha256=uUnnvOq_uameYnBNpmsv3SRAVO0WQGpjI58aR1lL4Kw,2285 +cryptography/hazmat/bindings/_rust/_openssl.pyi,sha256=T_5TpYO8bghIPjAQ3BtAABqw-CcYskHp92wm5PNY6dc,228 +cryptography/hazmat/bindings/_rust/asn1.pyi,sha256=BrGjC8J6nwuS-r3EVcdXJB8ndotfY9mbQYOfpbPG0HA,354 +cryptography/hazmat/bindings/_rust/declarative_asn1.pyi,sha256=MBmOZzLTdmPJ6-1K6Aq3PTuHJ1MGgRfIu0hIgag7ocE,3866 +cryptography/hazmat/bindings/_rust/exceptions.pyi,sha256=exXr2xw_0pB1kk93cYbM3MohbzoUkjOms1ZMUi0uQZE,640 +cryptography/hazmat/bindings/_rust/ocsp.pyi,sha256=VPVWuKHI9EMs09ZLRYAGvR0Iz0mCMmEzXAkgJHovpoM,4020 +cryptography/hazmat/bindings/_rust/openssl/__init__.pyi,sha256=JDCef29vXnrEMvF13JH9z1-W9ahiTZQAk5xhu_KH6po,1550 +cryptography/hazmat/bindings/_rust/openssl/aead.pyi,sha256=7d--xdc0vuzRe4S2uuQaGm-9GGKv4NcSLQcLyWcaD6s,4582 +cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi,sha256=LhPzHWSXJq4grAJXn6zSvSSdV-aYIIscHDwIPlJGGPs,1315 +cryptography/hazmat/bindings/_rust/openssl/cmac.pyi,sha256=nPH0X57RYpsAkRowVpjQiHE566ThUTx7YXrsadmrmHk,564 +cryptography/hazmat/bindings/_rust/openssl/dh.pyi,sha256=Z3TC-G04-THtSdAOPLM1h2G7ml5bda1ElZUcn5wpuhk,1564 +cryptography/hazmat/bindings/_rust/openssl/dsa.pyi,sha256=qBtkgj2albt2qFcnZ9UDrhzoNhCVO7HTby5VSf1EXMI,1299 +cryptography/hazmat/bindings/_rust/openssl/ec.pyi,sha256=zJy0pRa5n-_p2dm45PxECB_-B6SVZyNKfjxFDpPqT38,1691 +cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi,sha256=VXfXd5G6hUivg399R1DYdmW3eTb0EebzDTqjRC2gaRw,532 +cryptography/hazmat/bindings/_rust/openssl/ed448.pyi,sha256=Yx49lqdnjsD7bxiDV1kcaMrDktug5evi5a6zerMiy2s,514 +cryptography/hazmat/bindings/_rust/openssl/hashes.pyi,sha256=bFe3T13UeyRInUJMD-R5ArGTGLqWDiWo2Lv2KGzUbf4,1076 +cryptography/hazmat/bindings/_rust/openssl/hmac.pyi,sha256=BXZn7NDjL3JAbYW0SQ8pg1iyC5DbQXVhUAiwsi8DFR8,702 +cryptography/hazmat/bindings/_rust/openssl/hpke.pyi,sha256=p_hGLn6YH-EarJF1V5bUsUtjipviEApcR5O0sUHJLtc,2914 +cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=HiiLdEB9nqMsTvMwiFppQpfPz6fHUz9_gpjEB_XAOXA,6619 +cryptography/hazmat/bindings/_rust/openssl/keys.pyi,sha256=teIt8M6ZEMJrn4s3W0UnW0DZ-30Jd68WnSsKKG124l0,912 +cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi,sha256=HChNsjW0C_vO9OVD4FhEZrXO3_FiEq2ZTF59hlfcEdM,1073 +cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi,sha256=byoeus4-lIOlWlEiRQdCc00qCkXpOB5peBY6yo9ik8s,835 +cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi,sha256=_SW9NtQ5FDlAbdclFtWpT4lGmxKIKHpN-4j8J2BzYfQ,585 +cryptography/hazmat/bindings/_rust/openssl/rsa.pyi,sha256=2OQCNSXkxgc-3uw1xiCCloIQTV6p9_kK79Yu0rhZgPc,1364 +cryptography/hazmat/bindings/_rust/openssl/x25519.pyi,sha256=ewn4GpQyb7zPwE-ni7GtyQgMC0A1mLuqYsSyqv6nI_s,523 +cryptography/hazmat/bindings/_rust/openssl/x448.pyi,sha256=juTZTmli8jO_5Vcufg-vHvx_tCyezmSLIh_9PU3TczI,505 +cryptography/hazmat/bindings/_rust/pkcs12.pyi,sha256=vEEd5wDiZvb8ZGFaziLCaWLzAwoG_tvPUxLQw5_uOl8,1605 +cryptography/hazmat/bindings/_rust/pkcs7.pyi,sha256=txGBJijqZshEcqra6byPNbnisIdlxzOSIHP2hl9arPs,1601 +cryptography/hazmat/bindings/_rust/test_support.pyi,sha256=PPhld-WkO743iXFPebeG0LtgK0aTzGdjcIsay1Gm5GE,757 +cryptography/hazmat/bindings/_rust/x509.pyi,sha256=AjnoHl5C31c5AWSAmw2XvGc2kosUpzeV8ALtMlBxYOg,10204 +cryptography/hazmat/bindings/openssl/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-39.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-39.pyc,, +cryptography/hazmat/bindings/openssl/_conditional.py,sha256=vfzi-xHdStAcJQjLqqOlSos94L8D_tqFtBe7Ovw-KtY,5611 +cryptography/hazmat/bindings/openssl/binding.py,sha256=FsuLxbTnrqW60-dAWtakgufeq7TnqaQai1Pc7Dowrjo,3706 +cryptography/hazmat/decrepit/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/decrepit/ciphers/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-39.pyc,, +cryptography/hazmat/decrepit/ciphers/__pycache__/modes.cpython-39.pyc,, +cryptography/hazmat/decrepit/ciphers/algorithms.py,sha256=yqHt7k5OzF_KuvO8M9vTlNLtG7EotbvShyYKIaUJqhg,3566 +cryptography/hazmat/decrepit/ciphers/modes.py,sha256=Oq_PEwCke5OLczOfr_vzAOJ6wPx-rlsvHAXPBuh5b9o,1649 +cryptography/hazmat/primitives/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/_modes.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/_serialization.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/cmac.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/constant_time.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/hashes.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/hmac.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/hpke.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/keywrap.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/padding.cpython-39.pyc,, +cryptography/hazmat/primitives/__pycache__/poly1305.cpython-39.pyc,, +cryptography/hazmat/primitives/_asymmetric.py,sha256=RhgcouUB6HTiFDBrR1LxqkMjpUxIiNvQ1r_zJjRG6qQ,532 +cryptography/hazmat/primitives/_cipheralgorithm.py,sha256=Eh3i7lwedHfi0eLSsH93PZxQKzY9I6lkK67vL4V5tOc,1522 +cryptography/hazmat/primitives/_modes.py,sha256=_EiAOD8Jb6WpFXluwkcUT3ECz_TH8xjGvbQlGkNm59Q,3075 +cryptography/hazmat/primitives/_serialization.py,sha256=hi0xJblBAZ8pmZx2lWa-lruphxvvvG3g9DNK0G8Odfs,4440 +cryptography/hazmat/primitives/asymmetric/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/mldsa.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/mlkem.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-39.pyc,, +cryptography/hazmat/primitives/asymmetric/dh.py,sha256=klvHVaxAFkUyaWXLytqYjBTh81Zx1ByCJNZVRcSDYX8,3912 +cryptography/hazmat/primitives/asymmetric/dsa.py,sha256=kQzTViqAI9PiELNOBco_n6MfP3N9ehIPkSduOpupt0M,4482 +cryptography/hazmat/primitives/asymmetric/ec.py,sha256=LklVCLLxbbQzqiE6HRaYTRauLMphYUw3tE6c8oBIxYQ,10183 +cryptography/hazmat/primitives/asymmetric/ed25519.py,sha256=mbffLvs-3PgCDeg1rQXVXh7GLntlVL4ATjkIEc4pt5M,2998 +cryptography/hazmat/primitives/asymmetric/ed448.py,sha256=n0dK6y-VLxuw-zvrDxuPT4598hymgX-1Ry_jq9aUQhE,4002 +cryptography/hazmat/primitives/asymmetric/mldsa.py,sha256=ih4Z__s7bRAuZKs9qKcuNQ7z9W6q3xrVcw5Oc81_9X0,13750 +cryptography/hazmat/primitives/asymmetric/mlkem.py,sha256=wvVkeFT-4of-VcUAER2-zI_5hXT6rwTJPMCQ8gF9GTA,7901 +cryptography/hazmat/primitives/asymmetric/padding.py,sha256=vQ6l6gOg9HqcbOsvHrSiJRVLdEj9L4m4HkRGYziTyFA,2854 +cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=lIE7lGe449W5URLTKCpvFGerITouKoZV9GwuTzScsSo,8492 +cryptography/hazmat/primitives/asymmetric/types.py,sha256=s8-WqjOntaN1oAOV5bHczLFM2mpSi0JJuyED_9FoF5w,2409 +cryptography/hazmat/primitives/asymmetric/utils.py,sha256=Qs8Re9GFPjW_tNp_73IeJEjPCf0slOIsWOxo6qymT6k,821 +cryptography/hazmat/primitives/asymmetric/x25519.py,sha256=lQcgUk-Piubj8ynFNWQeYme3tYZMgHQqkRKkIDOHLzo,3888 +cryptography/hazmat/primitives/asymmetric/x448.py,sha256=b37ig7k7poG6SJDry42j-ElCj5q4eQ0X5CFmN0Sn8z8,3913 +cryptography/hazmat/primitives/ciphers/__init__.py,sha256=eyEXmjk6_CZXaOPYDr7vAYGXr29QvzgWL2-4CSolLFs,680 +cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-39.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-39.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-39.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-39.pyc,, +cryptography/hazmat/primitives/ciphers/aead.py,sha256=Fzlyx7w8KYQakzDp1zWgJnIr62zgZrgVh1u2h4exB54,634 +cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=IGfCycYJOh1TvoI34rfw8KfJ_xmt1p_DpBht2Fghceo,3496 +cryptography/hazmat/primitives/ciphers/base.py,sha256=aBC7HHBBoixebmparVr0UlODs3VD0A7B6oz_AaRjDv8,4253 +cryptography/hazmat/primitives/ciphers/modes.py,sha256=EIDdFACuIPhwOaDeUouSroxtdFi7vOrXwJbB4ZPxRLs,5999 +cryptography/hazmat/primitives/cmac.py,sha256=sz_s6H_cYnOvx-VNWdIKhRhe3Ymp8z8J0D3CBqOX3gg,338 +cryptography/hazmat/primitives/constant_time.py,sha256=xdunWT0nf8OvKdcqUhhlFKayGp4_PgVJRU2W1wLSr_A,422 +cryptography/hazmat/primitives/hashes.py,sha256=M8BrlKB3U6DEtHvWTV5VRjpteHv1kS3Zxm_Bsk04cr8,5184 +cryptography/hazmat/primitives/hmac.py,sha256=RpB3z9z5skirCQrm7zQbtnp9pLMnAjrlTUvKqF5aDDc,423 +cryptography/hazmat/primitives/hpke.py,sha256=RsHissC5l-dTPn1p2JbcrIrAnDBrLqM5ugBFSGpmKu4,865 +cryptography/hazmat/primitives/kdf/__init__.py,sha256=v3yiYBGU272EojNXbwfYZdbbfI9cVOCCG3nXhTDda3k,1037 +cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-39.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-39.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-39.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-39.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-39.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-39.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-39.pyc,, +cryptography/hazmat/primitives/kdf/argon2.py,sha256=ZJx-enUlAA4o7b46C1wlzG_XAQQW0wIkFgUKkrM_wA8,632 +cryptography/hazmat/primitives/kdf/concatkdf.py,sha256=BFnOKS72txKF0yQvASr0Na7uhzvLHpUCckK5iNAC_aQ,591 +cryptography/hazmat/primitives/kdf/hkdf.py,sha256=M0lAEfRoc4kpp4-nwDj9yB-vNZukIOYEQrUlWsBNn9o,543 +cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=C3w99vjFqhqzAxzFOH4zzvVoHkb5AC6Lz6AEQGV7d_g,737 +cryptography/hazmat/primitives/kdf/pbkdf2.py,sha256=Xchkk99s-Mk6b6KSCouqdk8FVyiNVOSFIenmnW3tLgQ,468 +cryptography/hazmat/primitives/kdf/scrypt.py,sha256=XyWUdUUmhuI9V6TqAPOvujCSMGv1XQdg0a21IWCmO-U,590 +cryptography/hazmat/primitives/kdf/x963kdf.py,sha256=QKjhRehuTsAstL384bKfvjuv1yfdamAHVhsBRWen2Vw,456 +cryptography/hazmat/primitives/keywrap.py,sha256=UI-0UESQxBXTKU1HrrRoUwDiFsrWif81qyXlV1e7kyY,5776 +cryptography/hazmat/primitives/padding.py,sha256=QT-U-NvV2eQGO1wVPbDiNGNSc9keRDS-ig5cQOrLz0E,1865 +cryptography/hazmat/primitives/poly1305.py,sha256=P5EPQV-RB_FJPahpg01u0Ts4S_PnAmsroxIGXbGeRRo,355 +cryptography/hazmat/primitives/serialization/__init__.py,sha256=Q7uTgDlt7n3WfsMT6jYwutC6DIg_7SEeoAm1GHZ5B5E,1705 +cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-39.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-39.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-39.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-39.pyc,, +cryptography/hazmat/primitives/serialization/base.py,sha256=ikq5MJIwp_oUnjiaBco_PmQwOTYuGi-XkYUYHKy8Vo0,615 +cryptography/hazmat/primitives/serialization/pkcs12.py,sha256=mS9cFNG4afzvseoc5e1MWoY2VskfL8N8Y_OFjl67luY,5104 +cryptography/hazmat/primitives/serialization/pkcs7.py,sha256=mFM7OFuZ8cCxUGUoo4Cof6BnCHc_Ibx1AQjjfxnPlxo,13998 +cryptography/hazmat/primitives/serialization/ssh.py,sha256=HV6ZqIjqNNaNUL6M4gQyNJJtZ75EsiSZs6yxddqBrWI,53789 +cryptography/hazmat/primitives/twofactor/__init__.py,sha256=tmMZGB-g4IU1r7lIFqASU019zr0uPp_wEBYcwdDCKCA,258 +cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-39.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-39.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-39.pyc,, +cryptography/hazmat/primitives/twofactor/hotp.py,sha256=ivZo5BrcCGWLsqql4nZV0XXCjyGPi_iHfDFltGlOJwk,3256 +cryptography/hazmat/primitives/twofactor/totp.py,sha256=m5LPpRL00kp4zY8gTjr55Hfz9aMlPS53kHmVkSQCmdY,1652 +cryptography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cryptography/utils.py,sha256=wCnykfmWmp6L5zUFou715snYL9_YLLHjpj4_NHmlhwU,4281 +cryptography/x509/__init__.py,sha256=zciyadRgnCp2DNPPm6ujEKd6EX-8_zOnwtCjJbZBatg,8273 +cryptography/x509/__pycache__/__init__.cpython-39.pyc,, +cryptography/x509/__pycache__/base.cpython-39.pyc,, +cryptography/x509/__pycache__/certificate_transparency.cpython-39.pyc,, +cryptography/x509/__pycache__/extensions.cpython-39.pyc,, +cryptography/x509/__pycache__/general_name.cpython-39.pyc,, +cryptography/x509/__pycache__/name.cpython-39.pyc,, +cryptography/x509/__pycache__/ocsp.cpython-39.pyc,, +cryptography/x509/__pycache__/oid.cpython-39.pyc,, +cryptography/x509/__pycache__/verification.cpython-39.pyc,, +cryptography/x509/base.py,sha256=k9zEFC7H7Gys58AmJNeEfpTeJCvog8p8oDEa8Dg0CO0,27056 +cryptography/x509/certificate_transparency.py,sha256=JqoOIDhlwInrYMFW6IFn77WJ0viF-PB_rlZV3vs9MYc,797 +cryptography/x509/extensions.py,sha256=0AUgutLe26SLg1KaxSeo0fG7fUBAyK2tEgJl9c_AQRM,77968 +cryptography/x509/general_name.py,sha256=sP_rV11Qlpsk4x3XXGJY_Mv0Q_s9dtjeLckHsjpLQoQ,7836 +cryptography/x509/name.py,sha256=oI2w6VdY8zgw7qpNhlxEx512W0AhWDXQrDYf5EsM2PY,15566 +cryptography/x509/ocsp.py,sha256=Yey6NdFV1MPjop24Mj_VenjEpg3kUaMopSWOK0AbeBs,12699 +cryptography/x509/oid.py,sha256=BUzgXXGVWilkBkdKPTm9R4qElE9gAGHgdYPMZAp7PJo,931 +cryptography/x509/verification.py,sha256=gR2C2c-XZQtblZhT5T5vjSKOtCb74ef2alPVmEcwFlM,958 diff --git a/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/WHEEL b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/WHEEL new file mode 100644 index 0000000..8e4b338 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: maturin (1.14.0) +Root-Is-Purelib: false +Tag: cp39-abi3-manylinux_2_34_x86_64 + diff --git a/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..b11f379 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE @@ -0,0 +1,3 @@ +This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. diff --git a/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE.APACHE b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE.APACHE new file mode 100644 index 0000000..62589ed --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE.APACHE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE.BSD b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE.BSD new file mode 100644 index 0000000..ec1a29d --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/licenses/LICENSE.BSD @@ -0,0 +1,27 @@ +Copyright (c) Individual 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 PyCA Cryptography 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 OWNER 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.9/site-packages/cryptography-49.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json new file mode 100644 index 0000000..9b51a55 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json @@ -0,0 +1,1365 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.5", + "version": 1, + "serialNumber": "urn:uuid:2a91579d-ee67-41b1-b3fd-76d9014731a7", + "metadata": { + "timestamp": "2026-06-12T19:53:04.129210663Z", + "tools": [ + { + "vendor": "CycloneDX", + "name": "cargo-cyclonedx", + "version": "0.5.9" + } + ], + "authors": [ + { + "name": "The cryptography developers", + "email": "cryptography-dev@python.org" + } + ], + "component": { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust#cryptography-rust@0.49.0", + "author": "The cryptography developers ", + "name": "cryptography-rust", + "version": "0.49.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-rust@0.49.0?download_url=file://.", + "components": [ + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust#cryptography-rust@0.49.0 bin-target-0", + "name": "cryptography_rust", + "version": "0.49.0", + "purl": "pkg:cargo/cryptography-rust@0.49.0?download_url=file://.#src/lib.rs" + } + ] + }, + "properties": [ + { + "name": "cdx:rustc:sbom:target:all_targets", + "value": "true" + } + ] + }, + "components": [ + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-cffi#0.49.0", + "author": "The cryptography developers ", + "name": "cryptography-cffi", + "version": "0.49.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-cffi@0.49.0?download_url=file://cryptography-cffi" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-crypto#0.49.0", + "author": "The cryptography developers ", + "name": "cryptography-crypto", + "version": "0.49.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-crypto@0.49.0?download_url=file://cryptography-crypto" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-keepalive#0.49.0", + "author": "The cryptography developers ", + "name": "cryptography-keepalive", + "version": "0.49.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-keepalive@0.49.0?download_url=file://cryptography-keepalive" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-key-parsing#0.49.0", + "author": "The cryptography developers ", + "name": "cryptography-key-parsing", + "version": "0.49.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-key-parsing@0.49.0?download_url=file://cryptography-key-parsing" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-openssl#0.49.0", + "author": "The cryptography developers ", + "name": "cryptography-openssl", + "version": "0.49.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-openssl@0.49.0?download_url=file://cryptography-openssl" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-x509#0.49.0", + "author": "The cryptography developers ", + "name": "cryptography-x509", + "version": "0.49.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-x509@0.49.0?download_url=file://cryptography-x509" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-x509-verification#0.49.0", + "author": "The cryptography developers ", + "name": "cryptography-x509-verification", + "version": "0.49.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-x509-verification@0.49.0?download_url=file://cryptography-x509-verification" + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "author": "Alex Gaynor ", + "name": "asn1", + "version": "0.24.1", + "description": "ASN.1 (DER) parser and writer for Rust.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "c9795210620c0cb3f9a7ce4f882808c38e1ef7b347c90591dceae0886e031fb1" + } + ], + "licenses": [ + { + "expression": "BSD-3-Clause" + } + ], + "purl": "pkg:cargo/asn1@0.24.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/alex/rust-asn1" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#asn1_derive@0.24.1", + "author": "Alex Gaynor ", + "name": "asn1_derive", + "version": "0.24.1", + "description": "#[derive] support for asn1", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "909e307f1cc32bb8bccbd98f446e6d1bf03fa30f7b53a4337da7181ad30fa11a" + } + ], + "licenses": [ + { + "expression": "BSD-3-Clause" + } + ], + "purl": "pkg:cargo/asn1_derive@0.24.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/alex/rust-asn1" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#base64@0.22.1", + "author": "Marshall Pierce ", + "name": "base64", + "version": "0.22.1", + "description": "encodes and decodes base64 as bytes or utf8", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/base64@0.22.1", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/base64" + }, + { + "type": "vcs", + "url": "https://github.com/marshallpierce/rust-base64" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#bitflags@2.13.0", + "author": "The Rust Project Developers", + "name": "bitflags", + "version": "2.13.0", + "description": "A macro to generate structures which behave like bitflags. ", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/bitflags@2.13.0", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/bitflags" + }, + { + "type": "website", + "url": "https://github.com/bitflags/bitflags" + }, + { + "type": "vcs", + "url": "https://github.com/bitflags/bitflags" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.64", + "author": "Alex Crichton ", + "name": "cc", + "version": "1.2.64", + "description": "A build-time dependency for Cargo build scripts to assist in invoking the native C compiler to compile native C code into a static archive to be linked into Rust code. ", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/cc@1.2.64", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/cc" + }, + { + "type": "website", + "url": "https://github.com/rust-lang/cc-rs" + }, + { + "type": "vcs", + "url": "https://github.com/rust-lang/cc-rs" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "author": "Alex Crichton ", + "name": "cfg-if", + "version": "1.0.4", + "description": "A macro to ergonomically define an item depending on a large number of #[cfg] parameters. Structured like an if-else chain, the first matching branch is the item that gets emitted. ", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/cfg-if@1.0.4", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/rust-lang/cfg-if" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#find-msvc-tools@0.1.9", + "name": "find-msvc-tools", + "version": "0.1.9", + "description": "Find windows-specific tools, read MSVC versions from the registry and from COM interfaces", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/find-msvc-tools@0.1.9", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/find-msvc-tools" + }, + { + "type": "vcs", + "url": "https://github.com/rust-lang/cc-rs" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1", + "author": "Steven Fackler ", + "name": "foreign-types-shared", + "version": "0.1.1", + "description": "An internal crate used by foreign-types", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/foreign-types-shared@0.1.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/sfackler/foreign-types" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#foreign-types@0.3.2", + "author": "Steven Fackler ", + "name": "foreign-types", + "version": "0.3.2", + "description": "A framework for Rust wrappers over C APIs", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/foreign-types@0.3.2", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/sfackler/foreign-types" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0", + "name": "heck", + "version": "0.5.0", + "description": "heck is a case conversion library.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/heck@0.5.0", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/withoutboats/heck" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#itoa@1.0.18", + "author": "David Tolnay ", + "name": "itoa", + "version": "1.0.18", + "description": "Fast integer primitive to string conversion", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/itoa@1.0.18", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/itoa" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/itoa" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "author": "The Rust Project Developers", + "name": "libc", + "version": "0.2.186", + "description": "Raw FFI bindings to platform libraries like libc.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/libc@0.2.186", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/rust-lang/libc" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4", + "author": "Aleksey Kladov ", + "name": "once_cell", + "version": "1.21.4", + "description": "Single assignment cells and lazy values.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/once_cell@1.21.4", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/once_cell" + }, + { + "type": "vcs", + "url": "https://github.com/matklad/once_cell" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#openssl-macros@0.1.1", + "name": "openssl-macros", + "version": "0.1.1", + "description": "Internal macros used by the openssl crate.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/openssl-macros@0.1.1" + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.117", + "author": "Alex Crichton , Steven Fackler ", + "name": "openssl-sys", + "version": "0.9.117", + "description": "FFI bindings to OpenSSL", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" + } + ], + "licenses": [ + { + "expression": "MIT" + } + ], + "purl": "pkg:cargo/openssl-sys@0.9.117", + "externalReferences": [ + { + "type": "other", + "url": "openssl" + }, + { + "type": "vcs", + "url": "https://github.com/rust-openssl/rust-openssl" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.81", + "author": "Steven Fackler ", + "name": "openssl", + "version": "0.10.81", + "description": "OpenSSL bindings", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" + } + ], + "licenses": [ + { + "expression": "Apache-2.0" + } + ], + "purl": "pkg:cargo/openssl@0.10.81", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/rust-openssl/rust-openssl" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pem@3.0.6", + "author": "Jonathan Creekmore ", + "name": "pem", + "version": "3.0.6", + "description": "Parse and encode PEM-encoded data.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" + } + ], + "licenses": [ + { + "expression": "MIT" + } + ], + "purl": "pkg:cargo/pem@3.0.6", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/pem/" + }, + { + "type": "website", + "url": "https://github.com/jcreekmore/pem-rs.git" + }, + { + "type": "vcs", + "url": "https://github.com/jcreekmore/pem-rs.git" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pkg-config@0.3.33", + "author": "Alex Crichton ", + "name": "pkg-config", + "version": "0.3.33", + "description": "A library to run the pkg-config system tool at build time in order to be used in Cargo build scripts. ", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pkg-config@0.3.33", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/pkg-config" + }, + { + "type": "vcs", + "url": "https://github.com/rust-lang/pkg-config-rs" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#portable-atomic@1.13.1", + "name": "portable-atomic", + "version": "1.13.1", + "description": "Portable atomic types including support for 128-bit atomics, atomic float, etc. ", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 OR MIT" + } + ], + "purl": "pkg:cargo/portable-atomic@1.13.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/taiki-e/portable-atomic" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "author": "David Tolnay , Alex Crichton ", + "name": "proc-macro2", + "version": "1.0.106", + "description": "A substitute implementation of the compiler's `proc_macro` API to decouple token-based libraries from the procedural macro use case.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/proc-macro2@1.0.106", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/proc-macro2" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/proc-macro2" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.0", + "author": "PyO3 Project and Contributors ", + "name": "pyo3-build-config", + "version": "0.29.0", + "description": "Build configuration for the PyO3 ecosystem", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3-build-config@0.29.0", + "externalReferences": [ + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.29.0", + "author": "PyO3 Project and Contributors ", + "name": "pyo3-ffi", + "version": "0.29.0", + "description": "Python-API bindings for the PyO3 ecosystem", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3-ffi@0.29.0", + "externalReferences": [ + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "other", + "url": "python" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.29.0", + "author": "PyO3 Project and Contributors ", + "name": "pyo3-macros-backend", + "version": "0.29.0", + "description": "Code generation for PyO3 package", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3-macros-backend@0.29.0", + "externalReferences": [ + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.29.0", + "author": "PyO3 Project and Contributors ", + "name": "pyo3-macros", + "version": "0.29.0", + "description": "Proc macros for PyO3 package", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3-macros@0.29.0", + "externalReferences": [ + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.0", + "author": "PyO3 Project and Contributors ", + "name": "pyo3", + "version": "0.29.0", + "description": "Bindings to Python interpreter", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3@0.29.0", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/crate/pyo3/" + }, + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "other", + "url": "pyo3-python" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "author": "David Tolnay ", + "name": "quote", + "version": "1.0.45", + "description": "Quasi-quoting macro quote!(...)", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/quote@1.0.45", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/quote/" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/quote" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#self_cell@1.2.2", + "author": "Lukas Bergdoll ", + "name": "self_cell", + "version": "1.2.2", + "description": "Safe-to-use proc-macro-free self-referential structs in stable Rust.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 OR GPL-2.0-only" + } + ], + "purl": "pkg:cargo/self_cell@1.2.2", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/self_cell" + }, + { + "type": "vcs", + "url": "https://github.com/Voultapher/self_cell" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#shlex@2.0.1", + "author": "comex , Fenhl , Adrian Taylor , Alex Touchet , Daniel Parks , Garrett Berg ", + "name": "shlex", + "version": "2.0.1", + "description": "Split a string into shell words, like Python's shlex.", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/shlex@2.0.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/comex/rust-shlex" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117", + "author": "David Tolnay ", + "name": "syn", + "version": "2.0.117", + "description": "Parser for Rust source code", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/syn@2.0.117", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/syn" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/syn" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5", + "author": "Dan Gohman ", + "name": "target-lexicon", + "version": "0.13.5", + "description": "LLVM target triple types", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 WITH LLVM-exception" + } + ], + "purl": "pkg:cargo/target-lexicon@0.13.5", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/target-lexicon/" + }, + { + "type": "vcs", + "url": "https://github.com/bytecodealliance/target-lexicon" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24", + "author": "David Tolnay ", + "name": "unicode-ident", + "version": "1.0.24", + "description": "Determine whether characters have the XID_Start or XID_Continue properties according to Unicode Standard Annex #31", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + } + ], + "licenses": [ + { + "expression": "(MIT OR Apache-2.0) AND Unicode-3.0" + } + ], + "purl": "pkg:cargo/unicode-ident@1.0.24", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/unicode-ident" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/unicode-ident" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#vcpkg@0.2.15", + "author": "Jim McGrath ", + "name": "vcpkg", + "version": "0.2.15", + "description": "A library to find native dependencies in a vcpkg tree at build time in order to be used in Cargo build scripts. ", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/vcpkg@0.2.15", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/vcpkg" + }, + { + "type": "vcs", + "url": "https://github.com/mcgoo/vcpkg-rs" + } + ] + } + ], + "dependencies": [ + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust#cryptography-rust@0.49.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "registry+https://github.com/rust-lang/crates.io-index#base64@0.22.1", + "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-cffi#0.49.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-crypto#0.49.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-keepalive#0.49.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-key-parsing#0.49.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-openssl#0.49.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-x509#0.49.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-x509-verification#0.49.0", + "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1", + "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.81", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.117", + "registry+https://github.com/rust-lang/crates.io-index#pem@3.0.6", + "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.0", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.0", + "registry+https://github.com/rust-lang/crates.io-index#self_cell@1.2.2" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-cffi#0.49.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.64", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.117", + "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.0" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-crypto#0.49.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.81" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-keepalive#0.49.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.0" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-key-parsing#0.49.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-crypto#0.49.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-openssl#0.49.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-x509#0.49.0", + "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.81", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.117", + "registry+https://github.com/rust-lang/crates.io-index#pem@3.0.6" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-openssl#0.49.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "registry+https://github.com/rust-lang/crates.io-index#foreign-types@0.3.2", + "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1", + "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.81", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.117" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-x509#0.49.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-x509-verification#0.49.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmplfWdYQ/cryptography-49.0.0/src/rust/cryptography-x509#0.49.0" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1_derive@0.24.1", + "registry+https://github.com/rust-lang/crates.io-index#itoa@1.0.18" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#asn1_derive@0.24.1", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#base64@0.22.1" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#bitflags@2.13.0" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.64", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#find-msvc-tools@0.1.9", + "registry+https://github.com/rust-lang/crates.io-index#shlex@2.0.1" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#find-msvc-tools@0.1.9" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#foreign-types@0.3.2", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#itoa@1.0.18" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#openssl-macros@0.1.1", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.117", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.64", + "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "registry+https://github.com/rust-lang/crates.io-index#pkg-config@0.3.33", + "registry+https://github.com/rust-lang/crates.io-index#vcpkg@0.2.15" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.81", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#bitflags@2.13.0", + "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "registry+https://github.com/rust-lang/crates.io-index#foreign-types@0.3.2", + "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "registry+https://github.com/rust-lang/crates.io-index#openssl-macros@0.1.1", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pem@3.0.6", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#base64@0.22.1" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pkg-config@0.3.33" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#portable-atomic@1.13.1" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.29.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.0" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.29.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0", + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.29.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.29.0", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4", + "registry+https://github.com/rust-lang/crates.io-index#portable-atomic@1.13.1", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.0", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.29.0", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.29.0" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#self_cell@1.2.2" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#shlex@2.0.1" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#vcpkg@0.2.15" + } + ] +} \ No newline at end of file diff --git a/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/sboms/sbom.json b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/sboms/sbom.json new file mode 100644 index 0000000..486b38f --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography-49.0.0.dist-info/sboms/sbom.json @@ -0,0 +1,43 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.5", + "version": 1, + "serialNumber": "urn:uuid:eea42558-a3d3-4d7c-8bcc-d777faffe5ca", + "metadata": { + "timestamp": "2026-06-12T00:58:31Z" + }, + "components": [ + { + "type": "library", + "name": "openssl", + "version": "4.0.1", + "purl": "pkg:generic/openssl@4.0.1?download_url=https://github.com/openssl/openssl/releases/download/openssl-4.0.1/openssl-4.0.1.tar.gz", + "hashes": [ + { + "alg": "SHA-256", + "content": "2db3f3a0d6ea4b59e1f094ace2c8cd536dffb87cdc39084c5afa1e6f7f37dd09" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://github.com/openssl/openssl/releases/download/openssl-4.0.1/openssl-4.0.1.tar.gz" + } + ], + "properties": [ + { + "name": "build:operating-system", + "value": "linux" + }, + { + "name": "build:architecture", + "value": "x86_64" + }, + { + "name": "build:flags", + "value": "no-zlib no-shared no-module no-comp no-apps no-docs no-sm2-precomp no-atexit enable-ec_nistp_64_gcc_128" + } + ] + } + ] +} diff --git a/.venv/lib/python3.9/site-packages/cryptography/__about__.py b/.venv/lib/python3.9/site-packages/cryptography/__about__.py new file mode 100644 index 0000000..2ae9fc7 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/__about__.py @@ -0,0 +1,17 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +__all__ = [ + "__author__", + "__copyright__", + "__version__", +] + +__version__ = "49.0.0" + + +__author__ = "The Python Cryptographic Authority and individual contributors" +__copyright__ = f"Copyright 2013-2026 {__author__}" diff --git a/.venv/lib/python3.9/site-packages/cryptography/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/__init__.py new file mode 100644 index 0000000..d374f75 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.__about__ import __author__, __copyright__, __version__ + +__all__ = [ + "__author__", + "__copyright__", + "__version__", +] diff --git a/.venv/lib/python3.9/site-packages/cryptography/__pycache__/__about__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/__pycache__/__about__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fcb72050722bdc3f8a4e143da6557ee5bf866914 GIT binary patch literal 443 zcmYk2y-ve06ou_1Emcc59w2Lx8kbU4s)Q;KJ3@jfi{->_|DX_6)#jB>E!HuJe^GE>CLDcjI5k>nqjO%$o9xPt7}gkPdW~gczFl97y2OI z3RQB;5LXYzIHjbvsNkl0Bpb#oa*AUv9*L%S#cPHOVi-l)j)@(rc`=_MbqI2vEs)`s qjTI>$$eI~c{v~UW_fbgae9G>T0$Ou1qj-9QC?MoWLJ7rGn)E literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8635cb54703aa8e94d290067b12945a0895fb85 GIT binary patch literal 370 zcmYk0J5Iwu5QcaCAW=d(#2qXJZvjF=LWmR4(773{?Tx+3+Pm6^Bj1AyK*yEbQgH<; zX1h%BYyNrs`uJ|QAy}UuWexkXo1kEcU)a|ipNlO(OXhmu46O{~Ul@3{z4SAJQ z(&6ljR#$EMPKxX|<`i_<@^RFjd#OiPq{{|?2j6Q8uR5qi8YpO}+g+!@}ScqbgY cL}Gv;5{XJPFYD()w?T=Q$mAm3b#jyZ1589}eE3FD=*71*Db;h^4kdLPF50TFR;@Akse62#vg%*~DANcF#Cl z675?n@dtS1fj;Ix@Jsy46Mumx&Y2_|qirLtqnVs!8g+)xtKYjP-;@~p zn?UiwHFlRVuKz+oGRY%0=04{nTao2k_-{w{xa5~PQ`SiZZsAG^SE{~)E9H}#Uwgo0 zSyo;$SyA;Dw!ekADjmd*!7k#OtRt=)+(5h~UBs@zO~eh^MBFsEg}5c#h}#CY5pT;K z#5)FWBi@yJi1!TMkyf8|uKYuOb$GrN#Bq`ZS(wDShq$hO9jMemMAal!vDVRmP8Xl@ z0&x8a3X1t$GW6b&mb7I_mjAGSW5--pWc6jkN4doO60+9vy~nYhq-g?~lJ}xv0%0~9 z_i|fjFl&jQRG`t0{j>dE605vKbH~oBW2JR4RCxu=0s7A-5D)BvNhB`^*H;l_>;?Oi zpYc~1pEK)>35-sk&3O+smeB|Wxg$gvhnWz5RV-BFUP-Iy7#!39HJs)=uL&`T0#ni8@}|Rk z^D;RX2V*5fUKe7V$O)Pwa#x6FlOS5`7|nTO>E1v^kr1$r9E+(%5)lK1o7T03lfwET`XwaS(+wC3|xl_V65Bp^4&EAT}l#;oFdKWj|D^L->6jiI2WKUGKcJa+z#B;sCMfg%&^~3lSFH$}V zh8tXZAJu+bpdoxIn)Z^W9}eRHOHOSdyN1ed7RU%+ATt?EIdTJc*EzE28_TXi-O(*{ zjcVRFj57t8IR^jtXIF05M3U z0&4IB8>iJn@^WnI8?c4vIyO*lo3erZ#X^%7D3)dcOwFwGmrD0D9E;Mmv2?Hg&zJL> zgdh+9exc}Y3{fCFW2S6#|yTw5I z&gx5$*A7;nBhzz$>K~{wfl3A_p@9+&=vIJiF5KaH7;@*UMFaer8kwf|UCXgttHN>E L?Ml0J{&W5VKW3** literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/__pycache__/fernet.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/__pycache__/fernet.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a856ad52df1b2105694839c67ad52bf394b6bed0 GIT binary patch literal 6841 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/__pycache__/utils.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..92dbd2fbd9adecb30e850bbd3c7bf4b5fa6e287c GIT binary patch literal 4718 zcmaJ^TXWmS6~^L5h@vD)zUbn_rentr-B?m%Ptv5S>r`<(?uDJ!bviUyvS z|5$APyKET$q0Z>zp>x|XSaO*e1~)j1j25diMr|`P>!yBNbxXhPx~<<%-O+Ei?&57l zg_c+MT4VJwX52Nn&7CI(cSLbu)yKtny@WD>GKn&UQbw5;PIE?_5~szPb!*wr^w08H z^k)ZV{XO*N_&j>^!fw8g`SbiEzJQfoevZG#XZicjU4EWlz)BZ*g2E3ckG}%;rUWdy$*>jcWB3$*;=Pco4_!G)NomIH^@l<*f!$6s$!;dH2Pmu82bs z66xpzA!p()p&^Vq;|4^`u&k-hugaZH+TM^sXLIK((UBt5i$4rx+=w@7`L z_f^sNTW#Krs9o~?N8KRGX7&w98rRk9Xlb+E5=)KFR+4l(owiJu)*8v?rrD%z$}U_(Q3<` z?S^H4soY4! z8|kJb6`nXBNkN})8I3;UY|E786c|BT=o|lJeb%{#xA_uyFbfP=Fgn+`!`+wUGliNY z%kM2@TT}wM(QOHE5eD&9t+wS?1rWRSt?J zO}PMid5)@MQYqnRe*V!75F{E5nTMav=Kd!yVJt*B^1RDOXYWB+ay z5WFT`tTD2`=7cOtUPkqEl-w(*e_~GygST^IKg0!YatnY&fNBGRT@s}#`#CrWuBD^g z_F7YfsU%Q=Jjkw9p(T<8&Khd_#RxsrCf{16t)fK`ncYVvPmG9mF8%*C%af1LltoU&H6 zC7FRFGmv9c{e-GRwH}J~LrnY1M7b z3J|?=3iwGDvsr>7L=ZQF@Dt8P)_{^j-$1)p(|id)A%!(9&Q>&R?3*=J7zP5U#R13* znaPagNb!OX<5Q2n6C($|cOo8LG%0ls7b7gdS>1vgXWK$wy%0 zS}4S^vfx7_hNew;-1mnI`~Gi0G=z^5qQPmh%SAO-SE`4NT@5(>%4ar0BGVD60}4W}5=`~Dw6q&>!XC-(>R(5GJa z-TM4ugxe$fy!Ix2re3c3;i1o{%Ae8L=Tsf2P8GO_NRCGiPAt4ZeM3^; ze}MU6Jk;tl-=(~RuX+=CCigAUnD6#k791%;(j;1DDvS5m9*3>cCqJ-0%0cAr9)HL!NwJ}x9( zCcjRdzSFn+F1bn{aWZoi7wP9tf>@|AImwWLj;Y~6{sOIPA#)l!_;H2_Es>sYA2+Nb zA7nEYy*{3V573vyK#8Zh6vM04xncVnG0uo z?3wYx`~jyP7(bXg4?xIz%AT6*2wKPoO1nsiDal0GacgzY4+CVb+}DZ%Kze!h8;)8l zaYQ>Ikz~m-8f2+^#vUMM7pv`=kmXz-YwjV=3>csp?>$Ic%M}njgrLk>wfrpkTdboT zy+391NjFOOaq}B8q%DEaQ+Ww;rA92G!=R&_MjQ*-#dJd1ivihDZbmZfogc1{3vh8I zYKK9T+*;Hh0h=_olHs6DTgX39rOo>H)Y6VMb!?eOm>EJrk-6qsPZBDIC`TR=)ol_J zf$q`VLFWyWkRd`L3qbauvxWjx;VJu0+->Q=D8Iy)N5oI6AfsQUbt`Ca3g<9v+-Q)4 zHBG#cg*B~bNcvvTdQR;%TTyJWXMRz6&2Awhe5ATj`blkz2&JpqD90VJ%| z_Xn8Fab<#dL=?|vPOwNv*DTUi&MB8(OSRmDc8AMJko|QGJi1Qx%U*T6(04v=#pk=yJT?#ibILV@bZH zY(YA?OHD`TVam;N79C*JRM?IpB+!(oEe30$c3eq*qQ)O2LJk2>Uuf%-d0Hpt0EfgK% zU0*e_#HVH8>EK<-f91F4*wQ;jd7(W}KPAX|HTg O7G^FO|6Q0aPyZj^-2Nf} literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/exceptions.py b/.venv/lib/python3.9/site-packages/cryptography/exceptions.py new file mode 100644 index 0000000..fe125ea --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/exceptions.py @@ -0,0 +1,52 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.bindings._rust import exceptions as rust_exceptions + +if typing.TYPE_CHECKING: + from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +_Reasons = rust_exceptions._Reasons + + +class UnsupportedAlgorithm(Exception): + def __init__(self, message: str, reason: _Reasons | None = None) -> None: + super().__init__(message) + self._reason = reason + + +class AlreadyFinalized(Exception): + pass + + +class AlreadyUpdated(Exception): + pass + + +class NotYetFinalized(Exception): + pass + + +class InvalidTag(Exception): + pass + + +class InvalidSignature(Exception): + pass + + +class InternalError(Exception): + def __init__( + self, msg: str, err_code: list[rust_openssl.OpenSSLError] + ) -> None: + super().__init__(msg) + self.err_code = err_code + + +class InvalidKey(Exception): + pass diff --git a/.venv/lib/python3.9/site-packages/cryptography/fernet.py b/.venv/lib/python3.9/site-packages/cryptography/fernet.py new file mode 100644 index 0000000..c6744ae --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/fernet.py @@ -0,0 +1,224 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import base64 +import binascii +import os +import time +import typing +from collections.abc import Iterable + +from cryptography import utils +from cryptography.exceptions import InvalidSignature +from cryptography.hazmat.primitives import hashes, padding +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.primitives.hmac import HMAC + + +class InvalidToken(Exception): + pass + + +_MAX_CLOCK_SKEW = 60 + + +class Fernet: + def __init__( + self, + key: bytes | str, + backend: typing.Any = None, + ) -> None: + try: + key = base64.urlsafe_b64decode(key) + except binascii.Error as exc: + raise ValueError( + "Fernet key must be 32 url-safe base64-encoded bytes." + ) from exc + if len(key) != 32: + raise ValueError( + "Fernet key must be 32 url-safe base64-encoded bytes." + ) + + self._signing_key = key[:16] + self._encryption_key = key[16:] + + @classmethod + def generate_key(cls) -> bytes: + return base64.urlsafe_b64encode(os.urandom(32)) + + def encrypt(self, data: bytes) -> bytes: + return self.encrypt_at_time(data, int(time.time())) + + def encrypt_at_time(self, data: bytes, current_time: int) -> bytes: + iv = os.urandom(16) + return self._encrypt_from_parts(data, current_time, iv) + + def _encrypt_from_parts( + self, data: bytes, current_time: int, iv: bytes + ) -> bytes: + utils._check_bytes("data", data) + + padder = padding.PKCS7(algorithms.AES.block_size).padder() + padded_data = padder.update(data) + padder.finalize() + encryptor = Cipher( + algorithms.AES(self._encryption_key), + modes.CBC(iv), + ).encryptor() + ciphertext = encryptor.update(padded_data) + encryptor.finalize() + + basic_parts = ( + b"\x80" + + current_time.to_bytes(length=8, byteorder="big") + + iv + + ciphertext + ) + + h = HMAC(self._signing_key, hashes.SHA256()) + h.update(basic_parts) + hmac = h.finalize() + return base64.urlsafe_b64encode(basic_parts + hmac) + + def decrypt(self, token: bytes | str, ttl: int | None = None) -> bytes: + timestamp, data = Fernet._get_unverified_token_data(token) + if ttl is None: + time_info = None + else: + time_info = (ttl, int(time.time())) + return self._decrypt_data(data, timestamp, time_info) + + def decrypt_at_time( + self, token: bytes | str, ttl: int, current_time: int + ) -> bytes: + if ttl is None: + raise ValueError( + "decrypt_at_time() can only be used with a non-None ttl" + ) + timestamp, data = Fernet._get_unverified_token_data(token) + return self._decrypt_data(data, timestamp, (ttl, current_time)) + + def extract_timestamp(self, token: bytes | str) -> int: + timestamp, data = Fernet._get_unverified_token_data(token) + # Verify the token was not tampered with. + self._verify_signature(data) + return timestamp + + @staticmethod + def _get_unverified_token_data(token: bytes | str) -> tuple[int, bytes]: + if not isinstance(token, (str, bytes)): + raise TypeError("token must be bytes or str") + + try: + data = base64.urlsafe_b64decode(token) + except (TypeError, binascii.Error): + raise InvalidToken + + if not data or data[0] != 0x80: + raise InvalidToken + + if len(data) < 9: + raise InvalidToken + + timestamp = int.from_bytes(data[1:9], byteorder="big") + return timestamp, data + + def _verify_signature(self, data: bytes) -> None: + h = HMAC(self._signing_key, hashes.SHA256()) + h.update(data[:-32]) + try: + h.verify(data[-32:]) + except InvalidSignature: + raise InvalidToken + + def _decrypt_data( + self, + data: bytes, + timestamp: int, + time_info: tuple[int, int] | None, + ) -> bytes: + if time_info is not None: + ttl, current_time = time_info + if timestamp + ttl < current_time: + raise InvalidToken + + if current_time + _MAX_CLOCK_SKEW < timestamp: + raise InvalidToken + + self._verify_signature(data) + + iv = data[9:25] + ciphertext = data[25:-32] + decryptor = Cipher( + algorithms.AES(self._encryption_key), modes.CBC(iv) + ).decryptor() + plaintext_padded = decryptor.update(ciphertext) + try: + plaintext_padded += decryptor.finalize() + except ValueError: + raise InvalidToken + unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder() + + unpadded = unpadder.update(plaintext_padded) + try: + unpadded += unpadder.finalize() + except ValueError: + raise InvalidToken + return unpadded + + +class MultiFernet: + def __init__(self, fernets: Iterable[Fernet]): + fernets = list(fernets) + if not fernets: + raise ValueError( + "MultiFernet requires at least one Fernet instance" + ) + self._fernets = fernets + + def encrypt(self, msg: bytes) -> bytes: + return self.encrypt_at_time(msg, int(time.time())) + + def encrypt_at_time(self, msg: bytes, current_time: int) -> bytes: + return self._fernets[0].encrypt_at_time(msg, current_time) + + def rotate(self, msg: bytes | str) -> bytes: + timestamp, data = Fernet._get_unverified_token_data(msg) + for f in self._fernets: + try: + p = f._decrypt_data(data, timestamp, None) + break + except InvalidToken: + pass + else: + raise InvalidToken + + iv = os.urandom(16) + return self._fernets[0]._encrypt_from_parts(p, timestamp, iv) + + def decrypt(self, msg: bytes | str, ttl: int | None = None) -> bytes: + for f in self._fernets: + try: + return f.decrypt(msg, ttl) + except InvalidToken: + pass + raise InvalidToken + + def decrypt_at_time( + self, msg: bytes | str, ttl: int, current_time: int + ) -> bytes: + for f in self._fernets: + try: + return f.decrypt_at_time(msg, ttl, current_time) + except InvalidToken: + pass + raise InvalidToken + + def extract_timestamp(self, msg: bytes | str) -> int: + for f in self._fernets: + try: + return f.extract_timestamp(msg) + except InvalidToken: + pass + raise InvalidToken diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/__init__.py new file mode 100644 index 0000000..b9f1187 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +""" +Hazardous Materials + +This is a "Hazardous Materials" module. You should ONLY use it if you're +100% absolutely sure that you know what you're doing because this module +is full of land mines, dragons, and dinosaurs with laser guns. +""" diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae135d1896f7b28f3c62c3af9f18121a9cb1f703 GIT binary patch literal 257 zcmYjLJ5B>J6towRP(mcGu?71IP$VRTH~|eE&C}c1iJk1)mi@fZatbgD|r3?zXvyWLe(?+8k)76Kvub*zY0*GlHSFo*1xfSw?KaI9)#U QUgb_dUX&|ozI9do0h0AdzW@LL literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0a4e2f5f16738cf086b8beab9733140735601a8 GIT binary patch literal 12659 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 JgG>70zX7Kl@yGxG literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/_oid.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/_oid.py new file mode 100644 index 0000000..6849215 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/_oid.py @@ -0,0 +1,368 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import ( + ObjectIdentifier as ObjectIdentifier, +) +from cryptography.hazmat.primitives import hashes + + +class ExtensionOID: + SUBJECT_DIRECTORY_ATTRIBUTES = ObjectIdentifier("2.5.29.9") + SUBJECT_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.14") + KEY_USAGE = ObjectIdentifier("2.5.29.15") + PRIVATE_KEY_USAGE_PERIOD = ObjectIdentifier("2.5.29.16") + SUBJECT_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.17") + ISSUER_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.18") + BASIC_CONSTRAINTS = ObjectIdentifier("2.5.29.19") + NAME_CONSTRAINTS = ObjectIdentifier("2.5.29.30") + CRL_DISTRIBUTION_POINTS = ObjectIdentifier("2.5.29.31") + CERTIFICATE_POLICIES = ObjectIdentifier("2.5.29.32") + POLICY_MAPPINGS = ObjectIdentifier("2.5.29.33") + AUTHORITY_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.35") + POLICY_CONSTRAINTS = ObjectIdentifier("2.5.29.36") + EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37") + FRESHEST_CRL = ObjectIdentifier("2.5.29.46") + INHIBIT_ANY_POLICY = ObjectIdentifier("2.5.29.54") + ISSUING_DISTRIBUTION_POINT = ObjectIdentifier("2.5.29.28") + AUTHORITY_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.1") + SUBJECT_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.11") + OCSP_NO_CHECK = ObjectIdentifier("1.3.6.1.5.5.7.48.1.5") + TLS_FEATURE = ObjectIdentifier("1.3.6.1.5.5.7.1.24") + CRL_NUMBER = ObjectIdentifier("2.5.29.20") + DELTA_CRL_INDICATOR = ObjectIdentifier("2.5.29.27") + PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier( + "1.3.6.1.4.1.11129.2.4.2" + ) + PRECERT_POISON = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.3") + SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.5") + MS_CERTIFICATE_TEMPLATE = ObjectIdentifier("1.3.6.1.4.1.311.21.7") + ADMISSIONS = ObjectIdentifier("1.3.36.8.3.3") + + +class OCSPExtensionOID: + NONCE = ObjectIdentifier("1.3.6.1.5.5.7.48.1.2") + ACCEPTABLE_RESPONSES = ObjectIdentifier("1.3.6.1.5.5.7.48.1.4") + + +class CRLEntryExtensionOID: + CERTIFICATE_ISSUER = ObjectIdentifier("2.5.29.29") + CRL_REASON = ObjectIdentifier("2.5.29.21") + INVALIDITY_DATE = ObjectIdentifier("2.5.29.24") + + +class NameOID: + COMMON_NAME = ObjectIdentifier("2.5.4.3") + COUNTRY_NAME = ObjectIdentifier("2.5.4.6") + LOCALITY_NAME = ObjectIdentifier("2.5.4.7") + STATE_OR_PROVINCE_NAME = ObjectIdentifier("2.5.4.8") + STREET_ADDRESS = ObjectIdentifier("2.5.4.9") + ORGANIZATION_IDENTIFIER = ObjectIdentifier("2.5.4.97") + ORGANIZATION_NAME = ObjectIdentifier("2.5.4.10") + ORGANIZATIONAL_UNIT_NAME = ObjectIdentifier("2.5.4.11") + SERIAL_NUMBER = ObjectIdentifier("2.5.4.5") + SURNAME = ObjectIdentifier("2.5.4.4") + GIVEN_NAME = ObjectIdentifier("2.5.4.42") + TITLE = ObjectIdentifier("2.5.4.12") + INITIALS = ObjectIdentifier("2.5.4.43") + GENERATION_QUALIFIER = ObjectIdentifier("2.5.4.44") + X500_UNIQUE_IDENTIFIER = ObjectIdentifier("2.5.4.45") + DN_QUALIFIER = ObjectIdentifier("2.5.4.46") + PSEUDONYM = ObjectIdentifier("2.5.4.65") + USER_ID = ObjectIdentifier("0.9.2342.19200300.100.1.1") + DOMAIN_COMPONENT = ObjectIdentifier("0.9.2342.19200300.100.1.25") + EMAIL_ADDRESS = ObjectIdentifier("1.2.840.113549.1.9.1") + JURISDICTION_COUNTRY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.3") + JURISDICTION_LOCALITY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.1") + JURISDICTION_STATE_OR_PROVINCE_NAME = ObjectIdentifier( + "1.3.6.1.4.1.311.60.2.1.2" + ) + BUSINESS_CATEGORY = ObjectIdentifier("2.5.4.15") + POSTAL_ADDRESS = ObjectIdentifier("2.5.4.16") + POSTAL_CODE = ObjectIdentifier("2.5.4.17") + INN = ObjectIdentifier("1.2.643.3.131.1.1") + OGRN = ObjectIdentifier("1.2.643.100.1") + SNILS = ObjectIdentifier("1.2.643.100.3") + UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") + + +class SignatureAlgorithmOID: + RSA_WITH_MD5 = ObjectIdentifier("1.2.840.113549.1.1.4") + RSA_WITH_SHA1 = ObjectIdentifier("1.2.840.113549.1.1.5") + # This is an alternate OID for RSA with SHA1 that is occasionally seen + _RSA_WITH_SHA1 = ObjectIdentifier("1.3.14.3.2.29") + RSA_WITH_SHA224 = ObjectIdentifier("1.2.840.113549.1.1.14") + RSA_WITH_SHA256 = ObjectIdentifier("1.2.840.113549.1.1.11") + RSA_WITH_SHA384 = ObjectIdentifier("1.2.840.113549.1.1.12") + RSA_WITH_SHA512 = ObjectIdentifier("1.2.840.113549.1.1.13") + RSA_WITH_SHA3_224 = ObjectIdentifier("2.16.840.1.101.3.4.3.13") + RSA_WITH_SHA3_256 = ObjectIdentifier("2.16.840.1.101.3.4.3.14") + RSA_WITH_SHA3_384 = ObjectIdentifier("2.16.840.1.101.3.4.3.15") + RSA_WITH_SHA3_512 = ObjectIdentifier("2.16.840.1.101.3.4.3.16") + RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") + ECDSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10045.4.1") + ECDSA_WITH_SHA224 = ObjectIdentifier("1.2.840.10045.4.3.1") + ECDSA_WITH_SHA256 = ObjectIdentifier("1.2.840.10045.4.3.2") + ECDSA_WITH_SHA384 = ObjectIdentifier("1.2.840.10045.4.3.3") + ECDSA_WITH_SHA512 = ObjectIdentifier("1.2.840.10045.4.3.4") + ECDSA_WITH_SHA3_224 = ObjectIdentifier("2.16.840.1.101.3.4.3.9") + ECDSA_WITH_SHA3_256 = ObjectIdentifier("2.16.840.1.101.3.4.3.10") + ECDSA_WITH_SHA3_384 = ObjectIdentifier("2.16.840.1.101.3.4.3.11") + ECDSA_WITH_SHA3_512 = ObjectIdentifier("2.16.840.1.101.3.4.3.12") + DSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10040.4.3") + DSA_WITH_SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.3.1") + DSA_WITH_SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.3.2") + DSA_WITH_SHA384 = ObjectIdentifier("2.16.840.1.101.3.4.3.3") + DSA_WITH_SHA512 = ObjectIdentifier("2.16.840.1.101.3.4.3.4") + ED25519 = ObjectIdentifier("1.3.101.112") + ED448 = ObjectIdentifier("1.3.101.113") + ML_DSA_44 = ObjectIdentifier("2.16.840.1.101.3.4.3.17") + ML_DSA_65 = ObjectIdentifier("2.16.840.1.101.3.4.3.18") + ML_DSA_87 = ObjectIdentifier("2.16.840.1.101.3.4.3.19") + GOSTR3411_94_WITH_3410_2001 = ObjectIdentifier("1.2.643.2.2.3") + GOSTR3410_2012_WITH_3411_2012_256 = ObjectIdentifier("1.2.643.7.1.1.3.2") + GOSTR3410_2012_WITH_3411_2012_512 = ObjectIdentifier("1.2.643.7.1.1.3.3") + + +_SIG_OIDS_TO_HASH: dict[ObjectIdentifier, hashes.HashAlgorithm | None] = { + SignatureAlgorithmOID.RSA_WITH_MD5: hashes.MD5(), + SignatureAlgorithmOID.RSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID._RSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.RSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.RSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.RSA_WITH_SHA384: hashes.SHA384(), + SignatureAlgorithmOID.RSA_WITH_SHA512: hashes.SHA512(), + SignatureAlgorithmOID.RSA_WITH_SHA3_224: hashes.SHA3_224(), + SignatureAlgorithmOID.RSA_WITH_SHA3_256: hashes.SHA3_256(), + SignatureAlgorithmOID.RSA_WITH_SHA3_384: hashes.SHA3_384(), + SignatureAlgorithmOID.RSA_WITH_SHA3_512: hashes.SHA3_512(), + SignatureAlgorithmOID.ECDSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.ECDSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.ECDSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.ECDSA_WITH_SHA384: hashes.SHA384(), + SignatureAlgorithmOID.ECDSA_WITH_SHA512: hashes.SHA512(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_224: hashes.SHA3_224(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_256: hashes.SHA3_256(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_384: hashes.SHA3_384(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_512: hashes.SHA3_512(), + SignatureAlgorithmOID.DSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.DSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.DSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.ED25519: None, + SignatureAlgorithmOID.ED448: None, + SignatureAlgorithmOID.ML_DSA_44: None, + SignatureAlgorithmOID.ML_DSA_65: None, + SignatureAlgorithmOID.ML_DSA_87: None, + SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: None, + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: None, + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: None, +} + + +class HashAlgorithmOID: + SHA1 = ObjectIdentifier("1.3.14.3.2.26") + SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.2.4") + SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.2.1") + SHA384 = ObjectIdentifier("2.16.840.1.101.3.4.2.2") + SHA512 = ObjectIdentifier("2.16.840.1.101.3.4.2.3") + SHA3_224 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.224") + SHA3_256 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.256") + SHA3_384 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.384") + SHA3_512 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.512") + SHA3_224_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.7") + SHA3_256_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.8") + SHA3_384_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.9") + SHA3_512_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.10") + + +class PublicKeyAlgorithmOID: + DSA = ObjectIdentifier("1.2.840.10040.4.1") + EC_PUBLIC_KEY = ObjectIdentifier("1.2.840.10045.2.1") + RSAES_PKCS1_v1_5 = ObjectIdentifier("1.2.840.113549.1.1.1") + RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") + X25519 = ObjectIdentifier("1.3.101.110") + X448 = ObjectIdentifier("1.3.101.111") + ED25519 = ObjectIdentifier("1.3.101.112") + ED448 = ObjectIdentifier("1.3.101.113") + ML_DSA_44 = ObjectIdentifier("2.16.840.1.101.3.4.3.17") + ML_DSA_65 = ObjectIdentifier("2.16.840.1.101.3.4.3.18") + ML_DSA_87 = ObjectIdentifier("2.16.840.1.101.3.4.3.19") + + +class ExtendedKeyUsageOID: + SERVER_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.1") + CLIENT_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.2") + CODE_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.3") + EMAIL_PROTECTION = ObjectIdentifier("1.3.6.1.5.5.7.3.4") + TIME_STAMPING = ObjectIdentifier("1.3.6.1.5.5.7.3.8") + OCSP_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.9") + ANY_EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37.0") + SMARTCARD_LOGON = ObjectIdentifier("1.3.6.1.4.1.311.20.2.2") + KERBEROS_PKINIT_KDC = ObjectIdentifier("1.3.6.1.5.2.3.5") + IPSEC_IKE = ObjectIdentifier("1.3.6.1.5.5.7.3.17") + BUNDLE_SECURITY = ObjectIdentifier("1.3.6.1.5.5.7.3.35") + CERTIFICATE_TRANSPARENCY = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.4") + + +class OtherNameFormOID: + PERMANENT_IDENTIFIER = ObjectIdentifier("1.3.6.1.5.5.7.8.3") + HW_MODULE_NAME = ObjectIdentifier("1.3.6.1.5.5.7.8.4") + DNS_SRV = ObjectIdentifier("1.3.6.1.5.5.7.8.7") + NAI_REALM = ObjectIdentifier("1.3.6.1.5.5.7.8.8") + SMTP_UTF8_MAILBOX = ObjectIdentifier("1.3.6.1.5.5.7.8.9") + ACP_NODE_NAME = ObjectIdentifier("1.3.6.1.5.5.7.8.10") + BUNDLE_EID = ObjectIdentifier("1.3.6.1.5.5.7.8.11") + + +class AuthorityInformationAccessOID: + CA_ISSUERS = ObjectIdentifier("1.3.6.1.5.5.7.48.2") + OCSP = ObjectIdentifier("1.3.6.1.5.5.7.48.1") + + +class SubjectInformationAccessOID: + CA_REPOSITORY = ObjectIdentifier("1.3.6.1.5.5.7.48.5") + + +class CertificatePoliciesOID: + CPS_QUALIFIER = ObjectIdentifier("1.3.6.1.5.5.7.2.1") + CPS_USER_NOTICE = ObjectIdentifier("1.3.6.1.5.5.7.2.2") + ANY_POLICY = ObjectIdentifier("2.5.29.32.0") + + +class AttributeOID: + CHALLENGE_PASSWORD = ObjectIdentifier("1.2.840.113549.1.9.7") + UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") + + +_OID_NAMES = { + NameOID.COMMON_NAME: "commonName", + NameOID.COUNTRY_NAME: "countryName", + NameOID.LOCALITY_NAME: "localityName", + NameOID.STATE_OR_PROVINCE_NAME: "stateOrProvinceName", + NameOID.STREET_ADDRESS: "streetAddress", + NameOID.ORGANIZATION_NAME: "organizationName", + NameOID.ORGANIZATIONAL_UNIT_NAME: "organizationalUnitName", + NameOID.SERIAL_NUMBER: "serialNumber", + NameOID.SURNAME: "surname", + NameOID.GIVEN_NAME: "givenName", + NameOID.TITLE: "title", + NameOID.GENERATION_QUALIFIER: "generationQualifier", + NameOID.X500_UNIQUE_IDENTIFIER: "x500UniqueIdentifier", + NameOID.DN_QUALIFIER: "dnQualifier", + NameOID.PSEUDONYM: "pseudonym", + NameOID.USER_ID: "userID", + NameOID.DOMAIN_COMPONENT: "domainComponent", + NameOID.EMAIL_ADDRESS: "emailAddress", + NameOID.JURISDICTION_COUNTRY_NAME: "jurisdictionCountryName", + NameOID.JURISDICTION_LOCALITY_NAME: "jurisdictionLocalityName", + NameOID.JURISDICTION_STATE_OR_PROVINCE_NAME: ( + "jurisdictionStateOrProvinceName" + ), + NameOID.BUSINESS_CATEGORY: "businessCategory", + NameOID.POSTAL_ADDRESS: "postalAddress", + NameOID.POSTAL_CODE: "postalCode", + NameOID.INN: "INN", + NameOID.OGRN: "OGRN", + NameOID.SNILS: "SNILS", + NameOID.UNSTRUCTURED_NAME: "unstructuredName", + SignatureAlgorithmOID.RSA_WITH_MD5: "md5WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA1: "sha1WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA224: "sha224WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA256: "sha256WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA384: "sha384WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA512: "sha512WithRSAEncryption", + SignatureAlgorithmOID.RSASSA_PSS: "rsassaPss", + SignatureAlgorithmOID.ECDSA_WITH_SHA1: "ecdsa-with-SHA1", + SignatureAlgorithmOID.ECDSA_WITH_SHA224: "ecdsa-with-SHA224", + SignatureAlgorithmOID.ECDSA_WITH_SHA256: "ecdsa-with-SHA256", + SignatureAlgorithmOID.ECDSA_WITH_SHA384: "ecdsa-with-SHA384", + SignatureAlgorithmOID.ECDSA_WITH_SHA512: "ecdsa-with-SHA512", + SignatureAlgorithmOID.DSA_WITH_SHA1: "dsa-with-sha1", + SignatureAlgorithmOID.DSA_WITH_SHA224: "dsa-with-sha224", + SignatureAlgorithmOID.DSA_WITH_SHA256: "dsa-with-sha256", + SignatureAlgorithmOID.ED25519: "ed25519", + SignatureAlgorithmOID.ED448: "ed448", + SignatureAlgorithmOID.ML_DSA_44: "ML-DSA-44", + SignatureAlgorithmOID.ML_DSA_65: "ML-DSA-65", + SignatureAlgorithmOID.ML_DSA_87: "ML-DSA-87", + SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: ( + "GOST R 34.11-94 with GOST R 34.10-2001" + ), + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: ( + "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" + ), + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: ( + "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" + ), + HashAlgorithmOID.SHA1: "sha1", + HashAlgorithmOID.SHA224: "sha224", + HashAlgorithmOID.SHA256: "sha256", + HashAlgorithmOID.SHA384: "sha384", + HashAlgorithmOID.SHA512: "sha512", + HashAlgorithmOID.SHA3_224: "sha3_224", + HashAlgorithmOID.SHA3_256: "sha3_256", + HashAlgorithmOID.SHA3_384: "sha3_384", + HashAlgorithmOID.SHA3_512: "sha3_512", + HashAlgorithmOID.SHA3_224_NIST: "sha3_224", + HashAlgorithmOID.SHA3_256_NIST: "sha3_256", + HashAlgorithmOID.SHA3_384_NIST: "sha3_384", + HashAlgorithmOID.SHA3_512_NIST: "sha3_512", + PublicKeyAlgorithmOID.DSA: "dsaEncryption", + PublicKeyAlgorithmOID.EC_PUBLIC_KEY: "id-ecPublicKey", + PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5: "rsaEncryption", + PublicKeyAlgorithmOID.X25519: "X25519", + PublicKeyAlgorithmOID.X448: "X448", + ExtendedKeyUsageOID.SERVER_AUTH: "serverAuth", + ExtendedKeyUsageOID.CLIENT_AUTH: "clientAuth", + ExtendedKeyUsageOID.CODE_SIGNING: "codeSigning", + ExtendedKeyUsageOID.EMAIL_PROTECTION: "emailProtection", + ExtendedKeyUsageOID.TIME_STAMPING: "timeStamping", + ExtendedKeyUsageOID.OCSP_SIGNING: "OCSPSigning", + ExtendedKeyUsageOID.SMARTCARD_LOGON: "msSmartcardLogin", + ExtendedKeyUsageOID.KERBEROS_PKINIT_KDC: "pkInitKDC", + ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES: "subjectDirectoryAttributes", + ExtensionOID.SUBJECT_KEY_IDENTIFIER: "subjectKeyIdentifier", + ExtensionOID.KEY_USAGE: "keyUsage", + ExtensionOID.PRIVATE_KEY_USAGE_PERIOD: "privateKeyUsagePeriod", + ExtensionOID.SUBJECT_ALTERNATIVE_NAME: "subjectAltName", + ExtensionOID.ISSUER_ALTERNATIVE_NAME: "issuerAltName", + ExtensionOID.BASIC_CONSTRAINTS: "basicConstraints", + ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS: ( + "signedCertificateTimestampList" + ), + ExtensionOID.SIGNED_CERTIFICATE_TIMESTAMPS: ( + "signedCertificateTimestampList" + ), + ExtensionOID.PRECERT_POISON: "ctPoison", + ExtensionOID.MS_CERTIFICATE_TEMPLATE: "msCertificateTemplate", + ExtensionOID.ADMISSIONS: "Admissions", + CRLEntryExtensionOID.CRL_REASON: "cRLReason", + CRLEntryExtensionOID.INVALIDITY_DATE: "invalidityDate", + CRLEntryExtensionOID.CERTIFICATE_ISSUER: "certificateIssuer", + ExtensionOID.NAME_CONSTRAINTS: "nameConstraints", + ExtensionOID.CRL_DISTRIBUTION_POINTS: "cRLDistributionPoints", + ExtensionOID.CERTIFICATE_POLICIES: "certificatePolicies", + ExtensionOID.POLICY_MAPPINGS: "policyMappings", + ExtensionOID.AUTHORITY_KEY_IDENTIFIER: "authorityKeyIdentifier", + ExtensionOID.POLICY_CONSTRAINTS: "policyConstraints", + ExtensionOID.EXTENDED_KEY_USAGE: "extendedKeyUsage", + ExtensionOID.FRESHEST_CRL: "freshestCRL", + ExtensionOID.INHIBIT_ANY_POLICY: "inhibitAnyPolicy", + ExtensionOID.ISSUING_DISTRIBUTION_POINT: "issuingDistributionPoint", + ExtensionOID.AUTHORITY_INFORMATION_ACCESS: "authorityInfoAccess", + ExtensionOID.SUBJECT_INFORMATION_ACCESS: "subjectInfoAccess", + ExtensionOID.OCSP_NO_CHECK: "OCSPNoCheck", + ExtensionOID.CRL_NUMBER: "cRLNumber", + ExtensionOID.DELTA_CRL_INDICATOR: "deltaCRLIndicator", + ExtensionOID.TLS_FEATURE: "TLSFeature", + AuthorityInformationAccessOID.OCSP: "OCSP", + AuthorityInformationAccessOID.CA_ISSUERS: "caIssuers", + SubjectInformationAccessOID.CA_REPOSITORY: "caRepository", + CertificatePoliciesOID.CPS_QUALIFIER: "id-qt-cps", + CertificatePoliciesOID.CPS_USER_NOTICE: "id-qt-unotice", + OCSPExtensionOID.NONCE: "OCSPNonce", + AttributeOID.CHALLENGE_PASSWORD: "challengePassword", +} diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/__init__.py new file mode 100644 index 0000000..7fb0fb4 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/__init__.py @@ -0,0 +1,45 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.asn1.asn1 import ( + TLV, + BitString, + Default, + Explicit, + GeneralizedTime, + IA5String, + Implicit, + Null, + PrintableString, + SetOf, + Size, + UTCTime, + Variant, + decode_der, + encode_der, + sequence, + set, + value_set, +) + +__all__ = [ + "TLV", + "BitString", + "Default", + "Explicit", + "GeneralizedTime", + "IA5String", + "Implicit", + "Null", + "PrintableString", + "SetOf", + "Size", + "UTCTime", + "Variant", + "decode_der", + "encode_der", + "sequence", + "set", + "value_set", +] diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/asn1/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ce43081d39ee1db47894fb1b6106d0b1968d0e2 GIT binary patch literal 615 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 x%jS;u9qIc}dZF(`t~-~`b None: + if field_type in _X509_TYPES and isinstance(annotation.encoding, Implicit): + raise TypeError( + f"field '{field_name}' has an IMPLICIT annotation, but " + "IMPLICIT annotations are not supported for X.509 types." + ) + + +def _is_union(field_type: type) -> bool: + # NOTE: types.UnionType for `T | U`, typing.Union for `Union[T, U]`. + # TODO: Drop the `hasattr()` once the minimum supported Python version + # is >= 3.10. + union_types = ( + (types.UnionType, typing.Union) + if hasattr(types, "UnionType") + else (typing.Union,) + ) + return typing.get_origin(field_type) in union_types + + +def _resolve_type_aliases(field_type: typing.Any) -> typing.Any: + # Recursively resolve PEP 695 (`type X = ...`) type aliases (Python + # 3.12+) to their underlying value, so that the rest of the + # normalization logic never encounters an alias. Aliases can refer + # to other aliases and can appear at any level of nesting (e.g. + # inside `Annotated[...]`, unions, or `list[...]`). + if sys.version_info < (3, 12): + return field_type + + while isinstance(field_type, typing.TypeAliasType): + field_type = field_type.__value__ + + args = typing.get_args(field_type) + resolved_args = tuple(_resolve_type_aliases(arg) for arg in args) + if resolved_args == args: + # No aliases anywhere inside: return the type unchanged. + return field_type + + if _is_union(field_type): + # `X | Y` unions can't be rebuilt through their origin like + # other generics below: `typing.get_origin` returns + # `types.UnionType` for them, which is only subscriptable on + # Python 3.14+. Rebuilding through `typing.Union` also + # flattens any nested union introduced by an alias of a union + # (e.g. `Time | int` where `type Time = UTCTime | + # GeneralizedTime`), just like `typing.Union` would have done + # if the alias had been written inline. + return typing.Union[resolved_args] + + # An alias appeared inside a generic (e.g. `Annotated[Time, ...]`, + # `list[MyInt]`, or `SetOf[MyInt]`): re-parameterize the generic + # with the resolved arguments. Subscripting with a tuple is + # equivalent to subscripting with multiple arguments. + return typing.get_origin(field_type)[resolved_args] + + +def _extract_annotation( + metadata: tuple, field_name: str +) -> declarative_asn1.Annotation: + default = None + encoding = None + size = None + for raw_annotation in metadata: + if isinstance(raw_annotation, Default): + if default is not None: + raise TypeError( + f"multiple DEFAULT annotations found in field " + f"'{field_name}'" + ) + default = raw_annotation.value + elif isinstance(raw_annotation, declarative_asn1.Encoding): + if encoding is not None: + raise TypeError( + f"multiple IMPLICIT/EXPLICIT annotations found in field " + f"'{field_name}'" + ) + encoding = raw_annotation + elif isinstance(raw_annotation, declarative_asn1.Size): + if size is not None: + raise TypeError( + f"multiple SIZE annotations found in field '{field_name}'" + ) + size = raw_annotation + else: + raise TypeError(f"unsupported annotation: {raw_annotation}") + + return declarative_asn1.Annotation( + default=default, encoding=encoding, size=size + ) + + +def _normalize_field_type( + field_type: typing.Any, field_name: str +) -> declarative_asn1.AnnotatedType: + field_type = _resolve_type_aliases(field_type) + + # Strip the `Annotated[...]` off, and populate the annotation + # from it if it exists. + if typing.get_origin(field_type) is typing.Annotated: + annotation = _extract_annotation(field_type.__metadata__, field_name) + field_type, *_ = typing.get_args(field_type) + else: + annotation = declarative_asn1.Annotation() + + if annotation.size is not None and ( + typing.get_origin(field_type) not in (builtins.list, SetOf) + and field_type + not in ( + builtins.bytes, + builtins.str, + BitString, + IA5String, + PrintableString, + ) + ): + raise TypeError( + f"field '{field_name}' has a SIZE annotation, but SIZE " + "annotations are only supported for fields of types: " + "[SEQUENCE OF, SET OF, BIT STRING, OCTET STRING, UTF8String, " + "PrintableString, IA5String]" + ) + + if field_type is TLV: + if isinstance(annotation.encoding, Implicit): + raise TypeError( + f"field '{field_name}' has an IMPLICIT annotation, but " + "IMPLICIT annotations are not supported for TLV types." + ) + elif annotation.default is not None: + raise TypeError( + f"field '{field_name}' has a DEFAULT annotation, but " + "DEFAULT annotations are not supported for TLV types." + ) + + _check_x509_field_annotations(field_type, annotation, field_name) + + if hasattr(field_type, "__asn1_root__"): + root_type = field_type.__asn1_root__ + if not isinstance( + root_type, + ( + declarative_asn1.Type.Sequence, + declarative_asn1.Type.Set, + declarative_asn1.Type.ValueSet, + ), + ): + raise TypeError(f"unsupported root type: {root_type}") + return declarative_asn1.AnnotatedType( + typing.cast(declarative_asn1.Type, root_type), annotation + ) + elif _is_union(field_type): + union_args = typing.get_args(field_type) + if len(union_args) == 2 and NoneType in union_args: + # A Union between a type and None is an OPTIONAL + optional_type = ( + union_args[0] if union_args[1] is type(None) else union_args[1] + ) + if optional_type is TLV: + raise TypeError( + "optional TLV types (`TLV | None`) are not " + "currently supported" + ) + # For optional types, the annotation is associated with the + # union, so we check it against the inner type here. + _check_x509_field_annotations( + optional_type, annotation, field_name + ) + annotated_type = _normalize_field_type(optional_type, field_name) + + if not annotated_type.annotation.is_empty(): + raise TypeError( + "optional (`X | None`) types cannot have `X` " + "annotated: annotations must apply to the union " + "(i.e: `Annotated[X | None, annotation]`)" + ) + + if annotation.default is not None: + raise TypeError( + "optional (`X | None`) types should not have a DEFAULT " + "annotation" + ) + + rust_field_type = declarative_asn1.Type.Option(annotated_type) + + else: + # Otherwise, the Union is a CHOICE + if isinstance(annotation.encoding, Implicit): + # CHOICEs cannot be IMPLICIT. See X.680 section 31.2.9. + raise TypeError( + "CHOICE (`X | Y | ...`) types should not have an IMPLICIT " + "annotation" + ) + variants = [ + _type_to_variant(arg, field_name) + for arg in union_args + if arg is not type(None) + ] + + # Union types should either be all Variants + # (`Variant[..] | Variant[..] | etc`) or all non Variants + are_union_types_tagged = variants[0].tag_name is not None + if any( + (v.tag_name is not None) != are_union_types_tagged + for v in variants + ): + raise TypeError( + "When using `asn1.Variant` in a union, all the other " + "types in the union must also be `asn1.Variant`" + ) + + if are_union_types_tagged: + tags = {v.tag_name for v in variants} + if len(variants) != len(tags): + raise TypeError( + "When using `asn1.Variant` in a union, the tags used " + "must be unique" + ) + + rust_choice_type = declarative_asn1.Type.Choice(variants) + # If None is part of the union types, this is an OPTIONAL CHOICE + rust_field_type = ( + declarative_asn1.Type.Option( + declarative_asn1.AnnotatedType( + rust_choice_type, declarative_asn1.Annotation() + ) + ) + if NoneType in union_args + else rust_choice_type + ) + + elif typing.get_origin(field_type) is builtins.list: + inner_type = _normalize_field_type( + typing.get_args(field_type)[0], field_name + ) + rust_field_type = declarative_asn1.Type.SequenceOf(inner_type) + elif typing.get_origin(field_type) is SetOf: + inner_type = _normalize_field_type( + typing.get_args(field_type)[0], field_name + ) + rust_field_type = declarative_asn1.Type.SetOf(inner_type) + else: + rust_field_type = declarative_asn1.non_root_python_to_rust(field_type) + + return declarative_asn1.AnnotatedType(rust_field_type, annotation) + + +# Convert a type to a Variant. Used with types inside Union +# annotations (T1, T2, etc in `Union[T1, T2, ...]`). +def _type_to_variant( + t: typing.Any, field_name: str +) -> declarative_asn1.Variant: + is_annotated = typing.get_origin(t) is typing.Annotated + inner_type = typing.get_args(t)[0] if is_annotated else t + + # Check if this is a Variant[T, Tag] type + if typing.get_origin(inner_type) is Variant: + value_type, tag_literal = typing.get_args(inner_type) + if typing.get_origin(tag_literal) is not typing.Literal: + raise TypeError( + "When using `asn1.Variant` in a type annotation, the second " + "type parameter must be a `typing.Literal` type. E.g: " + '`Variant[int, typing.Literal["MyInt"]]`.' + ) + tag_name = typing.get_args(tag_literal)[0] + + if hasattr(value_type, "__asn1_root__"): + rust_type = value_type.__asn1_root__ + else: + rust_type = declarative_asn1.non_root_python_to_rust(value_type) + + if is_annotated: + ann_type = declarative_asn1.AnnotatedType( + rust_type, + _extract_annotation(t.__metadata__, field_name), + ) + else: + ann_type = declarative_asn1.AnnotatedType( + rust_type, + declarative_asn1.Annotation(), + ) + + return declarative_asn1.Variant(Variant, ann_type, tag_name) + else: + # Plain type (not a tagged Variant) + return declarative_asn1.Variant( + inner_type, + _normalize_field_type(t, field_name), + None, + ) + + +def _annotate_fields( + raw_fields: dict[str, type], +) -> dict[str, declarative_asn1.AnnotatedType]: + fields = {} + for field_name, field_type in raw_fields.items(): + # Recursively normalize the field type into something that the + # Rust code can understand. + annotated_field_type = _normalize_field_type(field_type, field_name) + fields[field_name] = annotated_field_type + + return fields + + +def _register_asn1_sequence(cls: type[U]) -> None: + raw_fields = typing.get_type_hints(cls, include_extras=True) + root = declarative_asn1.Type.Sequence(cls, _annotate_fields(raw_fields)) + + setattr(cls, "__asn1_root__", root) + + +def _register_asn1_set(cls: type[U]) -> None: + raw_fields = typing.get_type_hints(cls, include_extras=True) + root = declarative_asn1.Type.Set(cls, _annotate_fields(raw_fields)) + + setattr(cls, "__asn1_root__", root) + + +# Due to https://github.com/python/mypy/issues/19731, we can't define an alias +# for `dataclass_transform` that conditionally points to `typing` or +# `typing_extensions` depending on the Python version. We work around it by +# making the whole decorated class conditional on the Python version. +if sys.version_info < (3, 11): + + @typing_extensions.dataclass_transform(kw_only_default=True) + def sequence(cls: type[U]) -> type[U]: + # We use `dataclasses.dataclass` to add an __init__ method + # to the class with keyword-only parameters. + if sys.version_info >= (3, 10): + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + # `match_args` was added in Python 3.10 and defaults + # to True + match_args=False, + # `kw_only` was added in Python 3.10 and defaults to + # False + kw_only=True, + )(cls) + else: + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + )(cls) + _register_asn1_sequence(dataclass_cls) + return dataclass_cls + + @typing_extensions.dataclass_transform(kw_only_default=True) + def set(cls: type[U]) -> type[U]: + # We use `dataclasses.dataclass` to add an __init__ method + # to the class with keyword-only parameters. + if sys.version_info >= (3, 10): + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + # `match_args` was added in Python 3.10 and defaults + # to True + match_args=False, + # `kw_only` was added in Python 3.10 and defaults to + # False + kw_only=True, + )(cls) + else: + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + )(cls) + _register_asn1_set(dataclass_cls) + return dataclass_cls + +else: + + @typing.dataclass_transform(kw_only_default=True) + def sequence(cls: type[U]) -> type[U]: + # Only add an __init__ method, with keyword-only + # parameters. + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + match_args=False, + kw_only=True, + )(cls) + _register_asn1_sequence(dataclass_cls) + return dataclass_cls + + @typing.dataclass_transform(kw_only_default=True) + def set(cls: type[U]) -> type[U]: + # Only add an __init__ method, with keyword-only + # parameters. + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + match_args=False, + kw_only=True, + )(cls) + _register_asn1_set(dataclass_cls) + return dataclass_cls + + +def value_set( + value_type: type, +) -> typing.Callable[[type[U]], type[U]]: + """ + A class decorator that registers an `enum.Enum` subclass as an + ASN.1 value set of the given underlying type. All the member + values must be instances of `value_type`. Members are encoded as + their value; decoding fails if the decoded value does not match + any member. + """ + rust_type = declarative_asn1.non_root_python_to_rust(value_type) + + def decorator(cls: type[U]) -> type[U]: + if not issubclass(cls, enum.Enum): + raise TypeError( + "value sets can only be defined from enum.Enum subclasses" + ) + members = list(cls) + if not members: + raise TypeError( + f"value set '{cls.__name__}' must have at least one member" + ) + for member in members: + if not isinstance(member.value, value_type): + raise TypeError( + f"member '{member.name}' of value set '{cls.__name__}' " + f"must have a value of type " + f"'{value_type.__name__}', got: " + f"'{type(member.value).__name__}'" + ) + inner = declarative_asn1.AnnotatedType( + rust_type, declarative_asn1.Annotation() + ) + # Map from member value to member, used for O(1) lookups when + # decoding. This requires the member values to be hashable. + value_map = {member.value: member for member in members} + root = declarative_asn1.Type.ValueSet(cls, inner, value_map) + + setattr(cls, "__asn1_root__", root) + return cls + + return decorator + + +# TODO: replace with `Default[U]` once the min Python version is >= 3.12 +@dataclasses.dataclass(frozen=True) +class Default(typing.Generic[U]): + value: U + + +SetOf = declarative_asn1.SetOf + +Explicit = declarative_asn1.Encoding.Explicit +Implicit = declarative_asn1.Encoding.Implicit +Size = declarative_asn1.Size + +PrintableString = declarative_asn1.PrintableString +IA5String = declarative_asn1.IA5String +UTCTime = declarative_asn1.UTCTime +GeneralizedTime = declarative_asn1.GeneralizedTime +BitString = declarative_asn1.BitString +TLV = declarative_asn1.Tlv +Null = declarative_asn1.Null diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/__init__.py new file mode 100644 index 0000000..b4400aa --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from typing import Any + + +def default_backend() -> Any: + from cryptography.hazmat.backends.openssl.backend import backend + + return backend diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..17a801e814e3a7ba6f14e4b7734406ecc2c58192 GIT binary patch literal 507 zcmYjOu};G<5VeyuEu|IwMi9gU2nh)x5PKK4ES6KdjoZYrY^PNah=osJWMSl&vNG`t zOq>IidXjzb?DM;KXEvRV5!lCDx{?^7FCXk%2*E8v*q#93h~pAfIK$ZEpbV-o3jv2b zddGagwqRXgTntt^D$oobCI1sogU8l&bub7!Cd1+eaY&0_!@ zLmjC3j4*maz#PtuPx{2&FlY0%P&^5;)46H2tCxo9qD>3-STUFWU)!|SLRnkx4onR1 z&A^i&GX(eZLW;T)MC!G*jn=hsB$u|>vXu~yG+I)rw#;z4kfoqGvx1X!Bh-eJGQYea zx^+dZ&eJPmr4wfwbg`wdWM38eQ$=>F2nABP3eHUZ^?g(jbKA~5|{(< wvt-bXDP1%$GC`^FL+WDJYN?j}K>Mt|oxN@3vqsld&6`r(_?COtNiYe20Td^J(f|Me literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__init__.py new file mode 100644 index 0000000..51b0447 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__init__.py @@ -0,0 +1,9 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.backends.openssl.backend import backend + +__all__ = ["backend"] diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dea7cbb43a166f70f7c7cd3415f7b915e489776b GIT binary patch literal 370 zcmYk0K~BRk5Jl~zrKq%*U{?t|LLek0gg5~kcG--a+D+U#wq-l5!Uebh7huVivSq~; zSmBgb>MTb8&uIQUKA%rXs?QI$zM+JC59YM8WS$A3;W7z91l6RW1*L<|bk^iWo^)Q( zVkAbdWHJ63t{1ew;KtaJ1O~cBaQHRTE8sD{SN$kcw~pGz^s!d1brOrWBLgq*BbGQ__GwTZ@=$Q+eU(Nn-E&(tdCHtQ1AF!$_TAf zsLYOgfh(mYmOMxSY%9$cv?}lKz;&^<=9WD`P*GmH#LX)i;1m!3@!*ID2Ry(Ot|B6H VU4Q=ASkY?vG)`<`l-ewtWq+&tY=8g& literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c12e7f7743b2338d75ff99dee31034c2096666bb GIT binary patch literal 9400 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 None: + self._binding = binding.Binding() + self._ffi = self._binding.ffi + self._lib = self._binding.lib + self._fips_enabled = rust_openssl.is_fips_enabled() + + def __repr__(self) -> str: + return ( + f"" + ) + + def openssl_assert(self, ok: bool) -> None: + return binding._openssl_assert(ok) + + def _enable_fips(self) -> None: + # This function enables FIPS mode for OpenSSL 3.0.0 on installs that + # have the FIPS provider installed properly. + rust_openssl.enable_fips(rust_openssl._providers) + assert rust_openssl.is_fips_enabled() + self._fips_enabled = rust_openssl.is_fips_enabled() + + def openssl_version_text(self) -> str: + """ + Friendly string name of the loaded OpenSSL library. This is not + necessarily the same version as it was compiled against. + + Example: OpenSSL 3.2.1 30 Jan 2024 + """ + return rust_openssl.openssl_version_text() + + def openssl_version_number(self) -> int: + return rust_openssl.openssl_version() + + def hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if self._fips_enabled and not isinstance(algorithm, self._fips_hashes): + return False + + return rust_openssl.hashes.hash_supported(algorithm) + + def signature_hash_supported( + self, algorithm: hashes.HashAlgorithm + ) -> bool: + # Dedicated check for hashing algorithm use in message digest for + # signatures, e.g. RSA PKCS#1 v1.5 SHA1 (sha1WithRSAEncryption). + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return False + return self.hash_supported(algorithm) + + def scrypt_supported(self) -> bool: + if self._fips_enabled: + return False + else: + return hasattr(rust_openssl.kdf.Scrypt, "derive") + + def argon2_supported(self) -> bool: + if self._fips_enabled: + return False + else: + return hasattr(rust_openssl.kdf.Argon2id, "derive") + + def hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + # FIPS mode still allows SHA1 for HMAC + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return True + if rust_openssl.CRYPTOGRAPHY_IS_AWSLC: + return isinstance( + algorithm, + ( + hashes.MD5, + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + hashes.SHA512_224, + hashes.SHA512_256, + ), + ) + return self.hash_supported(algorithm) + + def cipher_supported(self, cipher: CipherAlgorithm, mode: Mode) -> bool: + if self._fips_enabled: + # FIPS mode requires AES. TripleDES is disallowed/deprecated in + # FIPS 140-3. + if not isinstance(cipher, self._fips_ciphers): + return False + + return rust_openssl.ciphers.cipher_supported(cipher, mode) + + def pbkdf2_hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + return self.hmac_supported(algorithm) + + def _consume_errors(self) -> list[rust_openssl.OpenSSLError]: + return rust_openssl.capture_error_stack() + + def _oaep_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return False + + return isinstance( + algorithm, + ( + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + ), + ) + + def rsa_padding_supported(self, padding: AsymmetricPadding) -> bool: + if isinstance(padding, PKCS1v15): + return True + elif isinstance(padding, PSS) and isinstance(padding._mgf, MGF1): + # FIPS 186-4 only allows salt length == digest length for PSS + # It is technically acceptable to set an explicit salt length + # equal to the digest length and this will incorrectly fail, but + # since we don't do that in the tests and this method is + # private, we'll ignore that until we need to do otherwise. + if ( + self._fips_enabled + and padding._salt_length != PSS.DIGEST_LENGTH + ): + return False + return self.hash_supported(padding._mgf._algorithm) + elif isinstance(padding, OAEP) and isinstance(padding._mgf, MGF1): + return self._oaep_hash_supported( + padding._mgf._algorithm + ) and self._oaep_hash_supported(padding._algorithm) + else: + return False + + def rsa_encryption_supported(self, padding: AsymmetricPadding) -> bool: + if self._fips_enabled and isinstance(padding, PKCS1v15): + return False + else: + return self.rsa_padding_supported(padding) + + def dsa_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not self._fips_enabled + ) + + def dsa_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if not self.dsa_supported(): + return False + return self.signature_hash_supported(algorithm) + + def cmac_algorithm_supported(self, algorithm) -> bool: + return self.cipher_supported( + algorithm, CBC(b"\x00" * algorithm.block_size) + ) + + def elliptic_curve_supported(self, curve: ec.EllipticCurve) -> bool: + if self._fips_enabled and not isinstance( + curve, self._fips_ecdh_curves + ): + return False + + return rust_openssl.ec.curve_supported(curve) + + def elliptic_curve_signature_algorithm_supported( + self, + signature_algorithm: ec.EllipticCurveSignatureAlgorithm, + curve: ec.EllipticCurve, + ) -> bool: + # We only support ECDSA right now. + if not isinstance(signature_algorithm, ec.ECDSA): + return False + + return self.elliptic_curve_supported(curve) and ( + isinstance(signature_algorithm.algorithm, asym_utils.Prehashed) + or self.hash_supported(signature_algorithm.algorithm) + ) + + def elliptic_curve_exchange_algorithm_supported( + self, algorithm: ec.ECDH, curve: ec.EllipticCurve + ) -> bool: + return self.elliptic_curve_supported(curve) and isinstance( + algorithm, ec.ECDH + ) + + def dh_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def dh_x942_serialization_supported(self) -> bool: + return self._lib.Cryptography_HAS_EVP_PKEY_DHX == 1 + + def x25519_supported(self) -> bool: + return not self._fips_enabled + + def x448_supported(self) -> bool: + if self._fips_enabled: + return False + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def mlkem_supported(self) -> bool: + return ( + rust_openssl.CRYPTOGRAPHY_IS_AWSLC + or rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_OPENSSL_350_OR_GREATER + ) + + def mldsa_supported(self) -> bool: + return ( + rust_openssl.CRYPTOGRAPHY_IS_AWSLC + or rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_OPENSSL_350_OR_GREATER + ) + + def ed25519_supported(self) -> bool: + return True + + def ed448_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def ecdsa_deterministic_supported(self) -> bool: + return ( + rust_openssl.CRYPTOGRAPHY_OPENSSL_320_OR_GREATER + and not self._fips_enabled + ) + + def poly1305_supported(self) -> bool: + if rust_openssl.CRYPTOGRAPHY_IS_AWSLC: + return True + return not self._fips_enabled + + def pkcs7_supported(self) -> bool: + return True + + +backend = Backend() diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/__init__.py b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-39.pyc b/.venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2f715e470a8c781db139ff95f9f9daf70c9aa9f0 GIT binary patch literal 218 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

    JSN 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